From 1a83445b25cce91e6380dbccbba719177ee9e204 Mon Sep 17 00:00:00 2001 From: Andres AG Date: Wed, 7 Dec 2016 10:01:30 +0000 Subject: [PATCH 0001/1100] Add SNI with DTLS tests to ssl-opt.sh script --- tests/ssl-opt.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 57155b89d4..4654034950 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -2070,6 +2070,54 @@ run_test "SNI: CA override with CRL" \ -S "! The certificate is not correctly signed by the trusted CA" \ -s "The certificate has been revoked (is on a CRL)" +# Tests for SNI and DTLS + +run_test "SNI/DTLS: matching cert 1" \ + "$P_SRV debug_level=3 dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ + "$P_CLI server_name=localhost dtls=1" \ + 0 \ + -s "parse ServerName extension" \ + -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ + -c "subject name *: C=NL, O=PolarSSL, CN=localhost" + +run_test "SNI/DTLS: CA override" \ + "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + ca_file=data_files/test-ca.crt \ + sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,-,required" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1 \ + crt_file=data_files/server6.crt key_file=data_files/server6.key" \ + 0 \ + -S "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got a certificate request" \ + -C "skip write certificate" \ + -C "skip write certificate verify" \ + -S "skip parse certificate verify" \ + -S "x509_verify_cert() returned" \ + -S "! The certificate is not correctly signed by the trusted CA" \ + -S "The certificate has been revoked (is on a CRL)" + +run_test "SNI/DTLS: CA override with CRL" \ + "$P_SRV debug_level=3 auth_mode=optional \ + crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \ + ca_file=data_files/test-ca.crt \ + sni=localhost,data_files/server2.crt,data_files/server2.key,data_files/test-ca2.crt,data_files/crl-ec-sha256.pem,required" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1 \ + crt_file=data_files/server6.crt key_file=data_files/server6.key" \ + 1 \ + -S "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got a certificate request" \ + -C "skip write certificate" \ + -C "skip write certificate verify" \ + -S "skip parse certificate verify" \ + -s "x509_verify_cert() returned" \ + -S "! The certificate is not correctly signed by the trusted CA" \ + -s "The certificate has been revoked (is on a CRL)" + # Tests for non-blocking I/O: exercise a variety of handshake flows run_test "Non-blocking I/O: basic handshake" \ From 9839360a10d8d36bf802c109263d6800ed0eefb0 Mon Sep 17 00:00:00 2001 From: Andres AG Date: Tue, 31 Jan 2017 17:04:45 +0000 Subject: [PATCH 0002/1100] Fix all.sh check_tools function to handle paths --- tests/scripts/all.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index ea9690173e..0cda059a52 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -116,7 +116,7 @@ err_msg() check_tools() { for TOOL in "$@"; do - if ! `hash "$TOOL" >/dev/null 2>&1`; then + if ! `type "$TOOL" >/dev/null 2>&1`; then err_msg "$TOOL not found!" exit 1 fi From 0049f7857dcd2096b893e66a650d6c9231485fb1 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 7 Feb 2017 19:14:58 +0200 Subject: [PATCH 0003/1100] check matching issuer crt and key for all algs use mbedtls_pk_check_pair to verify if issuer certificate and issuer key match, instad of explicitely comparing RSA public component. Raised and fix suggested by dbedev in #777 --- programs/x509/cert_write.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index 66e5f1dabb..ff9afbc334 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -497,11 +497,7 @@ int main( int argc, char *argv[] ) // if( strlen( opt.issuer_crt ) ) { - if( !mbedtls_pk_can_do( &issuer_crt.pk, MBEDTLS_PK_RSA ) || - mbedtls_mpi_cmp_mpi( &mbedtls_pk_rsa( issuer_crt.pk )->N, - &mbedtls_pk_rsa( *issuer_key )->N ) != 0 || - mbedtls_mpi_cmp_mpi( &mbedtls_pk_rsa( issuer_crt.pk )->E, - &mbedtls_pk_rsa( *issuer_key )->E ) != 0 ) + if( mbedtls_pk_check_pair( &issuer_crt.pk, issuer_key ) != 0 ) { mbedtls_printf( " failed\n ! issuer_key does not match issuer certificate\n\n" ); ret = -1; From 225b37a5437919f3aa92cde364d6584f476ba1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 8 Mar 2017 10:22:54 +0100 Subject: [PATCH 0004/1100] Fix typos in comment --- include/mbedtls/ecp.h | 1 - library/ecp.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index bf9abeff6b..944b7f82db 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -205,7 +205,6 @@ mbedtls_ecp_keypair; * 521 145 141 135 120 97 * 384 214 209 198 177 146 * 256 320 320 303 262 226 - * 224 475 475 453 398 342 * 192 640 640 633 587 476 */ diff --git a/library/ecp.c b/library/ecp.c index 5ad6863987..c7f4b04bb7 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1363,7 +1363,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_mpi_init( &M ); mbedtls_mpi_init( &mm ); - /* we need N to be odd to trnaform m in an odd number, check now */ + /* we need N to be odd to transform m in an odd number, check now */ if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); From c3a3bc7636ea1e6bce8ed922af9a5d74890564db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Mar 2017 11:17:51 +0100 Subject: [PATCH 0005/1100] Add config flag MBEDTLS_ECP_EARLY_RETURN --- include/mbedtls/config.h | 15 +++++++++++++++ library/version_features.c | 3 +++ 2 files changed, 18 insertions(+) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 47c7196402..9040bb71b1 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -561,6 +561,21 @@ */ #define MBEDTLS_ECP_NIST_OPTIM +/** + * \def MBEDTLS_ECP_EARLY_RETURN + * + * Enable "non-blocking" ECC operations that can return early and be resumed. + * + * This enables \c mbedtls_ecp_set_max_ops() and allows various ECC functions + * to return \c MBEDTLS_ERR_ECP_IN_PROGRESS when needed. + * + * TODO: depending on other choices, this might need to be disabled by default + * in order to avoid changing the ABI. Revisit that later. + * + * Comment this macro to disable non-blocking ECC computations. + */ +#define MBEDTLS_ECP_EARLY_RETURN + /** * \def MBEDTLS_ECDSA_DETERMINISTIC * diff --git a/library/version_features.c b/library/version_features.c index 5cbe8aca37..2668eaed59 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -276,6 +276,9 @@ static const char *features[] = { #if defined(MBEDTLS_ECP_NIST_OPTIM) "MBEDTLS_ECP_NIST_OPTIM", #endif /* MBEDTLS_ECP_NIST_OPTIM */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) + "MBEDTLS_ECP_EARLY_RETURN", +#endif /* MBEDTLS_ECP_EARLY_RETURN */ #if defined(MBEDTLS_ECDSA_DETERMINISTIC) "MBEDTLS_ECDSA_DETERMINISTIC", #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ From 5e3c62fd1de6ecade242e03907d90d85d59b8ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 8 Mar 2017 10:14:11 +0100 Subject: [PATCH 0006/1100] Add MBEDTLS_ERR_ECP_IN_PROGRESS --- include/mbedtls/ecp.h | 1 + include/mbedtls/error.h | 2 +- library/error.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 944b7f82db..f821690efe 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -36,6 +36,7 @@ #define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as (ephemeral) key, failed. */ #define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ #define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< Signature is valid but shorter than the user-supplied length. */ +#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B80 /**< Operation in progress, try again with the same parameters. */ #if !defined(MBEDTLS_ECP_ALT) /* diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 31591e2d64..6c580676dc 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -76,7 +76,7 @@ * DHM 3 9 * PK 3 14 (Started from top) * RSA 4 9 - * ECP 4 8 (Started from top) + * ECP 4 9 (Started from top) * MD 5 4 * CIPHER 6 6 * SSL 6 17 (Started from top) diff --git a/library/error.c b/library/error.c index db42381c42..5845303c71 100644 --- a/library/error.c +++ b/library/error.c @@ -225,6 +225,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "ECP - Invalid private or public key" ); if( use_ret == -(MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH) ) mbedtls_snprintf( buf, buflen, "ECP - Signature is valid but shorter than the user-supplied length" ); + if( use_ret == -(MBEDTLS_ERR_ECP_IN_PROGRESS) ) + mbedtls_snprintf( buf, buflen, "ECP - Operation in progress, try again with the same parameters" ); #endif /* MBEDTLS_ECP_C */ #if defined(MBEDTLS_MD_C) From 054433c4935709df80ea1cb0d01849b6c745d009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Mar 2017 11:18:33 +0100 Subject: [PATCH 0007/1100] Add mbedtls_ecp_set_max_ops() The plan is to count basic operations as follows: - call to ecp_add_mixed() -> 11 - call to ecp_double_jac() -> 8 - call to mpi_mul_mpi() -> 1 - call to mpi_inv_mod() -> 120 - everything else -> not counted The counts for ecp_add_mixed() and ecp_double_jac() are based on the actual number of calls to mpi_mul_mpi() they they make. The count for mpi_inv_mod() is based on timing measurements on K64F and LPC1768 boards, and are consistent with the usual very rough estimate of one inversion = 100 multiplications. It could be useful to repeat that measurement on a Cortex-M0 board as those have smaller divider and multipliers, so the result could be a bit different but should be the same order of magnitude. The documented limitation of 120 basic ops is due to the calls to mpi_inv_mod() which are currently not interruptible nor planned to be so far. --- include/mbedtls/ecp.h | 34 +++++++++++++++++++++++++++++++++- library/ecp.c | 16 ++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index f821690efe..7bcc69c017 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -240,6 +240,33 @@ mbedtls_ecp_keypair; */ #define MBEDTLS_ECP_TLS_NAMED_CURVE 3 /**< ECCurveType's named_curve */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief Set the maximum number of basic operations done in a row. + * + * If more operations are needed to complete a computation, + * MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the + * function performing the computation. That function will + * then need to be called again with the same arguments until + * it returns 0 or an other error code. + * + * \param max_ops Maximum number of basic operations done in a row. + * Default: 0 (unlimited). + * Lower (non-zero) values mean ECC functions will block for + * a lesser maximum amount of time. + * + * \note A "basic operation" is roughly multiplication in GF(p), + * or whatever takes a roughly equivalent amount of time. + * As an indication, a scalar multiplication on P-256 is + * of the order of 3600 "basic operations" with default + * settings. + * + * \warning Values lower than 120 are currently not well-supported, in + * that sometimes functions will have to block for longer. + */ +void mbedtls_ecp_set_max_ops( unsigned max_ops ); +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + /** * \brief Get the list of supported curves in order of preferrence * (full information) @@ -525,7 +552,12 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen, * \return 0 if successful, * MBEDTLS_ERR_ECP_INVALID_KEY if m is not a valid privkey * or P is not a valid pubkey, - * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached (see \c mbedtls_ecp_set_max_ops()), + * indicating the function should be called again with the + * exact same arguments. + * */ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, diff --git a/library/ecp.c b/library/ecp.c index c7f4b04bb7..1358a3f8c5 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -85,6 +85,22 @@ static void mbedtls_zeroize( void *v, size_t n ) { static unsigned long add_count, dbl_count, mul_count; #endif + +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/* + * Maximum number of "basic operations" to be done in a row. + */ +static unsigned ecp_max_ops = 0; + +/* + * Set ecp_max_ops + */ +void mbedtls_ecp_set_max_ops( unsigned max_ops ) +{ + ecp_max_ops = max_ops; +} +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) || \ From 510d5caece90e35be004a77dc8171f110d2a9787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 8 Mar 2017 11:41:47 +0100 Subject: [PATCH 0008/1100] Add early return test + fake implementation --- library/ecp.c | 21 ++++++ tests/suites/test_suite_ecp.data | 8 +++ tests/suites/test_suite_ecp.function | 101 +++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) diff --git a/library/ecp.c b/library/ecp.c index 1358a3f8c5..987739f561 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -99,6 +99,22 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) { ecp_max_ops = max_ops; } + +/* + * Saved context type for restarting operations. + * + * XXX: this is a temporary place for the definition + */ +typedef struct { + unsigned char fake_it; /* for tests: should we fake early return? */ +} ecp_restart_context; + +/* + * Saved context fro restarting operations. + * + * XXX: temporary place for the allocation + */ +static ecp_restart_context ecp_restart; #endif /* MBEDTLS_ECP_EARLY_RETURN */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -1376,6 +1392,11 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_ecp_point *T; mbedtls_mpi M, mm; +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( ecp_restart.fake_it++ != 0 && ecp_max_ops != 0 ) + return( MBEDTLS_ERR_ECP_IN_PROGRESS ); +#endif + mbedtls_mpi_init( &M ); mbedtls_mpi_init( &mm ); diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index a43e7d75dd..f96be5a510 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -344,3 +344,11 @@ ecp_test_vect:MBEDTLS_ECP_DP_SECP256K1:"923C6D4756CD940CD1E13A359F6E0F0698791938 ECP selftest ecp_selftest: + +ECP early return secp256r1 restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":0:0:0 + +ECP early return secp256r1 restart enabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":1:1:5000 diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 99780c0dec..c8daef990d 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -51,6 +51,107 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_EARLY_RETURN */ +void ecp_test_vect_restart( int id, + char *dA_str, char *xA_str, char *yA_str, + char *dB_str, char *xZ_str, char *yZ_str, + int max_ops, int min_restarts, int max_restarts ) +{ + /* + * Test for early restart. Based on test vectors like ecp_test_vect(), + * but for the sake of simplicity only does half of each side. It's + * important to test both base point and random point, though, as memory + * management is different in each case. + * + * Don't try using too precise bounds for restarts as the exact number + * will depend on settings such as MBEDTLS_ECP_FIXED_POINT_OPTIM and + * MBEDTLS_ECP_WINDOW_SIZE, as well as implementation details that may + * change in the future. A factor 2 is a minimum safety margin. + * + * For reference, with mbed TLS 2.4 and default settings, for P-256: + * - Random point mult: ~3600M + * - Cold base point mult: ~3600M + * - Hot base point mult: ~1200M + * With MBEDTLS_ECP_WINDOW_SIZE set to 2 (minimum): + * - Random point mult: ~4200M + */ + mbedtls_ecp_group grp; + mbedtls_ecp_point R; + mbedtls_mpi dA, xA, yA, dB, xZ, yZ; + int cnt_restarts; + int ret; + + mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &R ); + mbedtls_mpi_init( &dA ); mbedtls_mpi_init( &xA ); mbedtls_mpi_init( &yA ); + mbedtls_mpi_init( &dB ); mbedtls_mpi_init( &xZ ); mbedtls_mpi_init( &yZ ); + + TEST_ASSERT( mbedtls_ecp_group_load( &grp, id ) == 0 ); + + TEST_ASSERT( mbedtls_mpi_read_string( &dA, 16, dA_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &xA, 16, xA_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &yA, 16, yA_str ) == 0 ); + + TEST_ASSERT( mbedtls_mpi_read_string( &dB, 16, dB_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &xZ, 16, xZ_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &yZ, 16, yZ_str ) == 0 ); + + mbedtls_ecp_set_max_ops( (unsigned) max_ops ); + + /* Base point case */ + cnt_restarts = 0; + do { + ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + cnt_restarts++; + } + while( ret != 0 ); + + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xA ) == 0 ); + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yA ) == 0 ); + + TEST_ASSERT( cnt_restarts >= min_restarts ); + TEST_ASSERT( cnt_restarts <= max_restarts ); + + /* Do we leak memory when doing it twice in a row? */ + do { + ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } + while( ret != 0 ); + + /* Non-base point case */ + cnt_restarts = 0; + do { + ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + cnt_restarts++; + } + while( ret != 0 ); + + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xZ ) == 0 ); + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yZ ) == 0 ); + + TEST_ASSERT( cnt_restarts >= min_restarts ); + TEST_ASSERT( cnt_restarts <= max_restarts ); + + /* Do we leak memory when doing it twice in a row? */ + do { + ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } + while( ret != 0 ); + +exit: + mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &R ); + mbedtls_mpi_free( &dA ); mbedtls_mpi_free( &xA ); mbedtls_mpi_free( &yA ); + mbedtls_mpi_free( &dB ); mbedtls_mpi_free( &xZ ); mbedtls_mpi_free( &yZ ); +} +/* END_CASE */ + /* BEGIN_CASE */ void ecp_test_vect( int id, char *dA_str, char *xA_str, char *yA_str, char *dB_str, char *xB_str, char *yB_str, char *xZ_str, From 7306dff01faf9fcac42d855c9e3ad54c23caeb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 9 Mar 2017 12:23:45 +0100 Subject: [PATCH 0009/1100] Group related code together This will be split to a new function next. --- library/ecp.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 987739f561..c85b8ae49e 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1389,7 +1389,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, unsigned char w, m_is_odd, p_eq_g, pre_len, i; size_t d; unsigned char k[COMB_MAX_D + 1]; - mbedtls_ecp_point *T; + mbedtls_ecp_point *T = NULL; mbedtls_mpi M, mm; #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -1404,6 +1404,15 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + /* + * Make sure M is odd (M = m or M = N - m, since N is odd) + * using the fact that m * P = - (N - m) * P + */ + m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &M, m ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &mm, &grp->N, m ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &M, &mm, ! m_is_odd ) ); + /* * Minimize the number of multiplications, that is minimize * 10 * d * w + 18 * 2^(w-1) + 11 * d + 7 * w, with d = ceil( nbits / w ) @@ -1462,15 +1471,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } } - /* - * Make sure M is odd (M = m or M = N - m, since N is odd) - * using the fact that m * P = - (N - m) * P - */ - m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &M, m ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &mm, &grp->N, m ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &M, &mm, ! m_is_odd ) ); - /* * Go for comb multiplication, R = M * P */ From ec5606ad0c8907527b95048e5faad270256d2d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 9 Mar 2017 12:46:45 +0100 Subject: [PATCH 0010/1100] Extract code to separate function ecp_mul_comb() is already 110 lines long and we're going to add complexity with the early-return+restart code, so let's try to make it simpler first. --- library/ecp.c | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index c85b8ae49e..c0b6a1b7b0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1376,6 +1376,37 @@ cleanup: return( ret ); } +/* + * Set M to either m or -m, depending on which one is odd + */ +static int ecp_make_scalar_odd( const mbedtls_ecp_group *grp, + mbedtls_mpi *M, + const mbedtls_mpi *m, + const unsigned char m_is_odd ) +{ + int ret; + mbedtls_mpi mm; + + mbedtls_mpi_init( &mm ); + + /* we need N to be odd to transform m in an odd number, check now */ + if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + /* + * Make sure M is odd (M = m or M = N - m, since N is odd) + * using the fact that m * P = - (N - m) * P + */ + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( M, m ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &mm, &grp->N, m ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( M, &mm, ! m_is_odd ) ); + +cleanup: + mbedtls_mpi_free( &mm ); + + return( ret ); +} + /* * Multiplication using the comb method, * for curves in short Weierstrass form @@ -1390,7 +1421,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, size_t d; unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *T = NULL; - mbedtls_mpi M, mm; + mbedtls_mpi M; #if defined(MBEDTLS_ECP_EARLY_RETURN) if( ecp_restart.fake_it++ != 0 && ecp_max_ops != 0 ) @@ -1398,20 +1429,13 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif mbedtls_mpi_init( &M ); - mbedtls_mpi_init( &mm ); - - /* we need N to be odd to transform m in an odd number, check now */ - if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); /* - * Make sure M is odd (M = m or M = N - m, since N is odd) - * using the fact that m * P = - (N - m) * P + * We need an odd scalar for recoding. Ensure that by replacing it with + * its opposite, then negating the result to compensate if needed. */ m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &M, m ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &mm, &grp->N, m ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &M, &mm, ! m_is_odd ) ); + MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); /* * Minimize the number of multiplications, that is minimize @@ -1493,7 +1517,6 @@ cleanup: } mbedtls_mpi_free( &M ); - mbedtls_mpi_free( &mm ); if( ret != 0 ) mbedtls_ecp_point_free( R ); From 22be635d13929acba60ada6a018059105b6c74ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 9 Mar 2017 13:02:35 +0100 Subject: [PATCH 0011/1100] Re-order some more code --- library/ecp.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index c0b6a1b7b0..cea835d159 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1437,6 +1437,14 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); + /* Is P the base point ? */ +#if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 + p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && + mbedtls_mpi_cmp_mpi( &P->X, &grp->G.X ) == 0 ); +#else + p_eq_g = 0; +#endif + /* * Minimize the number of multiplications, that is minimize * 10 * d * w + 18 * 2^(w-1) + 11 * d + 7 * w, with d = ceil( nbits / w ) @@ -1449,14 +1457,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * Just adding one avoids upping the cost of the first mul too much, * and the memory cost too. */ -#if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 - p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && - mbedtls_mpi_cmp_mpi( &P->X, &grp->G.X ) == 0 ); if( p_eq_g ) w++; -#else - p_eq_g = 0; -#endif /* * Make sure w is within bounds. From 4b2336d7f69ba5e6ad1ec4937f62b96f138f6c22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 9 Mar 2017 13:23:50 +0100 Subject: [PATCH 0012/1100] Move some more code to new function --- library/ecp.c | 62 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index cea835d159..2cbe4f0699 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1407,6 +1407,41 @@ cleanup: return( ret ); } +/* + * Pick window size based on curve size and whether we optimize for base point + */ +static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, + unsigned char p_eq_g ) +{ + unsigned char w; + + /* + * Minimize the number of multiplications, that is minimize + * 10 * d * w + 18 * 2^(w-1) + 11 * d + 7 * w, with d = ceil( nbits / w ) + * (see costs of the various parts, with 1S = 1M) + */ + w = grp->nbits >= 384 ? 5 : 4; + + /* + * If P == G, pre-compute a bit more, since this may be re-used later. + * Just adding one avoids upping the cost of the first mul too much, + * and the memory cost too. + */ + if( p_eq_g ) + w++; + + /* + * Make sure w is within bounds. + * (The last test is useful only for very small curves in the test suite.) + */ + if( w > MBEDTLS_ECP_WINDOW_SIZE ) + w = MBEDTLS_ECP_WINDOW_SIZE; + if( w >= grp->nbits ) + w = 2; + + return( w ); +} + /* * Multiplication using the comb method, * for curves in short Weierstrass form @@ -1445,31 +1480,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, p_eq_g = 0; #endif - /* - * Minimize the number of multiplications, that is minimize - * 10 * d * w + 18 * 2^(w-1) + 11 * d + 7 * w, with d = ceil( nbits / w ) - * (see costs of the various parts, with 1S = 1M) - */ - w = grp->nbits >= 384 ? 5 : 4; - - /* - * If P == G, pre-compute a bit more, since this may be re-used later. - * Just adding one avoids upping the cost of the first mul too much, - * and the memory cost too. - */ - if( p_eq_g ) - w++; - - /* - * Make sure w is within bounds. - * (The last test is useful only for very small curves in the test suite.) - */ - if( w > MBEDTLS_ECP_WINDOW_SIZE ) - w = MBEDTLS_ECP_WINDOW_SIZE; - if( w >= grp->nbits ) - w = 2; - - /* Other sizes that depend on w */ + /* Window size and others that depend on it */ + w = ecp_pick_window_size( grp, p_eq_g ); pre_len = 1U << ( w - 1 ); d = ( grp->nbits + w - 1 ) / w; From 24be79588d363290bf253a67edad9ac06f9c62b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 13 Mar 2017 12:03:33 +0100 Subject: [PATCH 0013/1100] Group related code together --- library/ecp.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 2cbe4f0699..4d3448c7ec 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1465,13 +1465,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_mpi_init( &M ); - /* - * We need an odd scalar for recoding. Ensure that by replacing it with - * its opposite, then negating the result to compensate if needed. - */ - m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); - MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); - /* Is P the base point ? */ #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && @@ -1509,6 +1502,13 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } } + /* + * We need an odd scalar for recoding. Ensure that by replacing it with + * its opposite, then negating the result to compensate if needed. + */ + m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); + MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); + /* * Go for comb multiplication, R = M * P */ From 391f44153dc18331d1bcf79a8420a15a4a8109ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 13 Mar 2017 12:26:21 +0100 Subject: [PATCH 0014/1100] Move more code to separate function This reduces the scope of some variables (M, k), clarifying where they're used. --- library/ecp.c | 79 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 4d3448c7ec..932e4e58a2 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1407,6 +1407,53 @@ cleanup: return( ret ); } +/* + * Perform comb multiplication (for short Weierstrass curves) + * once the auxiliary table has been pre-computed. + */ +static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *R, + const mbedtls_mpi *m, + const mbedtls_ecp_point *T, + unsigned char pre_len, + unsigned char w, + size_t d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret; + unsigned char m_is_odd; + unsigned char k[COMB_MAX_D + 1]; + mbedtls_mpi M; + + mbedtls_mpi_init( &M ); + + /* + * We need an odd scalar for recoding. Ensure that by replacing it with + * its opposite, then negating the result to compensate if needed. + */ + m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); + MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); + ecp_comb_fixed( k, d, w, &M ); + + /* + * Go for comb multiplication, R = M * P + */ + MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, R, T, pre_len, k, d, f_rng, p_rng ) ); + + /* + * Now get m * P from M * P and normalize it + */ + MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, R, ! m_is_odd ) ); + MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, R ) ); + +cleanup: + mbedtls_mpi_free( &M ); + + return( ret ); +} + + /* * Pick window size based on curve size and whether we optimize for base point */ @@ -1452,19 +1499,15 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, void *p_rng ) { int ret; - unsigned char w, m_is_odd, p_eq_g, pre_len, i; + unsigned char w, p_eq_g, pre_len, i; size_t d; - unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *T = NULL; - mbedtls_mpi M; #if defined(MBEDTLS_ECP_EARLY_RETURN) if( ecp_restart.fake_it++ != 0 && ecp_max_ops != 0 ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); #endif - mbedtls_mpi_init( &M ); - /* Is P the base point ? */ #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && @@ -1473,7 +1516,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, p_eq_g = 0; #endif - /* Window size and others that depend on it */ + /* Pick window size and deduce related sizes */ w = ecp_pick_window_size( grp, p_eq_g ); pre_len = 1U << ( w - 1 ); d = ( grp->nbits + w - 1 ) / w; @@ -1502,24 +1545,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } } - /* - * We need an odd scalar for recoding. Ensure that by replacing it with - * its opposite, then negating the result to compensate if needed. - */ - m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); - MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); - - /* - * Go for comb multiplication, R = M * P - */ - ecp_comb_fixed( k, d, w, &M ); - MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, R, T, pre_len, k, d, f_rng, p_rng ) ); - - /* - * Now get m * P from M * P and normalize it - */ - MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, R, ! m_is_odd ) ); - MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, R ) ); + /* Actual comb multiplication using precomputed points */ + MBEDTLS_MPI_CHK( ecp_mul_comb_after_precomp( grp, R, m, + T, pre_len, w, d, + f_rng, p_rng ) ); cleanup: @@ -1530,8 +1559,6 @@ cleanup: mbedtls_free( T ); } - mbedtls_mpi_free( &M ); - if( ret != 0 ) mbedtls_ecp_point_free( R ); From 62738e9b170705059ff878aeeba7e3f4f6582c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 14 Mar 2017 10:00:21 +0100 Subject: [PATCH 0015/1100] Further restrict variable scope by moving code --- library/ecp.c | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 932e4e58a2..71f8700b57 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1220,8 +1220,8 @@ cleanup: * - m is the MPI, expected to be odd and such that bitlength(m) <= w * d * (the result will be incorrect if these assumptions are not satisfied) */ -static void ecp_comb_fixed( unsigned char x[], size_t d, - unsigned char w, const mbedtls_mpi *m ) +static void ecp_comb_recode_core( unsigned char x[], size_t d, + unsigned char w, const mbedtls_mpi *m ) { size_t i, j; unsigned char c, cc, adjust; @@ -1377,32 +1377,43 @@ cleanup: } /* - * Set M to either m or -m, depending on which one is odd + * Recode the scalar to get constant-time comb multiplication + * + * As the actual scalar recoding needs an odd scalar as a starting point, + * this wrapper ensures that by replacing m by N - m if necessary, and + * informs the caller that the result of multiplication will be negated. */ -static int ecp_make_scalar_odd( const mbedtls_ecp_group *grp, - mbedtls_mpi *M, - const mbedtls_mpi *m, - const unsigned char m_is_odd ) +static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp, + const mbedtls_mpi *m, + unsigned char k[COMB_MAX_D + 1], + size_t d, + unsigned char w, + unsigned char *parity_trick ) { int ret; - mbedtls_mpi mm; + mbedtls_mpi M, mm; + mbedtls_mpi_init( &M ); mbedtls_mpi_init( &mm ); - /* we need N to be odd to transform m in an odd number, check now */ + /* N is odd with all real-world curves, just make extra sure */ if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - /* - * Make sure M is odd (M = m or M = N - m, since N is odd) - * using the fact that m * P = - (N - m) * P - */ - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( M, m ) ); + /* do we need the parity trick? */ + *parity_trick = ( mbedtls_mpi_get_bit( m, 0 ) == 0 ); + + /* execute parity fix in constant time */ + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &M, m ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_sub_mpi( &mm, &grp->N, m ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( M, &mm, ! m_is_odd ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &M, &mm, *parity_trick ) ); + + /* actual scalar recoding */ + ecp_comb_recode_core( k, d, w, &M ); cleanup: mbedtls_mpi_free( &mm ); + mbedtls_mpi_free( &M ); return( ret ); } @@ -1410,6 +1421,9 @@ cleanup: /* * Perform comb multiplication (for short Weierstrass curves) * once the auxiliary table has been pre-computed. + * + * Scalar recoding may use a parity trick that makes us compute -m * P, + * if that is the case we'll need to recover m * P at the end. */ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, @@ -1422,34 +1436,18 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, void *p_rng ) { int ret; - unsigned char m_is_odd; + unsigned char parity_trick; unsigned char k[COMB_MAX_D + 1]; - mbedtls_mpi M; - mbedtls_mpi_init( &M ); + MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, &parity_trick ) ); - /* - * We need an odd scalar for recoding. Ensure that by replacing it with - * its opposite, then negating the result to compensate if needed. - */ - m_is_odd = ( mbedtls_mpi_get_bit( m, 0 ) == 1 ); - MBEDTLS_MPI_CHK( ecp_make_scalar_odd( grp, &M, m, m_is_odd ) ); - ecp_comb_fixed( k, d, w, &M ); - - /* - * Go for comb multiplication, R = M * P - */ MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, R, T, pre_len, k, d, f_rng, p_rng ) ); - /* - * Now get m * P from M * P and normalize it - */ - MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, R, ! m_is_odd ) ); + MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, R, parity_trick ) ); + MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, R ) ); cleanup: - mbedtls_mpi_free( &M ); - return( ret ); } From 77af79a324f8d340ef5595d92e1782eb3125ccc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 14 Mar 2017 10:58:00 +0100 Subject: [PATCH 0016/1100] Add proper allocation of restart context We'll need to store MPIs and other things that allocate memory in this context, so we need a place to free it. We can't rely on doing it before returning from ecp_mul() as we might return MBEDTLS_ERR_ECP_IN_PROGRESS (thus preserving the context) and never be called again (for example, TLS handshake aborted for another reason). So, ecp_group_free() looks like a good place to do this, if the restart context is part of struct ecp_group. This means it's not possible to use the same ecp_group structure in different threads concurrently, but: - that's already the case (and documented) for other reasons - this feature is precisely intended for environments that lack threading An alternative option would be for the caller to have to allocate/free the restart context and pass it explicitly, but this means creating new functions that take a context argument, and putting a burden on the user. --- include/mbedtls/ecp.h | 13 +++++++ library/ecp.c | 55 +++++++++++++++++++++++----- tests/suites/test_suite_ecp.function | 4 ++ 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 7bcc69c017..d44e658437 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -112,6 +112,16 @@ typedef struct } mbedtls_ecp_point; +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief ECP context for resuming operations after returning + * \c MBEDTLS_ERR_ECP_IN_PROGRESS + * + * \note Opaque struct + */ +typedef struct mbedtls_ecp_restart mbedtls_ecp_restart_ctx; +#endif + /** * \brief ECP group structure * @@ -153,6 +163,9 @@ typedef struct void *t_data; /*!< unused */ mbedtls_ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ size_t T_size; /*!< number for pre-computed points */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) + mbedtls_ecp_restart_ctx *rs; /*!< context for resuming operation */ +#endif } mbedtls_ecp_group; diff --git a/library/ecp.c b/library/ecp.c index 71f8700b57..60aa0a3cd9 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -101,20 +101,28 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) } /* - * Saved context type for restarting operations. - * - * XXX: this is a temporary place for the definition + * Restart context type for interrupted operations */ -typedef struct { +struct mbedtls_ecp_restart { unsigned char fake_it; /* for tests: should we fake early return? */ -} ecp_restart_context; +}; /* - * Saved context fro restarting operations. - * - * XXX: temporary place for the allocation + * Init restart context */ -static ecp_restart_context ecp_restart; +static void ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ) +{ + memset( ctx, 0, sizeof( mbedtls_ecp_restart_ctx ) ); +} + +/* + * Free the components of a restart context + */ +static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) +{ + if( ctx == NULL ) + return; +} #endif /* MBEDTLS_ECP_EARLY_RETURN */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -378,6 +386,11 @@ void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ) mbedtls_free( grp->T ); } +#if defined(MBEDTLS_ECP_EARLY_RETURN) + ecp_restart_free( grp->rs ); + mbedtls_free( grp->rs ); +#endif + mbedtls_zeroize( grp, sizeof( mbedtls_ecp_group ) ); } @@ -1501,8 +1514,22 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, size_t d; mbedtls_ecp_point *T = NULL; + /* set up restart context if needed */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( ecp_restart.fake_it++ != 0 && ecp_max_ops != 0 ) + if( ecp_max_ops != 0 && grp->rs == NULL ) + { + grp->rs = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_ctx ) ); + if( grp->rs == NULL ) + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); + ecp_restart_init( grp->rs ); + + grp->rs->fake_it = 1; + } +#endif + + /* XXX: temporary */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs && grp->rs->fake_it++ != 0 ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); #endif @@ -1560,6 +1587,14 @@ cleanup: if( ret != 0 ) mbedtls_ecp_point_free( R ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + ecp_restart_free( grp->rs ); + mbedtls_free( grp->rs ); + grp->rs = NULL; + } +#endif + return( ret ); } diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index c8daef990d..74e23875da 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -145,6 +145,10 @@ void ecp_test_vect_restart( int id, } while( ret != 0 ); + /* Do we leak memory when not finishing an operation? */ + ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + exit: mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &R ); mbedtls_mpi_free( &dA ); mbedtls_mpi_free( &xA ); mbedtls_mpi_free( &yA ); From 78d564a84156974580895e5a1aa6c24b8dd2ac64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 14 Mar 2017 11:48:38 +0100 Subject: [PATCH 0017/1100] Add check for changing arguments In case of argument change, freeing everything is not the most efficient (wastes one free()+calloc()) but makes the code simpler, which is probably more important here --- library/ecp.c | 24 +++++++++++++++++++++--- tests/suites/test_suite_ecp.function | 7 +++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 60aa0a3cd9..0a0239cc3b 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -105,6 +105,8 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) */ struct mbedtls_ecp_restart { unsigned char fake_it; /* for tests: should we fake early return? */ + mbedtls_mpi m; /* saved argument: scalar */ + mbedtls_ecp_point P; /* saved argument: point */ }; /* @@ -122,6 +124,9 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) { if( ctx == NULL ) return; + + mbedtls_mpi_free( &ctx->m ); + mbedtls_ecp_point_free( &ctx->P ); } #endif /* MBEDTLS_ECP_EARLY_RETURN */ @@ -1514,22 +1519,35 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, size_t d; mbedtls_ecp_point *T = NULL; - /* set up restart context if needed */ #if defined(MBEDTLS_ECP_EARLY_RETURN) + /* check for restart with new arguments */ + if( grp->rs != NULL && + ( mbedtls_mpi_cmp_mpi( m, &grp->rs->m ) != 0 || + mbedtls_mpi_cmp_mpi( &P->X, &grp->rs->P.X ) != 0 || + mbedtls_mpi_cmp_mpi( &P->Y, &grp->rs->P.Y ) != 0 ) ) + { + ecp_restart_free( grp->rs ); + mbedtls_free( grp->rs ); + grp->rs = NULL; + } + + /* set up restart context if needed */ if( ecp_max_ops != 0 && grp->rs == NULL ) { grp->rs = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_ctx ) ); if( grp->rs == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); + ecp_restart_init( grp->rs ); - grp->rs->fake_it = 1; + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &grp->rs->m, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rs->P, P ) ); } #endif /* XXX: temporary */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs && grp->rs->fake_it++ != 0 ) + if( grp->rs && ++grp->rs->fake_it != 0 ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); #endif diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 74e23875da..caf983e72e 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -121,6 +121,13 @@ void ecp_test_vect_restart( int id, } while( ret != 0 ); + /* Ok, now start an operation with some arguments, and drop it. + * We'll see if the result of the next operation, with different args, + * are correct regardless (do we discard old context on new args?). + * This also tests that we don't write to R prematurely */ + ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Non-base point case */ cnt_restarts = 0; do { From 8962ddbb2327764284d17100ff5d6946ae63f0d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 14 Mar 2017 12:11:21 +0100 Subject: [PATCH 0018/1100] Don't write to destination until we're done --- library/ecp.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 0a0239cc3b..d402e5c104 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -107,6 +107,7 @@ struct mbedtls_ecp_restart { unsigned char fake_it; /* for tests: should we fake early return? */ mbedtls_mpi m; /* saved argument: scalar */ mbedtls_ecp_point P; /* saved argument: point */ + mbedtls_ecp_point R; /* current intermediate result */ }; /* @@ -127,6 +128,7 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) mbedtls_mpi_free( &ctx->m ); mbedtls_ecp_point_free( &ctx->P ); + mbedtls_ecp_point_free( &ctx->R ); } #endif /* MBEDTLS_ECP_EARLY_RETURN */ @@ -1456,14 +1458,24 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, int ret; unsigned char parity_trick; unsigned char k[COMB_MAX_D + 1]; + mbedtls_ecp_point *RR = R; + +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + RR = &grp->rs->R; +#endif MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, &parity_trick ) ); - MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, R, T, pre_len, k, d, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, pre_len, k, d, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, R, parity_trick ) ); + MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); - MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, R ) ); + MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); + +#if defined(MBEDTLS_ECP_EARLY_RETURN) + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, RR ) ); +#endif cleanup: return( ret ); From 2fad7ae02a6e2dcc75f5c8f83e2fc3d2acd60442 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 14 Mar 2017 13:13:13 +0100 Subject: [PATCH 0019/1100] Start actually splitting computation Temporary state is quite inefficient: pre-computed table is recomputed every single time. This is WIP obviously. --- library/ecp.c | 68 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index d402e5c104..3505b20416 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -104,10 +104,14 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) * Restart context type for interrupted operations */ struct mbedtls_ecp_restart { - unsigned char fake_it; /* for tests: should we fake early return? */ + unsigned ops_done; /* number of operations done this time */ mbedtls_mpi m; /* saved argument: scalar */ mbedtls_ecp_point P; /* saved argument: point */ mbedtls_ecp_point R; /* current intermediate result */ + enum { + ecp_rs_init = 0, + ecp_rs_final_norm, + } state; }; /* @@ -129,7 +133,37 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) mbedtls_mpi_free( &ctx->m ); mbedtls_ecp_point_free( &ctx->P ); mbedtls_ecp_point_free( &ctx->R ); + + memset( ctx, 0, sizeof( mbedtls_ecp_restart_ctx ) ); } + +/* + * Operation counts + */ +#define ECP_OPS_DBL 8 /* see ecp_double_jac() */ +#define ECP_OPS_ADD 11 /* see ecp_add_mixed() */ +#define ECP_OPS_INV 120 /* empirical equivalent */ + +/* + * Check if we can do the next step + */ +static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) +{ + if( grp->rs != NULL ) + { + /* avoid infinite loops: always allow first step */ + if( grp->rs->ops_done != 0 && grp->rs->ops_done + ops > ecp_max_ops ) + return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + + grp->rs->ops_done += ops; + } + + return( 0 ); +} + +#define ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( ecp_check_budget( grp, ops ) ); +#else +#define ECP_BUDGET( ops ) #endif /* MBEDTLS_ECP_EARLY_RETURN */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -1465,12 +1499,26 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, RR = &grp->rs->R; #endif - MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, &parity_trick ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs == NULL || grp->rs->state < ecp_rs_final_norm ) +#endif + { + MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, + &parity_trick ) ); + MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, pre_len, k, d, + f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); - MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, pre_len, k, d, f_rng, p_rng ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + grp->rs->state++; +#endif - MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); + /* XXX: temporary: should have counted some ops */ + ECP_BUDGET( 42 ); + } + ECP_BUDGET( ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -1555,12 +1603,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &grp->rs->m, m ) ); MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rs->P, P ) ); } -#endif - /* XXX: temporary */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs && ++grp->rs->fake_it != 0 ) - return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* new start for ops counts */ + if( grp->rs != NULL ) + grp->rs->ops_done = 0; #endif /* Is P the base point ? */ @@ -1614,6 +1660,10 @@ cleanup: mbedtls_free( T ); } + /* don't free R while in progress in case R == P */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) +#endif if( ret != 0 ) mbedtls_ecp_point_free( R ); From c5d844b999c03379bb4b8fc5903791d13ba6231e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 15 Mar 2017 13:06:28 +0100 Subject: [PATCH 0020/1100] Full restart support in ecp_mul_comb_core() Still recomputing table every time, though. --- library/ecp.c | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 3505b20416..785093f7a0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -108,6 +108,7 @@ struct mbedtls_ecp_restart { mbedtls_mpi m; /* saved argument: scalar */ mbedtls_ecp_point P; /* saved argument: point */ mbedtls_ecp_point R; /* current intermediate result */ + size_t i; /* current index in various loops, 0 outside */ enum { ecp_rs_init = 0, ecp_rs_final_norm, @@ -1409,15 +1410,26 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R mbedtls_ecp_point_init( &Txi ); - /* Start with a non-zero point and randomize its coordinates */ - i = d; - MBEDTLS_MPI_CHK( ecp_select_comb( grp, R, T, t_len, x[i] ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &R->Z, 1 ) ); - if( f_rng != 0 ) - MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, R, f_rng, p_rng ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && grp->rs->i != 0 ) + { + /* restore current index (R already pointing to grp->rs->R) */ + i = grp->rs->i; + } + else +#endif + { + /* Start with a non-zero point and randomize its coordinates */ + i = d; + MBEDTLS_MPI_CHK( ecp_select_comb( grp, R, T, t_len, x[i] ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &R->Z, 1 ) ); + if( f_rng != 0 ) + MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, R, f_rng, p_rng ) ); + } while( i-- != 0 ) { + ECP_BUDGET( ECP_OPS_DBL + ECP_OPS_ADD ); MBEDTLS_MPI_CHK( ecp_double_jac( grp, R, R ) ); MBEDTLS_MPI_CHK( ecp_select_comb( grp, &Txi, T, t_len, x[i] ) ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, R, R, &Txi ) ); @@ -1427,6 +1439,23 @@ cleanup: mbedtls_ecp_point_free( &Txi ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + { + if( ret == 0 ) + { + grp->rs->state++; + grp->rs->i = 0; + } + else if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + { + /* was decreased before actually doing it */ + grp->rs->i = i + 1; + /* no need to save R, already pointing to grp->rs->R */ + } + } +#endif + return( ret ); } @@ -1513,9 +1542,6 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, if( grp->rs != NULL ) grp->rs->state++; #endif - - /* XXX: temporary: should have counted some ops */ - ECP_BUDGET( 42 ); } ECP_BUDGET( ECP_OPS_INV ); From c9c0aa6306fc1480a601ad1de5ecf9228068dde8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 16 Mar 2017 14:53:26 +0100 Subject: [PATCH 0021/1100] Remember precomputed table Free it as soon as it's no longer needed, but as a backup free it in ecp_group_free(), in case ecp_mul() is not called again after returning ECP_IN_PROGRESS. So far we only remember it when it's fully computed, next step is to be able to compute it in multiple steps. --- library/ecp.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 785093f7a0..653c60f3b1 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -109,9 +109,11 @@ struct mbedtls_ecp_restart { mbedtls_ecp_point P; /* saved argument: point */ mbedtls_ecp_point R; /* current intermediate result */ size_t i; /* current index in various loops, 0 outside */ - enum { - ecp_rs_init = 0, - ecp_rs_final_norm, + mbedtls_ecp_point *T; /* table for precomputed points */ + unsigned char T_size; /* number of points in table T */ + enum { /* what's the next step ? */ + ecp_rs_init = 0, /* just getting started */ + ecp_rs_final_norm, /* do the final normalization */ } state; }; @@ -128,6 +130,8 @@ static void ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ) */ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) { + unsigned char i; + if( ctx == NULL ) return; @@ -135,6 +139,12 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) mbedtls_ecp_point_free( &ctx->P ); mbedtls_ecp_point_free( &ctx->R ); + if( ctx->T != NULL ) { + for( i = 0; i < ctx->T_size; i++ ) + mbedtls_ecp_point_free( ctx->T + i ); + mbedtls_free( ctx->T ); + } + memset( ctx, 0, sizeof( mbedtls_ecp_restart_ctx ) ); } @@ -1601,8 +1611,9 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, void *p_rng ) { int ret; - unsigned char w, p_eq_g, pre_len, i; + unsigned char w, p_eq_g = 0, i; size_t d; + unsigned char pre_len = 0; mbedtls_ecp_point *T = NULL; #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -1639,8 +1650,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && mbedtls_mpi_cmp_mpi( &P->X, &grp->G.X ) == 0 ); -#else - p_eq_g = 0; #endif /* Pick window size and deduce related sizes */ @@ -1654,6 +1663,16 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, */ T = p_eq_g ? grp->T : NULL; +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && grp->rs->T != NULL && T == NULL ) + { + /* transfer "ownership" of T from rs to local function */ + T = grp->rs->T; + grp->rs->T = NULL; + grp->rs->T_size = 0; + } +#endif + if( T == NULL ) { T = mbedtls_calloc( pre_len, sizeof( mbedtls_ecp_point ) ); @@ -1679,6 +1698,16 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, cleanup: +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != grp->T ) + { + /* transfer "ownership" of T from local function to rs */ + grp->rs->T_size = pre_len; + grp->rs->T = T; + T = NULL; + } +#endif + if( T != NULL && ! p_eq_g ) { for( i = 0; i < pre_len; i++ ) From 085b1dff40ad1a2bcccc0b9da062bd580b8d2961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 16 Mar 2017 16:56:04 +0100 Subject: [PATCH 0022/1100] Allow T to be computed in multiple steps Previously there were only two states: - T unallocated - T allocated and valid Now there are three: - T unallocated - T allocated and in progress - T allocated and valid Introduce new bool T_ok to distinguish the last two states. --- library/ecp.c | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 653c60f3b1..71fb314ccf 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -113,6 +113,8 @@ struct mbedtls_ecp_restart { unsigned char T_size; /* number of points in table T */ enum { /* what's the next step ? */ ecp_rs_init = 0, /* just getting started */ + ecp_rs_tmp_dummy, /* temporary for incremental testing */ + ecp_rs_T_done, /* call ecp_mul_comb_after_precomp() */ ecp_rs_final_norm, /* do the final normalization */ } state; }; @@ -1334,6 +1336,15 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, size_t j; mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; +#if defined(MBEDTLS_ECP_EARLY_RETURN) + /* XXX: dummy "in_progress" return for testing caller */ + if( grp->rs != NULL && grp->rs->state == ecp_rs_init ) + { + grp->rs->state++; + return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + } +#endif + /* * Set T[0] = P and * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) @@ -1370,6 +1381,11 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, k ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + grp->rs->state++; +#endif + cleanup: return( ret ); @@ -1613,7 +1629,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, int ret; unsigned char w, p_eq_g = 0, i; size_t d; - unsigned char pre_len = 0; + unsigned char pre_len = 0, T_ok = 0; mbedtls_ecp_point *T = NULL; #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -1657,22 +1673,28 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, pre_len = 1U << ( w - 1 ); d = ( grp->nbits + w - 1 ) / w; - /* - * Prepare precomputed points: if P == G we want to - * use grp->T if already initialized, or initialize it. - */ - T = p_eq_g ? grp->T : NULL; + /* Pre-computed table: do we have it already for the base point? */ + if( p_eq_g && grp->T != NULL ) + { + T = grp->T; + T_ok = 1; + } #if defined(MBEDTLS_ECP_EARLY_RETURN) + /* Pre-computed table: do we have one in progress? complete? */ if( grp->rs != NULL && grp->rs->T != NULL && T == NULL ) { /* transfer "ownership" of T from rs to local function */ T = grp->rs->T; grp->rs->T = NULL; grp->rs->T_size = 0; + + if( grp->rs->state >= ecp_rs_T_done ) + T_ok = 1; } #endif + /* Allocate table if we didn't have any */ if( T == NULL ) { T = mbedtls_calloc( pre_len, sizeof( mbedtls_ecp_point ) ); @@ -1681,7 +1703,11 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, ret = MBEDTLS_ERR_ECP_ALLOC_FAILED; goto cleanup; } + } + /* Compute table (or finish computing it) if not done already */ + if( !T_ok ) + { MBEDTLS_MPI_CHK( ecp_precompute_comb( grp, T, P, w, d ) ); if( p_eq_g ) From 07bf6f52c1e3317a12e53b523199fd9474831aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 16 Mar 2017 17:21:38 +0100 Subject: [PATCH 0023/1100] Tune T ownership code + comments Don't miss the little code changes among all those comments change :) --- library/ecp.c | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 71fb314ccf..f852c99888 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1618,8 +1618,17 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, } /* - * Multiplication using the comb method, - * for curves in short Weierstrass form + * Multiplication using the comb method - for curves in short Weierstrass form + * + * This function is mainly responsible for administrative work: + * - managing the restart context if enabled + * - managing the table of precomputed points (passed between the above two + * functions): allocation, computation, ownership tranfer, freeing. + * + * It delegates the actual arithmetic work to: + * ecp_precompute_comb() and ecp_mul_comb_with_precomp() + * + * See comments on ecp_comb_recode_core() regarding the computation strategy. */ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, @@ -1657,7 +1666,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rs->P, P ) ); } - /* new start for ops counts */ + /* reset ops count for this call */ if( grp->rs != NULL ) grp->rs->ops_done = 0; #endif @@ -1676,6 +1685,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Pre-computed table: do we have it already for the base point? */ if( p_eq_g && grp->T != NULL ) { + /* second pointer to the same table + * no ownership transfer as other threads might be using T too */ T = grp->T; T_ok = 1; } @@ -1684,7 +1695,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Pre-computed table: do we have one in progress? complete? */ if( grp->rs != NULL && grp->rs->T != NULL && T == NULL ) { - /* transfer "ownership" of T from rs to local function */ + /* transfer ownership of T from rs to local function */ T = grp->rs->T; grp->rs->T = NULL; grp->rs->T_size = 0; @@ -1714,6 +1725,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, { grp->T = T; grp->T_size = pre_len; + /* now have two pointers to the same table */ } } @@ -1724,17 +1736,23 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, cleanup: + /* does T belong to the group? */ + if( T == grp->T ) + T = NULL; + + /* does T belong to the restart context? */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != grp->T ) + if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) { - /* transfer "ownership" of T from local function to rs */ + /* transfer ownership of T from local function to rs */ grp->rs->T_size = pre_len; grp->rs->T = T; T = NULL; } #endif - if( T != NULL && ! p_eq_g ) + /* did T belong to us? then let's destroy it! */ + if( T != NULL ) { for( i = 0; i < pre_len; i++ ) mbedtls_ecp_point_free( &T[i] ); @@ -1745,9 +1763,11 @@ cleanup: #if defined(MBEDTLS_ECP_EARLY_RETURN) if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) #endif + /* prevent caller from using invalid value */ if( ret != 0 ) mbedtls_ecp_point_free( R ); + /* clear restart context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_EARLY_RETURN) if( grp->rs != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_free( grp->rs ); From fc3e0beabfa7b97476bc90fad32167ea04fb5341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 09:29:31 +0100 Subject: [PATCH 0024/1100] Separate auxiliary array in precompute_comb() Separating main computation from filling of the auxiliary array makes things clearer and easier to restart as we don't have to remember the in-progress auxiliary array. --- library/ecp.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index f852c99888..47c7da2a25 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1332,7 +1332,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, unsigned char w, size_t d ) { int ret; - unsigned char i, k; + unsigned char i; size_t j; mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; @@ -1351,35 +1351,44 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, */ MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); - k = 0; for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) { cur = T + i; MBEDTLS_MPI_CHK( mbedtls_ecp_copy( cur, T + ( i >> 1 ) ) ); for( j = 0; j < d; j++ ) MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); - - TT[k++] = cur; } - MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, k ) ); + /* + * Normalize current elements in T. As T has holes, + * use an auxiliary array of pointers to elements in T. + */ + j = 0; + for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) + TT[j++] = T + i; + + MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); /* * Compute the remaining ones using the minimal number of additions * Be careful to update T[2^l] only after using it! */ - k = 0; for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) { j = i; while( j-- ) - { MBEDTLS_MPI_CHK( ecp_add_mixed( grp, &T[i + j], &T[j], &T[i] ) ); - TT[k++] = &T[i + j]; - } } - MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, k ) ); + /* + * Normalize final elements in T. Even though there are no holes now, + * we still need the auxiliary array for homogeneity with last time. + * Also skip T[0] which is already normalised, being a copy of P. + */ + for( j = 0; j + 1 < ( 1U << ( w - 1 ) ); j++ ) + TT[j] = T + j + 1; + + MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) if( grp->rs != NULL ) From 67c83fb8710520a8c402f76396f3b0111330cebc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 10:08:53 +0100 Subject: [PATCH 0025/1100] Give a constant a name --- library/ecp.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 47c7da2a25..7bcf25626f 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1334,6 +1334,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, int ret; unsigned char i; size_t j; + const unsigned char T_len = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -1351,7 +1352,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, */ MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); - for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) + for( i = 1; i < T_len; i <<= 1 ) { cur = T + i; MBEDTLS_MPI_CHK( mbedtls_ecp_copy( cur, T + ( i >> 1 ) ) ); @@ -1364,7 +1365,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * use an auxiliary array of pointers to elements in T. */ j = 0; - for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) + for( i = 1; i < T_len; i <<= 1 ) TT[j++] = T + i; MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); @@ -1373,7 +1374,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * Compute the remaining ones using the minimal number of additions * Be careful to update T[2^l] only after using it! */ - for( i = 1; i < ( 1U << ( w - 1 ) ); i <<= 1 ) + for( i = 1; i < T_len; i <<= 1 ) { j = i; while( j-- ) @@ -1383,9 +1384,9 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, /* * Normalize final elements in T. Even though there are no holes now, * we still need the auxiliary array for homogeneity with last time. - * Also skip T[0] which is already normalised, being a copy of P. + * Also, skip T[0] which is already normalised, being a copy of P. */ - for( j = 0; j + 1 < ( 1U << ( w - 1 ) ); j++ ) + for( j = 0; j + 1 < T_len; j++ ) TT[j] = T + j + 1; MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); From e2d7cb3f10a5e19f0448f010c8bc4008679f143a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 10:24:17 +0100 Subject: [PATCH 0026/1100] Start splitting precompute_comb() This is the easy part: with the current steps, all information between steps is passed via T which is already saved. Next we'll need to split at least the first loop, and maybe calls to normalize_jac_many() and/or the second loop. --- library/ecp.c | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 7bcf25626f..2d473d9b4f 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -113,7 +113,9 @@ struct mbedtls_ecp_restart { unsigned char T_size; /* number of points in table T */ enum { /* what's the next step ? */ ecp_rs_init = 0, /* just getting started */ - ecp_rs_tmp_dummy, /* temporary for incremental testing */ + ecp_rs_pre_norm_dbl, /* normalize precomputed 2^n multiples */ + ecp_rs_pre_add, /* precompute remaining points by adding */ + ecp_rs_pre_norm_add, /* normalize all precomputed points */ ecp_rs_T_done, /* call ecp_mul_comb_after_precomp() */ ecp_rs_final_norm, /* do the final normalization */ } state; @@ -1338,11 +1340,14 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; #if defined(MBEDTLS_ECP_EARLY_RETURN) - /* XXX: dummy "in_progress" return for testing caller */ - if( grp->rs != NULL && grp->rs->state == ecp_rs_init ) + if( grp->rs != NULL ) { - grp->rs->state++; - return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + if( grp->rs->state == ecp_rs_pre_norm_add ) + goto norm_add; + if( grp->rs->state == ecp_rs_pre_add ) + goto add; + if( grp->rs->state == ecp_rs_pre_norm_dbl ) + goto norm_dbl; } #endif @@ -1350,6 +1355,8 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * Set T[0] = P and * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) */ + ECP_BUDGET( ( w - 1 ) * d * ECP_OPS_DBL ); // XXX: split loop + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); for( i = 1; i < T_len; i <<= 1 ) @@ -1360,20 +1367,42 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); } +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + grp->rs->state++; +#endif + /* * Normalize current elements in T. As T has holes, * use an auxiliary array of pointers to elements in T. */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) +norm_dbl: +#endif + j = 0; for( i = 1; i < T_len; i <<= 1 ) TT[j++] = T + i; + ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); // XXX: split next function? + MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + grp->rs->state++; +#endif + /* * Compute the remaining ones using the minimal number of additions * Be careful to update T[2^l] only after using it! */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) +add: +#endif + + ECP_BUDGET( ( T_len - 1 ) * ECP_OPS_ADD ); // XXX: split loop? + for( i = 1; i < T_len; i <<= 1 ) { j = i; @@ -1381,14 +1410,25 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_add_mixed( grp, &T[i + j], &T[j], &T[i] ) ); } +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL ) + grp->rs->state++; +#endif + /* * Normalize final elements in T. Even though there are no holes now, * we still need the auxiliary array for homogeneity with last time. * Also, skip T[0] which is already normalised, being a copy of P. */ +#if defined(MBEDTLS_ECP_EARLY_RETURN) +norm_add: +#endif + for( j = 0; j + 1 < T_len; j++ ) TT[j] = T + j + 1; + ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); // XXX: split next function? + MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) From ae55707b2859ca1abf2d349213670283aeec59f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 12:21:24 +0100 Subject: [PATCH 0027/1100] Turn double loop into single loop In preparation for making the loop restartable --- library/ecp.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 2d473d9b4f..5ee97c895a 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1359,12 +1359,15 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); - for( i = 1; i < T_len; i <<= 1 ) + for( j = 0; j < d * ( w - 1 ); j++ ) { + i = 1U << ( j / d ); cur = T + i; - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( cur, T + ( i >> 1 ) ) ); - for( j = 0; j < d; j++ ) - MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); + + if( j % d == 0 ) + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( cur, T + ( i >> 1 ) ) ); + + MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); } #if defined(MBEDTLS_ECP_EARLY_RETURN) From 213541a548ca56bd9adc9b4ed3a2ac68a11a76cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 12:50:41 +0100 Subject: [PATCH 0028/1100] Make the first precomp loop restartable --- library/ecp.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 5ee97c895a..a1f019d393 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1335,7 +1335,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, { int ret; unsigned char i; - size_t j; + size_t j = 0; const unsigned char T_len = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; @@ -1355,12 +1355,19 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * Set T[0] = P and * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) */ - ECP_BUDGET( ( w - 1 ) * d * ECP_OPS_DBL ); // XXX: split loop - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); - for( j = 0; j < d * ( w - 1 ); j++ ) +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && grp->rs->i != 0 ) + j = grp->rs->i; + else +#endif + j = 0; + + for( ; j < d * ( w - 1 ); j++ ) { + ECP_BUDGET( ECP_OPS_DBL ); + i = 1U << ( j / d ); cur = T + i; @@ -1372,7 +1379,10 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_EARLY_RETURN) if( grp->rs != NULL ) + { + grp->rs->i = 0; grp->rs->state++; + } #endif /* @@ -1440,6 +1450,13 @@ norm_add: #endif cleanup: +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + { + if( grp->rs->state == ecp_rs_init ) + grp->rs->i = j; + } +#endif return( ret ); } From 1c678e0e0603c376ba265d38bc572e1ddc2f182d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 13:39:39 +0100 Subject: [PATCH 0029/1100] Update doc about minimum max_ops value Ok, so the original plan was to make mpi_inv_mod() the smallest block that could not be divided. Updated plan is that the smallest block will be either: - ecp_normalize_jac_many() (one mpi_inv_mod() + a number or mpi_mul_mpi()s) - or the second loop in ecp_precompute_comb() With default settings, the minimum non-restartable sequence is: - for P-256: 222M - for P-384: 341M This is within a 2-3x factor of originally planned value of 120M. However, that value can be approached, at the cost of some performance, by setting ECP_WINDOW_SIZE (w below) lower than the default of 6. For example: - w=4 -> 166M for any curve (perf. impact < 10%) - w=2 -> 130M for any curve (perf. impact ~ 30%) My opinion is that the current state with w=4 is a good compromise, and the code complexity need to attain 120M is not warranted by the 1.4 factor between that and the current minimum with w=4 (which is close to optimal perf). --- include/mbedtls/ecp.h | 10 ++++++++-- library/ecp.c | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index d44e658437..810cb9f782 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -274,8 +274,14 @@ mbedtls_ecp_keypair; * of the order of 3600 "basic operations" with default * settings. * - * \warning Values lower than 120 are currently not well-supported, in - * that sometimes functions will have to block for longer. + * \warning Very low values are not always respected: sometimes + * functions need to block for a minimum number of + * operations, and will do so even if max_ops is set to a + * lower value. That minimum depends on the curve size, and + * can be made lower by decreasing the value of + * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, the minimum + * is around 160 for P-256 with \c MBEDTLS_ECP_WINDOW_SIZE + * set to 4. */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); #endif /* MBEDTLS_ECP_EARLY_RETURN */ diff --git a/library/ecp.c b/library/ecp.c index a1f019d393..b3bddbfc6c 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1397,7 +1397,7 @@ norm_dbl: for( i = 1; i < T_len; i <<= 1 ) TT[j++] = T + i; - ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); // XXX: split next function? + ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); @@ -1414,7 +1414,7 @@ norm_dbl: add: #endif - ECP_BUDGET( ( T_len - 1 ) * ECP_OPS_ADD ); // XXX: split loop? + ECP_BUDGET( ( T_len - 1 ) * ECP_OPS_ADD ); for( i = 1; i < T_len; i <<= 1 ) { @@ -1440,7 +1440,7 @@ norm_add: for( j = 0; j + 1 < T_len; j++ ) TT[j] = T + j + 1; - ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); // XXX: split next function? + ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); From 9c5c78ff5c3d259b8fea0bed2af67e26042aea38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 14:13:07 +0100 Subject: [PATCH 0030/1100] Fix indicative values of ops counts Previous measurements were wrong due to counting multiplication by a small constant as a full multiplication, which it is not. --- include/mbedtls/ecp.h | 2 +- tests/suites/test_suite_ecp.function | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 810cb9f782..314e4b257c 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -271,7 +271,7 @@ mbedtls_ecp_keypair; * \note A "basic operation" is roughly multiplication in GF(p), * or whatever takes a roughly equivalent amount of time. * As an indication, a scalar multiplication on P-256 is - * of the order of 3600 "basic operations" with default + * of the order of 3300 "basic operations" with default * settings. * * \warning Very low values are not always respected: sometimes diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index caf983e72e..3dfef18772 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -69,11 +69,11 @@ void ecp_test_vect_restart( int id, * change in the future. A factor 2 is a minimum safety margin. * * For reference, with mbed TLS 2.4 and default settings, for P-256: - * - Random point mult: ~3600M - * - Cold base point mult: ~3600M - * - Hot base point mult: ~1200M + * - Random point mult: ~3250M + * - Cold base point mult: ~3300M + * - Hot base point mult: ~1100M * With MBEDTLS_ECP_WINDOW_SIZE set to 2 (minimum): - * - Random point mult: ~4200M + * - Random point mult: ~3850M */ mbedtls_ecp_group grp; mbedtls_ecp_point R; From d3a0ca850031012908fee4d7af2edd27649bb4d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 14:20:38 +0100 Subject: [PATCH 0031/1100] Add tests about number of restarts --- tests/suites/test_suite_ecp.data | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index f96be5a510..82ffec57b8 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -349,6 +349,14 @@ ECP early return secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":0:0:0 -ECP early return secp256r1 restart enabled +ECP early return secp256r1 restart max_ops=1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":1:1:5000 + +ECP early return secp256r1 restart max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":10000:0:0 + +ECP early return secp256r1 restart max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":250:2:32 From e685449004eccc58f327cbde5f9808f78c38471c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 14:35:19 +0100 Subject: [PATCH 0032/1100] Scale ops count for larger curves From a user's perspective, you want a "basic operation" to take approximately the same amount of time regardless of the curve size, especially since max_ops is a global setting: otherwise if you pick a limit suitable for P-384 then when you do an operation on P-256 it will return way more often than needed. Said otherwise, a user is actually interested in actual running time, and we do the API in terms of "basic ops" for practical reasons (no timers) but then we should make sure it's a good proxy for running time. --- include/mbedtls/ecp.h | 18 ++++++++++-------- library/ecp.c | 8 ++++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 314e4b257c..9521875df3 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -268,20 +268,22 @@ mbedtls_ecp_keypair; * Lower (non-zero) values mean ECC functions will block for * a lesser maximum amount of time. * - * \note A "basic operation" is roughly multiplication in GF(p), - * or whatever takes a roughly equivalent amount of time. - * As an indication, a scalar multiplication on P-256 is - * of the order of 3300 "basic operations" with default - * settings. + * \note A "basic operation" is defined as a rough equivalent of a + * multiplication in GF(p) for the NIST P-256 curve. + * As an indication, with default settings, a scalar + * multiplication (full run of \c mbedtls_ecp_mul()) is: + * - about 3300 basic operations for P-256 + * - about 9400 basic operations for P-384 * * \warning Very low values are not always respected: sometimes * functions need to block for a minimum number of * operations, and will do so even if max_ops is set to a * lower value. That minimum depends on the curve size, and * can be made lower by decreasing the value of - * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, the minimum - * is around 160 for P-256 with \c MBEDTLS_ECP_WINDOW_SIZE - * set to 4. + * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, with that + * parameter set to 4, the minimum amount of blocking is: + * - around 165 basic operations for P-256 + * - around 330 basic operations for P-384 */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); #endif /* MBEDTLS_ECP_EARLY_RETURN */ diff --git a/library/ecp.c b/library/ecp.c index b3bddbfc6c..ec2e3cd7d4 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -166,10 +166,18 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) { if( grp->rs != NULL ) { + /* scale depending on curve size: the chosen reference is 256-bit, + * and multiplication is quadratic. Round to the closest integer. */ + if( grp->pbits >= 512 ) + ops *= 4; + else if( grp->pbits >= 384 ) + ops *= 2; + /* avoid infinite loops: always allow first step */ if( grp->rs->ops_done != 0 && grp->rs->ops_done + ops > ecp_max_ops ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* update running count */ grp->rs->ops_done += ops; } From e58f65a04bb30412b03dc1192a9f122ae82cf013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Mar 2017 14:59:54 +0100 Subject: [PATCH 0033/1100] Expand documentation with notes and warnings --- include/mbedtls/ecp.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 9521875df3..c7370339a4 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -275,7 +275,7 @@ mbedtls_ecp_keypair; * - about 3300 basic operations for P-256 * - about 9400 basic operations for P-384 * - * \warning Very low values are not always respected: sometimes + * \note Very low values are not always respected: sometimes * functions need to block for a minimum number of * operations, and will do so even if max_ops is set to a * lower value. That minimum depends on the curve size, and @@ -284,6 +284,21 @@ mbedtls_ecp_keypair; * parameter set to 4, the minimum amount of blocking is: * - around 165 basic operations for P-256 * - around 330 basic operations for P-384 + * + * \note This setting is currently ignored by Curve25519 + * + * \warning The ECJPAKE module is currently not compatible with this + * feature. \c max_ops must always be 0 while using ECJPAKE. + * + * \warning NOT thread-safe: when \c max_ops is not zero, sharing a + * \c mbedtls_ecp_group structure, or a + * \c mbedtls_pk_context structure wrapping an ECC key, + * between concurrent threads of execution is NOT supported. + * For (D)TLS, that means it's not safe to concurrently run + * two handshakes that use the same private EC key for + * authenticating ourselves; it is however safe to maintain + * multiple simultaneous connections as long as the + * handshakes are not concurrent or don't use the same key. */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); #endif /* MBEDTLS_ECP_EARLY_RETURN */ From 45fd0164dd23de06d3618a6809c7ad9863d2e711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Mar 2017 08:24:42 +0100 Subject: [PATCH 0034/1100] Rename multiplication-specific restart context It's going to be convenient for each function that can generate a MBEDTLS_ERR_ECP_IN_PROGRESS on its own (as opposed to just passing it around) to have its own restart context that they can allocate and free as needed independently of the restart context of other functions. For example ecp_muladd() is going to have its own restart_muladd context that in can managed, then when it calls ecp_mul() this will manage a restart_mul context without interfering with the caller's context. So, things need to be renames to avoid future name clashes. --- include/mbedtls/ecp.h | 6 +- library/ecp.c | 156 +++++++++++++++++++++--------------------- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index c7370339a4..c5664a84b9 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -114,12 +114,12 @@ mbedtls_ecp_point; #if defined(MBEDTLS_ECP_EARLY_RETURN) /** - * \brief ECP context for resuming operations after returning + * \brief ECP context for resuming multiplication after returning * \c MBEDTLS_ERR_ECP_IN_PROGRESS * * \note Opaque struct */ -typedef struct mbedtls_ecp_restart mbedtls_ecp_restart_ctx; +typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; #endif /** @@ -164,7 +164,7 @@ typedef struct mbedtls_ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ size_t T_size; /*!< number for pre-computed points */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - mbedtls_ecp_restart_ctx *rs; /*!< context for resuming operation */ + mbedtls_ecp_restart_mul_ctx *rsm; /*!< restart context for ecp_mul() */ #endif } mbedtls_ecp_group; diff --git a/library/ecp.c b/library/ecp.c index ec2e3cd7d4..19d6af08cb 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -103,7 +103,7 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) /* * Restart context type for interrupted operations */ -struct mbedtls_ecp_restart { +struct mbedtls_ecp_restart_mul { unsigned ops_done; /* number of operations done this time */ mbedtls_mpi m; /* saved argument: scalar */ mbedtls_ecp_point P; /* saved argument: point */ @@ -112,27 +112,27 @@ struct mbedtls_ecp_restart { mbedtls_ecp_point *T; /* table for precomputed points */ unsigned char T_size; /* number of points in table T */ enum { /* what's the next step ? */ - ecp_rs_init = 0, /* just getting started */ - ecp_rs_pre_norm_dbl, /* normalize precomputed 2^n multiples */ - ecp_rs_pre_add, /* precompute remaining points by adding */ - ecp_rs_pre_norm_add, /* normalize all precomputed points */ - ecp_rs_T_done, /* call ecp_mul_comb_after_precomp() */ - ecp_rs_final_norm, /* do the final normalization */ + ecp_rsm_init = 0, /* just getting started */ + ecp_rsm_pre_norm_dbl, /* normalize precomputed 2^n multiples */ + ecp_rsm_pre_add, /* precompute remaining points by adding */ + ecp_rsm_pre_norm_add, /* normalize all precomputed points */ + ecp_rsm_T_done, /* call ecp_mul_comb_after_precomp() */ + ecp_rsm_final_norm, /* do the final normalization */ } state; }; /* - * Init restart context + * Init restart_mul context */ -static void ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ) +static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) { - memset( ctx, 0, sizeof( mbedtls_ecp_restart_ctx ) ); + memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); } /* - * Free the components of a restart context + * Free the components of a restart_mul context */ -static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) +static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) { unsigned char i; @@ -149,7 +149,7 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) mbedtls_free( ctx->T ); } - memset( ctx, 0, sizeof( mbedtls_ecp_restart_ctx ) ); + memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); } /* @@ -164,7 +164,7 @@ static void ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) */ static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) { - if( grp->rs != NULL ) + if( grp->rsm != NULL ) { /* scale depending on curve size: the chosen reference is 256-bit, * and multiplication is quadratic. Round to the closest integer. */ @@ -174,11 +174,11 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) ops *= 2; /* avoid infinite loops: always allow first step */ - if( grp->rs->ops_done != 0 && grp->rs->ops_done + ops > ecp_max_ops ) + if( grp->rsm->ops_done != 0 && grp->rsm->ops_done + ops > ecp_max_ops ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); /* update running count */ - grp->rs->ops_done += ops; + grp->rsm->ops_done += ops; } return( 0 ); @@ -451,8 +451,8 @@ void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ) } #if defined(MBEDTLS_ECP_EARLY_RETURN) - ecp_restart_free( grp->rs ); - mbedtls_free( grp->rs ); + ecp_restart_mul_free( grp->rsm ); + mbedtls_free( grp->rsm ); #endif mbedtls_zeroize( grp, sizeof( mbedtls_ecp_group ) ); @@ -1348,13 +1348,13 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) + if( grp->rsm != NULL ) { - if( grp->rs->state == ecp_rs_pre_norm_add ) + if( grp->rsm->state == ecp_rsm_pre_norm_add ) goto norm_add; - if( grp->rs->state == ecp_rs_pre_add ) + if( grp->rsm->state == ecp_rsm_pre_add ) goto add; - if( grp->rs->state == ecp_rs_pre_norm_dbl ) + if( grp->rsm->state == ecp_rsm_pre_norm_dbl ) goto norm_dbl; } #endif @@ -1366,8 +1366,8 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && grp->rs->i != 0 ) - j = grp->rs->i; + if( grp->rsm != NULL && grp->rsm->i != 0 ) + j = grp->rsm->i; else #endif j = 0; @@ -1386,10 +1386,10 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, } #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) + if( grp->rsm != NULL ) { - grp->rs->i = 0; - grp->rs->state++; + grp->rsm->i = 0; + grp->rsm->state++; } #endif @@ -1410,8 +1410,8 @@ norm_dbl: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) - grp->rs->state++; + if( grp->rsm != NULL ) + grp->rsm->state++; #endif /* @@ -1432,8 +1432,8 @@ add: } #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) - grp->rs->state++; + if( grp->rsm != NULL ) + grp->rsm->state++; #endif /* @@ -1453,16 +1453,16 @@ norm_add: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) - grp->rs->state++; + if( grp->rsm != NULL ) + grp->rsm->state++; #endif cleanup: #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( grp->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - if( grp->rs->state == ecp_rs_init ) - grp->rs->i = j; + if( grp->rsm->state == ecp_rsm_init ) + grp->rsm->i = j; } #endif @@ -1515,10 +1515,10 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R mbedtls_ecp_point_init( &Txi ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && grp->rs->i != 0 ) + if( grp->rsm != NULL && grp->rsm->i != 0 ) { - /* restore current index (R already pointing to grp->rs->R) */ - i = grp->rs->i; + /* restore current index (R already pointing to grp->rsm->R) */ + i = grp->rsm->i; } else #endif @@ -1544,18 +1544,18 @@ cleanup: mbedtls_ecp_point_free( &Txi ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) + if( grp->rsm != NULL ) { if( ret == 0 ) { - grp->rs->state++; - grp->rs->i = 0; + grp->rsm->state++; + grp->rsm->i = 0; } else if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { /* was decreased before actually doing it */ - grp->rs->i = i + 1; - /* no need to save R, already pointing to grp->rs->R */ + grp->rsm->i = i + 1; + /* no need to save R, already pointing to grp->rsm->R */ } } #endif @@ -1628,12 +1628,12 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, mbedtls_ecp_point *RR = R; #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) - RR = &grp->rs->R; + if( grp->rsm != NULL ) + RR = &grp->rsm->R; #endif #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs == NULL || grp->rs->state < ecp_rs_final_norm ) + if( grp->rsm == NULL || grp->rsm->state < ecp_rsm_final_norm ) #endif { MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, @@ -1643,8 +1643,8 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL ) - grp->rs->state++; + if( grp->rsm != NULL ) + grp->rsm->state++; #endif } @@ -1721,32 +1721,32 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #if defined(MBEDTLS_ECP_EARLY_RETURN) /* check for restart with new arguments */ - if( grp->rs != NULL && - ( mbedtls_mpi_cmp_mpi( m, &grp->rs->m ) != 0 || - mbedtls_mpi_cmp_mpi( &P->X, &grp->rs->P.X ) != 0 || - mbedtls_mpi_cmp_mpi( &P->Y, &grp->rs->P.Y ) != 0 ) ) + if( grp->rsm != NULL && + ( mbedtls_mpi_cmp_mpi( m, &grp->rsm->m ) != 0 || + mbedtls_mpi_cmp_mpi( &P->X, &grp->rsm->P.X ) != 0 || + mbedtls_mpi_cmp_mpi( &P->Y, &grp->rsm->P.Y ) != 0 ) ) { - ecp_restart_free( grp->rs ); - mbedtls_free( grp->rs ); - grp->rs = NULL; + ecp_restart_mul_free( grp->rsm ); + mbedtls_free( grp->rsm ); + grp->rsm = NULL; } /* set up restart context if needed */ - if( ecp_max_ops != 0 && grp->rs == NULL ) + if( ecp_max_ops != 0 && grp->rsm == NULL ) { - grp->rs = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_ctx ) ); - if( grp->rs == NULL ) + grp->rsm = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_mul_ctx ) ); + if( grp->rsm == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); - ecp_restart_init( grp->rs ); + ecp_restart_mul_init( grp->rsm ); - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &grp->rs->m, m ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rs->P, P ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &grp->rsm->m, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rsm->P, P ) ); } /* reset ops count for this call */ - if( grp->rs != NULL ) - grp->rs->ops_done = 0; + if( grp->rsm != NULL ) + grp->rsm->ops_done = 0; #endif /* Is P the base point ? */ @@ -1771,14 +1771,14 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #if defined(MBEDTLS_ECP_EARLY_RETURN) /* Pre-computed table: do we have one in progress? complete? */ - if( grp->rs != NULL && grp->rs->T != NULL && T == NULL ) + if( grp->rsm != NULL && grp->rsm->T != NULL && T == NULL ) { - /* transfer ownership of T from rs to local function */ - T = grp->rs->T; - grp->rs->T = NULL; - grp->rs->T_size = 0; + /* transfer ownership of T from rsm to local function */ + T = grp->rsm->T; + grp->rsm->T = NULL; + grp->rsm->T_size = 0; - if( grp->rs->state >= ecp_rs_T_done ) + if( grp->rsm->state >= ecp_rsm_T_done ) T_ok = 1; } #endif @@ -1820,11 +1820,11 @@ cleanup: /* does T belong to the restart context? */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) + if( grp->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) { - /* transfer ownership of T from local function to rs */ - grp->rs->T_size = pre_len; - grp->rs->T = T; + /* transfer ownership of T from local function to rsm */ + grp->rsm->T_size = pre_len; + grp->rsm->T = T; T = NULL; } #endif @@ -1847,10 +1847,10 @@ cleanup: /* clear restart context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rs != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { - ecp_restart_free( grp->rs ); - mbedtls_free( grp->rs ); - grp->rs = NULL; + if( grp->rsm != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + ecp_restart_mul_free( grp->rsm ); + mbedtls_free( grp->rsm ); + grp->rsm = NULL; } #endif From b739a712d1caa5e27fc49b45cf7d71b8636e4053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 19 Apr 2017 10:11:56 +0200 Subject: [PATCH 0035/1100] Start moving to new design/API Following discussion in the team, it was deemed preferable for the restart context to be explicitly managed by the caller. This commits in the first in a series moving in that directly: it starts by only changing the public API, while still internally using the old design. Future commits in that series will change to the new design internally. The test function was simplified as it no longer makes sense to test for some memory management errors since that responsibility shifted to the caller. --- include/mbedtls/ecp.h | 54 +++++++++++++++++++++++++--- library/ecp.c | 35 ++++++++++++++++++ tests/suites/test_suite_ecp.function | 31 +++++----------- 3 files changed, 93 insertions(+), 27 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index c5664a84b9..86d7c59066 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -164,7 +164,7 @@ typedef struct mbedtls_ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ size_t T_size; /*!< number for pre-computed points */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - mbedtls_ecp_restart_mul_ctx *rsm; /*!< restart context for ecp_mul() */ + mbedtls_ecp_restart_mul_ctx *rsm; /*!< temporary */ #endif } mbedtls_ecp_group; @@ -184,6 +184,16 @@ typedef struct } mbedtls_ecp_keypair; +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief General context for resuming ECC operations + */ +typedef struct +{ + mbedtls_ecp_restart_mul_ctx *rsm; /*!< restart context for ecp_mul() */ +} mbedtls_ecp_restart_ctx; +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + /** * \name SECTION: Module settings * @@ -377,6 +387,18 @@ void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ); */ void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief Initialize a restart context + */ +void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context + */ +void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ); +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + /** * \brief Copy the contents of point Q into P * @@ -588,16 +610,40 @@ int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, size_t *olen, * \return 0 if successful, * MBEDTLS_ERR_ECP_INVALID_KEY if m is not a valid privkey * or P is not a valid pubkey, - * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed, + * MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + */ +int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief Restartable version of \c mbedtls_ecp_mul() + * + * \note Performs the same job as \c mbedtls_ecp_mul(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param grp ECP group + * \param R Destination point + * \param m Integer by which to multiply + * \param P Point to multiply + * \param f_rng RNG function (see notes) + * \param p_rng RNG parameter + * \param rs_ctx Restart context - must be non-NULL to enable early-return + * + * \return See \c mbedtls_ecp_mul(), or * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached (see \c mbedtls_ecp_set_max_ops()), * indicating the function should be called again with the * exact same arguments. * */ -int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, +int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ); +#endif /* MBEDTLS_ECP_EARLY_RETURN */ /** * \brief Multiplication and addition of two points by integers: diff --git a/library/ecp.c b/library/ecp.c index 19d6af08cb..b2c2f53c23 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -152,6 +152,27 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); } +/* + * Initialize a restart context + */ +void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ) +{ + memset( ctx, 0, sizeof( *ctx ) ); +} + +/* + * Free the components of a restart context + */ +void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + ecp_restart_mul_free( ctx->rsm ); + mbedtls_free( ctx->rsm ); + ctx->rsm = NULL; +} + /* * Operation counts */ @@ -2111,6 +2132,20 @@ cleanup: return( ret ); } +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/* + * Restartable multiplication R = m * P + */ +int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) +{ + (void) rs_ctx; /* cheating for now */ + return( mbedtls_ecp_mul( grp, R, m, P, f_rng, p_rng ) ); +} +#endif + #if defined(ECP_SHORTWEIERSTRASS) /* * Check that an affine point is valid as a public key, diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 3dfef18772..195146c543 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -75,12 +75,14 @@ void ecp_test_vect_restart( int id, * With MBEDTLS_ECP_WINDOW_SIZE set to 2 (minimum): * - Random point mult: ~3850M */ + mbedtls_ecp_restart_ctx ctx; mbedtls_ecp_group grp; mbedtls_ecp_point R; mbedtls_mpi dA, xA, yA, dB, xZ, yZ; int cnt_restarts; int ret; + mbedtls_ecp_restart_init( &ctx ); mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &R ); mbedtls_mpi_init( &dA ); mbedtls_mpi_init( &xA ); mbedtls_mpi_init( &yA ); mbedtls_mpi_init( &dB ); mbedtls_mpi_init( &xZ ); mbedtls_mpi_init( &yZ ); @@ -100,7 +102,7 @@ void ecp_test_vect_restart( int id, /* Base point case */ cnt_restarts = 0; do { - ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dA, &grp.G, NULL, NULL, &ctx ); TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) @@ -114,24 +116,13 @@ void ecp_test_vect_restart( int id, TEST_ASSERT( cnt_restarts >= min_restarts ); TEST_ASSERT( cnt_restarts <= max_restarts ); - /* Do we leak memory when doing it twice in a row? */ - do { - ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - } - while( ret != 0 ); - - /* Ok, now start an operation with some arguments, and drop it. - * We'll see if the result of the next operation, with different args, - * are correct regardless (do we discard old context on new args?). - * This also tests that we don't write to R prematurely */ - ret = mbedtls_ecp_mul( &grp, &R, &dA, &grp.G, NULL, NULL ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Prepare context for new operation */ + mbedtls_ecp_restart_free( &ctx ); /* Non-base point case */ cnt_restarts = 0; do { - ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) @@ -145,18 +136,12 @@ void ecp_test_vect_restart( int id, TEST_ASSERT( cnt_restarts >= min_restarts ); TEST_ASSERT( cnt_restarts <= max_restarts ); - /* Do we leak memory when doing it twice in a row? */ - do { - ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - } - while( ret != 0 ); - /* Do we leak memory when not finishing an operation? */ - ret = mbedtls_ecp_mul( &grp, &R, &dB, &R, NULL, NULL ); + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); exit: + mbedtls_ecp_restart_free( &ctx ); mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &R ); mbedtls_mpi_free( &dA ); mbedtls_mpi_free( &xA ); mbedtls_mpi_free( &yA ); mbedtls_mpi_free( &dB ); mbedtls_mpi_free( &xZ ); mbedtls_mpi_free( &yZ ); From 8f28addb27da8f4e04a3d5d9c2e4bb3100947a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 19 Apr 2017 10:20:49 +0200 Subject: [PATCH 0036/1100] Update documentation for new design/API EC-JPAKE warning is no longer needed as we now have separate _restartable() functions, and JPAKE will just call the non-restartable version. Concurrency warning removed as this is one of the reasons why this design was chosen. --- include/mbedtls/ecp.h | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 86d7c59066..111ef03bba 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -273,6 +273,10 @@ typedef struct * then need to be called again with the same arguments until * it returns 0 or an other error code. * + * This only affects functions that accept a pointer to a + * \c mbedtls_ecp_restart_ctx as an argument, and only works + * if that pointer valid (in particular, not NULL). + * * \param max_ops Maximum number of basic operations done in a row. * Default: 0 (unlimited). * Lower (non-zero) values mean ECC functions will block for @@ -296,19 +300,6 @@ typedef struct * - around 330 basic operations for P-384 * * \note This setting is currently ignored by Curve25519 - * - * \warning The ECJPAKE module is currently not compatible with this - * feature. \c max_ops must always be 0 while using ECJPAKE. - * - * \warning NOT thread-safe: when \c max_ops is not zero, sharing a - * \c mbedtls_ecp_group structure, or a - * \c mbedtls_pk_context structure wrapping an ECC key, - * between concurrent threads of execution is NOT supported. - * For (D)TLS, that means it's not safe to concurrently run - * two handshakes that use the same private EC key for - * authenticating ourselves; it is however safe to maintain - * multiple simultaneous connections as long as the - * handshakes are not concurrent or don't use the same key. */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); #endif /* MBEDTLS_ECP_EARLY_RETURN */ From 3cade22f96b17862cccdf1cef7e20f8ea03b971b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 09:31:00 +0200 Subject: [PATCH 0037/1100] Switch to restart context internally --- include/mbedtls/ecp.h | 20 ++--- library/ecp.c | 200 +++++++++++++++++++++++++----------------- 2 files changed, 127 insertions(+), 93 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 111ef03bba..59d9d3deae 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -112,16 +112,6 @@ typedef struct } mbedtls_ecp_point; -#if defined(MBEDTLS_ECP_EARLY_RETURN) -/** - * \brief ECP context for resuming multiplication after returning - * \c MBEDTLS_ERR_ECP_IN_PROGRESS - * - * \note Opaque struct - */ -typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; -#endif - /** * \brief ECP group structure * @@ -163,9 +153,6 @@ typedef struct void *t_data; /*!< unused */ mbedtls_ecp_point *T; /*!< pre-computed points for ecp_mul_comb() */ size_t T_size; /*!< number for pre-computed points */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) - mbedtls_ecp_restart_mul_ctx *rsm; /*!< temporary */ -#endif } mbedtls_ecp_group; @@ -185,6 +172,13 @@ typedef struct mbedtls_ecp_keypair; #if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief Internal restart context for multiplication + * + * \note Opaque struct + */ +typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; + /** * \brief General context for resuming ECC operations */ diff --git a/library/ecp.c b/library/ecp.c index b2c2f53c23..21ce22f857 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -183,9 +183,11 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) /* * Check if we can do the next step */ -static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) +static int ecp_check_budget( const mbedtls_ecp_group *grp, + mbedtls_ecp_restart_ctx *rs_ctx, + unsigned ops ) { - if( grp->rsm != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { /* scale depending on curve size: the chosen reference is 256-bit, * and multiplication is quadratic. Round to the closest integer. */ @@ -195,19 +197,22 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ) ops *= 2; /* avoid infinite loops: always allow first step */ - if( grp->rsm->ops_done != 0 && grp->rsm->ops_done + ops > ecp_max_ops ) + if( rs_ctx->rsm->ops_done != 0 && rs_ctx->rsm->ops_done + ops > ecp_max_ops ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); /* update running count */ - grp->rsm->ops_done += ops; + rs_ctx->rsm->ops_done += ops; } return( 0 ); } -#define ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( ecp_check_budget( grp, ops ) ); +#define ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( ecp_check_budget( grp, rs_ctx, ops ) ); #else -#define ECP_BUDGET( ops ) +#define ECP_BUDGET( ops ) /* no-op */ + +/* We also need that type to make our life simpler for internal functions */ +typedef void mbedtls_ecp_restart_ctx; #endif /* MBEDTLS_ECP_EARLY_RETURN */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -471,11 +476,6 @@ void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ) mbedtls_free( grp->T ); } -#if defined(MBEDTLS_ECP_EARLY_RETURN) - ecp_restart_mul_free( grp->rsm ); - mbedtls_free( grp->rsm ); -#endif - mbedtls_zeroize( grp, sizeof( mbedtls_ecp_group ) ); } @@ -1360,7 +1360,8 @@ static void ecp_comb_recode_core( unsigned char x[], size_t d, */ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point T[], const mbedtls_ecp_point *P, - unsigned char w, size_t d ) + unsigned char w, size_t d, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; unsigned char i; @@ -1368,14 +1369,18 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, const unsigned char T_len = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; +#if !defined(MBEDTLS_ECP_EARLY_RETURN) + (void) rs_ctx; +#endif + #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { - if( grp->rsm->state == ecp_rsm_pre_norm_add ) + if( rs_ctx->rsm->state == ecp_rsm_pre_norm_add ) goto norm_add; - if( grp->rsm->state == ecp_rsm_pre_add ) + if( rs_ctx->rsm->state == ecp_rsm_pre_add ) goto add; - if( grp->rsm->state == ecp_rsm_pre_norm_dbl ) + if( rs_ctx->rsm->state == ecp_rsm_pre_norm_dbl ) goto norm_dbl; } #endif @@ -1387,8 +1392,8 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL && grp->rsm->i != 0 ) - j = grp->rsm->i; + if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->i != 0 ) + j = rs_ctx->rsm->i; else #endif j = 0; @@ -1407,10 +1412,10 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, } #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { - grp->rsm->i = 0; - grp->rsm->state++; + rs_ctx->rsm->i = 0; + rs_ctx->rsm->state++; } #endif @@ -1431,8 +1436,8 @@ norm_dbl: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) - grp->rsm->state++; + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state++; #endif /* @@ -1453,8 +1458,8 @@ add: } #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) - grp->rsm->state++; + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state++; #endif /* @@ -1474,16 +1479,17 @@ norm_add: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) - grp->rsm->state++; + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state++; #endif cleanup: #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && + ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - if( grp->rsm->state == ecp_rsm_init ) - grp->rsm->i = j; + if( rs_ctx->rsm->state == ecp_rsm_init ) + rs_ctx->rsm->i = j; } #endif @@ -1527,7 +1533,8 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R const mbedtls_ecp_point T[], unsigned char t_len, const unsigned char x[], size_t d, int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) + void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; mbedtls_ecp_point Txi; @@ -1535,11 +1542,15 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R mbedtls_ecp_point_init( &Txi ); +#if !defined(MBEDTLS_ECP_EARLY_RETURN) + (void) rs_ctx; +#endif + #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL && grp->rsm->i != 0 ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->i != 0 ) { - /* restore current index (R already pointing to grp->rsm->R) */ - i = grp->rsm->i; + /* restore current index (R already pointing to rs_ctx->rsm->R) */ + i = rs_ctx->rsm->i; } else #endif @@ -1565,18 +1576,18 @@ cleanup: mbedtls_ecp_point_free( &Txi ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { if( ret == 0 ) { - grp->rsm->state++; - grp->rsm->i = 0; + rs_ctx->rsm->state++; + rs_ctx->rsm->i = 0; } else if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { /* was decreased before actually doing it */ - grp->rsm->i = i + 1; - /* no need to save R, already pointing to grp->rsm->R */ + rs_ctx->rsm->i = i + 1; + /* no need to save R, already pointing to rs_ctx->rsm->R */ } } #endif @@ -1641,31 +1652,37 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, unsigned char w, size_t d, int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) + void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; unsigned char parity_trick; unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *RR = R; -#if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) - RR = &grp->rsm->R; +#if !defined(MBEDTLS_ECP_EARLY_RETURN) + (void) rs_ctx; #endif #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm == NULL || grp->rsm->state < ecp_rsm_final_norm ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + RR = &rs_ctx->rsm->R; +#endif + +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx == NULL || rs_ctx->rsm == NULL || + rs_ctx->rsm->state < ecp_rsm_final_norm ) #endif { MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, &parity_trick ) ); MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, pre_len, k, d, - f_rng, p_rng ) ); + f_rng, p_rng, rs_ctx ) ); MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL ) - grp->rsm->state++; + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state++; #endif } @@ -1732,7 +1749,8 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) + void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; unsigned char w, p_eq_g = 0, i; @@ -1740,34 +1758,38 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, unsigned char pre_len = 0, T_ok = 0; mbedtls_ecp_point *T = NULL; +#if !defined(MBEDTLS_ECP_EARLY_RETURN) + (void) rs_ctx; +#endif + #if defined(MBEDTLS_ECP_EARLY_RETURN) /* check for restart with new arguments */ - if( grp->rsm != NULL && - ( mbedtls_mpi_cmp_mpi( m, &grp->rsm->m ) != 0 || - mbedtls_mpi_cmp_mpi( &P->X, &grp->rsm->P.X ) != 0 || - mbedtls_mpi_cmp_mpi( &P->Y, &grp->rsm->P.Y ) != 0 ) ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm != NULL && + ( mbedtls_mpi_cmp_mpi( m, &rs_ctx->rsm->m ) != 0 || + mbedtls_mpi_cmp_mpi( &P->X, &rs_ctx->rsm->P.X ) != 0 || + mbedtls_mpi_cmp_mpi( &P->Y, &rs_ctx->rsm->P.Y ) != 0 ) ) { - ecp_restart_mul_free( grp->rsm ); - mbedtls_free( grp->rsm ); - grp->rsm = NULL; + ecp_restart_mul_free( rs_ctx->rsm ); + mbedtls_free( rs_ctx->rsm ); + rs_ctx->rsm = NULL; } /* set up restart context if needed */ - if( ecp_max_ops != 0 && grp->rsm == NULL ) + if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL ) { - grp->rsm = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_mul_ctx ) ); - if( grp->rsm == NULL ) + rs_ctx->rsm = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_mul_ctx ) ); + if( rs_ctx->rsm == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); - ecp_restart_mul_init( grp->rsm ); + ecp_restart_mul_init( rs_ctx->rsm ); - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &grp->rsm->m, m ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &grp->rsm->P, P ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &rs_ctx->rsm->m, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &rs_ctx->rsm->P, P ) ); } /* reset ops count for this call */ - if( grp->rsm != NULL ) - grp->rsm->ops_done = 0; + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->ops_done = 0; #endif /* Is P the base point ? */ @@ -1792,14 +1814,14 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #if defined(MBEDTLS_ECP_EARLY_RETURN) /* Pre-computed table: do we have one in progress? complete? */ - if( grp->rsm != NULL && grp->rsm->T != NULL && T == NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL && T == NULL ) { /* transfer ownership of T from rsm to local function */ - T = grp->rsm->T; - grp->rsm->T = NULL; - grp->rsm->T_size = 0; + T = rs_ctx->rsm->T; + rs_ctx->rsm->T = NULL; + rs_ctx->rsm->T_size = 0; - if( grp->rsm->state >= ecp_rsm_T_done ) + if( rs_ctx->rsm->state >= ecp_rsm_T_done ) T_ok = 1; } #endif @@ -1818,7 +1840,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Compute table (or finish computing it) if not done already */ if( !T_ok ) { - MBEDTLS_MPI_CHK( ecp_precompute_comb( grp, T, P, w, d ) ); + MBEDTLS_MPI_CHK( ecp_precompute_comb( grp, T, P, w, d, rs_ctx ) ); if( p_eq_g ) { @@ -1831,7 +1853,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Actual comb multiplication using precomputed points */ MBEDTLS_MPI_CHK( ecp_mul_comb_after_precomp( grp, R, m, T, pre_len, w, d, - f_rng, p_rng ) ); + f_rng, p_rng, rs_ctx ) ); cleanup: @@ -1841,11 +1863,11 @@ cleanup: /* does T belong to the restart context? */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) { /* transfer ownership of T from local function to rsm */ - grp->rsm->T_size = pre_len; - grp->rsm->T = T; + rs_ctx->rsm->T_size = pre_len; + rs_ctx->rsm->T = T; T = NULL; } #endif @@ -1868,10 +1890,10 @@ cleanup: /* clear restart context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( grp->rsm != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { - ecp_restart_mul_free( grp->rsm ); - mbedtls_free( grp->rsm ); - grp->rsm = NULL; + if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + ecp_restart_mul_free( rs_ctx->rsm ); + mbedtls_free( rs_ctx->rsm ); + rs_ctx->rsm = NULL; } #endif @@ -2117,7 +2139,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(ECP_SHORTWEIERSTRASS) if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) - ret = ecp_mul_comb( grp, R, m, P, f_rng, p_rng ); + ret = ecp_mul_comb( grp, R, m, P, f_rng, p_rng, NULL ); #endif #if defined(MBEDTLS_ECP_INTERNAL_ALT) @@ -2141,8 +2163,26 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ) { - (void) rs_ctx; /* cheating for now */ - return( mbedtls_ecp_mul( grp, R, m, P, f_rng, p_rng ) ); + /* temporary code duplication with non-restartable version */ + int ret; + + /* Common sanity checks */ + if( mbedtls_mpi_cmp_int( &P->Z, 1 ) != 0 ) + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + + if( ( ret = mbedtls_ecp_check_privkey( grp, m ) ) != 0 || + ( ret = mbedtls_ecp_check_pubkey( grp, P ) ) != 0 ) + return( ret ); + +#if defined(ECP_MONTGOMERY) + if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) + return( ecp_mul_mxz( grp, R, m, P, f_rng, p_rng ) ); +#endif +#if defined(ECP_SHORTWEIERSTRASS) + if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) + return( ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ) ); +#endif + return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); } #endif From 8467e6848d9137abc175c54456d279240f6c4318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 09:47:06 +0200 Subject: [PATCH 0038/1100] Stop checking for argument change This was intended to detect aborted operations, but now that case is handled by the caller freeing the restart context. Also, as the internal sub-context is managed by the callee, no need for the caller to free/reset the restart context between successful calls. --- include/mbedtls/ecp.h | 14 ++++++-------- library/ecp.c | 18 ------------------ tests/suites/test_suite_ecp.function | 3 --- 3 files changed, 6 insertions(+), 29 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 59d9d3deae..d9e62f0796 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -263,9 +263,10 @@ typedef struct * * If more operations are needed to complete a computation, * MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the - * function performing the computation. That function will - * then need to be called again with the same arguments until - * it returns 0 or an other error code. + * function performing the computation. It is then the + * caller's responsibility to either call again with the same + * arguments until it returns 0 or an error code; or to free + * the restart context if the operation is to be aborted. * * This only affects functions that accept a pointer to a * \c mbedtls_ecp_restart_ctx as an argument, and only works @@ -615,14 +616,11 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \param P Point to multiply * \param f_rng RNG function (see notes) * \param p_rng RNG parameter - * \param rs_ctx Restart context - must be non-NULL to enable early-return + * \param rs_ctx Restart context * * \return See \c mbedtls_ecp_mul(), or * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of - * operations was reached (see \c mbedtls_ecp_set_max_ops()), - * indicating the function should be called again with the - * exact same arguments. - * + * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, diff --git a/library/ecp.c b/library/ecp.c index 21ce22f857..fcc3ae0774 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -105,8 +105,6 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) */ struct mbedtls_ecp_restart_mul { unsigned ops_done; /* number of operations done this time */ - mbedtls_mpi m; /* saved argument: scalar */ - mbedtls_ecp_point P; /* saved argument: point */ mbedtls_ecp_point R; /* current intermediate result */ size_t i; /* current index in various loops, 0 outside */ mbedtls_ecp_point *T; /* table for precomputed points */ @@ -139,8 +137,6 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) if( ctx == NULL ) return; - mbedtls_mpi_free( &ctx->m ); - mbedtls_ecp_point_free( &ctx->P ); mbedtls_ecp_point_free( &ctx->R ); if( ctx->T != NULL ) { @@ -1763,17 +1759,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(MBEDTLS_ECP_EARLY_RETURN) - /* check for restart with new arguments */ - if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm != NULL && - ( mbedtls_mpi_cmp_mpi( m, &rs_ctx->rsm->m ) != 0 || - mbedtls_mpi_cmp_mpi( &P->X, &rs_ctx->rsm->P.X ) != 0 || - mbedtls_mpi_cmp_mpi( &P->Y, &rs_ctx->rsm->P.Y ) != 0 ) ) - { - ecp_restart_mul_free( rs_ctx->rsm ); - mbedtls_free( rs_ctx->rsm ); - rs_ctx->rsm = NULL; - } - /* set up restart context if needed */ if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL ) { @@ -1782,9 +1767,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); ecp_restart_mul_init( rs_ctx->rsm ); - - MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &rs_ctx->rsm->m, m ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &rs_ctx->rsm->P, P ) ); } /* reset ops count for this call */ diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 195146c543..23905cef9e 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -116,9 +116,6 @@ void ecp_test_vect_restart( int id, TEST_ASSERT( cnt_restarts >= min_restarts ); TEST_ASSERT( cnt_restarts <= max_restarts ); - /* Prepare context for new operation */ - mbedtls_ecp_restart_free( &ctx ); - /* Non-base point case */ cnt_restarts = 0; do { From 646393bb1e6b4d30a8119eea28ae520af5e2b7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 10:03:45 +0200 Subject: [PATCH 0039/1100] Move ops count to top-level context When a restartable function calls another restartable function, the current ops_count needs to be shared to avoid either doing too many operations or returning IN_PROGRESS uselessly. So it needs to be in the top-level context rather than a specific sub-context. --- include/mbedtls/ecp.h | 3 ++- library/ecp.c | 15 ++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index d9e62f0796..9193b77b9a 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -184,7 +184,8 @@ typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; */ typedef struct { - mbedtls_ecp_restart_mul_ctx *rsm; /*!< restart context for ecp_mul() */ + unsigned ops_done; /*!< current ops count */ + mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ } mbedtls_ecp_restart_ctx; #endif /* MBEDTLS_ECP_EARLY_RETURN */ diff --git a/library/ecp.c b/library/ecp.c index fcc3ae0774..ecc18152d9 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -104,7 +104,6 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) * Restart context type for interrupted operations */ struct mbedtls_ecp_restart_mul { - unsigned ops_done; /* number of operations done this time */ mbedtls_ecp_point R; /* current intermediate result */ size_t i; /* current index in various loops, 0 outside */ mbedtls_ecp_point *T; /* table for precomputed points */ @@ -164,6 +163,8 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) if( ctx == NULL ) return; + ctx->ops_done = 0; + ecp_restart_mul_free( ctx->rsm ); mbedtls_free( ctx->rsm ); ctx->rsm = NULL; @@ -183,7 +184,7 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, mbedtls_ecp_restart_ctx *rs_ctx, unsigned ops ) { - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + if( rs_ctx != NULL && ecp_max_ops != 0 ) { /* scale depending on curve size: the chosen reference is 256-bit, * and multiplication is quadratic. Round to the closest integer. */ @@ -193,11 +194,11 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, ops *= 2; /* avoid infinite loops: always allow first step */ - if( rs_ctx->rsm->ops_done != 0 && rs_ctx->rsm->ops_done + ops > ecp_max_ops ) + if( rs_ctx->ops_done != 0 && rs_ctx->ops_done + ops > ecp_max_ops ) return( MBEDTLS_ERR_ECP_IN_PROGRESS ); /* update running count */ - rs_ctx->rsm->ops_done += ops; + rs_ctx->ops_done += ops; } return( 0 ); @@ -1759,7 +1760,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(MBEDTLS_ECP_EARLY_RETURN) - /* set up restart context if needed */ + /* set up our own sub-context if needed */ if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL ) { rs_ctx->rsm = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_mul_ctx ) ); @@ -1770,8 +1771,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } /* reset ops count for this call */ - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->ops_done = 0; + if( rs_ctx != NULL ) + rs_ctx->ops_done = 0; #endif /* Is P the base point ? */ From 884569cdb40b58fa98d375deba55ed38431d2ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 10:10:59 +0200 Subject: [PATCH 0040/1100] Avoid code duplication in ecp_mul() --- library/ecp.c | 42 ++++++++++++------------------------------ 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index ecc18152d9..3df9d76348 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2089,11 +2089,15 @@ cleanup: #endif /* ECP_MONTGOMERY */ /* - * Multiplication R = m * P + * Restartable multiplication R = m * P */ -int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, +#if !defined(MBEDTLS_ECP_EARLY_RETURN) +static +#endif +int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; #if defined(MBEDTLS_ECP_INTERNAL_ALT) @@ -2122,7 +2126,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(ECP_SHORTWEIERSTRASS) if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) - ret = ecp_mul_comb( grp, R, m, P, f_rng, p_rng, NULL ); + ret = ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ); #endif #if defined(MBEDTLS_ECP_INTERNAL_ALT) @@ -2137,37 +2141,15 @@ cleanup: return( ret ); } -#if defined(MBEDTLS_ECP_EARLY_RETURN) /* - * Restartable multiplication R = m * P + * Multiplication R = m * P */ -int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, +int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - mbedtls_ecp_restart_ctx *rs_ctx ) + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - /* temporary code duplication with non-restartable version */ - int ret; - - /* Common sanity checks */ - if( mbedtls_mpi_cmp_int( &P->Z, 1 ) != 0 ) - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - - if( ( ret = mbedtls_ecp_check_privkey( grp, m ) ) != 0 || - ( ret = mbedtls_ecp_check_pubkey( grp, P ) ) != 0 ) - return( ret ); - -#if defined(ECP_MONTGOMERY) - if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) - return( ecp_mul_mxz( grp, R, m, P, f_rng, p_rng ) ); -#endif -#if defined(ECP_SHORTWEIERSTRASS) - if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) - return( ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ) ); -#endif - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + return( mbedtls_ecp_mul_restartable( grp, R, m, P, f_rng, p_rng, NULL ) ); } -#endif #if defined(ECP_SHORTWEIERSTRASS) /* From 53fbd63eb44a3ce09a7972b571ab6ce68023e461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 10:22:22 +0200 Subject: [PATCH 0041/1100] Remove redundant check Checked by check_pubkey(), called 2 lines later. --- library/ecp.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 3df9d76348..673b54705e 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2105,9 +2105,6 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif /* Common sanity checks */ - if( mbedtls_mpi_cmp_int( &P->Z, 1 ) != 0 ) - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - if( ( ret = mbedtls_ecp_check_privkey( grp, m ) ) != 0 || ( ret = mbedtls_ecp_check_pubkey( grp, P ) ) != 0 ) return( ret ); From 3a256128d696322497f69f81b866d4fe75164ba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 11:20:26 +0200 Subject: [PATCH 0042/1100] Reset ops_done at the right time This should only be done in the top-level function. Also, we need to know if we indeed are the top-level function or not: for example, when mbedtls_ecp_muladd() calls mbedtls_ecp_mul(), the later should not reset ops_done. This is handled by the "depth" parameter in the restart context. --- include/mbedtls/ecp.h | 1 + library/ecp.c | 35 ++++++++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 9193b77b9a..7d0abc0320 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -185,6 +185,7 @@ typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; typedef struct { unsigned ops_done; /*!< current ops count */ + unsigned depth; /*!< call depth (0 = top-level) */ mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ } mbedtls_ecp_restart_ctx; #endif /* MBEDTLS_ECP_EARLY_RETURN */ diff --git a/library/ecp.c b/library/ecp.c index 673b54705e..2f6c1e8f9f 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -164,6 +164,7 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) return; ctx->ops_done = 0; + ctx->depth = 0; ecp_restart_mul_free( ctx->rsm ); mbedtls_free( ctx->rsm ); @@ -1769,10 +1770,6 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, ecp_restart_mul_init( rs_ctx->rsm ); } - - /* reset ops count for this call */ - if( rs_ctx != NULL ) - rs_ctx->ops_done = 0; #endif /* Is P the base point ? */ @@ -2104,10 +2101,11 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, char is_grp_capable = 0; #endif - /* Common sanity checks */ - if( ( ret = mbedtls_ecp_check_privkey( grp, m ) ) != 0 || - ( ret = mbedtls_ecp_check_pubkey( grp, P ) ) != 0 ) - return( ret ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + /* reset ops count for this call if top-level */ + if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) + rs_ctx->ops_done = 0; +#endif #if defined(MBEDTLS_ECP_INTERNAL_ALT) if ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) @@ -2116,25 +2114,36 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, } #endif /* MBEDTLS_ECP_INTERNAL_ALT */ + + /* Common sanity checks */ + MBEDTLS_MPI_CHK( mbedtls_ecp_check_privkey( grp, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, P ) ); + + ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; #if defined(ECP_MONTGOMERY) if( ecp_get_type( grp ) == ECP_TYPE_MONTGOMERY ) - ret = ecp_mul_mxz( grp, R, m, P, f_rng, p_rng ); - + MBEDTLS_MPI_CHK( ecp_mul_mxz( grp, R, m, P, f_rng, p_rng ) ); #endif #if defined(ECP_SHORTWEIERSTRASS) if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) - ret = ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ); - + MBEDTLS_MPI_CHK( ecp_mul_comb( grp, R, m, P, f_rng, p_rng, rs_ctx ) ); #endif -#if defined(MBEDTLS_ECP_INTERNAL_ALT) + cleanup: +#if defined(MBEDTLS_ECP_INTERNAL_ALT) if ( is_grp_capable ) { mbedtls_internal_ecp_free( grp ); } #endif /* MBEDTLS_ECP_INTERNAL_ALT */ + +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx != NULL ) + rs_ctx->depth--; +#endif + return( ret ); } From a08cd1a77fa03865db46c0068ad2dc270a329a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 11:29:43 +0200 Subject: [PATCH 0043/1100] Avoid re-checking argument on restart --- library/ecp.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 2f6c1e8f9f..4e637d7320 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2115,9 +2115,19 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif /* MBEDTLS_ECP_INTERNAL_ALT */ - /* Common sanity checks */ - MBEDTLS_MPI_CHK( mbedtls_ecp_check_privkey( grp, m ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, P ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) && defined(ECP_SHORTWEIERSTRASS) + /* skip argument check when restarting */ + if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS || + rs_ctx == NULL || rs_ctx->rsm == NULL ) +#endif + { + /* Common sanity checks */ + MBEDTLS_MPI_CHK( mbedtls_ecp_check_privkey( grp, m ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, P ) ); + + /* check_privkey is 0M and check_pubkey is 3M */ + ECP_BUDGET( 3 ); + } ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; #if defined(ECP_MONTGOMERY) From 54dd6527f0ffe980aa5c0eb03bbb0ed9d8c01ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 13:36:18 +0200 Subject: [PATCH 0044/1100] Introduce muladd_restartable() and its sub-context Only the administrative parts for now, not actually restartable so far. --- include/mbedtls/ecp.h | 35 +++++++++++ library/ecp.c | 94 +++++++++++++++++++++++++--- tests/suites/test_suite_ecp.data | 12 ++-- tests/suites/test_suite_ecp.function | 71 +++++++++++++++++++++ 4 files changed, 199 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 7d0abc0320..e2c605b0d4 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -179,6 +179,13 @@ mbedtls_ecp_keypair; */ typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; +/** + * \brief Internal restart context for ecp_muladd() + * + * \note Opaque struct + */ +typedef struct mbedtls_ecp_restart_muladd mbedtls_ecp_restart_muladd_ctx; + /** * \brief General context for resuming ECC operations */ @@ -187,6 +194,7 @@ typedef struct unsigned ops_done; /*!< current ops count */ unsigned depth; /*!< call depth (0 = top-level) */ mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ + mbedtls_ecp_restart_muladd_ctx *ma; /*!< ecp_muladd() sub-context */ } mbedtls_ecp_restart_ctx; #endif /* MBEDTLS_ECP_EARLY_RETURN */ @@ -654,6 +662,33 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) +/** + * \brief Restartable version of \c mbedtls_ecp_muladd() + * + * \note Performs the same job as \c mbedtls_ecp_muladd(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param grp ECP group + * \param R Destination point + * \param m Integer by which to multiply P + * \param P Point to multiply by m + * \param n Integer by which to multiply Q + * \param Q Point to be multiplied by n + * \param rs_ctx Restart context + * + * \return See \c mbedtls_ecp_muladd(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_ecp_muladd_restartable( + mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + const mbedtls_mpi *n, const mbedtls_ecp_point *Q, + mbedtls_ecp_restart_ctx *rs_ctx ); +#endif + /** * \brief Check that a point is a valid public key on this curve * diff --git a/library/ecp.c b/library/ecp.c index 4e637d7320..493346006f 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -101,9 +101,10 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) } /* - * Restart context type for interrupted operations + * Restart sub-context for ecp_mul_comb() */ -struct mbedtls_ecp_restart_mul { +struct mbedtls_ecp_restart_mul +{ mbedtls_ecp_point R; /* current intermediate result */ size_t i; /* current index in various loops, 0 outside */ mbedtls_ecp_point *T; /* table for precomputed points */ @@ -119,7 +120,7 @@ struct mbedtls_ecp_restart_mul { }; /* - * Init restart_mul context + * Init restart_mul sub-context */ static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) { @@ -127,7 +128,7 @@ static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) } /* - * Free the components of a restart_mul context + * Free the components of a restart_mul sub-context */ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) { @@ -147,6 +148,33 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); } +/* + * Restart context for ecp_muladd() + */ +struct mbedtls_ecp_restart_muladd +{ + int state; /* dummy for now */ +}; + +/* + * Init restart_muladd sub-context + */ +static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx ) +{ + memset( ctx, 0, sizeof( *ctx ) ); +} + +/* + * Free the components of a restart_muladd sub-context + */ +static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + memset( ctx, 0, sizeof( *ctx ) ); +} + /* * Initialize a restart context */ @@ -1868,9 +1896,9 @@ cleanup: if( ret != 0 ) mbedtls_ecp_point_free( R ); - /* clear restart context when not in progress (done or error) */ + /* clear our sub-context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_EARLY_RETURN) - if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_mul_free( rs_ctx->rsm ); mbedtls_free( rs_ctx->rsm ); rs_ctx->rsm = NULL; @@ -2248,12 +2276,17 @@ cleanup: } /* - * Linear combination + * Restartable linear combination * NOT constant-time */ -int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, +#if !defined(MBEDTLS_ECP_EARLY_RETURN) +static +#endif +int mbedtls_ecp_muladd_restartable( + mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, - const mbedtls_mpi *n, const mbedtls_ecp_point *Q ) + const mbedtls_mpi *n, const mbedtls_ecp_point *Q, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; mbedtls_ecp_point mP; @@ -2261,9 +2294,29 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, char is_grp_capable = 0; #endif +#if !defined(MBEDTLS_ECP_EARLY_RETURN) + (void) rs_ctx; +#endif + if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS ) return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + /* reset ops count for this call if top-level */ + if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) + rs_ctx->ops_done = 0; + + /* set up our own sub-context if needed */ + if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->ma == NULL ) + { + rs_ctx->ma = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_muladd_ctx ) ); + if( rs_ctx->ma == NULL ) + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); + + ecp_restart_muladd_init( rs_ctx->ma ); + } +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + mbedtls_ecp_point_init( &mP ); MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, &mP, m, P ) ); @@ -2290,9 +2343,32 @@ cleanup: #endif /* MBEDTLS_ECP_INTERNAL_ALT */ mbedtls_ecp_point_free( &mP ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + /* clear our sub-context when not in progress (done or error) */ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + ecp_restart_muladd_free( rs_ctx->ma ); + mbedtls_free( rs_ctx->ma ); + rs_ctx->ma = NULL; + } + + + if( rs_ctx != NULL ) + rs_ctx->depth--; +#endif /* MBEDTLS_ECP_EARLY_RETURN */ + return( ret ); } +/* + * Linear combination + * NOT constant-time + */ +int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + const mbedtls_mpi *n, const mbedtls_ecp_point *Q ) +{ + return( mbedtls_ecp_muladd_restartable( grp, R, m, P, n, Q, NULL ) ); +} #if defined(ECP_MONTGOMERY) /* diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index 82ffec57b8..9d25d22615 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -345,18 +345,22 @@ ecp_test_vect:MBEDTLS_ECP_DP_SECP256K1:"923C6D4756CD940CD1E13A359F6E0F0698791938 ECP selftest ecp_selftest: -ECP early return secp256r1 restart disabled +ECP early return mul secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":0:0:0 -ECP early return secp256r1 restart max_ops=1 +ECP early return mul secp256r1 restart max_ops=1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":1:1:5000 -ECP early return secp256r1 restart max_ops=10000 +ECP early return mul secp256r1 restart max_ops=10000 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":10000:0:0 -ECP early return secp256r1 restart max_ops=250 +ECP early return mul secp256r1 restart max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":250:2:32 + +ECP early return muladd secp256r1 restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":0:0:0 diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 23905cef9e..659830e5d1 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -145,6 +145,77 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_EARLY_RETURN */ +void ecp_muladd_restart( int id, char *xR_str, char *yR_str, + char *u1_str, char *u2_str, + char *xQ_str, char *yQ_str, + int max_ops, int min_restarts, int max_restarts ) +{ + /* + * Compute R = u1 * G + u2 * Q + * (test vectors mostly taken from ECDSA intermediate results) + * + * See comments at the top of ecp_test_vect_restart() + */ + mbedtls_ecp_restart_ctx ctx; + mbedtls_ecp_group grp; + mbedtls_ecp_point R, Q; + mbedtls_mpi u1, u2, xR, yR; + int cnt_restarts; + int ret; + + mbedtls_ecp_restart_init( &ctx ); + mbedtls_ecp_group_init( &grp ); + mbedtls_ecp_point_init( &R ); + mbedtls_ecp_point_init( &Q ); + mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); + mbedtls_mpi_init( &xR ); mbedtls_mpi_init( &yR ); + + TEST_ASSERT( mbedtls_ecp_group_load( &grp, id ) == 0 ); + + TEST_ASSERT( mbedtls_mpi_read_string( &u1, 16, u1_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &u2, 16, u2_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &xR, 16, xR_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &yR, 16, yR_str ) == 0 ); + + TEST_ASSERT( mbedtls_mpi_read_string( &Q.X, 16, xQ_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &Q.Y, 16, yQ_str ) == 0 ); + TEST_ASSERT( mbedtls_mpi_lset( &Q.Z, 1 ) == 0 ); + + mbedtls_ecp_set_max_ops( (unsigned) max_ops ); + + cnt_restarts = 0; + do { + ret = mbedtls_ecp_muladd_restartable( &grp, &R, + &u1, &grp.G, &u2, &Q, &ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + cnt_restarts++; + } + while( ret != 0 ); + + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xR ) == 0 ); + TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yR ) == 0 ); + + TEST_ASSERT( cnt_restarts >= min_restarts ); + TEST_ASSERT( cnt_restarts <= max_restarts ); + + /* Do we leak memory when aborting? */ + ret = mbedtls_ecp_muladd_restartable( &grp, &R, + &u1, &grp.G, &u2, &Q, &ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + +exit: + mbedtls_ecp_restart_free( &ctx ); + mbedtls_ecp_group_free( &grp ); + mbedtls_ecp_point_free( &R ); + mbedtls_ecp_point_free( &Q ); + mbedtls_mpi_free( &u1 ); mbedtls_mpi_free( &u2 ); + mbedtls_mpi_free( &xR ); mbedtls_mpi_free( &yR ); +} +/* END_CASE */ + /* BEGIN_CASE */ void ecp_test_vect( int id, char *dA_str, char *xA_str, char *yA_str, char *dB_str, char *xB_str, char *yB_str, char *xZ_str, From 1631d63d0c7d31b3e68246c3b9713c37ae060b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 14:48:56 +0200 Subject: [PATCH 0045/1100] Make muladd_restartable() actually restartable --- library/ecp.c | 89 ++++++++++++++++++++++++++------ tests/suites/test_suite_ecp.data | 12 +++++ 2 files changed, 85 insertions(+), 16 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 493346006f..f520b9caf6 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -153,7 +153,14 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) */ struct mbedtls_ecp_restart_muladd { - int state; /* dummy for now */ + mbedtls_ecp_point mP; /* mP value */ + mbedtls_ecp_point R; /* R intermediate result */ + enum { /* what should we do next? */ + ecp_rsma_mul1 = 0, /* first multiplication */ + ecp_rsma_mul2, /* second multiplication */ + ecp_rsma_add, /* addition */ + ecp_rsma_norm, /* normalization */ + } state; }; /* @@ -172,6 +179,9 @@ static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) if( ctx == NULL ) return; + mbedtls_ecp_point_free( &ctx->mP ); + mbedtls_ecp_point_free( &ctx->R ); + memset( ctx, 0, sizeof( *ctx ) ); } @@ -197,6 +207,10 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) ecp_restart_mul_free( ctx->rsm ); mbedtls_free( ctx->rsm ); ctx->rsm = NULL; + + ecp_restart_muladd_free( ctx->ma ); + mbedtls_free( ctx->ma ); + ctx->ma = NULL; } /* @@ -2252,7 +2266,8 @@ cleanup: static int mbedtls_ecp_mul_shortcuts( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, - const mbedtls_ecp_point *P ) + const mbedtls_ecp_point *P, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; @@ -2268,7 +2283,8 @@ static int mbedtls_ecp_mul_shortcuts( mbedtls_ecp_group *grp, } else { - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, R, m, P, NULL, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, R, m, P, + NULL, NULL, rs_ctx ) ); } cleanup: @@ -2290,6 +2306,8 @@ int mbedtls_ecp_muladd_restartable( { int ret; mbedtls_ecp_point mP; + mbedtls_ecp_point *pmP = &mP; + mbedtls_ecp_point *pR = R; #if defined(MBEDTLS_ECP_INTERNAL_ALT) char is_grp_capable = 0; #endif @@ -2301,6 +2319,16 @@ int mbedtls_ecp_muladd_restartable( if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS ) return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); + mbedtls_ecp_point_init( &mP ); + +#if defined(MBEDTLS_ECP_INTERNAL_ALT) + if ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) + { + MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); + } + +#endif /* MBEDTLS_ECP_INTERNAL_ALT */ + #if defined(MBEDTLS_ECP_EARLY_RETURN) /* reset ops count for this call if top-level */ if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) @@ -2315,25 +2343,54 @@ int mbedtls_ecp_muladd_restartable( ecp_restart_muladd_init( rs_ctx->ma ); } + + if( rs_ctx != NULL && rs_ctx->ma != NULL ) + { + /* redirect intermediate results to restart context */ + pmP = &rs_ctx->ma->mP; + pR = &rs_ctx->ma->R; + + /* jump to next operation */ + if( rs_ctx->ma->state == ecp_rsma_mul2 ) + goto mul2; + if( rs_ctx->ma->state == ecp_rsma_add ) + goto add; + if( rs_ctx->ma->state == ecp_rsma_norm ) + goto norm; + } #endif /* MBEDTLS_ECP_EARLY_RETURN */ - mbedtls_ecp_point_init( &mP ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pmP, m, P, rs_ctx ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx != NULL && rs_ctx->ma != NULL ) + rs_ctx->ma->state++; - MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, &mP, m, P ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, R, n, Q ) ); +mul2: +#endif + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pR, n, Q, rs_ctx ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx != NULL && rs_ctx->ma != NULL ) + rs_ctx->ma->state++; -#if defined(MBEDTLS_ECP_INTERNAL_ALT) - if ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) - { - MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); - } +add: +#endif + ECP_BUDGET( ECP_OPS_ADD ); + MBEDTLS_MPI_CHK( ecp_add_mixed( grp, pR, pmP, pR ) ); +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx != NULL && rs_ctx->ma != NULL ) + rs_ctx->ma->state++; -#endif /* MBEDTLS_ECP_INTERNAL_ALT */ - MBEDTLS_MPI_CHK( ecp_add_mixed( grp, R, &mP, R ) ); - MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, R ) ); +norm: +#endif + ECP_BUDGET( ECP_OPS_INV ); + MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, pR ) ); + +#if defined(MBEDTLS_ECP_EARLY_RETURN) + if( rs_ctx != NULL && rs_ctx->ma != NULL ) + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, pR ) ); +#endif cleanup: - #if defined(MBEDTLS_ECP_INTERNAL_ALT) if ( is_grp_capable ) { @@ -2341,6 +2398,7 @@ cleanup: } #endif /* MBEDTLS_ECP_INTERNAL_ALT */ + mbedtls_ecp_point_free( &mP ); #if defined(MBEDTLS_ECP_EARLY_RETURN) @@ -2351,7 +2409,6 @@ cleanup: rs_ctx->ma = NULL; } - if( rs_ctx != NULL ) rs_ctx->depth--; #endif /* MBEDTLS_ECP_EARLY_RETURN */ diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index 9d25d22615..f76f93b66e 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -364,3 +364,15 @@ ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A128499 ECP early return muladd secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":0:0:0 + +ECP early return muladd secp256r1 restart max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":1:1:10000 + +ECP early return muladd secp256r1 restart max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":10000:0:0 + +ECP early return muladd secp256r1 restart max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":250:4:64 From a7937f99673ecb1040d3b57353581abbb280c104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 15:37:46 +0200 Subject: [PATCH 0046/1100] Add public function generating private keys This will be useful for restartable ECDH and ECDSA. Currently they call mbedtls_ecp_gen_keypair(); one could make that one restartable, but that means adding its own sub-context, while ECDH and ECDSA (will) have their own contexts already, so switching to this saves one extra context. --- include/mbedtls/ecp.h | 16 ++++++++++++++++ library/ecp.c | 34 +++++++++++++++++++++++----------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index e2c605b0d4..1cf3ab119e 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -727,6 +727,22 @@ int mbedtls_ecp_check_pubkey( const mbedtls_ecp_group *grp, const mbedtls_ecp_po */ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, const mbedtls_mpi *d ); +/** + * \brief Generate a private key + * + * \param grp ECP group + * \param d Destination MPI (secret part) + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 if successful, + * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + */ +int mbedtls_ecp_gen_privkey( const mbedtls_ecp_group *grp, + mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + /** * \brief Generate a keypair with configurable base point * diff --git a/library/ecp.c b/library/ecp.c index f520b9caf6..dfc5dd8ddf 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2495,15 +2495,14 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, const mbedtls_mpi * } /* - * Generate a keypair with configurable base point + * Generate a private key */ -int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, - const mbedtls_ecp_point *G, - mbedtls_mpi *d, mbedtls_ecp_point *Q, +int mbedtls_ecp_gen_privkey( const mbedtls_ecp_group *grp, + mbedtls_mpi *d, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - int ret; + int ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; size_t n_size = ( grp->nbits + 7 ) / 8; #if defined(ECP_MONTGOMERY) @@ -2528,8 +2527,8 @@ int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 1, 0 ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_set_bit( d, 2, 0 ) ); } - else #endif /* ECP_MONTGOMERY */ + #if defined(ECP_SHORTWEIERSTRASS) if( ecp_get_type( grp ) == ECP_TYPE_SHORT_WEIERSTRASS ) { @@ -2565,15 +2564,28 @@ int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, while( mbedtls_mpi_cmp_int( d, 1 ) < 0 || mbedtls_mpi_cmp_mpi( d, &grp->N ) >= 0 ); } - else #endif /* ECP_SHORTWEIERSTRASS */ - return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); cleanup: - if( ret != 0 ) - return( ret ); + return( ret ); +} - return( mbedtls_ecp_mul( grp, Q, d, G, f_rng, p_rng ) ); +/* + * Generate a keypair with configurable base point + */ +int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, + const mbedtls_ecp_point *G, + mbedtls_mpi *d, mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + int ret; + + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, d, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, Q, d, G, f_rng, p_rng ) ); + +cleanup: + return( ret ); } /* From 411079fc34a20f3db58f3cf0060e3d6537a02582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 15:41:08 +0200 Subject: [PATCH 0047/1100] Rm obsolete comment Refers to ecp_mul() while we're now calling ecp_muladd(). Wrap long lines while at it. --- library/ecdsa.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 4156f3c3c4..6873757a01 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -205,7 +205,8 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, mbedtls_ecp_point R; mbedtls_ecp_point_init( &R ); - mbedtls_mpi_init( &e ); mbedtls_mpi_init( &s_inv ); mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); + mbedtls_mpi_init( &e ); mbedtls_mpi_init( &s_inv ); + mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ if( grp->N.p == NULL ) @@ -244,9 +245,6 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, /* * Step 5: R = u1 G + u2 Q - * - * Since we're not using any secret data, no need to pass a RNG to - * mbedtls_ecp_mul() for countermesures. */ MBEDTLS_MPI_CHK( mbedtls_ecp_muladd( grp, &R, &u1, &grp->G, &u2, Q ) ); @@ -273,7 +271,8 @@ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, cleanup: mbedtls_ecp_point_free( &R ); - mbedtls_mpi_free( &e ); mbedtls_mpi_free( &s_inv ); mbedtls_mpi_free( &u1 ); mbedtls_mpi_free( &u2 ); + mbedtls_mpi_free( &e ); mbedtls_mpi_free( &s_inv ); + mbedtls_mpi_free( &u1 ); mbedtls_mpi_free( &u2 ); return( ret ); } From 4b9c51ef32d04043997de1ffed286d4535974593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 15:50:26 +0200 Subject: [PATCH 0048/1100] Rename EARLY_RETURN -> RESTARTABLE This is more consistent with function and context names. --- include/mbedtls/config.h | 4 +- include/mbedtls/ecp.h | 18 +++--- library/ecp.c | 82 ++++++++++++++-------------- library/version_features.c | 6 +- tests/suites/test_suite_ecp.data | 16 +++--- tests/suites/test_suite_ecp.function | 4 +- 6 files changed, 65 insertions(+), 65 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 9040bb71b1..f4c565ebbd 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -562,7 +562,7 @@ #define MBEDTLS_ECP_NIST_OPTIM /** - * \def MBEDTLS_ECP_EARLY_RETURN + * \def MBEDTLS_ECP_RESTARTABLE * * Enable "non-blocking" ECC operations that can return early and be resumed. * @@ -574,7 +574,7 @@ * * Comment this macro to disable non-blocking ECC computations. */ -#define MBEDTLS_ECP_EARLY_RETURN +#define MBEDTLS_ECP_RESTARTABLE /** * \def MBEDTLS_ECDSA_DETERMINISTIC diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 1cf3ab119e..325392b023 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -171,7 +171,7 @@ typedef struct } mbedtls_ecp_keypair; -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Internal restart context for multiplication * @@ -196,7 +196,7 @@ typedef struct mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ mbedtls_ecp_restart_muladd_ctx *ma; /*!< ecp_muladd() sub-context */ } mbedtls_ecp_restart_ctx; -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \name SECTION: Module settings @@ -267,7 +267,7 @@ typedef struct */ #define MBEDTLS_ECP_TLS_NAMED_CURVE 3 /**< ECCurveType's named_curve */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Set the maximum number of basic operations done in a row. * @@ -307,7 +307,7 @@ typedef struct * \note This setting is currently ignored by Curve25519 */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \brief Get the list of supported curves in order of preferrence @@ -383,7 +383,7 @@ void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ); */ void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Initialize a restart context */ @@ -393,7 +393,7 @@ void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ); * \brief Free the components of a restart context */ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ); -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \brief Copy the contents of point Q into P @@ -612,7 +612,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Restartable version of \c mbedtls_ecp_mul() * @@ -636,7 +636,7 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ); -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \brief Multiplication and addition of two points by integers: @@ -662,7 +662,7 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Restartable version of \c mbedtls_ecp_muladd() * diff --git a/library/ecp.c b/library/ecp.c index dfc5dd8ddf..03b1476a4c 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -86,7 +86,7 @@ static unsigned long add_count, dbl_count, mul_count; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* * Maximum number of "basic operations" to be done in a row. */ @@ -253,7 +253,7 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, /* We also need that type to make our life simpler for internal functions */ typedef void mbedtls_ecp_restart_ctx; -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) || \ @@ -1409,11 +1409,11 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, const unsigned char T_len = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { if( rs_ctx->rsm->state == ecp_rsm_pre_norm_add ) @@ -1431,7 +1431,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, */ MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->i != 0 ) j = rs_ctx->rsm->i; else @@ -1451,7 +1451,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); } -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { rs_ctx->rsm->i = 0; @@ -1463,7 +1463,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * Normalize current elements in T. As T has holes, * use an auxiliary array of pointers to elements in T. */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) norm_dbl: #endif @@ -1475,7 +1475,7 @@ norm_dbl: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state++; #endif @@ -1484,7 +1484,7 @@ norm_dbl: * Compute the remaining ones using the minimal number of additions * Be careful to update T[2^l] only after using it! */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) add: #endif @@ -1497,7 +1497,7 @@ add: MBEDTLS_MPI_CHK( ecp_add_mixed( grp, &T[i + j], &T[j], &T[i] ) ); } -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state++; #endif @@ -1507,7 +1507,7 @@ add: * we still need the auxiliary array for homogeneity with last time. * Also, skip T[0] which is already normalised, being a copy of P. */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) norm_add: #endif @@ -1518,13 +1518,13 @@ norm_add: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state++; #endif cleanup: -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { @@ -1582,11 +1582,11 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R mbedtls_ecp_point_init( &Txi ); -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->i != 0 ) { /* restore current index (R already pointing to rs_ctx->rsm->R) */ @@ -1615,7 +1615,7 @@ cleanup: mbedtls_ecp_point_free( &Txi ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { if( ret == 0 ) @@ -1700,16 +1700,16 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *RR = R; -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) RR = &rs_ctx->rsm->R; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx == NULL || rs_ctx->rsm == NULL || rs_ctx->rsm->state < ecp_rsm_final_norm ) #endif @@ -1720,7 +1720,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, f_rng, p_rng, rs_ctx ) ); MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state++; #endif @@ -1729,7 +1729,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, ECP_BUDGET( ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, RR ) ); #endif @@ -1798,11 +1798,11 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, unsigned char pre_len = 0, T_ok = 0; mbedtls_ecp_point *T = NULL; -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* set up our own sub-context if needed */ if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL ) { @@ -1834,7 +1834,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, T_ok = 1; } -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* Pre-computed table: do we have one in progress? complete? */ if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL && T == NULL ) { @@ -1884,7 +1884,7 @@ cleanup: T = NULL; /* does T belong to the restart context? */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) { /* transfer ownership of T from local function to rsm */ @@ -1903,7 +1903,7 @@ cleanup: } /* don't free R while in progress in case R == P */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) #endif /* prevent caller from using invalid value */ @@ -1911,7 +1911,7 @@ cleanup: mbedtls_ecp_point_free( R ); /* clear our sub-context when not in progress (done or error) */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_mul_free( rs_ctx->rsm ); mbedtls_free( rs_ctx->rsm ); @@ -2130,7 +2130,7 @@ cleanup: /* * Restartable multiplication R = m * P */ -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) static #endif int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, @@ -2143,7 +2143,7 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, char is_grp_capable = 0; #endif -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* reset ops count for this call if top-level */ if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) rs_ctx->ops_done = 0; @@ -2157,7 +2157,7 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif /* MBEDTLS_ECP_INTERNAL_ALT */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) && defined(ECP_SHORTWEIERSTRASS) +#if defined(MBEDTLS_ECP_RESTARTABLE) && defined(ECP_SHORTWEIERSTRASS) /* skip argument check when restarting */ if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS || rs_ctx == NULL || rs_ctx->rsm == NULL ) @@ -2191,7 +2191,7 @@ cleanup: #endif /* MBEDTLS_ECP_INTERNAL_ALT */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL ) rs_ctx->depth--; #endif @@ -2295,7 +2295,7 @@ cleanup: * Restartable linear combination * NOT constant-time */ -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) static #endif int mbedtls_ecp_muladd_restartable( @@ -2312,7 +2312,7 @@ int mbedtls_ecp_muladd_restartable( char is_grp_capable = 0; #endif -#if !defined(MBEDTLS_ECP_EARLY_RETURN) +#if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; #endif @@ -2329,7 +2329,7 @@ int mbedtls_ecp_muladd_restartable( #endif /* MBEDTLS_ECP_INTERNAL_ALT */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* reset ops count for this call if top-level */ if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) rs_ctx->ops_done = 0; @@ -2358,17 +2358,17 @@ int mbedtls_ecp_muladd_restartable( if( rs_ctx->ma->state == ecp_rsma_norm ) goto norm; } -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pmP, m, P, rs_ctx ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) rs_ctx->ma->state++; mul2: #endif MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pR, n, Q, rs_ctx ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) rs_ctx->ma->state++; @@ -2376,7 +2376,7 @@ add: #endif ECP_BUDGET( ECP_OPS_ADD ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, pR, pmP, pR ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) rs_ctx->ma->state++; @@ -2385,7 +2385,7 @@ norm: ECP_BUDGET( ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, pR ) ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, pR ) ); #endif @@ -2401,7 +2401,7 @@ cleanup: mbedtls_ecp_point_free( &mP ); -#if defined(MBEDTLS_ECP_EARLY_RETURN) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* clear our sub-context when not in progress (done or error) */ if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_muladd_free( rs_ctx->ma ); @@ -2411,7 +2411,7 @@ cleanup: if( rs_ctx != NULL ) rs_ctx->depth--; -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ return( ret ); } diff --git a/library/version_features.c b/library/version_features.c index 2668eaed59..ec355e1ff0 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -276,9 +276,9 @@ static const char *features[] = { #if defined(MBEDTLS_ECP_NIST_OPTIM) "MBEDTLS_ECP_NIST_OPTIM", #endif /* MBEDTLS_ECP_NIST_OPTIM */ -#if defined(MBEDTLS_ECP_EARLY_RETURN) - "MBEDTLS_ECP_EARLY_RETURN", -#endif /* MBEDTLS_ECP_EARLY_RETURN */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + "MBEDTLS_ECP_RESTARTABLE", +#endif /* MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_ECDSA_DETERMINISTIC) "MBEDTLS_ECDSA_DETERMINISTIC", #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index f76f93b66e..5bb8d024d2 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -345,34 +345,34 @@ ecp_test_vect:MBEDTLS_ECP_DP_SECP256K1:"923C6D4756CD940CD1E13A359F6E0F0698791938 ECP selftest ecp_selftest: -ECP early return mul secp256r1 restart disabled +ECP restartable mul secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":0:0:0 -ECP early return mul secp256r1 restart max_ops=1 +ECP restartable mul secp256r1 max_ops=1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":1:1:5000 -ECP early return mul secp256r1 restart max_ops=10000 +ECP restartable mul secp256r1 max_ops=10000 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":10000:0:0 -ECP early return mul secp256r1 restart max_ops=250 +ECP restartable mul secp256r1 max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":250:2:32 -ECP early return muladd secp256r1 restart disabled +ECP restartable muladd secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":0:0:0 -ECP early return muladd secp256r1 restart max_ops=1 +ECP restartable muladd secp256r1 max_ops=1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":1:1:10000 -ECP early return muladd secp256r1 restart max_ops=10000 +ECP restartable muladd secp256r1 max_ops=10000 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":10000:0:0 -ECP early return muladd secp256r1 restart max_ops=250 +ECP restartable muladd secp256r1 max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":250:4:64 diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 659830e5d1..3ec7caf54f 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -51,7 +51,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_ECP_EARLY_RETURN */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */ void ecp_test_vect_restart( int id, char *dA_str, char *xA_str, char *yA_str, char *dB_str, char *xZ_str, char *yZ_str, @@ -145,7 +145,7 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_ECP_EARLY_RETURN */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */ void ecp_muladd_restart( int id, char *xR_str, char *yR_str, char *u1_str, char *u2_str, char *xQ_str, char *yQ_str, From 0ff17df081cd34394427e47e41c64323571fd109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 15:51:52 +0200 Subject: [PATCH 0049/1100] Fix ECDSA test descriptions The rename script was a bit zealous during the Great Renaming. --- tests/suites/test_suite_ecdsa.data | 60 +++++++++++++++--------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index d9640765ee..c0fab761a2 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -50,7 +50,7 @@ ECDSA write-read random #5 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED ecdsa_write_read_random:MBEDTLS_ECP_DP_SECP521R1 -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p192 sha1 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA1:"sample":"98C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF":"57A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64" @@ -58,7 +58,7 @@ ECDSA deterministic test vector rfc 6979 p192 sha224 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA224:"sample":"A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5":"E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97A" -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p192 sha256 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA256:"sample":"4B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55":"CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85" @@ -66,11 +66,11 @@ ECDSA deterministic test vector rfc 6979 p192 sha384 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA384:"sample":"DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5":"C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5E" -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p192 sha512 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA512:"sample":"4D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B8":"3F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67" -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p192 sha1 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA1:"test":"0F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D":"EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7" @@ -78,7 +78,7 @@ ECDSA deterministic test vector rfc 6979 p192 sha224 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA224:"test":"6945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34":"B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293" -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p192 sha256 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA256:"test":"3A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE":"5662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124F" @@ -86,11 +86,11 @@ ECDSA deterministic test vector rfc 6979 p192 sha384 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA384:"test":"B234B60B4DB75A733E19280A7A6034BD6B1EE88AF5332367":"7994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77A" -ECDSA deterministic test vector rfc 6979 p192 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p192 sha512 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP192R1:"6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4":MBEDTLS_MD_SHA512:"test":"FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739":"74CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p224 sha1 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA1:"sample":"22226F9D40A96E19C4A301CE5B74B115303C0F3A4FD30FC257FB57AC":"66D1CDD83E3AF75605DD6E2FEFF196D30AA7ED7A2EDF7AF475403D69" @@ -98,7 +98,7 @@ ECDSA deterministic test vector rfc 6979 p224 sha224 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA224:"sample":"1CDFE6662DDE1E4A1EC4CDEDF6A1F5A2FB7FBD9145C12113E6ABFD3E":"A6694FD7718A21053F225D3F46197CA699D45006C06F871808F43EBC" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p224 sha256 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA256:"sample":"61AA3DA010E8E8406C656BC477A7A7189895E7E840CDFE8FF42307BA":"BC814050DAB5D23770879494F9E0A680DC1AF7161991BDE692B10101" @@ -106,11 +106,11 @@ ECDSA deterministic test vector rfc 6979 p224 sha384 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA384:"sample":"0B115E5E36F0F9EC81F1325A5952878D745E19D7BB3EABFABA77E953":"830F34CCDFE826CCFDC81EB4129772E20E122348A2BBD889A1B1AF1D" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p224 sha512 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA512:"sample":"074BD1D979D5F32BF958DDC61E4FB4872ADCAFEB2256497CDAC30397":"A4CECA196C3D5A1FF31027B33185DC8EE43F288B21AB342E5D8EB084" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p224 sha1 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA1:"test":"DEAA646EC2AF2EA8AD53ED66B2E2DDAA49A12EFD8356561451F3E21C":"95987796F6CF2062AB8135271DE56AE55366C045F6D9593F53787BD2" @@ -118,7 +118,7 @@ ECDSA deterministic test vector rfc 6979 p224 sha224 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA224:"test":"C441CE8E261DED634E4CF84910E4C5D1D22C5CF3B732BB204DBEF019":"902F42847A63BDC5F6046ADA114953120F99442D76510150F372A3F4" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p224 sha256 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA256:"test":"AD04DDE87B84747A243A631EA47A1BA6D1FAA059149AD2440DE6FBA6":"178D49B1AE90E3D8B629BE3DB5683915F4E8C99FDF6E666CF37ADCFD" @@ -126,11 +126,11 @@ ECDSA deterministic test vector rfc 6979 p224 sha384 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA384:"test":"389B92682E399B26518A95506B52C03BC9379A9DADF3391A21FB0EA4":"414A718ED3249FF6DBC5B50C27F71F01F070944DA22AB1F78F559AAB" -ECDSA deterministic test vector rfc 6979 p224 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p224 sha512 depends_on:MBEDTLS_ECP_DP_SECP224R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP224R1:"F220266E1105BFE3083E03EC7A3A654651F45E37167E88600BF257C1":MBEDTLS_MD_SHA512:"test":"049F050477C5ADD858CAC56208394B5A55BAEBBE887FDF765047C17C":"077EB13E7005929CEFA3CD0403C7CDCC077ADF4E44F3C41B2F60ECFF" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p256 sha1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA1:"sample":"61340C88C3AAEBEB4F6D667F672CA9759A6CCAA9FA8811313039EE4A35471D32":"6D7F147DAC089441BB2E2FE8F7A3FA264B9C475098FDCF6E00D7C996E1B8B7EB" @@ -138,7 +138,7 @@ ECDSA deterministic test vector rfc 6979 p256 sha224 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA224:"sample":"53B2FFF5D1752B2C689DF257C04C40A587FABABB3F6FC2702F1343AF7CA9AA3F":"B9AFB64FDC03DC1A131C7D2386D11E349F070AA432A4ACC918BEA988BF75C74C" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p256 sha256 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"sample":"EFD48B2AACB6A8FD1140DD9CD45E81D69D2C877B56AAF991C34D0EA84EAF3716":"F7CB1C942D657C41D436C7A1B6E29F65F3E900DBB9AFF4064DC4AB2F843ACDA8" @@ -146,11 +146,11 @@ ECDSA deterministic test vector rfc 6979 p256 sha384 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA384:"sample":"0EAFEA039B20E9B42309FB1D89E213057CBF973DC0CFC8F129EDDDC800EF7719":"4861F0491E6998B9455193E34E7B0D284DDD7149A74B95B9261F13ABDE940954" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p256 sha512 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA512:"sample":"8496A60B5E9B47C825488827E0495B0E3FA109EC4568FD3F8D1097678EB97F00":"2362AB1ADBE2B8ADF9CB9EDAB740EA6049C028114F2460F96554F61FAE3302FE" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p256 sha1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA1:"test":"0CBCC86FD6ABD1D99E703E1EC50069EE5C0B4BA4B9AC60E409E8EC5910D81A89":"01B9D7B73DFAA60D5651EC4591A0136F87653E0FD780C3B1BC872FFDEAE479B1" @@ -158,7 +158,7 @@ ECDSA deterministic test vector rfc 6979 p256 sha224 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA224:"test":"C37EDB6F0AE79D47C3C27E962FA269BB4F441770357E114EE511F662EC34A692":"C820053A05791E521FCAAD6042D40AEA1D6B1A540138558F47D0719800E18F2D" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p256 sha256 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"F1ABB023518351CD71D881567B1EA663ED3EFCF6C5132B354F28D3B0B7D38367":"019F4113742A2B14BD25926B49C649155F267E60D3814B4C0CC84250E46F0083" @@ -166,11 +166,11 @@ ECDSA deterministic test vector rfc 6979 p256 sha384 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA384:"test":"83910E8B48BB0C74244EBDF7F07A1C5413D61472BD941EF3920E623FBCCEBEB6":"8DDBEC54CF8CD5874883841D712142A56A8D0F218F5003CB0296B6B509619F2C" -ECDSA deterministic test vector rfc 6979 p256 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p256 sha512 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA512:"test":"461D93F31B6540894788FD206C07CFA0CC35F46FA3C91816FFF1040AD1581A04":"39AF9F15DE0DB8D97E72719C74820D304CE5226E32DEDAE67519E840D1194E55" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p384 sha1 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA1:"sample":"EC748D839243D6FBEF4FC5C4859A7DFFD7F3ABDDF72014540C16D73309834FA37B9BA002899F6FDA3A4A9386790D4EB2":"A3BCFA947BEEF4732BF247AC17F71676CB31A847B9FF0CBC9C9ED4C1A5B3FACF26F49CA031D4857570CCB5CA4424A443" @@ -178,7 +178,7 @@ ECDSA deterministic test vector rfc 6979 p384 sha224 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA224:"sample":"42356E76B55A6D9B4631C865445DBE54E056D3B3431766D0509244793C3F9366450F76EE3DE43F5A125333A6BE060122":"9DA0C81787064021E78DF658F2FBB0B042BF304665DB721F077A4298B095E4834C082C03D83028EFBF93A3C23940CA8D" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p384 sha256 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA256:"sample":"21B13D1E013C7FA1392D03C5F99AF8B30C570C6F98D4EA8E354B63A21D3DAA33BDE1E888E63355D92FA2B3C36D8FB2CD":"F3AA443FB107745BF4BD77CB3891674632068A10CA67E3D45DB2266FA7D1FEEBEFDC63ECCD1AC42EC0CB8668A4FA0AB0" @@ -186,11 +186,11 @@ ECDSA deterministic test vector rfc 6979 p384 sha384 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA384:"sample":"94EDBB92A5ECB8AAD4736E56C691916B3F88140666CE9FA73D64C4EA95AD133C81A648152E44ACF96E36DD1E80FABE46":"99EF4AEB15F178CEA1FE40DB2603138F130E740A19624526203B6351D0A3A94FA329C145786E679E7B82C71A38628AC8" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p384 sha512 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA512:"sample":"ED0959D5880AB2D869AE7F6C2915C6D60F96507F9CB3E047C0046861DA4A799CFE30F35CC900056D7C99CD7882433709":"512C8CCEEE3890A84058CE1E22DBC2198F42323CE8ACA9135329F03C068E5112DC7CC3EF3446DEFCEB01A45C2667FDD5" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p384 sha1 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA1:"test":"4BC35D3A50EF4E30576F58CD96CE6BF638025EE624004A1F7789A8B8E43D0678ACD9D29876DAF46638645F7F404B11C7":"D5A6326C494ED3FF614703878961C0FDE7B2C278F9A65FD8C4B7186201A2991695BA1C84541327E966FA7B50F7382282" @@ -198,7 +198,7 @@ ECDSA deterministic test vector rfc 6979 p384 sha224 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA224:"test":"E8C9D0B6EA72A0E7837FEA1D14A1A9557F29FAA45D3E7EE888FC5BF954B5E62464A9A817C47FF78B8C11066B24080E72":"07041D4A7A0379AC7232FF72E6F77B6DDB8F09B16CCE0EC3286B2BD43FA8C6141C53EA5ABEF0D8231077A04540A96B66" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p384 sha256 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA256:"test":"6D6DEFAC9AB64DABAFE36C6BF510352A4CC27001263638E5B16D9BB51D451559F918EEDAF2293BE5B475CC8F0188636B":"2D46F3BECBCC523D5F1A1256BF0C9B024D879BA9E838144C8BA6BAEB4B53B47D51AB373F9845C0514EEFB14024787265" @@ -206,11 +206,11 @@ ECDSA deterministic test vector rfc 6979 p384 sha384 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA384:"test":"8203B63D3C853E8D77227FB377BCF7B7B772E97892A80F36AB775D509D7A5FEB0542A7F0812998DA8F1DD3CA3CF023DB":"DDD0760448D42D8A43AF45AF836FCE4DE8BE06B485E9B61B827C2F13173923E06A739F040649A667BF3B828246BAA5A5" -ECDSA deterministic test vector rfc 6979 p384 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p384 sha512 depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP384R1:"6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5":MBEDTLS_MD_SHA512:"test":"A0D5D090C9980FAF3C2CE57B7AE951D31977DD11C775D314AF55F76C676447D06FB6495CD21B4B6E340FC236584FB277":"976984E59B4C77B0E8E4460DCA3D9F20E07B9BB1F63BEEFAF576F6B2E8B224634A2092CD3792E0159AD9CEE37659C736" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p521 sha1 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA1:"sample":"0343B6EC45728975EA5CBA6659BBB6062A5FF89EEA58BE3C80B619F322C87910FE092F7D45BB0F8EEE01ED3F20BABEC079D202AE677B243AB40B5431D497C55D75D":"0E7B0E675A9B24413D448B8CC119D2BF7B2D2DF032741C096634D6D65D0DBE3D5694625FB9E8104D3B842C1B0E2D0B98BEA19341E8676AEF66AE4EBA3D5475D5D16" @@ -218,7 +218,7 @@ ECDSA deterministic test vector rfc 6979 p521 sha224 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA224:"sample":"1776331CFCDF927D666E032E00CF776187BC9FDD8E69D0DABB4109FFE1B5E2A30715F4CC923A4A5E94D2503E9ACFED92857B7F31D7152E0F8C00C15FF3D87E2ED2E":"050CB5265417FE2320BBB5A122B8E1A32BD699089851128E360E620A30C7E17BA41A666AF126CE100E5799B153B60528D5300D08489CA9178FB610A2006C254B41F" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p521 sha256 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA256:"sample":"1511BB4D675114FE266FC4372B87682BAECC01D3CC62CF2303C92B3526012659D16876E25C7C1E57648F23B73564D67F61C6F14D527D54972810421E7D87589E1A7":"04A171143A83163D6DF460AAF61522695F207A58B95C0644D87E52AA1A347916E4F7A72930B1BC06DBE22CE3F58264AFD23704CBB63B29B931F7DE6C9D949A7ECFC" @@ -226,11 +226,11 @@ ECDSA deterministic test vector rfc 6979 p521 sha384 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA384:"sample":"1EA842A0E17D2DE4F92C15315C63DDF72685C18195C2BB95E572B9C5136CA4B4B576AD712A52BE9730627D16054BA40CC0B8D3FF035B12AE75168397F5D50C67451":"1F21A3CEE066E1961025FB048BD5FE2B7924D0CD797BABE0A83B66F1E35EEAF5FDE143FA85DC394A7DEE766523393784484BDF3E00114A1C857CDE1AA203DB65D61" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p521 sha512 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA512:"sample":"0C328FAFCBD79DD77850370C46325D987CB525569FB63C5D3BC53950E6D4C5F174E25A1EE9017B5D450606ADD152B534931D7D4E8455CC91F9B15BF05EC36E377FA":"0617CCE7CF5064806C467F678D3B4080D6F1CC50AF26CA209417308281B68AF282623EAA63E5B5C0723D8B8C37FF0777B1A20F8CCB1DCCC43997F1EE0E44DA4A67A" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha1 +ECDSA deterministic test vector rfc 6979 p521 sha1 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA1_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA1:"test":"13BAD9F29ABE20DE37EBEB823C252CA0F63361284015A3BF430A46AAA80B87B0693F0694BD88AFE4E661FC33B094CD3B7963BED5A727ED8BD6A3A202ABE009D0367":"1E9BB81FF7944CA409AD138DBBEE228E1AFCC0C890FC78EC8604639CB0DBDC90F717A99EAD9D272855D00162EE9527567DD6A92CBD629805C0445282BBC916797FF" @@ -238,7 +238,7 @@ ECDSA deterministic test vector rfc 6979 p521 sha224 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA224:"test":"1C7ED902E123E6815546065A2C4AF977B22AA8EADDB68B2C1110E7EA44D42086BFE4A34B67DDC0E17E96536E358219B23A706C6A6E16BA77B65E1C595D43CAE17FB":"177336676304FCB343CE028B38E7B4FBA76C1C1B277DA18CAD2A8478B2A9A9F5BEC0F3BA04F35DB3E4263569EC6AADE8C92746E4C82F8299AE1B8F1739F8FD519A4" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha256 +ECDSA deterministic test vector rfc 6979 p521 sha256 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA256_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA256:"test":"00E871C4A14F993C6C7369501900C4BC1E9C7B0B4BA44E04868B30B41D8071042EB28C4C250411D0CE08CD197E4188EA4876F279F90B3D8D74A3C76E6F1E4656AA8":"0CD52DBAA33B063C3A6CD8058A1FB0A46A4754B034FCC644766CA14DA8CA5CA9FDE00E88C1AD60CCBA759025299079D7A427EC3CC5B619BFBC828E7769BCD694E86" @@ -246,7 +246,7 @@ ECDSA deterministic test vector rfc 6979 p521 sha384 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA384:"test":"14BEE21A18B6D8B3C93FAB08D43E739707953244FDBE924FA926D76669E7AC8C89DF62ED8975C2D8397A65A49DCC09F6B0AC62272741924D479354D74FF6075578C":"133330865C067A0EAF72362A65E2D7BC4E461E8C8995C3B6226A21BD1AA78F0ED94FE536A0DCA35534F0CD1510C41525D163FE9D74D134881E35141ED5E8E95B979" -ECDSA deterministic test vector rfc 6979 p521 mbedtls_sha512 +ECDSA deterministic test vector rfc 6979 p521 sha512 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA512:"test":"13E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D":"1FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3" From b5a50e754dd3d61f49eb798a23279ce0b74f9cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 16:06:13 +0200 Subject: [PATCH 0050/1100] Always declare restartable function variants Otherwise code that uses these functions in other modules will have to do: #if defined(MBEDTLS_ECP_RESTARTABLE) ret = do_stuff( there, may, be, many, args ); #else ret = do_stuff( their, may, be, namy, args, rs_ctx ); #fi and there is a risk that the arg list will differ when code is updated, and this might not be caught immediately by tests because this depends on a config.h compile-time option which are harder to test. Always declaring the restartable variants of the API functions avoids this problem; the cost in ROM size should be negligible. --- include/mbedtls/ecp.h | 11 +++++++---- library/ecp.c | 9 --------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 325392b023..532124dc70 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -172,6 +172,7 @@ typedef struct mbedtls_ecp_keypair; #if defined(MBEDTLS_ECP_RESTARTABLE) + /** * \brief Internal restart context for multiplication * @@ -196,6 +197,12 @@ typedef struct mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ mbedtls_ecp_restart_muladd_ctx *ma; /*!< ecp_muladd() sub-context */ } mbedtls_ecp_restart_ctx; + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +/* We want to declare restartable versions of existing functions anyway */ +typedef void mbedtls_ecp_restart_ctx; + #endif /* MBEDTLS_ECP_RESTARTABLE */ /** @@ -612,7 +619,6 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Restartable version of \c mbedtls_ecp_mul() * @@ -636,7 +642,6 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecp_restart_ctx *rs_ctx ); -#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \brief Multiplication and addition of two points by integers: @@ -662,7 +667,6 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); -#if defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Restartable version of \c mbedtls_ecp_muladd() * @@ -687,7 +691,6 @@ int mbedtls_ecp_muladd_restartable( const mbedtls_mpi *m, const mbedtls_ecp_point *P, const mbedtls_mpi *n, const mbedtls_ecp_point *Q, mbedtls_ecp_restart_ctx *rs_ctx ); -#endif /** * \brief Check that a point is a valid public key on this curve diff --git a/library/ecp.c b/library/ecp.c index 03b1476a4c..92397244a5 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -250,9 +250,6 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, #define ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( ecp_check_budget( grp, rs_ctx, ops ) ); #else #define ECP_BUDGET( ops ) /* no-op */ - -/* We also need that type to make our life simpler for internal functions */ -typedef void mbedtls_ecp_restart_ctx; #endif /* MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -2130,9 +2127,6 @@ cleanup: /* * Restartable multiplication R = m * P */ -#if !defined(MBEDTLS_ECP_RESTARTABLE) -static -#endif int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, @@ -2295,9 +2289,6 @@ cleanup: * Restartable linear combination * NOT constant-time */ -#if !defined(MBEDTLS_ECP_RESTARTABLE) -static -#endif int mbedtls_ecp_muladd_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *P, From c751148cc5772b55c172ae9e8ec92380630c6fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 20 Apr 2017 16:31:00 +0200 Subject: [PATCH 0051/1100] Make some macros/functions public These will be needed in other modules that already include ecp.h --- include/mbedtls/ecp.h | 27 +++++++++++++++++++++++++++ library/ecp.c | 34 ++++++++++++---------------------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 532124dc70..420c6d07b4 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -198,8 +198,35 @@ typedef struct mbedtls_ecp_restart_muladd_ctx *ma; /*!< ecp_muladd() sub-context */ } mbedtls_ecp_restart_ctx; +/* + * Operation counts for restartable functions + */ +#define MBEDTLS_ECP_OPS_DBL 8 /*!< basic ops count for ecp_double_jac() */ +#define MBEDTLS_ECP_OPS_ADD 11 /*!< basic ops count for see ecp_add_mixed() */ +#define MBEDTLS_ECP_OPS_INV 120 /*!< empirical equivalent for mpi_mod_inv() */ + +/** + * \brief Internal; for restartable functions in other modules. + * Check and update basic ops budget. + * + * \param grp Group structure + * \param rs_ctx Restart context + * \param ops Number of basic ops to do + * + * \return 0 is doing 'ops' basic ops is still allowed, + * MBEDTLS_ERR_ECP_IN_PROGRESS otherwise. + */ +int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, + mbedtls_ecp_restart_ctx *rs_ctx, + unsigned ops ); + +/* Utility macro for checking and updating ops budget */ +#define MBEDTLS_ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, rs_ctx, ops ) ); + #else /* MBEDTLS_ECP_RESTARTABLE */ +#define MBEDTLS_ECP_BUDGET( ops ) /* no-op; for compatibility */ + /* We want to declare restartable versions of existing functions anyway */ typedef void mbedtls_ecp_restart_ctx; diff --git a/library/ecp.c b/library/ecp.c index 92397244a5..9d4721ec5f 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -213,19 +213,12 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) ctx->ma = NULL; } -/* - * Operation counts - */ -#define ECP_OPS_DBL 8 /* see ecp_double_jac() */ -#define ECP_OPS_ADD 11 /* see ecp_add_mixed() */ -#define ECP_OPS_INV 120 /* empirical equivalent */ - /* * Check if we can do the next step */ -static int ecp_check_budget( const mbedtls_ecp_group *grp, - mbedtls_ecp_restart_ctx *rs_ctx, - unsigned ops ) +int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, + mbedtls_ecp_restart_ctx *rs_ctx, + unsigned ops ) { if( rs_ctx != NULL && ecp_max_ops != 0 ) { @@ -247,9 +240,6 @@ static int ecp_check_budget( const mbedtls_ecp_group *grp, return( 0 ); } -#define ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( ecp_check_budget( grp, rs_ctx, ops ) ); -#else -#define ECP_BUDGET( ops ) /* no-op */ #endif /* MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -1437,7 +1427,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, for( ; j < d * ( w - 1 ); j++ ) { - ECP_BUDGET( ECP_OPS_DBL ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_DBL ); i = 1U << ( j / d ); cur = T + i; @@ -1468,7 +1458,7 @@ norm_dbl: for( i = 1; i < T_len; i <<= 1 ) TT[j++] = T + i; - ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV + 6 * j - 2 ); MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); @@ -1485,7 +1475,7 @@ norm_dbl: add: #endif - ECP_BUDGET( ( T_len - 1 ) * ECP_OPS_ADD ); + MBEDTLS_ECP_BUDGET( ( T_len - 1 ) * MBEDTLS_ECP_OPS_ADD ); for( i = 1; i < T_len; i <<= 1 ) { @@ -1511,7 +1501,7 @@ norm_add: for( j = 0; j + 1 < T_len; j++ ) TT[j] = T + j + 1; - ECP_BUDGET( ECP_OPS_INV + 6 * j - 2 ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV + 6 * j - 2 ); MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); @@ -1602,7 +1592,7 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R while( i-- != 0 ) { - ECP_BUDGET( ECP_OPS_DBL + ECP_OPS_ADD ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_DBL + MBEDTLS_ECP_OPS_ADD ); MBEDTLS_MPI_CHK( ecp_double_jac( grp, R, R ) ); MBEDTLS_MPI_CHK( ecp_select_comb( grp, &Txi, T, t_len, x[i] ) ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, R, R, &Txi ) ); @@ -1723,7 +1713,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, #endif } - ECP_BUDGET( ECP_OPS_INV ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -2162,7 +2152,7 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, P ) ); /* check_privkey is 0M and check_pubkey is 3M */ - ECP_BUDGET( 3 ); + MBEDTLS_ECP_BUDGET( 3 ); } ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; @@ -2365,7 +2355,7 @@ mul2: add: #endif - ECP_BUDGET( ECP_OPS_ADD ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_ADD ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, pR, pmP, pR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) @@ -2373,7 +2363,7 @@ add: norm: #endif - ECP_BUDGET( ECP_OPS_INV ); + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, pR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) From 1ed2505f854b5e9be20578079e37a29d896f5673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 10:04:02 +0200 Subject: [PATCH 0052/1100] Add some negative testing for ecdsa_verify() --- include/mbedtls/ecdsa.h | 2 +- tests/suites/test_suite_ecdsa.function | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index a277715b3d..259948dfcd 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -120,7 +120,7 @@ int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi * prescribed by SEC1 4.1.4 step 3. * * \return 0 if successful, - * MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid + * MBEDTLS_ERR_ECP_VERIFY_FAILED if signature is invalid * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code */ int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 88e07a9e6a..491ab43b4f 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -87,6 +87,16 @@ void ecdsa_prim_test_vectors( int id, char *d_str, char *xQ_str, char *yQ_str, TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, &Q, &r_check, &s_check ) == 0 ); + TEST_ASSERT( mbedtls_mpi_sub_int( &r, &r, 1 ) == 0 ); + TEST_ASSERT( mbedtls_mpi_add_int( &s, &s, 1 ) == 0 ); + + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &Q, &r, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &Q, &r_check, &s ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &grp.G, &r_check, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + exit: mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &Q ); @@ -178,13 +188,13 @@ void ecdsa_write_read_random( int id ) /* try modifying r */ sig[10]++; TEST_ASSERT( mbedtls_ecdsa_read_signature( &ctx, hash, sizeof( hash ), - sig, sig_len ) != 0 ); + sig, sig_len ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); sig[10]--; /* try modifying s */ sig[sig_len - 1]++; TEST_ASSERT( mbedtls_ecdsa_read_signature( &ctx, hash, sizeof( hash ), - sig, sig_len ) != 0 ); + sig, sig_len ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); sig[sig_len - 1]--; exit: From 32aa4375cca6a9f645e9ae9b03d40c0d48f259b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 10:29:13 +0200 Subject: [PATCH 0053/1100] Declare ecdsa_read_signature_restartable() Not making ecdsa_verify_restartable() public, as it isn't called from any other module. --- include/mbedtls/ecdsa.h | 58 ++++++++++++++++++++++++++++++++++++++--- library/ecdsa.c | 54 ++++++++++++++++++++++++++++++++++---- 2 files changed, 104 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index 259948dfcd..f09e754905 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -46,14 +46,31 @@ /** Maximum size of an ECDSA signature in bytes */ #define MBEDTLS_ECDSA_MAX_LEN ( 3 + 2 * ( 3 + MBEDTLS_ECP_MAX_BYTES ) ) +#ifdef __cplusplus +extern "C" { +#endif + /** * \brief ECDSA context structure */ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; -#ifdef __cplusplus -extern "C" { -#endif +#if defined(MBEDTLS_ECP_RESTARTABLE) + +/** + * \brief General context for resuming ECDSA operations + */ +typedef struct +{ + mbedtls_ecp_restart_ctx rs_ecp; /*!< base context (admin+ecp info) */ +} mbedtls_ecdsa_restart_ctx; + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +/* Now we can declare functions that take a pointer to that */ +typedef void mbedtls_ecdsa_restart_ctx; + +#endif /* MBEDTLS_ECP_RESTARTABLE */ /** * \brief Compute ECDSA signature of a previously hashed message @@ -227,6 +244,29 @@ int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen ); +/** + * \brief Restartable version of \c mbedtls_ecdsa_read_signature() + * + * \note Performs the same job as \c mbedtls_ecdsa_read_signature() + * but can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param ctx ECDSA context + * \param hash Message hash + * \param hlen Size of hash + * \param sig Signature to read and verify + * \param slen Size of sig + * \param rs_ctx Restart context + * + * \return See \c mbedtls_ecdsa_read_signature(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + const unsigned char *sig, size_t slen, + mbedtls_ecdsa_restart_ctx *rs_ctx ); + /** * \brief Generate an ECDSA keypair on the given curve * @@ -265,6 +305,18 @@ void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx ); */ void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ); +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context + */ +void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context + */ +void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + #ifdef __cplusplus } #endif diff --git a/library/ecdsa.c b/library/ecdsa.c index 6873757a01..3003812e9f 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -196,14 +196,18 @@ cleanup: * Verify ECDSA signature of hashed message (SEC1 4.1.4) * Obviously, compared to SEC1 4.1.3, we skip step 2 (hash message) */ -int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, - const unsigned char *buf, size_t blen, - const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s) +static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, + const unsigned char *buf, size_t blen, + const mbedtls_ecp_point *Q, + const mbedtls_mpi *r, const mbedtls_mpi *s, + mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret; mbedtls_mpi e, s_inv, u1, u2; mbedtls_ecp_point R; + (void) rs_ctx; // temporary + mbedtls_ecp_point_init( &R ); mbedtls_mpi_init( &e ); mbedtls_mpi_init( &s_inv ); mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); @@ -277,6 +281,16 @@ cleanup: return( ret ); } +/* + * Verify ECDSA signature of hashed message + */ +int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, + const unsigned char *buf, size_t blen, + const mbedtls_ecp_point *Q, const mbedtls_mpi *r, const mbedtls_mpi *s) +{ + return( ecdsa_verify_restartable( grp, buf, blen, Q, r, s, NULL ) ); +} + /* * Convert a signature (given by context) to ASN.1 */ @@ -356,6 +370,18 @@ int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx, int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, const unsigned char *sig, size_t slen ) +{ + return( mbedtls_ecdsa_read_signature_restartable( + ctx, hash, hlen, sig, slen, NULL ) ); +} + +/* + * Restartable read and check signature + */ +int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + const unsigned char *sig, size_t slen, + mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret; unsigned char *p = (unsigned char *) sig; @@ -387,8 +413,8 @@ int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, goto cleanup; } - if( ( ret = mbedtls_ecdsa_verify( &ctx->grp, hash, hlen, - &ctx->Q, &r, &s ) ) != 0 ) + if( ( ret = ecdsa_verify_restartable( &ctx->grp, hash, hlen, + &ctx->Q, &r, &s, rs_ctx ) ) != 0 ) goto cleanup; if( p != end ) @@ -444,4 +470,22 @@ void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ) mbedtls_ecp_keypair_free( ctx ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Initialize a restart context + */ +void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) +{ + mbedtls_ecp_restart_init( &ctx->rs_ecp ); +} + +/* + * Free the components of a restart context + */ +void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) +{ + mbedtls_ecp_restart_free( &ctx->rs_ecp ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + #endif /* MBEDTLS_ECDSA_C */ From 722e5156fd1cf0eebfec849a080f3b556b840e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 11:04:47 +0200 Subject: [PATCH 0054/1100] Add test for ecdsa_read_signature_restartable() Test values taken from a random signature as generated in ecdsa_write_read_random() test function --- include/mbedtls/ecdsa.h | 2 +- library/ecdsa.c | 4 +- tests/suites/test_suite_ecdsa.data | 3 ++ tests/suites/test_suite_ecdsa.function | 62 ++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index f09e754905..c7b9f27da4 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -62,7 +62,7 @@ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; */ typedef struct { - mbedtls_ecp_restart_ctx rs_ecp; /*!< base context (admin+ecp info) */ + mbedtls_ecp_restart_ctx ecp; /*!< base context (admin+ecp info) */ } mbedtls_ecdsa_restart_ctx; #else /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/ecdsa.c b/library/ecdsa.c index 3003812e9f..19f9d5e2e3 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -476,7 +476,7 @@ void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ) */ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) { - mbedtls_ecp_restart_init( &ctx->rs_ecp ); + mbedtls_ecp_restart_init( &ctx->ecp ); } /* @@ -484,7 +484,7 @@ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) */ void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) { - mbedtls_ecp_restart_free( &ctx->rs_ecp ); + mbedtls_ecp_restart_free( &ctx->ecp ); } #endif /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index c0fab761a2..6ca912a467 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -250,3 +250,6 @@ ECDSA deterministic test vector rfc 6979 p521 sha512 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA512:"test":"13E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D":"1FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3" +ECDSA restartable read-verify: restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":0:0:0 diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 491ab43b4f..d5cb654806 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -202,3 +202,65 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */ +void ecdsa_read_restart( int id, char *k_str, char *h_str, char *s_str, + int max_ops, int min_restart, int max_restart ) +{ + mbedtls_ecdsa_context ctx; + mbedtls_ecdsa_restart_ctx rs_ctx; + unsigned char hash[64]; + unsigned char sig[200]; + unsigned char pk[65]; + size_t sig_len, hash_len, pk_len; + int ret, cnt_restart; + + mbedtls_ecdsa_init( &ctx ); + mbedtls_ecdsa_restart_init( &rs_ctx ); + + hash_len = unhexify(hash, h_str); + sig_len = unhexify(sig, s_str); + pk_len = unhexify(pk, k_str); + + TEST_ASSERT( mbedtls_ecp_group_load( &ctx.grp, id ) == 0 ); + TEST_ASSERT( mbedtls_ecp_point_read_binary( &ctx.grp, &ctx.Q, pk, pk_len ) == 0 ); + + mbedtls_ecp_set_max_ops( max_ops ); + + cnt_restart = 0; + do { + ret = mbedtls_ecdsa_read_signature_restartable( &ctx, + hash, hash_len, sig, sig_len, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + /* try modifying r */ + sig[10]++; + do { + ret = mbedtls_ecdsa_read_signature_restartable( &ctx, + hash, hash_len, sig, sig_len, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + sig[10]--; + + /* try modifying s */ + sig[sig_len - 1]++; + do { + ret = mbedtls_ecdsa_read_signature_restartable( &ctx, + hash, hash_len, sig, sig_len, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + sig[sig_len - 1]--; + + /* do we leak memory when aborting? */ + ret = mbedtls_ecdsa_read_signature_restartable( &ctx, + hash, hash_len, sig, sig_len, &rs_ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + +exit: + mbedtls_ecdsa_free( &ctx ); + mbedtls_ecdsa_restart_free( &rs_ctx ); +} +/* END_CASE */ From a0c5bcc2bc09bd1a096172d9ffd03c0626e8dada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 11:33:57 +0200 Subject: [PATCH 0055/1100] Add infrastructure for ecdsa_verify_restartable() --- include/mbedtls/ecdsa.h | 8 ++++ include/mbedtls/ecp.h | 8 ++++ library/ecdsa.c | 85 ++++++++++++++++++++++++++++++++++++++++- library/ecp.c | 8 ++++ 4 files changed, 107 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index c7b9f27da4..d2f83b2241 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -57,12 +57,20 @@ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; #if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Internal restart context for ecdsa_verify() + * + * \note Opaque struct + */ +typedef struct mbedtls_ecdsa_restart_ver mbedtls_ecdsa_restart_ver_ctx; + /** * \brief General context for resuming ECDSA operations */ typedef struct { mbedtls_ecp_restart_ctx ecp; /*!< base context (admin+ecp info) */ + mbedtls_ecdsa_restart_ver_ctx *ver; /*!< ecdsa_verify() sub-context */ } mbedtls_ecdsa_restart_ctx; #else /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 420c6d07b4..3e5c605303 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -341,6 +341,14 @@ typedef void mbedtls_ecp_restart_ctx; * \note This setting is currently ignored by Curve25519 */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); + +/** + * \brief Check if restart is enabled (max_ops != 0) + * + * \return 0 if max_ops == 0 (restart disabled) + * 1 otherwise (restart enabled) + */ +int mbedtls_ecp_restart_enabled( void ); #endif /* MBEDTLS_ECP_RESTARTABLE */ /** diff --git a/library/ecdsa.c b/library/ecdsa.c index 19f9d5e2e3..8e1f62a8ed 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -42,6 +42,50 @@ #include "mbedtls/hmac_drbg.h" #endif +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_calloc calloc +#define mbedtls_free free +#endif + +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Sub-contect for ecdsa_verify() + */ +struct mbedtls_ecdsa_restart_ver +{ + int state; /* dummy */ +}; + +/* + * Init verify restart sub-context + */ +static void ecdsa_restart_ver_init( mbedtls_ecdsa_restart_ver_ctx *ctx ) +{ + memset( ctx, 0, sizeof( *ctx ) ); +} + +/* + * Free the components of a verify restart sub-context + */ +static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + memset( ctx, 0, sizeof( *ctx ) ); +} + +#define ECDSA_RS_ECP &rs_ctx->ecp + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +#define ECDSA_RS_ECP NULL + +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /* * Derive a suitable integer for group grp from a buffer of length len * SEC1 4.1.3 step 5 aka SEC1 4.1.4 step 3 @@ -206,7 +250,9 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, mbedtls_mpi e, s_inv, u1, u2; mbedtls_ecp_point R; - (void) rs_ctx; // temporary +#if !defined(MBEDTLS_ECP_RESTARTABLE) + (void) rs_ctx; +#endif mbedtls_ecp_point_init( &R ); mbedtls_mpi_init( &e ); mbedtls_mpi_init( &s_inv ); @@ -216,6 +262,22 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, if( grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + /* reset ops count for this call if top-level */ + if( rs_ctx != NULL && rs_ctx->ecp.depth++ == 0 ) + rs_ctx->ecp.ops_done = 0; + + /* set up our own sub-context if needed */ + if( mbedtls_ecp_restart_enabled() && rs_ctx != NULL && rs_ctx->ver == NULL ) + { + rs_ctx->ver = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_restart_ver_ctx ) ); + if( rs_ctx->ver == NULL ) + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); + + ecdsa_restart_ver_init( rs_ctx->ver ); + } +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /* * Step 1: make sure r and s are in range 1..n-1 */ @@ -250,7 +312,8 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, /* * Step 5: R = u1 G + u2 Q */ - MBEDTLS_MPI_CHK( mbedtls_ecp_muladd( grp, &R, &u1, &grp->G, &u2, Q ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_muladd_restartable( grp, + &R, &u1, &grp->G, &u2, Q, ECDSA_RS_ECP ) ); if( mbedtls_ecp_is_zero( &R ) ) { @@ -278,6 +341,18 @@ cleanup: mbedtls_mpi_free( &e ); mbedtls_mpi_free( &s_inv ); mbedtls_mpi_free( &u1 ); mbedtls_mpi_free( &u2 ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + /* clear our sub-context when not in progress (done or error) */ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + ecdsa_restart_ver_free( rs_ctx->ver ); + mbedtls_free( rs_ctx->ver ); + rs_ctx->ver = NULL; + } + + if( rs_ctx != NULL ) + rs_ctx->ecp.depth--; +#endif /* MBEDTLS_ECP_RESTARTABLE */ + return( ret ); } @@ -477,6 +552,8 @@ void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ) void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) { mbedtls_ecp_restart_init( &ctx->ecp ); + + ctx->ver = NULL; } /* @@ -485,6 +562,10 @@ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) { mbedtls_ecp_restart_free( &ctx->ecp ); + + ecdsa_restart_ver_free( ctx->ver ); + mbedtls_free( ctx->ver ); + ctx->ver = NULL; } #endif /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/ecp.c b/library/ecp.c index 9d4721ec5f..40daa67109 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -100,6 +100,14 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) ecp_max_ops = max_ops; } +/* + * Check if restart is enabled + */ +int mbedtls_ecp_restart_enabled( void ) +{ + return( ecp_max_ops != 0 ); +} + /* * Restart sub-context for ecp_mul_comb() */ From 5314f234ca303e2a2770bb1718e88c62b80bc6d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 12:36:59 +0200 Subject: [PATCH 0056/1100] Make verify_restartable() actually restartable --- include/mbedtls/ecp.h | 1 + library/ecdsa.c | 46 ++++++++++++++++++++++++++---- library/ecp.c | 6 ++-- tests/suites/test_suite_ecdsa.data | 12 ++++++++ 4 files changed, 56 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 3e5c605303..04a557bdb4 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -201,6 +201,7 @@ typedef struct /* * Operation counts for restartable functions */ +#define MBEDTLS_ECP_OPS_CHK 3 /*!< basic ops count for ecp_check_pubkey() */ #define MBEDTLS_ECP_OPS_DBL 8 /*!< basic ops count for ecp_double_jac() */ #define MBEDTLS_ECP_OPS_ADD 11 /*!< basic ops count for see ecp_add_mixed() */ #define MBEDTLS_ECP_OPS_INV 120 /*!< empirical equivalent for mpi_mod_inv() */ diff --git a/library/ecdsa.c b/library/ecdsa.c index 8e1f62a8ed..f7f7a01af4 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -51,12 +51,17 @@ #endif #if defined(MBEDTLS_ECP_RESTARTABLE) + /* * Sub-contect for ecdsa_verify() */ struct mbedtls_ecdsa_restart_ver { - int state; /* dummy */ + mbedtls_mpi u1, u2; /* intermediate values */ + enum { /* what to do next? */ + ecdsa_ver_init = 0, /* getting started */ + ecdsa_ver_muladd, /* muladd step */ + } state; }; /* @@ -75,15 +80,24 @@ static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) if( ctx == NULL ) return; + mbedtls_mpi_free( &ctx->u1 ); + mbedtls_mpi_free( &ctx->u2 ); + memset( ctx, 0, sizeof( *ctx ) ); } #define ECDSA_RS_ECP &rs_ctx->ecp +/* Utility macro for checking and updating ops budget */ +#define ECDSA_BUDGET( ops ) \ + MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, &rs_ctx->ecp, ops ) ); + #else /* MBEDTLS_ECP_RESTARTABLE */ #define ECDSA_RS_ECP NULL +#define ECDSA_BUDGET( ops ) /* no-op; for compatibility */ + #endif /* MBEDTLS_ECP_RESTARTABLE */ /* @@ -249,6 +263,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, int ret; mbedtls_mpi e, s_inv, u1, u2; mbedtls_ecp_point R; + mbedtls_mpi *pu1 = &u1, *pu2 = &u2; #if !defined(MBEDTLS_ECP_RESTARTABLE) (void) rs_ctx; @@ -276,6 +291,17 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, ecdsa_restart_ver_init( rs_ctx->ver ); } + + if( rs_ctx != NULL && rs_ctx->ver != NULL ) + { + /* redirect to our context */ + pu1 = &rs_ctx->ver->u1; + pu2 = &rs_ctx->ver->u2; + + /* jump to current step */ + if( rs_ctx->ver->state == ecdsa_ver_muladd ) + goto muladd; + } #endif /* MBEDTLS_ECP_RESTARTABLE */ /* @@ -290,7 +316,9 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, /* * Additional precaution: make sure Q is valid + * For ops count, group that together with step 4 */ + ECDSA_BUDGET( MBEDTLS_ECP_OPS_CHK + MBEDTLS_ECP_OPS_INV + 2 ); MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, Q ) ); /* @@ -303,17 +331,23 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, */ MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &s_inv, s, &grp->N ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &u1, &e, &s_inv ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &u1, &u1, &grp->N ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( pu1, &e, &s_inv ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pu1, pu1, &grp->N ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &u2, r, &s_inv ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( &u2, &u2, &grp->N ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( pu2, r, &s_inv ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pu2, pu2, &grp->N ) ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->ver != NULL ) + rs_ctx->ver->state++; + +muladd: +#endif /* * Step 5: R = u1 G + u2 Q */ MBEDTLS_MPI_CHK( mbedtls_ecp_muladd_restartable( grp, - &R, &u1, &grp->G, &u2, Q, ECDSA_RS_ECP ) ); + &R, pu1, &grp->G, pu2, Q, ECDSA_RS_ECP ) ); if( mbedtls_ecp_is_zero( &R ) ) { diff --git a/library/ecp.c b/library/ecp.c index 40daa67109..0f1cbfce4c 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2155,12 +2155,12 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, rs_ctx == NULL || rs_ctx->rsm == NULL ) #endif { + /* check_privkey is free */ + MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_CHK ); + /* Common sanity checks */ MBEDTLS_MPI_CHK( mbedtls_ecp_check_privkey( grp, m ) ); MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, P ) ); - - /* check_privkey is 0M and check_pubkey is 3M */ - MBEDTLS_ECP_BUDGET( 3 ); } ret = MBEDTLS_ERR_ECP_BAD_INPUT_DATA; diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index 6ca912a467..f2cf214cc4 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -253,3 +253,15 @@ ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757 ECDSA restartable read-verify: restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":0:0:0 + +ECDSA restartable read-verify: max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":1:42:10000 + +ECDSA restartable read-verify: max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":10000:0:0 + +ECDSA restartable read-verify: max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":250:4:64 From addb10efac68cccf16918ba9798dc3dad8754729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 12:54:46 +0200 Subject: [PATCH 0057/1100] Create functions for restartable sign --- include/mbedtls/ecdsa.h | 29 +++++++++++++++++++ library/ecdsa.c | 64 ++++++++++++++++++++++++++++++++++------- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index d2f83b2241..f557a4de28 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -187,6 +187,35 @@ int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +/** + * \brief Restartable version of \c mbedtls_ecdsa_write_signature() + * + * \note Performs the same job as \c mbedtls_ecdsa_write_signature() + * but can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param ctx ECDSA context + * \param md_alg Algorithm that was used to hash the message + * \param hash Message hash + * \param hlen Length of hash + * \param sig Buffer that will hold the signature + * \param slen Length of the signature written + * \param f_rng RNG function + * \param p_rng RNG parameter + * \param rs_ctx Restart context + * + * \return See \c mbedtls_ecdsa_write_signature(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + mbedtls_ecdsa_restart_ctx *rs_ctx ); + #if defined(MBEDTLS_ECDSA_DETERMINISTIC) #if ! defined(MBEDTLS_DEPRECATED_REMOVED) #if defined(MBEDTLS_DEPRECATED_WARNING) diff --git a/library/ecdsa.c b/library/ecdsa.c index f7f7a01af4..ec1e5872da 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -127,14 +127,18 @@ cleanup: * Compute ECDSA signature of a hashed message (SEC1 4.1.3) * Obviously, compared to SEC1 4.1.3, we skip step 4 (hash message) */ -int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, +static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, + mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret, key_tries, sign_tries, blind_tries; mbedtls_ecp_point R; mbedtls_mpi k, e, t; + (void) rs_ctx; // temporary + /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ if( grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); @@ -212,13 +216,26 @@ cleanup: return( ret ); } +/* + * Compute ECDSA signature of a hashed message + */ +int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, + const mbedtls_mpi *d, const unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) +{ + return( ecdsa_sign_restartable( grp, r, s, d, buf, blen, + f_rng, p_rng, NULL ) ); +} + #if defined(MBEDTLS_ECDSA_DETERMINISTIC) /* * Deterministic signature wrapper */ -int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, +static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, + mbedtls_mpi *r, mbedtls_mpi *s, const mbedtls_mpi *d, const unsigned char *buf, size_t blen, - mbedtls_md_type_t md_alg ) + mbedtls_md_type_t md_alg, + mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret; mbedtls_hmac_drbg_context rng_ctx; @@ -227,6 +244,8 @@ int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi const mbedtls_md_info_t *md_info; mbedtls_mpi h; + (void) rs_ctx; // temporary + if( ( md_info = mbedtls_md_info_from_type( md_alg ) ) == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); @@ -248,6 +267,16 @@ cleanup: return( ret ); } + +/* + * Deterministic signature wrapper + */ +int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, + const mbedtls_mpi *d, const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg ) +{ + return( ecdsa_sign_det_restartable( grp, r, s, d, buf, blen, md_alg, NULL ) ); +} #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ /* @@ -427,11 +456,13 @@ static int ecdsa_signature_to_asn1( const mbedtls_mpi *r, const mbedtls_mpi *s, /* * Compute and write signature */ -int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, +int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, + mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hlen, unsigned char *sig, size_t *slen, int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) + void *p_rng, + mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret; mbedtls_mpi r, s; @@ -443,13 +474,13 @@ int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t (void) f_rng; (void) p_rng; - MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign_det( &ctx->grp, &r, &s, &ctx->d, - hash, hlen, md_alg ) ); + MBEDTLS_MPI_CHK( ecdsa_sign_det_restartable( &ctx->grp, &r, &s, &ctx->d, + hash, hlen, md_alg, rs_ctx ) ); #else (void) md_alg; - MBEDTLS_MPI_CHK( mbedtls_ecdsa_sign( &ctx->grp, &r, &s, &ctx->d, - hash, hlen, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( ecdsa_sign_restartable( &ctx->grp, &r, &s, &ctx->d, + hash, hlen, f_rng, p_rng, rs_ctx ) ); #endif MBEDTLS_MPI_CHK( ecdsa_signature_to_asn1( &r, &s, sig, slen ) ); @@ -461,6 +492,19 @@ cleanup: return( ret ); } +/* + * Compute and write signature + */ +int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + return( mbedtls_ecdsa_write_signature_restartable( + ctx, md_alg, hash, hlen, sig, slen, f_rng, p_rng, NULL ) ); +} + #if ! defined(MBEDTLS_DEPRECATED_REMOVED) && \ defined(MBEDTLS_ECDSA_DETERMINISTIC) int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx, From eb402f3cd39bae8689a927fb61499cbee0283a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 25 Apr 2017 10:57:30 +0200 Subject: [PATCH 0058/1100] Add test for restartable signature Test relies on deterministic signature as this uses plain sig internally, so if deterministic works, then so does non-deterministic, while the reciprocal is false. (Also, deterministic is enabled by default in config.h.) Test case is taken from a RFC 6979 test vector, just manually converting (r,s) to the encoded signature. --- tests/suites/test_suite_ecdsa.data | 4 ++ tests/suites/test_suite_ecdsa.function | 57 ++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index f2cf214cc4..c236c28c6c 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -265,3 +265,7 @@ ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387 ECDSA restartable read-verify: max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":250:4:64 + +ECDSA restartable sign-write: secp256r1 restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index d5cb654806..9205627be4 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -264,3 +264,60 @@ exit: mbedtls_ecdsa_restart_free( &rs_ctx ); } /* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE:MBEDTLS_ECDSA_DETERMINISTIC */ +void ecdsa_write_restart( int id, char *d_str, int md_alg, + char *msg, char *sig_str, + int max_ops, int min_restart, int max_restart ) +{ + int ret, cnt_restart; + mbedtls_ecdsa_restart_ctx rs_ctx; + mbedtls_ecdsa_context ctx; + unsigned char hash[MBEDTLS_MD_MAX_SIZE]; + unsigned char sig[MBEDTLS_ECDSA_MAX_LEN]; + unsigned char sig_check[MBEDTLS_ECDSA_MAX_LEN]; + size_t hlen, slen, slen_check; + const mbedtls_md_info_t *md_info; + + mbedtls_ecdsa_restart_init( &rs_ctx ); + mbedtls_ecdsa_init( &ctx ); + memset( hash, 0, sizeof( hash ) ); + memset( sig, 0, sizeof( sig ) ); + memset( sig_check, 0, sizeof( sig_check ) ); + + TEST_ASSERT( mbedtls_ecp_group_load( &ctx.grp, id ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &ctx.d, 16, d_str ) == 0 ); + slen_check = unhexify( sig_check, sig_str ); + + md_info = mbedtls_md_info_from_type( md_alg ); + TEST_ASSERT( md_info != NULL ); + + hlen = mbedtls_md_get_size( md_info ); + mbedtls_md( md_info, (const unsigned char *) msg, strlen( msg ), hash ); + + mbedtls_ecp_set_max_ops( max_ops ); + + slen = sizeof( sig ); + cnt_restart = 0; + do { + ret = mbedtls_ecdsa_write_signature_restartable( &ctx, + md_alg, hash, hlen, sig, &slen, NULL, NULL, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( slen == slen_check ); + TEST_ASSERT( memcmp( sig, sig_check, slen ) == 0 ); + + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + /* do we leak memory when aborting? */ + ret = mbedtls_ecdsa_write_signature_restartable( &ctx, + md_alg, hash, hlen, sig, &slen, NULL, NULL, &rs_ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + +exit: + mbedtls_ecdsa_restart_free( &rs_ctx ); + mbedtls_ecdsa_free( &ctx ); +} +/* END_CASE */ From b90883dc1dc42891354c0f40a908e298d8d0af32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 25 Apr 2017 11:33:10 +0200 Subject: [PATCH 0059/1100] Prepare infra for restartable sign --- include/mbedtls/ecdsa.h | 20 +++++ library/ecdsa.c | 176 ++++++++++++++++++++++++++++++++-------- 2 files changed, 161 insertions(+), 35 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index f557a4de28..ce94af871c 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -64,6 +64,22 @@ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; */ typedef struct mbedtls_ecdsa_restart_ver mbedtls_ecdsa_restart_ver_ctx; +/** + * \brief Internal restart context for ecdsa_sign() + * + * \note Opaque struct, defined in ecdsa.c + */ +typedef struct mbedtls_ecdsa_restart_sig mbedtls_ecdsa_restart_sig_ctx; + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +/** + * \brief Internal restart context for ecdsa_sign_det() + * + * \note Opaque struct, defined in ecdsa.c + */ +typedef struct mbedtls_ecdsa_restart_det mbedtls_ecdsa_restart_det_ctx; +#endif + /** * \brief General context for resuming ECDSA operations */ @@ -71,6 +87,10 @@ typedef struct { mbedtls_ecp_restart_ctx ecp; /*!< base context (admin+ecp info) */ mbedtls_ecdsa_restart_ver_ctx *ver; /*!< ecdsa_verify() sub-context */ + mbedtls_ecdsa_restart_sig_ctx *sig; /*!< ecdsa_sign() sub-context */ +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) + mbedtls_ecdsa_restart_det_ctx *det; /*!< ecdsa_sign_det() sub-context */ +#endif } mbedtls_ecdsa_restart_ctx; #else /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/ecdsa.c b/library/ecdsa.c index ec1e5872da..4c0b614628 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -86,18 +86,110 @@ static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) memset( ctx, 0, sizeof( *ctx ) ); } +/* + * Sub-contect for ecdsa_sign() + */ +struct mbedtls_ecdsa_restart_sig +{ + enum { /* what to do next? */ + ecdsa_sig_init = 0, /* getting started */ + } state; +}; + +/* + * Init verify sign sub-context + */ +static void ecdsa_restart_sig_init( mbedtls_ecdsa_restart_sig_ctx *ctx ) +{ + memset( ctx, 0, sizeof( *ctx ) ); +} + +/* + * Free the components of a sign restart sub-context + */ +static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + memset( ctx, 0, sizeof( *ctx ) ); +} + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +/* + * Sub-contect for ecdsa_sign_det() + */ +struct mbedtls_ecdsa_restart_det +{ + enum { /* what to do next? */ + ecdsa_det_init = 0, /* getting started */ + } state; +}; + +/* + * Init verify sign_det sub-context + */ +static void ecdsa_restart_det_init( mbedtls_ecdsa_restart_det_ctx *ctx ) +{ + memset( ctx, 0, sizeof( *ctx ) ); +} + +/* + * Free the components of a sign_det restart sub-context + */ +static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + memset( ctx, 0, sizeof( *ctx ) ); +} +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + #define ECDSA_RS_ECP &rs_ctx->ecp /* Utility macro for checking and updating ops budget */ #define ECDSA_BUDGET( ops ) \ MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, &rs_ctx->ecp, ops ) ); +#define ECDSA_RS_ENTER( SUB ) do { \ + /* reset ops count for this call if top-level */ \ + if( rs_ctx != NULL && rs_ctx->ecp.depth++ == 0 ) \ + rs_ctx->ecp.ops_done = 0; \ + \ + /* set up our own sub-context if needed */ \ + if( mbedtls_ecp_restart_enabled() && \ + rs_ctx != NULL && rs_ctx->SUB == NULL ) \ + { \ + rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ + if( rs_ctx->SUB == NULL ) \ + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); \ + \ + ecdsa_restart_## SUB ##_init( rs_ctx->SUB ); \ + } \ +} while( 0 ) + +#define ECDSA_RS_LEAVE( SUB ) do { \ + /* clear our sub-context when not in progress (done or error) */ \ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { \ + ecdsa_restart_## SUB ##_free( rs_ctx->SUB ); \ + mbedtls_free( rs_ctx->SUB ); \ + rs_ctx->SUB = NULL; \ + } \ + \ + if( rs_ctx != NULL ) \ + rs_ctx->ecp.depth--; \ +} while( 0 ) + #else /* MBEDTLS_ECP_RESTARTABLE */ #define ECDSA_RS_ECP NULL #define ECDSA_BUDGET( ops ) /* no-op; for compatibility */ +#define ECDSA_RS_ENTER( SUB ) (void) rs_ctx +#define ECDSA_RS_LEAVE( SUB ) (void) rs_ctx + #endif /* MBEDTLS_ECP_RESTARTABLE */ /* @@ -137,8 +229,6 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point R; mbedtls_mpi k, e, t; - (void) rs_ctx; // temporary - /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ if( grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); @@ -146,6 +236,19 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point_init( &R ); mbedtls_mpi_init( &k ); mbedtls_mpi_init( &e ); mbedtls_mpi_init( &t ); + ECDSA_RS_ENTER( sig ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->sig != NULL ) + { + /* redirect to our context */ + // TODO + + /* jump to current step */ + // TODO + } +#endif /* MBEDTLS_ECP_RESTARTABLE */ + sign_tries = 0; do { @@ -213,6 +316,8 @@ cleanup: mbedtls_ecp_point_free( &R ); mbedtls_mpi_free( &k ); mbedtls_mpi_free( &e ); mbedtls_mpi_free( &t ); + ECDSA_RS_LEAVE( sig ); + return( ret ); } @@ -244,27 +349,40 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, const mbedtls_md_info_t *md_info; mbedtls_mpi h; - (void) rs_ctx; // temporary - if( ( md_info = mbedtls_md_info_from_type( md_alg ) ) == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); mbedtls_mpi_init( &h ); mbedtls_hmac_drbg_init( &rng_ctx ); + ECDSA_RS_ENTER( det ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->det != NULL ) + { + /* redirect to our context */ + // TODO + + /* jump to current step */ + // TODO + } +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /* Use private key and message hash (reduced) to initialize HMAC_DRBG */ MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( d, data, grp_len ) ); MBEDTLS_MPI_CHK( derive_mpi( grp, &h, buf, blen ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &h, data + grp_len, grp_len ) ); mbedtls_hmac_drbg_seed_buf( &rng_ctx, md_info, data, 2 * grp_len ); - ret = mbedtls_ecdsa_sign( grp, r, s, d, buf, blen, - mbedtls_hmac_drbg_random, &rng_ctx ); + ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, + mbedtls_hmac_drbg_random, &rng_ctx, rs_ctx ); cleanup: mbedtls_hmac_drbg_free( &rng_ctx ); mbedtls_mpi_free( &h ); + ECDSA_RS_LEAVE( det ); + return( ret ); } @@ -294,10 +412,6 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point R; mbedtls_mpi *pu1 = &u1, *pu2 = &u2; -#if !defined(MBEDTLS_ECP_RESTARTABLE) - (void) rs_ctx; -#endif - mbedtls_ecp_point_init( &R ); mbedtls_mpi_init( &e ); mbedtls_mpi_init( &s_inv ); mbedtls_mpi_init( &u1 ); mbedtls_mpi_init( &u2 ); @@ -306,21 +420,9 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, if( grp->N.p == NULL ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); + ECDSA_RS_ENTER( ver ); + #if defined(MBEDTLS_ECP_RESTARTABLE) - /* reset ops count for this call if top-level */ - if( rs_ctx != NULL && rs_ctx->ecp.depth++ == 0 ) - rs_ctx->ecp.ops_done = 0; - - /* set up our own sub-context if needed */ - if( mbedtls_ecp_restart_enabled() && rs_ctx != NULL && rs_ctx->ver == NULL ) - { - rs_ctx->ver = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_restart_ver_ctx ) ); - if( rs_ctx->ver == NULL ) - return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); - - ecdsa_restart_ver_init( rs_ctx->ver ); - } - if( rs_ctx != NULL && rs_ctx->ver != NULL ) { /* redirect to our context */ @@ -404,17 +506,7 @@ cleanup: mbedtls_mpi_free( &e ); mbedtls_mpi_free( &s_inv ); mbedtls_mpi_free( &u1 ); mbedtls_mpi_free( &u2 ); -#if defined(MBEDTLS_ECP_RESTARTABLE) - /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { - ecdsa_restart_ver_free( rs_ctx->ver ); - mbedtls_free( rs_ctx->ver ); - rs_ctx->ver = NULL; - } - - if( rs_ctx != NULL ) - rs_ctx->ecp.depth--; -#endif /* MBEDTLS_ECP_RESTARTABLE */ + ECDSA_RS_LEAVE( ver ); return( ret ); } @@ -632,6 +724,10 @@ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) mbedtls_ecp_restart_init( &ctx->ecp ); ctx->ver = NULL; + ctx->sig = NULL; +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) + ctx->det = NULL; +#endif } /* @@ -644,6 +740,16 @@ void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) ecdsa_restart_ver_free( ctx->ver ); mbedtls_free( ctx->ver ); ctx->ver = NULL; + + ecdsa_restart_sig_free( ctx->sig ); + mbedtls_free( ctx->sig ); + ctx->sig = NULL; + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) + ecdsa_restart_det_free( ctx->det ); + mbedtls_free( ctx->det ); + ctx->det = NULL; +#endif } #endif /* MBEDTLS_ECP_RESTARTABLE */ From 675439620d3029c313e0a804e0ae1e24d6ef376a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 21 Apr 2017 13:19:43 +0200 Subject: [PATCH 0060/1100] Improve sign/key_tries handling (Unrelated to restartable work, just noticed while staring at the code.) Checking at the end is inefficient as we might give up when we just generated a valid signature or key. --- library/ecdsa.c | 18 +++++++++--------- library/ecp.c | 23 +++++++++++------------ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 4c0b614628..14854ffac0 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -252,6 +252,12 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, sign_tries = 0; do { + if( sign_tries++ > 10 ) + { + ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; + goto cleanup; + } + /* * Steps 1-3: generate a suitable ephemeral keypair * and set r = xR mod n @@ -259,14 +265,14 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, key_tries = 0; do { - MBEDTLS_MPI_CHK( mbedtls_ecp_gen_keypair( grp, &k, &R, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( r, &R.X, &grp->N ) ); - if( key_tries++ > 10 ) { ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; goto cleanup; } + + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_keypair( grp, &k, &R, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( r, &R.X, &grp->N ) ); } while( mbedtls_mpi_cmp_int( r, 0 ) == 0 ); @@ -303,12 +309,6 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( s, &k, &grp->N ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, s, &e ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( s, s, &grp->N ) ); - - if( sign_tries++ > 10 ) - { - ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; - goto cleanup; - } } while( mbedtls_mpi_cmp_int( s, 0 ) == 0 ); diff --git a/library/ecp.c b/library/ecp.c index 0f1cbfce4c..9b586eebe0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2531,24 +2531,23 @@ int mbedtls_ecp_gen_privkey( const mbedtls_ecp_group *grp, * - keep the leftmost nbits bits of the generated octet string; * - try until result is in the desired range. * This also avoids any biais, which is especially important for ECDSA. + * + * Each try has at worst a probability 1/2 of failing (the msb has + * a probability 1/2 of being 0, and then the result will be < N), + * so after 30 tries failure probability is a most 2**(-30). + * + * For most curves, 1 try is enough with overwhelming probability, + * since N starts with a lot of 1s in binary, but some curves + * such as secp224k1 are actually very close to the worst case. */ do { + if( ++count > 30 ) + return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); + MBEDTLS_MPI_CHK( f_rng( p_rng, rnd, n_size ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_read_binary( d, rnd, n_size ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( d, 8 * n_size - grp->nbits ) ); - - /* - * Each try has at worst a probability 1/2 of failing (the msb has - * a probability 1/2 of being 0, and then the result will be < N), - * so after 30 tries failure probability is a most 2**(-30). - * - * For most curves, 1 try is enough with overwhelming probability, - * since N starts with a lot of 1s in binary, but some curves - * such as secp224k1 are actually very close to the worst case. - */ - if( ++count > 30 ) - return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); } while( mbedtls_mpi_cmp_int( d, 1 ) < 0 || mbedtls_mpi_cmp_mpi( d, &grp->N ) >= 0 ); From 50b63ba2f588910123f4366c5145435ea9df3c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 25 Apr 2017 12:57:22 +0200 Subject: [PATCH 0061/1100] Use ecp_gen_privkey() in ECDSA sign Two different changes: - the first one will allow us to store k in the restart context while restarting the following ecp_mul() operation - the second one is an simplification, unrelated to restartability, made possible by the fact that ecp_gen_privkey() is now public --- library/ecdsa.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 14854ffac0..b8aef5d30b 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -225,7 +225,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_ecdsa_restart_ctx *rs_ctx ) { - int ret, key_tries, sign_tries, blind_tries; + int ret, key_tries, sign_tries; mbedtls_ecp_point R; mbedtls_mpi k, e, t; @@ -271,7 +271,10 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, goto cleanup; } - MBEDTLS_MPI_CHK( mbedtls_ecp_gen_keypair( grp, &k, &R, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, &k, f_rng, p_rng ) ); + + MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, &R, &k, &grp->G, + f_rng, p_rng ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( r, &R.X, &grp->N ) ); } while( mbedtls_mpi_cmp_int( r, 0 ) == 0 ); @@ -285,19 +288,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, * Generate a random value to blind inv_mod in next step, * avoiding a potential timing leak. */ - blind_tries = 0; - do - { - size_t n_size = ( grp->nbits + 7 ) / 8; - MBEDTLS_MPI_CHK( mbedtls_mpi_fill_random( &t, n_size, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_shift_r( &t, 8 * n_size - grp->nbits ) ); - - /* See mbedtls_ecp_gen_keypair() */ - if( ++blind_tries > 30 ) - return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); - } - while( mbedtls_mpi_cmp_int( &t, 1 ) < 0 || - mbedtls_mpi_cmp_mpi( &t, &grp->N ) >= 0 ); + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, &t, f_rng, p_rng ) ); /* * Step 6: compute s = (e + r * d) / k = t (e + rd) / (kt) mod n From af081f546076b76cabb19cf88a35e75a44943499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 25 Apr 2017 13:44:19 +0200 Subject: [PATCH 0062/1100] Make ECDSA sign actually restartable --- library/ecdsa.c | 98 ++++++++++++++++++++++++------ tests/suites/test_suite_ecdsa.data | 12 ++++ 2 files changed, 91 insertions(+), 19 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index b8aef5d30b..e137a0074d 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -91,8 +91,14 @@ static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) */ struct mbedtls_ecdsa_restart_sig { + int sign_tries; + int key_tries; + mbedtls_mpi k; /* per-signature random */ + mbedtls_mpi r; /* r value */ enum { /* what to do next? */ ecdsa_sig_init = 0, /* getting started */ + ecdsa_sig_mul, /* doing ecp_mul() */ + ecdsa_sig_modn, /* mod N computations */ } state; }; @@ -102,6 +108,9 @@ struct mbedtls_ecdsa_restart_sig static void ecdsa_restart_sig_init( mbedtls_ecdsa_restart_sig_ctx *ctx ) { memset( ctx, 0, sizeof( *ctx ) ); + + mbedtls_mpi_init( &ctx->k ); + mbedtls_mpi_init( &ctx->r ); } /* @@ -112,6 +121,9 @@ static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) if( ctx == NULL ) return; + mbedtls_mpi_free( &ctx->k ); + mbedtls_mpi_free( &ctx->r ); + memset( ctx, 0, sizeof( *ctx ) ); } @@ -121,8 +133,10 @@ static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) */ struct mbedtls_ecdsa_restart_det { + mbedtls_hmac_drbg_context rng_ctx; /* DRBG state */ enum { /* what to do next? */ - ecdsa_det_init = 0, /* getting started */ + ecdsa_det_init = 0, /* getting started */ + ecdsa_det_sign, /* make signature */ } state; }; @@ -132,6 +146,8 @@ struct mbedtls_ecdsa_restart_det static void ecdsa_restart_det_init( mbedtls_ecdsa_restart_det_ctx *ctx ) { memset( ctx, 0, sizeof( *ctx ) ); + + mbedtls_hmac_drbg_init( &ctx->rng_ctx ); } /* @@ -142,6 +158,8 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) if( ctx == NULL ) return; + mbedtls_hmac_drbg_free( &ctx->rng_ctx ); + memset( ctx, 0, sizeof( *ctx ) ); } #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ @@ -226,8 +244,10 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, mbedtls_ecdsa_restart_ctx *rs_ctx ) { int ret, key_tries, sign_tries; + int *p_sign_tries = &sign_tries, *p_key_tries = &key_tries; mbedtls_ecp_point R; mbedtls_mpi k, e, t; + mbedtls_mpi *pk = &k, *pr = r; /* Fail cleanly on curves such as Curve25519 that can't be used for ECDSA */ if( grp->N.p == NULL ) @@ -242,17 +262,24 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, if( rs_ctx != NULL && rs_ctx->sig != NULL ) { /* redirect to our context */ - // TODO + p_sign_tries = &rs_ctx->sig->sign_tries; + p_key_tries = &rs_ctx->sig->key_tries; + pk = &rs_ctx->sig->k; + pr = &rs_ctx->sig->r; + /* jump to current step */ - // TODO + if( rs_ctx->sig->state == ecdsa_sig_mul ) + goto mul; + if( rs_ctx->sig->state == ecdsa_sig_modn ) + goto modn; } #endif /* MBEDTLS_ECP_RESTARTABLE */ - sign_tries = 0; + *p_sign_tries = 0; do { - if( sign_tries++ > 10 ) + if( *p_sign_tries++ > 10 ) { ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; goto cleanup; @@ -262,22 +289,43 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, * Steps 1-3: generate a suitable ephemeral keypair * and set r = xR mod n */ - key_tries = 0; + *p_key_tries = 0; do { - if( key_tries++ > 10 ) + if( *p_key_tries++ > 10 ) { ret = MBEDTLS_ERR_ECP_RANDOM_FAILED; goto cleanup; } - MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, &k, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, pk, f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, &R, &k, &grp->G, - f_rng, p_rng ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( r, &R.X, &grp->N ) ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->sig != NULL ) + { + rs_ctx->sig->state++; + } + +mul: +#endif + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, &R, pk, &grp->G, + f_rng, p_rng, ECDSA_RS_ECP ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( pr, &R.X, &grp->N ) ); } - while( mbedtls_mpi_cmp_int( r, 0 ) == 0 ); + while( mbedtls_mpi_cmp_int( pr, 0 ) == 0 ); + + +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->sig != NULL ) + rs_ctx->sig->state++; + +modn: +#endif + /* + * Accounting for everything up to the end of the loop + * (step 6, but checking now avoids saving e and t) + */ + ECDSA_BUDGET( MBEDTLS_ECP_OPS_INV + 4 ); /* * Step 5: derive MPI from hashed message @@ -293,16 +341,20 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, /* * Step 6: compute s = (e + r * d) / k = t (e + rd) / (kt) mod n */ - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, r, d ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, pr, d ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_add_mpi( &e, &e, s ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &e, &e, &t ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &k, &k, &t ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( s, &k, &grp->N ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( pk, pk, &t ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( s, pk, &grp->N ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( s, s, &e ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mod_mpi( s, s, &grp->N ) ); } while( mbedtls_mpi_cmp_int( s, 0 ) == 0 ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_mpi_copy( r, pr ); +#endif + cleanup: mbedtls_ecp_point_free( &R ); mbedtls_mpi_free( &k ); mbedtls_mpi_free( &e ); mbedtls_mpi_free( &t ); @@ -335,6 +387,7 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, { int ret; mbedtls_hmac_drbg_context rng_ctx; + mbedtls_hmac_drbg_context *p_rng = &rng_ctx; unsigned char data[2 * MBEDTLS_ECP_MAX_BYTES]; size_t grp_len = ( grp->nbits + 7 ) / 8; const mbedtls_md_info_t *md_info; @@ -352,10 +405,11 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, if( rs_ctx != NULL && rs_ctx->det != NULL ) { /* redirect to our context */ - // TODO + p_rng = &rs_ctx->det->rng_ctx; /* jump to current step */ - // TODO + if( rs_ctx->det->state == ecdsa_det_sign ) + goto sign; } #endif /* MBEDTLS_ECP_RESTARTABLE */ @@ -363,10 +417,16 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( d, data, grp_len ) ); MBEDTLS_MPI_CHK( derive_mpi( grp, &h, buf, blen ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_write_binary( &h, data + grp_len, grp_len ) ); - mbedtls_hmac_drbg_seed_buf( &rng_ctx, md_info, data, 2 * grp_len ); + mbedtls_hmac_drbg_seed_buf( p_rng, md_info, data, 2 * grp_len ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->det != NULL ) + rs_ctx->det->state++; + +sign: +#endif ret = ecdsa_sign_restartable( grp, r, s, d, buf, blen, - mbedtls_hmac_drbg_random, &rng_ctx, rs_ctx ); + mbedtls_hmac_drbg_random, p_rng, rs_ctx ); cleanup: mbedtls_hmac_drbg_free( &rng_ctx ); diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index c236c28c6c..f9c8f60687 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -269,3 +269,15 @@ ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387 ECDSA restartable sign-write: secp256r1 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 + +ECDSA restartable sign-write: secp256r1 restart max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":1:1:10000 + +ECDSA restartable sign-write: secp256r1 restart max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":10000:0:0 + +ECDSA restartable sign-write: secp256r1 restart max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":250:2:32 From c90d3b0f896761dc4c7830cdd01cb894c5536cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 27 Apr 2017 10:48:29 +0200 Subject: [PATCH 0063/1100] Update doc for restartable ECDH functions --- include/mbedtls/ecdh.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 625a281923..506a1cfb95 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -67,6 +67,8 @@ mbedtls_ecdh_context; * * \return 0 if successful, * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), @@ -85,6 +87,8 @@ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp * * \return 0 if successful, * or a MBEDTLS_ERR_ECP_XXX or MBEDTLS_MPI_XXX error code + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). * * \note If f_rng is not NULL, it is used to implement * countermeasures against potential elaborate timing @@ -124,6 +128,8 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ); * properly set (for example using mbedtls_ecp_group_load). * * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, @@ -170,6 +176,8 @@ int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypai * \param p_rng RNG parameter * * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, @@ -201,6 +209,8 @@ int mbedtls_ecdh_read_public( mbedtls_ecdh_context *ctx, * \param p_rng RNG parameter * * \return 0 if successful, or an MBEDTLS_ERR_ECP_XXX error code + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, From 71b2c53254b670ae2639d33c415bdfc446d9ef95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 27 Apr 2017 10:38:52 +0200 Subject: [PATCH 0064/1100] Add tests for restartable ECDH --- tests/suites/test_suite_ecdh.data | 4 + tests/suites/test_suite_ecdh.function | 110 ++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/tests/suites/test_suite_ecdh.data b/tests/suites/test_suite_ecdh.data index f7119de416..98c4f60c10 100644 --- a/tests/suites/test_suite_ecdh.data +++ b/tests/suites/test_suite_ecdh.data @@ -37,3 +37,7 @@ ecdh_exchange:MBEDTLS_ECP_DP_SECP192R1 ECDH exchange #2 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED ecdh_exchange:MBEDTLS_ECP_DP_SECP521R1 + +ECDH restartable rfc 5903 p256 restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:0:0 diff --git a/tests/suites/test_suite_ecdh.function b/tests/suites/test_suite_ecdh.function index 4c6a97baf0..911464ad08 100644 --- a/tests/suites/test_suite_ecdh.function +++ b/tests/suites/test_suite_ecdh.function @@ -158,3 +158,113 @@ exit: mbedtls_ecdh_free( &cli ); } /* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */ +void ecdh_restart( int id, char *dA_str, char *dB_str, char *z_str, + int max_ops, int min_restart, int max_restart ) +{ + int ret; + mbedtls_ecdh_context srv, cli; + unsigned char buf[1000]; + const unsigned char *vbuf; + size_t len; + unsigned char z[MBEDTLS_ECP_MAX_BYTES]; + size_t z_len; + unsigned char rnd_buf_A[MBEDTLS_ECP_MAX_BYTES]; + unsigned char rnd_buf_B[MBEDTLS_ECP_MAX_BYTES]; + rnd_buf_info rnd_info_A, rnd_info_B; + int cnt_restart; + + mbedtls_ecdh_init( &srv ); + mbedtls_ecdh_init( &cli ); + + z_len = unhexify( z, z_str ); + + rnd_info_A.buf = rnd_buf_A; + rnd_info_A.length = unhexify( rnd_buf_A, dA_str ); + + rnd_info_B.buf = rnd_buf_B; + rnd_info_B.length = unhexify( rnd_buf_B, dB_str ); + + TEST_ASSERT( mbedtls_ecp_group_load( &srv.grp, id ) == 0 ); + + /* otherwise we would have to fix the random buffer, + * as in ecdh_primitive_test_vec */ + TEST_ASSERT( srv.grp.nbits % 8 == 0 ); + + mbedtls_ecp_set_max_ops( max_ops ); + + /* server writes its paramaters */ + memset( buf, 0x00, sizeof( buf ) ); + len = 0; + + cnt_restart = 0; + do { + ret = mbedtls_ecdh_make_params( &srv, &len, buf, sizeof( buf ), + rnd_buffer_rand, &rnd_info_A ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + /* client read server params */ + vbuf = buf; + TEST_ASSERT( mbedtls_ecdh_read_params( &cli, &vbuf, buf + len ) == 0 ); + + /* client writes its key share */ + memset( buf, 0x00, sizeof( buf ) ); + len = 0; + + cnt_restart = 0; + do { + ret = mbedtls_ecdh_make_public( &cli, &len, buf, sizeof( buf ), + rnd_buffer_rand, &rnd_info_B ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + /* server reads client key share */ + TEST_ASSERT( mbedtls_ecdh_read_public( &srv, buf, len ) == 0 ); + + /* server computes shared secret */ + memset( buf, 0, sizeof( buf ) ); + len = 0; + + cnt_restart = 0; + do { + ret = mbedtls_ecdh_calc_secret( &srv, &len, buf, sizeof( buf ), + NULL, NULL ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + TEST_ASSERT( len == z_len ); + TEST_ASSERT( memcmp( buf, z, len ) == 0 ); + + /* client computes shared secret */ + memset( buf, 0, sizeof( buf ) ); + len = 0; + + cnt_restart = 0; + do { + ret = mbedtls_ecdh_calc_secret( &cli, &len, buf, sizeof( buf ), + NULL, NULL ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + TEST_ASSERT( len == z_len ); + TEST_ASSERT( memcmp( buf, z, len ) == 0 ); + +exit: + mbedtls_ecdh_free( &srv ); + mbedtls_ecdh_free( &cli ); +} +/* END_CASE */ From 66ba48a3c8e6522b48acffca9cb6beb7c9d7a23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 27 Apr 2017 11:38:26 +0200 Subject: [PATCH 0065/1100] Make ECDH functions actually restartable --- include/mbedtls/ecdh.h | 3 ++ library/ecdh.c | 86 ++++++++++++++++++++++++++----- tests/suites/test_suite_ecdh.data | 12 +++++ 3 files changed, 89 insertions(+), 12 deletions(-) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 506a1cfb95..e707558a87 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -52,6 +52,9 @@ typedef struct mbedtls_ecp_point Vi; /*!< blinding value (for later) */ mbedtls_ecp_point Vf; /*!< un-blinding value (for later) */ mbedtls_mpi _d; /*!< previous d (for later) */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecp_restart_ctx rs; /*!< restart context for EC computations */ +#endif } mbedtls_ecdh_context; diff --git a/library/ecdh.c b/library/ecdh.c index c0a8147312..b2859c4b6e 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -39,22 +39,48 @@ #include /* - * Generate public key: simple wrapper around mbedtls_ecp_gen_keypair + * Generate public key (restartable version) + */ +static int ecdh_gen_public_restartable( mbedtls_ecp_group *grp, + mbedtls_mpi *d, mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) +{ + int ret; + + /* If multiplication is in progress, we already generated a privkey */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx == NULL || rs_ctx->rsm == NULL ) +#endif + MBEDTLS_MPI_CHK( mbedtls_ecp_gen_privkey( grp, d, f_rng, p_rng ) ); + + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, Q, d, &grp->G, + f_rng, p_rng, rs_ctx ) ); + +cleanup: + return( ret ); +} + +/* + * Generate public key */ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) { - return mbedtls_ecp_gen_keypair( grp, d, Q, f_rng, p_rng ); + return( ecdh_gen_public_restartable( grp, d, Q, f_rng, p_rng, NULL ) ); } /* * Compute shared secret (SEC1 3.3.1) */ -int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, +static int ecdh_compute_shared_restartable( mbedtls_ecp_group *grp, + mbedtls_mpi *z, const mbedtls_ecp_point *Q, const mbedtls_mpi *d, int (*f_rng)(void *, unsigned char *, size_t), - void *p_rng ) + void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; mbedtls_ecp_point P; @@ -66,7 +92,8 @@ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, */ MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, Q ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul( grp, &P, d, Q, f_rng, p_rng ) ); + MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, &P, d, Q, + f_rng, p_rng, rs_ctx ) ); if( mbedtls_ecp_is_zero( &P ) ) { @@ -82,12 +109,28 @@ cleanup: return( ret ); } +/* + * Compute shared secret (SEC1 3.3.1) + */ +int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, + const mbedtls_ecp_point *Q, const mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ) +{ + return( ecdh_compute_shared_restartable( grp, z, Q, d, + f_rng, p_rng, NULL ) ); +} + /* * Initialize context */ void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_ecdh_context ) ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecp_restart_init( &ctx->rs ); +#endif } /* @@ -106,6 +149,10 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ) mbedtls_mpi_free( &ctx->d ); mbedtls_mpi_free( &ctx->z ); mbedtls_mpi_free( &ctx->_d ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecp_restart_free( &ctx->rs ); +#endif } /* @@ -122,12 +169,17 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, { int ret; size_t grp_len, pt_len; + mbedtls_ecp_restart_ctx *rs_ctx = NULL; if( ctx == NULL || ctx->grp.pbits == 0 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - if( ( ret = mbedtls_ecdh_gen_public( &ctx->grp, &ctx->d, &ctx->Q, f_rng, p_rng ) ) - != 0 ) +#if defined(MBEDTLS_ECP_RESTARTABLE) + rs_ctx = &ctx->rs; +#endif + + if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, + f_rng, p_rng, rs_ctx ) ) != 0 ) return( ret ); if( ( ret = mbedtls_ecp_tls_write_group( &ctx->grp, &grp_len, buf, blen ) ) @@ -202,12 +254,17 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, void *p_rng ) { int ret; + mbedtls_ecp_restart_ctx *rs_ctx = NULL; if( ctx == NULL || ctx->grp.pbits == 0 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - if( ( ret = mbedtls_ecdh_gen_public( &ctx->grp, &ctx->d, &ctx->Q, f_rng, p_rng ) ) - != 0 ) +#if defined(MBEDTLS_ECP_RESTARTABLE) + rs_ctx = &ctx->rs; +#endif + + if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, + f_rng, p_rng, rs_ctx ) ) != 0 ) return( ret ); return mbedtls_ecp_tls_write_point( &ctx->grp, &ctx->Q, ctx->point_format, @@ -244,12 +301,17 @@ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, void *p_rng ) { int ret; + mbedtls_ecp_restart_ctx *rs_ctx = NULL; - if( ctx == NULL ) + if( ctx == NULL || ctx->grp.pbits == 0 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); - if( ( ret = mbedtls_ecdh_compute_shared( &ctx->grp, &ctx->z, &ctx->Qp, &ctx->d, - f_rng, p_rng ) ) != 0 ) +#if defined(MBEDTLS_ECP_RESTARTABLE) + rs_ctx = &ctx->rs; +#endif + + if( ( ret = ecdh_compute_shared_restartable( &ctx->grp, + &ctx->z, &ctx->Qp, &ctx->d, f_rng, p_rng, rs_ctx ) ) != 0 ) { return( ret ); } diff --git a/tests/suites/test_suite_ecdh.data b/tests/suites/test_suite_ecdh.data index 98c4f60c10..991d11388d 100644 --- a/tests/suites/test_suite_ecdh.data +++ b/tests/suites/test_suite_ecdh.data @@ -41,3 +41,15 @@ ecdh_exchange:MBEDTLS_ECP_DP_SECP521R1 ECDH restartable rfc 5903 p256 restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:0:0 + +ECDH restartable rfc 5903 p256 restart max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:1:10000 + +ECDH restartable rfc 5903 p256 restart max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":10000:0:0 + +ECDH restartable rfc 5903 p256 restart max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":250:2:32 From fd838dab5cdc13c831851cf6bc00e4d8ff3f167c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 27 Apr 2017 11:38:51 +0200 Subject: [PATCH 0066/1100] Comment cosmetics --- include/mbedtls/ecdh.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index e707558a87..2e344a8c95 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -43,15 +43,15 @@ typedef enum */ typedef struct { - mbedtls_ecp_group grp; /*!< elliptic curve used */ - mbedtls_mpi d; /*!< our secret value (private key) */ - mbedtls_ecp_point Q; /*!< our public value (public key) */ - mbedtls_ecp_point Qp; /*!< peer's public value (public key) */ - mbedtls_mpi z; /*!< shared secret */ - int point_format; /*!< format for point export in TLS messages */ - mbedtls_ecp_point Vi; /*!< blinding value (for later) */ - mbedtls_ecp_point Vf; /*!< un-blinding value (for later) */ - mbedtls_mpi _d; /*!< previous d (for later) */ + mbedtls_ecp_group grp; /*!< elliptic curve used */ + mbedtls_mpi d; /*!< our secret value (private key) */ + mbedtls_ecp_point Q; /*!< our public value (public key) */ + mbedtls_ecp_point Qp; /*!< peer's public value (public key) */ + mbedtls_mpi z; /*!< shared secret */ + int point_format; /*!< format for point export in TLS */ + mbedtls_ecp_point Vi; /*!< blinding value (for later) */ + mbedtls_ecp_point Vf; /*!< un-blinding value (for later) */ + mbedtls_mpi _d; /*!< previous d (for later) */ #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_ctx rs; /*!< restart context for EC computations */ #endif From 82cb27b3db2b15e32937cbca9474afbd9e2ccd5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 3 May 2017 10:59:45 +0200 Subject: [PATCH 0067/1100] PK: declare restartable sign/verify functions For RSA, we could either have the function return an error code like NOT_IMPLEMENTED or just run while disregarding ecp_max_ops. IMO the second option makes more sense, as otherwise the caller would need to check whether the key is EC or RSA before deciding to call either sign() or sign_restartable(), and having to do this kind of check feels contrary to the goal of the PK layer. --- include/mbedtls/pk.h | 57 ++++++++++++++++++++++++++++++++++++++++++++ library/pk.c | 43 ++++++++++++++++++++++++++++----- 2 files changed, 94 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index f9f9b9bb09..05c51d38d5 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -284,6 +284,33 @@ int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len ); +/** + * \brief Restartable version of \c mbedtls_pk_verify() + * + * \note Performs the same job as \c mbedtls_pk_verify(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking for ECC + * operations. For RSA, same as \c mbedtls_pk_verify(). + * + * \param ctx PK context to use + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Signature to verify + * \param sig_len Signature length + * \param rs_ctx Restart context: for ECC, must be NULL (no restart) or a + * pointer to a \c mbedtls_ecdsa_restart_ctx. Ignored for RSA. + * + * \return See \c mbedtls_pk_verify(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *rs_ctx ); + /** * \brief Verify signature, with options. * (Includes verification of the padding depending on type.) @@ -347,6 +374,36 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +/** + * \brief Restartable version of \c mbedtls_pk_sign() + * + * \note Performs the same job as \c mbedtls_pk_sign(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking for ECC + * operations. For RSA, same as \c mbedtls_pk_sign(). + * + * \param ctx PK context to use - must hold a private key + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Place to write the signature + * \param sig_len Number of bytes written + * \param f_rng RNG function + * \param p_rng RNG parameter + * \param rs_ctx Restart context: for ECC, must be NULL (no restart) or a + * pointer to a \c mbedtls_ecdsa_restart_ctx. Ignored for RSA. + * + * \return See \c mbedtls_pk_sign(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + void *rs_ctx ); + /** * \brief Decrypt message (including padding if relevant). * diff --git a/library/pk.c b/library/pk.c index 8d13bc5ce3..b5081f961a 100644 --- a/library/pk.c +++ b/library/pk.c @@ -176,12 +176,16 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len } /* - * Verify a signature + * Verify a signature (restartable) */ -int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, +int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, - const unsigned char *sig, size_t sig_len ) + const unsigned char *sig, size_t sig_len, + void *rs_ctx ) { + (void) rs_ctx; // XXX temporary + if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); @@ -193,6 +197,17 @@ int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, sig, sig_len ) ); } +/* + * Verify a signature + */ +int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ) +{ + return( mbedtls_pk_verify_restartable( ctx, md_alg, hash, hash_len, + sig, sig_len, NULL ) ); +} + /* * Verify a signature with options */ @@ -252,13 +267,17 @@ int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, } /* - * Make a signature + * Make a signature (restartable) */ -int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, +int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + void *rs_ctx ) { + (void) rs_ctx; // XXX temporary + if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); @@ -270,6 +289,18 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, sig, sig_len, f_rng, p_rng ) ); } +/* + * Make a signature + */ +int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ) +{ + return( mbedtls_pk_sign_restartable( ctx, md_alg, hash, hash_len, + sig, sig_len, f_rng, p_rng, NULL ) ); +} + /* * Decrypt message */ From c4ee9acb7b58f05d360f881ac92372eb3d42eaa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 8 May 2017 10:09:36 +0200 Subject: [PATCH 0068/1100] Add tests for restartable PK sign/verify --- tests/suites/test_suite_pk.data | 8 ++ tests/suites/test_suite_pk.function | 160 +++++++++++++++++++++++++++- 2 files changed, 166 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index dc24cfdd30..8ca9a2194c 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -153,3 +153,11 @@ mbedtls_pk_check_pair:"data_files/ec_256_pub.pem":"data_files/server1.key":MBEDT RSA hash_len overflow (size_t vs unsigned int) depends_on:MBEDTLS_RSA_C:MBEDTLS_HAVE_INT64 pk_rsa_overflow: + +ECDSA restartable sign/verify: ECDSA, restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 + +ECDSA restartable sign/verify: ECKEY, restart disabled +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 5fa8a693aa..6e8c032c1c 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -127,6 +127,14 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, mbedtls_rsa_context *rsa; mbedtls_pk_context pk; int msg_len; + void *rs_ctx = NULL; +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecdsa_restart_ctx ctx; + + rs_ctx = &ctx; + mbedtls_ecdsa_restart_init( rs_ctx ); + mbedtls_ecp_set_max_ops( 42 ); +#endif mbedtls_pk_init( &pk ); @@ -150,7 +158,13 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, TEST_ASSERT( mbedtls_pk_verify( &pk, digest, hash_result, 0, result_str, mbedtls_pk_get_len( &pk ) ) == result ); + TEST_ASSERT( mbedtls_pk_verify_restartable( &pk, digest, hash_result, 0, + result_str, mbedtls_pk_get_len( &pk ), rs_ctx ) == result ); + exit: +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecdsa_restart_free( rs_ctx ); +#endif mbedtls_pk_free( &pk ); } /* END_CASE */ @@ -253,12 +267,118 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE:MBEDTLS_ECDSA_C:MBEDTLS_ECDSA_DETERMINISTIC */ +void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, + char *QX_str, char *QY_str, + int md_alg, char *msg, char *sig_str, + int max_ops, int min_restart, int max_restart ) +{ + int ret, cnt_restart; + mbedtls_ecdsa_restart_ctx rs_ctx; + mbedtls_pk_context prv, pub; + unsigned char hash[MBEDTLS_MD_MAX_SIZE]; + unsigned char sig[MBEDTLS_ECDSA_MAX_LEN]; + unsigned char sig_check[MBEDTLS_ECDSA_MAX_LEN]; + size_t hlen, slen, slen_check; + const mbedtls_md_info_t *md_info; + + mbedtls_ecdsa_restart_init( &rs_ctx ); + mbedtls_pk_init( &prv ); + mbedtls_pk_init( &pub ); + memset( hash, 0, sizeof( hash ) ); + memset( sig, 0, sizeof( sig ) ); + memset( sig_check, 0, sizeof( sig_check ) ); + + TEST_ASSERT( mbedtls_pk_setup( &prv, mbedtls_pk_info_from_type( pk_type ) ) == 0 ); + TEST_ASSERT( mbedtls_ecp_group_load( &mbedtls_pk_ec( prv )->grp, grp_id ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_string( &mbedtls_pk_ec( prv )->d, 16, d_str ) == 0 ); + + TEST_ASSERT( mbedtls_pk_setup( &pub, mbedtls_pk_info_from_type( pk_type ) ) == 0 ); + TEST_ASSERT( mbedtls_ecp_group_load( &mbedtls_pk_ec( pub )->grp, grp_id ) == 0 ); + TEST_ASSERT( mbedtls_ecp_point_read_string( &mbedtls_pk_ec( pub )->Q, 16, QX_str, QY_str ) == 0 ); + + slen_check = unhexify( sig_check, sig_str ); + + md_info = mbedtls_md_info_from_type( md_alg ); + TEST_ASSERT( md_info != NULL ); + + hlen = mbedtls_md_get_size( md_info ); + mbedtls_md( md_info, (const unsigned char *) msg, strlen( msg ), hash ); + + mbedtls_ecp_set_max_ops( max_ops ); + + slen = sizeof( sig ); + cnt_restart = 0; + do { + ret = mbedtls_pk_sign_restartable( &prv, md_alg, hash, hlen, + sig, &slen, NULL, NULL, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( slen == slen_check ); + TEST_ASSERT( memcmp( sig, sig_check, slen ) == 0 ); + + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + cnt_restart = 0; + do { + ret = mbedtls_pk_verify_restartable( &pub, md_alg, + hash, hlen, sig, slen, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + hash[0]++; + do { + ret = mbedtls_pk_verify_restartable( &pub, md_alg, + hash, hlen, sig, slen, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + TEST_ASSERT( ret != 0 ); + hash[0]--; + + sig[0]++; + do { + ret = mbedtls_pk_verify_restartable( &pub, md_alg, + hash, hlen, sig, slen, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + TEST_ASSERT( ret != 0 ); + sig[0]--; + + /* Do we leak memory when aborting? try verify then sign */ + ret = mbedtls_pk_verify_restartable( &pub, md_alg, + hash, hlen, sig, slen, &rs_ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + mbedtls_ecdsa_restart_free( &rs_ctx ); + + slen = sizeof( sig ); + ret = mbedtls_pk_sign_restartable( &prv, md_alg, hash, hlen, + sig, &slen, NULL, NULL, &rs_ctx ); + TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + +exit: + mbedtls_ecdsa_restart_free( &rs_ctx ); + mbedtls_pk_free( &prv ); + mbedtls_pk_free( &pub ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ void pk_sign_verify( int type, int sign_ret, int verify_ret ) { mbedtls_pk_context pk; unsigned char hash[50], sig[5000]; size_t sig_len; + void *rs_ctx = NULL; +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecdsa_restart_ctx ctx; + + rs_ctx = &ctx; + mbedtls_ecdsa_restart_init( rs_ctx ); + mbedtls_ecp_set_max_ops( 42000 ); +#endif mbedtls_pk_init( &pk ); @@ -268,13 +388,49 @@ void pk_sign_verify( int type, int sign_ret, int verify_ret ) TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( type ) ) == 0 ); TEST_ASSERT( pk_genkey( &pk ) == 0 ); - TEST_ASSERT( mbedtls_pk_sign( &pk, MBEDTLS_MD_SHA256, hash, sizeof hash, - sig, &sig_len, rnd_std_rand, NULL ) == sign_ret ); + TEST_ASSERT( mbedtls_pk_sign_restartable( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, &sig_len, + rnd_std_rand, NULL, rs_ctx ) == sign_ret ); TEST_ASSERT( mbedtls_pk_verify( &pk, MBEDTLS_MD_SHA256, hash, sizeof hash, sig, sig_len ) == verify_ret ); + if( verify_ret == 0 ) + { + hash[0]++; + TEST_ASSERT( mbedtls_pk_verify( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, sig_len ) != 0 ); + hash[0]--; + + sig[0]++; + TEST_ASSERT( mbedtls_pk_verify( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, sig_len ) != 0 ); + sig[0]--; + } + + TEST_ASSERT( mbedtls_pk_sign( &pk, MBEDTLS_MD_SHA256, hash, sizeof hash, + sig, &sig_len, rnd_std_rand, NULL ) == sign_ret ); + + TEST_ASSERT( mbedtls_pk_verify_restartable( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, sig_len, rs_ctx ) == verify_ret ); + + if( verify_ret == 0 ) + { + hash[0]++; + TEST_ASSERT( mbedtls_pk_verify_restartable( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, sig_len, rs_ctx ) != 0 ); + hash[0]--; + + sig[0]++; + TEST_ASSERT( mbedtls_pk_verify_restartable( &pk, MBEDTLS_MD_SHA256, + hash, sizeof hash, sig, sig_len, rs_ctx ) != 0 ); + sig[0]--; + } + exit: +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecdsa_restart_free( rs_ctx ); +#endif mbedtls_pk_free( &pk ); } /* END_CASE */ From 1f596064bc3683f6214a87dd0f6b7cb3f97be004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 9 May 2017 10:42:40 +0200 Subject: [PATCH 0069/1100] Make PK EC sign/verify actually restartable --- include/mbedtls/ecdsa.h | 3 + include/mbedtls/pk_internal.h | 15 +++ library/ecdsa.c | 9 ++ library/pk.c | 24 ++++- library/pk_wrap.c | 172 +++++++++++++++++++++++++++++++- tests/suites/test_suite_pk.data | 24 +++++ 6 files changed, 242 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index ce94af871c..77842526cc 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -91,6 +91,9 @@ typedef struct #if defined(MBEDTLS_ECDSA_DETERMINISTIC) mbedtls_ecdsa_restart_det_ctx *det; /*!< ecdsa_sign_det() sub-context */ #endif +#if defined(MBEDTLS_PK_C) + mbedtls_ecdsa_context *ecdsa; /*!< used by the PK layer */ +#endif } mbedtls_ecdsa_restart_ctx; #else /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/include/mbedtls/pk_internal.h b/include/mbedtls/pk_internal.h index 01d0f214bc..e996b6cadd 100644 --- a/include/mbedtls/pk_internal.h +++ b/include/mbedtls/pk_internal.h @@ -58,6 +58,21 @@ struct mbedtls_pk_info_t int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + /** Verify signature (restartable) */ + int (*verify_rs_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *rs_ctx ); + + /** Make signature (restartable) */ + int (*sign_rs_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, void *rs_ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /** Decrypt message */ int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, diff --git a/library/ecdsa.c b/library/ecdsa.c index e137a0074d..673076275b 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -779,6 +779,9 @@ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) #if defined(MBEDTLS_ECDSA_DETERMINISTIC) ctx->det = NULL; #endif +#if defined(MBEDTLS_PK_C) + ctx->ecdsa = NULL; +#endif } /* @@ -801,6 +804,12 @@ void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) mbedtls_free( ctx->det ); ctx->det = NULL; #endif + +#if defined(MBEDTLS_PK_C) + mbedtls_ecdsa_free( ctx->ecdsa ); + mbedtls_free( ctx->ecdsa ); + ctx->ecdsa = NULL; +#endif } #endif /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/pk.c b/library/pk.c index b5081f961a..e439c7ad81 100644 --- a/library/pk.c +++ b/library/pk.c @@ -184,12 +184,20 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, const unsigned char *sig, size_t sig_len, void *rs_ctx ) { - (void) rs_ctx; // XXX temporary - if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( ctx->pk_info->verify_rs_func != NULL ) + { + return( ctx->pk_info->verify_rs_func( ctx->pk_ctx, + md_alg, hash, hash_len, sig, sig_len, rs_ctx ) ); + } +#else + (void) rs_ctx; +#endif /* MBEDTLS_ECP_RESTARTABLE */ + if( ctx->pk_info->verify_func == NULL ) return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); @@ -276,12 +284,20 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, void *rs_ctx ) { - (void) rs_ctx; // XXX temporary - if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( ctx->pk_info->sign_rs_func != NULL ) + { + return( ctx->pk_info->sign_rs_func( ctx->pk_ctx, md_alg, + hash, hash_len, sig, sig_len, f_rng, p_rng, rs_ctx ) ); + } +#else + (void) rs_ctx; +#endif /* MBEDTLS_ECP_RESTARTABLE */ + if( ctx->pk_info->sign_func == NULL ) return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); diff --git a/library/pk_wrap.c b/library/pk_wrap.c index db6274cbf9..d3933a0f13 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -180,6 +180,10 @@ const mbedtls_pk_info_t mbedtls_rsa_info = { rsa_can_do, rsa_verify_wrap, rsa_sign_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif rsa_decrypt_wrap, rsa_encrypt_wrap, rsa_check_pair_wrap, @@ -252,6 +256,118 @@ static int eckey_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, return( ret ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* Forward declarations */ +static int ecdsa_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *rs_ctx ); + +static int ecdsa_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + void *rs_ctx ); + +static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *p_rs_ctx ) +{ + int ret; + mbedtls_ecdsa_context ecdsa, *p_ecdsa = &ecdsa; + mbedtls_ecdsa_restart_ctx *rs_ctx = p_rs_ctx; + + mbedtls_ecdsa_init( &ecdsa ); + + /* set up our own sub-context if needed */ + if( mbedtls_ecp_restart_enabled() && + rs_ctx != NULL && rs_ctx->ecdsa == NULL ) + { + rs_ctx->ecdsa = mbedtls_calloc( 1, sizeof( *rs_ctx->ecdsa ) ); + if( rs_ctx->ecdsa == NULL ) + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + + mbedtls_ecdsa_init( rs_ctx->ecdsa ); + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( rs_ctx->ecdsa, ctx ) ); + } + + if( rs_ctx != NULL && rs_ctx->ecdsa != NULL ) + { + /* redirect to our context */ + p_ecdsa = rs_ctx->ecdsa; + } + else + { + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( p_ecdsa, ctx ) ); + } + + MBEDTLS_MPI_CHK( ecdsa_verify_rs_wrap( p_ecdsa, md_alg, hash, hash_len, + sig, sig_len, rs_ctx ) ); + +cleanup: + /* clear our sub-context when not in progress (done or error) */ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + mbedtls_ecdsa_free( rs_ctx->ecdsa ); + mbedtls_free( rs_ctx->ecdsa ); + rs_ctx->ecdsa = NULL; + } + + mbedtls_ecdsa_free( &ecdsa ); + + return( ret ); +} + +static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + void *p_rs_ctx ) +{ + int ret; + mbedtls_ecdsa_context ecdsa, *p_ecdsa = &ecdsa; + mbedtls_ecdsa_restart_ctx *rs_ctx = p_rs_ctx; + + mbedtls_ecdsa_init( &ecdsa ); + + /* set up our own sub-context if needed */ + if( mbedtls_ecp_restart_enabled() && + rs_ctx != NULL && rs_ctx->ecdsa == NULL ) + { + rs_ctx->ecdsa = mbedtls_calloc( 1, sizeof( *rs_ctx->ecdsa ) ); + if( rs_ctx->ecdsa == NULL ) + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + + mbedtls_ecdsa_init( rs_ctx->ecdsa ); + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( rs_ctx->ecdsa, ctx ) ); + } + + if( rs_ctx != NULL && rs_ctx->ecdsa != NULL ) + { + /* redirect to our context */ + p_ecdsa = rs_ctx->ecdsa; + } + else + { + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( p_ecdsa, ctx ) ); + } + + MBEDTLS_MPI_CHK( ecdsa_sign_rs_wrap( p_ecdsa, md_alg, hash, hash_len, + sig, sig_len, f_rng, p_rng, rs_ctx ) ); + +cleanup: + /* clear our sub-context when not in progress (done or error) */ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + mbedtls_ecdsa_free( rs_ctx->ecdsa ); + mbedtls_free( rs_ctx->ecdsa ); + rs_ctx->ecdsa = NULL; + } + + mbedtls_ecdsa_free( &ecdsa ); + + return( ret ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ #endif /* MBEDTLS_ECDSA_C */ static int eckey_check_pair( const void *pub, const void *prv ) @@ -291,10 +407,18 @@ const mbedtls_pk_info_t mbedtls_eckey_info = { #if defined(MBEDTLS_ECDSA_C) eckey_verify_wrap, eckey_sign_wrap, -#else +#if defined(MBEDTLS_ECP_RESTARTABLE) + eckey_verify_rs_wrap, + eckey_sign_rs_wrap, +#endif +#else /* MBEDTLS_ECDSA_C */ + NULL, + NULL, +#if defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif +#endif /* MBEDTLS_ECDSA_C */ NULL, NULL, eckey_check_pair, @@ -319,6 +443,10 @@ const mbedtls_pk_info_t mbedtls_eckeydh_info = { eckeydh_can_do, NULL, NULL, +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif NULL, NULL, eckey_check_pair, @@ -359,6 +487,40 @@ static int ecdsa_sign_wrap( void *ctx, mbedtls_md_type_t md_alg, md_alg, hash, hash_len, sig, sig_len, f_rng, p_rng ) ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +static int ecdsa_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *rs_ctx ) +{ + int ret; + ((void) md_alg); + + ret = mbedtls_ecdsa_read_signature_restartable( + (mbedtls_ecdsa_context *) ctx, + hash, hash_len, sig, sig_len, + (mbedtls_ecdsa_restart_ctx *) rs_ctx ); + + if( ret == MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH ) + return( MBEDTLS_ERR_PK_SIG_LEN_MISMATCH ); + + return( ret ); +} + +static int ecdsa_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + void *rs_ctx ) +{ + return( mbedtls_ecdsa_write_signature_restartable( + (mbedtls_ecdsa_context *) ctx, + md_alg, hash, hash_len, sig, sig_len, f_rng, p_rng, + (mbedtls_ecdsa_restart_ctx *) rs_ctx ) ); + +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + static void *ecdsa_alloc_wrap( void ) { void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_context ) ); @@ -382,6 +544,10 @@ const mbedtls_pk_info_t mbedtls_ecdsa_info = { ecdsa_can_do, ecdsa_verify_wrap, ecdsa_sign_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + ecdsa_verify_rs_wrap, + ecdsa_sign_rs_wrap, +#endif NULL, NULL, eckey_check_pair, /* Compatible key structures */ @@ -496,6 +662,10 @@ const mbedtls_pk_info_t mbedtls_rsa_alt_info = { rsa_alt_can_do, NULL, rsa_alt_sign_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif rsa_alt_decrypt_wrap, NULL, #if defined(MBEDTLS_RSA_C) diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index 8ca9a2194c..bd3db182b9 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -161,3 +161,27 @@ pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75 ECDSA restartable sign/verify: ECKEY, restart disabled depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 + +ECDSA restartable sign/verify: ECDSA, max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":1:1:10000 + +ECDSA restartable sign/verify: ECKEY, max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":1:1:10000 + +ECDSA restartable sign/verify: ECDSA, max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":10000:0:0 + +ECDSA restartable sign/verify: ECKEY, max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":10000:0:0 + +ECDSA restartable sign/verify: ECDSA, max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":250:2:64 + +ECDSA restartable sign/verify: ECKEY, max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C +pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":250:2:64 From 31f0ef7b19fe4670a78eb1412b5d2e38a095aead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 17 May 2017 10:05:58 +0200 Subject: [PATCH 0070/1100] Fix style issues introduced earlier --- library/ecdsa.c | 3 ++- library/ecp.c | 9 ++++++--- library/pk_wrap.c | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 673076275b..8d1f9d632a 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -189,7 +189,8 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) #define ECDSA_RS_LEAVE( SUB ) do { \ /* clear our sub-context when not in progress (done or error) */ \ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { \ + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ + { \ ecdsa_restart_## SUB ##_free( rs_ctx->SUB ); \ mbedtls_free( rs_ctx->SUB ); \ rs_ctx->SUB = NULL; \ diff --git a/library/ecp.c b/library/ecp.c index 9b586eebe0..74a19eecb3 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -147,7 +147,8 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) mbedtls_ecp_point_free( &ctx->R ); - if( ctx->T != NULL ) { + if( ctx->T != NULL ) + { for( i = 0; i < ctx->T_size; i++ ) mbedtls_ecp_point_free( ctx->T + i ); mbedtls_free( ctx->T ); @@ -1907,7 +1908,8 @@ cleanup: /* clear our sub-context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + { ecp_restart_mul_free( rs_ctx->rsm ); mbedtls_free( rs_ctx->rsm ); rs_ctx->rsm = NULL; @@ -2392,7 +2394,8 @@ cleanup: #if defined(MBEDTLS_ECP_RESTARTABLE) /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + { ecp_restart_muladd_free( rs_ctx->ma ); mbedtls_free( rs_ctx->ma ); rs_ctx->ma = NULL; diff --git a/library/pk_wrap.c b/library/pk_wrap.c index d3933a0f13..8b94d8129a 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -307,7 +307,8 @@ static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, cleanup: /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + { mbedtls_ecdsa_free( rs_ctx->ecdsa ); mbedtls_free( rs_ctx->ecdsa ); rs_ctx->ecdsa = NULL; @@ -357,7 +358,8 @@ static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, cleanup: /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + { mbedtls_ecdsa_free( rs_ctx->ecdsa ); mbedtls_free( rs_ctx->ecdsa ); rs_ctx->ecdsa = NULL; From 171a481b9660a05d914d13c76754972d35a279b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 15 May 2017 17:23:37 +0200 Subject: [PATCH 0071/1100] Add a ChangeLog entry for changes so far --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 55cccd5e65..a377bbb7c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS 2.y.0 released YYYY-MM-DD + +Features + * Add support for restartable ECC operations, controlled by + MBEDTLS_ECP_RESTARTABLE (disabled by default), using new xxx_restartable + functions in ECP, ECDSA, PK, and using existing functions in ECDH. + = mbed TLS x.x.x branch released xxxx-xx-xx Security From b3c8307960255a2d27788d0c40f118681bbb38b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 May 2017 08:50:24 +0200 Subject: [PATCH 0072/1100] Adapt ssl_client2 to restartable EC --- programs/ssl/ssl_client2.c | 43 +++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 5032a9f3d5..84ce115cdd 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -79,6 +79,7 @@ int main( void ) #define DFL_PSK "" #define DFL_PSK_IDENTITY "Client_identity" #define DFL_ECJPAKE_PW NULL +#define DFL_EC_MAX_OPS -1 #define DFL_FORCE_CIPHER 0 #define DFL_RENEGOTIATION MBEDTLS_SSL_RENEGOTIATION_DISABLED #define DFL_ALLOW_LEGACY -2 @@ -235,6 +236,13 @@ int main( void ) #define USAGE_ECJPAKE "" #endif +#if defined(MBEDTLS_ECP_RESTARTABLE) +#define USAGE_ECRESTART \ + " ec_max_ops=%%s default: library default (restart disabled)\n" +#else +#define USAGE_ECRESTART "" +#endif + #define USAGE \ "\n usage: ssl_client2 param=<>...\n" \ "\n acceptable parameters:\n" \ @@ -258,6 +266,7 @@ int main( void ) "\n" \ USAGE_PSK \ USAGE_ECJPAKE \ + USAGE_ECRESTART \ "\n" \ " allow_legacy=%%d default: (library default: no)\n" \ USAGE_RENEGO \ @@ -310,6 +319,7 @@ struct options const char *psk; /* the pre-shared key */ const char *psk_identity; /* the pre-shared key identity */ const char *ecjpake_pw; /* the EC J-PAKE password */ + int ec_max_ops; /* EC consecutive operations limit */ int force_ciphersuite[2]; /* protocol/ciphersuite to use, or all */ int renegotiation; /* enable / disable renegotiation */ int allow_legacy; /* allow legacy renegotiation */ @@ -527,6 +537,7 @@ int main( int argc, char *argv[] ) opt.psk = DFL_PSK; opt.psk_identity = DFL_PSK_IDENTITY; opt.ecjpake_pw = DFL_ECJPAKE_PW; + opt.ec_max_ops = DFL_EC_MAX_OPS; opt.force_ciphersuite[0]= DFL_FORCE_CIPHER; opt.renegotiation = DFL_RENEGOTIATION; opt.allow_legacy = DFL_ALLOW_LEGACY; @@ -619,6 +630,8 @@ int main( int argc, char *argv[] ) opt.psk_identity = q; else if( strcmp( p, "ecjpake_pw" ) == 0 ) opt.ecjpake_pw = q; + else if( strcmp( p, "ec_max_ops" ) == 0 ) + opt.ec_max_ops = atoi( q ); else if( strcmp( p, "force_ciphersuite" ) == 0 ) { opt.force_ciphersuite[0] = mbedtls_ssl_get_ciphersuite_id( q ); @@ -1374,6 +1387,11 @@ int main( int argc, char *argv[] ) mbedtls_timing_get_delay ); #endif +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( opt.ec_max_ops != DFL_EC_MAX_OPS ) + mbedtls_ecp_set_max_ops( opt.ec_max_ops ); +#endif + mbedtls_printf( " ok\n" ); /* @@ -1384,7 +1402,9 @@ int main( int argc, char *argv[] ) while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 ) { - if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + if( ret != MBEDTLS_ERR_SSL_WANT_READ && + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n", -ret ); if( ret == MBEDTLS_ERR_X509_CERT_VERIFY_FAILED ) @@ -1476,7 +1496,8 @@ int main( int argc, char *argv[] ) while( ( ret = mbedtls_ssl_renegotiate( &ssl ) ) != 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_renegotiate returned %d\n\n", ret ); goto exit; @@ -1528,7 +1549,8 @@ send_request: <= 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_write returned -0x%x\n\n", -ret ); goto exit; @@ -1540,7 +1562,8 @@ send_request: { do ret = mbedtls_ssl_write( &ssl, buf, len ); while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ); + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); if( ret < 0 ) { @@ -1573,7 +1596,8 @@ send_request: ret = mbedtls_ssl_read( &ssl, buf, len ); if( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ) + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) continue; if( ret <= 0 ) @@ -1618,7 +1642,8 @@ send_request: do ret = mbedtls_ssl_read( &ssl, buf, len ); while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ); + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); if( ret <= 0 ) { @@ -1666,7 +1691,8 @@ send_request: while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -ret ); goto exit; @@ -1749,7 +1775,8 @@ reconnect: while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -ret ); goto exit; From 2350b4ebdc20816df2b6fcfa7f88f75c20795eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 May 2017 09:26:48 +0200 Subject: [PATCH 0073/1100] Adapt ECDHE_ECDSA key exchange to restartable EC For now some other key exchanges (ECDHE_PSK) will just fail to work, this will be either fixed or properly fixed later. --- include/mbedtls/ssl_internal.h | 16 +++++++++++++ library/ssl_cli.c | 16 +++++++++++++ tests/ssl-opt.sh | 42 ++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 756360b181..20e443630f 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -88,6 +88,14 @@ #endif /* MBEDTLS_SSL_PROTO_TLS1_1 */ #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ +/* Shorthand for restartable */ +#if defined(MBEDTLS_ECP_RESTARTABLE) && \ + defined(MBEDTLS_SSL_CLI_C) && \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) +#define MBEDTLS_SSL__ECP_RESTARTABLE +#endif + #define MBEDTLS_SSL_INITIAL_HANDSHAKE 0 #define MBEDTLS_SSL_RENEGOTIATION_IN_PROGRESS 1 /* In progress */ #define MBEDTLS_SSL_RENEGOTIATION_DONE 2 /* Done or aborted */ @@ -218,6 +226,14 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + enum { + ssl_ecrs_init = 0, /*!< just getting started */ + ssl_ecrs_ecdh_public_done, /*!< wrote ECDHE public share */ + ssl_ecrs_ecdh_completed, /*!< completed ECDHE key exchange */ + } ecrs_state; /*!< state for restartable ECC */ + size_t ecrs_n; /*!< place for seving a length */ +#endif #if defined(MBEDTLS_SSL_PROTO_DTLS) unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ unsigned int in_msg_seq; /*!< Incoming handshake sequence number */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index a2b9f8cfe1..8d7bc45ce7 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2861,6 +2861,11 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) */ i = 4; +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_state == ssl_ecrs_ecdh_public_done ) + goto ecdh_calc_secret; +#endif + ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, &n, &ssl->out_msg[i], 1000, @@ -2873,6 +2878,13 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_ECP( 3, "ECDH: Q", &ssl->handshake->ecdh_ctx.Q ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_n = n; + ssl->handshake->ecrs_state++; + +ecdh_calc_secret: + n = ssl->handshake->ecrs_n; +#endif if( ( ret = mbedtls_ecdh_calc_secret( &ssl->handshake->ecdh_ctx, &ssl->handshake->pmslen, ssl->handshake->premaster, @@ -2884,6 +2896,10 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) } MBEDTLS_SSL_DEBUG_MPI( 3, "ECDH: z", &ssl->handshake->ecdh_ctx.z ); + +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_state++; +#endif } else #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED || diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 280fc63486..05e882249d 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3441,6 +3441,48 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ 0 \ -s "Read from client: 16384 bytes read" +# Tests for restartable ECC + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, default" \ + "$P_SRV" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + debug_level=1" \ + 0 \ + -C "mbedtls_ecdh_make_public.*4b80" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=0" \ + "$P_SRV" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + debug_level=1 ec_max_ops=0" \ + 0 \ + -C "mbedtls_ecdh_make_public.*4b80" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=65535" \ + "$P_SRV" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + debug_level=1 ec_max_ops=65535" \ + 0 \ + -C "mbedtls_ecdh_make_public.*4b80" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000" \ + "$P_SRV" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + debug_level=1 ec_max_ops=1000" \ + 0 \ + -c "mbedtls_ecdh_make_public.*4b80" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: DTLS, max_ops=1000" \ + "$P_SRV dtls=1" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + dtls=1 debug_level=1 ec_max_ops=1000" \ + 0 \ + -c "mbedtls_ecdh_make_public.*4b80" + # Tests for DTLS HelloVerifyRequest run_test "DTLS cookie: enabled" \ From 862cde5b8e728c78e52767b642d6783e22ec3dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 17 May 2017 11:56:15 +0200 Subject: [PATCH 0074/1100] Add restart support for ECDSA client auth --- include/mbedtls/ssl_internal.h | 6 +++++- library/ssl_cli.c | 34 +++++++++++++++++++++++++++++++--- library/ssl_tls.c | 8 ++++++++ tests/ssl-opt.sh | 30 ++++++++++++++++++++---------- 4 files changed, 64 insertions(+), 14 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 20e443630f..af8728d5cc 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -88,7 +88,7 @@ #endif /* MBEDTLS_SSL_PROTO_TLS1_1 */ #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ -/* Shorthand for restartable */ +/* Shorthand for restartable ECC */ #if defined(MBEDTLS_ECP_RESTARTABLE) && \ defined(MBEDTLS_SSL_CLI_C) && \ defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ @@ -227,10 +227,14 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + int ec_restart_enabled; /*!< Handshake supports EC restart? */ + mbedtls_ecdsa_restart_ctx rs_ctx; /*!< ECDSA restart context */ enum { ssl_ecrs_init = 0, /*!< just getting started */ ssl_ecrs_ecdh_public_done, /*!< wrote ECDHE public share */ ssl_ecrs_ecdh_completed, /*!< completed ECDHE key exchange */ + ssl_ecrs_keys_derived, /*!< ssl_derive_keys() done */ + ssl_ecrs_pk_sign_done, /*!< done writing CertificateVerify */ } ecrs_state; /*!< state for restartable ECC */ size_t ecrs_n; /*!< place for seving a length */ #endif diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 8d7bc45ce7..77d376bebf 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1715,6 +1715,14 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) } } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA && + ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + { + ssl->handshake->ec_restart_enabled = 1; + } +#endif + if( comp != MBEDTLS_SSL_COMPRESS_NULL #if defined(MBEDTLS_ZLIB_SUPPORT) && comp != MBEDTLS_SSL_COMPRESS_DEFLATE @@ -3114,15 +3122,26 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) unsigned char *hash_start = hash; mbedtls_md_type_t md_alg = MBEDTLS_MD_NONE; unsigned int hashlen; + void *rs_ctx = NULL; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate verify" ) ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_state == ssl_ecrs_keys_derived ) + goto keys_derived; +#endif + if( ( ret = mbedtls_ssl_derive_keys( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_derive_keys", ret ); return( ret ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_state++; + +keys_derived: +#endif if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || @@ -3226,14 +3245,24 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), md_alg, hash_start, hashlen, +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ec_restart_enabled ) + rs_ctx = &ssl->handshake->rs_ctx; +#endif + + if( ( ret = mbedtls_pk_sign_restartable( mbedtls_ssl_own_key( ssl ), + md_alg, hash_start, hashlen, ssl->out_msg + 6 + offset, &n, - ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + ssl->conf->f_rng, ssl->conf->p_rng, rs_ctx ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_sign", ret ); return( ret ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_state++; +#endif + ssl->out_msg[4 + offset] = (unsigned char)( n >> 8 ); ssl->out_msg[5 + offset] = (unsigned char)( n ); @@ -3242,7 +3271,6 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) ssl->out_msg[0] = MBEDTLS_SSL_HS_CERTIFICATE_VERIFY; ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 661ae7065b..50222c3750 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5472,6 +5472,10 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) #endif #endif +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + mbedtls_ecdsa_restart_init( &handshake->rs_ctx ); +#endif + #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) handshake->sni_authmode = MBEDTLS_SSL_VERIFY_UNSET; #endif @@ -7304,6 +7308,10 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ) } #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + mbedtls_ecdsa_restart_free( &handshake->rs_ctx ); +#endif + #if defined(MBEDTLS_SSL_PROTO_DTLS) mbedtls_free( handshake->verify_cookie ); mbedtls_free( handshake->hs_msg ); diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 05e882249d..b960df0992 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3445,43 +3445,53 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, default" \ - "$P_SRV" \ + "$P_SRV auth_mode=required" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1" \ 0 \ - -C "mbedtls_ecdh_make_public.*4b80" + -C "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=0" \ - "$P_SRV" \ + "$P_SRV auth_mode=required" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=0" \ 0 \ - -C "mbedtls_ecdh_make_public.*4b80" + -C "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=65535" \ - "$P_SRV" \ + "$P_SRV auth_mode=required" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=65535" \ 0 \ - -C "mbedtls_ecdh_make_public.*4b80" + -C "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=1000" \ - "$P_SRV" \ + "$P_SRV auth_mode=required" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000" \ 0 \ - -c "mbedtls_ecdh_make_public.*4b80" + -c "mbedtls_ecdh_make_public.*4b80" \ + -c "mbedtls_pk_sign.*4b80" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: DTLS, max_ops=1000" \ - "$P_SRV dtls=1" \ + "$P_SRV auth_mode=required dtls=1" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ dtls=1 debug_level=1 ec_max_ops=1000" \ 0 \ - -c "mbedtls_ecdh_make_public.*4b80" + -c "mbedtls_ecdh_make_public.*4b80" \ + -c "mbedtls_pk_sign.*4b80" # Tests for DTLS HelloVerifyRequest From 1f1f2a1ca67b861c062587e3dbeef0bcfc819d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 18 May 2017 11:27:06 +0200 Subject: [PATCH 0075/1100] Adapt ServerKeyEchange processing to restart --- include/mbedtls/ssl_internal.h | 2 ++ library/ssl_cli.c | 40 ++++++++++++++++++++++++++++++---- tests/ssl-opt.sh | 5 +++++ 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index af8728d5cc..51dd4e1dfc 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -231,6 +231,8 @@ struct mbedtls_ssl_handshake_params mbedtls_ecdsa_restart_ctx rs_ctx; /*!< ECDSA restart context */ enum { ssl_ecrs_init = 0, /*!< just getting started */ + ssl_ecrs_ske_read, /*!< ServerKeyExchange was read */ + ssl_ecrs_ske_verified, /*!< ServerKeyExchange was verified */ ssl_ecrs_ecdh_public_done, /*!< wrote ECDHE public share */ ssl_ecrs_ecdh_completed, /*!< completed ECDHE key exchange */ ssl_ecrs_keys_derived, /*!< ssl_derive_keys() done */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 77d376bebf..faaedb7f3c 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1697,6 +1697,14 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %s", suite_info->name ) ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA && + ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) + { + ssl->handshake->ec_restart_enabled = 1; + } +#endif + i = 0; while( 1 ) { @@ -2303,12 +2311,22 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_state == ssl_ecrs_ske_read ) + goto ske_process; +#endif + if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_state++; + +ske_process: +#endif if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); @@ -2432,6 +2450,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) mbedtls_pk_type_t pk_alg = MBEDTLS_PK_NONE; unsigned char *params = ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ); size_t params_len = p - params; + void *rs_ctx = NULL; /* * Handle the digitally-signed structure @@ -2598,14 +2617,27 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_PK_TYPE_MISMATCH ); } - if( ( ret = mbedtls_pk_verify( &ssl->session_negotiate->peer_cert->pk, - md_alg, hash, hashlen, p, sig_len ) ) != 0 ) +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ec_restart_enabled ) + rs_ctx = &ssl->handshake->rs_ctx; +#endif + + if( ( ret = mbedtls_pk_verify_restartable( + &ssl->session_negotiate->peer_cert->pk, + md_alg, hash, hashlen, p, sig_len, rs_ctx ) ) != 0 ) { - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) +#endif + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_verify", ret ); return( ret ); } + +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + ssl->handshake->ecrs_state++; +#endif } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index b960df0992..d1ad9bfc34 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3450,6 +3450,7 @@ run_test "EC restart: TLS, default" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1" \ 0 \ + -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3460,6 +3461,7 @@ run_test "EC restart: TLS, max_ops=0" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=0" \ 0 \ + -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3470,6 +3472,7 @@ run_test "EC restart: TLS, max_ops=65535" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=65535" \ 0 \ + -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3480,6 +3483,7 @@ run_test "EC restart: TLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000" \ 0 \ + -c "mbedtls_pk_verify.*4b80" \ -c "mbedtls_ecdh_make_public.*4b80" \ -c "mbedtls_pk_sign.*4b80" @@ -3490,6 +3494,7 @@ run_test "EC restart: DTLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ dtls=1 debug_level=1 ec_max_ops=1000" \ 0 \ + -c "mbedtls_pk_verify.*4b80" \ -c "mbedtls_ecdh_make_public.*4b80" \ -c "mbedtls_pk_sign.*4b80" From 23e416261c5dd1e7cb43db5c8c6766af56509d3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 18 May 2017 12:35:37 +0200 Subject: [PATCH 0076/1100] ECDH: not restartable unless explicitly enabled This is mainly for the benefit of SSL modules, which only supports restart in a limited number of cases. In the other cases (ECDHE_PSK) it would currently return ERR_ECP_IN_PROGRESS and the user would thus call ssl_handshake() again, but the SSL code wouldn't handle state properly and things would go wrong in possibly unexpected ways. This is undesirable, so it should be possible for the SSL module to choose if ECDHE should behave the old or the new way. Not that it also brings ECDHE more in line with the other modules which already have that choice available (by passing a NULL or valid restart context). --- include/mbedtls/ecdh.h | 17 ++++++++++++++ library/ecdh.c | 19 +++++++++++++--- library/ssl_cli.c | 3 +++ tests/suites/test_suite_ecdh.data | 32 ++++++++++++++++++++------- tests/suites/test_suite_ecdh.function | 9 +++++++- 5 files changed, 68 insertions(+), 12 deletions(-) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 2e344a8c95..6f3fe137c9 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -53,6 +53,7 @@ typedef struct mbedtls_ecp_point Vf; /*!< un-blinding value (for later) */ mbedtls_mpi _d; /*!< previous d (for later) */ #if defined(MBEDTLS_ECP_RESTARTABLE) + int restart_enabled; /*!< enable restartalbe EC computations? */ mbedtls_ecp_restart_ctx rs; /*!< restart context for EC computations */ #endif } @@ -220,6 +221,22 @@ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Enable restartable EC computations for this context. + * (Default: disabled.) + * + * \sa \c mbedtls_ecp_set_max_ops() + * + * \note It is not possible to safely disable restartable + * computations once enabled, except by free-ing the context, + * which cancels possible in-progress operations. + * + * \param ctx ECDH context + */ +void mbedtls_ecdh_enable_restart( mbedtls_ecdh_context *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + #ifdef __cplusplus } #endif diff --git a/library/ecdh.c b/library/ecdh.c index b2859c4b6e..cae3b290f4 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -155,6 +155,16 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ) #endif } +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Enable restartable operations for context + */ +void mbedtls_ecdh_enable_restart( mbedtls_ecdh_context *ctx ) +{ + ctx->restart_enabled = 1; +} +#endif + /* * Setup and write the ServerKeyExhange parameters (RFC 4492) * struct { @@ -175,7 +185,8 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECP_RESTARTABLE) - rs_ctx = &ctx->rs; + if( ctx->restart_enabled ) + rs_ctx = &ctx->rs; #endif if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, @@ -260,7 +271,8 @@ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECP_RESTARTABLE) - rs_ctx = &ctx->rs; + if( ctx->restart_enabled ) + rs_ctx = &ctx->rs; #endif if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, @@ -307,7 +319,8 @@ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECP_RESTARTABLE) - rs_ctx = &ctx->rs; + if( ctx->restart_enabled ) + rs_ctx = &ctx->rs; #endif if( ( ret = ecdh_compute_shared_restartable( &ctx->grp, diff --git a/library/ssl_cli.c b/library/ssl_cli.c index faaedb7f3c..cbd46475cd 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2902,6 +2902,9 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) i = 4; #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ec_restart_enabled) + mbedtls_ecdh_enable_restart( &ssl->handshake->ecdh_ctx ); + if( ssl->handshake->ecrs_state == ssl_ecrs_ecdh_public_done ) goto ecdh_calc_secret; #endif diff --git a/tests/suites/test_suite_ecdh.data b/tests/suites/test_suite_ecdh.data index 991d11388d..da30633ac8 100644 --- a/tests/suites/test_suite_ecdh.data +++ b/tests/suites/test_suite_ecdh.data @@ -38,18 +38,34 @@ ECDH exchange #2 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED ecdh_exchange:MBEDTLS_ECP_DP_SECP521R1 -ECDH restartable rfc 5903 p256 restart disabled +ECDH restartable rfc 5903 p256 restart enabled max_ops=0 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:0:0 +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:0:0:0 -ECDH restartable rfc 5903 p256 restart max_ops=1 +ECDH restartable rfc 5903 p256 restart enabled max_ops=1 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:1:10000 +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:1:1:10000 -ECDH restartable rfc 5903 p256 restart max_ops=10000 +ECDH restartable rfc 5903 p256 restart enabled max_ops=10000 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":10000:0:0 +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:10000:0:0 -ECDH restartable rfc 5903 p256 restart max_ops=250 +ECDH restartable rfc 5903 p256 restart enabled max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":250:2:32 +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:250:2:32 + +ECDH restartable rfc 5903 p256 restart disabled max_ops=0 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:0:0:0 + +ECDH restartable rfc 5903 p256 restart disabled max_ops=1 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:1:0:0 + +ECDH restartable rfc 5903 p256 restart disabled max_ops=10000 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:10000:0:0 + +ECDH restartable rfc 5903 p256 restart disabled max_ops=250 +depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED +ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:250:0:0 diff --git a/tests/suites/test_suite_ecdh.function b/tests/suites/test_suite_ecdh.function index 911464ad08..05e61e4ebb 100644 --- a/tests/suites/test_suite_ecdh.function +++ b/tests/suites/test_suite_ecdh.function @@ -161,7 +161,7 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */ void ecdh_restart( int id, char *dA_str, char *dB_str, char *z_str, - int max_ops, int min_restart, int max_restart ) + int enable, int max_ops, int min_restart, int max_restart ) { int ret; mbedtls_ecdh_context srv, cli; @@ -192,8 +192,15 @@ void ecdh_restart( int id, char *dA_str, char *dB_str, char *z_str, * as in ecdh_primitive_test_vec */ TEST_ASSERT( srv.grp.nbits % 8 == 0 ); + /* set up restart parameters */ mbedtls_ecp_set_max_ops( max_ops ); + if( enable) + { + mbedtls_ecdh_enable_restart( &srv ); + mbedtls_ecdh_enable_restart( &cli ); + } + /* server writes its paramaters */ memset( buf, 0x00, sizeof( buf ) ); len = 0; From 32033da127e64d9035eb2b3170604e55098477d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 18 May 2017 12:49:27 +0200 Subject: [PATCH 0077/1100] Test some more handshake flows --- tests/ssl-opt.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index d1ad9bfc34..2e03758e6c 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3498,6 +3498,26 @@ run_test "EC restart: DTLS, max_ops=1000" \ -c "mbedtls_ecdh_make_public.*4b80" \ -c "mbedtls_pk_sign.*4b80" +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000 no client auth" \ + "$P_SRV" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + debug_level=1 ec_max_ops=1000" \ + 0 \ + -c "mbedtls_pk_verify.*4b80" \ + -c "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \ + "$P_SRV psk=abc123" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \ + psk=abc123 debug_level=1 ec_max_ops=1000" \ + 0 \ + -C "mbedtls_pk_verify.*4b80" \ + -C "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" + # Tests for DTLS HelloVerifyRequest run_test "DTLS cookie: enabled" \ From 21b7719fb2578dd4edf8d5b57c603e06c12f32c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 18 May 2017 12:54:56 +0200 Subject: [PATCH 0078/1100] Add ChangeLog entry for current progress --- ChangeLog | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index a377bbb7c4..b80f53a257 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,9 +3,16 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS 2.y.0 released YYYY-MM-DD Features - * Add support for restartable ECC operations, controlled by - MBEDTLS_ECP_RESTARTABLE (disabled by default), using new xxx_restartable - functions in ECP, ECDSA, PK, and using existing functions in ECDH. + * Add support for restartable ECC operations, enabled by + MBEDTLS_ECP_RESTARTABLE (disabled by default) at compile time and + mbedtls_ecp_set_max_ops() at runtime, using new xxx_restartable functions + in ECP, ECDSA, PK, and using existing functions in ECDH and SSL + (currently only implemented client-side, for ECDHE-ECDSA ciphersuites + with TLS 1.2, including client authentication). + TEMPORARY NOTE: server authentication currently not supported (WIP). + For now, MUST be disabled by calling + mbedtls_ssl_conf_authmode( MBEDTLS_SSL_VERIFY_NONE ) + (or blocking ECC operations will happen) = mbed TLS x.x.x branch released xxxx-xx-xx From bc3f44ae9c0f2615cc35e7b92cd6faf871e74a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 11 Jul 2017 11:02:20 +0200 Subject: [PATCH 0079/1100] Introduce mbedtls_x509_crt_verify_restartable() --- include/mbedtls/x509_crt.h | 60 ++++++++++++++++++++++++++++++++++++ library/x509_crt.c | 62 +++++++++++++++++++++++++++++++------- 2 files changed, 111 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 2b4d3533fe..61a9124591 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -142,6 +142,23 @@ typedef struct mbedtls_x509write_cert } mbedtls_x509write_cert; +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + +/** + * \brief Context for resuming X.509 verify operations + */ +typedef struct +{ + mbedtls_ecdsa_restart_ctx ecdsa; /*!< ecdsa restart context */ +} mbedtls_x509_crt_restart_ctx; + +#else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + +/* Now we can declare functions that take a pointer to that */ +typedef void mbedtls_x509_crt_restart_ctx; + +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + #if defined(MBEDTLS_X509_CRT_PARSE_C) /** * Default security profile. Should provide a good balance between security @@ -352,6 +369,37 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy ); +/** + * \brief Restartable version of \c mbedtls_crt_verify_with_profile() + * + * \note Performs the same job as \c mbedtls_crt_verify_with_profile() + * but can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param crt a certificate (chain) to be verified + * \param trust_ca the list of trusted CAs + * \param ca_crl the list of CRLs for trusted CAs + * \param profile security profile for verification + * \param cn expected Common Name (can be set to + * NULL if the CN must not be verified) + * \param flags result of the verification + * \param f_vrfy verification function + * \param p_vrfy verification parameter + * \param rs_ctx resart context + * + * \return See \c mbedtls_crt_verify_with_profile(), or + * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy, + mbedtls_x509_crt_restart_ctx *rs_ctx ); + #if defined(MBEDTLS_X509_CHECK_KEY_USAGE) /** * \brief Check usage of certificate against keyUsage extension. @@ -422,6 +470,18 @@ void mbedtls_x509_crt_init( mbedtls_x509_crt *crt ); * \param crt Certificate chain to free */ void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context + */ +void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context + */ +void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx ); +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ /* \} name */ diff --git a/library/x509_crt.c b/library/x509_crt.c index f586fb4520..8d5d06058b 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2271,7 +2271,7 @@ static int x509_crt_merge_flags_with_cb( } /* - * Verify the certificate validity + * Verify the certificate validity (default profile, not restartable) */ int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, @@ -2280,19 +2280,13 @@ int mbedtls_x509_crt_verify( mbedtls_x509_crt *crt, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy ) { - return( mbedtls_x509_crt_verify_with_profile( crt, trust_ca, ca_crl, - &mbedtls_x509_crt_profile_default, cn, flags, f_vrfy, p_vrfy ) ); + return( mbedtls_x509_crt_verify_restartable( crt, trust_ca, ca_crl, + &mbedtls_x509_crt_profile_default, cn, flags, + f_vrfy, p_vrfy, NULL ) ); } /* - * Verify the certificate validity, with profile - * - * This function: - * - checks the requested CN (if any) - * - checks the type and size of the EE cert's key, - * as that isn't done as part of chain building/verification currently - * - builds and verifies the chain - * - then calls the callback and merges the flags + * Verify the certificate validity (user-chosen profile, not restartable) */ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, mbedtls_x509_crt *trust_ca, @@ -2301,6 +2295,29 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, const char *cn, uint32_t *flags, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy ) +{ + return( mbedtls_x509_crt_verify_restartable( crt, trust_ca, ca_crl, + profile, cn, flags, f_vrfy, p_vrfy, NULL ) ); +} + +/* + * Verify the certificate validity, with profile, restartable version + * + * This function: + * - checks the requested CN (if any) + * - checks the type and size of the EE cert's key, + * as that isn't done as part of chain building/verification currently + * - builds and verifies the chain + * - then calls the callback and merges the flags + */ +int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crl *ca_crl, + const mbedtls_x509_crt_profile *profile, + const char *cn, uint32_t *flags, + int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), + void *p_vrfy, + mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; mbedtls_pk_type_t pk_type; @@ -2308,6 +2325,8 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, size_t chain_len; uint32_t *ee_flags = &ver_chain[0].flags; + (void) rs_ctx; + *flags = 0; memset( ver_chain, 0, sizeof( ver_chain ) ); chain_len = 0; @@ -2450,4 +2469,25 @@ void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ) while( cert_cur != NULL ); } +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Initialize a restart context + */ +void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) +{ + mbedtls_ecdsa_restart_init( &ctx->ecdsa ); +} + +/* + * Free the components of a restart context + */ +void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + mbedtls_ecdsa_restart_free( &ctx->ecdsa ); +} +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + #endif /* MBEDTLS_X509_CRT_PARSE_C */ From d19a41d9aaaa09fffe2ed7ace061e204a37a97fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 14 Jul 2017 11:05:59 +0200 Subject: [PATCH 0080/1100] Add tests for verify_restartable() For selection of test cases, see comments added in the commit. It makes the most sense to test with chains using ECC only, so for the chain of length 2 we use server10 -> int-ca3 -> int-ca2 and trust int-ca2 directly. Note: server10.crt was created by copying server10_int3_int-ca2.crt and manually truncating it to remove the intermediates. That base can now be used to create derived certs (without or with a chain) in a programmatic way. --- library/x509_crt.c | 10 +++++ tests/data_files/Makefile | 15 ++++++- tests/data_files/Readme-x509.txt | 1 + tests/data_files/server10-badsign.crt | 10 +++++ tests/data_files/server10-bs_int3.pem | 22 +++++++++++ tests/data_files/server10.crt | 10 +++++ tests/data_files/server10_int3-bs.pem | 22 +++++++++++ tests/data_files/test-int-ca3-badsign.crt | 12 ++++++ tests/suites/test_suite_x509parse.data | 23 +++++++++++ tests/suites/test_suite_x509parse.function | 46 ++++++++++++++++++++++ 10 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 tests/data_files/server10-badsign.crt create mode 100644 tests/data_files/server10-bs_int3.pem create mode 100644 tests/data_files/server10.crt create mode 100644 tests/data_files/server10_int3-bs.pem create mode 100644 tests/data_files/test-int-ca3-badsign.crt diff --git a/library/x509_crt.c b/library/x509_crt.c index 8d5d06058b..4e32964663 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2069,6 +2069,16 @@ static int x509_crt_check_ee_locally_trusted( * - EE, Ci1, ..., Ciq cannot be continued with a trusted root * -> return that chain with NOT_TRUSTED set on Ciq * + * Tests for (aspects of) this function should include at least: + * - trusted EE + * - EE -> trusted root + * - EE -> intermedate CA -> trusted root + * - if relevant: EE untrusted + * - if relevant: EE -> intermediate, untrusted + * with the aspect under test checked at each relevant level (EE, int, root). + * For some aspects longer chains are required, but usually length 2 is + * enough (but length 1 is not in general). + * * Arguments: * - [in] crt: the cert list EE, C1, ..., Cn * - [in] trust_ca: the trusted list R1, ..., Rp diff --git a/tests/data_files/Makefile b/tests/data_files/Makefile index 40cbcbe4d1..05d7d23ff5 100644 --- a/tests/data_files/Makefile +++ b/tests/data_files/Makefile @@ -104,7 +104,7 @@ server7-future.crt: server7.csr $(test_ca_int_rsa1) $(FAKETIME) -f +3653d $(OPENSSL) x509 -req -extfile $(cli_crt_extensions_file) -extensions cli-rsa -CA $(test_ca_int_rsa1) -CAkey test-int-ca.key -set_serial 16 -days 3653 -sha256 -in server7.csr | cat - $(test_ca_int_rsa1) > $@ all_final += server7-future.crt server7-badsign.crt: server7.crt $(test_ca_int_rsa1) - { head -n-2 server7.crt; tail -n-2 server7.crt | sed -e '1s/0\(=*\)$$/_\1/' -e '1s/[^_=]\(=*\)$$/0\1/' -e '1s/_/1/'; cat test-int-ca.crt; } > server7-badsign.crt + { head -n-2 $<; tail -n-2 $< | sed -e '1s/0\(=*\)$$/_\1/' -e '1s/[^_=]\(=*\)$$/0\1/' -e '1s/_/1/'; cat $(test_ca_int_rsa1); } > $@ all_final += server7-badsign.crt server7_int-ca-exp.crt: server7.crt test-int-ca-exp.crt cat server7.crt test-int-ca-exp.crt > $@ @@ -119,7 +119,18 @@ server5-ss-forgeca.crt: server5.key $(FAKETIME) '2015-09-01 14:08:43' $(OPENSSL) req -x509 -new -subj "/C=UK/O=mbed TLS/CN=mbed TLS Test intermediate CA 3" -set_serial 77 -config $(test_ca_config_file) -extensions noext_ca -days 3650 -sha256 -key $< -out $@ all_final += server5-ss-forgeca.crt - +server10-badsign.crt: server10.crt + { head -n-2 $<; tail -n-2 $< | sed -e '1s/0\(=*\)$$/_\1/' -e '1s/[^_=]\(=*\)$$/0\1/' -e '1s/_/1/'; } > $@ +all_final += server10-badsign.crt +server10-bs_int3.pem: server10-badsign.crt test-int-ca3.crt + cat server10-badsign.crt test-int-ca3.crt > $@ +all_final += server10-bs_int3.pem +test-int-ca3-badsign.crt: test-int-ca3.crt + { head -n-2 $<; tail -n-2 $< | sed -e '1s/0\(=*\)$$/_\1/' -e '1s/[^_=]\(=*\)$$/0\1/' -e '1s/_/1/'; } > $@ +all_final += test-int-ca3-badsign.crt +server10_int3-bs.pem: server10.crt test-int-ca3-badsign.crt + cat server10.crt test-int-ca3-badsign.crt > $@ +all_final += server10-bs_int3-bs.pem ################################################################ diff --git a/tests/data_files/Readme-x509.txt b/tests/data_files/Readme-x509.txt index b56346ab37..d1a6c2d27e 100644 --- a/tests/data_files/Readme-x509.txt +++ b/tests/data_files/Readme-x509.txt @@ -21,6 +21,7 @@ Two intermediate CAs are signed by them: A third intermediate CA is signed by test-int-ca2.crt: - test-int-ca3.crt "C=UK, O=mbed TLS, CN=mbed TLS Test intermediate CA 3" + uses an EC key with NIST P-256, signed by test-int-ca2 Finally, other CAs for specific purposes: - enco-ca-prstr.pem: has its CN encoded as a printable string, but child cert diff --git a/tests/data_files/server10-badsign.crt b/tests/data_files/server10-badsign.crt new file mode 100644 index 0000000000..eca171f351 --- /dev/null +++ b/tests/data_files/server10-badsign.crt @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBWjCCAQCgAwIBAgIBSzAKBggqhkjOPQQDAjBKMQswCQYDVQQGEwJVSzERMA8G +A1UEChMIbWJlZCBUTFMxKDAmBgNVBAMTH21iZWQgVExTIFRlc3QgaW50ZXJtZWRp +YXRlIENBIDMwHhcNMTUwOTAxMTM0NzU1WhcNMjUwODI5MTM0NzU1WjAUMRIwEAYD +VQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQcbffp2qXq +oZyychmoCRxzrd4Vu96m47NPBehtEC46aTeXgDnBdf++znABrAtfXBRNQz8ARIeY +Bmskr22rlKjyow0wCzAJBgNVHRMEAjAAMAoGCCqGSM49BAMCA0gAMEUCIQDLc+Io +rg8VxEbCgVv8iH+kOIEn9MjhpvKzvwUoV+6rjQIgZU/RXAyc1a+H2+soGfNEIOBQ +AzO3pJx7WJAApZuBX10= +-----END CERTIFICATE----- diff --git a/tests/data_files/server10-bs_int3.pem b/tests/data_files/server10-bs_int3.pem new file mode 100644 index 0000000000..b84cee7c32 --- /dev/null +++ b/tests/data_files/server10-bs_int3.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIBWjCCAQCgAwIBAgIBSzAKBggqhkjOPQQDAjBKMQswCQYDVQQGEwJVSzERMA8G +A1UEChMIbWJlZCBUTFMxKDAmBgNVBAMTH21iZWQgVExTIFRlc3QgaW50ZXJtZWRp +YXRlIENBIDMwHhcNMTUwOTAxMTM0NzU1WhcNMjUwODI5MTM0NzU1WjAUMRIwEAYD +VQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQcbffp2qXq +oZyychmoCRxzrd4Vu96m47NPBehtEC46aTeXgDnBdf++znABrAtfXBRNQz8ARIeY +Bmskr22rlKjyow0wCzAJBgNVHRMEAjAAMAoGCCqGSM49BAMCA0gAMEUCIQDLc+Io +rg8VxEbCgVv8iH+kOIEn9MjhpvKzvwUoV+6rjQIgZU/RXAyc1a+H2+soGfNEIOBQ +AzO3pJx7WJAApZuBX10= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIBtDCCATqgAwIBAgIBTTAKBggqhkjOPQQDAjBLMQswCQYDVQQGEwJOTDERMA8G +A1UEChMIUG9sYXJTU0wxKTAnBgNVBAMTIFBvbGFyU1NMIFRlc3QgSW50ZXJtZWRp +YXRlIEVDIENBMB4XDTE1MDkwMTE0MDg0M1oXDTI1MDgyOTE0MDg0M1owSjELMAkG +A1UEBhMCVUsxETAPBgNVBAoTCG1iZWQgVExTMSgwJgYDVQQDEx9tYmVkIFRMUyBU +ZXN0IGludGVybWVkaWF0ZSBDQSAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +732fWHLNPMPsP1U1ibXvb55erlEVMlpXBGsj+KYwVqU1XCmW9Z9hhP7X/5js/DX9 +2J/utoHyjUtVpQOzdTrbsaMQMA4wDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNo +ADBlAjAJRxbGRas3NBmk9MnGWXg7PT1xnRELHRWWIvfLdVQt06l1/xFg3ZuPdQdt +Qh7CK80CMQD7wa1o1a8qyDKBfLN636uKmKGga0E+vYXBeFCy9oARBangGCB0B2vt +pz590JvGWfM= +-----END CERTIFICATE----- diff --git a/tests/data_files/server10.crt b/tests/data_files/server10.crt new file mode 100644 index 0000000000..96a4040cef --- /dev/null +++ b/tests/data_files/server10.crt @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE----- +MIIBWjCCAQCgAwIBAgIBSzAKBggqhkjOPQQDAjBKMQswCQYDVQQGEwJVSzERMA8G +A1UEChMIbWJlZCBUTFMxKDAmBgNVBAMTH21iZWQgVExTIFRlc3QgaW50ZXJtZWRp +YXRlIENBIDMwHhcNMTUwOTAxMTM0NzU1WhcNMjUwODI5MTM0NzU1WjAUMRIwEAYD +VQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQcbffp2qXq +oZyychmoCRxzrd4Vu96m47NPBehtEC46aTeXgDnBdf++znABrAtfXBRNQz8ARIeY +Bmskr22rlKjyow0wCzAJBgNVHRMEAjAAMAoGCCqGSM49BAMCA0gAMEUCIQDLc+Io +rg8VxEbCgVv8iH+kOIEn9MjhpvKzvwUoV+6rjQIgZU/RXAyc1a+H2+soGfNEIOBQ +AzO3pJx7WJAApZuBX1Q= +-----END CERTIFICATE----- diff --git a/tests/data_files/server10_int3-bs.pem b/tests/data_files/server10_int3-bs.pem new file mode 100644 index 0000000000..a9e06150bd --- /dev/null +++ b/tests/data_files/server10_int3-bs.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIBWjCCAQCgAwIBAgIBSzAKBggqhkjOPQQDAjBKMQswCQYDVQQGEwJVSzERMA8G +A1UEChMIbWJlZCBUTFMxKDAmBgNVBAMTH21iZWQgVExTIFRlc3QgaW50ZXJtZWRp +YXRlIENBIDMwHhcNMTUwOTAxMTM0NzU1WhcNMjUwODI5MTM0NzU1WjAUMRIwEAYD +VQQDEwlsb2NhbGhvc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQcbffp2qXq +oZyychmoCRxzrd4Vu96m47NPBehtEC46aTeXgDnBdf++znABrAtfXBRNQz8ARIeY +Bmskr22rlKjyow0wCzAJBgNVHRMEAjAAMAoGCCqGSM49BAMCA0gAMEUCIQDLc+Io +rg8VxEbCgVv8iH+kOIEn9MjhpvKzvwUoV+6rjQIgZU/RXAyc1a+H2+soGfNEIOBQ +AzO3pJx7WJAApZuBX1Q= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIBtDCCATqgAwIBAgIBTTAKBggqhkjOPQQDAjBLMQswCQYDVQQGEwJOTDERMA8G +A1UEChMIUG9sYXJTU0wxKTAnBgNVBAMTIFBvbGFyU1NMIFRlc3QgSW50ZXJtZWRp +YXRlIEVDIENBMB4XDTE1MDkwMTE0MDg0M1oXDTI1MDgyOTE0MDg0M1owSjELMAkG +A1UEBhMCVUsxETAPBgNVBAoTCG1iZWQgVExTMSgwJgYDVQQDEx9tYmVkIFRMUyBU +ZXN0IGludGVybWVkaWF0ZSBDQSAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +732fWHLNPMPsP1U1ibXvb55erlEVMlpXBGsj+KYwVqU1XCmW9Z9hhP7X/5js/DX9 +2J/utoHyjUtVpQOzdTrbsaMQMA4wDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNo +ADBlAjAJRxbGRas3NBmk9MnGWXg7PT1xnRELHRWWIvfLdVQt06l1/xFg3ZuPdQdt +Qh7CK80CMQD7wa1o1a8qyDKBfLN636uKmKGga0E+vYXBeFCy9oARBangGCB0B2vt +pz590JvGWf0= +-----END CERTIFICATE----- diff --git a/tests/data_files/test-int-ca3-badsign.crt b/tests/data_files/test-int-ca3-badsign.crt new file mode 100644 index 0000000000..2087056e8e --- /dev/null +++ b/tests/data_files/test-int-ca3-badsign.crt @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIBtDCCATqgAwIBAgIBTTAKBggqhkjOPQQDAjBLMQswCQYDVQQGEwJOTDERMA8G +A1UEChMIUG9sYXJTU0wxKTAnBgNVBAMTIFBvbGFyU1NMIFRlc3QgSW50ZXJtZWRp +YXRlIEVDIENBMB4XDTE1MDkwMTE0MDg0M1oXDTI1MDgyOTE0MDg0M1owSjELMAkG +A1UEBhMCVUsxETAPBgNVBAoTCG1iZWQgVExTMSgwJgYDVQQDEx9tYmVkIFRMUyBU +ZXN0IGludGVybWVkaWF0ZSBDQSAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +732fWHLNPMPsP1U1ibXvb55erlEVMlpXBGsj+KYwVqU1XCmW9Z9hhP7X/5js/DX9 +2J/utoHyjUtVpQOzdTrbsaMQMA4wDAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNo +ADBlAjAJRxbGRas3NBmk9MnGWXg7PT1xnRELHRWWIvfLdVQt06l1/xFg3ZuPdQdt +Qh7CK80CMQD7wa1o1a8qyDKBfLN636uKmKGga0E+vYXBeFCy9oARBangGCB0B2vt +pz590JvGWf0= +-----END CERTIFICATE----- diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data index afa86a1d84..b3e1c1cdf1 100644 --- a/tests/suites/test_suite_x509parse.data +++ b/tests/suites/test_suite_x509parse.data @@ -1806,3 +1806,26 @@ X509 Get time (UTC invalid character in sec) depends_on:MBEDTLS_X509_USE_C x509_get_time:MBEDTLS_ASN1_UTC_TIME:"0011302359n0Z":MBEDTLS_ERR_X509_INVALID_DATE:0:0:0:0:0:0 +X509 cert verify restart: trusted EE, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED +x509_verify_restart:"data_files/server5-selfsigned.crt":"data_files/server5-selfsigned.crt":0:0:0:0:0 + +X509 cert verify restart: no intermediate, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:0:0:0 + +X509 cert verify restart: no intermediate, badsign, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 + +X509 cert verify restart: one intermediate, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:0:0:0 + +X509 cert verify restart: one intermediate, EE badsign, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 + +X509 cert verify restart: one intermediate, int badsign, max_ops=0 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index b3b6f4dce0..f899eb0185 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -261,6 +261,52 @@ void x509_verify_info( int flags, char *prefix, char *result_str ) } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CRL_PARSE_C:MBEDTLS_ECP_RESTARTABLE:MBEDTLS_ECDSA_C */ +void x509_verify_restart( char *crt_file, char *ca_file, + int result, int flags_result, + int max_ops, int min_restart, int max_restart ) +{ + int ret, cnt_restart; + mbedtls_x509_crt_restart_ctx rs_ctx; + mbedtls_x509_crt crt; + mbedtls_x509_crt ca; + uint32_t flags = 0; + + mbedtls_x509_crt_restart_init( &rs_ctx ); + mbedtls_x509_crt_init( &crt ); + mbedtls_x509_crt_init( &ca ); + + TEST_ASSERT( mbedtls_x509_crt_parse_file( &crt, crt_file ) == 0 ); + TEST_ASSERT( mbedtls_x509_crt_parse_file( &ca, ca_file ) == 0 ); + + mbedtls_ecp_set_max_ops( max_ops ); + + cnt_restart = 0; + do { + ret = mbedtls_x509_crt_verify_restartable( &crt, &ca, NULL, + &mbedtls_x509_crt_profile_default, NULL, &flags, + NULL, NULL, &rs_ctx ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restart ); + + TEST_ASSERT( ret == result ); + TEST_ASSERT( flags == (uint32_t) flags_result ); + + TEST_ASSERT( cnt_restart >= min_restart ); + TEST_ASSERT( cnt_restart <= max_restart ); + + /* Do we leak memory when aborting? */ + ret = mbedtls_x509_crt_verify_restartable( &crt, &ca, NULL, + &mbedtls_x509_crt_profile_default, NULL, &flags, + NULL, NULL, &rs_ctx ); + TEST_ASSERT( ret == result || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + +exit: + mbedtls_x509_crt_restart_free( &rs_ctx ); + mbedtls_x509_crt_free( &crt ); + mbedtls_x509_crt_free( &ca ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CRL_PARSE_C */ void x509_verify( char *crt_file, char *ca_file, char *crl_file, char *cn_name_str, int result, int flags_result, From be4ff42fe4fafe91df1405831d75515a1b0ea786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 14 Jul 2017 12:04:14 +0200 Subject: [PATCH 0081/1100] Call crt_check_signature from one place only --- library/x509_crt.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 4e32964663..91c444876e 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1932,6 +1932,7 @@ static int x509_crt_check_parent( const mbedtls_x509_crt *child, * 1. subject name matches child's issuer * 2. if necessary, the CA bit is set and key usage allows signing certs * 3. for trusted roots, the signature is correct + * (for intermediates, the signature is checked and the result reported) * 4. pathlen constraints are satisfied * * If there's a suitable candidate which is also time-valid, return the first @@ -1953,11 +1954,15 @@ static int x509_crt_check_parent( const mbedtls_x509_crt *child, */ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, mbedtls_x509_crt *candidates, + int *signature_is_good, int top, int path_cnt, int self_cnt ) { - mbedtls_x509_crt *parent, *badtime_parent = NULL; + mbedtls_x509_crt *parent, *fallback_parent = NULL; + int fallback_sign_good = 0; + + *signature_is_good = 0; for( parent = candidates; parent != NULL; parent = parent->next ) { @@ -1973,17 +1978,19 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, } /* Signature */ - if( top && x509_crt_check_signature( child, parent ) != 0 ) - { + *signature_is_good = x509_crt_check_signature( child, parent ) == 0; + if( top && ! *signature_is_good ) continue; - } /* optional time check */ if( mbedtls_x509_time_is_past( &parent->valid_to ) || mbedtls_x509_time_is_future( &parent->valid_from ) ) { - if( badtime_parent == NULL ) - badtime_parent = parent; + if( fallback_parent == NULL ) + { + fallback_parent = parent; + fallback_sign_good = *signature_is_good; + } continue; } @@ -1992,7 +1999,10 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, } if( parent == NULL ) - parent = badtime_parent; + { + parent = fallback_parent; + *signature_is_good = fallback_sign_good; + } return parent; } @@ -2006,6 +2016,7 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, static mbedtls_x509_crt *x509_crt_find_parent( mbedtls_x509_crt *child, mbedtls_x509_crt *trust_ca, int *parent_is_trusted, + int *signature_is_good, int path_cnt, int self_cnt ) { @@ -2013,14 +2024,16 @@ static mbedtls_x509_crt *x509_crt_find_parent( mbedtls_x509_crt *child, /* Look for a parent in trusted CAs */ *parent_is_trusted = 1; - parent = x509_crt_find_parent_in( child, trust_ca, 1, path_cnt, self_cnt ); + parent = x509_crt_find_parent_in( child, trust_ca, signature_is_good, + 1, path_cnt, self_cnt ); if( parent != NULL ) return parent; /* Look for a parent upwards the chain */ *parent_is_trusted = 0; - return( x509_crt_find_parent_in( child, child->next, 0, path_cnt, self_cnt ) ); + return( x509_crt_find_parent_in( child, child->next, signature_is_good, + 0, path_cnt, self_cnt ) ); } /* @@ -2103,6 +2116,7 @@ static int x509_crt_verify_chain( mbedtls_x509_crt *parent; int parent_is_trusted = 0; int child_is_trusted = 0; + int signature_is_good = 0; int self_cnt = 0; child = crt; @@ -2140,7 +2154,8 @@ static int x509_crt_verify_chain( } /* Look for a parent in trusted CAs or up the chain */ - parent = x509_crt_find_parent( child, trust_ca, &parent_is_trusted, + parent = x509_crt_find_parent( child, trust_ca, + &parent_is_trusted, &signature_is_good, *chain_len - 1, self_cnt ); /* No parent? We're done here */ @@ -2168,8 +2183,8 @@ static int x509_crt_verify_chain( return( MBEDTLS_ERR_X509_FATAL_ERROR ); } - /* if parent is trusted, the signature was checked by find_parent() */ - if( ! parent_is_trusted && x509_crt_check_signature( child, parent ) != 0 ) + /* signature was check while searching parent */ + if( ! signature_is_good ) *flags |= MBEDTLS_X509_BADCERT_NOT_TRUSTED; /* check size of signing key */ @@ -2187,6 +2202,7 @@ static int x509_crt_verify_chain( child = parent; parent = NULL; child_is_trusted = parent_is_trusted; + signature_is_good = 0; } } From a4a5d1dbe65913fe826ef714066f3853eb14d824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 17 Jul 2017 10:26:19 +0200 Subject: [PATCH 0082/1100] Adapt function signatures to rs_ctx + ret --- library/x509_crt.c | 147 ++++++++++++++++++++++++++++++++------------- 1 file changed, 105 insertions(+), 42 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 91c444876e..e8fb627d42 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1866,7 +1866,8 @@ static int x509_name_cmp( const mbedtls_x509_name *a, const mbedtls_x509_name *b * Check the signature of a certificate by its parent */ static int x509_crt_check_signature( const mbedtls_x509_crt *child, - mbedtls_x509_crt *parent ) + mbedtls_x509_crt *parent, + mbedtls_x509_crt_restart_ctx *rs_ctx ) { const mbedtls_md_info_t *md_info; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; @@ -1878,14 +1879,24 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, return( -1 ); } - if( mbedtls_pk_verify_ext( child->sig_pk, child->sig_opts, &parent->pk, - child->sig_md, hash, mbedtls_md_get_size( md_info ), - child->sig.p, child->sig.len ) != 0 ) - { + /* Skip expensive computation on obvious mismatch */ + if( ! mbedtls_pk_can_do( &parent->pk, child->sig_pk ) ) return( -1 ); - } - return( 0 ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && child->sig_pk == MBEDTLS_PK_ECDSA ) + { + return( mbedtls_pk_verify_restartable( &parent->pk, + child->sig_md, hash, mbedtls_md_get_size( md_info ), + child->sig.p, child->sig.len, &rs_ctx->ecdsa ) ); + } +#else + (void) rs_ctx; +#endif + + return( mbedtls_pk_verify_ext( child->sig_pk, child->sig_opts, &parent->pk, + child->sig_md, hash, mbedtls_md_get_size( md_info ), + child->sig.p, child->sig.len ) ); } /* @@ -1952,17 +1963,19 @@ static int x509_crt_check_parent( const mbedtls_x509_crt *child, * rely on key identifier extensions). (This is one way users might choose to * handle key rollover, another relies on self-issued certs, see [SIRO].) */ -static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, - mbedtls_x509_crt *candidates, - int *signature_is_good, - int top, - int path_cnt, - int self_cnt ) +static int x509_crt_find_parent_in( + mbedtls_x509_crt *child, + mbedtls_x509_crt *candidates, + mbedtls_x509_crt **r_parent, + int *r_signature_is_good, + int top, + int path_cnt, + int self_cnt, + mbedtls_x509_crt_restart_ctx *rs_ctx ) { + int ret; mbedtls_x509_crt *parent, *fallback_parent = NULL; - int fallback_sign_good = 0; - - *signature_is_good = 0; + int signature_is_good = 0, fallback_sign_good = 0; for( parent = candidates; parent != NULL; parent = parent->next ) { @@ -1978,8 +1991,17 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, } /* Signature */ - *signature_is_good = x509_crt_check_signature( child, parent ) == 0; - if( top && ! *signature_is_good ) + ret = x509_crt_check_signature( child, parent, rs_ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); + } +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + + signature_is_good = ret == 0; + if( top && ! signature_is_good ) continue; /* optional time check */ @@ -1989,7 +2011,7 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, if( fallback_parent == NULL ) { fallback_parent = parent; - fallback_sign_good = *signature_is_good; + fallback_sign_good = signature_is_good; } continue; @@ -1998,13 +2020,18 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, break; } - if( parent == NULL ) + if( parent != NULL ) { - parent = fallback_parent; - *signature_is_good = fallback_sign_good; + *r_parent = parent; + *r_signature_is_good = signature_is_good; + } + else + { + *r_parent = fallback_parent; + *r_signature_is_good = fallback_sign_good; } - return parent; + return( 0 ); } /* @@ -2013,27 +2040,48 @@ static mbedtls_x509_crt *x509_crt_find_parent_in( mbedtls_x509_crt *child, * Searches in trusted CAs first, and return the first suitable parent found * (see find_parent_in() for definition of suitable). */ -static mbedtls_x509_crt *x509_crt_find_parent( mbedtls_x509_crt *child, - mbedtls_x509_crt *trust_ca, - int *parent_is_trusted, - int *signature_is_good, - int path_cnt, - int self_cnt ) +static int x509_crt_find_parent( + mbedtls_x509_crt *child, + mbedtls_x509_crt *trust_ca, + mbedtls_x509_crt **parent, + int *parent_is_trusted, + int *signature_is_good, + int path_cnt, + int self_cnt, + mbedtls_x509_crt_restart_ctx *rs_ctx ) { - mbedtls_x509_crt *parent; + int ret; /* Look for a parent in trusted CAs */ *parent_is_trusted = 1; - parent = x509_crt_find_parent_in( child, trust_ca, signature_is_good, - 1, path_cnt, self_cnt ); + ret = x509_crt_find_parent_in( child, trust_ca, + parent, signature_is_good, + 1, path_cnt, self_cnt, rs_ctx ); - if( parent != NULL ) - return parent; +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); + } +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + + if( *parent != NULL ) + return( 0 ); /* Look for a parent upwards the chain */ *parent_is_trusted = 0; - return( x509_crt_find_parent_in( child, child->next, signature_is_good, - 0, path_cnt, self_cnt ) ); + ret = x509_crt_find_parent_in( child, child->next, + parent, signature_is_good, + 0, path_cnt, self_cnt, rs_ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); + } +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + + return( 0 ); } /* @@ -2109,8 +2157,10 @@ static int x509_crt_verify_chain( mbedtls_x509_crl *ca_crl, const mbedtls_x509_crt_profile *profile, x509_crt_verify_chain_item ver_chain[X509_MAX_VERIFY_CHAIN_SIZE], - size_t *chain_len ) + size_t *chain_len, + mbedtls_x509_crt_restart_ctx *rs_ctx ) { + int ret; uint32_t *flags; mbedtls_x509_crt *child; mbedtls_x509_crt *parent; @@ -2154,9 +2204,16 @@ static int x509_crt_verify_chain( } /* Look for a parent in trusted CAs or up the chain */ - parent = x509_crt_find_parent( child, trust_ca, + ret = x509_crt_find_parent( child, trust_ca, &parent, &parent_is_trusted, &signature_is_good, - *chain_len - 1, self_cnt ); + *chain_len - 1, self_cnt, rs_ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + } /* No parent? We're done here */ if( parent == NULL ) @@ -2351,8 +2408,6 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, size_t chain_len; uint32_t *ee_flags = &ver_chain[0].flags; - (void) rs_ctx; - *flags = 0; memset( ver_chain, 0, sizeof( ver_chain ) ); chain_len = 0; @@ -2378,7 +2433,15 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, /* Check the chain */ ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, profile, - ver_chain, &chain_len ); + ver_chain, &chain_len, rs_ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); + } +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + if( ret != 0 ) goto exit; From 18547b5db62c4fc63513c545f38f10edf9541d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 14 Aug 2017 16:11:43 +0200 Subject: [PATCH 0083/1100] Refactor find_parent() to merge two call sites --- library/x509_crt.c | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index e8fb627d42..b6150e806a 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2051,35 +2051,39 @@ static int x509_crt_find_parent( mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; + mbedtls_x509_crt *search_list; - /* Look for a parent in trusted CAs */ *parent_is_trusted = 1; - ret = x509_crt_find_parent_in( child, trust_ca, - parent, signature_is_good, - 1, path_cnt, self_cnt, rs_ctx ); + + while( 1 ) { + search_list = *parent_is_trusted ? trust_ca : child->next; + + ret = x509_crt_find_parent_in( child, search_list, + parent, signature_is_good, + *parent_is_trusted, + path_cnt, self_cnt, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state - return( ret ); - } + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { + // TODO: stave state + return( ret ); + } #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ - if( *parent != NULL ) - return( 0 ); + /* stop here if found or already in second iteration */ + if( *parent != NULL || *parent_is_trusted == 0 ) + break; - /* Look for a parent upwards the chain */ - *parent_is_trusted = 0; - ret = x509_crt_find_parent_in( child, child->next, - parent, signature_is_good, - 0, path_cnt, self_cnt, rs_ctx ); - -#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state - return( ret ); + /* prepare second iteration */ + *parent_is_trusted = 0; + } + + /* extra precaution against mistakes in the caller */ + if( parent == NULL ) + { + parent_is_trusted = 0; + signature_is_good = 0; } -#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ return( 0 ); } From c11e4baa6336073cf9432a7bca8ced78465c4a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 14 Aug 2017 17:17:14 +0200 Subject: [PATCH 0084/1100] Rework type for verify chain - create container with length + table - make types public (will be needed in restart context) --- include/mbedtls/x509_crt.h | 22 ++++++++++++++ library/x509_crt.c | 59 ++++++++++++++------------------------ 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 61a9124591..eb929d7e5e 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -142,6 +142,28 @@ typedef struct mbedtls_x509write_cert } mbedtls_x509write_cert; +/** + * Item in a verification chain: cert and flags for it + */ +typedef struct { + mbedtls_x509_crt *crt; + uint32_t flags; +} mbedtls_x509_crt_verify_chain_item; + +/** + * Max size of verification chain: end-entity + intermediates + trusted root + */ +#define MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 ) + +/** + * Verification chain as built by \c mbedtls_crt_verify_chain() + */ +typedef struct +{ + mbedtls_x509_crt_verify_chain_item items[MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE]; + size_t len; +} mbedtls_x509_crt_verify_chain; + #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /** diff --git a/library/x509_crt.c b/library/x509_crt.c index b6150e806a..5c2d2c1b95 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -77,19 +77,6 @@ #endif /* !_WIN32 || EFIX64 || EFI32 */ #endif -/* - * Item in a verification chain: cert and flags for it - */ -typedef struct { - mbedtls_x509_crt *crt; - uint32_t flags; -} x509_crt_verify_chain_item; - -/* - * Max size of verification chain: end-entity + intermediates + trusted root - */ -#define X509_MAX_VERIFY_CHAIN_SIZE ( MBEDTLS_X509_MAX_INTERMEDIATE_CA + 2 ) - /* Implementation that should never be optimized out by the compiler */ static void mbedtls_zeroize( void *v, size_t n ) { volatile unsigned char *p = v; while( n-- ) *p++ = 0; @@ -2148,7 +2135,7 @@ static int x509_crt_check_ee_locally_trusted( * - [in] crt: the cert list EE, C1, ..., Cn * - [in] trust_ca: the trusted list R1, ..., Rp * - [in] ca_crl, profile: as in verify_with_profile() - * - [out] ver_chain, chain_len: the built and verified chain + * - [out] ver_chain: the built and verified chain * * Return value: * - non-zero if the chain could not be fully built and examined @@ -2160,12 +2147,12 @@ static int x509_crt_verify_chain( mbedtls_x509_crt *trust_ca, mbedtls_x509_crl *ca_crl, const mbedtls_x509_crt_profile *profile, - x509_crt_verify_chain_item ver_chain[X509_MAX_VERIFY_CHAIN_SIZE], - size_t *chain_len, + mbedtls_x509_crt_verify_chain *ver_chain, mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; uint32_t *flags; + mbedtls_x509_crt_verify_chain_item *cur; mbedtls_x509_crt *child; mbedtls_x509_crt *parent; int parent_is_trusted = 0; @@ -2174,13 +2161,13 @@ static int x509_crt_verify_chain( int self_cnt = 0; child = crt; - *chain_len = 0; while( 1 ) { /* Add certificate to the verification chain */ - ver_chain[*chain_len].crt = child; - flags = &ver_chain[*chain_len].flags; - ++*chain_len; + cur = &ver_chain->items[ver_chain->len]; + cur->crt = child; + flags = &cur->flags; + ver_chain->len++; /* Check time-validity (all certificates) */ if( mbedtls_x509_time_is_past( &child->valid_to ) ) @@ -2201,7 +2188,7 @@ static int x509_crt_verify_chain( *flags |= MBEDTLS_X509_BADCERT_BAD_PK; /* Special case: EE certs that are locally trusted */ - if( *chain_len == 1 && + if( ver_chain->len == 1 && x509_crt_check_ee_locally_trusted( child, trust_ca ) == 0 ) { return( 0 ); @@ -2210,7 +2197,7 @@ static int x509_crt_verify_chain( /* Look for a parent in trusted CAs or up the chain */ ret = x509_crt_find_parent( child, trust_ca, &parent, &parent_is_trusted, &signature_is_good, - *chain_len - 1, self_cnt, rs_ctx ); + ver_chain->len - 1, self_cnt, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { @@ -2229,7 +2216,7 @@ static int x509_crt_verify_chain( /* Count intermediate self-issued (not necessarily self-signed) certs. * These can occur with some strategies for key rollover, see [SIRO], * and should be excluded from max_pathlen checks. */ - if( *chain_len != 1 && + if( ver_chain->len != 1 && x509_name_cmp( &child->issuer, &child->subject ) == 0 ) { self_cnt++; @@ -2238,7 +2225,7 @@ static int x509_crt_verify_chain( /* path_cnt is 0 for the first intermediate CA, * and if parent is trusted it's not an intermediate CA */ if( ! parent_is_trusted && - *chain_len > MBEDTLS_X509_MAX_INTERMEDIATE_CA ) + ver_chain->len > MBEDTLS_X509_MAX_INTERMEDIATE_CA ) { /* return immediately to avoid overflow the chain array */ return( MBEDTLS_ERR_X509_FATAL_ERROR ); @@ -2334,21 +2321,22 @@ static void x509_crt_verify_name( const mbedtls_x509_crt *crt, */ static int x509_crt_merge_flags_with_cb( uint32_t *flags, - x509_crt_verify_chain_item ver_chain[X509_MAX_VERIFY_CHAIN_SIZE], - size_t chain_len, + const mbedtls_x509_crt_verify_chain *ver_chain, int (*f_vrfy)(void *, mbedtls_x509_crt *, int, uint32_t *), void *p_vrfy ) { int ret; size_t i; uint32_t cur_flags; + const mbedtls_x509_crt_verify_chain_item *cur; - for( i = chain_len; i != 0; --i ) + for( i = ver_chain->len; i != 0; --i ) { - cur_flags = ver_chain[i-1].flags; + cur = &ver_chain->items[i-1]; + cur_flags = cur->flags; if( NULL != f_vrfy ) - if( ( ret = f_vrfy( p_vrfy, ver_chain[i-1].crt, i-1, &cur_flags ) ) != 0 ) + if( ( ret = f_vrfy( p_vrfy, cur->crt, i-1, &cur_flags ) ) != 0 ) return( ret ); *flags |= cur_flags; @@ -2408,13 +2396,11 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, { int ret; mbedtls_pk_type_t pk_type; - x509_crt_verify_chain_item ver_chain[X509_MAX_VERIFY_CHAIN_SIZE]; - size_t chain_len; - uint32_t *ee_flags = &ver_chain[0].flags; + mbedtls_x509_crt_verify_chain ver_chain; + uint32_t *ee_flags = &ver_chain.items[0].flags; *flags = 0; - memset( ver_chain, 0, sizeof( ver_chain ) ); - chain_len = 0; + memset( &ver_chain, 0, sizeof( ver_chain ) ); if( profile == NULL ) { @@ -2437,7 +2423,7 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, /* Check the chain */ ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, profile, - ver_chain, &chain_len, rs_ctx ); + &ver_chain, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { @@ -2450,8 +2436,7 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, goto exit; /* Build final flags, calling callback on the way if any */ - ret = x509_crt_merge_flags_with_cb( flags, - ver_chain, chain_len, f_vrfy, p_vrfy ); + ret = x509_crt_merge_flags_with_cb( flags, &ver_chain, f_vrfy, p_vrfy ); exit: /* prevent misuse of the vrfy callback - VERIFY_FAILED would be ignored by From 8b59049407f337cf9813f9012a81f6587e6c4d98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 14 Aug 2017 18:04:19 +0200 Subject: [PATCH 0085/1100] Make verify() actually restartable --- include/mbedtls/x509_crt.h | 17 ++- library/x509_crt.c | 137 +++++++++++++++++---- tests/data_files/Readme-x509.txt | 2 +- tests/suites/test_suite_x509parse.data | 70 ++++++++++- tests/suites/test_suite_x509parse.function | 10 ++ 5 files changed, 208 insertions(+), 28 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index eb929d7e5e..7487df619d 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -171,7 +171,22 @@ typedef struct */ typedef struct { - mbedtls_ecdsa_restart_ctx ecdsa; /*!< ecdsa restart context */ + /* for check_signature() */ + mbedtls_ecdsa_restart_ctx ecdsa; + + /* for find_parent_in() */ + mbedtls_x509_crt *parent; /* non-null iff parent_in in progress */ + mbedtls_x509_crt *fallback_parent; + int fallback_sign_good; + + /* for find_parent() */ + int parent_is_trusted; /* -1 if find_parent is not in progress */ + + /* for verify_chain() */ + mbedtls_x509_crt *child; /* non-null iff in progress */ + int self_cnt; + mbedtls_x509_crt_verify_chain ver_chain; + } mbedtls_x509_crt_restart_ctx; #else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/x509_crt.c b/library/x509_crt.c index 5c2d2c1b95..a0d1956dcf 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1870,7 +1870,7 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, if( ! mbedtls_pk_can_do( &parent->pk, child->sig_pk ) ) return( -1 ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && child->sig_pk == MBEDTLS_PK_ECDSA ) { return( mbedtls_pk_verify_restartable( &parent->pk, @@ -1961,8 +1961,23 @@ static int x509_crt_find_parent_in( mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; - mbedtls_x509_crt *parent, *fallback_parent = NULL; - int signature_is_good = 0, fallback_sign_good = 0; + mbedtls_x509_crt *parent, *fallback_parent; + int signature_is_good, fallback_sign_good; + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /* restore state if we have some stored */ + if( rs_ctx != NULL && rs_ctx->parent != NULL ) + { + parent = rs_ctx->parent; + fallback_parent = rs_ctx->fallback_parent; + fallback_sign_good = rs_ctx->fallback_sign_good; + + goto check_signature; + } +#endif + + fallback_parent = NULL; + fallback_sign_good = 0; for( parent = candidates; parent != NULL; parent = parent->next ) { @@ -1978,14 +1993,24 @@ static int x509_crt_find_parent_in( } /* Signature */ +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +check_signature: +#endif ret = x509_crt_check_signature( child, parent, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state + if( rs_ctx != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + { + /* save state */ + rs_ctx->parent = parent; + rs_ctx->fallback_parent = fallback_parent; + rs_ctx->fallback_sign_good = fallback_sign_good; + return( ret ); } -#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ +#else + (void) ret; +#endif signature_is_good = ret == 0; if( top && ! signature_is_good ) @@ -2018,6 +2043,16 @@ static int x509_crt_find_parent_in( *r_signature_is_good = fallback_sign_good; } +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL ) + { + /* reset state */ + rs_ctx->parent = NULL; + rs_ctx->fallback_parent = NULL; + rs_ctx->fallback_sign_good = 0; + } +#endif + return( 0 ); } @@ -2042,6 +2077,12 @@ static int x509_crt_find_parent( *parent_is_trusted = 1; +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /* restore state if we have some stored */ + if( rs_ctx != NULL && rs_ctx->parent_is_trusted != -1) + *parent_is_trusted = rs_ctx->parent_is_trusted; +#endif + while( 1 ) { search_list = *parent_is_trusted ? trust_ca : child->next; @@ -2051,11 +2092,15 @@ static int x509_crt_find_parent( path_cnt, self_cnt, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state + if( rs_ctx != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + { + /* save state */ + rs_ctx->parent_is_trusted = *parent_is_trusted; return( ret ); } -#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ +#else + (void) ret; +#endif /* stop here if found or already in second iteration */ if( *parent != NULL || *parent_is_trusted == 0 ) @@ -2072,6 +2117,12 @@ static int x509_crt_find_parent( signature_is_good = 0; } +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /* reset state */ + if( rs_ctx != NULL ) + rs_ctx->parent_is_trusted = -1; +#endif + return( 0 ); } @@ -2155,12 +2206,31 @@ static int x509_crt_verify_chain( mbedtls_x509_crt_verify_chain_item *cur; mbedtls_x509_crt *child; mbedtls_x509_crt *parent; - int parent_is_trusted = 0; - int child_is_trusted = 0; - int signature_is_good = 0; - int self_cnt = 0; + int parent_is_trusted; + int child_is_trusted; + int signature_is_good; + int self_cnt; + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /* resume if we had an operation in progress */ + if( rs_ctx != NULL && rs_ctx->child != NULL ) + { + /* save state */ + child = rs_ctx->child; + self_cnt = rs_ctx->self_cnt; + *ver_chain = rs_ctx->ver_chain; + + cur = &ver_chain->items[ver_chain->len - 1]; + flags = &cur->flags; + + goto find_parent; + } +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ child = crt; + self_cnt = 0; + parent_is_trusted = 0; + child_is_trusted = 0; while( 1 ) { /* Add certificate to the verification chain */ @@ -2194,17 +2264,27 @@ static int x509_crt_verify_chain( return( 0 ); } +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +find_parent: +#endif /* Look for a parent in trusted CAs or up the chain */ ret = x509_crt_find_parent( child, trust_ca, &parent, &parent_is_trusted, &signature_is_good, ver_chain->len - 1, self_cnt, rs_ctx ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state + if( rs_ctx != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + { + /* save state */ + rs_ctx->child = child; + rs_ctx->self_cnt = self_cnt; + rs_ctx-> ver_chain = *ver_chain; + return( ret ); -#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ } +#else + (void) ret; +#endif /* No parent? We're done here */ if( parent == NULL ) @@ -2425,13 +2505,6 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, profile, &ver_chain, rs_ctx ); -#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - // TODO: stave state - return( ret ); - } -#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ - if( ret != 0 ) goto exit; @@ -2439,6 +2512,11 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, ret = x509_crt_merge_flags_with_cb( flags, &ver_chain, f_vrfy, p_vrfy ); exit: +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + mbedtls_x509_crt_restart_free( rs_ctx ); +#endif + /* prevent misuse of the vrfy callback - VERIFY_FAILED would be ignored by * the SSL module for authmode optional, but non-zero return from the * callback means a fatal error so it shouldn't be ignored */ @@ -2554,6 +2632,17 @@ void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ) void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) { mbedtls_ecdsa_restart_init( &ctx->ecdsa ); + + ctx->parent = NULL; + ctx->fallback_parent = NULL; + ctx->fallback_sign_good = 0; + + ctx->parent_is_trusted = -1; + + ctx->child = NULL; + ctx->self_cnt = 0; + memset( ctx->ver_chain.items, 0, sizeof( ctx->ver_chain.items ) ); + ctx->ver_chain.len = 0; } /* @@ -2565,6 +2654,8 @@ void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx ) return; mbedtls_ecdsa_restart_free( &ctx->ecdsa ); + + mbedtls_x509_crt_restart_init( ctx ); } #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ diff --git a/tests/data_files/Readme-x509.txt b/tests/data_files/Readme-x509.txt index d1a6c2d27e..185fb3412b 100644 --- a/tests/data_files/Readme-x509.txt +++ b/tests/data_files/Readme-x509.txt @@ -17,7 +17,7 @@ Two intermediate CAs are signed by them: - test-int-ca.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate CA" uses RSA-4096, signed by test-ca2 - test-int-ca2.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate EC CA" - uses an EC key with NIST P-256, signed by test-ca + uses an EC key with NIST P-384, signed by test-ca A third intermediate CA is signed by test-int-ca2.crt: - test-int-ca3.crt "C=UK, O=mbed TLS, CN=mbed TLS Test intermediate CA 3" diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data index b3e1c1cdf1..1c553b4561 100644 --- a/tests/suites/test_suite_x509parse.data +++ b/tests/suites/test_suite_x509parse.data @@ -1810,22 +1810,86 @@ X509 cert verify restart: trusted EE, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED x509_verify_restart:"data_files/server5-selfsigned.crt":"data_files/server5-selfsigned.crt":0:0:0:0:0 +X509 cert verify restart: trusted EE, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED +x509_verify_restart:"data_files/server5-selfsigned.crt":"data_files/server5-selfsigned.crt":0:0:1:0:0 + X509 cert verify restart: no intermediate, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:0:0:0 +X509 cert verify restart: no intermediate, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:1:100:10000 + +X509 cert verify restart: no intermediate, max_ops=40000 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:40000:0:0 + +X509 cert verify restart: no intermediate, max_ops=500 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:500:20:80 + X509 cert verify restart: no intermediate, badsign, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 -X509 cert verify restart: one intermediate, max_ops=0 +X509 cert verify restart: no intermediate, badsign, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:1:100:10000 + +X509 cert verify restart: no intermediate, badsign, max_ops=40000 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:40000:0:0 + +X509 cert verify restart: no intermediate, badsign, max_ops=500 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED +x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:500:20:80 + +X509 cert verify restart: one int, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:0:0:0 -X509 cert verify restart: one intermediate, EE badsign, max_ops=0 +X509 cert verify restart: one int, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:1:100:10000 + +X509 cert verify restart: one int, max_ops=30000 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:30000:0:0 + +X509 cert verify restart: one int, max_ops=500 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:500:25:100 + +X509 cert verify restart: one int, EE badsign, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 -X509 cert verify restart: one intermediate, int badsign, max_ops=0 +X509 cert verify restart: one int, EE badsign, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:1:100:10000 + +X509 cert verify restart: one int, EE badsign, max_ops=30000 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:30000:0:0 + +X509 cert verify restart: one int, EE badsign, max_ops=500 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:500:25:100 + +X509 cert verify restart: one int, int badsign, max_ops=0 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 + +X509 cert verify restart: one int, int badsign, max_ops=1 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:1:100:10000 + +X509 cert verify restart: one int, int badsign, max_ops=30000 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:30000:0:0 + +X509 cert verify restart: one int, int badsign, max_ops=500 +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C +x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:500:25:100 diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index f899eb0185..c12aaef0c1 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -272,6 +272,16 @@ void x509_verify_restart( char *crt_file, char *ca_file, mbedtls_x509_crt ca; uint32_t flags = 0; + /* + * See comments on ecp_test_vect_restart() for op count precision. + * + * For reference, with mbed TLS 2.6 and default settings: + * - ecdsa_verify() for P-256: ~ 6700 + * - ecdsa_verify() for P-384: ~ 18800 + * - x509_verify() for server5 -> test-ca2: ~ 18800 + * - x509_verify() for server10 -> int-ca3 -> int-ca2: ~ 25500 + */ + mbedtls_x509_crt_restart_init( &rs_ctx ); mbedtls_x509_crt_init( &crt ); mbedtls_x509_crt_init( &ca ); From d27d1a5a82b4b0cf63cef05698bc8918883e7868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 11:49:08 +0200 Subject: [PATCH 0086/1100] Clean up existing SSL restartable ECC code - more consistent naming with ecrs prefix for everything - always check it enabled before touching the rest - rm duplicated code in parse_server_hello() --- include/mbedtls/ssl_internal.h | 4 +-- library/ssl_cli.c | 63 +++++++++++++++++++--------------- library/ssl_tls.c | 4 +-- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 51dd4e1dfc..bc38b8b038 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -227,8 +227,8 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - int ec_restart_enabled; /*!< Handshake supports EC restart? */ - mbedtls_ecdsa_restart_ctx rs_ctx; /*!< ECDSA restart context */ + int ecrs_enabled; /*!< Handshake supports EC restart? */ + mbedtls_ecdsa_restart_ctx ecrs_ctx; /*!< ECDSA restart context */ enum { ssl_ecrs_init = 0, /*!< just getting started */ ssl_ecrs_ske_read, /*!< ServerKeyExchange was read */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index cbd46475cd..db57713a6a 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1701,7 +1701,7 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) if( suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA && ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { - ssl->handshake->ec_restart_enabled = 1; + ssl->handshake->ecrs_enabled = 1; } #endif @@ -1723,14 +1723,6 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) } } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( suite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA && - ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) - { - ssl->handshake->ec_restart_enabled = 1; - } -#endif - if( comp != MBEDTLS_SSL_COMPRESS_NULL #if defined(MBEDTLS_ZLIB_SUPPORT) && comp != MBEDTLS_SSL_COMPRESS_DEFLATE @@ -2312,8 +2304,11 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_state == ssl_ecrs_ske_read ) - goto ske_process; + if( ssl->handshake->ecrs_enabled && + ssl->handshake->ecrs_state == ssl_ecrs_ske_read ) + { + goto ske_process; + } #endif if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) @@ -2323,6 +2318,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled ) ssl->handshake->ecrs_state++; ske_process: @@ -2618,8 +2614,8 @@ ske_process: } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ec_restart_enabled ) - rs_ctx = &ssl->handshake->rs_ctx; + if( ssl->handshake->ecrs_enabled ) + rs_ctx = &ssl->handshake->ecrs_ctx; #endif if( ( ret = mbedtls_pk_verify_restartable( @@ -2636,7 +2632,8 @@ ske_process: } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - ssl->handshake->ecrs_state++; + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state++; #endif } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ @@ -2902,11 +2899,13 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) i = 4; #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ec_restart_enabled) - mbedtls_ecdh_enable_restart( &ssl->handshake->ecdh_ctx ); + if( ssl->handshake->ecrs_enabled ) + { + if( ssl->handshake->ecrs_state == ssl_ecrs_ecdh_public_done ) + goto ecdh_calc_secret; - if( ssl->handshake->ecrs_state == ssl_ecrs_ecdh_public_done ) - goto ecdh_calc_secret; + mbedtls_ecdh_enable_restart( &ssl->handshake->ecdh_ctx ); + } #endif ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, @@ -2922,11 +2921,15 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_ECP( 3, "ECDH: Q", &ssl->handshake->ecdh_ctx.Q ); #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - ssl->handshake->ecrs_n = n; - ssl->handshake->ecrs_state++; + if( ssl->handshake->ecrs_enabled ) + { + ssl->handshake->ecrs_n = n; + ssl->handshake->ecrs_state++; + } ecdh_calc_secret: - n = ssl->handshake->ecrs_n; + if( ssl->handshake->ecrs_enabled ) + n = ssl->handshake->ecrs_n; #endif if( ( ret = mbedtls_ecdh_calc_secret( &ssl->handshake->ecdh_ctx, &ssl->handshake->pmslen, @@ -2941,7 +2944,8 @@ ecdh_calc_secret: MBEDTLS_SSL_DEBUG_MPI( 3, "ECDH: z", &ssl->handshake->ecdh_ctx.z ); #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - ssl->handshake->ecrs_state++; + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state++; #endif } else @@ -3162,8 +3166,11 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write certificate verify" ) ); #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_state == ssl_ecrs_keys_derived ) + if( ssl->handshake->ecrs_enabled && + ssl->handshake->ecrs_state == ssl_ecrs_keys_derived ) + { goto keys_derived; + } #endif if( ( ret = mbedtls_ssl_derive_keys( ssl ) ) != 0 ) @@ -3173,7 +3180,8 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - ssl->handshake->ecrs_state++; + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state++; keys_derived: #endif @@ -3281,8 +3289,8 @@ keys_derived: } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ec_restart_enabled ) - rs_ctx = &ssl->handshake->rs_ctx; + if( ssl->handshake->ecrs_enabled ) + rs_ctx = &ssl->handshake->ecrs_ctx; #endif if( ( ret = mbedtls_pk_sign_restartable( mbedtls_ssl_own_key( ssl ), @@ -3295,7 +3303,8 @@ keys_derived: } #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - ssl->handshake->ecrs_state++; + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state++; #endif ssl->out_msg[4 + offset] = (unsigned char)( n >> 8 ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 50222c3750..90331efa1b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5473,7 +5473,7 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) #endif #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - mbedtls_ecdsa_restart_init( &handshake->rs_ctx ); + mbedtls_ecdsa_restart_init( &handshake->ecrs_ctx ); #endif #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) @@ -7309,7 +7309,7 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ) #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - mbedtls_ecdsa_restart_free( &handshake->rs_ctx ); + mbedtls_ecdsa_restart_free( &handshake->ecrs_ctx ); #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) From 6b7301c8722e9fce24f1e17e3b716d15cca618d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 12:08:45 +0200 Subject: [PATCH 0087/1100] Change restart context type. No need to have both x509 and ecdsa, as the former contains the later. --- include/mbedtls/ssl_internal.h | 2 +- library/ssl_cli.c | 4 ++-- library/ssl_tls.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index bc38b8b038..00a8db44ec 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -228,7 +228,7 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) int ecrs_enabled; /*!< Handshake supports EC restart? */ - mbedtls_ecdsa_restart_ctx ecrs_ctx; /*!< ECDSA restart context */ + mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ enum { ssl_ecrs_init = 0, /*!< just getting started */ ssl_ecrs_ske_read, /*!< ServerKeyExchange was read */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index db57713a6a..7ffeb5bb45 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2615,7 +2615,7 @@ ske_process: #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) - rs_ctx = &ssl->handshake->ecrs_ctx; + rs_ctx = &ssl->handshake->ecrs_ctx.ecdsa; #endif if( ( ret = mbedtls_pk_verify_restartable( @@ -3290,7 +3290,7 @@ keys_derived: #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) - rs_ctx = &ssl->handshake->ecrs_ctx; + rs_ctx = &ssl->handshake->ecrs_ctx.ecdsa; #endif if( ( ret = mbedtls_pk_sign_restartable( mbedtls_ssl_own_key( ssl ), diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 90331efa1b..221071b5ee 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5473,7 +5473,7 @@ static void ssl_handshake_params_init( mbedtls_ssl_handshake_params *handshake ) #endif #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - mbedtls_ecdsa_restart_init( &handshake->ecrs_ctx ); + mbedtls_x509_crt_restart_init( &handshake->ecrs_ctx ); #endif #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) @@ -7309,7 +7309,7 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ) #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - mbedtls_ecdsa_restart_free( &handshake->ecrs_ctx ); + mbedtls_x509_crt_restart_free( &handshake->ecrs_ctx ); #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) From 39eda87382100565a890182ff9dffedd640cfa18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 13:00:33 +0200 Subject: [PATCH 0088/1100] Make more auto variables const That way we know we don't have to worry about saving and restoring their value. --- library/ssl_tls.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 221071b5ee..48bb336837 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4313,8 +4313,15 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) { int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; size_t i, n; - const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; - int authmode = ssl->conf->authmode; + const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = + ssl->transform_negotiate->ciphersuite_info; +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + const int authmode = ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET + ? ssl->handshake->sni_authmode + : ssl->conf->authmode; +#else + const int authmode = ssl->conf->authmode; +#endif uint8_t alert; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); @@ -4338,11 +4345,6 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) return( 0 ); } -#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) - if( ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET ) - authmode = ssl->handshake->sni_authmode; -#endif - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && authmode == MBEDTLS_SSL_VERIFY_NONE ) { From fed37ed0391f5b25393d5802c5ef434314a53894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 13:27:41 +0200 Subject: [PATCH 0089/1100] Extract some code to separate function Goals include: - reducing the number of local variables in the main function (so that we don't have to worry about saving/restoring them) - reducing the number exit points in the main function, making it easier to update ssl->state only right before we return --- library/ssl_tls.c | 141 ++++++++++++++++++++++++++-------------------- 1 file changed, 81 insertions(+), 60 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 48bb336837..f91e2a885c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4309,62 +4309,16 @@ write_msg: return( ret ); } -int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) +/* + * Once the certificate message is read, parse it into a cert chain and + * perform basic checks, but leave actual verification to the caller + */ +static int ssl_parse_certificate_chain( mbedtls_ssl_context *ssl ) { - int ret = MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE; + int ret; size_t i, n; - const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = - ssl->transform_negotiate->ciphersuite_info; -#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) - const int authmode = ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET - ? ssl->handshake->sni_authmode - : ssl->conf->authmode; -#else - const int authmode = ssl->conf->authmode; -#endif uint8_t alert; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); - - if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); - ssl->state++; - return( 0 ); - } - -#if defined(MBEDTLS_SSL_SRV_C) - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); - ssl->state++; - return( 0 ); - } - - if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && - authmode == MBEDTLS_SSL_VERIFY_NONE ) - { - ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_SKIP_VERIFY; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); - ssl->state++; - return( 0 ); - } -#endif - - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) - { - /* mbedtls_ssl_read_record may have sent an alert already. We - let it decide whether to alert. */ - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); - return( ret ); - } - - ssl->state++; - #if defined(MBEDTLS_SSL_SRV_C) #if defined(MBEDTLS_SSL_PROTO_SSL3) /* @@ -4384,10 +4338,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) one. The client should know what's going on, so we don't send an alert. */ ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_MISSING; - if( authmode == MBEDTLS_SSL_VERIFY_OPTIONAL ) - return( 0 ); - else - return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); + return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); } } #endif /* MBEDTLS_SSL_PROTO_SSL3 */ @@ -4408,10 +4359,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) one. The client should know what's going on, so we don't send an alert. */ ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_MISSING; - if( authmode == MBEDTLS_SSL_VERIFY_OPTIONAL ) - return( 0 ); - else - return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); + return( MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE ); } } #endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ @@ -4555,6 +4503,75 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_RENEGOTIATION && MBEDTLS_SSL_CLI_C */ + return( 0 ); +} + +int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) +{ + int ret; + const mbedtls_ssl_ciphersuite_t * const ciphersuite_info = + ssl->transform_negotiate->ciphersuite_info; +#if defined(MBEDTLS_SSL_SRV_C) && defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) + const int authmode = ssl->handshake->sni_authmode != MBEDTLS_SSL_VERIFY_UNSET + ? ssl->handshake->sni_authmode + : ssl->conf->authmode; +#else + const int authmode = ssl->conf->authmode; +#endif + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); + + if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + ssl->state++; + return( 0 ); + } + +#if defined(MBEDTLS_SSL_SRV_C) + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + ssl->state++; + return( 0 ); + } + + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_SERVER && + authmode == MBEDTLS_SSL_VERIFY_NONE ) + { + ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_SKIP_VERIFY; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + ssl->state++; + return( 0 ); + } +#endif + + if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + { + /* mbedtls_ssl_read_record may have sent an alert already. We + let it decide whether to alert. */ + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); + return( ret ); + } + + if( ( ret = ssl_parse_certificate_chain( ssl ) ) != 0 ) + { +#if defined(MBEDTLS_SSL_SRV_C) + if( ret == MBEDTLS_ERR_SSL_NO_CLIENT_CERTIFICATE && + authmode == MBEDTLS_SSL_VERIFY_OPTIONAL ) + { + ret = 0; + } +#endif + + ssl->state++; + return( ret ); + } + if( authmode != MBEDTLS_SSL_VERIFY_NONE ) { mbedtls_x509_crt *ca_chain; @@ -4641,6 +4658,8 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) if( ret != 0 ) { + uint8_t alert; + /* The certificate may have been rejected for several reasons. Pick one and send the corresponding alert. Which alert to send may be a subject of debate in some cases. */ @@ -4683,6 +4702,8 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_DEBUG_C */ } + ssl->state++; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse certificate" ) ); return( ret ); From 3bf49c45522ea5a3fed29966d32fece46c12afda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 13:47:06 +0200 Subject: [PATCH 0090/1100] Enable restart for certificate verify --- include/mbedtls/ssl_internal.h | 2 ++ library/ssl_tls.c | 33 +++++++++++++++++-- tests/ssl-opt.sh | 58 ++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 00a8db44ec..4cfe1540c6 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -231,6 +231,8 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ enum { ssl_ecrs_init = 0, /*!< just getting started */ + ssl_ecrs_crt_parsed, /*!< server certificate was parsed */ + ssl_ecrs_crt_verified, /*!< server certificate was verified*/ ssl_ecrs_ske_read, /*!< ServerKeyExchange was read */ ssl_ecrs_ske_verified, /*!< ServerKeyExchange was verified */ ssl_ecrs_ecdh_public_done, /*!< wrote ECDHE public share */ diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f91e2a885c..f3cde7f0a1 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4518,6 +4518,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) #else const int authmode = ssl->conf->authmode; #endif + void *rs_ctx = NULL; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse certificate" ) ); @@ -4545,11 +4546,20 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) { ssl->session_negotiate->verify_result = MBEDTLS_X509_BADCERT_SKIP_VERIFY; MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip parse certificate" ) ); + ssl->state++; return( 0 ); } #endif +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled && + ssl->handshake->ecrs_state == ssl_ecrs_crt_parsed ) + { + goto crt_verify; + } +#endif + if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) { /* mbedtls_ssl_read_record may have sent an alert already. We @@ -4572,6 +4582,15 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled) + ssl->handshake->ecrs_state++; + +crt_verify: + if( ssl->handshake->ecrs_enabled) + rs_ctx = &ssl->handshake->ecrs_ctx; +#endif + if( authmode != MBEDTLS_SSL_VERIFY_NONE ) { mbedtls_x509_crt *ca_chain; @@ -4593,19 +4612,24 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) /* * Main check: verify certificate */ - ret = mbedtls_x509_crt_verify_with_profile( + ret = mbedtls_x509_crt_verify_restartable( ssl->session_negotiate->peer_cert, ca_chain, ca_crl, ssl->conf->cert_profile, ssl->hostname, &ssl->session_negotiate->verify_result, - ssl->conf->f_vrfy, ssl->conf->p_vrfy ); + ssl->conf->f_vrfy, ssl->conf->p_vrfy, rs_ctx ); if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "x509_verify_cert", ret ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + return( ret ); +#endif + /* * Secondary checks: always done, but change 'ret' only if it was 0 */ @@ -4702,6 +4726,11 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_DEBUG_C */ } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled) + ssl->handshake->ecrs_state++; +#endif + ssl->state++; MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse certificate" ) ); diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 2e03758e6c..1dea049da8 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3450,6 +3450,7 @@ run_test "EC restart: TLS, default" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1" \ 0 \ + -C "x509_verify_cert.*4b80" \ -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3461,6 +3462,7 @@ run_test "EC restart: TLS, max_ops=0" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=0" \ 0 \ + -C "x509_verify_cert.*4b80" \ -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3472,6 +3474,7 @@ run_test "EC restart: TLS, max_ops=65535" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=65535" \ 0 \ + -C "x509_verify_cert.*4b80" \ -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3483,10 +3486,62 @@ run_test "EC restart: TLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000" \ 0 \ + -c "x509_verify_cert.*4b80" \ -c "mbedtls_pk_verify.*4b80" \ -c "mbedtls_ecdh_make_public.*4b80" \ -c "mbedtls_pk_sign.*4b80" +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000, badsign" \ + "$P_SRV auth_mode=required \ + crt_file=data_files/server5-badsign.crt \ + key_file=data_files/server5.key" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + debug_level=1 ec_max_ops=1000" \ + 1 \ + -c "x509_verify_cert.*4b80" \ + -C "mbedtls_pk_verify.*4b80" \ + -C "mbedtls_ecdh_make_public.*4b80" \ + -C "mbedtls_pk_sign.*4b80" \ + -c "! The certificate is not correctly signed by the trusted CA" \ + -c "! mbedtls_ssl_handshake returned" \ + -c "X509 - Certificate verification failed" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign" \ + "$P_SRV auth_mode=required \ + crt_file=data_files/server5-badsign.crt \ + key_file=data_files/server5.key" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + debug_level=1 ec_max_ops=1000 auth_mode=optional" \ + 0 \ + -c "x509_verify_cert.*4b80" \ + -c "mbedtls_pk_verify.*4b80" \ + -c "mbedtls_ecdh_make_public.*4b80" \ + -c "mbedtls_pk_sign.*4b80" \ + -c "! The certificate is not correctly signed by the trusted CA" \ + -C "! mbedtls_ssl_handshake returned" \ + -C "X509 - Certificate verification failed" + +requires_config_enabled MBEDTLS_ECP_RESTARTABLE +run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign" \ + "$P_SRV auth_mode=required \ + crt_file=data_files/server5-badsign.crt \ + key_file=data_files/server5.key" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + debug_level=1 ec_max_ops=1000 auth_mode=none" \ + 0 \ + -C "x509_verify_cert.*4b80" \ + -c "mbedtls_pk_verify.*4b80" \ + -c "mbedtls_ecdh_make_public.*4b80" \ + -c "mbedtls_pk_sign.*4b80" \ + -C "! The certificate is not correctly signed by the trusted CA" \ + -C "! mbedtls_ssl_handshake returned" \ + -C "X509 - Certificate verification failed" + requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: DTLS, max_ops=1000" \ "$P_SRV auth_mode=required dtls=1" \ @@ -3494,6 +3549,7 @@ run_test "EC restart: DTLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ dtls=1 debug_level=1 ec_max_ops=1000" \ 0 \ + -c "x509_verify_cert.*4b80" \ -c "mbedtls_pk_verify.*4b80" \ -c "mbedtls_ecdh_make_public.*4b80" \ -c "mbedtls_pk_sign.*4b80" @@ -3504,6 +3560,7 @@ run_test "EC restart: TLS, max_ops=1000 no client auth" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ debug_level=1 ec_max_ops=1000" \ 0 \ + -c "x509_verify_cert.*4b80" \ -c "mbedtls_pk_verify.*4b80" \ -c "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" @@ -3514,6 +3571,7 @@ run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \ "$P_CLI force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \ psk=abc123 debug_level=1 ec_max_ops=1000" \ 0 \ + -C "x509_verify_cert.*4b80" \ -C "mbedtls_pk_verify.*4b80" \ -C "mbedtls_ecdh_make_public.*4b80" \ -C "mbedtls_pk_sign.*4b80" From 9897cc933db6d14860bd0ae31a6eb015b18450ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 14:30:43 +0200 Subject: [PATCH 0091/1100] Update ChangeLog --- ChangeLog | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index b80f53a257..3acb972f7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,13 +6,9 @@ Features * Add support for restartable ECC operations, enabled by MBEDTLS_ECP_RESTARTABLE (disabled by default) at compile time and mbedtls_ecp_set_max_ops() at runtime, using new xxx_restartable functions - in ECP, ECDSA, PK, and using existing functions in ECDH and SSL - (currently only implemented client-side, for ECDHE-ECDSA ciphersuites - with TLS 1.2, including client authentication). - TEMPORARY NOTE: server authentication currently not supported (WIP). - For now, MUST be disabled by calling - mbedtls_ssl_conf_authmode( MBEDTLS_SSL_VERIFY_NONE ) - (or blocking ECC operations will happen) + in ECP, ECDSA, PK and X509 (CRL not supported yet), and using existing + functions in ECDH and SSL (currently only implemented client-side, for + ECDHE-ECDSA ciphersuites with TLS 1.2, including client authentication). = mbed TLS x.x.x branch released xxxx-xx-xx From c9e16a97da197abf687ff1a8a107c3d3d4497e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 15 Aug 2017 14:30:59 +0200 Subject: [PATCH 0092/1100] Disable restartable ECC by default --- include/mbedtls/config.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index f4c565ebbd..fbfab63b08 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -566,15 +566,17 @@ * * Enable "non-blocking" ECC operations that can return early and be resumed. * - * This enables \c mbedtls_ecp_set_max_ops() and allows various ECC functions - * to return \c MBEDTLS_ERR_ECP_IN_PROGRESS when needed. + * This enables \c mbedtls_ecp_set_max_ops() and allows various functions + * to return \c MBEDTLS_ERR_ECP_IN_PROGRESS when needed, and then be called + * again later with the same arguments in order to further progress and + * eventually complete the operation, see \c mbedtls_ecp_set_max_ops(). * - * TODO: depending on other choices, this might need to be disabled by default - * in order to avoid changing the ABI. Revisit that later. + * This is usefull in non-threaded environments if you want to avoid blocking + * for too long on ECC (hence, X509 or SSL/TLS) operations. * - * Comment this macro to disable non-blocking ECC computations. + * Uncomment this macro to enable restartable ECC computations. */ -#define MBEDTLS_ECP_RESTARTABLE +//#define MBEDTLS_ECP_RESTARTABLE /** * \def MBEDTLS_ECDSA_DETERMINISTIC From 5faafa76cf925954f275a878302b660f0889912a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 17 Aug 2017 10:13:00 +0200 Subject: [PATCH 0093/1100] Update X.509 test certs' Readme --- tests/data_files/Readme-x509.txt | 39 ++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/tests/data_files/Readme-x509.txt b/tests/data_files/Readme-x509.txt index 185fb3412b..6f54ed0c1c 100644 --- a/tests/data_files/Readme-x509.txt +++ b/tests/data_files/Readme-x509.txt @@ -16,6 +16,7 @@ The files test-ca_cat12 and test-ca_cat21 contain them concatenated both ways. Two intermediate CAs are signed by them: - test-int-ca.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate CA" uses RSA-4096, signed by test-ca2 + - test-int-ca-exp.crt is a copy that is expired - test-int-ca2.crt "C=NL, O=PolarSSL, CN=PolarSSL Test Intermediate EC CA" uses an EC key with NIST P-384, signed by test-ca @@ -66,21 +67,41 @@ List of certificates: - server2*.crt: 1 R L: misc - server3.crt: 1 E L: EC cert signed by RSA CA - server4.crt: 2 R L: RSA cert signed by EC CA -- server5*.crt: 2* E L: misc *(except server5-selfsigned) +- server5*.crt: 2* E L: misc *(except -selfsigned and -ss-*) -sha*: hashes - -eku*: extendeKeyUsage (cli/srv = www client/server, cs = codesign, etc) - -ku*: keyUsage (ds = signatures, ke/ka = key exchange/agreement) + .eku*: extendeKeyUsage (cli/srv = www client/server, cs = codesign, etc) + .ku*: keyUsage (ds = signatures, ke/ka = key exchange/agreement) + .req*: CSR, not certificate + -der*: trailing bytes in der (?) + -badsign.crt: S5 with corrupted signature + -expired.crt: S5 with "not after" date in the past + -future.crt: S5 with "not before" date in the future + -selfsigned.crt: Self-signed cert with S5 key + -ss-expired.crt: Self-signed cert with S5 key, expired + -ss-forgeca.crt: Copy of test-int-ca3 self-signed with S5 key - server6-ss-child.crt: O E: "child" of non-CA server5-selfsigned - server6.crt, server6.pem: 2 E L C: revoked -- server7*.crt: I1 E L P1*: EC signed by RSA signed by EC - *P1 except 7.crt, P2 _int-ca_ca2.crt - *_space: with PEM error(s) - _spurious: has spurious cert in its chain (S7 + I2 + I1) +- server7.crt: I1 E L P1(usually): EC signed by RSA signed by EC + -badsign.crt: S7 with corrupted signature + I1 + -expired.crt: S7 with "not after" date in the past + I1 + -future.crt: S7 with "not before" date in the future + I1 + _int-ca-exp.crt: S7 + expired I1 + _int-ca.crt: S7 + I1 + _int-ca_ca2.crt: S7 + I1 + 2 + _all_space.crt: S7 + I1 both with misplaced spaces (invalid PEM) + _pem_space.crt: S7 with misplace space (invalid PEM) + I1 + _trailing_space.crt: S7 + I1 both with trainling space (valid PEM) + _spurious_int-ca.crt: S7 + I2(spurious) + I1 - server8*.crt: I2 R L: RSA signed by EC signed by RSA (P1 for _int-ca2) - server9*.crt: 1 R C* L P1*: signed using RSASSA-PSS *CRL for: 9.crt, -badsign, -with-ca (P1) -- server10*.crt: I3 E L P2/P3 - _spurious: S10 + I3 + I1(spurious) + I2 +- server10.crt: I3 E L + -badsign.crt: S10 with corrupted signature + -bs_int3.pem: S10-badsign + I3 + _int3-bs.pem: S10 + I3-badsign + _int3_int-ca2.crt: S10 + I3 + I2 + _int3_int-ca2_ca.crt: S10 + I3 + I2 + 1 + _int3_spurious_int-ca2.crt: S10 + I3 + I1(spurious) + I2 Certificate revocation lists ---------------------------- From b889d3e5fbbb3ae16a2c23b77c6cd243486967dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 17 Aug 2017 10:25:18 +0200 Subject: [PATCH 0094/1100] Clarify & uniformise test comments --- tests/suites/test_suite_ecdh.data | 4 ++-- tests/suites/test_suite_ecdsa.data | 4 ++-- tests/suites/test_suite_ecp.data | 4 ++-- tests/suites/test_suite_pk.data | 6 +++--- tests/suites/test_suite_x509parse.data | 12 ++++++------ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/suites/test_suite_ecdh.data b/tests/suites/test_suite_ecdh.data index da30633ac8..0165a7e0a4 100644 --- a/tests/suites/test_suite_ecdh.data +++ b/tests/suites/test_suite_ecdh.data @@ -38,7 +38,7 @@ ECDH exchange #2 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED ecdh_exchange:MBEDTLS_ECP_DP_SECP521R1 -ECDH restartable rfc 5903 p256 restart enabled max_ops=0 +ECDH restartable rfc 5903 p256 restart enabled max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:0:0:0 @@ -54,7 +54,7 @@ ECDH restartable rfc 5903 p256 restart enabled max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":1:250:2:32 -ECDH restartable rfc 5903 p256 restart disabled max_ops=0 +ECDH restartable rfc 5903 p256 restart disabled max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdh_restart:MBEDTLS_ECP_DP_SECP256R1:"C88F01F510D9AC3F70A292DAA2316DE544E9AAB8AFE84049C62A9C57862D1433":"C6EF9C5D78AE012A011164ACB397CE2088685D8F06BF9BE0B283AB46476BEE53":"D6840F6B42F6EDAFD13116E0E12565202FEF8E9ECE7DCE03812464D04B9442DE":0:0:0:0 diff --git a/tests/suites/test_suite_ecdsa.data b/tests/suites/test_suite_ecdsa.data index f9c8f60687..e07c4cd57c 100644 --- a/tests/suites/test_suite_ecdsa.data +++ b/tests/suites/test_suite_ecdsa.data @@ -250,7 +250,7 @@ ECDSA deterministic test vector rfc 6979 p521 sha512 depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED:MBEDTLS_SHA512_C ecdsa_det_test_vectors:MBEDTLS_ECP_DP_SECP521R1:"0FAD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538":MBEDTLS_MD_SHA512:"test":"13E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB93482FDCC54EDCEE91ECA4166B2A7C6265EF0CE2BD7051B7CEF945BABD47EE6D":"1FBD0013C674AA79CB39849527916CE301C66EA7CE8B80682786AD60F98F7E78A19CA69EFF5C57400E3B3A0AD66CE0978214D13BAF4E9AC60752F7B155E2DE4DCE3" -ECDSA restartable read-verify: restart disabled +ECDSA restartable read-verify: max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":0:0:0 @@ -266,7 +266,7 @@ ECDSA restartable read-verify: max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecdsa_read_restart:MBEDTLS_ECP_DP_SECP256R1:"04e8f573412a810c5f81ecd2d251bb94387e72f28af70dced90ebe75725c97a6428231069c2b1ef78509a22c59044319f6ed3cb750dfe64c2a282b35967a458ad6":"dee9d4d8b0e40a034602d6e638197998060f6e9f353ae1d10c94cd56476d3c92":"304502210098a5a1392abe29e4b0a4da3fefe9af0f8c32e5b839ab52ba6a05da9c3b7edd0f0220596f0e195ae1e58c1e53e9e7f0f030b274348a8c11232101778d89c4943f5ad2":250:4:64 -ECDSA restartable sign-write: secp256r1 restart disabled +ECDSA restartable sign-write: secp256r1 max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C ecdsa_write_restart:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index 5bb8d024d2..8c3e8f748d 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -345,7 +345,7 @@ ecp_test_vect:MBEDTLS_ECP_DP_SECP256K1:"923C6D4756CD940CD1E13A359F6E0F0698791938 ECP selftest ecp_selftest: -ECP restartable mul secp256r1 restart disabled +ECP restartable mul secp256r1 max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":0:0:0 @@ -361,7 +361,7 @@ ECP restartable mul secp256r1 max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_test_vect_restart:MBEDTLS_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50":250:2:32 -ECP restartable muladd secp256r1 restart disabled +ECP restartable muladd secp256r1 max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED ecp_muladd_restart:MBEDTLS_ECP_DP_SECP256R1:"CB28E0999B9C7715FD0A80D8E47A77079716CBBF917DD72E97566EA1C066957C":"2B57C0235FB7489768D058FF4911C20FDBE71E3699D91339AFBB903EE17255DC":"C3875E57C85038A0D60370A87505200DC8317C8C534948BEA6559C7C18E6D4CE":"3B4E49C4FDBFC006FF993C81A50EAE221149076D6EC09DDD9FB3B787F85B6483":"2442A5CC0ECD015FA3CA31DC8E2BBC70BF42D60CBCA20085E0822CB04235E970":"6FC98BD7E50211A4A27102FA3549DF79EBCB4BF246B80945CDDFE7D509BBFD7D":0:0:0 diff --git a/tests/suites/test_suite_pk.data b/tests/suites/test_suite_pk.data index bd3db182b9..574011c909 100644 --- a/tests/suites/test_suite_pk.data +++ b/tests/suites/test_suite_pk.data @@ -154,11 +154,11 @@ RSA hash_len overflow (size_t vs unsigned int) depends_on:MBEDTLS_RSA_C:MBEDTLS_HAVE_INT64 pk_rsa_overflow: -ECDSA restartable sign/verify: ECDSA, restart disabled +ECDSA restartable sign/verify: ECDSA, max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 -ECDSA restartable sign/verify: ECKEY, restart disabled +ECDSA restartable sign/verify: ECKEY, max_ops=0 (disabled) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":0:0:0 @@ -182,6 +182,6 @@ ECDSA restartable sign/verify: ECDSA, max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C pk_sign_verify_restart:MBEDTLS_PK_ECDSA:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":250:2:64 -ECDSA restartable sign/verify: ECKEY, max_ops=1 +ECDSA restartable sign/verify: ECKEY, max_ops=250 depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C pk_sign_verify_restart:MBEDTLS_PK_ECKEY:MBEDTLS_ECP_DP_SECP256R1:"C9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721":"60FED4BA255A9D31C961EB74C6356D68C049B8923B61FA6CE669622E60F29FB6":"7903FE1008B8BC99A41AE9E95628BC64F2F1B20C2D7E9F5177A3C294D4462299":MBEDTLS_MD_SHA256:"test":"3045022100f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d383670220019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083":250:2:64 diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data index 1c553b4561..30274b58db 100644 --- a/tests/suites/test_suite_x509parse.data +++ b/tests/suites/test_suite_x509parse.data @@ -1806,7 +1806,7 @@ X509 Get time (UTC invalid character in sec) depends_on:MBEDTLS_X509_USE_C x509_get_time:MBEDTLS_ASN1_UTC_TIME:"0011302359n0Z":MBEDTLS_ERR_X509_INVALID_DATE:0:0:0:0:0:0 -X509 cert verify restart: trusted EE, max_ops=0 +X509 cert verify restart: trusted EE, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED x509_verify_restart:"data_files/server5-selfsigned.crt":"data_files/server5-selfsigned.crt":0:0:0:0:0 @@ -1814,7 +1814,7 @@ X509 cert verify restart: trusted EE, max_ops=1 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED x509_verify_restart:"data_files/server5-selfsigned.crt":"data_files/server5-selfsigned.crt":0:0:1:0:0 -X509 cert verify restart: no intermediate, max_ops=0 +X509 cert verify restart: no intermediate, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:0:0:0 @@ -1830,7 +1830,7 @@ X509 cert verify restart: no intermediate, max_ops=500 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5.crt":"data_files/test-ca2.crt":0:0:500:20:80 -X509 cert verify restart: no intermediate, badsign, max_ops=0 +X509 cert verify restart: no intermediate, badsign, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 @@ -1846,7 +1846,7 @@ X509 cert verify restart: no intermediate, badsign, max_ops=500 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED x509_verify_restart:"data_files/server5-badsign.crt":"data_files/test-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:500:20:80 -X509 cert verify restart: one int, max_ops=0 +X509 cert verify restart: one int, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:0:0:0 @@ -1862,7 +1862,7 @@ X509 cert verify restart: one int, max_ops=500 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10_int3_int-ca2.crt":"data_files/test-int-ca2.crt":0:0:500:25:100 -X509 cert verify restart: one int, EE badsign, max_ops=0 +X509 cert verify restart: one int, EE badsign, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 @@ -1878,7 +1878,7 @@ X509 cert verify restart: one int, EE badsign, max_ops=500 depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10-bs_int3.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:500:25:100 -X509 cert verify restart: one int, int badsign, max_ops=0 +X509 cert verify restart: one int, int badsign, max_ops=0 (disabled) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECDSA_C:MBEDTLS_SHA256_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_ECP_DP_SECP384R1_ENABLED:MBEDTLS_RSA_C x509_verify_restart:"data_files/server10_int3-bs.pem":"data_files/test-int-ca2.crt":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_NOT_TRUSTED:0:0:0 From 98a6778d478b62423bbb6ba85ec638e9f10b2374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 17 Aug 2017 10:52:20 +0200 Subject: [PATCH 0095/1100] Better document some function arguments --- library/x509_crt.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index a0d1956dcf..9ab376db20 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1949,6 +1949,16 @@ static int x509_crt_check_parent( const mbedtls_x509_crt *child, * way we select the correct one is by checking the signature (as we don't * rely on key identifier extensions). (This is one way users might choose to * handle key rollover, another relies on self-issued certs, see [SIRO].) + * + * Arguments: + * [in] child: certificate for which we want a parent + * [in] candidates: list of possible parents + * [out] r_parent: parent found (or NULL) + * [out] r_signature_is_good: 1 if child signature by parent is valid, or 0 + * [in] top: 1 if candidates are locally trusted, or 0 + * [in] path_cnt: number of links in the chain so far (EE -> ... -> child) + * [in] self_cnt: number of self-signed certs in the chain so far + * [in-out] rs_ctx: context for restarting operations */ static int x509_crt_find_parent_in( mbedtls_x509_crt *child, @@ -2061,6 +2071,17 @@ check_signature: * * Searches in trusted CAs first, and return the first suitable parent found * (see find_parent_in() for definition of suitable). + * + * Arguments: + * [in] child: certificate for which we want a parent, + * possibly followed by a list of ancestors + * [in] trust_ca: list of locally trusted certificates + * [out] parent: parent found (or NULL) + * [out] parent_is_trusted: 1 if returned `parent` is trusted, or 0 + * [out] signature_is_good: 1 if child signature by parent is valid, or 0 + * [in] path_cnt: number of links in the chain so far (EE -> ... -> child) + * [in] self_cnt: number of self-signed certs in the chain so far + * [in-out] rs_ctx: context for restarting operations */ static int x509_crt_find_parent( mbedtls_x509_crt *child, @@ -2187,6 +2208,7 @@ static int x509_crt_check_ee_locally_trusted( * - [in] trust_ca: the trusted list R1, ..., Rp * - [in] ca_crl, profile: as in verify_with_profile() * - [out] ver_chain: the built and verified chain + * - [in-out] rs_ctx: context for restarting operations * * Return value: * - non-zero if the chain could not be fully built and examined @@ -2311,7 +2333,7 @@ find_parent: return( MBEDTLS_ERR_X509_FATAL_ERROR ); } - /* signature was check while searching parent */ + /* signature was checked while searching parent */ if( ! signature_is_good ) *flags |= MBEDTLS_X509_BADCERT_NOT_TRUSTED; From 15d7df2ba8ca706b944b771958cd23b6c2163f81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 17 Aug 2017 14:33:31 +0200 Subject: [PATCH 0096/1100] Introduce mbedtls_pk_restart_ctx and use it The fact that you needed to pass a pointer to mbedtls_ecdsa_restart_ctx (or that you needed to know the key type of the PK context) was a breach of abstraction. Change the API (and callers) now, and the implementation will be changed in the next commit. --- include/mbedtls/pk.h | 35 ++++++++++++++++++++++++----- include/mbedtls/x509_crt.h | 2 +- library/pk.c | 25 +++++++++++++++++++-- library/ssl_cli.c | 4 ++-- library/x509_crt.c | 6 ++--- tests/suites/test_suite_pk.function | 22 +++++++++--------- 6 files changed, 69 insertions(+), 25 deletions(-) diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 05c51d38d5..55b0668c2a 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -129,6 +129,19 @@ typedef struct void * pk_ctx; /**< Underlying public key context */ } mbedtls_pk_context; +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Context for resuming operations + */ +typedef struct +{ + mbedtls_ecdsa_restart_ctx ecdsa; /* temporary */ +} mbedtls_pk_restart_ctx; +#else +/* Now we can declare functions that take a pointer to that */ +typedef void mbedtls_pk_restart_ctx; +#endif + #if defined(MBEDTLS_RSA_C) /** * Quick access to an RSA context inside a PK context. @@ -188,6 +201,18 @@ void mbedtls_pk_init( mbedtls_pk_context *ctx ); */ void mbedtls_pk_free( mbedtls_pk_context *ctx ); +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context + */ +void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context + */ +void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /** * \brief Initialize a PK context with the information given * and allocates the type-specific PK subcontext. @@ -298,8 +323,7 @@ int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * \param hash_len Hash length or 0 (see notes) * \param sig Signature to verify * \param sig_len Signature length - * \param rs_ctx Restart context: for ECC, must be NULL (no restart) or a - * pointer to a \c mbedtls_ecdsa_restart_ctx. Ignored for RSA. + * \param rs_ctx Restart context (NULL to disable restart) * * \return See \c mbedtls_pk_verify(), or * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of @@ -309,7 +333,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len, - void *rs_ctx ); + mbedtls_pk_restart_ctx *rs_ctx ); /** * \brief Verify signature, with options. @@ -390,8 +414,7 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * \param sig_len Number of bytes written * \param f_rng RNG function * \param p_rng RNG parameter - * \param rs_ctx Restart context: for ECC, must be NULL (no restart) or a - * pointer to a \c mbedtls_ecdsa_restart_ctx. Ignored for RSA. + * \param rs_ctx Restart context (NULL to disable restart) * * \return See \c mbedtls_pk_sign(), or * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of @@ -402,7 +425,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - void *rs_ctx ); + mbedtls_pk_restart_ctx *rs_ctx ); /** * \brief Decrypt message (including padding if relevant). diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 7487df619d..3388c3b93d 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -172,7 +172,7 @@ typedef struct typedef struct { /* for check_signature() */ - mbedtls_ecdsa_restart_ctx ecdsa; + mbedtls_pk_restart_ctx pk; /* for find_parent_in() */ mbedtls_x509_crt *parent; /* non-null iff parent_in in progress */ diff --git a/library/pk.c b/library/pk.c index e439c7ad81..27ca5f3eb1 100644 --- a/library/pk.c +++ b/library/pk.c @@ -73,6 +73,27 @@ void mbedtls_pk_free( mbedtls_pk_context *ctx ) mbedtls_zeroize( ctx, sizeof( mbedtls_pk_context ) ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Initialize a restart context + */ +void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ) +{ + mbedtls_ecdsa_restart_init( &ctx->ecdsa ); +} + +/* + * Free the components of a restart context + */ +void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ) +{ + if( ctx == NULL ) + return; + + mbedtls_ecdsa_restart_free( &ctx->ecdsa ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /* * Get pk_info structure from type */ @@ -182,7 +203,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len, - void *rs_ctx ) + mbedtls_pk_restart_ctx *rs_ctx ) { if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) @@ -282,7 +303,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - void *rs_ctx ) + mbedtls_pk_restart_ctx *rs_ctx ) { if( ctx == NULL || ctx->pk_info == NULL || pk_hashlen_helper( md_alg, &hash_len ) != 0 ) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 7ffeb5bb45..d53f7b227e 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2615,7 +2615,7 @@ ske_process: #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) - rs_ctx = &ssl->handshake->ecrs_ctx.ecdsa; + rs_ctx = &ssl->handshake->ecrs_ctx.pk; #endif if( ( ret = mbedtls_pk_verify_restartable( @@ -3290,7 +3290,7 @@ keys_derived: #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) - rs_ctx = &ssl->handshake->ecrs_ctx.ecdsa; + rs_ctx = &ssl->handshake->ecrs_ctx.pk; #endif if( ( ret = mbedtls_pk_sign_restartable( mbedtls_ssl_own_key( ssl ), diff --git a/library/x509_crt.c b/library/x509_crt.c index 9ab376db20..a6f6a78d84 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1875,7 +1875,7 @@ static int x509_crt_check_signature( const mbedtls_x509_crt *child, { return( mbedtls_pk_verify_restartable( &parent->pk, child->sig_md, hash, mbedtls_md_get_size( md_info ), - child->sig.p, child->sig.len, &rs_ctx->ecdsa ) ); + child->sig.p, child->sig.len, &rs_ctx->pk ) ); } #else (void) rs_ctx; @@ -2653,7 +2653,7 @@ void mbedtls_x509_crt_free( mbedtls_x509_crt *crt ) */ void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) { - mbedtls_ecdsa_restart_init( &ctx->ecdsa ); + mbedtls_pk_restart_init( &ctx->pk ); ctx->parent = NULL; ctx->fallback_parent = NULL; @@ -2675,7 +2675,7 @@ void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx ) if( ctx == NULL ) return; - mbedtls_ecdsa_restart_free( &ctx->ecdsa ); + mbedtls_pk_restart_free( &ctx->pk ); mbedtls_x509_crt_restart_init( ctx ); } diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 6e8c032c1c..176b08f980 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -127,12 +127,12 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, mbedtls_rsa_context *rsa; mbedtls_pk_context pk; int msg_len; - void *rs_ctx = NULL; + mbedtls_pk_restart_ctx *rs_ctx = NULL; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - mbedtls_ecdsa_restart_ctx ctx; + mbedtls_pk_restart_ctx ctx; rs_ctx = &ctx; - mbedtls_ecdsa_restart_init( rs_ctx ); + mbedtls_pk_restart_init( rs_ctx ); mbedtls_ecp_set_max_ops( 42 ); #endif @@ -163,7 +163,7 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, exit: #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - mbedtls_ecdsa_restart_free( rs_ctx ); + mbedtls_pk_restart_free( rs_ctx ); #endif mbedtls_pk_free( &pk ); } @@ -274,7 +274,7 @@ void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, int max_ops, int min_restart, int max_restart ) { int ret, cnt_restart; - mbedtls_ecdsa_restart_ctx rs_ctx; + mbedtls_pk_restart_ctx rs_ctx; mbedtls_pk_context prv, pub; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; unsigned char sig[MBEDTLS_ECDSA_MAX_LEN]; @@ -282,7 +282,7 @@ void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, size_t hlen, slen, slen_check; const mbedtls_md_info_t *md_info; - mbedtls_ecdsa_restart_init( &rs_ctx ); + mbedtls_pk_restart_init( &rs_ctx ); mbedtls_pk_init( &prv ); mbedtls_pk_init( &pub ); memset( hash, 0, sizeof( hash ) ); @@ -351,7 +351,7 @@ void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, ret = mbedtls_pk_verify_restartable( &pub, md_alg, hash, hlen, sig, slen, &rs_ctx ); TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - mbedtls_ecdsa_restart_free( &rs_ctx ); + mbedtls_pk_restart_free( &rs_ctx ); slen = sizeof( sig ); ret = mbedtls_pk_sign_restartable( &prv, md_alg, hash, hlen, @@ -359,7 +359,7 @@ void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); exit: - mbedtls_ecdsa_restart_free( &rs_ctx ); + mbedtls_pk_restart_free( &rs_ctx ); mbedtls_pk_free( &prv ); mbedtls_pk_free( &pub ); } @@ -373,10 +373,10 @@ void pk_sign_verify( int type, int sign_ret, int verify_ret ) size_t sig_len; void *rs_ctx = NULL; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - mbedtls_ecdsa_restart_ctx ctx; + mbedtls_pk_restart_ctx ctx; rs_ctx = &ctx; - mbedtls_ecdsa_restart_init( rs_ctx ); + mbedtls_pk_restart_init( rs_ctx ); mbedtls_ecp_set_max_ops( 42000 ); #endif @@ -429,7 +429,7 @@ void pk_sign_verify( int type, int sign_ret, int verify_ret ) exit: #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - mbedtls_ecdsa_restart_free( rs_ctx ); + mbedtls_pk_restart_free( rs_ctx ); #endif mbedtls_pk_free( &pk ); } From 0bbc66cc7695ede2f6efcb7eb3c8a1103f196a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 18 Aug 2017 16:22:06 +0200 Subject: [PATCH 0097/1100] Dynamically allocate/free restart subcontext in PK --- include/mbedtls/pk.h | 3 +- include/mbedtls/pk_internal.h | 8 ++++ library/pk.c | 69 ++++++++++++++++++++++++++++++----- library/pk_wrap.c | 38 +++++++++++++++++++ 4 files changed, 108 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 55b0668c2a..8ec69856b8 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -135,7 +135,8 @@ typedef struct */ typedef struct { - mbedtls_ecdsa_restart_ctx ecdsa; /* temporary */ + const mbedtls_pk_info_t * pk_info; /**< Public key informations */ + void * rs_ctx; /**< Underlying restart context */ } mbedtls_pk_restart_ctx; #else /* Now we can declare functions that take a pointer to that */ diff --git a/include/mbedtls/pk_internal.h b/include/mbedtls/pk_internal.h index e996b6cadd..d56b0b334a 100644 --- a/include/mbedtls/pk_internal.h +++ b/include/mbedtls/pk_internal.h @@ -94,6 +94,14 @@ struct mbedtls_pk_info_t /** Free the given context */ void (*ctx_free_func)( void *ctx ); +#if defined(MBEDTLS_ECP_RESTARTABLE) + /** Allocate the restart context */ + void * (*rs_alloc_func)( void ); + + /** Free the restart context */ + void (*rs_free_func)( void *rs_ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /** Interface with the debug module */ void (*debug_func)( const void *ctx, mbedtls_pk_debug_item *items ); diff --git a/library/pk.c b/library/pk.c index 27ca5f3eb1..70691d6e86 100644 --- a/library/pk.c +++ b/library/pk.c @@ -79,7 +79,8 @@ void mbedtls_pk_free( mbedtls_pk_context *ctx ) */ void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ) { - mbedtls_ecdsa_restart_init( &ctx->ecdsa ); + ctx->pk_info = NULL; + ctx->rs_ctx = NULL; } /* @@ -87,10 +88,16 @@ void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ) */ void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ) { - if( ctx == NULL ) + if( ctx == NULL || ctx->pk_info == NULL || + ctx->pk_info->rs_free_func == NULL ) + { return; + } - mbedtls_ecdsa_restart_free( &ctx->ecdsa ); + ctx->pk_info->rs_free_func( ctx->rs_ctx ); + + ctx->pk_info = NULL; + ctx->rs_ctx = NULL; } #endif /* MBEDTLS_ECP_RESTARTABLE */ @@ -196,6 +203,30 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len return( 0 ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +/* + * Helper to set up a restart context if needed + */ +static int pk_restart_setup( mbedtls_pk_restart_ctx *ctx, + const mbedtls_pk_info_t *info ) +{ + /* Don't do anything it already set up */ + if( ctx->pk_info != NULL ) + return( 0 ); + + /* Should never happen when we're called */ + if( info->rs_alloc_func == NULL || info->rs_free_func == NULL ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + + if( ( ctx->rs_ctx = info->rs_alloc_func() ) == NULL ) + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + + ctx->pk_info = info; + + return( 0 ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + /* * Verify a signature (restartable) */ @@ -210,10 +241,20 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ctx->pk_info->verify_rs_func != NULL ) + if( rs_ctx != NULL && ctx->pk_info->verify_rs_func != NULL ) { - return( ctx->pk_info->verify_rs_func( ctx->pk_ctx, - md_alg, hash, hash_len, sig, sig_len, rs_ctx ) ); + int ret; + + if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 ) + return( ret ); + + ret = ctx->pk_info->verify_rs_func( ctx->pk_ctx, + md_alg, hash, hash_len, sig, sig_len, rs_ctx->rs_ctx ); + + if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + mbedtls_pk_restart_free( rs_ctx ); + + return( ret ); } #else (void) rs_ctx; @@ -310,10 +351,20 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ctx->pk_info->sign_rs_func != NULL ) + if( rs_ctx != NULL && ctx->pk_info->sign_rs_func != NULL ) { - return( ctx->pk_info->sign_rs_func( ctx->pk_ctx, md_alg, - hash, hash_len, sig, sig_len, f_rng, p_rng, rs_ctx ) ); + int ret; + + if( ( ret = pk_restart_setup( rs_ctx, ctx->pk_info ) ) != 0 ) + return( ret ); + + ret = ctx->pk_info->sign_rs_func( ctx->pk_ctx, md_alg, + hash, hash_len, sig, sig_len, f_rng, p_rng, rs_ctx->rs_ctx ); + + if( ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + mbedtls_pk_restart_free( rs_ctx ); + + return( ret ); } #else (void) rs_ctx; diff --git a/library/pk_wrap.c b/library/pk_wrap.c index 8b94d8129a..0f935b2ad9 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -189,6 +189,10 @@ const mbedtls_pk_info_t mbedtls_rsa_info = { rsa_check_pair_wrap, rsa_alloc_wrap, rsa_free_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif rsa_debug, }; #endif /* MBEDTLS_RSA_C */ @@ -401,6 +405,24 @@ static void eckey_debug( const void *ctx, mbedtls_pk_debug_item *items ) items->value = &( ((mbedtls_ecp_keypair *) ctx)->Q ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +static void *eckey_rs_alloc( void ) +{ + void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_restart_ctx ) ); + + if( ctx != NULL ) + mbedtls_ecdsa_restart_init( ctx ); + + return( ctx ); +} + +static void eckey_rs_free( void *ctx ) +{ + mbedtls_ecdsa_restart_free( ctx ); + mbedtls_free( ctx ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + const mbedtls_pk_info_t mbedtls_eckey_info = { MBEDTLS_PK_ECKEY, "EC", @@ -426,6 +448,10 @@ const mbedtls_pk_info_t mbedtls_eckey_info = { eckey_check_pair, eckey_alloc_wrap, eckey_free_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + eckey_rs_alloc, + eckey_rs_free, +#endif eckey_debug, }; @@ -454,6 +480,10 @@ const mbedtls_pk_info_t mbedtls_eckeydh_info = { eckey_check_pair, eckey_alloc_wrap, /* Same underlying key structure */ eckey_free_wrap, /* Same underlying key structure */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif eckey_debug, /* Same underlying key structure */ }; #endif /* MBEDTLS_ECP_C */ @@ -555,6 +585,10 @@ const mbedtls_pk_info_t mbedtls_ecdsa_info = { eckey_check_pair, /* Compatible key structures */ ecdsa_alloc_wrap, ecdsa_free_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + eckey_rs_alloc, + eckey_rs_free, +#endif eckey_debug, /* Compatible key structures */ }; #endif /* MBEDTLS_ECDSA_C */ @@ -677,6 +711,10 @@ const mbedtls_pk_info_t mbedtls_rsa_alt_info = { #endif rsa_alt_alloc_wrap, rsa_alt_free_wrap, +#if defined(MBEDTLS_ECP_RESTARTABLE) + NULL, + NULL, +#endif NULL, }; From fe6877034d01306d073bbc3f8bee454ca7f2a58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 18 Aug 2017 17:04:07 +0200 Subject: [PATCH 0098/1100] Keep PK layer context in the PK layer Previously we kept the ecdsa context created by the PK layer for ECDSA operations on ECKEY in the ecdsa_restart_ctx structure, which was wrong, and caused by the fact that we didn't have a proper handling of restart sub-contexts in the PK layer. --- include/mbedtls/ecdsa.h | 3 - library/ecdsa.c | 9 --- library/pk_wrap.c | 174 +++++++++++++++++++--------------------- 3 files changed, 82 insertions(+), 104 deletions(-) diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index 77842526cc..ce94af871c 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -91,9 +91,6 @@ typedef struct #if defined(MBEDTLS_ECDSA_DETERMINISTIC) mbedtls_ecdsa_restart_det_ctx *det; /*!< ecdsa_sign_det() sub-context */ #endif -#if defined(MBEDTLS_PK_C) - mbedtls_ecdsa_context *ecdsa; /*!< used by the PK layer */ -#endif } mbedtls_ecdsa_restart_ctx; #else /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/ecdsa.c b/library/ecdsa.c index 8d1f9d632a..487bbd8e53 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -780,9 +780,6 @@ void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ) #if defined(MBEDTLS_ECDSA_DETERMINISTIC) ctx->det = NULL; #endif -#if defined(MBEDTLS_PK_C) - ctx->ecdsa = NULL; -#endif } /* @@ -805,12 +802,6 @@ void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ) mbedtls_free( ctx->det ); ctx->det = NULL; #endif - -#if defined(MBEDTLS_PK_C) - mbedtls_ecdsa_free( ctx->ecdsa ); - mbedtls_free( ctx->ecdsa ); - ctx->ecdsa = NULL; -#endif } #endif /* MBEDTLS_ECP_RESTARTABLE */ diff --git a/library/pk_wrap.c b/library/pk_wrap.c index 0f935b2ad9..824c9d4356 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -273,53 +273,69 @@ static int ecdsa_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, void *rs_ctx ); +/* + * Restart context for ECDSA operations with ECKEY context + * + * We need to store an actual ECDSA context, as we need to pass the same to + * the underlying ecdsa function, so we can't create it on the fly every time. + */ +typedef struct +{ + mbedtls_ecdsa_restart_ctx ecdsa_rs; + mbedtls_ecdsa_context ecdsa_ctx; +} eckey_restart_ctx; + +static void *eckey_rs_alloc( void ) +{ + eckey_restart_ctx *rs_ctx; + + void *ctx = mbedtls_calloc( 1, sizeof( eckey_restart_ctx ) ); + + if( ctx != NULL ) + { + rs_ctx = ctx; + mbedtls_ecdsa_restart_init( &rs_ctx->ecdsa_rs ); + mbedtls_ecdsa_init( &rs_ctx->ecdsa_ctx ); + } + + return( ctx ); +} + +static void eckey_rs_free( void *ctx ) +{ + eckey_restart_ctx *rs_ctx; + + if( ctx == NULL) + return; + + rs_ctx = ctx; + mbedtls_ecdsa_restart_free( &rs_ctx->ecdsa_rs ); + mbedtls_ecdsa_free( &rs_ctx->ecdsa_ctx ); + + mbedtls_free( ctx ); +} + static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len, - void *p_rs_ctx ) + void *rs_ctx ) { int ret; - mbedtls_ecdsa_context ecdsa, *p_ecdsa = &ecdsa; - mbedtls_ecdsa_restart_ctx *rs_ctx = p_rs_ctx; + eckey_restart_ctx *rs = rs_ctx; - mbedtls_ecdsa_init( &ecdsa ); + /* Should never happen */ + if( rs == NULL ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); /* set up our own sub-context if needed */ - if( mbedtls_ecp_restart_enabled() && - rs_ctx != NULL && rs_ctx->ecdsa == NULL ) - { - rs_ctx->ecdsa = mbedtls_calloc( 1, sizeof( *rs_ctx->ecdsa ) ); - if( rs_ctx->ecdsa == NULL ) - return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + if( rs->ecdsa_ctx.grp.pbits == 0 ) + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( &rs->ecdsa_ctx, ctx ) ); - mbedtls_ecdsa_init( rs_ctx->ecdsa ); - MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( rs_ctx->ecdsa, ctx ) ); - } - - if( rs_ctx != NULL && rs_ctx->ecdsa != NULL ) - { - /* redirect to our context */ - p_ecdsa = rs_ctx->ecdsa; - } - else - { - MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( p_ecdsa, ctx ) ); - } - - MBEDTLS_MPI_CHK( ecdsa_verify_rs_wrap( p_ecdsa, md_alg, hash, hash_len, - sig, sig_len, rs_ctx ) ); + MBEDTLS_MPI_CHK( ecdsa_verify_rs_wrap( &rs->ecdsa_ctx, + md_alg, hash, hash_len, + sig, sig_len, &rs->ecdsa_rs ) ); cleanup: - /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) - { - mbedtls_ecdsa_free( rs_ctx->ecdsa ); - mbedtls_free( rs_ctx->ecdsa ); - rs_ctx->ecdsa = NULL; - } - - mbedtls_ecdsa_free( &ecdsa ); - return( ret ); } @@ -327,50 +343,24 @@ static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - void *p_rs_ctx ) + void *rs_ctx ) { int ret; - mbedtls_ecdsa_context ecdsa, *p_ecdsa = &ecdsa; - mbedtls_ecdsa_restart_ctx *rs_ctx = p_rs_ctx; + eckey_restart_ctx *rs = rs_ctx; - mbedtls_ecdsa_init( &ecdsa ); + /* Should never happen */ + if( rs == NULL ) + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); /* set up our own sub-context if needed */ - if( mbedtls_ecp_restart_enabled() && - rs_ctx != NULL && rs_ctx->ecdsa == NULL ) - { - rs_ctx->ecdsa = mbedtls_calloc( 1, sizeof( *rs_ctx->ecdsa ) ); - if( rs_ctx->ecdsa == NULL ) - return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + if( rs->ecdsa_ctx.grp.pbits == 0 ) + MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( &rs->ecdsa_ctx, ctx ) ); - mbedtls_ecdsa_init( rs_ctx->ecdsa ); - MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( rs_ctx->ecdsa, ctx ) ); - } - - if( rs_ctx != NULL && rs_ctx->ecdsa != NULL ) - { - /* redirect to our context */ - p_ecdsa = rs_ctx->ecdsa; - } - else - { - MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( p_ecdsa, ctx ) ); - } - - MBEDTLS_MPI_CHK( ecdsa_sign_rs_wrap( p_ecdsa, md_alg, hash, hash_len, - sig, sig_len, f_rng, p_rng, rs_ctx ) ); + MBEDTLS_MPI_CHK( ecdsa_sign_rs_wrap( &rs->ecdsa_ctx, md_alg, + hash, hash_len, sig, sig_len, + f_rng, p_rng, &rs->ecdsa_rs ) ); cleanup: - /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) - { - mbedtls_ecdsa_free( rs_ctx->ecdsa ); - mbedtls_free( rs_ctx->ecdsa ); - rs_ctx->ecdsa = NULL; - } - - mbedtls_ecdsa_free( &ecdsa ); - return( ret ); } #endif /* MBEDTLS_ECP_RESTARTABLE */ @@ -405,24 +395,6 @@ static void eckey_debug( const void *ctx, mbedtls_pk_debug_item *items ) items->value = &( ((mbedtls_ecp_keypair *) ctx)->Q ); } -#if defined(MBEDTLS_ECP_RESTARTABLE) -static void *eckey_rs_alloc( void ) -{ - void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_restart_ctx ) ); - - if( ctx != NULL ) - mbedtls_ecdsa_restart_init( ctx ); - - return( ctx ); -} - -static void eckey_rs_free( void *ctx ) -{ - mbedtls_ecdsa_restart_free( ctx ); - mbedtls_free( ctx ); -} -#endif /* MBEDTLS_ECP_RESTARTABLE */ - const mbedtls_pk_info_t mbedtls_eckey_info = { MBEDTLS_PK_ECKEY, "EC", @@ -569,6 +541,24 @@ static void ecdsa_free_wrap( void *ctx ) mbedtls_free( ctx ); } +#if defined(MBEDTLS_ECP_RESTARTABLE) +static void *ecdsa_rs_alloc( void ) +{ + void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ecdsa_restart_ctx ) ); + + if( ctx != NULL ) + mbedtls_ecdsa_restart_init( ctx ); + + return( ctx ); +} + +static void ecdsa_rs_free( void *ctx ) +{ + mbedtls_ecdsa_restart_free( ctx ); + mbedtls_free( ctx ); +} +#endif /* MBEDTLS_ECP_RESTARTABLE */ + const mbedtls_pk_info_t mbedtls_ecdsa_info = { MBEDTLS_PK_ECDSA, "ECDSA", @@ -586,8 +576,8 @@ const mbedtls_pk_info_t mbedtls_ecdsa_info = { ecdsa_alloc_wrap, ecdsa_free_wrap, #if defined(MBEDTLS_ECP_RESTARTABLE) - eckey_rs_alloc, - eckey_rs_free, + ecdsa_rs_alloc, + ecdsa_rs_free, #endif eckey_debug, /* Compatible key structures */ }; From aaa9814879d5a99d386a18b67a868d1f3e718cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 18 Aug 2017 17:30:37 +0200 Subject: [PATCH 0099/1100] Uniformize ifdefs to ECDSA_C+ECP_RESTARTABLE Some parts were already implicitly using this as the two ifdefs were nested, and some others didn't, which resulted in compile errors in some configs. This fixes those errors and saves a bit of code+RAM that was previously wasted when ECP_RESTARTABLE was defined but ECDSA_C wasn't --- include/mbedtls/pk.h | 10 +++++----- include/mbedtls/pk_internal.h | 8 ++++---- library/pk.c | 20 ++++++++++---------- library/pk_wrap.c | 18 +++++++----------- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 8ec69856b8..1326b90d5c 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -129,7 +129,7 @@ typedef struct void * pk_ctx; /**< Underlying public key context */ } mbedtls_pk_context; -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Context for resuming operations */ @@ -138,10 +138,10 @@ typedef struct const mbedtls_pk_info_t * pk_info; /**< Public key informations */ void * rs_ctx; /**< Underlying restart context */ } mbedtls_pk_restart_ctx; -#else +#else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /* Now we can declare functions that take a pointer to that */ typedef void mbedtls_pk_restart_ctx; -#endif +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_RSA_C) /** @@ -202,7 +202,7 @@ void mbedtls_pk_init( mbedtls_pk_context *ctx ); */ void mbedtls_pk_free( mbedtls_pk_context *ctx ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /** * \brief Initialize a restart context */ @@ -212,7 +212,7 @@ void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ); * \brief Free the components of a restart context */ void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ); -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /** * \brief Initialize a PK context with the information given diff --git a/include/mbedtls/pk_internal.h b/include/mbedtls/pk_internal.h index d56b0b334a..8370dc2198 100644 --- a/include/mbedtls/pk_internal.h +++ b/include/mbedtls/pk_internal.h @@ -58,7 +58,7 @@ struct mbedtls_pk_info_t int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /** Verify signature (restartable) */ int (*verify_rs_func)( void *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, @@ -71,7 +71,7 @@ struct mbedtls_pk_info_t unsigned char *sig, size_t *sig_len, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, void *rs_ctx ); -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /** Decrypt message */ int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen, @@ -94,13 +94,13 @@ struct mbedtls_pk_info_t /** Free the given context */ void (*ctx_free_func)( void *ctx ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /** Allocate the restart context */ void * (*rs_alloc_func)( void ); /** Free the restart context */ void (*rs_free_func)( void *rs_ctx ); -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /** Interface with the debug module */ void (*debug_func)( const void *ctx, mbedtls_pk_debug_item *items ); diff --git a/library/pk.c b/library/pk.c index 70691d6e86..fae517a858 100644 --- a/library/pk.c +++ b/library/pk.c @@ -73,7 +73,7 @@ void mbedtls_pk_free( mbedtls_pk_context *ctx ) mbedtls_zeroize( ctx, sizeof( mbedtls_pk_context ) ); } -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* * Initialize a restart context */ @@ -99,7 +99,7 @@ void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ) ctx->pk_info = NULL; ctx->rs_ctx = NULL; } -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /* * Get pk_info structure from type @@ -203,7 +203,7 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len return( 0 ); } -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* * Helper to set up a restart context if needed */ @@ -225,7 +225,7 @@ static int pk_restart_setup( mbedtls_pk_restart_ctx *ctx, return( 0 ); } -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ /* * Verify a signature (restartable) @@ -240,7 +240,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && ctx->pk_info->verify_rs_func != NULL ) { int ret; @@ -256,9 +256,9 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, return( ret ); } -#else +#else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ (void) rs_ctx; -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ if( ctx->pk_info->verify_func == NULL ) return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); @@ -350,7 +350,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, pk_hashlen_helper( md_alg, &hash_len ) != 0 ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && ctx->pk_info->sign_rs_func != NULL ) { int ret; @@ -366,9 +366,9 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, return( ret ); } -#else +#else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ (void) rs_ctx; -#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ if( ctx->pk_info->sign_func == NULL ) return( MBEDTLS_ERR_PK_TYPE_MISMATCH ); diff --git a/library/pk_wrap.c b/library/pk_wrap.c index 824c9d4356..9ca5556725 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -180,7 +180,7 @@ const mbedtls_pk_info_t mbedtls_rsa_info = { rsa_can_do, rsa_verify_wrap, rsa_sign_wrap, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif @@ -189,7 +189,7 @@ const mbedtls_pk_info_t mbedtls_rsa_info = { rsa_check_pair_wrap, rsa_alloc_wrap, rsa_free_wrap, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif @@ -410,17 +410,13 @@ const mbedtls_pk_info_t mbedtls_eckey_info = { #else /* MBEDTLS_ECDSA_C */ NULL, NULL, -#if defined(MBEDTLS_ECP_RESTARTABLE) - NULL, - NULL, -#endif #endif /* MBEDTLS_ECDSA_C */ NULL, NULL, eckey_check_pair, eckey_alloc_wrap, eckey_free_wrap, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) eckey_rs_alloc, eckey_rs_free, #endif @@ -443,7 +439,7 @@ const mbedtls_pk_info_t mbedtls_eckeydh_info = { eckeydh_can_do, NULL, NULL, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif @@ -452,7 +448,7 @@ const mbedtls_pk_info_t mbedtls_eckeydh_info = { eckey_check_pair, eckey_alloc_wrap, /* Same underlying key structure */ eckey_free_wrap, /* Same underlying key structure */ -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif @@ -688,7 +684,7 @@ const mbedtls_pk_info_t mbedtls_rsa_alt_info = { rsa_alt_can_do, NULL, rsa_alt_sign_wrap, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif @@ -701,7 +697,7 @@ const mbedtls_pk_info_t mbedtls_rsa_alt_info = { #endif rsa_alt_alloc_wrap, rsa_alt_free_wrap, -#if defined(MBEDTLS_ECP_RESTARTABLE) +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) NULL, NULL, #endif From d55f776cb778c85cc017de4a3fbde059ad673691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 18 Aug 2017 17:40:15 +0200 Subject: [PATCH 0100/1100] Skip context allocation if restart disabled --- library/pk.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/pk.c b/library/pk.c index fae517a858..9a6e86233b 100644 --- a/library/pk.c +++ b/library/pk.c @@ -241,7 +241,10 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && ctx->pk_info->verify_rs_func != NULL ) + /* optimization: use non-restartable version if restart disabled */ + if( rs_ctx != NULL && + mbedtls_ecp_restart_enabled() && + ctx->pk_info->verify_rs_func != NULL ) { int ret; @@ -351,7 +354,10 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && ctx->pk_info->sign_rs_func != NULL ) + /* optimization: use non-restartable version if restart disabled */ + if( rs_ctx != NULL && + mbedtls_ecp_restart_enabled() && + ctx->pk_info->sign_rs_func != NULL ) { int ret; From 8b7b96bbd3ae77657c512a0addd5a8d9f2084c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 10:02:51 +0200 Subject: [PATCH 0101/1100] Fix typo --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index fbfab63b08..d400dee974 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -571,7 +571,7 @@ * again later with the same arguments in order to further progress and * eventually complete the operation, see \c mbedtls_ecp_set_max_ops(). * - * This is usefull in non-threaded environments if you want to avoid blocking + * This is useful in non-threaded environments if you want to avoid blocking * for too long on ECC (hence, X509 or SSL/TLS) operations. * * Uncomment this macro to enable restartable ECC computations. From 83e923ba2b0a01215c0e230426191e82e589ca0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 10:55:41 +0200 Subject: [PATCH 0102/1100] Better initialisation of ver_chain Use dedicated function for consistency, and initialise flags to -1 as this is the safe value. --- library/x509_crt.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index a6f6a78d84..7d60a57862 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -207,6 +207,23 @@ static int x509_profile_check_key( const mbedtls_x509_crt_profile *profile, return( -1 ); } +/* + * Reset (init or clear) a verify_chain + */ +static void x509_crt_verify_chain_reset( + mbedtls_x509_crt_verify_chain *ver_chain ) +{ + size_t i; + + for( i = 0; i < MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE; i++ ) + { + ver_chain->items[i].crt = NULL; + ver_chain->items[i].flags = -1; + } + + ver_chain->len = 0; +} + /* * Version ::= INTEGER { v1(0), v2(1), v3(2) } */ @@ -2258,8 +2275,9 @@ static int x509_crt_verify_chain( /* Add certificate to the verification chain */ cur = &ver_chain->items[ver_chain->len]; cur->crt = child; - flags = &cur->flags; + cur->flags = 0; ver_chain->len++; + flags = &cur->flags; /* Check time-validity (all certificates) */ if( mbedtls_x509_time_is_past( &child->valid_to ) ) @@ -2499,10 +2517,11 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, int ret; mbedtls_pk_type_t pk_type; mbedtls_x509_crt_verify_chain ver_chain; - uint32_t *ee_flags = &ver_chain.items[0].flags; + uint32_t ee_flags; *flags = 0; - memset( &ver_chain, 0, sizeof( ver_chain ) ); + ee_flags = 0; + x509_crt_verify_chain_reset( &ver_chain ); if( profile == NULL ) { @@ -2512,16 +2531,16 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, /* check name if requested */ if( cn != NULL ) - x509_crt_verify_name( crt, cn, ee_flags ); + x509_crt_verify_name( crt, cn, &ee_flags ); /* Check the type and size of the key */ pk_type = mbedtls_pk_get_type( &crt->pk ); if( x509_profile_check_pk_alg( profile, pk_type ) != 0 ) - *ee_flags |= MBEDTLS_X509_BADCERT_BAD_PK; + ee_flags |= MBEDTLS_X509_BADCERT_BAD_PK; if( x509_profile_check_key( profile, pk_type, &crt->pk ) != 0 ) - *ee_flags |= MBEDTLS_X509_BADCERT_BAD_KEY; + ee_flags |= MBEDTLS_X509_BADCERT_BAD_KEY; /* Check the chain */ ret = x509_crt_verify_chain( crt, trust_ca, ca_crl, profile, @@ -2530,6 +2549,9 @@ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, if( ret != 0 ) goto exit; + /* Merge end-entity flags */ + ver_chain.items[0].flags |= ee_flags; + /* Build final flags, calling callback on the way if any */ ret = x509_crt_merge_flags_with_cb( flags, &ver_chain, f_vrfy, p_vrfy ); @@ -2663,8 +2685,7 @@ void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) ctx->child = NULL; ctx->self_cnt = 0; - memset( ctx->ver_chain.items, 0, sizeof( ctx->ver_chain.items ) ); - ctx->ver_chain.len = 0; + x509_crt_verify_chain_reset( &ctx->ver_chain ); } /* From 3627a8b2f63bafeba916eeed7408e3ff97b0f20b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 11:20:48 +0200 Subject: [PATCH 0103/1100] Clarify state handling in find_parent(_in)() --- library/x509_crt.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 7d60a57862..1a3eb2d965 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1992,13 +1992,20 @@ static int x509_crt_find_parent_in( int signature_is_good, fallback_sign_good; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - /* restore state if we have some stored */ + /* did we have something in progress? */ if( rs_ctx != NULL && rs_ctx->parent != NULL ) { + /* restore saved state */ parent = rs_ctx->parent; fallback_parent = rs_ctx->fallback_parent; fallback_sign_good = rs_ctx->fallback_sign_good; + /* clear saved state */ + rs_ctx->parent = NULL; + rs_ctx->fallback_parent = NULL; + rs_ctx->fallback_sign_good = 0; + + /* resume where we left */ goto check_signature; } #endif @@ -2070,16 +2077,6 @@ check_signature: *r_signature_is_good = fallback_sign_good; } -#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL ) - { - /* reset state */ - rs_ctx->parent = NULL; - rs_ctx->fallback_parent = NULL; - rs_ctx->fallback_sign_good = 0; - } -#endif - return( 0 ); } @@ -2116,9 +2113,12 @@ static int x509_crt_find_parent( *parent_is_trusted = 1; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - /* restore state if we have some stored */ - if( rs_ctx != NULL && rs_ctx->parent_is_trusted != -1) + /* restore then clear saved state if we have some stored */ + if( rs_ctx != NULL && rs_ctx->parent_is_trusted != -1 ) + { *parent_is_trusted = rs_ctx->parent_is_trusted; + rs_ctx->parent_is_trusted = -1; + } #endif while( 1 ) { @@ -2155,12 +2155,6 @@ static int x509_crt_find_parent( signature_is_good = 0; } -#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) - /* reset state */ - if( rs_ctx != NULL ) - rs_ctx->parent_is_trusted = -1; -#endif - return( 0 ); } @@ -2254,7 +2248,7 @@ static int x509_crt_verify_chain( /* resume if we had an operation in progress */ if( rs_ctx != NULL && rs_ctx->child != NULL ) { - /* save state */ + /* restore saved state */ child = rs_ctx->child; self_cnt = rs_ctx->self_cnt; *ver_chain = rs_ctx->ver_chain; From a96884342928667f40ea8e27f178b701a2faea86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 11:23:59 +0200 Subject: [PATCH 0104/1100] Improve some comments in verify_chain() --- library/x509_crt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 1a3eb2d965..69cec4db8c 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2219,6 +2219,8 @@ static int x509_crt_check_ee_locally_trusted( * - [in] trust_ca: the trusted list R1, ..., Rp * - [in] ca_crl, profile: as in verify_with_profile() * - [out] ver_chain: the built and verified chain + * Only valid when return value is 0, may contain garbage otherwise! + * Restart note: need not be the same when calling again to resume. * - [in-out] rs_ctx: context for restarting operations * * Return value: @@ -2234,6 +2236,8 @@ static int x509_crt_verify_chain( mbedtls_x509_crt_verify_chain *ver_chain, mbedtls_x509_crt_restart_ctx *rs_ctx ) { + /* Don't initialize any of those variables here, so that the compiler can + * catch potential issues with jumping ahead when restarting */ int ret; uint32_t *flags; mbedtls_x509_crt_verify_chain_item *cur; @@ -2251,7 +2255,7 @@ static int x509_crt_verify_chain( /* restore saved state */ child = rs_ctx->child; self_cnt = rs_ctx->self_cnt; - *ver_chain = rs_ctx->ver_chain; + *ver_chain = rs_ctx->ver_chain; /* struct copy */ cur = &ver_chain->items[ver_chain->len - 1]; flags = &cur->flags; @@ -2312,7 +2316,7 @@ find_parent: /* save state */ rs_ctx->child = child; rs_ctx->self_cnt = self_cnt; - rs_ctx-> ver_chain = *ver_chain; + rs_ctx->ver_chain = *ver_chain; /* struct copy */ return( ret ); } From daf049144e84c9cb76511c61aa0b31159cfbc1c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 12:32:19 +0200 Subject: [PATCH 0105/1100] Rework state saving for verify_chain() Child was almost redundant as it's already saved in ver_chain, except it was multiplexed to also indicate whether an operation is in progress. This commit removes it and introduces an explicit state variable instead. This state can be useful later if we start returning IN_PROGRESS at other points than find_parent() (for example when checking CRL). Note that the state goes none -> find_parent and stays there until the context is free(), as it's only on the first call that nothing was in progress. --- include/mbedtls/x509_crt.h | 5 ++++- library/x509_crt.c | 11 ++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 3388c3b93d..2f652b76d3 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -183,7 +183,10 @@ typedef struct int parent_is_trusted; /* -1 if find_parent is not in progress */ /* for verify_chain() */ - mbedtls_x509_crt *child; /* non-null iff in progress */ + enum { + x509_crt_rs_none, + x509_crt_rs_find_parent, + } in_progress; /* none if no operation is in progress */ int self_cnt; mbedtls_x509_crt_verify_chain ver_chain; diff --git a/library/x509_crt.c b/library/x509_crt.c index 69cec4db8c..586ec83755 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2250,14 +2250,15 @@ static int x509_crt_verify_chain( #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* resume if we had an operation in progress */ - if( rs_ctx != NULL && rs_ctx->child != NULL ) + if( rs_ctx != NULL && rs_ctx->in_progress == x509_crt_rs_find_parent ) { /* restore saved state */ - child = rs_ctx->child; - self_cnt = rs_ctx->self_cnt; *ver_chain = rs_ctx->ver_chain; /* struct copy */ + self_cnt = rs_ctx->self_cnt; + /* restore derived state */ cur = &ver_chain->items[ver_chain->len - 1]; + child = cur->crt; flags = &cur->flags; goto find_parent; @@ -2314,7 +2315,7 @@ find_parent: if( rs_ctx != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { /* save state */ - rs_ctx->child = child; + rs_ctx->in_progress = x509_crt_rs_find_parent; rs_ctx->self_cnt = self_cnt; rs_ctx->ver_chain = *ver_chain; /* struct copy */ @@ -2681,7 +2682,7 @@ void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) ctx->parent_is_trusted = -1; - ctx->child = NULL; + ctx->in_progress = x509_crt_rs_none; ctx->self_cnt = 0; x509_crt_verify_chain_reset( &ctx->ver_chain ); } From 7037e222ea661ca3b655c387fb8ff18951809f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 14:30:36 +0200 Subject: [PATCH 0106/1100] Improve comments and doc for ECP --- include/mbedtls/ecp.h | 19 +++++++--- library/ecp.c | 87 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 90 insertions(+), 16 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 04a557bdb4..07ed110cdc 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -310,9 +310,15 @@ typedef void mbedtls_ecp_restart_ctx; * MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the * function performing the computation. It is then the * caller's responsibility to either call again with the same - * arguments until it returns 0 or an error code; or to free + * parameters until it returns 0 or an error code; or to free * the restart context if the operation is to be aborted. * + * It is strictly required that all input parameters and the + * restart context be the same on successive calls for the + * same operation, but output parameters need not be the + * same; they must not be used until the function finally + * returns 0. + * * This only affects functions that accept a pointer to a * \c mbedtls_ecp_restart_ctx as an argument, and only works * if that pointer valid (in particular, not NULL). @@ -334,10 +340,13 @@ typedef void mbedtls_ecp_restart_ctx; * operations, and will do so even if max_ops is set to a * lower value. That minimum depends on the curve size, and * can be made lower by decreasing the value of - * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, with that - * parameter set to 4, the minimum amount of blocking is: - * - around 165 basic operations for P-256 - * - around 330 basic operations for P-384 + * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, here is the + * lowest effective value for various curves and values of + * that parameter (w for short): + * w=6 w=5 w=4 w=3 w=2 + * P-256 208 208 160 136 124 + * P-384 682 416 320 272 248 + * P-521 1364 832 640 544 496 * * \note This setting is currently ignored by Curve25519 */ diff --git a/library/ecp.c b/library/ecp.c index 74a19eecb3..9a8f552b74 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -89,6 +89,13 @@ static unsigned long add_count, dbl_count, mul_count; #if defined(MBEDTLS_ECP_RESTARTABLE) /* * Maximum number of "basic operations" to be done in a row. + * + * Default value 0 means that ECC operations will not yield. + * Note that regardless of the value of ecp_max_ops, always at + * least one step is performed before yielding. + * + * Setting ecp_max_ops=1 can be suitable for testing purposes + * as it will interrupt computation at all possible points. */ static unsigned ecp_max_ops = 0; @@ -1341,11 +1348,38 @@ cleanup: * modified version that provides resistance to SPA by avoiding zero * digits in the representation as in [3]. We modify the method further by * requiring that all K_i be odd, which has the small cost that our - * representation uses one more K_i, due to carries. + * representation uses one more K_i, due to carries, but saves on the size of + * the precomputed table. * - * Also, for the sake of compactness, only the seven low-order bits of x[i] - * are used to represent K_i, and the msb of x[i] encodes the the sign (s_i in - * the paper): it is set if and only if if s_i == -1; + * Summary of the comb method and its modifications: + * + * - The goal is to compute m*P for some w*d-bit integer m. + * + * - The basic comb method splits m into the w-bit integers + * x[0] .. x[d-1] where x[i] consists of the bits in m whose + * index has residue i modulo d, and computes m * P as + * S[x[0]] + 2 * S[x[1]] + .. + 2^(d-1) S[x[d-1]], where + * S[i_{w-1} .. i_0] := i_{w-1} 2^{(w-1)d} P + ... + i_1 2^d P + i_0 P. + * + * - If it happens that, say, x[i+1]=0 (=> S[x[i+1]]=0), one can replace the sum by + * .. + 2^{i-1} S[x[i-1]] - 2^i S[x[i]] + 2^{i+1} S[x[i]] + 2^{i+2} S[x[i+2]] .., + * thereby successively converting it into a form where all summands + * are nonzero, at the cost of negative summands. This is the basic idea of [3]. + * + * - More generally, even if x[i+1] != 0, we can first transform the sum as + * .. - 2^i S[x[i]] + 2^{i+1} ( S[x[i]] + S[x[i+1]] ) + 2^{i+2} S[x[i+2]] .., + * and then replace S[x[i]] + S[x[i+1]] = S[x[i] ^ x[i+1]] + 2 S[x[i] & x[i+1]]. + * Performing and iterating this procedure for those x[i] that are even + * (keeping track of carry), we can transform the original sum into one of the form + * S[x'[0]] +- 2 S[x'[1]] +- .. +- 2^{d-1} S[x'[d-1]] + 2^d S[x'[d]] + * with all x'[i] odd. It is therefore only necessary to know S at odd indices, + * which is why we are only computing half of it in the first place in + * ecp_precompute_comb and accessing it with index abs(i) / 2 in ecp_select_comb. + * + * - For the sake of compactness, only the seven low-order bits of x[i] + * are used to represent its absolute value (K_i in the paper), and the msb + * of x[i] encodes the the sign (s_i in the paper): it is set if and only if + * if s_i == -1; * * Calling conventions: * - x is an array of size d + 1 @@ -1385,14 +1419,41 @@ static void ecp_comb_recode_core( unsigned char x[], size_t d, } /* - * Precompute points for the comb method + * Precompute points for the adapted comb method * - * If i = i_{w-1} ... i_1 is the binary representation of i, then - * T[i] = i_{w-1} 2^{(w-1)d} P + ... + i_1 2^d P + P + * Assumption: T must be able to hold 2^{w - 1} elements. * - * T must be able to hold 2^{w - 1} elements + * Operation: If i = i_{w-1} ... i_1 is the binary representation of i, + * sets T[i] = i_{w-1} 2^{(w-1)d} P + ... + i_1 2^d P + P. * * Cost: d(w-1) D + (2^{w-1} - 1) A + 1 N(w-1) + 1 N(2^{w-1} - 1) + * + * Note: Even comb values (those where P would be omitted from the + * sum defining T[i] above) are not needed in our adaption + * the the comb method. See ecp_comb_recode_core(). + * + * This function currently works in four steps: + * (1) Computation of intermediate T[i] for 2-powers values of i + * (restart state is ecp_rsm_init). + * (2) Normalization of coordinates of these T[i] + * (restart state is ecp_rsm_pre_norm_dbl). + * (3) Computation of all T[i] (restart state is ecp_rsm_pre_add). + * (4) Normalization of all T[i] (restart state is ecp_rsm_pre_norm_add) + * The final restart state is ecp_rsm_T_done. + * + * Step 1 can be interrupted but not the others; together with the final + * coordinate normalization they are the largest steps done at once, depending + * on the window size. Here are operation counts for P-256: + * + * step (2) (3) (4) + * w = 5 142 165 208 + * w = 4 136 77 160 + * w = 3 130 33 136 + * w = 2 124 11 124 + * + * So if ECC operations are blocking for too long even with a low max_ops + * value, it's useful to set MBEDTLS_ECP_WINDOW_SIZE to a lower value in order + * to minimize maximum blocking time. */ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point T[], const mbedtls_ecp_point *P, @@ -1534,6 +1595,8 @@ cleanup: /* * Select precomputed point: R = sign(i) * T[ abs(i) / 2 ] + * + * See ecp_comb_recode_core() for background */ static int ecp_select_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_ecp_point T[], unsigned char t_len, @@ -1637,6 +1700,8 @@ cleanup: * As the actual scalar recoding needs an odd scalar as a starting point, * this wrapper ensures that by replacing m by N - m if necessary, and * informs the caller that the result of multiplication will be negated. + * + * See ecp_comb_recode_core() for background. */ static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp, const mbedtls_mpi *m, @@ -1824,8 +1889,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Pre-computed table: do we have it already for the base point? */ if( p_eq_g && grp->T != NULL ) { - /* second pointer to the same table - * no ownership transfer as other threads might be using T too */ + /* second pointer to the same table, will be deleted on exit */ T = grp->T; T_ok = 1; } @@ -1862,9 +1926,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, if( p_eq_g ) { + /* almost transfer ownership of T to the group, but keep a copy of + * the pointer to use for caling the next function more easily */ grp->T = T; grp->T_size = pre_len; - /* now have two pointers to the same table */ } } From eaf55beeadb90016fa0d6d6676844c0cca774306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 14:40:21 +0200 Subject: [PATCH 0107/1100] Misc documentation fixes/improvements --- include/mbedtls/ecdh.h | 6 +++++- include/mbedtls/ecdsa.h | 4 ++++ include/mbedtls/x509_crt.h | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 6f3fe137c9..435ba00cbe 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -40,6 +40,10 @@ typedef enum /** * \brief ECDH context structure + * + * \warning Performing multiple operations concurrently on the same + * ECDSA context is not supported; objects of this type + * should not be shared between multiple threads. */ typedef struct { @@ -159,7 +163,7 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, * ServerKeyEchange for static ECDH: import ECDH parameters * from a certificate's EC key information.) * - * \param ctx ECDH constext to set + * \param ctx ECDH context to set * \param key EC key to use * \param side Is it our key (1) or the peer's key (0) ? * diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index ce94af871c..3440a84fe9 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -52,6 +52,10 @@ extern "C" { /** * \brief ECDSA context structure + * + * \warning Performing multiple operations concurrently on the same + * ECDSA context is not supported; objects of this type + * should not be shared between multiple threads. */ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 2f652b76d3..6831812702 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -425,7 +425,7 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, * \param flags result of the verification * \param f_vrfy verification function * \param p_vrfy verification parameter - * \param rs_ctx resart context + * \param rs_ctx restart context * * \return See \c mbedtls_crt_verify_with_profile(), or * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of From ebac5d3797504870e7997f29c5a95f21ee6c4e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 16:23:36 +0200 Subject: [PATCH 0108/1100] Fix some whitespace & style issues --- library/ecdsa.c | 2 -- library/ecp.c | 71 +++++++++++++++---------------------------------- 2 files changed, 21 insertions(+), 52 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 487bbd8e53..19d0004b51 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -268,7 +268,6 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, pk = &rs_ctx->sig->k; pr = &rs_ctx->sig->r; - /* jump to current step */ if( rs_ctx->sig->state == ecdsa_sig_mul ) goto mul; @@ -315,7 +314,6 @@ mul: } while( mbedtls_mpi_cmp_int( pr, 0 ) == 0 ); - #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->sig != NULL ) rs_ctx->sig->state++; diff --git a/library/ecp.c b/library/ecp.c index 9a8f552b74..5217b55bd0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -85,7 +85,6 @@ static void mbedtls_zeroize( void *v, size_t n ) { static unsigned long add_count, dbl_count, mul_count; #endif - #if defined(MBEDTLS_ECP_RESTARTABLE) /* * Maximum number of "basic operations" to be done in a row. @@ -927,11 +926,10 @@ static int ecp_normalize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *p return( 0 ); #if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_normalize_jac( grp, pt ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_normalize_jac( grp, pt ) ); #endif /* MBEDTLS_ECP_NORMALIZE_JAC_ALT */ + mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi ); /* @@ -981,10 +979,8 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, return( ecp_normalize_jac( grp, *T ) ); #if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_normalize_jac_many(grp, T, t_len); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_normalize_jac_many( grp, T, t_len ) ); #endif if( ( c = mbedtls_calloc( t_len, sizeof( mbedtls_mpi ) ) ) == NULL ) @@ -1104,10 +1100,8 @@ static int ecp_double_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_double_jac( grp, R, P ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_double_jac( grp, R, P ) ); #endif /* MBEDTLS_ECP_DOUBLE_JAC_ALT */ mbedtls_mpi_init( &M ); mbedtls_mpi_init( &S ); mbedtls_mpi_init( &T ); mbedtls_mpi_init( &U ); @@ -1202,10 +1196,8 @@ static int ecp_add_mixed( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(MBEDTLS_ECP_ADD_MIXED_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_add_mixed( grp, R, P, Q ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_add_mixed( grp, R, P, Q ) ); #endif /* MBEDTLS_ECP_ADD_MIXED_ALT */ /* @@ -1289,10 +1281,8 @@ static int ecp_randomize_jac( const mbedtls_ecp_group *grp, mbedtls_ecp_point *p int count = 0; #if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_randomize_jac( grp, pt, f_rng, p_rng ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_randomize_jac( grp, pt, f_rng, p_rng ) ); #endif /* MBEDTLS_ECP_RANDOMIZE_JAC_ALT */ p_size = ( grp->pbits + 7 ) / 8; @@ -1798,7 +1788,6 @@ cleanup: return( ret ); } - /* * Pick window size based on curve size and whether we optimize for base point */ @@ -2004,10 +1993,8 @@ static int ecp_normalize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P int ret; #if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_normalize_mxz( grp, P ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_normalize_mxz( grp, P ) ); #endif /* MBEDTLS_ECP_NORMALIZE_MXZ_ALT */ MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &P->Z, &P->Z, &grp->P ) ); @@ -2035,10 +2022,8 @@ static int ecp_randomize_mxz( const mbedtls_ecp_group *grp, mbedtls_ecp_point *P int count = 0; #if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_randomize_mxz( grp, P, f_rng, p_rng ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_randomize_mxz( grp, P, f_rng, p_rng ); #endif /* MBEDTLS_ECP_RANDOMIZE_MXZ_ALT */ p_size = ( grp->pbits + 7 ) / 8; @@ -2090,10 +2075,8 @@ static int ecp_double_add_mxz( const mbedtls_ecp_group *grp, mbedtls_mpi A, AA, B, BB, E, C, D, DA, CB; #if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) - if ( mbedtls_internal_ecp_grp_capable( grp ) ) - { - return mbedtls_internal_ecp_double_add_mxz( grp, R, S, P, Q, d ); - } + if( mbedtls_internal_ecp_grp_capable( grp ) ) + return( mbedtls_internal_ecp_double_add_mxz( grp, R, S, P, Q, d ) ); #endif /* MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT */ mbedtls_mpi_init( &A ); mbedtls_mpi_init( &AA ); mbedtls_mpi_init( &B ); @@ -2209,11 +2192,8 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #endif #if defined(MBEDTLS_ECP_INTERNAL_ALT) - if ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) - { + if( ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) ) MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); - } - #endif /* MBEDTLS_ECP_INTERNAL_ALT */ #if defined(MBEDTLS_ECP_RESTARTABLE) && defined(ECP_SHORTWEIERSTRASS) @@ -2243,11 +2223,8 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, cleanup: #if defined(MBEDTLS_ECP_INTERNAL_ALT) - if ( is_grp_capable ) - { + if( is_grp_capable ) mbedtls_internal_ecp_free( grp ); - } - #endif /* MBEDTLS_ECP_INTERNAL_ALT */ #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -2378,11 +2355,8 @@ int mbedtls_ecp_muladd_restartable( mbedtls_ecp_point_init( &mP ); #if defined(MBEDTLS_ECP_INTERNAL_ALT) - if ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) - { + if( ( is_grp_capable = mbedtls_internal_ecp_grp_capable( grp ) ) ) MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); - } - #endif /* MBEDTLS_ECP_INTERNAL_ALT */ #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -2448,11 +2422,8 @@ norm: cleanup: #if defined(MBEDTLS_ECP_INTERNAL_ALT) - if ( is_grp_capable ) - { + if( is_grp_capable ) mbedtls_internal_ecp_free( grp ); - } - #endif /* MBEDTLS_ECP_INTERNAL_ALT */ mbedtls_ecp_point_free( &mP ); From 92cceb29bd2cab4a75311742986e637ff1f45e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 16:27:29 +0200 Subject: [PATCH 0109/1100] Make some names more consistent --- library/ecp.c | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 5217b55bd0..365372a448 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -969,21 +969,21 @@ cleanup: * Cost: 1N(t) := 1I + (6t - 3)M + 1S */ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, - mbedtls_ecp_point *T[], size_t t_len ) + mbedtls_ecp_point *T[], size_t T_size ) { int ret; size_t i; mbedtls_mpi *c, u, Zi, ZZi; - if( t_len < 2 ) + if( T_size < 2 ) return( ecp_normalize_jac( grp, *T ) ); #if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) if( mbedtls_internal_ecp_grp_capable( grp ) ) - return( mbedtls_internal_ecp_normalize_jac_many( grp, T, t_len ) ); + return( mbedtls_internal_ecp_normalize_jac_many( grp, T, T_size ) ); #endif - if( ( c = mbedtls_calloc( t_len, sizeof( mbedtls_mpi ) ) ) == NULL ) + if( ( c = mbedtls_calloc( T_size, sizeof( mbedtls_mpi ) ) ) == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); mbedtls_mpi_init( &u ); mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi ); @@ -992,7 +992,7 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, * c[i] = Z_0 * ... * Z_i */ MBEDTLS_MPI_CHK( mbedtls_mpi_copy( &c[0], &T[0]->Z ) ); - for( i = 1; i < t_len; i++ ) + for( i = 1; i < T_size; i++ ) { MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( &c[i], &c[i-1], &T[i]->Z ) ); MOD_MUL( c[i] ); @@ -1001,9 +1001,9 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, /* * u = 1 / (Z_0 * ... * Z_n) mod P */ - MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &u, &c[t_len-1], &grp->P ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &u, &c[T_size-1], &grp->P ) ); - for( i = t_len - 1; ; i-- ) + for( i = T_size - 1; ; i-- ) { /* * Zi = 1 / Z_i mod p @@ -1043,7 +1043,7 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, cleanup: mbedtls_mpi_free( &u ); mbedtls_mpi_free( &Zi ); mbedtls_mpi_free( &ZZi ); - for( i = 0; i < t_len; i++ ) + for( i = 0; i < T_size; i++ ) mbedtls_mpi_free( &c[i] ); mbedtls_free( c ); @@ -1453,7 +1453,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, int ret; unsigned char i; size_t j = 0; - const unsigned char T_len = 1U << ( w - 1 ); + const unsigned char T_size = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; #if !defined(MBEDTLS_ECP_RESTARTABLE) @@ -1515,7 +1515,7 @@ norm_dbl: #endif j = 0; - for( i = 1; i < T_len; i <<= 1 ) + for( i = 1; i < T_size; i <<= 1 ) TT[j++] = T + i; MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV + 6 * j - 2 ); @@ -1535,9 +1535,9 @@ norm_dbl: add: #endif - MBEDTLS_ECP_BUDGET( ( T_len - 1 ) * MBEDTLS_ECP_OPS_ADD ); + MBEDTLS_ECP_BUDGET( ( T_size - 1 ) * MBEDTLS_ECP_OPS_ADD ); - for( i = 1; i < T_len; i <<= 1 ) + for( i = 1; i < T_size; i <<= 1 ) { j = i; while( j-- ) @@ -1558,7 +1558,7 @@ add: norm_add: #endif - for( j = 0; j + 1 < T_len; j++ ) + for( j = 0; j + 1 < T_size; j++ ) TT[j] = T + j + 1; MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV + 6 * j - 2 ); @@ -1589,7 +1589,7 @@ cleanup: * See ecp_comb_recode_core() for background */ static int ecp_select_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, - const mbedtls_ecp_point T[], unsigned char t_len, + const mbedtls_ecp_point T[], unsigned char T_size, unsigned char i ) { int ret; @@ -1599,7 +1599,7 @@ static int ecp_select_comb( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, ii = ( i & 0x7Fu ) >> 1; /* Read the whole table to thwart cache-based timing attacks */ - for( j = 0; j < t_len; j++ ) + for( j = 0; j < T_size; j++ ) { MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &R->X, &T[j].X, j == ii ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_safe_cond_assign( &R->Y, &T[j].Y, j == ii ) ); @@ -1619,7 +1619,7 @@ cleanup: * Cost: d A + d D + 1 R */ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, - const mbedtls_ecp_point T[], unsigned char t_len, + const mbedtls_ecp_point T[], unsigned char T_size, const unsigned char x[], size_t d, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, @@ -1646,7 +1646,7 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R { /* Start with a non-zero point and randomize its coordinates */ i = d; - MBEDTLS_MPI_CHK( ecp_select_comb( grp, R, T, t_len, x[i] ) ); + MBEDTLS_MPI_CHK( ecp_select_comb( grp, R, T, T_size, x[i] ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_lset( &R->Z, 1 ) ); if( f_rng != 0 ) MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, R, f_rng, p_rng ) ); @@ -1656,7 +1656,7 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R { MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_DBL + MBEDTLS_ECP_OPS_ADD ); MBEDTLS_MPI_CHK( ecp_double_jac( grp, R, R ) ); - MBEDTLS_MPI_CHK( ecp_select_comb( grp, &Txi, T, t_len, x[i] ) ); + MBEDTLS_MPI_CHK( ecp_select_comb( grp, &Txi, T, T_size, x[i] ) ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, R, R, &Txi ) ); } @@ -1739,7 +1739,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R, const mbedtls_mpi *m, const mbedtls_ecp_point *T, - unsigned char pre_len, + unsigned char T_size, unsigned char w, size_t d, int (*f_rng)(void *, unsigned char *, size_t), @@ -1767,7 +1767,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, { MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, &parity_trick ) ); - MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, pre_len, k, d, + MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, T_size, k, d, f_rng, p_rng, rs_ctx ) ); MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); @@ -1845,7 +1845,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, int ret; unsigned char w, p_eq_g = 0, i; size_t d; - unsigned char pre_len = 0, T_ok = 0; + unsigned char T_size = 0, T_ok = 0; mbedtls_ecp_point *T = NULL; #if !defined(MBEDTLS_ECP_RESTARTABLE) @@ -1872,7 +1872,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Pick window size and deduce related sizes */ w = ecp_pick_window_size( grp, p_eq_g ); - pre_len = 1U << ( w - 1 ); + T_size = 1U << ( w - 1 ); d = ( grp->nbits + w - 1 ) / w; /* Pre-computed table: do we have it already for the base point? */ @@ -1900,7 +1900,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* Allocate table if we didn't have any */ if( T == NULL ) { - T = mbedtls_calloc( pre_len, sizeof( mbedtls_ecp_point ) ); + T = mbedtls_calloc( T_size, sizeof( mbedtls_ecp_point ) ); if( T == NULL ) { ret = MBEDTLS_ERR_ECP_ALLOC_FAILED; @@ -1918,13 +1918,13 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /* almost transfer ownership of T to the group, but keep a copy of * the pointer to use for caling the next function more easily */ grp->T = T; - grp->T_size = pre_len; + grp->T_size = T_size; } } /* Actual comb multiplication using precomputed points */ MBEDTLS_MPI_CHK( ecp_mul_comb_after_precomp( grp, R, m, - T, pre_len, w, d, + T, T_size, w, d, f_rng, p_rng, rs_ctx ) ); cleanup: @@ -1938,7 +1938,7 @@ cleanup: if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS && T != NULL ) { /* transfer ownership of T from local function to rsm */ - rs_ctx->rsm->T_size = pre_len; + rs_ctx->rsm->T_size = T_size; rs_ctx->rsm->T = T; T = NULL; } @@ -1947,7 +1947,7 @@ cleanup: /* did T belong to us? then let's destroy it! */ if( T != NULL ) { - for( i = 0; i < pre_len; i++ ) + for( i = 0; i < T_size; i++ ) mbedtls_ecp_point_free( &T[i] ); mbedtls_free( T ); } From 5bd38b1144420d234c4411914433ff31256e9168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 16:55:59 +0200 Subject: [PATCH 0110/1100] Replace memset() calls with xxx_init() calls And follow calloc() calls with xxx_init() too --- library/ecdh.c | 17 ++++++++++++++--- library/ecdsa.c | 18 ++++++++++-------- library/ecp.c | 48 +++++++++++++++++++++++++++++++++++++----------- 3 files changed, 61 insertions(+), 22 deletions(-) diff --git a/library/ecdh.c b/library/ecdh.c index cae3b290f4..b8a7dbf0a1 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -126,9 +126,18 @@ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, */ void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx ) { - memset( ctx, 0, sizeof( mbedtls_ecdh_context ) ); + mbedtls_ecp_group_init( &ctx->grp ); + mbedtls_mpi_init( &ctx->d ); + mbedtls_ecp_point_init( &ctx->Q ); + mbedtls_ecp_point_init( &ctx->Qp ); + mbedtls_mpi_init( &ctx->z ); + ctx->point_format = MBEDTLS_ECP_PF_UNCOMPRESSED; + mbedtls_ecp_point_init( &ctx->Vi ); + mbedtls_ecp_point_init( &ctx->Vf ); + mbedtls_mpi_init( &ctx->_d ); #if defined(MBEDTLS_ECP_RESTARTABLE) + ctx->restart_enabled = 0; mbedtls_ecp_restart_init( &ctx->rs ); #endif } @@ -142,17 +151,19 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ) return; mbedtls_ecp_group_free( &ctx->grp ); + mbedtls_mpi_free( &ctx->d ); mbedtls_ecp_point_free( &ctx->Q ); mbedtls_ecp_point_free( &ctx->Qp ); + mbedtls_mpi_free( &ctx->z ); mbedtls_ecp_point_free( &ctx->Vi ); mbedtls_ecp_point_free( &ctx->Vf ); - mbedtls_mpi_free( &ctx->d ); - mbedtls_mpi_free( &ctx->z ); mbedtls_mpi_free( &ctx->_d ); #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_free( &ctx->rs ); #endif + + mbedtls_ecdh_init( ctx ); } #if defined(MBEDTLS_ECP_RESTARTABLE) diff --git a/library/ecdsa.c b/library/ecdsa.c index 19d0004b51..f3b3cf26d5 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -69,7 +69,9 @@ struct mbedtls_ecdsa_restart_ver */ static void ecdsa_restart_ver_init( mbedtls_ecdsa_restart_ver_ctx *ctx ) { - memset( ctx, 0, sizeof( *ctx ) ); + mbedtls_mpi_init( &ctx->u1 ); + mbedtls_mpi_init( &ctx->u2 ); + ctx->state = ecdsa_ver_init; } /* @@ -83,7 +85,7 @@ static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) mbedtls_mpi_free( &ctx->u1 ); mbedtls_mpi_free( &ctx->u2 ); - memset( ctx, 0, sizeof( *ctx ) ); + ecdsa_restart_ver_init( ctx ); } /* @@ -107,10 +109,11 @@ struct mbedtls_ecdsa_restart_sig */ static void ecdsa_restart_sig_init( mbedtls_ecdsa_restart_sig_ctx *ctx ) { - memset( ctx, 0, sizeof( *ctx ) ); - + ctx->sign_tries = 0; + ctx->key_tries = 0; mbedtls_mpi_init( &ctx->k ); mbedtls_mpi_init( &ctx->r ); + ctx->state = ecdsa_sig_init; } /* @@ -124,7 +127,7 @@ static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) mbedtls_mpi_free( &ctx->k ); mbedtls_mpi_free( &ctx->r ); - memset( ctx, 0, sizeof( *ctx ) ); + ecdsa_restart_sig_init( ctx ); } #if defined(MBEDTLS_ECDSA_DETERMINISTIC) @@ -145,9 +148,8 @@ struct mbedtls_ecdsa_restart_det */ static void ecdsa_restart_det_init( mbedtls_ecdsa_restart_det_ctx *ctx ) { - memset( ctx, 0, sizeof( *ctx ) ); - mbedtls_hmac_drbg_init( &ctx->rng_ctx ); + ctx->state = ecdsa_det_init; } /* @@ -160,7 +162,7 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) mbedtls_hmac_drbg_free( &ctx->rng_ctx ); - memset( ctx, 0, sizeof( *ctx ) ); + ecdsa_restart_det_init( ctx ); } #endif /* MBEDTLS_ECDSA_DETERMINISTIC */ diff --git a/library/ecp.c b/library/ecp.c index 365372a448..6675c475cf 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -138,7 +138,11 @@ struct mbedtls_ecp_restart_mul */ static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) { - memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); + mbedtls_ecp_point_init( &ctx->R ); + ctx->i = 0; + ctx->T = NULL; + ctx->T_size = 0; + ctx->state = ecp_rsm_init; } /* @@ -160,7 +164,7 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) mbedtls_free( ctx->T ); } - memset( ctx, 0, sizeof( mbedtls_ecp_restart_mul_ctx ) ); + ecp_restart_mul_init( ctx ); } /* @@ -183,7 +187,9 @@ struct mbedtls_ecp_restart_muladd */ static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx ) { - memset( ctx, 0, sizeof( *ctx ) ); + mbedtls_ecp_point_init( &ctx->mP ); + mbedtls_ecp_point_init( &ctx->R ); + ctx->state = ecp_rsma_mul1; } /* @@ -197,7 +203,7 @@ static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) mbedtls_ecp_point_free( &ctx->mP ); mbedtls_ecp_point_free( &ctx->R ); - memset( ctx, 0, sizeof( *ctx ) ); + ecp_restart_muladd_init( ctx ); } /* @@ -205,7 +211,10 @@ static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) */ void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ) { - memset( ctx, 0, sizeof( *ctx ) ); + ctx->ops_done = 0; + ctx->depth = 0; + ctx->rsm = NULL; + ctx->ma = NULL; } /* @@ -216,16 +225,13 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) if( ctx == NULL ) return; - ctx->ops_done = 0; - ctx->depth = 0; - ecp_restart_mul_free( ctx->rsm ); mbedtls_free( ctx->rsm ); - ctx->rsm = NULL; ecp_restart_muladd_free( ctx->ma ); mbedtls_free( ctx->ma ); - ctx->ma = NULL; + + mbedtls_ecp_restart_init( ctx ); } /* @@ -463,7 +469,21 @@ void mbedtls_ecp_group_init( mbedtls_ecp_group *grp ) if( grp == NULL ) return; - memset( grp, 0, sizeof( mbedtls_ecp_group ) ); + grp->id = 0; + mbedtls_mpi_init( &grp->P ); + mbedtls_mpi_init( &grp->A ); + mbedtls_mpi_init( &grp->B ); + mbedtls_ecp_point_init( &grp->G ); + mbedtls_mpi_init( &grp->N ); + grp->pbits = 0; + grp->nbits = 0; + grp->h = 0; + grp->modp = NULL; + grp->t_pre = NULL; + grp->t_post = NULL; + grp->t_data = NULL; + grp->T = NULL; + grp->T_size = 0; } /* @@ -986,6 +1006,9 @@ static int ecp_normalize_jac_many( const mbedtls_ecp_group *grp, if( ( c = mbedtls_calloc( T_size, sizeof( mbedtls_mpi ) ) ) == NULL ) return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); + for( i = 0; i < T_size; i++ ) + mbedtls_mpi_init( &c[i] ); + mbedtls_mpi_init( &u ); mbedtls_mpi_init( &Zi ); mbedtls_mpi_init( &ZZi ); /* @@ -1906,6 +1929,9 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, ret = MBEDTLS_ERR_ECP_ALLOC_FAILED; goto cleanup; } + + for( i = 0; i < T_size; i++ ) + mbedtls_ecp_point_init( &T[i] ); } /* Compute table (or finish computing it) if not done already */ From 28d162829b2a136f9e57b9b260ea2f43315fb597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 17:33:27 +0200 Subject: [PATCH 0111/1100] Avoid unnecessary xxx_copy() calls The call would anyway check for pointer equality and return early, but it doesn't hurt to save a function call, and also this follows more uniformly the pattern that those two lines go together: #if defined(MBEDTLS_ECP_RESTARTBLE) if( rs_ctx != NULL && ... --- library/ecdsa.c | 3 ++- library/ecp.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index f3b3cf26d5..835d3de882 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -353,7 +353,8 @@ modn: while( mbedtls_mpi_cmp_int( s, 0 ) == 0 ); #if defined(MBEDTLS_ECP_RESTARTABLE) - mbedtls_mpi_copy( r, pr ); + if( rs_ctx != NULL && rs_ctx->sig != NULL ) + mbedtls_mpi_copy( r, pr ); #endif cleanup: diff --git a/library/ecp.c b/library/ecp.c index 6675c475cf..a8c367a3d7 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1804,7 +1804,8 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) - MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, RR ) ); + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( R, RR ) ); #endif cleanup: From bfa1972b4fa47c9c6ce0230829109b42c4bc2ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 17:39:18 +0200 Subject: [PATCH 0112/1100] Remove redundant checks, save a few muls ecp_mul() already checks for this, and this check is not going away, so no need to do it twice (didn't even result in better error reporting) --- library/ecdh.c | 5 ----- library/ecdsa.c | 9 ++------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/library/ecdh.c b/library/ecdh.c index b8a7dbf0a1..25a788b935 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -87,11 +87,6 @@ static int ecdh_compute_shared_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point_init( &P ); - /* - * Make sure Q is a valid pubkey before using it - */ - MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, Q ) ); - MBEDTLS_MPI_CHK( mbedtls_ecp_mul_restartable( grp, &P, d, Q, f_rng, p_rng, rs_ctx ) ); diff --git a/library/ecdsa.c b/library/ecdsa.c index 835d3de882..3fddc4e4dd 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -498,13 +498,6 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, goto cleanup; } - /* - * Additional precaution: make sure Q is valid - * For ops count, group that together with step 4 - */ - ECDSA_BUDGET( MBEDTLS_ECP_OPS_CHK + MBEDTLS_ECP_OPS_INV + 2 ); - MBEDTLS_MPI_CHK( mbedtls_ecp_check_pubkey( grp, Q ) ); - /* * Step 3: derive MPI from hashed message */ @@ -513,6 +506,8 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, /* * Step 4: u1 = e / s mod n, u2 = r / s mod n */ + ECDSA_BUDGET( MBEDTLS_ECP_OPS_CHK + MBEDTLS_ECP_OPS_INV + 2 ); + MBEDTLS_MPI_CHK( mbedtls_mpi_inv_mod( &s_inv, s, &grp->N ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_mul_mpi( pu1, &e, &s_inv ) ); From b948f7dc20a67a2a9dfd1cee78c721da10d42223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 17:58:40 +0200 Subject: [PATCH 0113/1100] Don't bother to free NULL subcontexts --- library/ecdsa.c | 5 ++++- library/ecp.c | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 3fddc4e4dd..73389bb941 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -172,6 +172,7 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) #define ECDSA_BUDGET( ops ) \ MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, &rs_ctx->ecp, ops ) ); +/* Call this when entering a function that needs its own sub-context */ #define ECDSA_RS_ENTER( SUB ) do { \ /* reset ops count for this call if top-level */ \ if( rs_ctx != NULL && rs_ctx->ecp.depth++ == 0 ) \ @@ -189,9 +190,11 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) } \ } while( 0 ) +/* Call this when leaving a function that needs its own sub-context */ #define ECDSA_RS_LEAVE( SUB ) do { \ /* clear our sub-context when not in progress (done or error) */ \ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ + if( rs_ctx != NULL && rs_ctx->SUB != NULL && \ + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ { \ ecdsa_restart_## SUB ##_free( rs_ctx->SUB ); \ mbedtls_free( rs_ctx->SUB ); \ diff --git a/library/ecp.c b/library/ecp.c index a8c367a3d7..0c9feae3f6 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1989,7 +1989,8 @@ cleanup: /* clear our sub-context when not in progress (done or error) */ #if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_mul_free( rs_ctx->rsm ); mbedtls_free( rs_ctx->rsm ); @@ -2457,7 +2458,8 @@ cleanup: #if defined(MBEDTLS_ECP_RESTARTABLE) /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( rs_ctx != NULL && rs_ctx->ma != NULL && + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) { ecp_restart_muladd_free( rs_ctx->ma ); mbedtls_free( rs_ctx->ma ); From db4a8eb992f0d563a86ddf3998d8c45c619dad31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 Aug 2017 18:18:22 +0200 Subject: [PATCH 0114/1100] Use ECP_RS_ENTER/LEAVE() macros, as in ECDSA --- library/ecp.c | 115 ++++++++++++++++++++++---------------------------- 1 file changed, 51 insertions(+), 64 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 0c9feae3f6..f2c7448a34 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -136,7 +136,7 @@ struct mbedtls_ecp_restart_mul /* * Init restart_mul sub-context */ -static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) +static void ecp_restart_rsm_init( mbedtls_ecp_restart_mul_ctx *ctx ) { mbedtls_ecp_point_init( &ctx->R ); ctx->i = 0; @@ -148,7 +148,7 @@ static void ecp_restart_mul_init( mbedtls_ecp_restart_mul_ctx *ctx ) /* * Free the components of a restart_mul sub-context */ -static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) +static void ecp_restart_rsm_free( mbedtls_ecp_restart_mul_ctx *ctx ) { unsigned char i; @@ -164,7 +164,7 @@ static void ecp_restart_mul_free( mbedtls_ecp_restart_mul_ctx *ctx ) mbedtls_free( ctx->T ); } - ecp_restart_mul_init( ctx ); + ecp_restart_rsm_init( ctx ); } /* @@ -185,7 +185,7 @@ struct mbedtls_ecp_restart_muladd /* * Init restart_muladd sub-context */ -static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx ) +static void ecp_restart_ma_init( mbedtls_ecp_restart_muladd_ctx *ctx ) { mbedtls_ecp_point_init( &ctx->mP ); mbedtls_ecp_point_init( &ctx->R ); @@ -195,7 +195,7 @@ static void ecp_restart_muladd_init( mbedtls_ecp_restart_muladd_ctx *ctx ) /* * Free the components of a restart_muladd sub-context */ -static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) +static void ecp_restart_ma_free( mbedtls_ecp_restart_muladd_ctx *ctx ) { if( ctx == NULL ) return; @@ -203,7 +203,7 @@ static void ecp_restart_muladd_free( mbedtls_ecp_restart_muladd_ctx *ctx ) mbedtls_ecp_point_free( &ctx->mP ); mbedtls_ecp_point_free( &ctx->R ); - ecp_restart_muladd_init( ctx ); + ecp_restart_ma_init( ctx ); } /* @@ -225,10 +225,10 @@ void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ) if( ctx == NULL ) return; - ecp_restart_mul_free( ctx->rsm ); + ecp_restart_rsm_free( ctx->rsm ); mbedtls_free( ctx->rsm ); - ecp_restart_muladd_free( ctx->ma ); + ecp_restart_ma_free( ctx->ma ); mbedtls_free( ctx->ma ); mbedtls_ecp_restart_init( ctx ); @@ -261,6 +261,44 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, return( 0 ); } +/* Call this when entering a function that needs its own sub-context */ +#define ECP_RS_ENTER( SUB ) do { \ + /* reset ops count for this call if top-level */ \ + if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) \ + rs_ctx->ops_done = 0; \ + \ + /* set up our own sub-context if needed */ \ + if( mbedtls_ecp_restart_enabled() && \ + rs_ctx != NULL && rs_ctx->SUB == NULL ) \ + { \ + rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ + if( rs_ctx->SUB == NULL ) \ + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); \ + \ + ecp_restart_## SUB ##_init( rs_ctx->SUB ); \ + } \ +} while( 0 ) + +/* Call this when leaving a function that needs its own sub-context */ +#define ECP_RS_LEAVE( SUB ) do { \ + /* clear our sub-context when not in progress (done or error) */ \ + if( rs_ctx != NULL && rs_ctx->SUB != NULL && \ + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ + { \ + ecp_restart_## SUB ##_free( rs_ctx->SUB ); \ + mbedtls_free( rs_ctx->SUB ); \ + rs_ctx->SUB = NULL; \ + } \ + \ + if( rs_ctx != NULL ) \ + rs_ctx->depth--; \ +} while( 0 ) + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +#define ECP_RS_ENTER( sub ) (void) rs_ctx; +#define ECP_RS_LEAVE( sub ) (void) rs_ctx; + #endif /* MBEDTLS_ECP_RESTARTABLE */ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) || \ @@ -1872,21 +1910,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, unsigned char T_size = 0, T_ok = 0; mbedtls_ecp_point *T = NULL; -#if !defined(MBEDTLS_ECP_RESTARTABLE) - (void) rs_ctx; -#endif - -#if defined(MBEDTLS_ECP_RESTARTABLE) - /* set up our own sub-context if needed */ - if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->rsm == NULL ) - { - rs_ctx->rsm = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_mul_ctx ) ); - if( rs_ctx->rsm == NULL ) - return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); - - ecp_restart_mul_init( rs_ctx->rsm ); - } -#endif + ECP_RS_ENTER( rsm ); /* Is P the base point ? */ #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 @@ -1987,16 +2011,7 @@ cleanup: if( ret != 0 ) mbedtls_ecp_point_free( R ); - /* clear our sub-context when not in progress (done or error) */ -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) - { - ecp_restart_mul_free( rs_ctx->rsm ); - mbedtls_free( rs_ctx->rsm ); - rs_ctx->rsm = NULL; - } -#endif + ECP_RS_LEAVE( rsm ); return( ret ); } @@ -2373,10 +2388,6 @@ int mbedtls_ecp_muladd_restartable( char is_grp_capable = 0; #endif -#if !defined(MBEDTLS_ECP_RESTARTABLE) - (void) rs_ctx; -#endif - if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS ) return( MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE ); @@ -2387,21 +2398,9 @@ int mbedtls_ecp_muladd_restartable( MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); #endif /* MBEDTLS_ECP_INTERNAL_ALT */ + ECP_RS_ENTER( ma ); + #if defined(MBEDTLS_ECP_RESTARTABLE) - /* reset ops count for this call if top-level */ - if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) - rs_ctx->ops_done = 0; - - /* set up our own sub-context if needed */ - if( ecp_max_ops != 0 && rs_ctx != NULL && rs_ctx->ma == NULL ) - { - rs_ctx->ma = mbedtls_calloc( 1, sizeof( mbedtls_ecp_restart_muladd_ctx ) ); - if( rs_ctx->ma == NULL ) - return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); - - ecp_restart_muladd_init( rs_ctx->ma ); - } - if( rs_ctx != NULL && rs_ctx->ma != NULL ) { /* redirect intermediate results to restart context */ @@ -2456,19 +2455,7 @@ cleanup: mbedtls_ecp_point_free( &mP ); -#if defined(MBEDTLS_ECP_RESTARTABLE) - /* clear our sub-context when not in progress (done or error) */ - if( rs_ctx != NULL && rs_ctx->ma != NULL && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) - { - ecp_restart_muladd_free( rs_ctx->ma ); - mbedtls_free( rs_ctx->ma ); - rs_ctx->ma = NULL; - } - - if( rs_ctx != NULL ) - rs_ctx->depth--; -#endif /* MBEDTLS_ECP_RESTARTABLE */ + ECP_RS_LEAVE( ma ); return( ret ); } From c9efa00871a253203be3a3fa1d618d4fd5567236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 10:25:06 +0200 Subject: [PATCH 0115/1100] ECP: Use explicit state assignments Incrementing the state is error-prone as we can end up doing it too many times (loops) or not enough (skipped branches), or just make programming mistakes (eg. the state was incremented twice at the end, so it ended up with a value not in the enum...) This is the first step of the rework, the next one will rationalize where the state assignments are done. --- library/ecp.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index f2c7448a34..fc4838a0d7 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1563,7 +1563,7 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { rs_ctx->rsm->i = 0; - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_pre_norm_dbl; } #endif @@ -1585,7 +1585,7 @@ norm_dbl: #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_pre_add; #endif /* @@ -1607,7 +1607,7 @@ add: #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_pre_norm_add; #endif /* @@ -1628,7 +1628,7 @@ norm_add: #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_T_done; #endif cleanup: @@ -1730,7 +1730,7 @@ cleanup: { if( ret == 0 ) { - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_final_norm; rs_ctx->rsm->i = 0; } else if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) @@ -1834,7 +1834,7 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state++; + rs_ctx->rsm->state = ecp_rsm_final_norm; #endif } @@ -2420,14 +2420,14 @@ int mbedtls_ecp_muladd_restartable( MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pmP, m, P, rs_ctx ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) - rs_ctx->ma->state++; + rs_ctx->ma->state = ecp_rsma_mul2; mul2: #endif MBEDTLS_MPI_CHK( mbedtls_ecp_mul_shortcuts( grp, pR, n, Q, rs_ctx ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) - rs_ctx->ma->state++; + rs_ctx->ma->state = ecp_rsma_add; add: #endif @@ -2435,7 +2435,7 @@ add: MBEDTLS_MPI_CHK( ecp_add_mixed( grp, pR, pmP, pR ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ma != NULL ) - rs_ctx->ma->state++; + rs_ctx->ma->state = ecp_rsma_norm; norm: #endif From 4ed1dab474bbdbaaa6fb3191a533028d6442dca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 11:02:04 +0200 Subject: [PATCH 0116/1100] ECP: move state changes closer to operations Systematically assign state just before the next operation that may return, rather that just after the previous one. This makes things more local. (For example, previously precompute_comb() has to handle a state reset for mul_comb_core(), a kind of coupling that's best avoided.) Note that this change doesn't move the location of state updates relative to any potential return point, which is all that matters. --- library/ecp.c | 137 ++++++++++++++++++++++++-------------------------- 1 file changed, 66 insertions(+), 71 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index fc4838a0d7..5f2c41b00d 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -123,12 +123,13 @@ struct mbedtls_ecp_restart_mul size_t i; /* current index in various loops, 0 outside */ mbedtls_ecp_point *T; /* table for precomputed points */ unsigned char T_size; /* number of points in table T */ - enum { /* what's the next step ? */ - ecp_rsm_init = 0, /* just getting started */ + enum { /* what were we doing last time we returned? */ + ecp_rsm_init = 0, /* nothing so far, dummy initial state */ + ecp_rsm_pre_dbl, /* precompute 2^n multiples */ ecp_rsm_pre_norm_dbl, /* normalize precomputed 2^n multiples */ ecp_rsm_pre_add, /* precompute remaining points by adding */ ecp_rsm_pre_norm_add, /* normalize all precomputed points */ - ecp_rsm_T_done, /* call ecp_mul_comb_after_precomp() */ + ecp_rsm_comb_core, /* ecp_mul_comb_core() */ ecp_rsm_final_norm, /* do the final normalization */ } state; }; @@ -1484,13 +1485,10 @@ static void ecp_comb_recode_core( unsigned char x[], size_t d, * the the comb method. See ecp_comb_recode_core(). * * This function currently works in four steps: - * (1) Computation of intermediate T[i] for 2-powers values of i - * (restart state is ecp_rsm_init). - * (2) Normalization of coordinates of these T[i] - * (restart state is ecp_rsm_pre_norm_dbl). - * (3) Computation of all T[i] (restart state is ecp_rsm_pre_add). - * (4) Normalization of all T[i] (restart state is ecp_rsm_pre_norm_add) - * The final restart state is ecp_rsm_T_done. + * (1) [dbl] Computation of intermediate T[i] for 2-powers values of i + * (2) [norm_dbl] Normalization of coordinates of these T[i] + * (3) [add] Computation of all T[i] + * (4) [norm_add] Normalization of all T[i] * * Step 1 can be interrupted but not the others; together with the final * coordinate normalization they are the largest steps done at once, depending @@ -1524,12 +1522,14 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { - if( rs_ctx->rsm->state == ecp_rsm_pre_norm_add ) - goto norm_add; - if( rs_ctx->rsm->state == ecp_rsm_pre_add ) - goto add; + if( rs_ctx->rsm->state == ecp_rsm_pre_dbl ) + goto dbl; if( rs_ctx->rsm->state == ecp_rsm_pre_norm_dbl ) goto norm_dbl; + if( rs_ctx->rsm->state == ecp_rsm_pre_add ) + goto add; + if( rs_ctx->rsm->state == ecp_rsm_pre_norm_add ) + goto norm_add; } #endif @@ -1537,6 +1537,18 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, * Set T[0] = P and * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + { + rs_ctx->rsm->state = ecp_rsm_pre_dbl; + + /* initial state for the loop */ + rs_ctx->rsm->i = 0; + } + +dbl: +#endif + MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -1559,19 +1571,14 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); } -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - { - rs_ctx->rsm->i = 0; - rs_ctx->rsm->state = ecp_rsm_pre_norm_dbl; - } -#endif - /* * Normalize current elements in T. As T has holes, * use an auxiliary array of pointers to elements in T. */ #if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state = ecp_rsm_pre_norm_dbl; + norm_dbl: #endif @@ -1583,16 +1590,14 @@ norm_dbl: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state = ecp_rsm_pre_add; -#endif - /* * Compute the remaining ones using the minimal number of additions * Be careful to update T[2^l] only after using it! */ #if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state = ecp_rsm_pre_add; + add: #endif @@ -1605,17 +1610,15 @@ add: MBEDTLS_MPI_CHK( ecp_add_mixed( grp, &T[i + j], &T[j], &T[i] ) ); } -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state = ecp_rsm_pre_norm_add; -#endif - /* * Normalize final elements in T. Even though there are no holes now, * we still need the auxiliary array for homogeneity with last time. * Also, skip T[0] which is already normalised, being a copy of P. */ #if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + rs_ctx->rsm->state = ecp_rsm_pre_norm_add; + norm_add: #endif @@ -1626,17 +1629,12 @@ norm_add: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state = ecp_rsm_T_done; -#endif - cleanup: #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - if( rs_ctx->rsm->state == ecp_rsm_init ) + if( rs_ctx->rsm->state == ecp_rsm_pre_dbl ) rs_ctx->rsm->i = j; } #endif @@ -1697,6 +1695,14 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R #endif #if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && + rs_ctx->rsm->state != ecp_rsm_comb_core ) + { + rs_ctx->rsm->i = 0; + rs_ctx->rsm->state = ecp_rsm_comb_core; + } + + /* new 'if' instead of nested for the sake of the 'else' branch */ if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->i != 0 ) { /* restore current index (R already pointing to rs_ctx->rsm->R) */ @@ -1726,19 +1732,12 @@ cleanup: mbedtls_ecp_point_free( &Txi ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && + ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - if( ret == 0 ) - { - rs_ctx->rsm->state = ecp_rsm_final_norm; - rs_ctx->rsm->i = 0; - } - else if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - { - /* was decreased before actually doing it */ - rs_ctx->rsm->i = i + 1; - /* no need to save R, already pointing to rs_ctx->rsm->R */ - } + /* was decreased before actually doing it */ + rs_ctx->rsm->i = i + 1; + /* no need to save R, already pointing to rs_ctx->rsm->R */ } #endif @@ -1812,32 +1811,28 @@ static int ecp_mul_comb_after_precomp( const mbedtls_ecp_group *grp, unsigned char k[COMB_MAX_D + 1]; mbedtls_ecp_point *RR = R; -#if !defined(MBEDTLS_ECP_RESTARTABLE) - (void) rs_ctx; +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( rs_ctx != NULL && rs_ctx->rsm != NULL ) + { + RR = &rs_ctx->rsm->R; + + if( rs_ctx->rsm->state == ecp_rsm_final_norm ) + goto final_norm; + } #endif + MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, + &parity_trick ) ); + MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, T_size, k, d, + f_rng, p_rng, rs_ctx ) ); + MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); + #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - RR = &rs_ctx->rsm->R; -#endif + rs_ctx->rsm->state = ecp_rsm_final_norm; -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx == NULL || rs_ctx->rsm == NULL || - rs_ctx->rsm->state < ecp_rsm_final_norm ) +final_norm: #endif - { - MBEDTLS_MPI_CHK( ecp_comb_recode_scalar( grp, m, k, d, w, - &parity_trick ) ); - MBEDTLS_MPI_CHK( ecp_mul_comb_core( grp, RR, T, T_size, k, d, - f_rng, p_rng, rs_ctx ) ); - MBEDTLS_MPI_CHK( ecp_safe_invert_jac( grp, RR, parity_trick ) ); - -#if defined(MBEDTLS_ECP_RESTARTABLE) - if( rs_ctx != NULL && rs_ctx->rsm != NULL ) - rs_ctx->rsm->state = ecp_rsm_final_norm; -#endif - } - MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_INV ); MBEDTLS_MPI_CHK( ecp_normalize_jac( grp, RR ) ); @@ -1940,7 +1935,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, rs_ctx->rsm->T = NULL; rs_ctx->rsm->T_size = 0; - if( rs_ctx->rsm->state >= ecp_rsm_T_done ) + if( rs_ctx->rsm->state >= ecp_rsm_comb_core ) T_ok = 1; } #endif From 6348181da956c97da6658f0e38b307ac0be0497d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 11:16:01 +0200 Subject: [PATCH 0117/1100] Explicit state assignments in ecdsa too --- library/ecdsa.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 73389bb941..981846bb40 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -307,9 +307,7 @@ static int ecdsa_sign_restartable( mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->sig != NULL ) - { - rs_ctx->sig->state++; - } + rs_ctx->sig->state = ecdsa_sig_mul; mul: #endif @@ -321,7 +319,7 @@ mul: #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->sig != NULL ) - rs_ctx->sig->state++; + rs_ctx->sig->state = ecdsa_sig_modn; modn: #endif @@ -426,7 +424,7 @@ static int ecdsa_sign_det_restartable( mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->det != NULL ) - rs_ctx->det->state++; + rs_ctx->det->state = ecdsa_det_sign; sign: #endif @@ -521,7 +519,7 @@ static int ecdsa_verify_restartable( mbedtls_ecp_group *grp, #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->ver != NULL ) - rs_ctx->ver->state++; + rs_ctx->ver->state = ecdsa_ver_muladd; muladd: #endif From 0b23f167ba288083a46deb7655e9d9c1f8821c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 12:08:33 +0200 Subject: [PATCH 0118/1100] SSL: rework restart state handling As done by previous commits for ECC and ECDSA: - use explicit state assignments rather than increment - always place the state update right before the operation label This will make it easier to add restart support for other operations later if desired. SSL-specific changes: - remove useless states: when the last restartable operation on a message is complete, ssl->state is incremented already, so we don't need any additional state update: ecrs_state is only meant to complement ssl->state - rename remaining states consistently as _ - move some labels closer to the actual operation when possible (no assignment to variables used after the label between its previous and current position) --- include/mbedtls/ssl_internal.h | 20 +++++-------- library/ssl_cli.c | 54 +++++++++++++--------------------- library/ssl_tls.c | 9 ++---- 3 files changed, 30 insertions(+), 53 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 4cfe1540c6..036b60a065 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -229,18 +229,14 @@ struct mbedtls_ssl_handshake_params #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) int ecrs_enabled; /*!< Handshake supports EC restart? */ mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ - enum { - ssl_ecrs_init = 0, /*!< just getting started */ - ssl_ecrs_crt_parsed, /*!< server certificate was parsed */ - ssl_ecrs_crt_verified, /*!< server certificate was verified*/ - ssl_ecrs_ske_read, /*!< ServerKeyExchange was read */ - ssl_ecrs_ske_verified, /*!< ServerKeyExchange was verified */ - ssl_ecrs_ecdh_public_done, /*!< wrote ECDHE public share */ - ssl_ecrs_ecdh_completed, /*!< completed ECDHE key exchange */ - ssl_ecrs_keys_derived, /*!< ssl_derive_keys() done */ - ssl_ecrs_pk_sign_done, /*!< done writing CertificateVerify */ - } ecrs_state; /*!< state for restartable ECC */ - size_t ecrs_n; /*!< place for seving a length */ + enum { /* this complements ssl->state with info on intra-state operations */ + ssl_ecrs_none = 0, /*!< nothing going on (yet) */ + ssl_ecrs_crt_verify, /*!< Certificate: crt_verify() */ + ssl_ecrs_ske_start_processing, /*!< ServerKeyExchange: step 1 */ + ssl_ecrs_ske_ecdh_calc_secret, /*!< ServerKeyExchange: ECDH step 2 */ + ssl_ecrs_crt_vrfy_sign, /*!< CertificateVerify: pk_sign() */ + } ecrs_state; /*!< current (or last) operation */ + size_t ecrs_n; /*!< place for saving a length */ #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index d53f7b227e..cf83e8fae8 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2305,9 +2305,9 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled && - ssl->handshake->ecrs_state == ssl_ecrs_ske_read ) + ssl->handshake->ecrs_state == ssl_ecrs_ske_start_processing ) { - goto ske_process; + goto start_processing; } #endif @@ -2317,12 +2317,6 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) return( ret ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled ) - ssl->handshake->ecrs_state++; - -ske_process: -#endif if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server key exchange message" ) ); @@ -2354,6 +2348,12 @@ ske_process: return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state = ssl_ecrs_ske_start_processing; + +start_processing: +#endif p = ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ); end = ssl->in_msg + ssl->in_hslen; MBEDTLS_SSL_DEBUG_BUF( 3, "server key exchange", p, end - p ); @@ -2630,11 +2630,6 @@ ske_process: MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_verify", ret ); return( ret ); } - -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled ) - ssl->handshake->ecrs_state++; -#endif } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ @@ -2901,7 +2896,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) { - if( ssl->handshake->ecrs_state == ssl_ecrs_ecdh_public_done ) + if( ssl->handshake->ecrs_state == ssl_ecrs_ske_ecdh_calc_secret ) goto ecdh_calc_secret; mbedtls_ecdh_enable_restart( &ssl->handshake->ecdh_ctx ); @@ -2924,7 +2919,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) if( ssl->handshake->ecrs_enabled ) { ssl->handshake->ecrs_n = n; - ssl->handshake->ecrs_state++; + ssl->handshake->ecrs_state = ssl_ecrs_ske_ecdh_calc_secret; } ecdh_calc_secret: @@ -2942,11 +2937,6 @@ ecdh_calc_secret: } MBEDTLS_SSL_DEBUG_MPI( 3, "ECDH: z", &ssl->handshake->ecdh_ctx.z ); - -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled ) - ssl->handshake->ecrs_state++; -#endif } else #endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED || @@ -3167,9 +3157,9 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled && - ssl->handshake->ecrs_state == ssl_ecrs_keys_derived ) + ssl->handshake->ecrs_state == ssl_ecrs_crt_vrfy_sign ) { - goto keys_derived; + goto sign; } #endif @@ -3179,12 +3169,6 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) return( ret ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled ) - ssl->handshake->ecrs_state++; - -keys_derived: -#endif if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK || @@ -3210,8 +3194,15 @@ keys_derived: } /* - * Make an RSA signature of the handshake digests + * Make a signature of the handshake digests */ +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ssl->handshake->ecrs_enabled ) + ssl->handshake->ecrs_state = ssl_ecrs_crt_vrfy_sign; + +sign: +#endif + ssl->handshake->calc_verify( ssl, hash ); #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ @@ -3302,11 +3293,6 @@ keys_derived: return( ret ); } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled ) - ssl->handshake->ecrs_state++; -#endif - ssl->out_msg[4 + offset] = (unsigned char)( n >> 8 ); ssl->out_msg[5 + offset] = (unsigned char)( n ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f3cde7f0a1..6d9420c614 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4554,7 +4554,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled && - ssl->handshake->ecrs_state == ssl_ecrs_crt_parsed ) + ssl->handshake->ecrs_state == ssl_ecrs_crt_verify ) { goto crt_verify; } @@ -4584,7 +4584,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled) - ssl->handshake->ecrs_state++; + ssl->handshake->ecrs_state = ssl_ecrs_crt_verify; crt_verify: if( ssl->handshake->ecrs_enabled) @@ -4726,11 +4726,6 @@ crt_verify: #endif /* MBEDTLS_DEBUG_C */ } -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ssl->handshake->ecrs_enabled) - ssl->handshake->ecrs_state++; -#endif - ssl->state++; MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= parse certificate" ) ); From 11556e2846728f33f70155e58831a6079740b71b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 13:41:19 +0200 Subject: [PATCH 0119/1100] Clarify initialization of T in mul_comb() Exactly one of three ways will be used, so make that clear by using an if 1 else if 2 else 3 structure. While at it, don't initialize variables at declaration, just to make extra sure they're properly initialized afterwards in all code paths. --- library/ecp.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 5f2c41b00d..428dc68cf0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1885,7 +1885,7 @@ static unsigned char ecp_pick_window_size( const mbedtls_ecp_group *grp, * * This function is mainly responsible for administrative work: * - managing the restart context if enabled - * - managing the table of precomputed points (passed between the above two + * - managing the table of precomputed points (passed between the below two * functions): allocation, computation, ownership tranfer, freeing. * * It delegates the actual arithmetic work to: @@ -1900,10 +1900,10 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, mbedtls_ecp_restart_ctx *rs_ctx ) { int ret; - unsigned char w, p_eq_g = 0, i; + unsigned char w, p_eq_g, i; size_t d; - unsigned char T_size = 0, T_ok = 0; - mbedtls_ecp_point *T = NULL; + unsigned char T_size, T_ok; + mbedtls_ecp_point *T; ECP_RS_ENTER( rsm ); @@ -1925,23 +1925,21 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, T = grp->T; T_ok = 1; } - + else #if defined(MBEDTLS_ECP_RESTARTABLE) /* Pre-computed table: do we have one in progress? complete? */ - if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL && T == NULL ) + if( rs_ctx != NULL && rs_ctx->rsm != NULL && rs_ctx->rsm->T != NULL ) { /* transfer ownership of T from rsm to local function */ T = rs_ctx->rsm->T; rs_ctx->rsm->T = NULL; rs_ctx->rsm->T_size = 0; - if( rs_ctx->rsm->state >= ecp_rsm_comb_core ) - T_ok = 1; + T_ok = rs_ctx->rsm->state >= ecp_rsm_comb_core; } + else #endif - /* Allocate table if we didn't have any */ - if( T == NULL ) { T = mbedtls_calloc( T_size, sizeof( mbedtls_ecp_point ) ); if( T == NULL ) @@ -1952,6 +1950,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, for( i = 0; i < T_size; i++ ) mbedtls_ecp_point_init( &T[i] ); + + T_ok = 0; } /* Compute table (or finish computing it) if not done already */ From 95aedfea331344b381db9c90cd11c0fcf3ce9532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 13:47:04 +0200 Subject: [PATCH 0120/1100] Remove redundant test on curve type If rsm != NULL then the curve type has to be Short Weierstrass, as we don't implement restartable Montgomery now. If and when we do, then it's better to check for the subcontext only, and not for the curve type. --- library/ecp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 428dc68cf0..454820ae57 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -2234,10 +2234,9 @@ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, MBEDTLS_MPI_CHK( mbedtls_internal_ecp_init( grp ) ); #endif /* MBEDTLS_ECP_INTERNAL_ALT */ -#if defined(MBEDTLS_ECP_RESTARTABLE) && defined(ECP_SHORTWEIERSTRASS) +#if defined(MBEDTLS_ECP_RESTARTABLE) /* skip argument check when restarting */ - if( ecp_get_type( grp ) != ECP_TYPE_SHORT_WEIERSTRASS || - rs_ctx == NULL || rs_ctx->rsm == NULL ) + if( rs_ctx == NULL || rs_ctx->rsm == NULL ) #endif { /* check_privkey is free */ From fd87e354f6e1b24b1b2c5f34899e5a97754293fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 Aug 2017 14:21:05 +0200 Subject: [PATCH 0121/1100] Improve comments on parity trick --- include/mbedtls/ecp.h | 2 +- library/ecp.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 07ed110cdc..a30e876113 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -119,7 +119,7 @@ mbedtls_ecp_point; * 1. Short Weierstrass y^2 = x^3 + A x + B mod P (SEC1 + RFC 4492) * 2. Montgomery, y^2 = x^3 + A x^2 + x mod P (Curve25519 + draft) * In both cases, a generator G for a prime-order subgroup is fixed. In the - * short weierstrass, this subgroup is actually the whole curve, and its + * Short Weierstrass case, this subgroup is actually the whole curve, and its * cardinal is denoted by N. * * In the case of Short Weierstrass curves, our code requires that N is an odd diff --git a/library/ecp.c b/library/ecp.c index 454820ae57..41bf03d31e 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1751,6 +1751,9 @@ cleanup: * this wrapper ensures that by replacing m by N - m if necessary, and * informs the caller that the result of multiplication will be negated. * + * This works because we only support large prime order for Short Weierstrass + * curves, so N is always odd hence either m or N - m is. + * * See ecp_comb_recode_core() for background. */ static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp, @@ -1766,7 +1769,7 @@ static int ecp_comb_recode_scalar( const mbedtls_ecp_group *grp, mbedtls_mpi_init( &M ); mbedtls_mpi_init( &mm ); - /* N is odd with all real-world curves, just make extra sure */ + /* N is always odd (see above), just make extra sure */ if( mbedtls_mpi_get_bit( &grp->N, 0 ) != 1 ) return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA ); From 46ba7f3a92203852e04d79912e008fb0d4a9c5dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 28 Aug 2017 12:20:39 +0200 Subject: [PATCH 0122/1100] Avoid running useless code in tests With max_ops set to 0 or a very large value, we would always be doing an extra full operation for no testing value. --- tests/suites/test_suite_ecdsa.function | 24 +++++++++----- tests/suites/test_suite_ecp.function | 46 ++++++++++++-------------- tests/suites/test_suite_pk.function | 22 +++++++----- 3 files changed, 50 insertions(+), 42 deletions(-) diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 9205627be4..5db01a6cc7 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -254,10 +254,14 @@ void ecdsa_read_restart( int id, char *k_str, char *h_str, char *s_str, TEST_ASSERT( ret == MBEDTLS_ERR_ECP_VERIFY_FAILED ); sig[sig_len - 1]--; - /* do we leak memory when aborting? */ - ret = mbedtls_ecdsa_read_signature_restartable( &ctx, - hash, hash_len, sig, sig_len, &rs_ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Do we leak memory when aborting an operation? + * This test only makes sense when we actually restart */ + if( min_restart > 0 ) + { + ret = mbedtls_ecdsa_read_signature_restartable( &ctx, + hash, hash_len, sig, sig_len, &rs_ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } exit: mbedtls_ecdsa_free( &ctx ); @@ -311,10 +315,14 @@ void ecdsa_write_restart( int id, char *d_str, int md_alg, TEST_ASSERT( cnt_restart >= min_restart ); TEST_ASSERT( cnt_restart <= max_restart ); - /* do we leak memory when aborting? */ - ret = mbedtls_ecdsa_write_signature_restartable( &ctx, - md_alg, hash, hlen, sig, &slen, NULL, NULL, &rs_ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Do we leak memory when aborting an operation? + * This test only makes sense when we actually restart */ + if( min_restart > 0 ) + { + ret = mbedtls_ecdsa_write_signature_restartable( &ctx, + md_alg, hash, hlen, sig, &slen, NULL, NULL, &rs_ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } exit: mbedtls_ecdsa_restart_free( &rs_ctx ); diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 3ec7caf54f..c60d0d3498 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -103,13 +103,9 @@ void ecp_test_vect_restart( int id, cnt_restarts = 0; do { ret = mbedtls_ecp_mul_restartable( &grp, &R, &dA, &grp.G, NULL, NULL, &ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - cnt_restarts++; - } - while( ret != 0 ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); + TEST_ASSERT( ret == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xA ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yA ) == 0 ); @@ -120,22 +116,22 @@ void ecp_test_vect_restart( int id, cnt_restarts = 0; do { ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - cnt_restarts++; - } - while( ret != 0 ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); + TEST_ASSERT( ret == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xZ ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yZ ) == 0 ); TEST_ASSERT( cnt_restarts >= min_restarts ); TEST_ASSERT( cnt_restarts <= max_restarts ); - /* Do we leak memory when not finishing an operation? */ - ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Do we leak memory when aborting an operation? + * This test only makes sense when we actually restart */ + if( min_restarts > 0 ) + { + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } exit: mbedtls_ecp_restart_free( &ctx ); @@ -188,23 +184,23 @@ void ecp_muladd_restart( int id, char *xR_str, char *yR_str, do { ret = mbedtls_ecp_muladd_restartable( &grp, &R, &u1, &grp.G, &u2, &Q, &ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - cnt_restarts++; - } - while( ret != 0 ); + } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); + TEST_ASSERT( ret == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.X, &xR ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &R.Y, &yR ) == 0 ); TEST_ASSERT( cnt_restarts >= min_restarts ); TEST_ASSERT( cnt_restarts <= max_restarts ); - /* Do we leak memory when aborting? */ - ret = mbedtls_ecp_muladd_restartable( &grp, &R, - &u1, &grp.G, &u2, &Q, &ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + /* Do we leak memory when aborting an operation? + * This test only makes sense when we actually restart */ + if( min_restarts > 0 ) + { + ret = mbedtls_ecp_muladd_restartable( &grp, &R, + &u1, &grp.G, &u2, &Q, &ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } exit: mbedtls_ecp_restart_free( &ctx ); diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 176b08f980..d7edb755c7 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -347,16 +347,20 @@ void pk_sign_verify_restart( int pk_type, int grp_id, char *d_str, TEST_ASSERT( ret != 0 ); sig[0]--; - /* Do we leak memory when aborting? try verify then sign */ - ret = mbedtls_pk_verify_restartable( &pub, md_alg, - hash, hlen, sig, slen, &rs_ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); - mbedtls_pk_restart_free( &rs_ctx ); + /* Do we leak memory when aborting? try verify then sign + * This test only makes sense when we actually restart */ + if( min_restart > 0 ) + { + ret = mbedtls_pk_verify_restartable( &pub, md_alg, + hash, hlen, sig, slen, &rs_ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + mbedtls_pk_restart_free( &rs_ctx ); - slen = sizeof( sig ); - ret = mbedtls_pk_sign_restartable( &prv, md_alg, hash, hlen, - sig, &slen, NULL, NULL, &rs_ctx ); - TEST_ASSERT( ret == 0 || ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + slen = sizeof( sig ); + ret = mbedtls_pk_sign_restartable( &prv, md_alg, hash, hlen, + sig, &slen, NULL, NULL, &rs_ctx ); + TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); + } exit: mbedtls_pk_restart_free( &rs_ctx ); From 196d1338bab65c5321f77401e28d252eabe9704b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 28 Aug 2017 13:14:27 +0200 Subject: [PATCH 0123/1100] Fix uninitialised variable in some configs --- library/ecp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/ecp.c b/library/ecp.c index 41bf03d31e..126e506758 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1914,6 +1914,8 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, #if MBEDTLS_ECP_FIXED_POINT_OPTIM == 1 p_eq_g = ( mbedtls_mpi_cmp_mpi( &P->Y, &grp->G.Y ) == 0 && mbedtls_mpi_cmp_mpi( &P->X, &grp->G.X ) == 0 ); +#else + p_eq_g = 0; #endif /* Pick window size and deduce related sizes */ From bb216bd94040c848f6cd6310fb103da00161aa7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 28 Aug 2017 13:25:55 +0200 Subject: [PATCH 0124/1100] Fix MSVC 64-bit warnings "conversion from size_t to int, possible loss of data" --- include/mbedtls/x509_crt.h | 2 +- library/x509_crt.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 6831812702..a168d76285 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -161,7 +161,7 @@ typedef struct { typedef struct { mbedtls_x509_crt_verify_chain_item items[MBEDTLS_X509_MAX_VERIFY_CHAIN_SIZE]; - size_t len; + unsigned len; } mbedtls_x509_crt_verify_chain; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) diff --git a/library/x509_crt.c b/library/x509_crt.c index 586ec83755..b3fc6e40c4 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1983,8 +1983,8 @@ static int x509_crt_find_parent_in( mbedtls_x509_crt **r_parent, int *r_signature_is_good, int top, - int path_cnt, - int self_cnt, + unsigned path_cnt, + unsigned self_cnt, mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; @@ -2021,7 +2021,7 @@ static int x509_crt_find_parent_in( /* +1 because stored max_pathlen is 1 higher that the actual value */ if( parent->max_pathlen > 0 && - parent->max_pathlen < 1 + path_cnt - self_cnt ) + (size_t) parent->max_pathlen < 1 + path_cnt - self_cnt ) { continue; } @@ -2103,8 +2103,8 @@ static int x509_crt_find_parent( mbedtls_x509_crt **parent, int *parent_is_trusted, int *signature_is_good, - int path_cnt, - int self_cnt, + unsigned path_cnt, + unsigned self_cnt, mbedtls_x509_crt_restart_ctx *rs_ctx ) { int ret; @@ -2246,7 +2246,7 @@ static int x509_crt_verify_chain( int parent_is_trusted; int child_is_trusted; int signature_is_good; - int self_cnt; + unsigned self_cnt; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* resume if we had an operation in progress */ @@ -2445,7 +2445,7 @@ static int x509_crt_merge_flags_with_cb( void *p_vrfy ) { int ret; - size_t i; + unsigned i; uint32_t cur_flags; const mbedtls_x509_crt_verify_chain_item *cur; @@ -2455,7 +2455,7 @@ static int x509_crt_merge_flags_with_cb( cur_flags = cur->flags; if( NULL != f_vrfy ) - if( ( ret = f_vrfy( p_vrfy, cur->crt, i-1, &cur_flags ) ) != 0 ) + if( ( ret = f_vrfy( p_vrfy, cur->crt, (int) i-1, &cur_flags ) ) != 0 ) return( ret ); *flags |= cur_flags; From 22d989c434b39fb85733f373de8f6690f2c3bf7d Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 3 Sep 2017 17:56:25 +0300 Subject: [PATCH 0125/1100] Suport clang version 3.8 Check CLANG version, and according to the version, set the correct paramters. fix for #1072 --- CMakeLists.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e47224ea1..6bb0ccfbfa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,8 +84,16 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0 -g3") set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage") - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") + EXECUTE_PROCESS( COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE clang_full_version_string ) + string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string}) + + if(CLANG_VERSION_STRING VERSION_GREATER 3.7) + set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O3") + set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") + else() + set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O3") + set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recove -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") + endif() set(CMAKE_C_FLAGS_MEMSAN "-Werror -fsanitize=memory -O3") set(CMAKE_C_FLAGS_MEMSANDBG "-Werror -fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") set(CMAKE_C_FLAGS_CHECK "-Werror -Os") From 18b3c912f9ebc9a647978493eb4422ab1e4fb2c8 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 4 Sep 2017 14:03:33 +0300 Subject: [PATCH 0126/1100] Address Azim's coments Fix typo and use new check for clang>3.5m according to azim's comments --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bb0ccfbfa..c11f86348f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,12 +87,12 @@ if(CMAKE_COMPILER_IS_CLANG) EXECUTE_PROCESS( COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE clang_full_version_string ) string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string}) - if(CLANG_VERSION_STRING VERSION_GREATER 3.7) + if(CLANG_VERSION_STRING VERSION_GREATER 3.5) set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O3") set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") else() set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recove -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") + set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") endif() set(CMAKE_C_FLAGS_MEMSAN "-Werror -fsanitize=memory -O3") set(CMAKE_C_FLAGS_MEMSANDBG "-Werror -fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") From a4dd7839094a120e306887e7ec231fc0a2b570d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 7 Sep 2017 11:11:39 +0200 Subject: [PATCH 0127/1100] Fix some typos in comments --- library/ecdsa.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/ecdsa.c b/library/ecdsa.c index 981846bb40..b7c810e4e8 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -53,7 +53,7 @@ #if defined(MBEDTLS_ECP_RESTARTABLE) /* - * Sub-contect for ecdsa_verify() + * Sub-context for ecdsa_verify() */ struct mbedtls_ecdsa_restart_ver { @@ -89,7 +89,7 @@ static void ecdsa_restart_ver_free( mbedtls_ecdsa_restart_ver_ctx *ctx ) } /* - * Sub-contect for ecdsa_sign() + * Sub-context for ecdsa_sign() */ struct mbedtls_ecdsa_restart_sig { @@ -132,7 +132,7 @@ static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) #if defined(MBEDTLS_ECDSA_DETERMINISTIC) /* - * Sub-contect for ecdsa_sign_det() + * Sub-context for ecdsa_sign_det() */ struct mbedtls_ecdsa_restart_det { From 3f8271e32b909945ab16fd7cede7b03f9cc63dbe Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 19 Sep 2017 15:13:44 +0300 Subject: [PATCH 0128/1100] Support only new CLang version Support only new CLang version by enabling only `-fno-sanitize-recover=undefined,integer` --- CMakeLists.txt | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c11f86348f..a5f4bacb8a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,16 +84,8 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0 -g3") set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage") - EXECUTE_PROCESS( COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE clang_full_version_string ) - string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string}) - - if(CLANG_VERSION_STRING VERSION_GREATER 3.5) - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") - else() - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") - endif() + set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O3") + set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") set(CMAKE_C_FLAGS_MEMSAN "-Werror -fsanitize=memory -O3") set(CMAKE_C_FLAGS_MEMSANDBG "-Werror -fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") set(CMAKE_C_FLAGS_CHECK "-Werror -Os") From 3d8c90711b6ff7ae44d436c78f1bd0f4d06c7666 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 5 Jan 2018 16:24:22 +0000 Subject: [PATCH 0129/1100] Compute outgoing MAC in temporary buffer for MAC-then-Encrypt A previous commit changed the record encryption function `ssl_encrypt_buf` to compute the MAC in a temporary buffer and copying the relevant part of it (which is strictly smaller if the truncated HMAC extension is used) to the outgoing message buffer. However, the change was only made in case Encrypt-Then-MAC was enabled, but not in case of MAC-Then-Encrypt. While this doesn't constitute a problem, for the sake of uniformity this commit changes `ssl_encrypt_buf` to compute the MAC in a temporary buffer in this case, too. --- library/ssl_tls.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index abafe4d077..e25b08d26c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1530,6 +1530,8 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_ENCRYPT_THEN_MAC) if( auth_done == 0 ) { + unsigned char mac[MBEDTLS_SSL_MAC_ADD]; + /* * MAC(MAC_write_key, seq_num + * TLSCipherText.type + @@ -1552,10 +1554,12 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, pseudo_hdr, 13 ); mbedtls_md_hmac_update( &ssl->transform_out->md_ctx_enc, ssl->out_iv, ssl->out_msglen ); - mbedtls_md_hmac_finish( &ssl->transform_out->md_ctx_enc, - ssl->out_iv + ssl->out_msglen ); + mbedtls_md_hmac_finish( &ssl->transform_out->md_ctx_enc, mac ); mbedtls_md_hmac_reset( &ssl->transform_out->md_ctx_enc ); + memcpy( ssl->out_iv + ssl->out_msglen, mac, + ssl->transform_out->maclen ); + ssl->out_msglen += ssl->transform_out->maclen; auth_done++; } From bb51cb3e14025cd8680cf5d93d36510c8e3d0f45 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 7 Jan 2018 18:10:43 +0200 Subject: [PATCH 0130/1100] remove additional zero byte when writing pub der Remove `- 1` for setting location of output buffer, which added a leading zero which cause failure in ASN1 parsing. Fixes #1257 --- programs/pkey/key_app_writer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/pkey/key_app_writer.c b/programs/pkey/key_app_writer.c index 9d120772a6..b273e7daa1 100644 --- a/programs/pkey/key_app_writer.c +++ b/programs/pkey/key_app_writer.c @@ -128,7 +128,7 @@ static int write_public_key( mbedtls_pk_context *key, const char *output_file ) return( ret ); len = ret; - c = output_buf + sizeof(output_buf) - len - 1; + c = output_buf + sizeof(output_buf) - len; } if( ( f = fopen( output_file, "w" ) ) == NULL ) From ceb7b1209c52ff875fe8754030bc09a0d97ac360 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 18 Jan 2018 23:27:47 +0100 Subject: [PATCH 0131/1100] Readme with a short description of each sample program --- README.md | 2 +- programs/README.md | 123 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 programs/README.md diff --git a/README.md b/README.md index 4270e80693..a9934871c0 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ The solution file `mbedTLS.sln` contains all the basic projects needed to build Example programs ---------------- -We've included example programs for a lot of different features and uses in `programs/`. Most programs only focus on a single feature or usage scenario, so keep that in mind when copying parts of the code. +We've included example programs for a lot of different features and uses in [`programs/`](programs/README.md). Most programs only focus on a single feature or usage scenario, so keep that in mind when copying parts of the code. Tests ----- diff --git a/programs/README.md b/programs/README.md new file mode 100644 index 0000000000..fec8a60e4f --- /dev/null +++ b/programs/README.md @@ -0,0 +1,123 @@ +Mbed TLS sample programs +======================== + +This subdirectory mostly contains sample programs that illustrate specific features of the library, as well as a few test and support programs. + +## Symmetric cryptography (AES) examples + +* [`aes/aescrypt2.c`](aes/aescrypt2.c): file encryption and authentication, demonstrating the low-level AES interface and HMAC. + Warning: this program illustrates how to roll your own block cipher mode. Most applications should not do this and should instead use the standard library functions (e.g. `mbedtls_aes_crypt_cbc`). + +* [`aes/crypt_and_hash.c`](aes/crypt_and_hash.c): file encryption and authentication, demonstrating the generic cipher interface and the generic hash interface. + +## Hash (digest) examples + +* [`hash/generic_sum.c`](hash/generic_sum.c): file hash calculator and verifier, demonstrating the message digest (`md`) interface. + +* [`hash/hello.c`](hash/hello.c): hello-world program for MD5. + +## Public-key cryptography examples + +### Generic public-key cryptography (`pk`) examples + +* [`pkey/gen_key.c`](pkey/gen_key.c): generate a key for any of the supported public-key algorithms (RSA or ECC) and write it to a file that can be used by the other pk sample programs. + +* [`pkey/key_app.c`](pkey/key_app.c): Load a PEM or DER public key or private key file and dump its content. + +* [`pkey/key_app_writer.c`](pkey/key_app_writer.c): Load a PEM or DER public key or private key file and write it to a new PEM or DER file. + +* [`pkey/pk_encrypt.c`](pkey/pk_encrypt.c), [`pkey/pk_decrypt.c`](pkey/pk_decrypt.c): Load a PEM or DER public/private key file and use the key to encrypt/decrypt a short string through the generic public-key interface. + +* [`pkey/pk_sign.c`](pkey/pk_sign.c), [`pkey/pk_verify.c`](pkey/pk_verify.c): Load a PEM or DER private/public key file and use the key to sign/verify a short string. + +### ECDSA and RSA signature examples + +* [`pkey/ecdsa.c`](pkey/ecdsa.c): generate an ECDSA key, sign a fixed message and verify the signature. + +* [`pkey/rsa_encrypt.c`](pkey/rsa_encrypt.c), [`pkey/rsa_decrypt.c`](pkey/rsa_decrypt.c): load an RSA public/private key and use it to encrypt/decrypt a short string through the low-level RSA interface. + +* [`pkey/rsa_genkey.c`](pkey/rsa_genkey.c): generate an RSA key and write it to a file that can be used with the other RSA sample programs. + +* [`pkey/rsa_sign.c`](pkey/rsa_sign.c), [`pkey/rsa_verify.c`](pkey/rsa_verify.c): load an RSA private/public key and use it to sign/verify a short string with the RSA PKCS#1 v1.5 algorithm. + +* [`pkey/rsa_sign_pss.c`](pkey/rsa_sign_pss.c), [`pkey/rsa_verify_pss.c`](pkey/rsa_verify_pss.c): load an RSA private/public key and use it to sign/verify a short string with the RSASSA-PSS algorithm. + +### Diffie-Hellman key exchange examples + +* [`pkey/dh_client.c`](pkey/dh_client.c), [`pkey/dh_server.c`](pkey/dh_server.c): secure channel demonstrator (client, server). Illustrates how to set up a secure channel using RSA for authentication and Diffie-Hellman to set up a shared AES session key. + +* [`pkey/ecdh_curve25519.c`](pkey/ecdh_curve25519.c): demonstration of a elliptic curve Diffie-Hellman (ECDH) key agreement. + +### Bignum (`mpi`) usage examples + +* [`pkey/dh_genprime.c`](pkey/dh_genprime.c): illustrates the bignum (`mpi`) interface by generating Diffie-Hellman parameters. + +* [`pkey/mpi_demo.c`](pkey/mpi_demo.c): demonstrates operations on big integers. + +## Random number generator (RNG) examples + +* [`random/gen_entropy.c`](random/gen_entropy.c): illustrates using the default entropy sources to generate random data. + Note: most applications should use the entropy generator only to seed a cryptographic pseudorandom generator, as illustrated by `random/gen_random_ctr_drbg.c`. + +* [`random/gen_random_ctr_drbg.c`](random/gen_random_ctr_drbg.c): illustrates using the default entropy sources to seed a pseudorandom generator, and using the resulting random generator to generate random data. + +* [`random/gen_random_havege.c`](random/gen_random_havege.c): illustrates the HAVEGE entropy collector. + +## SSL/TLS examples + +### SSL/TLS sample applications + +* [`ssl/dtls_client.c`](ssl/dtls_client.c): a simple DTLS client program which sends one datagram to the server and reads one datagram in response. + +* [`ssl/dtls_server.c`](ssl/dtls_server.c): a simple DTLS server program which expects one datagram from the client and writes one datagram in response. This program supports DTLS cookies for hello verification. + +* [`ssl/mini_client.c`](ssl/mini_client.c): a minimalistic SSL client which sends a short string and disconnects. This is intended more as a benchmark; for a better example of a typical TLS client, see `ssl/ssl_client1.c`. + +* [`ssl/ssl_client1.c`](ssl/ssl_client1.c): a simple HTTPS client that sends a fixed request and displays the response. + +* [`ssl/ssl_fork_server.c`](ssl/ssl_fork_server.c): a simple HTTPS server using one process per client to send a fixed response. This program requires a Unix/POSIX environment implementing the `fork` system call. + +* [`ssl/ssl_mail_client.c`](ssl/ssl_mail_client.c): a simple SMTP-over-TLS or SMTP-STARTTLS client. This client sends an email with a fixed content. + +* [`ssl/ssl_pthread_server.c`](ssl/ssl_pthread_server.c): a simple HTTPS server using one thread per client to send a fixed response. This program requires a the pthread library. + +* [`ssl/ssl_server.c`](ssl/ssl_server.c): a simple HTTPS server that sends a fixed response. This server serves a single client at a time. + +### SSL/TLS feature demonstrators + +Note: unlike most of the other programs under the `programs/` directory, these two programs are not intended as a basis to start writing an application. They combine most of the features supported by the library, and most applications require only a few features. It is recommended to start with `ssl_client1.c` or `ssl_server.c`, and to look inside `ssl/ssl_client2.c` or `ssl/ssl_server2.c` to see how to use the specific features that your application needs. + +* [`ssl/ssl_client2.c`](ssl/ssl_client2.c): an HTTPS client that sends a fixed request and displays the response, with options to select TLS protocol features and Mbed TLS library features. + +* [`ssl/ssl_server2.c`](ssl/ssl_server2.c): an HTTPS server that sends a fixed response, with options to select TLS protocol features and Mbed TLS library features. + +These programs have options to trigger certain behaviors (e.g. reconnection, renegotiation) so the `ssl_server2` program can be useful to test features in your TLS client and the `ssl_client2` program can be useful to test features in your TLS server. + +## Test utilities + +* [`test/benchmark.c`](test/benchmark.c): benchmark for cryptographic algorithms. + +* [`test/selftest.c`](test/selftest.c): runs the self-test functions in all the library modules. + +* [`test/ssl_cert_test.c`](test/ssl_cert_test.c): verify some X.509 certificates, and verify that each certificate matches the corresponding private key (supported for RSA keys only). + +* [`test/udp_proxy.c`](test/udp_proxy.c): a UDP proxy that can inject certain failures (delay, duplicate, drop). Useful to test DTLS. + +## Development utilities + +* [`util/pem2der.c`](util/pem2der.c): a PEM to DER converter. Mbed TLS can read PEM files directly, but this utility can be useful to interact with other tools or with minimal Mbed TLS builds that lack PEM support. + +* [`util/strerror.c`](util/strerror.c): print the error description corresponding to an integer status returned by an Mbed TLS function. + +## X.509 certificate examples + +* [`x509/cert_app.c`](x509/cert_app.c): connect to a TLS server and verify its certificate chain. + +* [`x509/cert_req.c`](x509/cert_req.c): generate a certificate signing request (CSR) for a private key. + +* [`x509/cert_write.c`](x509/cert_write.c): sign a certificate signing request, or self-sign a certificate. + +* [`x509/crl_app.c`](x509/crl_app.c): load and dump a certificate revocation list (CRL). + +* [`x509/req_app.c`](x509/req_app.c): load and dump a certificate signing request (CSR). + From 0afe624fff728862788a480ee12b56291485ca78 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Feb 2018 19:28:12 +0100 Subject: [PATCH 0132/1100] all.sh: add test with MBEDTLS_DEPRECATED_REMOVED --- tests/scripts/all.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index d5fc12d0ac..4cd5246c58 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -547,6 +547,12 @@ if_build_succeeded tests/ssl-opt.sh -f Default msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' +msg "build: cmake, full config + DEPRECATED_REMOVED, clang, C99" +# No cleanup: tweak the configuration, keep the makefiles +scripts/config.pl set MBEDTLS_DEPRECATED_WARNING +scripts/config.pl set MBEDTLS_DEPRECATED_REMOVED +make + msg "test/build: curves.pl (gcc)" # ~ 4 min cleanup cmake -D CMAKE_BUILD_TYPE:String=Debug . From 41efbaabc9abe692c1ba1f3aa25d8e26f7765620 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Thu, 30 Nov 2017 11:37:55 +0000 Subject: [PATCH 0133/1100] ARIA cipher implementation --- include/mbedtls/aria.h | 237 ++++++++++++++ library/aria.c | 706 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 943 insertions(+) create mode 100644 include/mbedtls/aria.h create mode 100644 library/aria.c diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h new file mode 100644 index 0000000000..fc8ca98d7b --- /dev/null +++ b/include/mbedtls/aria.h @@ -0,0 +1,237 @@ +/** + * \file aria.h + * + * \brief ARIA block cipher + * + * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_ARIA_H +#define MBEDTLS_ARIA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_ARIA_ENCRYPT 1 +#define MBEDTLS_ARIA_DECRYPT 0 + +#define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH -0x005C /**< Invalid key length. */ +#define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ + +#if !defined(MBEDTLS_ARIA_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief ARIA context structure + */ + +typedef struct +{ + int nr; // rounds: nr = 12, 14, or 16 + uint32_t rk[17][4]; // nr+1 round keys (+1 for final) +} +mbedtls_aria_context; + +/** + * \brief Initialize ARIA context + * + * \param ctx ARIA context to be initialized + */ +void mbedtls_aria_init( mbedtls_aria_context *ctx ); + +/** + * \brief Clear ARIA context + * + * \param ctx ARIA context to be cleared + */ +void mbedtls_aria_free( mbedtls_aria_context *ctx ); + +/** + * \brief ARIA key schedule (encryption) + * + * \param ctx ARIA context to be initialized + * \param key encryption key + * \param keybits must be 128, 192 or 256 + * + * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH + */ +int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief ARIA key schedule (decryption) + * + * \param ctx ARIA context to be initialized + * \param key decryption key + * \param keybits must be 128, 192 or 256 + * + * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH + */ +int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief ARIA-ECB block encryption/decryption + * + * \param ctx ARIA context + * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 if successful + */ +int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief ARIA-CBC buffer encryption/decryption + * Length should be a multiple of the block + * size (16 bytes) + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx ARIA context + * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if successful, or + * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH + */ +int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief ARIA-CFB128 buffer encryption/decryption + * + * Note: Due to the nature of CFB you should use the same key schedule for + * both encryption and decryption. So a context initialized with + * mbedtls_aria_setkey_enc() for both MBEDTLS_ARIA_ENCRYPT and CAMELLIE_DECRYPT. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx ARIA context + * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT + * \param length length of the input data + * \param iv_off offset in IV (updated after use) + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if successful, or + * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH + */ +int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief ARIA-CTR buffer encryption/decryption + * + * Warning: You have to keep the maximum use of your counter in mind! + * + * Note: Due to the nature of CTR you should use the same key schedule for + * both encryption and decryption. So a context initialized with + * mbedtls_aria_setkey_enc() for both MBEDTLS_ARIA_ENCRYPT and MBEDTLS_ARIA_DECRYPT. + * + * \param ctx ARIA context + * \param length The length of the data + * \param nc_off The offset in the current stream_block (for resuming + * within current cipher stream). The offset pointer to + * should be 0 at the start of a stream. + * \param nonce_counter The 128-bit nonce and counter. + * \param stream_block The saved stream-block for resuming. Is overwritten + * by the function. + * \param input The input data stream + * \param output The output data stream + * + * \return 0 if successful + */ +int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#ifdef __cplusplus +} +#endif + +#else /* MBEDTLS_ARIA_ALT */ +#include "aria_alt.h" +#endif /* MBEDTLS_ARIA_ALT */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_aria_self_test( int verbose ); + +#ifdef __cplusplus +} +#endif + +#endif /* aria.h */ diff --git a/library/aria.c b/library/aria.c new file mode 100644 index 0000000000..0eb22ecc8f --- /dev/null +++ b/library/aria.c @@ -0,0 +1,706 @@ +/* + * ARIA implementation + * + * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_ARIA_C) + +#include "mbedtls/aria.h" + +#include + +#if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST */ + +#if !defined(MBEDTLS_ARIA_ALT) + +// 32-bit integer manipulation macros (little endian) + +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n,b,i) \ +{ \ + (n) = ( (uint32_t) (b)[(i) ] ) \ + | ( (uint32_t) (b)[(i) + 1] << 8 ) \ + | ( (uint32_t) (b)[(i) + 2] << 16 ) \ + | ( (uint32_t) (b)[(i) + 3] << 24 ); \ +} +#endif + +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n,b,i) \ +{ \ + (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ + (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ + (b)[(i) + 2] = (unsigned char) ( ( (n) >> 16 ) & 0xFF ); \ + (b)[(i) + 3] = (unsigned char) ( ( (n) >> 24 ) & 0xFF ); \ +} +#endif + +// FLIP1 modifies byte order ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits +#define ARIA_FLIP1(x) (((x) >> 16) ^ ((x) << 16)) + +// FLIP2 modifies byte order ( A B C D ) -> ( B A D C ), swap pairs of bytes +#define ARIA_FLIP2(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) + +// Affine Transform A +// (ra, rb, rc, rd) = state in/out +// (ta, tb, tc) = temporary variables + +#define ARIA_A( ra, rb, rc, rd, ta, tb, tc ) { \ + ta = rb; \ + rb = ra; \ + ra = ARIA_FLIP1( ta ); \ + tb = ARIA_FLIP1( rd ); \ + rd = ARIA_FLIP2( rc ); \ + rc = ARIA_FLIP2( tb ); \ + ta ^= rd; \ + tc = ARIA_FLIP1( rb ); \ + ta = ARIA_FLIP2( ta ) ^ tc ^ rc; \ + tb ^= ARIA_FLIP1( rd ); \ + tc ^= ARIA_FLIP2( ra ); \ + rb ^= ta ^ tb; \ + tb = ARIA_FLIP1( tb ) ^ ta; \ + ra ^= ARIA_FLIP2( tb ); \ + ta = ARIA_FLIP1( ta ); \ + rd ^= ARIA_FLIP2( ta ) ^ tc; \ + tc = ARIA_FLIP1( tc ); \ + rc ^= ARIA_FLIP2( tc ) ^ ta; \ +} + + +// ARIA Round function ( Substitution Layer SLx + Affine Transform A ) +// (ra, rb, rc, rd) = state in/out +// (sa, sb, sc, sd) = 256 8-bit S-Boxes +// (ta, tb, tc) = temporary variables + +#define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd, ta, tb, tc ) { \ + ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ \ + (((uint32_t) sd[ rb >> 24]) << 8) ^ \ + (((uint32_t) sa[ rb & 0xFF]) << 16) ^ \ + (((uint32_t) sb[(rb >> 8) & 0xFF]) << 24); \ + rb = ( (uint32_t) sa[ ra & 0xFF]) ^ \ + (((uint32_t) sb[(ra >> 8) & 0xFF]) << 8) ^ \ + (((uint32_t) sc[(ra >> 16) & 0xFF]) << 16) ^ \ + (((uint32_t) sd[ ra >> 24]) << 24); \ + ra = ta; \ + ta = ( (uint32_t) sd[ rd >> 24]) ^ \ + (((uint32_t) sc[(rd >> 16) & 0xFF]) << 8) ^ \ + (((uint32_t) sb[(rd >> 8) & 0xFF]) << 16) ^ \ + (((uint32_t) sa[ rd & 0xFF]) << 24); \ + rd = ( (uint32_t) sb[(rc >> 8) & 0xFF]) ^ \ + (((uint32_t) sa[ rc & 0xFF]) << 8) ^ \ + (((uint32_t) sd[ rc >> 24]) << 16) ^ \ + (((uint32_t) sc[(rc >> 16) & 0xFF]) << 24); \ + rc = ta; \ + ta = ARIA_FLIP1( ra ) ^ rd; \ + tc = ARIA_FLIP1( rb ); \ + ta = ARIA_FLIP2( ta ) ^ tc ^ rc; \ + tb = ARIA_FLIP2( rc ) ^ ARIA_FLIP1( rd ); \ + tc ^= ARIA_FLIP2( ra ); \ + rb ^= ta^ tb; \ + tb = ARIA_FLIP1( tb ) ^ ta; \ + ra ^= ARIA_FLIP2( tb ); \ + ta = ARIA_FLIP1( ta ); \ + rd ^= ARIA_FLIP2( ta ) ^ tc; \ + tc = ARIA_FLIP1( tc ); \ + rc ^= ARIA_FLIP2( tc ) ^ ta; \ +} + +// S-Boxes + +static const uint8_t aria_sb1[0x100] = +{ + 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, + 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, + 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, + 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, + 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, + 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, + 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0x00, 0xED, + 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, + 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, + 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, + 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, + 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, + 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, + 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, + 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, + 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, + 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, + 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, + 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, + 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, + 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, + 0xB0, 0x54, 0xBB, 0x16 +}; + +static const uint8_t aria_sb2[0x100] = +{ + 0xE2, 0x4E, 0x54, 0xFC, 0x94, 0xC2, 0x4A, 0xCC, 0x62, 0x0D, 0x6A, 0x46, + 0x3C, 0x4D, 0x8B, 0xD1, 0x5E, 0xFA, 0x64, 0xCB, 0xB4, 0x97, 0xBE, 0x2B, + 0xBC, 0x77, 0x2E, 0x03, 0xD3, 0x19, 0x59, 0xC1, 0x1D, 0x06, 0x41, 0x6B, + 0x55, 0xF0, 0x99, 0x69, 0xEA, 0x9C, 0x18, 0xAE, 0x63, 0xDF, 0xE7, 0xBB, + 0x00, 0x73, 0x66, 0xFB, 0x96, 0x4C, 0x85, 0xE4, 0x3A, 0x09, 0x45, 0xAA, + 0x0F, 0xEE, 0x10, 0xEB, 0x2D, 0x7F, 0xF4, 0x29, 0xAC, 0xCF, 0xAD, 0x91, + 0x8D, 0x78, 0xC8, 0x95, 0xF9, 0x2F, 0xCE, 0xCD, 0x08, 0x7A, 0x88, 0x38, + 0x5C, 0x83, 0x2A, 0x28, 0x47, 0xDB, 0xB8, 0xC7, 0x93, 0xA4, 0x12, 0x53, + 0xFF, 0x87, 0x0E, 0x31, 0x36, 0x21, 0x58, 0x48, 0x01, 0x8E, 0x37, 0x74, + 0x32, 0xCA, 0xE9, 0xB1, 0xB7, 0xAB, 0x0C, 0xD7, 0xC4, 0x56, 0x42, 0x26, + 0x07, 0x98, 0x60, 0xD9, 0xB6, 0xB9, 0x11, 0x40, 0xEC, 0x20, 0x8C, 0xBD, + 0xA0, 0xC9, 0x84, 0x04, 0x49, 0x23, 0xF1, 0x4F, 0x50, 0x1F, 0x13, 0xDC, + 0xD8, 0xC0, 0x9E, 0x57, 0xE3, 0xC3, 0x7B, 0x65, 0x3B, 0x02, 0x8F, 0x3E, + 0xE8, 0x25, 0x92, 0xE5, 0x15, 0xDD, 0xFD, 0x17, 0xA9, 0xBF, 0xD4, 0x9A, + 0x7E, 0xC5, 0x39, 0x67, 0xFE, 0x76, 0x9D, 0x43, 0xA7, 0xE1, 0xD0, 0xF5, + 0x68, 0xF2, 0x1B, 0x34, 0x70, 0x05, 0xA3, 0x8A, 0xD5, 0x79, 0x86, 0xA8, + 0x30, 0xC6, 0x51, 0x4B, 0x1E, 0xA6, 0x27, 0xF6, 0x35, 0xD2, 0x6E, 0x24, + 0x16, 0x82, 0x5F, 0xDA, 0xE6, 0x75, 0xA2, 0xEF, 0x2C, 0xB2, 0x1C, 0x9F, + 0x5D, 0x6F, 0x80, 0x0A, 0x72, 0x44, 0x9B, 0x6C, 0x90, 0x0B, 0x5B, 0x33, + 0x7D, 0x5A, 0x52, 0xF3, 0x61, 0xA1, 0xF7, 0xB0, 0xD6, 0x3F, 0x7C, 0x6D, + 0xED, 0x14, 0xE0, 0xA5, 0x3D, 0x22, 0xB3, 0xF8, 0x89, 0xDE, 0x71, 0x1A, + 0xAF, 0xBA, 0xB5, 0x81 +}; + +static const uint8_t aria_is1[0x100] = +{ + 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, + 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, + 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB, 0x54, 0x7B, 0x94, 0x32, + 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E, + 0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, + 0x6D, 0x8B, 0xD1, 0x25, 0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92, 0x6C, 0x70, 0x48, 0x50, + 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84, + 0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, + 0xB8, 0xB3, 0x45, 0x06, 0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, + 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B, 0x3A, 0x91, 0x11, 0x41, + 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73, + 0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, + 0x1C, 0x75, 0xDF, 0x6E, 0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, + 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B, 0xFC, 0x56, 0x3E, 0x4B, + 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4, + 0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xEC, 0x5F, 0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, + 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF, 0xA0, 0xE0, 0x3B, 0x4D, + 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0C, 0x7D +}; + +static const uint8_t aria_is2[0x100] = +{ + 0x30, 0x68, 0x99, 0x1B, 0x87, 0xB9, 0x21, 0x78, 0x50, 0x39, 0xDB, 0xE1, + 0x72, 0x09, 0x62, 0x3C, 0x3E, 0x7E, 0x5E, 0x8E, 0xF1, 0xA0, 0xCC, 0xA3, + 0x2A, 0x1D, 0xFB, 0xB6, 0xD6, 0x20, 0xC4, 0x8D, 0x81, 0x65, 0xF5, 0x89, + 0xCB, 0x9D, 0x77, 0xC6, 0x57, 0x43, 0x56, 0x17, 0xD4, 0x40, 0x1A, 0x4D, + 0xC0, 0x63, 0x6C, 0xE3, 0xB7, 0xC8, 0x64, 0x6A, 0x53, 0xAA, 0x38, 0x98, + 0x0C, 0xF4, 0x9B, 0xED, 0x7F, 0x22, 0x76, 0xAF, 0xDD, 0x3A, 0x0B, 0x58, + 0x67, 0x88, 0x06, 0xC3, 0x35, 0x0D, 0x01, 0x8B, 0x8C, 0xC2, 0xE6, 0x5F, + 0x02, 0x24, 0x75, 0x93, 0x66, 0x1E, 0xE5, 0xE2, 0x54, 0xD8, 0x10, 0xCE, + 0x7A, 0xE8, 0x08, 0x2C, 0x12, 0x97, 0x32, 0xAB, 0xB4, 0x27, 0x0A, 0x23, + 0xDF, 0xEF, 0xCA, 0xD9, 0xB8, 0xFA, 0xDC, 0x31, 0x6B, 0xD1, 0xAD, 0x19, + 0x49, 0xBD, 0x51, 0x96, 0xEE, 0xE4, 0xA8, 0x41, 0xDA, 0xFF, 0xCD, 0x55, + 0x86, 0x36, 0xBE, 0x61, 0x52, 0xF8, 0xBB, 0x0E, 0x82, 0x48, 0x69, 0x9A, + 0xE0, 0x47, 0x9E, 0x5C, 0x04, 0x4B, 0x34, 0x15, 0x79, 0x26, 0xA7, 0xDE, + 0x29, 0xAE, 0x92, 0xD7, 0x84, 0xE9, 0xD2, 0xBA, 0x5D, 0xF3, 0xC5, 0xB0, + 0xBF, 0xA4, 0x3B, 0x71, 0x44, 0x46, 0x2B, 0xFC, 0xEB, 0x6F, 0xD5, 0xF6, + 0x14, 0xFE, 0x7C, 0x70, 0x5A, 0x7D, 0xFD, 0x2F, 0x18, 0x83, 0x16, 0xA5, + 0x91, 0x1F, 0x05, 0x95, 0x74, 0xA9, 0xC1, 0x5B, 0x4A, 0x85, 0x6D, 0x13, + 0x07, 0x4F, 0x4E, 0x45, 0xB2, 0x0F, 0xC9, 0x1C, 0xA6, 0xBC, 0xEC, 0x73, + 0x90, 0x7B, 0xCF, 0x59, 0x8F, 0xA1, 0xF9, 0x2D, 0xF2, 0xB1, 0x00, 0x94, + 0x37, 0x9F, 0xD0, 0x2E, 0x9C, 0x6E, 0x28, 0x3F, 0x80, 0xF0, 0x3D, 0xD3, + 0x25, 0x8A, 0xB5, 0xE7, 0x42, 0xB3, 0xC7, 0xEA, 0xF7, 0x4C, 0x11, 0x33, + 0x03, 0xA2, 0xAC, 0x60 +}; +// FO and FE are helpers for key schedule + +// r = FO( p, k ) ^ x + +static void aria_fo( uint32_t r[4], + const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) +{ + uint32_t a, b, c, d; + uint32_t t, u, v; + + a = p[0] ^ k[0]; + b = p[1] ^ k[1]; + c = p[2] ^ k[2]; + d = p[3] ^ k[3]; + + ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2, t, u, v ); + + r[0] = a ^ x[0]; + r[1] = b ^ x[1]; + r[2] = c ^ x[2]; + r[3] = d ^ x[3]; +} + +// r = FE( p, k ) ^ x + +static void aria_fe(uint32_t r[4], + const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) +{ + uint32_t a, b, c, d; + uint32_t t, u, v; + + a = p[0] ^ k[0]; + b = p[1] ^ k[1]; + c = p[2] ^ k[2]; + d = p[3] ^ k[3]; + + ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2, t, u, v ); + + r[0] = a ^ x[0]; + r[1] = b ^ x[1]; + r[2] = c ^ x[2]; + r[3] = d ^ x[3]; +} + +// Big endian 128-bit rotation: d = a ^ (b <<< n), used only in key setup. +// This is relatively slow since our implementation is geared towards +// little-endian targets and stores state in that order. + +static void aria_rot128(uint32_t r[4], const uint32_t a[4], + const uint32_t b[4], int n) +{ + int i, j, n1, n2; + uint32_t t, u; + + j = (n >> 5) & 3; // word offset + n1 = n & 0x1F; // bit offsets + n2 = 32 - n1; // n1 should be nonzero! + t = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); // big endian + for( i = 0; i < 4; i++ ) + { + j = (j + 1) & 3; // get next word, big endian + u = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); + t <<= n1; // rotate + if (n2 < 32) // intel rotate 32 bits = 0 bits.. + t |= u >> n2; + t = ARIA_FLIP1( ARIA_FLIP2( t ) ); // back to little endian + r[i] = a[i] ^ t; // store + t = u; // move to next word + } +} + +// Set encryption key + +int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, + const unsigned char *key, unsigned int keybits) +{ + // round constant masks + const uint32_t rc[3][4] = + { + { 0xB7C17C51, 0x940A2227, 0xE8AB13FE, 0xE06E9AFA }, + { 0xCC4AB16D, 0x20C8219E, 0xD5B128FF, 0xB0E25DEF }, + { 0x1D3792DB, 0x70E92621, 0x75972403, 0x0EC9E804 } + }; + + int i; + uint32_t w[4][4], *w2; + + if (keybits != 128 && keybits != 192 && keybits != 256) + return MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH; + + // W0 = KL + GET_UINT32_LE( w[0][0], key, 0 ); // copy key to W0 | W1 + GET_UINT32_LE( w[0][1], key, 4 ); + GET_UINT32_LE( w[0][2], key, 8 ); + GET_UINT32_LE( w[0][3], key, 12 ); + + memset(w[1], 0, 16); + if( keybits >= 192 ) + { + GET_UINT32_LE( w[1][0], key, 16 ); // 192 bit key + GET_UINT32_LE( w[1][1], key, 20 ); + } + if( keybits == 256 ) + { + GET_UINT32_LE( w[1][2], key, 24 ); // 256 bit key + GET_UINT32_LE( w[1][3], key, 28 ); + } + + i = (keybits - 128) >> 6; // index: 0, 1, 2 + ctx->nr = 12 + 2 * i; // no. rounds: 12, 14, 16 + + aria_fo( w[1], w[0], rc[i], w[1] ); // W1 = FO(W0, CK1) ^ KR + i = i < 2 ? i + 1 : 0; + aria_fe( w[2], w[1], rc[i], w[0] ); // W2 = FE(W1, CK2) ^ W0 + i = i < 2 ? i + 1 : 0; + aria_fo( w[3], w[2], rc[i], w[1] ); // W3 = FO(W2, CK3) ^ W1 + + for( i = 0; i < 4; i++ ) // create round keys + { + w2 = w[(i + 1) & 3]; + aria_rot128( ctx->rk[i ], w[i], w2, -19); + aria_rot128( ctx->rk[i + 4], w[i], w2, -31); + aria_rot128( ctx->rk[i + 8], w[i], w2, 61); + aria_rot128( ctx->rk[i + 12], w[i], w2, 31); + } + aria_rot128( ctx->rk[16], w[0], w[1], 19 ); + + return 0; +} + +// Set decryption key + +int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, + const unsigned char *key, unsigned int keybits) +{ + int i, j, k, ret; + uint32_t t, u, v; + + ret = mbedtls_aria_setkey_enc( ctx, key, keybits ); + if( ret != 0 ) + return ret; + + // flip the order of round keys + for( i = 0, j = ctx->nr; i < j; i++, j-- ) + { + for( k = 0; k < 4; k++ ) + { + t = ctx->rk[i][k]; + ctx->rk[i][k] = ctx->rk[j][k]; + ctx->rk[j][k] = t; + } + } + + // apply affine transform to middle keys + for (i = 1; i < ctx->nr; i++ ) + { + ARIA_A( ctx->rk[i][0], ctx->rk[i][1], ctx->rk[i][2], ctx->rk[i][3], + t, u, v ); + } + + return 0; +} + +// Encrypt a block + +int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ) +{ + int i; + + uint32_t a, b, c, d; + uint32_t t, u, v; + + ( (void) mode ); + + GET_UINT32_LE( a, input, 0 ); + GET_UINT32_LE( b, input, 4 ); + GET_UINT32_LE( c, input, 8 ); + GET_UINT32_LE( d, input, 12 ); + + i = 0; + while (1) + { + a ^= ctx->rk[i][0]; + b ^= ctx->rk[i][1]; + c ^= ctx->rk[i][2]; + d ^= ctx->rk[i][3]; + i++; + ARIA_SLA( a, b, c, d, + aria_sb1, aria_sb2, aria_is1, aria_is2, t, u, v ); + + a ^= ctx->rk[i][0]; + b ^= ctx->rk[i][1]; + c ^= ctx->rk[i][2]; + d ^= ctx->rk[i][3]; + i++; + if (i >= ctx->nr) + break; + + ARIA_SLA( a, b, c, d, + aria_is1, aria_is2, aria_sb1, aria_sb2, t, u, v ); + } + + // final substitution + + a = ctx->rk[i][0] ^ + ( (uint32_t) aria_is1[ a & 0xFF]) ^ + (((uint32_t) aria_is2[(a >> 8) & 0xFF]) << 8) ^ + (((uint32_t) aria_sb1[(a >> 16) & 0xFF]) << 16) ^ + (((uint32_t) aria_sb2[ a >> 24 ]) << 24); + + b = ctx->rk[i][1] ^ + ( (uint32_t) aria_is1[ b & 0xFF]) ^ + (((uint32_t) aria_is2[(b >> 8) & 0xFF]) << 8) ^ + (((uint32_t) aria_sb1[(b >> 16) & 0xFF]) << 16) ^ + (((uint32_t) aria_sb2[ b >> 24 ]) << 24); + + c = ctx->rk[i][2] ^ + ( (uint32_t) aria_is1[ c & 0xFF]) ^ + (((uint32_t) aria_is2[(c >> 8) & 0xFF]) << 8) ^ + (((uint32_t) aria_sb1[(c >> 16) & 0xFF]) << 16) ^ + (((uint32_t) aria_sb2[ c >> 24 ]) << 24); + + d = ctx->rk[i][3] ^ + ( (uint32_t) aria_is1[ d & 0xFF]) ^ + (((uint32_t) aria_is2[(d >> 8) & 0xFF]) << 8) ^ + (((uint32_t) aria_sb1[(d >> 16) & 0xFF]) << 16) ^ + (((uint32_t) aria_sb2[ d >> 24 ]) << 24); + + PUT_UINT32_LE( a, output, 0 ); + PUT_UINT32_LE( b, output, 4 ); + PUT_UINT32_LE( c, output, 8 ); + PUT_UINT32_LE( d, output, 12 ); + + return 0; +} + + + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/* + * ARIA-CBC buffer encryption/decryption + */ +int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + int i; + unsigned char temp[16]; + + if( length % 16 ) + return( MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH ); + + if( mode == MBEDTLS_ARIA_DECRYPT ) + { + while( length > 0 ) + { + memcpy( temp, input, 16 ); + mbedtls_aria_crypt_ecb( ctx, mode, input, output ); + + for( i = 0; i < 16; i++ ) + output[i] = (unsigned char)( output[i] ^ iv[i] ); + + memcpy( iv, temp, 16 ); + + input += 16; + output += 16; + length -= 16; + } + } + else + { + while( length > 0 ) + { + for( i = 0; i < 16; i++ ) + output[i] = (unsigned char)( input[i] ^ iv[i] ); + + mbedtls_aria_crypt_ecb( ctx, mode, output, output ); + memcpy( iv, output, 16 ); + + input += 16; + output += 16; + length -= 16; + } + } + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/* + * ARIA-CFB128 buffer encryption/decryption + */ +int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + int c; + size_t n = *iv_off; + + if( mode == MBEDTLS_ARIA_DECRYPT ) + { + while( length-- ) + { + if( n == 0 ) + mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, iv, iv ); + + c = *input++; + *output++ = (unsigned char)( c ^ iv[n] ); + iv[n] = (unsigned char) c; + + n = ( n + 1 ) & 0x0F; + } + } + else + { + while( length-- ) + { + if( n == 0 ) + mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, iv, iv ); + + iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ ); + + n = ( n + 1 ) & 0x0F; + } + } + + *iv_off = n; + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/* + * ARIA-CTR buffer encryption/decryption + */ +int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ) +{ + int c, i; + size_t n = *nc_off; + + while( length-- ) + { + if( n == 0 ) { + mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, nonce_counter, + stream_block ); + + for( i = 16; i > 0; i-- ) + if( ++nonce_counter[i - 1] != 0 ) + break; + } + c = *input++; + *output++ = (unsigned char)( c ^ stream_block[n] ); + + n = ( n + 1 ) & 0x0F; + } + + *nc_off = n; + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_CTR */ +#endif /* !MBEDTLS_ARIA_ALT */ + +#if defined(MBEDTLS_SELF_TEST) + +/* + * Checkup routine + */ + +int mbedtls_aria_self_test( int verbose ) +{ + // ECB test vectors from RFC 5794 + + const uint8_t aria_ecb_test_key[32] = // test key + { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // 128 bit + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // 192 bit + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F // 256 bit + }; + const uint8_t aria_ecb_test_pt[16] = // plaintext + { + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // same for all + 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF // key sizes + }; + const uint8_t aria_ecb_test_ct[3][16] = // ciphertext + { + { 0xD7, 0x18, 0xFB, 0xD6, 0xAB, 0x64, 0x4C, 0x73, // 128 bit + 0x9D, 0xA9, 0x5F, 0x3B, 0xE6, 0x45, 0x17, 0x78 } + , + { 0x26, 0x44, 0x9C, 0x18, 0x05, 0xDB, 0xE7, 0xAA, // 192 bit + 0x25, 0xA4, 0x68, 0xCE, 0x26, 0x3A, 0x9E, 0x79 } + , + { 0xF9, 0x2B, 0xD7, 0xC7, 0x9F, 0xB7, 0x2E, 0x2F, // 256 bit + 0x2B, 0x8F, 0x80, 0xC1, 0x97, 0x2D, 0x24, 0xFC } + }; + + int i; + uint8_t blk[16]; + mbedtls_aria_context ctx; + + for( i = 0; i < 3; i++ ) + { + // test encryption + if( verbose ) + printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i); + + mbedtls_aria_setkey_enc( &ctx, aria_ecb_test_key, 128 + 64 * i ); + mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, + aria_ecb_test_pt, blk ); + + if( memcmp( blk, aria_ecb_test_ct[i], 16 ) != 0 ) + { + if( verbose ) + printf( "failed\n" ); + return( 1 ); + } + if( verbose ) + printf( "passed\n" ); + + // test decryption + + if( verbose ) + printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i); + + mbedtls_aria_setkey_dec( &ctx, aria_ecb_test_key, 128 + 64 * i ); + mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, + aria_ecb_test_ct[i], blk ); + + if (memcmp( blk, aria_ecb_test_pt, 16 ) != 0) + { + if( verbose ) + printf( "failed\n" ); + return( 1 ); + } + if( verbose ) + printf( "passed\n" ); + } + printf("\n"); + + return( 0 ); +} + +#endif /* MBEDTLS_SELF_TEST */ + +#endif /* MBEDTLS_ARIA_C */ From 259fa60f6c430d8bd670afeba63a5c6a8df2c85d Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Thu, 30 Nov 2017 15:48:37 +0000 Subject: [PATCH 0134/1100] ARIA test vectors for CBC CFB CTR modes --- library/aria.c | 312 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 257 insertions(+), 55 deletions(-) diff --git a/library/aria.c b/library/aria.c index 0eb22ecc8f..da31f09d71 100644 --- a/library/aria.c +++ b/library/aria.c @@ -19,7 +19,6 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ - #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else @@ -623,80 +622,283 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, #if defined(MBEDTLS_SELF_TEST) +// Basic ARIA ECB test vectors from RFC 5794 + +static const uint8_t aria_test1_ecb_key[32] = // test key +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // 128 bit + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // 192 bit + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F // 256 bit +}; + +static const uint8_t aria_test1_ecb_pt[16] = // plaintext +{ + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // same for all + 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF // key sizes +}; + +static const uint8_t aria_test1_ecb_ct[3][16] = // ciphertext +{ + { 0xD7, 0x18, 0xFB, 0xD6, 0xAB, 0x64, 0x4C, 0x73, // 128 bit + 0x9D, 0xA9, 0x5F, 0x3B, 0xE6, 0x45, 0x17, 0x78 }, + { 0x26, 0x44, 0x9C, 0x18, 0x05, 0xDB, 0xE7, 0xAA, // 192 bit + 0x25, 0xA4, 0x68, 0xCE, 0x26, 0x3A, 0x9E, 0x79 }, + { 0xF9, 0x2B, 0xD7, 0xC7, 0x9F, 0xB7, 0x2E, 0x2F, // 256 bit + 0x2B, 0x8F, 0x80, 0xC1, 0x97, 0x2D, 0x24, 0xFC } +}; + +// Mode tests from "Test Vectors for ARIA" Version 1.0 +// http://210.104.33.10/ARIA/doc/ARIA-testvector-e.pdf + +#if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ + defined(MBEDTLS_CIPHER_MODE_CFB) || \ + defined(MBEDTLS_CIPHER_MODE_CTR)) + +static const uint8_t aria_test2_key[32] = +{ + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // 128 bit + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // 192 bit + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff // 256 bit +}; + +static const uint8_t aria_test2_iv[16] = +{ + 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 0x78, // same for all + 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 0xf0 +}; + +static const uint8_t aria_test2_pt[48] = +{ + 0x11, 0x11, 0x11, 0x11, 0xaa, 0xaa, 0xaa, 0xaa, // same for all + 0x11, 0x11, 0x11, 0x11, 0xbb, 0xbb, 0xbb, 0xbb, + 0x11, 0x11, 0x11, 0x11, 0xcc, 0xcc, 0xcc, 0xcc, + 0x11, 0x11, 0x11, 0x11, 0xdd, 0xdd, 0xdd, 0xdd, + 0x22, 0x22, 0x22, 0x22, 0xaa, 0xaa, 0xaa, 0xaa, + 0x22, 0x22, 0x22, 0x22, 0xbb, 0xbb, 0xbb, 0xbb, +}; + +#endif /* defined(MBEDTLS_CIPHER_MODE_CBC) || \ + defined(MBEDTLS_CIPHER_MODE_CFB) || \ + defined(MBEDTLS_CIPHER_MODE_CTR) */ + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +static const uint8_t aria_test2_cbc_ct[3][48] = // CBC ciphertxt +{ + { 0x49, 0xd6, 0x18, 0x60, 0xb1, 0x49, 0x09, 0x10, // 128-bit key + 0x9c, 0xef, 0x0d, 0x22, 0xa9, 0x26, 0x81, 0x34, + 0xfa, 0xdf, 0x9f, 0xb2, 0x31, 0x51, 0xe9, 0x64, + 0x5f, 0xba, 0x75, 0x01, 0x8b, 0xdb, 0x15, 0x38, + 0xb5, 0x33, 0x34, 0x63, 0x4b, 0xbf, 0x7d, 0x4c, + 0xd4, 0xb5, 0x37, 0x70, 0x33, 0x06, 0x0c, 0x15 }, + { 0xaf, 0xe6, 0xcf, 0x23, 0x97, 0x4b, 0x53, 0x3c, // 192-bit key + 0x67, 0x2a, 0x82, 0x62, 0x64, 0xea, 0x78, 0x5f, + 0x4e, 0x4f, 0x7f, 0x78, 0x0d, 0xc7, 0xf3, 0xf1, + 0xe0, 0x96, 0x2b, 0x80, 0x90, 0x23, 0x86, 0xd5, + 0x14, 0xe9, 0xc3, 0xe7, 0x72, 0x59, 0xde, 0x92, + 0xdd, 0x11, 0x02, 0xff, 0xab, 0x08, 0x6c, 0x1e }, + { 0x52, 0x3a, 0x8a, 0x80, 0x6a, 0xe6, 0x21, 0xf1, // 256-bit key + 0x55, 0xfd, 0xd2, 0x8d, 0xbc, 0x34, 0xe1, 0xab, + 0x7b, 0x9b, 0x42, 0x43, 0x2a, 0xd8, 0xb2, 0xef, + 0xb9, 0x6e, 0x23, 0xb1, 0x3f, 0x0a, 0x6e, 0x52, + 0xf3, 0x61, 0x85, 0xd5, 0x0a, 0xd0, 0x02, 0xc5, + 0xf6, 0x01, 0xbe, 0xe5, 0x49, 0x3f, 0x11, 0x8b } +}; +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +static const uint8_t aria_test2_cfb_ct[3][48] = // CFB ciphertxt +{ + { 0x37, 0x20, 0xe5, 0x3b, 0xa7, 0xd6, 0x15, 0x38, // 128-bit key + 0x34, 0x06, 0xb0, 0x9f, 0x0a, 0x05, 0xa2, 0x00, + 0xc0, 0x7c, 0x21, 0xe6, 0x37, 0x0f, 0x41, 0x3a, + 0x5d, 0x13, 0x25, 0x00, 0xa6, 0x82, 0x85, 0x01, + 0x7c, 0x61, 0xb4, 0x34, 0xc7, 0xb7, 0xca, 0x96, + 0x85, 0xa5, 0x10, 0x71, 0x86, 0x1e, 0x4d, 0x4b }, + { 0x41, 0x71, 0xf7, 0x19, 0x2b, 0xf4, 0x49, 0x54, // 192-bit key + 0x94, 0xd2, 0x73, 0x61, 0x29, 0x64, 0x0f, 0x5c, + 0x4d, 0x87, 0xa9, 0xa2, 0x13, 0x66, 0x4c, 0x94, + 0x48, 0x47, 0x7c, 0x6e, 0xcc, 0x20, 0x13, 0x59, + 0x8d, 0x97, 0x66, 0x95, 0x2d, 0xd8, 0xc3, 0x86, + 0x8f, 0x17, 0xe3, 0x6e, 0xf6, 0x6f, 0xd8, 0x4b }, + { 0x26, 0x83, 0x47, 0x05, 0xb0, 0xf2, 0xc0, 0xe2, // 256-bit key + 0x58, 0x8d, 0x4a, 0x7f, 0x09, 0x00, 0x96, 0x35, + 0xf2, 0x8b, 0xb9, 0x3d, 0x8c, 0x31, 0xf8, 0x70, + 0xec, 0x1e, 0x0b, 0xdb, 0x08, 0x2b, 0x66, 0xfa, + 0x40, 0x2d, 0xd9, 0xc2, 0x02, 0xbe, 0x30, 0x0c, + 0x45, 0x17, 0xd1, 0x96, 0xb1, 0x4d, 0x4c, 0xe1 } +}; +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertxt +{ + { 0xac, 0x5d, 0x7d, 0xe8, 0x05, 0xa0, 0xbf, 0x1c, // 128-bit key + 0x57, 0xc8, 0x54, 0x50, 0x1a, 0xf6, 0x0f, 0xa1, + 0x14, 0x97, 0xe2, 0xa3, 0x45, 0x19, 0xde, 0xa1, + 0x56, 0x9e, 0x91, 0xe5, 0xb5, 0xcc, 0xae, 0x2f, + 0xf3, 0xbf, 0xa1, 0xbf, 0x97, 0x5f, 0x45, 0x71, + 0xf4, 0x8b, 0xe1, 0x91, 0x61, 0x35, 0x46, 0xc3 }, + { 0x08, 0x62, 0x5c, 0xa8, 0xfe, 0x56, 0x9c, 0x19, // 192-bit key + 0xba, 0x7a, 0xf3, 0x76, 0x0a, 0x6e, 0xd1, 0xce, + 0xf4, 0xd1, 0x99, 0x26, 0x3e, 0x99, 0x9d, 0xde, + 0x14, 0x08, 0x2d, 0xbb, 0xa7, 0x56, 0x0b, 0x79, + 0xa4, 0xc6, 0xb4, 0x56, 0xb8, 0x70, 0x7d, 0xce, + 0x75, 0x1f, 0x98, 0x54, 0xf1, 0x88, 0x93, 0xdf }, + { 0x30, 0x02, 0x6c, 0x32, 0x96, 0x66, 0x14, 0x17, // 256-bit key + 0x21, 0x17, 0x8b, 0x99, 0xc0, 0xa1, 0xf1, 0xb2, + 0xf0, 0x69, 0x40, 0x25, 0x3f, 0x7b, 0x30, 0x89, + 0xe2, 0xa3, 0x0e, 0xa8, 0x6a, 0xa3, 0xc8, 0x8f, + 0x59, 0x40, 0xf0, 0x5a, 0xd7, 0xee, 0x41, 0xd7, + 0x13, 0x47, 0xbb, 0x72, 0x61, 0xe3, 0x48, 0xf1 } +}; +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + /* * Checkup routine */ +#define ARIA_SELF_TEST_IF_FAIL \ + { \ + if( verbose ) \ + printf( "failed\n" ); \ + return( 1 ); \ + } else { \ + if( verbose ) \ + printf( "passed\n" ); \ + } + int mbedtls_aria_self_test( int verbose ) { - // ECB test vectors from RFC 5794 - - const uint8_t aria_ecb_test_key[32] = // test key - { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // 128 bit - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, // 192 bit - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F // 256 bit - }; - const uint8_t aria_ecb_test_pt[16] = // plaintext - { - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // same for all - 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF // key sizes - }; - const uint8_t aria_ecb_test_ct[3][16] = // ciphertext - { - { 0xD7, 0x18, 0xFB, 0xD6, 0xAB, 0x64, 0x4C, 0x73, // 128 bit - 0x9D, 0xA9, 0x5F, 0x3B, 0xE6, 0x45, 0x17, 0x78 } - , - { 0x26, 0x44, 0x9C, 0x18, 0x05, 0xDB, 0xE7, 0xAA, // 192 bit - 0x25, 0xA4, 0x68, 0xCE, 0x26, 0x3A, 0x9E, 0x79 } - , - { 0xF9, 0x2B, 0xD7, 0xC7, 0x9F, 0xB7, 0x2E, 0x2F, // 256 bit - 0x2B, 0x8F, 0x80, 0xC1, 0x97, 0x2D, 0x24, 0xFC } - }; - int i; uint8_t blk[16]; mbedtls_aria_context ctx; +#if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ + defined(MBEDTLS_CIPHER_MODE_CFB) || \ + defined(MBEDTLS_CIPHER_MODE_CTR)) + size_t j; + uint8_t buf[48], iv[16]; +#endif + + // Test set 1 for( i = 0; i < 3; i++ ) { - // test encryption + // test ECB encryption if( verbose ) printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i); - - mbedtls_aria_setkey_enc( &ctx, aria_ecb_test_key, 128 + 64 * i ); + mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, - aria_ecb_test_pt, blk ); - - if( memcmp( blk, aria_ecb_test_ct[i], 16 ) != 0 ) - { - if( verbose ) - printf( "failed\n" ); - return( 1 ); - } - if( verbose ) - printf( "passed\n" ); - - // test decryption + aria_test1_ecb_pt, blk ); + if( memcmp( blk, aria_test1_ecb_ct[i], 16 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + // test ECB decryption if( verbose ) printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i); - - mbedtls_aria_setkey_dec( &ctx, aria_ecb_test_key, 128 + 64 * i ); + mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, - aria_ecb_test_ct[i], blk ); - - if (memcmp( blk, aria_ecb_test_pt, 16 ) != 0) - { - if( verbose ) - printf( "failed\n" ); - return( 1 ); - } - if( verbose ) - printf( "passed\n" ); + aria_test1_ecb_ct[i], blk ); + if (memcmp( blk, aria_test1_ecb_pt, 16 ) != 0) + ARIA_SELF_TEST_IF_FAIL; } - printf("\n"); + if( verbose ) + printf("\n"); + + // Test set 2 + +#if defined(MBEDTLS_CIPHER_MODE_CBC) + for( i = 0; i < 3; i++ ) + { + // Test CBC encryption + if( verbose ) + printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i); + mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); + memcpy( iv, aria_test2_iv, 16 ); + memset( buf, 0x55, sizeof(buf) ); + mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, iv, + aria_test2_pt, buf ); + if( memcmp( buf, aria_test2_cbc_ct[i], 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + + // Test CBC decryption + if( verbose ) + printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i); + mbedtls_aria_setkey_dec( &ctx, aria_test2_key, 128 + 64 * i ); + memcpy( iv, aria_test2_iv, 16 ); + memset( buf, 0xAA, sizeof(buf) ); + mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, 48, iv, + aria_test2_cbc_ct[i], buf ); + if( memcmp( buf, aria_test2_pt, 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + } + if( verbose ) + printf("\n"); + +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) + for( i = 0; i < 3; i++ ) + { + // Test CFB encryption + if( verbose ) + printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i); + mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); + memcpy( iv, aria_test2_iv, 16 ); + memset( buf, 0x55, sizeof(buf) ); + j = 0; + mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, &j, iv, + aria_test2_pt, buf ); + if( memcmp( buf, aria_test2_cfb_ct[i], 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + + // Test CFB decryption + if( verbose ) + printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i); + mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); + memcpy( iv, aria_test2_iv, 16 ); + memset( buf, 0xAA, sizeof(buf) ); + j = 0; + mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, 48, &j, + iv, aria_test2_cfb_ct[i], buf ); + if( memcmp( buf, aria_test2_pt, 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + } + if( verbose ) + printf("\n"); +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) + for( i = 0; i < 3; i++ ) + { + // Test CTR encryption + if( verbose ) + printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i); + mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); + memset( iv, 0, 16 ); // IV = 0 + memset( buf, 0x55, sizeof(buf) ); + j = 0; + mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, + aria_test2_pt, buf ); + if( memcmp( buf, aria_test2_ctr_ct[i], 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + + // Test CTR decryption + if( verbose ) + printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i); + mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); + memset( iv, 0, 16 ); // IV = 0 + memset( buf, 0xAA, sizeof(buf) ); + j = 0; + mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, + aria_test2_ctr_ct[i], buf ); + if( memcmp( buf, aria_test2_pt, 48 ) != 0 ) + ARIA_SELF_TEST_IF_FAIL; + } + if( verbose ) + printf("\n"); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ return( 0 ); } From 3c0b53b2b0c88e289e6d5831e9c6d9b3c1c73b42 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Thu, 30 Nov 2017 16:00:34 +0000 Subject: [PATCH 0135/1100] ARIA build integration --- include/mbedtls/config.h | 9 +++++++++ include/mbedtls/error.h | 1 + library/CMakeLists.txt | 1 + library/Makefile | 1 + library/aria.c | 28 +++++++++++++++------------- library/error.c | 11 +++++++++++ library/version_features.c | 3 +++ programs/test/selftest.c | 4 ++++ scripts/generate_errors.pl | 2 +- 9 files changed, 46 insertions(+), 14 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 1c98558ebc..8c217544bb 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1797,6 +1797,15 @@ */ #define MBEDTLS_CAMELLIA_C +/** + * \def MBEDTLS_ARIA_C + * + * Enable the ARIA block cipher. + * + * Module: library/aria.c + */ +#define MBEDTLS_ARIA_C + /** * \def MBEDTLS_CCM_C * diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 8b4d3a8755..5bdb6bb4a3 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -63,6 +63,7 @@ * CTR_DBRG 4 0x0034-0x003A * ENTROPY 3 0x003C-0x0040 0x003D-0x003F * NET 11 0x0042-0x0052 0x0043-0x0045 + * ARIA 1 0x005C-0x005E * ASN1 7 0x0060-0x006C * CMAC 1 0x007A-0x007A * PBKDF2 1 0x007C-0x007C diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 02ccea8bc9..96992c1489 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -6,6 +6,7 @@ set(src_crypto aes.c aesni.c arc4.c + aria.c asn1parse.c asn1write.c base64.c diff --git a/library/Makefile b/library/Makefile index 65a102f3a1..6420281808 100644 --- a/library/Makefile +++ b/library/Makefile @@ -47,6 +47,7 @@ endif OBJS_CRYPTO= aes.o aesni.o arc4.o \ asn1parse.o asn1write.o base64.o \ bignum.o blowfish.o camellia.o \ + aria.o \ ccm.o cipher.o cipher_wrap.o \ cmac.o ctr_drbg.o des.o \ dhm.o ecdh.o ecdsa.o \ diff --git a/library/aria.c b/library/aria.c index da31f09d71..9121d8fb23 100644 --- a/library/aria.c +++ b/library/aria.c @@ -651,10 +651,8 @@ static const uint8_t aria_test1_ecb_ct[3][16] = // ciphertext // Mode tests from "Test Vectors for ARIA" Version 1.0 // http://210.104.33.10/ARIA/doc/ARIA-testvector-e.pdf -#if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ - defined(MBEDTLS_CIPHER_MODE_CFB) || \ +#if (defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB) || \ defined(MBEDTLS_CIPHER_MODE_CTR)) - static const uint8_t aria_test2_key[32] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // 128 bit @@ -663,12 +661,6 @@ static const uint8_t aria_test2_key[32] = 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff // 256 bit }; -static const uint8_t aria_test2_iv[16] = -{ - 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 0x78, // same for all - 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 0xf0 -}; - static const uint8_t aria_test2_pt[48] = { 0x11, 0x11, 0x11, 0x11, 0xaa, 0xaa, 0xaa, 0xaa, // same for all @@ -678,10 +670,15 @@ static const uint8_t aria_test2_pt[48] = 0x22, 0x22, 0x22, 0x22, 0xaa, 0xaa, 0xaa, 0xaa, 0x22, 0x22, 0x22, 0x22, 0xbb, 0xbb, 0xbb, 0xbb, }; +#endif -#endif /* defined(MBEDTLS_CIPHER_MODE_CBC) || \ - defined(MBEDTLS_CIPHER_MODE_CFB) || \ - defined(MBEDTLS_CIPHER_MODE_CTR) */ +#if (defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB)) +static const uint8_t aria_test2_iv[16] = +{ + 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 0x78, // same for CBC, CFB + 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 0xf0 // CTR has zero IV +}; +#endif #if defined(MBEDTLS_CIPHER_MODE_CBC) static const uint8_t aria_test2_cbc_ct[3][48] = // CBC ciphertxt @@ -774,10 +771,15 @@ int mbedtls_aria_self_test( int verbose ) int i; uint8_t blk[16]; mbedtls_aria_context ctx; + +#if (defined(MBEDTLS_CIPHER_MODE_CFB) || \ + defined(MBEDTLS_CIPHER_MODE_CTR)) + size_t j; +#endif + #if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ defined(MBEDTLS_CIPHER_MODE_CFB) || \ defined(MBEDTLS_CIPHER_MODE_CTR)) - size_t j; uint8_t buf[48], iv[16]; #endif diff --git a/library/error.c b/library/error.c index 0292480aee..16680775fb 100644 --- a/library/error.c +++ b/library/error.c @@ -65,6 +65,10 @@ #include "mbedtls/camellia.h" #endif +#if defined(MBEDTLS_ARIA_C) +#include "mbedtls/aria.h" +#endif + #if defined(MBEDTLS_CCM_C) #include "mbedtls/ccm.h" #endif @@ -642,6 +646,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CAMELLIA - Camellia hardware accelerator failed" ); #endif /* MBEDTLS_CAMELLIA_C */ +#if defined(MBEDTLS_ARIA_C) + if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH) ) + mbedtls_snprintf( buf, buflen, "ARIA - Invalid key length" ); + if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH) ) + mbedtls_snprintf( buf, buflen, "ARIA - Invalid data input length" ); +#endif /* MBEDTLS_ARIA_C */ + #if defined(MBEDTLS_CCM_C) if( use_ret == -(MBEDTLS_ERR_CCM_BAD_INPUT) ) mbedtls_snprintf( buf, buflen, "CCM - Bad input parameters to the function" ); diff --git a/library/version_features.c b/library/version_features.c index da47e3d753..3b1319ef11 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -525,6 +525,9 @@ static const char *features[] = { #if defined(MBEDTLS_CAMELLIA_C) "MBEDTLS_CAMELLIA_C", #endif /* MBEDTLS_CAMELLIA_C */ +#if defined(MBEDTLS_ARIA_C) + "MBEDTLS_ARIA_C", +#endif /* MBEDTLS_ARIA_C */ #if defined(MBEDTLS_CCM_C) "MBEDTLS_CCM_C", #endif /* MBEDTLS_CCM_C */ diff --git a/programs/test/selftest.c b/programs/test/selftest.c index 72a37342fd..019071ba40 100644 --- a/programs/test/selftest.c +++ b/programs/test/selftest.c @@ -44,6 +44,7 @@ #include "mbedtls/des.h" #include "mbedtls/aes.h" #include "mbedtls/camellia.h" +#include "mbedtls/aria.h" #include "mbedtls/base64.h" #include "mbedtls/bignum.h" #include "mbedtls/rsa.h" @@ -225,6 +226,9 @@ const selftest_t selftests[] = #if defined(MBEDTLS_CAMELLIA_C) {"camellia", mbedtls_camellia_self_test}, #endif +#if defined(MBEDTLS_ARIA_C) + {"aria", mbedtls_aria_self_test}, +#endif #if defined(MBEDTLS_CTR_DRBG_C) {"ctr_drbg", mbedtls_ctr_drbg_self_test}, #endif diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index 59618d4aa7..95ec51211a 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -29,7 +29,7 @@ if( @ARGV ) { my $error_format_file = $data_dir.'/error.fmt'; -my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH +my @low_level_modules = qw( AES ARC4 ARIA ASN1 BASE64 BIGNUM BLOWFISH CAMELLIA CCM CMAC CTR_DRBG DES ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 NET OID PADLOCK PBKDF2 RIPEMD160 From 6ba68d4a3b421a6b6a2f38a72a7a00ff3ebd598d Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Fri, 1 Dec 2017 14:26:21 +0000 Subject: [PATCH 0136/1100] ARIA init and free --- library/aria.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/library/aria.c b/library/aria.c index 9121d8fb23..0e2c23a259 100644 --- a/library/aria.c +++ b/library/aria.c @@ -125,7 +125,7 @@ ta = ARIA_FLIP2( ta ) ^ tc ^ rc; \ tb = ARIA_FLIP2( rc ) ^ ARIA_FLIP1( rd ); \ tc ^= ARIA_FLIP2( ra ); \ - rb ^= ta^ tb; \ + rb ^= ta ^ tb; \ tb = ARIA_FLIP1( tb ) ^ ta; \ ra ^= ARIA_FLIP2( tb ); \ ta = ARIA_FLIP1( ta ); \ @@ -478,7 +478,19 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, return 0; } +void mbedtls_aria_init( mbedtls_aria_context *ctx ) +{ + memset( ctx, 0, sizeof( mbedtls_aria_context ) ); +} +void mbedtls_aria_free( mbedtls_aria_context *ctx ) +{ + if( ctx == NULL ) + return; + + // compiler can't remove this since this is not a static function + memset( ctx, 0, sizeof( mbedtls_aria_context ) ); +} #if defined(MBEDTLS_CIPHER_MODE_CBC) /* @@ -772,9 +784,8 @@ int mbedtls_aria_self_test( int verbose ) uint8_t blk[16]; mbedtls_aria_context ctx; -#if (defined(MBEDTLS_CIPHER_MODE_CFB) || \ - defined(MBEDTLS_CIPHER_MODE_CTR)) - size_t j; +#if (defined(MBEDTLS_CIPHER_MODE_CFB) || defined(MBEDTLS_CIPHER_MODE_CTR)) + size_t j; #endif #if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ From 8df81e029f0f1be2dda67b97ed56739d3a1a34d7 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Fri, 1 Dec 2017 14:26:40 +0000 Subject: [PATCH 0137/1100] Test suite for ARIA --- tests/CMakeLists.txt | 1 + tests/Makefile | 5 + tests/suites/test_suite_aria.data | 95 ++++++++ tests/suites/test_suite_aria.function | 318 ++++++++++++++++++++++++++ 4 files changed, 419 insertions(+) create mode 100644 tests/suites/test_suite_aria.data create mode 100644 tests/suites/test_suite_aria.function diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 16e19a9275..c85d3a2d8f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -104,6 +104,7 @@ add_test_suite(version) add_test_suite(xtea) add_test_suite(x509parse) add_test_suite(x509write) +add_test_suite(aria) # Make data_files available in an out-of-source build if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/Makefile b/tests/Makefile index 4787f25085..1e9b8aa473 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -50,6 +50,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ + test_suite_aria$(EXEXT) \ test_suite_cmac$(EXEXT) \ test_suite_cipher.aes$(EXEXT) \ test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ @@ -437,6 +438,10 @@ test_suite_version$(EXEXT): test_suite_version.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_aria$(EXEXT): test_suite_aria.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + clean: ifndef WINDOWS rm -f $(APPS) *.c diff --git a/tests/suites/test_suite_aria.data b/tests/suites/test_suite_aria.data new file mode 100644 index 0000000000..46c6eccc23 --- /dev/null +++ b/tests/suites/test_suite_aria.data @@ -0,0 +1,95 @@ +ARIA-128-ECB Encrypt - RFC 5794 +aria_encrypt_ecb:"000102030405060708090a0b0c0d0e0f":"00112233445566778899aabbccddeeff":"d718fbd6ab644c739da95f3be6451778":0 + +ARIA-128-ECB Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f":"d718fbd6ab644c739da95f3be6451778":"00112233445566778899aabbccddeeff":0 + +ARIA-192-ECB Encrypt - RFC 5794 +aria_encrypt_ecb:"000102030405060708090a0b0c0d0e0f1011121314151617":"00112233445566778899aabbccddeeff":"26449c1805dbe7aa25a468ce263a9e79":0 + +ARIA-192-ECB Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f1011121314151617":"26449c1805dbe7aa25a468ce263a9e79":"00112233445566778899aabbccddeeff":0 + +ARIA-256-ECB_Encrypt - RFC 5794 +aria_encrypt_ecb:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"00112233445566778899aabbccddeeff":"f92bd7c79fb72e2f2b8f80c1972d24fc":0 + +ARIA-256-ECB_Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"f92bd7c79fb72e2f2b8f80c1972d24fc":"00112233445566778899aabbccddeeff":0 + +ARIA-128-ECB Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f":"d718fbd6ab644c739da95f3be6451778":"00112233445566778899aabbccddeeff":0 + +ARIA-192-ECB Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f1011121314151617":"26449c1805dbe7aa25a468ce263a9e79":"00112233445566778899aabbccddeeff":0 + +ARIA-256-ECB Decrypt - RFC 5794 +aria_decrypt_ecb:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"f92bd7c79fb72e2f2b8f80c1972d24fc":"00112233445566778899aabbccddeeff":0 + +ARIA-128-ECB Encrypt - Official Test Vectors 1.0 +aria_encrypt_ecb:"00112233445566778899aabbccddeeff":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"c6ecd08e22c30abdb215cf74e2075e6e29ccaac63448708d331b2f816c51b17d9e133d1528dbf0af5787c7f3a3f5c2bf6b6f345907a3055612ce072ff54de7d788424da6e8ccfe8172b391be499354165665ba7864917000a6eeb2ecb4a698edfc7887e7f556377614ab0a282293e6d884dbb84206cdb16ed1754e77a1f243fd086953f752cc1e46c7c794ae85537dcaec8dd721f55c93b6edfe2adea43873e8":0 + +ARIA-128-ECB Decrypt - Official Test Vectors 1.0 +aria_decrypt_ecb:"00112233445566778899aabbccddeeff":"c6ecd08e22c30abdb215cf74e2075e6e29ccaac63448708d331b2f816c51b17d9e133d1528dbf0af5787c7f3a3f5c2bf6b6f345907a3055612ce072ff54de7d788424da6e8ccfe8172b391be499354165665ba7864917000a6eeb2ecb4a698edfc7887e7f556377614ab0a282293e6d884dbb84206cdb16ed1754e77a1f243fd086953f752cc1e46c7c794ae85537dcaec8dd721f55c93b6edfe2adea43873e8":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-192-ECB Encrypt - Official Test Vectors 1.0 +aria_encrypt_ecb:"00112233445566778899aabbccddeeff0011223344556677":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"8d1470625f59ebacb0e55b534b3e462b5f23d33bff78f46c3c15911f4a21809aaccad80b4bda915aa9dae6bcebe06a6c83f77fd5391acfe61de2f646b5d447edbfd5bb49b12fbb9145b227895a757b2af1f7188734863d7b8b6ede5a5b2f06a0a233c8523d2db778fb31b0e311f32700152f33861e9d040c83b5eb40cd88ea49975709dc629365a189f78a3ec40345fc6a5a307a8f9a4413091e007eca5645a0":0 + +ARIA-192-ECB Decrypt - Official Test Vectors 1.0 +aria_decrypt_ecb:"00112233445566778899aabbccddeeff0011223344556677":"8d1470625f59ebacb0e55b534b3e462b5f23d33bff78f46c3c15911f4a21809aaccad80b4bda915aa9dae6bcebe06a6c83f77fd5391acfe61de2f646b5d447edbfd5bb49b12fbb9145b227895a757b2af1f7188734863d7b8b6ede5a5b2f06a0a233c8523d2db778fb31b0e311f32700152f33861e9d040c83b5eb40cd88ea49975709dc629365a189f78a3ec40345fc6a5a307a8f9a4413091e007eca5645a0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-256-ECB Encrypt - Official Test Vectors 1.0 +aria_encrypt_ecb:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"58a875e6044ad7fffa4f58420f7f442d8e191016f28e79aefc01e204773280d7018e5f7a938ec30711719953bae86542cd7ebc752474c1a5f6eaaace2a7e29462ee7dfa5afdb84177ead95ccd4b4bb6e1ed17b9534cff0a5fc2941429cfee2ee49c7adbeb7e9d1b0d2a8531d942079596a27ed79f5b1dd13ecd604b07a48885a3afa0627a0e4e60a3c703af292f1baa77b702f16c54aa74bc727ea95c7468b00":0 + +ARIA-256-ECB Decrypt - Official Test Vectors 1.0 +aria_decrypt_ecb:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"58a875e6044ad7fffa4f58420f7f442d8e191016f28e79aefc01e204773280d7018e5f7a938ec30711719953bae86542cd7ebc752474c1a5f6eaaace2a7e29462ee7dfa5afdb84177ead95ccd4b4bb6e1ed17b9534cff0a5fc2941429cfee2ee49c7adbeb7e9d1b0d2a8531d942079596a27ed79f5b1dd13ecd604b07a48885a3afa0627a0e4e60a3c703af292f1baa77b702f16c54aa74bc727ea95c7468b00":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-128-CBC Encrypt - Official Test Vectors 1.0 +aria_encrypt_cbc:"00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"49d61860b14909109cef0d22a9268134fadf9fb23151e9645fba75018bdb1538b53334634bbf7d4cd4b5377033060c155fe3948ca75de1031e1d85619e0ad61eb419a866b3c2dbfd10a4ed18b22149f75897f0b8668b0c1c542c687778835fb7cd46e45f85eaa7072437dd9fa6793d6f8d4ccefc4eb1ac641ac1bd30b18c6d64c49bca137eb21c2e04da62712ca2b4f540c57112c38791852cfac7a5d19ed83a":0 + +ARIA-128-CBC Decrypt - Official Test Vectors 1.0 +aria_decrypt_cbc:"00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"49d61860b14909109cef0d22a9268134fadf9fb23151e9645fba75018bdb1538b53334634bbf7d4cd4b5377033060c155fe3948ca75de1031e1d85619e0ad61eb419a866b3c2dbfd10a4ed18b22149f75897f0b8668b0c1c542c687778835fb7cd46e45f85eaa7072437dd9fa6793d6f8d4ccefc4eb1ac641ac1bd30b18c6d64c49bca137eb21c2e04da62712ca2b4f540c57112c38791852cfac7a5d19ed83a":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-192-CBC Encrypt - Official Test Vectors 1.0 +aria_encrypt_cbc:"00112233445566778899aabbccddeeff0011223344556677":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"afe6cf23974b533c672a826264ea785f4e4f7f780dc7f3f1e0962b80902386d514e9c3e77259de92dd1102ffab086c1ea52a71260db5920a83295c25320e421147ca45d532f327b856ea947cd2196ae2e040826548b4c891b0ed0ca6e714dbc4631998d548110d666b3d54c2a091955c6f05beb4f62309368696c9791fc4c551564a2637f194346ec45fbca6c72a5b4612e208d531d6c34cc5c64eac6bd0cf8c":0 + +ARIA-192-CBC Decrypt - Official Test Vectors 1.0 +aria_decrypt_cbc:"00112233445566778899aabbccddeeff0011223344556677":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"afe6cf23974b533c672a826264ea785f4e4f7f780dc7f3f1e0962b80902386d514e9c3e77259de92dd1102ffab086c1ea52a71260db5920a83295c25320e421147ca45d532f327b856ea947cd2196ae2e040826548b4c891b0ed0ca6e714dbc4631998d548110d666b3d54c2a091955c6f05beb4f62309368696c9791fc4c551564a2637f194346ec45fbca6c72a5b4612e208d531d6c34cc5c64eac6bd0cf8c":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-256-CBC Encrypt - Official Test Vectors 1.0 +aria_encrypt_cbc:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"523a8a806ae621f155fdd28dbc34e1ab7b9b42432ad8b2efb96e23b13f0a6e52f36185d50ad002c5f601bee5493f118b243ee2e313642bffc3902e7b2efd9a12fa682edd2d23c8b9c5f043c18b17c1ec4b5867918270fbec1027c19ed6af833da5d620994668ca22f599791d292dd6273b2959082aafb7a996167cce1eec5f0cfd15f610d87e2dda9ba68ce1260ca54b222491418374294e7909b1e8551cd8de":0 + +ARIA-256-CBC Decrypt - Official Test Vectors 1.0 +aria_decrypt_cbc:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"523a8a806ae621f155fdd28dbc34e1ab7b9b42432ad8b2efb96e23b13f0a6e52f36185d50ad002c5f601bee5493f118b243ee2e313642bffc3902e7b2efd9a12fa682edd2d23c8b9c5f043c18b17c1ec4b5867918270fbec1027c19ed6af833da5d620994668ca22f599791d292dd6273b2959082aafb7a996167cce1eec5f0cfd15f610d87e2dda9ba68ce1260ca54b222491418374294e7909b1e8551cd8de":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-128-CTR Encrypt - Official Test Vectors 1.0 +aria_encrypt_ctr:"00112233445566778899aabbccddeeff":"00000000000000000000000000000000":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"ac5d7de805a0bf1c57c854501af60fa11497e2a34519dea1569e91e5b5ccae2ff3bfa1bf975f4571f48be191613546c3911163c085f871f0e7ae5f2a085b81851c2a3ddf20ecb8fa51901aec8ee4ba32a35dab67bb72cd9140ad188a967ac0fbbdfa94ea6cce47dcf8525ab5a814cfeb2bb60ee2b126e2d9d847c1a9e96f9019e3e6a7fe40d3829afb73db1cc245646addb62d9b907baaafbe46a73dbc131d3d":0 + +ARIA-192-CTR Encrypt - Official Test Vectors 1.0 +aria_encrypt_ctr:"00112233445566778899aabbccddeeff0011223344556677":"00000000000000000000000000000000":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"08625ca8fe569c19ba7af3760a6ed1cef4d199263e999dde14082dbba7560b79a4c6b456b8707dce751f9854f18893dfdb3f4e5afa539733e6f1e70b98ba37891f8f81e95df8efc26c7ce043504cb18958b865e4e316cd2aa1c97f31bf23dc046ef326b95a692a191ba0f2a41c5fe9ae070f236ff7078e703b42666caafbdd20bad74ac4c20c0f46c7ca24c151716575c947da16c90cfe1bf217a41cfebe7531":0 + +ARIA-192-CTR Decrypt - Official Test Vectors 1.0 +aria_decrypt_ctr:"00112233445566778899aabbccddeeff0011223344556677":"00000000000000000000000000000000":"08625ca8fe569c19ba7af3760a6ed1cef4d199263e999dde14082dbba7560b79a4c6b456b8707dce751f9854f18893dfdb3f4e5afa539733e6f1e70b98ba37891f8f81e95df8efc26c7ce043504cb18958b865e4e316cd2aa1c97f31bf23dc046ef326b95a692a191ba0f2a41c5fe9ae070f236ff7078e703b42666caafbdd20bad74ac4c20c0f46c7ca24c151716575c947da16c90cfe1bf217a41cfebe7531":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-256-CTR Encrypt - Official Test Vectors 1.0 +aria_encrypt_ctr:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"00000000000000000000000000000000":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"30026c329666141721178b99c0a1f1b2f06940253f7b3089e2a30ea86aa3c88f5940f05ad7ee41d71347bb7261e348f18360473fdf7d4e7723bffb4411cc13f6cdd89f3bc7b9c768145022c7a74f14d7c305cd012a10f16050c23f1ae5c23f45998d13fbaa041e51619577e0772764896a5d4516d8ffceb3bf7e05f613edd9a60cdcedaff9cfcaf4e00d445a54334f73ab2cad944e51d266548e61c6eb0aa1cd":0 + +ARIA-256-CTR Decrypt - Official Test Vectors 1.0 +aria_decrypt_ctr:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"00000000000000000000000000000000":"30026c329666141721178b99c0a1f1b2f06940253f7b3089e2a30ea86aa3c88f5940f05ad7ee41d71347bb7261e348f18360473fdf7d4e7723bffb4411cc13f6cdd89f3bc7b9c768145022c7a74f14d7c305cd012a10f16050c23f1ae5c23f45998d13fbaa041e51619577e0772764896a5d4516d8ffceb3bf7e05f613edd9a60cdcedaff9cfcaf4e00d445a54334f73ab2cad944e51d266548e61c6eb0aa1cd":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-128-CFB128 Encrypt - Official Test Vectors 1.0 +aria_encrypt_cfb128:"00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"3720e53ba7d615383406b09f0a05a200c07c21e6370f413a5d132500a68285017c61b434c7b7ca9685a51071861e4d4bb873b599b479e2d573dddeafba89f812ac6a9e44d554078eb3be94839db4b33da3f59c063123a7ef6f20e10579fa4fd239100ca73b52d4fcafeadee73f139f78f9b7614c2b3b9dbe010f87db06a89a9435f79ce8121431371f4e87b984e0230c22a6dacb32fc42dcc6accef33285bf11":0 + +ARIA-128-CFB128 Decrypt - Official Test Vectors 1.0 +aria_decrypt_cfb128:"00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"3720e53ba7d615383406b09f0a05a200c07c21e6370f413a5d132500a68285017c61b434c7b7ca9685a51071861e4d4bb873b599b479e2d573dddeafba89f812ac6a9e44d554078eb3be94839db4b33da3f59c063123a7ef6f20e10579fa4fd239100ca73b52d4fcafeadee73f139f78f9b7614c2b3b9dbe010f87db06a89a9435f79ce8121431371f4e87b984e0230c22a6dacb32fc42dcc6accef33285bf11":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-192-CFB128 Encrypt - Official Test Vectors 1.0 +aria_encrypt_cfb128:"00112233445566778899aabbccddeeff0011223344556677":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"4171f7192bf4495494d2736129640f5c4d87a9a213664c9448477c6ecc2013598d9766952dd8c3868f17e36ef66fd84bfa45d1593d2d6ee3ea2115047d710d4fb66187caa3a315b3c8ea2d313962edcfe5a3e2028d5ba9a09fd5c65c19d3440e477f0cab0628ec6902c73ee02f1afee9f80115be7b9df82d1e28228e28581a20560e195cbb9e2b327bf56fd2d0ae5502e42c13e9b4015d4da42dc859252e7da4":0 + +ARIA-192-CFB128 Decrypt - Official Test Vectors 1.0 +aria_decrypt_cfb128:"00112233445566778899aabbccddeeff0011223344556677":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"4171f7192bf4495494d2736129640f5c4d87a9a213664c9448477c6ecc2013598d9766952dd8c3868f17e36ef66fd84bfa45d1593d2d6ee3ea2115047d710d4fb66187caa3a315b3c8ea2d313962edcfe5a3e2028d5ba9a09fd5c65c19d3440e477f0cab0628ec6902c73ee02f1afee9f80115be7b9df82d1e28228e28581a20560e195cbb9e2b327bf56fd2d0ae5502e42c13e9b4015d4da42dc859252e7da4":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA-256-CFB128 Encrypt - Official Test Vectors 1.0 +aria_encrypt_cfb128:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":"26834705b0f2c0e2588d4a7f09009635f28bb93d8c31f870ec1e0bdb082b66fa402dd9c202be300c4517d196b14d4ce11dce97f7aaba54341b0d872cc9b63753a3e8556a14be6f7b3e27e3cfc39caf80f2a355aa50dc83c09c7b11828694f8e4aa726c528976b53f2c877f4991a3a8d28adb63bd751846ffb2350265e179d4990753ae8485ff9b4133ddad5875b84a90cbcfa62a045d726df71b6bda0eeca0be":0 + +ARIA-256-CFB128 Decrypt - Official Test Vectors 1.0 +aria_decrypt_cfb128:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"26834705b0f2c0e2588d4a7f09009635f28bb93d8c31f870ec1e0bdb082b66fa402dd9c202be300c4517d196b14d4ce11dce97f7aaba54341b0d872cc9b63753a3e8556a14be6f7b3e27e3cfc39caf80f2a355aa50dc83c09c7b11828694f8e4aa726c528976b53f2c877f4991a3a8d28adb63bd751846ffb2350265e179d4990753ae8485ff9b4133ddad5875b84a90cbcfa62a045d726df71b6bda0eeca0be":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function new file mode 100644 index 0000000000..2c3e347322 --- /dev/null +++ b/tests/suites/test_suite_aria.function @@ -0,0 +1,318 @@ +/* BEGIN_HEADER */ +#include "mbedtls/aria.h" +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_ARIA_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE */ +void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, + char *hex_dst_string, int setkey_result ) +{ + unsigned char key_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + int key_len, data_len, i; + + memset( key_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + data_len = unhexify( src_str, hex_src_string ); + + TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); + if( setkey_result == 0 ) + { + for( i = 0; i < data_len; i += 16 ) + { + TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, src_str + i, output + i ) == 0 ); + } + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, + char *hex_dst_string, int setkey_result ) +{ + unsigned char key_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + int key_len, data_len, i; + + memset( key_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + data_len = unhexify( src_str, hex_src_string ); + + TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); + if( setkey_result == 0 ) + { + for( i = 0; i < data_len; i += 16 ) + { + TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, + src_str + i, output + i ) == 0 ); + } + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ +void aria_encrypt_cbc( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int cbc_result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, + data_len, iv_str, src_str, output) == cbc_result ); + if( cbc_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ +void aria_decrypt_cbc( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int cbc_result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, + data_len, iv_str, src_str, output ) == cbc_result ); + if( cbc_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ +void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + size_t iv_offset = 0; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, + data_len, &iv_offset, iv_str, src_str, output ) == result ); + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ +void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + mbedtls_aria_context ctx; + size_t iv_offset = 0; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, + data_len, &iv_offset, iv_str, src_str, output ) == result ); + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ +void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + unsigned char blk[16]; + mbedtls_aria_context ctx; + size_t iv_offset = 0; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, + &iv_offset, iv_str, blk, src_str, output ) == result ); + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ +void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int result ) +{ + unsigned char key_str[1000]; + unsigned char iv_str[1000]; + unsigned char src_str[1000]; + unsigned char dst_str[1000]; + unsigned char output[1000]; + unsigned char blk[16]; + mbedtls_aria_context ctx; + size_t iv_offset = 0; + int key_len, data_len; + + memset( key_str, 0x00, 1000 ); + memset( iv_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); + mbedtls_aria_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, + &iv_offset, iv_str, blk, src_str, output ) == result ); + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + +exit: + mbedtls_aria_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ +void aria_selftest() +{ + TEST_ASSERT( mbedtls_aria_self_test( 1 ) == 0 ); +} +/* END_CASE */ From 0fb47fe71f58902b255bde29a794bfd68f08dd34 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Fri, 1 Dec 2017 15:41:38 +0000 Subject: [PATCH 0138/1100] MBEDTLS_ARIA_ALT added as a feature --- include/mbedtls/config.h | 2 ++ library/version_features.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 8c217544bb..3369620fbb 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -271,6 +271,7 @@ */ //#define MBEDTLS_AES_ALT //#define MBEDTLS_ARC4_ALT +//#define MBEDTLS_ARIA_ALT //#define MBEDTLS_BLOWFISH_ALT //#define MBEDTLS_CAMELLIA_ALT //#define MBEDTLS_CCM_ALT @@ -288,6 +289,7 @@ //#define MBEDTLS_SHA256_ALT //#define MBEDTLS_SHA512_ALT //#define MBEDTLS_XTEA_ALT + /* * When replacing the elliptic curve module, pleace consider, that it is * implemented with two .c files: diff --git a/library/version_features.c b/library/version_features.c index 3b1319ef11..61088168c2 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -90,6 +90,9 @@ static const char *features[] = { #if defined(MBEDTLS_ARC4_ALT) "MBEDTLS_ARC4_ALT", #endif /* MBEDTLS_ARC4_ALT */ +#if defined(MBEDTLS_ARIA_ALT) + "MBEDTLS_ARIA_ALT", +#endif /* MBEDTLS_ARIA_ALT */ #if defined(MBEDTLS_BLOWFISH_ALT) "MBEDTLS_BLOWFISH_ALT", #endif /* MBEDTLS_BLOWFISH_ALT */ From 07478d6f309d1a82f753b300fb05eb3c68df1958 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Fri, 1 Dec 2017 16:20:15 +0000 Subject: [PATCH 0139/1100] something to do with whitespaces --- library/error.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/library/error.c b/library/error.c index 16680775fb..0e0cc51fc8 100644 --- a/library/error.c +++ b/library/error.c @@ -49,6 +49,10 @@ #include "mbedtls/arc4.h" #endif +#if defined(MBEDTLS_ARIA_C) +#include "mbedtls/aria.h" +#endif + #if defined(MBEDTLS_BASE64_C) #include "mbedtls/base64.h" #endif @@ -65,10 +69,6 @@ #include "mbedtls/camellia.h" #endif -#if defined(MBEDTLS_ARIA_C) -#include "mbedtls/aria.h" -#endif - #if defined(MBEDTLS_CCM_C) #include "mbedtls/ccm.h" #endif @@ -585,6 +585,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "ARC4 - ARC4 hardware accelerator failed" ); #endif /* MBEDTLS_ARC4_C */ +#if defined(MBEDTLS_ARIA_C) + if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH) ) + mbedtls_snprintf( buf, buflen, "ARIA - Invalid key length" ); + if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH) ) + mbedtls_snprintf( buf, buflen, "ARIA - Invalid data input length" ); +#endif /* MBEDTLS_ARIA_C */ + #if defined(MBEDTLS_ASN1_PARSE_C) if( use_ret == -(MBEDTLS_ERR_ASN1_OUT_OF_DATA) ) mbedtls_snprintf( buf, buflen, "ASN1 - Out of data when parsing an ASN1 data structure" ); @@ -646,13 +653,6 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CAMELLIA - Camellia hardware accelerator failed" ); #endif /* MBEDTLS_CAMELLIA_C */ -#if defined(MBEDTLS_ARIA_C) - if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH) ) - mbedtls_snprintf( buf, buflen, "ARIA - Invalid key length" ); - if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH) ) - mbedtls_snprintf( buf, buflen, "ARIA - Invalid data input length" ); -#endif /* MBEDTLS_ARIA_C */ - #if defined(MBEDTLS_CCM_C) if( use_ret == -(MBEDTLS_ERR_CCM_BAD_INPUT) ) mbedtls_snprintf( buf, buflen, "CCM - Bad input parameters to the function" ); From c06e1014e1ee7cbf45346bf71ecfefcd48ad5ead Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Thu, 7 Dec 2017 11:51:13 +0000 Subject: [PATCH 0140/1100] ARIA ciphersuites for TLS 1.2 --- include/mbedtls/cipher.h | 19 ++ include/mbedtls/ssl_ciphersuites.h | 57 ++++- library/cipher_wrap.c | 392 +++++++++++++++++++++++++++++ library/ssl_ciphersuites.c | 385 +++++++++++++++++++++++++++- library/ssl_tls.c | 10 +- 5 files changed, 856 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index d1f4efef8e..fec259f7aa 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -84,6 +84,7 @@ typedef enum { MBEDTLS_CIPHER_ID_CAMELLIA, MBEDTLS_CIPHER_ID_BLOWFISH, MBEDTLS_CIPHER_ID_ARC4, + MBEDTLS_CIPHER_ID_ARIA, } mbedtls_cipher_id_t; /** @@ -143,6 +144,24 @@ typedef enum { MBEDTLS_CIPHER_CAMELLIA_128_CCM, MBEDTLS_CIPHER_CAMELLIA_192_CCM, MBEDTLS_CIPHER_CAMELLIA_256_CCM, + MBEDTLS_CIPHER_ARIA_128_ECB, + MBEDTLS_CIPHER_ARIA_192_ECB, + MBEDTLS_CIPHER_ARIA_256_ECB, + MBEDTLS_CIPHER_ARIA_128_CBC, + MBEDTLS_CIPHER_ARIA_192_CBC, + MBEDTLS_CIPHER_ARIA_256_CBC, + MBEDTLS_CIPHER_ARIA_128_CFB128, + MBEDTLS_CIPHER_ARIA_192_CFB128, + MBEDTLS_CIPHER_ARIA_256_CFB128, + MBEDTLS_CIPHER_ARIA_128_CTR, + MBEDTLS_CIPHER_ARIA_192_CTR, + MBEDTLS_CIPHER_ARIA_256_CTR, + MBEDTLS_CIPHER_ARIA_128_GCM, + MBEDTLS_CIPHER_ARIA_192_GCM, + MBEDTLS_CIPHER_ARIA_256_GCM, + MBEDTLS_CIPHER_ARIA_128_CCM, + MBEDTLS_CIPHER_ARIA_192_CCM, + MBEDTLS_CIPHER_ARIA_256_CCM, } mbedtls_cipher_type_t; /** Supported cipher modes. */ diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 545468a510..5223f02e08 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -169,6 +169,61 @@ extern "C" { #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A /**< Weak! No SSL3! */ #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B /**< Weak! No SSL3! */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D +#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 0xC03E +#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 0xC03F +#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 0xC040 +#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 0xC041 +#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 0xC042 +#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 0xC043 +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 +#define MBEDTLS_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 0xC046 +#define MBEDTLS_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 0xC047 +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 +#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 0xC054 +#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 0xC055 +#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0xC056 +#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0xC057 +#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 0xC058 +#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 0xC059 +#define MBEDTLS_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 0xC05A +#define MBEDTLS_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 0xC05B +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 + #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 /**< Not in SSL3! */ #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 /**< Not in SSL3! */ #define MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC074 /**< Not in SSL3! */ @@ -267,7 +322,7 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ - defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) #define MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED #endif diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index dc76af8ff4..47851e9c02 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -45,6 +45,10 @@ #include "mbedtls/camellia.h" #endif +#if defined(MBEDTLS_ARIA_C) +#include "mbedtls/aria.h" +#endif + #if defined(MBEDTLS_DES_C) #include "mbedtls/des.h" #endif @@ -822,6 +826,363 @@ static const mbedtls_cipher_info_t camellia_256_ccm_info = { #endif /* MBEDTLS_CAMELLIA_C */ +#if defined(MBEDTLS_ARIA_C) + +static int aria_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation, + const unsigned char *input, unsigned char *output ) +{ + return mbedtls_aria_crypt_ecb( (mbedtls_aria_context *) ctx, operation, input, + output ); +} + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +static int aria_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, + size_t length, unsigned char *iv, + const unsigned char *input, unsigned char *output ) +{ + return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, operation, length, iv, + input, output ); +} +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +static int aria_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation, + size_t length, size_t *iv_off, unsigned char *iv, + const unsigned char *input, unsigned char *output ) +{ + return mbedtls_aria_crypt_cfb128( (mbedtls_aria_context *) ctx, operation, length, + iv_off, iv, input, output ); +} +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +static int aria_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off, + unsigned char *nonce_counter, unsigned char *stream_block, + const unsigned char *input, unsigned char *output ) +{ + return mbedtls_aria_crypt_ctr( (mbedtls_aria_context *) ctx, length, nc_off, + nonce_counter, stream_block, input, output ); +} +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +static int aria_setkey_dec_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_aria_setkey_dec( (mbedtls_aria_context *) ctx, key, key_bitlen ); +} + +static int aria_setkey_enc_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_aria_setkey_enc( (mbedtls_aria_context *) ctx, key, key_bitlen ); +} + +static void * aria_ctx_alloc( void ) +{ + mbedtls_aria_context *ctx; + ctx = mbedtls_calloc( 1, sizeof( mbedtls_aria_context ) ); + + if( ctx == NULL ) + return( NULL ); + + mbedtls_aria_init( ctx ); + + return( ctx ); +} + +static void aria_ctx_free( void *ctx ) +{ + mbedtls_aria_free( (mbedtls_aria_context *) ctx ); + mbedtls_free( ctx ); +} + +static const mbedtls_cipher_base_t aria_info = { + MBEDTLS_CIPHER_ID_ARIA, + aria_crypt_ecb_wrap, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + aria_crypt_cbc_wrap, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + aria_crypt_cfb128_wrap, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + aria_crypt_ctr_wrap, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + aria_setkey_enc_wrap, + aria_setkey_dec_wrap, + aria_ctx_alloc, + aria_ctx_free +}; + +static const mbedtls_cipher_info_t aria_128_ecb_info = { + MBEDTLS_CIPHER_ARIA_128_ECB, + MBEDTLS_MODE_ECB, + 128, + "ARIA-128-ECB", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_192_ecb_info = { + MBEDTLS_CIPHER_ARIA_192_ECB, + MBEDTLS_MODE_ECB, + 192, + "ARIA-192-ECB", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_256_ecb_info = { + MBEDTLS_CIPHER_ARIA_256_ECB, + MBEDTLS_MODE_ECB, + 256, + "ARIA-256-ECB", + 16, + 0, + 16, + &aria_info +}; + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +static const mbedtls_cipher_info_t aria_128_cbc_info = { + MBEDTLS_CIPHER_ARIA_128_CBC, + MBEDTLS_MODE_CBC, + 128, + "ARIA-128-CBC", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_192_cbc_info = { + MBEDTLS_CIPHER_ARIA_192_CBC, + MBEDTLS_MODE_CBC, + 192, + "ARIA-192-CBC", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_256_cbc_info = { + MBEDTLS_CIPHER_ARIA_256_CBC, + MBEDTLS_MODE_CBC, + 256, + "ARIA-256-CBC", + 16, + 0, + 16, + &aria_info +}; +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +static const mbedtls_cipher_info_t aria_128_cfb128_info = { + MBEDTLS_CIPHER_ARIA_128_CFB128, + MBEDTLS_MODE_CFB, + 128, + "ARIA-128-CFB128", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_192_cfb128_info = { + MBEDTLS_CIPHER_ARIA_192_CFB128, + MBEDTLS_MODE_CFB, + 192, + "ARIA-192-CFB128", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_256_cfb128_info = { + MBEDTLS_CIPHER_ARIA_256_CFB128, + MBEDTLS_MODE_CFB, + 256, + "ARIA-256-CFB128", + 16, + 0, + 16, + &aria_info +}; +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +static const mbedtls_cipher_info_t aria_128_ctr_info = { + MBEDTLS_CIPHER_ARIA_128_CTR, + MBEDTLS_MODE_CTR, + 128, + "ARIA-128-CTR", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_192_ctr_info = { + MBEDTLS_CIPHER_ARIA_192_CTR, + MBEDTLS_MODE_CTR, + 192, + "ARIA-192-CTR", + 16, + 0, + 16, + &aria_info +}; + +static const mbedtls_cipher_info_t aria_256_ctr_info = { + MBEDTLS_CIPHER_ARIA_256_CTR, + MBEDTLS_MODE_CTR, + 256, + "ARIA-256-CTR", + 16, + 0, + 16, + &aria_info +}; +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#if defined(MBEDTLS_GCM_C) +static int gcm_aria_setkey_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_gcm_setkey( (mbedtls_gcm_context *) ctx, MBEDTLS_CIPHER_ID_ARIA, + key, key_bitlen ); +} + +static const mbedtls_cipher_base_t gcm_aria_info = { + MBEDTLS_CIPHER_ID_ARIA, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + gcm_aria_setkey_wrap, + gcm_aria_setkey_wrap, + gcm_ctx_alloc, + gcm_ctx_free, +}; + +static const mbedtls_cipher_info_t aria_128_gcm_info = { + MBEDTLS_CIPHER_ARIA_128_GCM, + MBEDTLS_MODE_GCM, + 128, + "ARIA-128-GCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &gcm_aria_info +}; + +static const mbedtls_cipher_info_t aria_192_gcm_info = { + MBEDTLS_CIPHER_ARIA_192_GCM, + MBEDTLS_MODE_GCM, + 192, + "ARIA-192-GCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &gcm_aria_info +}; + +static const mbedtls_cipher_info_t aria_256_gcm_info = { + MBEDTLS_CIPHER_ARIA_256_GCM, + MBEDTLS_MODE_GCM, + 256, + "ARIA-256-GCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &gcm_aria_info +}; +#endif /* MBEDTLS_GCM_C */ + +#if defined(MBEDTLS_CCM_C) +static int ccm_aria_setkey_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + return mbedtls_ccm_setkey( (mbedtls_ccm_context *) ctx, MBEDTLS_CIPHER_ID_ARIA, + key, key_bitlen ); +} + +static const mbedtls_cipher_base_t ccm_aria_info = { + MBEDTLS_CIPHER_ID_ARIA, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + ccm_aria_setkey_wrap, + ccm_aria_setkey_wrap, + ccm_ctx_alloc, + ccm_ctx_free, +}; + +static const mbedtls_cipher_info_t aria_128_ccm_info = { + MBEDTLS_CIPHER_ARIA_128_CCM, + MBEDTLS_MODE_CCM, + 128, + "ARIA-128-CCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &ccm_aria_info +}; + +static const mbedtls_cipher_info_t aria_192_ccm_info = { + MBEDTLS_CIPHER_ARIA_192_CCM, + MBEDTLS_MODE_CCM, + 192, + "ARIA-192-CCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &ccm_aria_info +}; + +static const mbedtls_cipher_info_t aria_256_ccm_info = { + MBEDTLS_CIPHER_ARIA_256_CCM, + MBEDTLS_MODE_CCM, + 256, + "ARIA-256-CCM", + 12, + MBEDTLS_CIPHER_VARIABLE_IV_LEN, + 16, + &ccm_aria_info +}; +#endif /* MBEDTLS_CCM_C */ + +#endif /* MBEDTLS_ARIA_C */ + #if defined(MBEDTLS_DES_C) static int des_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation, @@ -1427,6 +1788,37 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = #endif #endif /* MBEDTLS_CAMELLIA_C */ +#if defined(MBEDTLS_ARIA_C) + { MBEDTLS_CIPHER_ARIA_128_ECB, &aria_128_ecb_info }, + { MBEDTLS_CIPHER_ARIA_192_ECB, &aria_192_ecb_info }, + { MBEDTLS_CIPHER_ARIA_256_ECB, &aria_256_ecb_info }, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + { MBEDTLS_CIPHER_ARIA_128_CBC, &aria_128_cbc_info }, + { MBEDTLS_CIPHER_ARIA_192_CBC, &aria_192_cbc_info }, + { MBEDTLS_CIPHER_ARIA_256_CBC, &aria_256_cbc_info }, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + { MBEDTLS_CIPHER_ARIA_128_CFB128, &aria_128_cfb128_info }, + { MBEDTLS_CIPHER_ARIA_192_CFB128, &aria_192_cfb128_info }, + { MBEDTLS_CIPHER_ARIA_256_CFB128, &aria_256_cfb128_info }, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + { MBEDTLS_CIPHER_ARIA_128_CTR, &aria_128_ctr_info }, + { MBEDTLS_CIPHER_ARIA_192_CTR, &aria_192_ctr_info }, + { MBEDTLS_CIPHER_ARIA_256_CTR, &aria_256_ctr_info }, +#endif +#if defined(MBEDTLS_GCM_C) + { MBEDTLS_CIPHER_ARIA_128_GCM, &aria_128_gcm_info }, + { MBEDTLS_CIPHER_ARIA_192_GCM, &aria_192_gcm_info }, + { MBEDTLS_CIPHER_ARIA_256_GCM, &aria_256_gcm_info }, +#endif +#if defined(MBEDTLS_CCM_C) + { MBEDTLS_CIPHER_ARIA_128_CCM, &aria_128_ccm_info }, + { MBEDTLS_CIPHER_ARIA_192_CCM, &aria_192_ccm_info }, + { MBEDTLS_CIPHER_ARIA_256_CCM, &aria_256_ccm_info }, +#endif +#endif /* MBEDTLS_ARIA_C */ + #if defined(MBEDTLS_DES_C) { MBEDTLS_CIPHER_DES_ECB, &des_ecb_info }, { MBEDTLS_CIPHER_DES_EDE_ECB, &des_ede_ecb_info }, diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c index 95e6163ccc..9734ec0791 100644 --- a/library/ssl_ciphersuites.c +++ b/library/ssl_ciphersuites.c @@ -47,7 +47,7 @@ * 1. By key exchange: * Forward-secure non-PSK > forward-secure PSK > ECJPAKE > other non-PSK > other PSK * 2. By key length and cipher: - * AES-256 > Camellia-256 > AES-128 > Camellia-128 > 3DES + * AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-256 > 3DES * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8 * 4. By hash function used when relevant * 5. By key exchange/auth again: EC > non-EC @@ -81,6 +81,14 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256, MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, + /* All ARIA-256 ephemeral suites */ + MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384, + MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384, + MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384, + /* All AES-128 ephemeral suites */ MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, @@ -105,6 +113,14 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256, MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, + /* All ARIA-128 ephemeral suites */ + MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256, + MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256, + MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256, + /* All remaining >= 128-bit ephemeral suites */ MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, @@ -194,12 +210,16 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA, MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384, MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384, + MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384, MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256, MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256, MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA, MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256, MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256, + MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256, MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, @@ -211,6 +231,8 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384, MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384, MBEDTLS_TLS_PSK_WITH_AES_256_CCM_8, + MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384, MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256, MBEDTLS_TLS_PSK_WITH_AES_128_CCM, @@ -219,6 +241,8 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256, MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256, MBEDTLS_TLS_PSK_WITH_AES_128_CCM_8, + MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256, MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA, @@ -1688,6 +1712,365 @@ static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = #endif /* MBEDTLS_DES_C */ #endif /* MBEDTLS_ENABLE_WEAK_CIPHERSUITES */ +#if defined(MBEDTLS_ARIA_C) + +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384, + "TLS-RSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384, + "TLS-RSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256, + "TLS-RSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256, + "TLS-RSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_RSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384, + "TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384, + "TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256, + "TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256, + "TLS-RSA-PSK-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384, + "TLS-PSK-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384,MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384, + "TLS-PSK-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256, + "TLS-PSK-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256, + "TLS-PSK-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_PSK_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384, + "TLS-ECDH-RSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384, + "TLS-ECDH-RSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256, + "TLS-ECDH-RSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256, + "TLS-ECDH-RSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384, + "TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384, + "TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256, + "TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256, + "TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) + +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384, + "TLS-ECDHE-PSK-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256, + "TLS-ECDHE-PSK-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384, + "TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384, + "TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256, + "TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256, + "TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384, + "TLS-ECDH-ECDSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384, + "TLS-ECDH-ECDSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256, + "TLS-ECDH-ECDSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256, + "TLS-ECDH-ECDSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384, + "TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384, + "TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256, + "TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256, + "TLS-DHE-RSA-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED */ + +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) + +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384, + "TLS-DHE-PSK-WITH-ARIA-256-GCM-SHA384", + MBEDTLS_CIPHER_ARIA_256_GCM, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA512_C)) + { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384, + "TLS-DHE-PSK-WITH-ARIA-256-CBC-SHA384", + MBEDTLS_CIPHER_ARIA_256_CBC, MBEDTLS_MD_SHA384, MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_GCM_C) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256, + "TLS-DHE-PSK-WITH-ARIA-128-GCM-SHA256", + MBEDTLS_CIPHER_ARIA_128_GCM, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if (defined(MBEDTLS_CIPHER_MODE_CBC) && defined(MBEDTLS_SHA256_C)) + { MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256, + "TLS-DHE-PSK-WITH-ARIA-128-CBC-SHA256", + MBEDTLS_CIPHER_ARIA_128_CBC, MBEDTLS_MD_SHA256, MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif + +#endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED */ + +#endif /* MBEDTLS_ARIA_C */ + + { 0, "", MBEDTLS_CIPHER_NONE, MBEDTLS_MD_NONE, MBEDTLS_KEY_EXCHANGE_NONE, 0, 0, 0, 0, 0 } diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ff52104ff4..2ff04c5fcd 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1269,7 +1269,7 @@ static void ssl_mac( mbedtls_md_context_t *md_ctx, #if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ ( defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) ) ) + ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C)) ) #define SSL_SOME_MODES_USE_MAC #endif @@ -1470,7 +1470,7 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) else #endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C */ #if defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) ) + ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C) ) if( mode == MBEDTLS_MODE_CBC ) { int ret; @@ -1586,7 +1586,7 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_CIPHER_MODE_CBC && - ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C ) */ + ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C || MBEDTLS_ARIA_C ) */ { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); @@ -1730,7 +1730,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) else #endif /* MBEDTLS_GCM_C || MBEDTLS_CCM_C */ #if defined(MBEDTLS_CIPHER_MODE_CBC) && \ - ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) ) + ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_CAMELLIA_C) || defined(MBEDTLS_ARIA_C) ) if( mode == MBEDTLS_MODE_CBC ) { /* @@ -1942,7 +1942,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_CIPHER_MODE_CBC && - ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C ) */ + ( MBEDTLS_AES_C || MBEDTLS_CAMELLIA_C || MBEDTLS_ARIA_C ) */ { MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); From 841192ba88c22c24b3e45429ffbf998f40e6b469 Mon Sep 17 00:00:00 2001 From: "Markku-Juhani O. Saarinen" Date: Thu, 7 Dec 2017 12:36:55 +0000 Subject: [PATCH 0141/1100] fixed a macro to uppercase for a test script (.._TLS_DH_anon_WITH.. -> _DH_ANON_WITH_) --- include/mbedtls/ssl_ciphersuites.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 5223f02e08..05f2d65577 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -179,8 +179,8 @@ extern "C" { #define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 0xC043 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 -#define MBEDTLS_TLS_DH_anon_WITH_ARIA_128_CBC_SHA256 0xC046 -#define MBEDTLS_TLS_DH_anon_WITH_ARIA_256_CBC_SHA384 0xC047 +#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_128_CBC_SHA256 0xC046 +#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_256_CBC_SHA384 0xC047 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A @@ -199,8 +199,8 @@ extern "C" { #define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0xC057 #define MBEDTLS_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 0xC058 #define MBEDTLS_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 0xC059 -#define MBEDTLS_TLS_DH_anon_WITH_ARIA_128_GCM_SHA256 0xC05A -#define MBEDTLS_TLS_DH_anon_WITH_ARIA_256_GCM_SHA384 0xC05B +#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_128_GCM_SHA256 0xC05A +#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_256_GCM_SHA384 0xC05B #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E From 392c2d2524a23e53739d2974ed417966ecfc0f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 15 Feb 2018 11:06:14 +0100 Subject: [PATCH 0142/1100] compat.sh: run 1.2-only tests with DTLS too --- tests/compat.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/compat.sh b/tests/compat.sh index 672bdab784..8323904671 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -687,7 +687,7 @@ add_mbedtls_ciphersuites() ;; "RSA") - if [ "$MODE" = "tls1_2" ]; + if [ `minor_ver "$MODE"` -ge 3 ] then M_CIPHERS="$M_CIPHERS \ TLS-RSA-WITH-AES-128-CCM \ @@ -715,7 +715,7 @@ add_mbedtls_ciphersuites() TLS-RSA-PSK-WITH-NULL-SHA \ " fi - if [ "$MODE" = "tls1_2" ]; + if [ `minor_ver "$MODE"` -ge 3 ] then M_CIPHERS="$M_CIPHERS \ TLS-PSK-WITH-AES-128-CCM \ From a0e47088d867953bb0b8c029bffac91aa4c2a8a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 15 Feb 2018 11:07:58 +0100 Subject: [PATCH 0143/1100] compat.sh: add self-interop tests for ARIA suites --- tests/compat.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/compat.sh b/tests/compat.sh index 8323904671..ba44cdb5fb 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -682,6 +682,10 @@ add_mbedtls_ciphersuites() TLS-ECDHE-ECDSA-WITH-AES-256-CCM \ TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8 \ + TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384 \ + TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256 \ " fi ;; @@ -698,6 +702,14 @@ add_mbedtls_ciphersuites() TLS-RSA-WITH-AES-256-CCM-8 \ TLS-DHE-RSA-WITH-AES-128-CCM-8 \ TLS-DHE-RSA-WITH-AES-256-CCM-8 \ + TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384 \ + TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384 \ + TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256 \ + TLS-DHE-RSA-WITH-ARIA-128-CBC-SHA256 \ " fi ;; @@ -726,6 +738,14 @@ add_mbedtls_ciphersuites() TLS-PSK-WITH-AES-256-CCM-8 \ TLS-DHE-PSK-WITH-AES-128-CCM-8 \ TLS-DHE-PSK-WITH-AES-256-CCM-8 \ + TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384 \ + TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384 \ + TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256 \ + TLS-RSA-PSK-WITH-ARIA-128-CBC-SHA256 \ + TLS-PSK-WITH-ARIA-256-GCM-SHA384 \ + TLS-PSK-WITH-ARIA-256-CBC-SHA384 \ + TLS-PSK-WITH-ARIA-128-GCM-SHA256 \ + TLS-PSK-WITH-ARIA-128-CBC-SHA256 \ " fi ;; From 7299dfd86bd09b658a1dad6809b790af9cd35995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 15 Feb 2018 11:43:55 +0100 Subject: [PATCH 0144/1100] compat.sh: add ARIA interop tests with OpenSSL Disabled by default, needs OpenSSL >= 1.1.1 - tested locally with 1.1.1-pre1 Local version of OpenSSL was compiled with: ./config --prefix=$HOME/usr/openssl-1.1.1-pre1 -Wl,--enable-new-dtags,-rpath,'$(LIBRPATH)' make make install With OpenSSL 1.1.1-pre1, two ciphersuites were incorrectly skipped, but this has since been fixed in OpenSSL master, see: https://github.com/openssl/openssl/issues/5406 --- tests/compat.sh | 64 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/tests/compat.sh b/tests/compat.sh index ba44cdb5fb..63c1636edb 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -53,7 +53,12 @@ MODES="tls1 tls1_1 tls1_2 dtls1 dtls1_2" VERIFIES="NO YES" TYPES="ECDSA RSA PSK" FILTER="" -EXCLUDE='NULL\|DES-CBC-\|RC4\|ARCFOUR' # avoid plain DES but keep 3DES-EDE-CBC (mbedTLS), DES-CBC3 (OpenSSL) +# exclude: +# - NULL: excluded from our default config +# - RC4, single-DES: requires legacy OpenSSL/GnuTLS versions +# avoid plain DES but keep 3DES-EDE-CBC (mbedTLS), DES-CBC3 (OpenSSL) +# - ARIA: requires OpenSSL >= 1.1.1 +EXCLUDE='NULL\|DES-CBC-\|RC4\|ARCFOUR\|ARIA' VERBOSE="" MEMCHECK=0 PEERS="OpenSSL$PEER_GNUTLS mbedTLS" @@ -226,6 +231,9 @@ reset_ciphersuites() G_CIPHERS="" } +# Ciphersuites that can be used with all peers. +# Since we currently have three possible peers, each ciphersuite should appear +# three times: in each peer's list (with the name that this peer uses). add_common_ciphersuites() { case $TYPE in @@ -422,6 +430,12 @@ add_common_ciphersuites() esac } +# Ciphersuites usable only with Mbed TLS and OpenSSL +# Each ciphersuite should appear two times, once with its OpenSSL name, once +# with its Mbed TLS name. +# +# NOTE: for some reason RSA-PSK doesn't work with OpenSSL, +# so RSA-PSK ciphersuites need to go in other sections. add_openssl_ciphersuites() { case $TYPE in @@ -451,12 +465,16 @@ add_openssl_ciphersuites() TLS-ECDH-ECDSA-WITH-AES-256-CBC-SHA384 \ TLS-ECDH-ECDSA-WITH-AES-128-GCM-SHA256 \ TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384 \ + TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256 \ " O_CIPHERS="$O_CIPHERS \ ECDH-ECDSA-AES128-SHA256 \ ECDH-ECDSA-AES256-SHA384 \ ECDH-ECDSA-AES128-GCM-SHA256 \ ECDH-ECDSA-AES256-GCM-SHA384 \ + ECDHE-ECDSA-ARIA256-GCM-SHA384 \ + ECDHE-ECDSA-ARIA128-GCM-SHA256 \ " fi ;; @@ -470,13 +488,42 @@ add_openssl_ciphersuites() DES-CBC-SHA \ EDH-RSA-DES-CBC-SHA \ " + if [ `minor_ver "$MODE"` -ge 3 ] + then + M_CIPHERS="$M_CIPHERS \ + TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256 \ + " + O_CIPHERS="$O_CIPHERS \ + ECDHE-ARIA256-GCM-SHA384 \ + DHE-RSA-ARIA256-GCM-SHA384 \ + ECDHE-ARIA128-GCM-SHA256 \ + DHE-RSA-ARIA128-GCM-SHA256 \ + " + fi ;; "PSK") + if [ `minor_ver "$MODE"` -ge 3 ] + then + M_CIPHERS="$M_CIPHERS \ + TLS-PSK-WITH-ARIA-256-GCM-SHA384 \ + TLS-PSK-WITH-ARIA-128-GCM-SHA256 \ + " + O_CIPHERS="$O_CIPHERS \ + PSK-ARIA256-GCM-SHA384 \ + PSK-ARIA128-GCM-SHA256 \ + " + fi ;; esac } +# Ciphersuites usable only with Mbed TLS and GnuTLS +# Each ciphersuite should appear two times, once with its GnuTLS name, once +# with its Mbed TLS name. add_gnutls_ciphersuites() { case $TYPE in @@ -661,6 +708,9 @@ add_gnutls_ciphersuites() esac } +# Ciphersuites usable only with Mbed TLS (not currently supported by another +# peer usable in this script). This provide only very rudimentaty testing, as +# this is not interop testing, but it's better than nothing. add_mbedtls_ciphersuites() { case $TYPE in @@ -682,9 +732,7 @@ add_mbedtls_ciphersuites() TLS-ECDHE-ECDSA-WITH-AES-256-CCM \ TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8 \ - TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384 \ TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384 \ - TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256 \ TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256 \ " fi @@ -702,12 +750,8 @@ add_mbedtls_ciphersuites() TLS-RSA-WITH-AES-256-CCM-8 \ TLS-DHE-RSA-WITH-AES-128-CCM-8 \ TLS-DHE-RSA-WITH-AES-256-CCM-8 \ - TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384 \ - TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384 \ TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384 \ TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384 \ - TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256 \ - TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256 \ TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256 \ TLS-DHE-RSA-WITH-ARIA-128-CBC-SHA256 \ " @@ -738,14 +782,12 @@ add_mbedtls_ciphersuites() TLS-PSK-WITH-AES-256-CCM-8 \ TLS-DHE-PSK-WITH-AES-128-CCM-8 \ TLS-DHE-PSK-WITH-AES-256-CCM-8 \ - TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384 \ TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384 \ - TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256 \ TLS-RSA-PSK-WITH-ARIA-128-CBC-SHA256 \ - TLS-PSK-WITH-ARIA-256-GCM-SHA384 \ TLS-PSK-WITH-ARIA-256-CBC-SHA384 \ - TLS-PSK-WITH-ARIA-128-GCM-SHA256 \ TLS-PSK-WITH-ARIA-128-CBC-SHA256 \ + TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384 \ + TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256 \ " fi ;; From 4db944c5f4beea927c23bb1ed5d6989a8eafe707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 10:19:56 +0100 Subject: [PATCH 0145/1100] Don't declare unsupported ciphersuites Removed DSS, static DH, DH_anon --- include/mbedtls/ssl_ciphersuites.h | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 05f2d65577..6d11d4b146 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -171,16 +171,8 @@ extern "C" { #define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C #define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D -#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256 0xC03E -#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384 0xC03F -#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256 0xC040 -#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384 0xC041 -#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256 0xC042 -#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384 0xC043 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 -#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_128_CBC_SHA256 0xC046 -#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_256_CBC_SHA384 0xC047 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A @@ -193,14 +185,6 @@ extern "C" { #define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 #define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 -#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256 0xC054 -#define MBEDTLS_TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384 0xC055 -#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0xC056 -#define MBEDTLS_TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0xC057 -#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256 0xC058 -#define MBEDTLS_TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384 0xC059 -#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_128_GCM_SHA256 0xC05A -#define MBEDTLS_TLS_DH_ANON_WITH_ARIA_256_GCM_SHA384 0xC05B #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D #define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E From 9decaf57b74619060a91f457b1e48bce639f5afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 10:21:52 +0100 Subject: [PATCH 0146/1100] Document Aria suites as TLS 1.2-only --- include/mbedtls/ssl_ciphersuites.h | 76 +++++++++++++++--------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 6d11d4b146..13f84a4353 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -169,44 +169,44 @@ extern "C" { #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A /**< Weak! No SSL3! */ #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B /**< Weak! No SSL3! */ -#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C -#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F -#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 -#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 -#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 -#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 -#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A -#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F -#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 -#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 /**< TLS 1.2 */ #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 /**< Not in SSL3! */ #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 /**< Not in SSL3! */ From af37f0f68f314bcb315ecbf8e51996dff48b050d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 11:03:40 +0100 Subject: [PATCH 0147/1100] Add remaining ARIA suites to priority list Those suites were defined in ciphersuite_definitions[] but not included in ciphersuite_preference[] which meant they couldn't be negotiated unless explicitly added by the user. Add them so that they're usable by default like any other suite. --- library/ssl_ciphersuites.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c index 9734ec0791..2e9a0fd792 100644 --- a/library/ssl_ciphersuites.c +++ b/library/ssl_ciphersuites.c @@ -47,7 +47,7 @@ * 1. By key exchange: * Forward-secure non-PSK > forward-secure PSK > ECJPAKE > other non-PSK > other PSK * 2. By key length and cipher: - * AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-256 > 3DES + * AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-128 > 3DES * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8 * 4. By hash function used when relevant * 5. By key exchange/auth again: EC > non-EC @@ -137,6 +137,9 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384, MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM_8, + MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384, + MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384, MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256, MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM, @@ -148,6 +151,9 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256, MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CCM_8, + MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256, + MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256, MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA, MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA, @@ -177,6 +183,14 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384, + /* All ARIA-256 suites */ + MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384, + MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384, + MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384, + MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384, + /* All AES-128 suites */ MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256, MBEDTLS_TLS_RSA_WITH_AES_128_CCM, @@ -199,6 +213,14 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256, MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256, + /* All ARIA-128 suites */ + MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256, + MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256, + MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256, + MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256, + /* All remaining >= 128-bit suites */ MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA, MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, From bba64067bf584d76625e6719f6d3991c9d480704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 11:58:44 +0100 Subject: [PATCH 0148/1100] compat.sh: add remaining ARIA suites --- tests/compat.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/compat.sh b/tests/compat.sh index 63c1636edb..93e6b3a6d6 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -493,14 +493,18 @@ add_openssl_ciphersuites() M_CIPHERS="$M_CIPHERS \ TLS-ECDHE-RSA-WITH-ARIA-256-GCM-SHA384 \ TLS-DHE-RSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-RSA-WITH-ARIA-256-GCM-SHA384 \ TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256 \ TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-RSA-WITH-ARIA-128-GCM-SHA256 \ " O_CIPHERS="$O_CIPHERS \ ECDHE-ARIA256-GCM-SHA384 \ DHE-RSA-ARIA256-GCM-SHA384 \ + ARIA256-GCM-SHA384 \ ECDHE-ARIA128-GCM-SHA256 \ DHE-RSA-ARIA128-GCM-SHA256 \ + ARIA128-GCM-SHA256 \ " fi ;; @@ -509,10 +513,14 @@ add_openssl_ciphersuites() if [ `minor_ver "$MODE"` -ge 3 ] then M_CIPHERS="$M_CIPHERS \ + TLS-DHE-PSK-WITH-ARIA-256-GCM-SHA384 \ + TLS-DHE-PSK-WITH-ARIA-128-GCM-SHA256 \ TLS-PSK-WITH-ARIA-256-GCM-SHA384 \ TLS-PSK-WITH-ARIA-128-GCM-SHA256 \ " O_CIPHERS="$O_CIPHERS \ + DHE-PSK-ARIA256-GCM-SHA384 \ + DHE-PSK-ARIA128-GCM-SHA256 \ PSK-ARIA256-GCM-SHA384 \ PSK-ARIA128-GCM-SHA256 \ " @@ -734,6 +742,10 @@ add_mbedtls_ciphersuites() TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8 \ TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384 \ TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256 \ + TLS-ECDH-ECDSA-WITH-ARIA-256-GCM-SHA384 \ + TLS-ECDH-ECDSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-ECDH-ECDSA-WITH-ARIA-256-CBC-SHA384 \ + TLS-ECDH-ECDSA-WITH-ARIA-128-CBC-SHA256 \ " fi ;; @@ -754,6 +766,8 @@ add_mbedtls_ciphersuites() TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384 \ TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256 \ TLS-DHE-RSA-WITH-ARIA-128-CBC-SHA256 \ + TLS-RSA-WITH-ARIA-256-CBC-SHA384 \ + TLS-RSA-WITH-ARIA-128-CBC-SHA256 \ " fi ;; @@ -788,6 +802,10 @@ add_mbedtls_ciphersuites() TLS-PSK-WITH-ARIA-128-CBC-SHA256 \ TLS-RSA-PSK-WITH-ARIA-256-GCM-SHA384 \ TLS-RSA-PSK-WITH-ARIA-128-GCM-SHA256 \ + TLS-ECDHE-PSK-WITH-ARIA-256-CBC-SHA384 \ + TLS-ECDHE-PSK-WITH-ARIA-128-CBC-SHA256 \ + TLS-DHE-PSK-WITH-ARIA-256-CBC-SHA384 \ + TLS-DHE-PSK-WITH-ARIA-128-CBC-SHA256 \ " fi ;; From 6b3689237d51b7542f8ccc92cdbde18eff33da53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 12:02:07 +0100 Subject: [PATCH 0149/1100] Add compat.sh ARIA run to all.sh Warning: needs OpenSSL >= 1.1.1-pre1 installed and environment variable OPENSSL_NEXT pointing to it. --- scripts/output_env.sh | 5 +++++ tests/scripts/all.sh | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/scripts/output_env.sh b/scripts/output_env.sh index 1afaac33e4..19b7c061f9 100755 --- a/scripts/output_env.sh +++ b/scripts/output_env.sh @@ -81,6 +81,11 @@ if [ -n "${OPENSSL_LEGACY+set}" ]; then echo fi +if [ -n "${OPENSSL_NEXT+set}" ]; then + print_version "$OPENSSL_NEXT" "version" "openssl next version not found!" + echo +fi + : ${GNUTLS_CLI:=gnutls-cli} print_version "$GNUTLS_CLI" "--version" "gnuTLS client not found!" "head -n 1" echo diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index d5fc12d0ac..764fa2c261 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -101,6 +101,7 @@ YOTTA=1 # Default commands, can be overriden by the environment : ${OPENSSL:="openssl"} : ${OPENSSL_LEGACY:="$OPENSSL"} +: ${OPENSSL_NEXT:="$OPENSSL"} : ${GNUTLS_CLI:="gnutls-cli"} : ${GNUTLS_SERV:="gnutls-serv"} : ${GNUTLS_LEGACY_CLI:="$GNUTLS_CLI"} @@ -141,6 +142,7 @@ Tool path options: --gnutls-legacy-serv= GnuTLS server executable to use for legacy tests. --openssl= OpenSSL executable to use for most tests. --openssl-legacy= OpenSSL executable to use for legacy tests e.g. SSLv3. + --openssl-next= OpenSSL executable to use for recent things like ARIA EOF } @@ -268,6 +270,10 @@ while [ $# -gt 0 ]; do shift OPENSSL_LEGACY="$1" ;; + --openssl-next) + shift + OPENSSL_NEXT="$1" + ;; --out-of-source-dir) shift OUT_OF_SOURCE_DIR="$1" @@ -397,6 +403,7 @@ echo "FORCE: $FORCE" echo "SEED: ${SEED-"UNSET"}" echo "OPENSSL: $OPENSSL" echo "OPENSSL_LEGACY: $OPENSSL_LEGACY" +echo "OPENSSL_NEXT: $OPENSSL_NEXT" echo "GNUTLS_CLI: $GNUTLS_CLI" echo "GNUTLS_SERV: $GNUTLS_SERV" echo "GNUTLS_LEGACY_CLI: $GNUTLS_LEGACY_CLI" @@ -419,7 +426,8 @@ export GNUTLS_SERV="$GNUTLS_SERV" [ ! -z ${SEED+set} ] && export SEED # Make sure the tools we need are available. -check_tools "$OPENSSL" "$OPENSSL_LEGACY" "$GNUTLS_CLI" "$GNUTLS_SERV" \ +check_tools "$OPENSSL" "$OPENSSL_LEGACY" "$OPENSSL_NEXT" \ + "$GNUTLS_CLI" "$GNUTLS_SERV" \ "$GNUTLS_LEGACY_CLI" "$GNUTLS_LEGACY_SERV" "doxygen" "dot" \ "arm-none-eabi-gcc" "i686-w64-mingw32-gcc" if [ $RUN_ARMCC -ne 0 ]; then @@ -547,6 +555,9 @@ if_build_succeeded tests/ssl-opt.sh -f Default msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' +msg "test: compat.sh ARIA" +if_build_succeeded env OPENSSL_CMD="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA' + msg "test/build: curves.pl (gcc)" # ~ 4 min cleanup cmake -D CMAKE_BUILD_TYPE:String=Debug . From 442f03b9e1f8c5452f66a1ab315a41c5dcf3bb39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 13:56:54 +0100 Subject: [PATCH 0150/1100] cmake: keep test list in alphabetic order --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c85d3a2d8f..8c9ba45e48 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -49,6 +49,7 @@ add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) add_test_suite(aes aes.rest) add_test_suite(arc4) +add_test_suite(aria) add_test_suite(asn1write) add_test_suite(base64) add_test_suite(blowfish) @@ -104,7 +105,6 @@ add_test_suite(version) add_test_suite(xtea) add_test_suite(x509parse) add_test_suite(x509write) -add_test_suite(aria) # Make data_files available in an out-of-source build if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) From a6d639e553aae26e487f0cddb0c0605f46fa614c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 13:45:44 +0100 Subject: [PATCH 0151/1100] aria: improve some comments & internal names --- include/mbedtls/error.h | 2 +- library/aria.c | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 5bdb6bb4a3..b65c25cb37 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -63,7 +63,7 @@ * CTR_DBRG 4 0x0034-0x003A * ENTROPY 3 0x003C-0x0040 0x003D-0x003F * NET 11 0x0042-0x0052 0x0043-0x0045 - * ARIA 1 0x005C-0x005E + * ARIA 2 0x005C-0x005E * ASN1 7 0x0060-0x006C * CMAC 1 0x007A-0x007A * PBKDF2 1 0x007C-0x007C diff --git a/library/aria.c b/library/aria.c index 0e2c23a259..a9a2c25112 100644 --- a/library/aria.c +++ b/library/aria.c @@ -19,6 +19,12 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* + * This implementation is based on the following standards: + * [1] http://210.104.33.10/ARIA/doc/ARIA-specification-e.pdf + * [2] https://tools.ietf.org/html/rfc5794 + */ + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else @@ -96,10 +102,14 @@ } -// ARIA Round function ( Substitution Layer SLx + Affine Transform A ) -// (ra, rb, rc, rd) = state in/out -// (sa, sb, sc, sd) = 256 8-bit S-Boxes -// (ta, tb, tc) = temporary variables +/* ARIA Round function ( Substitution Layer SLx + Affine Transform A ) + * (ra, rb, rc, rd) = state in/out + * (sa, sb, sc, sd) = 256 8-bit S-Boxes (see below) + * (ta, tb, tc) = temporary variables + * + * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1-then-A. + * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2-then-A. + */ #define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd, ta, tb, tc ) { \ ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ \ @@ -243,7 +253,7 @@ static const uint8_t aria_is2[0x100] = // r = FO( p, k ) ^ x -static void aria_fo( uint32_t r[4], +static void aria_fo_xor( uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; @@ -264,7 +274,7 @@ static void aria_fo( uint32_t r[4], // r = FE( p, k ) ^ x -static void aria_fe(uint32_t r[4], +static void aria_fe_xor(uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; @@ -350,11 +360,11 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, i = (keybits - 128) >> 6; // index: 0, 1, 2 ctx->nr = 12 + 2 * i; // no. rounds: 12, 14, 16 - aria_fo( w[1], w[0], rc[i], w[1] ); // W1 = FO(W0, CK1) ^ KR + aria_fo_xor( w[1], w[0], rc[i], w[1] ); // W1 = FO(W0, CK1) ^ KR i = i < 2 ? i + 1 : 0; - aria_fe( w[2], w[1], rc[i], w[0] ); // W2 = FE(W1, CK2) ^ W0 + aria_fe_xor( w[2], w[1], rc[i], w[0] ); // W2 = FE(W1, CK2) ^ W0 i = i < 2 ? i + 1 : 0; - aria_fo( w[3], w[2], rc[i], w[1] ); // W3 = FO(W2, CK3) ^ W1 + aria_fo_xor( w[3], w[2], rc[i], w[1] ); // W3 = FO(W2, CK3) ^ W1 for( i = 0; i < 4; i++ ) // create round keys { From e1ad7491c5dee991f5855092d9b6a64c7bfb4084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 20 Feb 2018 13:59:05 +0100 Subject: [PATCH 0152/1100] aria: clean up interface of internal macros --- library/aria.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/library/aria.c b/library/aria.c index a9a2c25112..4c4f3bb182 100644 --- a/library/aria.c +++ b/library/aria.c @@ -78,9 +78,9 @@ // Affine Transform A // (ra, rb, rc, rd) = state in/out -// (ta, tb, tc) = temporary variables -#define ARIA_A( ra, rb, rc, rd, ta, tb, tc ) { \ +#define ARIA_A( ra, rb, rc, rd ) { \ + uint32_t ta, tb, tc; \ ta = rb; \ rb = ra; \ ra = ARIA_FLIP1( ta ); \ @@ -105,13 +105,13 @@ /* ARIA Round function ( Substitution Layer SLx + Affine Transform A ) * (ra, rb, rc, rd) = state in/out * (sa, sb, sc, sd) = 256 8-bit S-Boxes (see below) - * (ta, tb, tc) = temporary variables * * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1-then-A. * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2-then-A. */ -#define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd, ta, tb, tc ) { \ +#define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd ) { \ + uint32_t ta, tb, tc; \ ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ \ (((uint32_t) sd[ rb >> 24]) << 8) ^ \ (((uint32_t) sa[ rb & 0xFF]) << 16) ^ \ @@ -257,14 +257,13 @@ static void aria_fo_xor( uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; - uint32_t t, u, v; a = p[0] ^ k[0]; b = p[1] ^ k[1]; c = p[2] ^ k[2]; d = p[3] ^ k[3]; - ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2, t, u, v ); + ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -278,14 +277,13 @@ static void aria_fe_xor(uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; - uint32_t t, u, v; a = p[0] ^ k[0]; b = p[1] ^ k[1]; c = p[2] ^ k[2]; d = p[3] ^ k[3]; - ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2, t, u, v ); + ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -385,7 +383,6 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits) { int i, j, k, ret; - uint32_t t, u, v; ret = mbedtls_aria_setkey_enc( ctx, key, keybits ); if( ret != 0 ) @@ -396,7 +393,7 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, { for( k = 0; k < 4; k++ ) { - t = ctx->rk[i][k]; + uint32_t t = ctx->rk[i][k]; ctx->rk[i][k] = ctx->rk[j][k]; ctx->rk[j][k] = t; } @@ -404,10 +401,7 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, // apply affine transform to middle keys for (i = 1; i < ctx->nr; i++ ) - { - ARIA_A( ctx->rk[i][0], ctx->rk[i][1], ctx->rk[i][2], ctx->rk[i][3], - t, u, v ); - } + ARIA_A( ctx->rk[i][0], ctx->rk[i][1], ctx->rk[i][2], ctx->rk[i][3] ); return 0; } @@ -422,7 +416,6 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, int i; uint32_t a, b, c, d; - uint32_t t, u, v; ( (void) mode ); @@ -439,8 +432,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, c ^= ctx->rk[i][2]; d ^= ctx->rk[i][3]; i++; - ARIA_SLA( a, b, c, d, - aria_sb1, aria_sb2, aria_is1, aria_is2, t, u, v ); + ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); a ^= ctx->rk[i][0]; b ^= ctx->rk[i][1]; @@ -450,8 +442,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, if (i >= ctx->nr) break; - ARIA_SLA( a, b, c, d, - aria_is1, aria_is2, aria_sb1, aria_sb2, t, u, v ); + ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); } // final substitution From 9cc89248fe2773c611b996e2499f4f6327cb90a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 09:44:29 +0100 Subject: [PATCH 0153/1100] aria: use unsigned type for bit count --- library/aria.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/library/aria.c b/library/aria.c index 4c4f3bb182..6f76538cfa 100644 --- a/library/aria.c +++ b/library/aria.c @@ -296,21 +296,22 @@ static void aria_fe_xor(uint32_t r[4], // little-endian targets and stores state in that order. static void aria_rot128(uint32_t r[4], const uint32_t a[4], - const uint32_t b[4], int n) + const uint32_t b[4], uint8_t n) { - int i, j, n1, n2; + uint8_t i, j; uint32_t t, u; - j = (n >> 5) & 3; // word offset - n1 = n & 0x1F; // bit offsets - n2 = 32 - n1; // n1 should be nonzero! + const uint8_t n1 = n & 0x1F; // bit offset + const uint8_t n2 = 32 - n1; // reverse bit offset + + j = (n >> 5) & 3; // initial word offset t = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); // big endian for( i = 0; i < 4; i++ ) { j = (j + 1) & 3; // get next word, big endian u = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); t <<= n1; // rotate - if (n2 < 32) // intel rotate 32 bits = 0 bits.. + if (n2 < 32) // rotate 32 bits = 0 bits.. t |= u >> n2; t = ARIA_FLIP1( ARIA_FLIP2( t ) ); // back to little endian r[i] = a[i] ^ t; // store @@ -367,10 +368,10 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, for( i = 0; i < 4; i++ ) // create round keys { w2 = w[(i + 1) & 3]; - aria_rot128( ctx->rk[i ], w[i], w2, -19); - aria_rot128( ctx->rk[i + 4], w[i], w2, -31); - aria_rot128( ctx->rk[i + 8], w[i], w2, 61); - aria_rot128( ctx->rk[i + 12], w[i], w2, 31); + aria_rot128( ctx->rk[i ], w[i], w2, 128 - 19 ); + aria_rot128( ctx->rk[i + 4], w[i], w2, 128 - 31 ); + aria_rot128( ctx->rk[i + 8], w[i], w2, 61 ); + aria_rot128( ctx->rk[i + 12], w[i], w2, 31 ); } aria_rot128( ctx->rk[16], w[0], w[1], 19 ); From c76ceb677bfd86a73ccaa585c11b8f5122599d77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 09:50:17 +0100 Subject: [PATCH 0154/1100] aria: move conditional outside of loop --- library/aria.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/library/aria.c b/library/aria.c index 6f76538cfa..9b5febc26a 100644 --- a/library/aria.c +++ b/library/aria.c @@ -291,7 +291,7 @@ static void aria_fe_xor(uint32_t r[4], r[3] = d ^ x[3]; } -// Big endian 128-bit rotation: d = a ^ (b <<< n), used only in key setup. +// Big endian 128-bit rotation: r = a ^ (b <<< n), used only in key setup. // This is relatively slow since our implementation is geared towards // little-endian targets and stores state in that order. @@ -301,18 +301,17 @@ static void aria_rot128(uint32_t r[4], const uint32_t a[4], uint8_t i, j; uint32_t t, u; - const uint8_t n1 = n & 0x1F; // bit offset - const uint8_t n2 = 32 - n1; // reverse bit offset + const uint8_t n1 = n % 32; // bit offset + const uint8_t n2 = n1 ? 32 - n1 : 0; // reverse bit offset - j = (n >> 5) & 3; // initial word offset + j = (n / 32) % 4; // initial word offset t = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); // big endian for( i = 0; i < 4; i++ ) { - j = (j + 1) & 3; // get next word, big endian + j = (j + 1) % 4; // get next word, big endian u = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); t <<= n1; // rotate - if (n2 < 32) // rotate 32 bits = 0 bits.. - t |= u >> n2; + t |= u >> n2; t = ARIA_FLIP1( ARIA_FLIP2( t ) ); // back to little endian r[i] = a[i] ^ t; // store t = u; // move to next word From 56453937a15d8de5e64a61158feb67cee87ee0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 10:08:31 +0100 Subject: [PATCH 0155/1100] aria: use mbedtls_zeroize() --- library/aria.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/aria.c b/library/aria.c index 9b5febc26a..5a5222f6af 100644 --- a/library/aria.c +++ b/library/aria.c @@ -48,6 +48,11 @@ #if !defined(MBEDTLS_ARIA_ALT) +/* Implementation that should never be optimized out by the compiler */ +static void mbedtls_zeroize( void *v, size_t n ) { + volatile unsigned char *p = (unsigned char*)v; while( n-- ) *p++ = 0; +} + // 32-bit integer manipulation macros (little endian) #ifndef GET_UINT32_LE @@ -489,8 +494,7 @@ void mbedtls_aria_free( mbedtls_aria_context *ctx ) if( ctx == NULL ) return; - // compiler can't remove this since this is not a static function - memset( ctx, 0, sizeof( mbedtls_aria_context ) ); + mbedtls_zeroize( ctx, sizeof( mbedtls_aria_context ) ); } #if defined(MBEDTLS_CIPHER_MODE_CBC) From a41ecdabedb6387c6ef50d0c5955a3b1d600e8c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 10:33:26 +0100 Subject: [PATCH 0156/1100] aria: closer to usual comment style We're not absolutely consistent in the rest of the library, but we tend to use C99-style comments less often. Change to use C89-style comments everywhere except for end-of-line comments --- library/aria.c | 122 +++++++++++++++++++++++++++---------------------- 1 file changed, 68 insertions(+), 54 deletions(-) diff --git a/library/aria.c b/library/aria.c index 5a5222f6af..6857e99261 100644 --- a/library/aria.c +++ b/library/aria.c @@ -53,7 +53,9 @@ static void mbedtls_zeroize( void *v, size_t n ) { volatile unsigned char *p = (unsigned char*)v; while( n-- ) *p++ = 0; } -// 32-bit integer manipulation macros (little endian) +/* + * 32-bit integer manipulation macros (little endian) + */ #ifndef GET_UINT32_LE #define GET_UINT32_LE(n,b,i) \ @@ -75,16 +77,17 @@ static void mbedtls_zeroize( void *v, size_t n ) { } #endif -// FLIP1 modifies byte order ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits +/* modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits */ #define ARIA_FLIP1(x) (((x) >> 16) ^ ((x) << 16)) -// FLIP2 modifies byte order ( A B C D ) -> ( B A D C ), swap pairs of bytes +/* modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes */ #define ARIA_FLIP2(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) -// Affine Transform A -// (ra, rb, rc, rd) = state in/out - -#define ARIA_A( ra, rb, rc, rd ) { \ +/* + * Affine Transform A + * (ra, rb, rc, rd) = state in/out + */ +#define ARIA_A( ra, rb, rc, rd ) { \ uint32_t ta, tb, tc; \ ta = rb; \ rb = ra; \ @@ -107,14 +110,14 @@ static void mbedtls_zeroize( void *v, size_t n ) { } -/* ARIA Round function ( Substitution Layer SLx + Affine Transform A ) +/* + * ARIA Round function ( Substitution Layer SLx + Affine Transform A ) * (ra, rb, rc, rd) = state in/out * (sa, sb, sc, sd) = 256 8-bit S-Boxes (see below) * * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1-then-A. * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2-then-A. */ - #define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd ) { \ uint32_t ta, tb, tc; \ ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ \ @@ -149,8 +152,9 @@ static void mbedtls_zeroize( void *v, size_t n ) { rc ^= ARIA_FLIP2( tc ) ^ ta; \ } -// S-Boxes - +/* + * S-Boxes + */ static const uint8_t aria_sb1[0x100] = { 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, @@ -254,10 +258,10 @@ static const uint8_t aria_is2[0x100] = 0x25, 0x8A, 0xB5, 0xE7, 0x42, 0xB3, 0xC7, 0xEA, 0xF7, 0x4C, 0x11, 0x33, 0x03, 0xA2, 0xAC, 0x60 }; -// FO and FE are helpers for key schedule - -// r = FO( p, k ) ^ x +/* + * Helper for key schedule: r = FO( p, k ) ^ x + */ static void aria_fo_xor( uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { @@ -276,8 +280,9 @@ static void aria_fo_xor( uint32_t r[4], r[3] = d ^ x[3]; } -// r = FE( p, k ) ^ x - +/* + * Helper for key schedule: r = FE( p, k ) ^ x + */ static void aria_fe_xor(uint32_t r[4], const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) { @@ -296,10 +301,12 @@ static void aria_fe_xor(uint32_t r[4], r[3] = d ^ x[3]; } -// Big endian 128-bit rotation: r = a ^ (b <<< n), used only in key setup. -// This is relatively slow since our implementation is geared towards -// little-endian targets and stores state in that order. - +/* + * Big endian 128-bit rotation: r = a ^ (b <<< n), used only in key setup. + * + * We chose to store bytes into 32-bit words in little-endian format (see + * GET/PUT_UINT32_LE) so we need to reverse bytes here. + */ static void aria_rot128(uint32_t r[4], const uint32_t a[4], const uint32_t b[4], uint8_t n) { @@ -323,12 +330,13 @@ static void aria_rot128(uint32_t r[4], const uint32_t a[4], } } -// Set encryption key - +/* + * Set encryption key + */ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits) { - // round constant masks + /* round constant masks */ const uint32_t rc[3][4] = { { 0xB7C17C51, 0x940A2227, 0xE8AB13FE, 0xE06E9AFA }, @@ -342,8 +350,8 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, if (keybits != 128 && keybits != 192 && keybits != 256) return MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH; - // W0 = KL - GET_UINT32_LE( w[0][0], key, 0 ); // copy key to W0 | W1 + /* Copy key to W0 (and potential remainder to W1) */ + GET_UINT32_LE( w[0][0], key, 0 ); GET_UINT32_LE( w[0][1], key, 4 ); GET_UINT32_LE( w[0][2], key, 8 ); GET_UINT32_LE( w[0][3], key, 12 ); @@ -382,8 +390,9 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, return 0; } -// Set decryption key - +/* + * Set decryption key + */ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits) { @@ -393,7 +402,7 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, if( ret != 0 ) return ret; - // flip the order of round keys + /* flip the order of round keys */ for( i = 0, j = ctx->nr; i < j; i++, j-- ) { for( k = 0; k < 4; k++ ) @@ -404,15 +413,16 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, } } - // apply affine transform to middle keys + /* apply affine transform to middle keys */ for (i = 1; i < ctx->nr; i++ ) ARIA_A( ctx->rk[i][0], ctx->rk[i][1], ctx->rk[i][2], ctx->rk[i][3] ); return 0; } -// Encrypt a block - +/* + * Encrypt a block + */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, int mode, const unsigned char input[16], @@ -450,8 +460,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); } - // final substitution - + /* final substitution */ a = ctx->rk[i][0] ^ ( (uint32_t) aria_is1[ a & 0xFF]) ^ (((uint32_t) aria_is2[(a >> 8) & 0xFF]) << 8) ^ @@ -484,11 +493,13 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, return 0; } +/* Initialize context */ void mbedtls_aria_init( mbedtls_aria_context *ctx ) { memset( ctx, 0, sizeof( mbedtls_aria_context ) ); } +/* Clear context */ void mbedtls_aria_free( mbedtls_aria_context *ctx ) { if( ctx == NULL ) @@ -639,8 +650,9 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, #if defined(MBEDTLS_SELF_TEST) -// Basic ARIA ECB test vectors from RFC 5794 - +/* + * Basic ARIA ECB test vectors from RFC 5794 + */ static const uint8_t aria_test1_ecb_key[32] = // test key { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // 128 bit @@ -665,9 +677,10 @@ static const uint8_t aria_test1_ecb_ct[3][16] = // ciphertext 0x2B, 0x8F, 0x80, 0xC1, 0x97, 0x2D, 0x24, 0xFC } }; -// Mode tests from "Test Vectors for ARIA" Version 1.0 -// http://210.104.33.10/ARIA/doc/ARIA-testvector-e.pdf - +/* + * Mode tests from "Test Vectors for ARIA" Version 1.0 + * http://210.104.33.10/ARIA/doc/ARIA-testvector-e.pdf + */ #if (defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB) || \ defined(MBEDTLS_CIPHER_MODE_CTR)) static const uint8_t aria_test2_key[32] = @@ -769,10 +782,6 @@ static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertxt }; #endif /* MBEDTLS_CIPHER_MODE_CFB */ -/* - * Checkup routine - */ - #define ARIA_SELF_TEST_IF_FAIL \ { \ if( verbose ) \ @@ -783,6 +792,9 @@ static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertxt printf( "passed\n" ); \ } +/* + * Checkup routine + */ int mbedtls_aria_self_test( int verbose ) { int i; @@ -799,11 +811,12 @@ int mbedtls_aria_self_test( int verbose ) uint8_t buf[48], iv[16]; #endif - // Test set 1 - + /* + * Test set 1 + */ for( i = 0; i < 3; i++ ) { - // test ECB encryption + /* test ECB encryption */ if( verbose ) printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); @@ -812,7 +825,7 @@ int mbedtls_aria_self_test( int verbose ) if( memcmp( blk, aria_test1_ecb_ct[i], 16 ) != 0 ) ARIA_SELF_TEST_IF_FAIL; - // test ECB decryption + /* test ECB decryption */ if( verbose ) printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); @@ -824,12 +837,13 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf("\n"); - // Test set 2 - + /* + * Test set 2 + */ #if defined(MBEDTLS_CIPHER_MODE_CBC) for( i = 0; i < 3; i++ ) { - // Test CBC encryption + /* Test CBC encryption */ if( verbose ) printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); @@ -840,7 +854,7 @@ int mbedtls_aria_self_test( int verbose ) if( memcmp( buf, aria_test2_cbc_ct[i], 48 ) != 0 ) ARIA_SELF_TEST_IF_FAIL; - // Test CBC decryption + /* Test CBC decryption */ if( verbose ) printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_dec( &ctx, aria_test2_key, 128 + 64 * i ); @@ -859,7 +873,7 @@ int mbedtls_aria_self_test( int verbose ) #if defined(MBEDTLS_CIPHER_MODE_CFB) for( i = 0; i < 3; i++ ) { - // Test CFB encryption + /* Test CFB encryption */ if( verbose ) printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); @@ -871,7 +885,7 @@ int mbedtls_aria_self_test( int verbose ) if( memcmp( buf, aria_test2_cfb_ct[i], 48 ) != 0 ) ARIA_SELF_TEST_IF_FAIL; - // Test CFB decryption + /* Test CFB decryption */ if( verbose ) printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); @@ -890,7 +904,7 @@ int mbedtls_aria_self_test( int verbose ) #if defined(MBEDTLS_CIPHER_MODE_CTR) for( i = 0; i < 3; i++ ) { - // Test CTR encryption + /* Test CTR encryption */ if( verbose ) printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); @@ -902,7 +916,7 @@ int mbedtls_aria_self_test( int verbose ) if( memcmp( buf, aria_test2_ctr_ct[i], 48 ) != 0 ) ARIA_SELF_TEST_IF_FAIL; - // Test CTR decryption + /* Test CTR decryption */ if( verbose ) printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); From 62e813ca62a19fa6eaf8014edaa32fc6daa440ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 10:47:47 +0100 Subject: [PATCH 0157/1100] Add aria to benchmark program --- programs/test/benchmark.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 2864caf842..f548c1d7e1 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -54,21 +54,26 @@ int main( void ) #include "mbedtls/sha1.h" #include "mbedtls/sha256.h" #include "mbedtls/sha512.h" + #include "mbedtls/arc4.h" #include "mbedtls/des.h" #include "mbedtls/aes.h" +#include "mbedtls/aria.h" #include "mbedtls/blowfish.h" #include "mbedtls/camellia.h" #include "mbedtls/gcm.h" #include "mbedtls/ccm.h" #include "mbedtls/cmac.h" + #include "mbedtls/havege.h" #include "mbedtls/ctr_drbg.h" #include "mbedtls/hmac_drbg.h" + #include "mbedtls/rsa.h" #include "mbedtls/dhm.h" #include "mbedtls/ecdsa.h" #include "mbedtls/ecdh.h" + #include "mbedtls/error.h" #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) @@ -229,7 +234,7 @@ typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac, - camellia, blowfish, + aria, camellia, blowfish, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; } todo_list; @@ -282,6 +287,8 @@ int main( int argc, char *argv[] ) todo.aes_cmac = 1; else if( strcmp( argv[i], "des3_cmac" ) == 0 ) todo.des3_cmac = 1; + else if( strcmp( argv[i], "aria" ) == 0 ) + todo.aria = 1; else if( strcmp( argv[i], "camellia" ) == 0 ) todo.camellia = 1; else if( strcmp( argv[i], "blowfish" ) == 0 ) @@ -498,6 +505,28 @@ int main( int argc, char *argv[] ) #endif /* MBEDTLS_CMAC_C */ #endif /* MBEDTLS_AES_C */ +#if defined(MBEDTLS_ARIA_C) && defined(MBEDTLS_CIPHER_MODE_CBC) + if( todo.aria ) + { + int keysize; + mbedtls_aria_context aria; + mbedtls_aria_init( &aria ); + for( keysize = 128; keysize <= 256; keysize += 64 ) + { + mbedtls_snprintf( title, sizeof( title ), "ARIA-CBC-%d", keysize ); + + memset( buf, 0, sizeof( buf ) ); + memset( tmp, 0, sizeof( tmp ) ); + mbedtls_aria_setkey_enc( &aria, tmp, keysize ); + + TIME_AND_TSC( title, + mbedtls_aria_crypt_cbc( &aria, MBEDTLS_ARIA_ENCRYPT, + BUFSIZE, tmp, buf, buf ) ); + } + mbedtls_aria_free( &aria ); + } +#endif + #if defined(MBEDTLS_CAMELLIA_C) && defined(MBEDTLS_CIPHER_MODE_CBC) if( todo.camellia ) { From 8c76a9489e0a947dbf59e22f77ceae5414ed8c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 12:03:22 +0100 Subject: [PATCH 0158/1100] aria: turn macro into static inline function Besides documenting types better and so on, this give the compiler more room to optimise either for size or performance. Here are some before/after measurements of: - size of aria.o in bytes (less is better) - instruction count for the selftest function (less is better) with various -O flags. Before: O aria.o ins s 10896 37,256 2 11176 37,199 3 12248 27,752 After: O aria.o ins s 8784 41,408 2 11112 37,001 3 13096 27,438 The new version allows the compiler to reach smaller size with -Os while maintaining (actually slightly improving) performance with -O2 and -O3. Measurements were done on x86_64 (but since this is mainly about inlining code, this should transpose well to other platforms) using the following helper program and script, after disabling CBC, CFB and CTR in config.h, in order to focus on the core functions. ==> st.c <== #include "mbedtls/aria.h" int main( void ) { return mbedtls_aria_self_test( 0 ); } ==> p.sh <== #!/bin/sh set -eu ccount () { ( valgrind --tool=callgrind --dump-line=no --callgrind-out-file=/dev/null --collect-atstart=no --toggle-collect=main $1 ) 2>&1 | sed -n -e 's/.*refs: *\([0-9,]*\)/\1/p' } printf "O\taria.o\tins\n" for O in s 2 3; do GCC="gcc -Wall -Wextra -Werror -Iinclude" $GCC -O$O -c library/aria.c $GCC -O1 st.c aria.o -o st ./st SIZE=$( du -b aria.o | cut -f1 ) INS=$( ccount ./st ) printf "$O\t$SIZE\t$INS\n" done --- library/aria.c | 87 +++++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/library/aria.c b/library/aria.c index 6857e99261..b71cc38451 100644 --- a/library/aria.c +++ b/library/aria.c @@ -118,38 +118,53 @@ static void mbedtls_zeroize( void *v, size_t n ) { * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1-then-A. * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2-then-A. */ -#define ARIA_SLA( ra, rb, rc, rd, sa, sb, sc, sd ) { \ - uint32_t ta, tb, tc; \ - ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ \ - (((uint32_t) sd[ rb >> 24]) << 8) ^ \ - (((uint32_t) sa[ rb & 0xFF]) << 16) ^ \ - (((uint32_t) sb[(rb >> 8) & 0xFF]) << 24); \ - rb = ( (uint32_t) sa[ ra & 0xFF]) ^ \ - (((uint32_t) sb[(ra >> 8) & 0xFF]) << 8) ^ \ - (((uint32_t) sc[(ra >> 16) & 0xFF]) << 16) ^ \ - (((uint32_t) sd[ ra >> 24]) << 24); \ - ra = ta; \ - ta = ( (uint32_t) sd[ rd >> 24]) ^ \ - (((uint32_t) sc[(rd >> 16) & 0xFF]) << 8) ^ \ - (((uint32_t) sb[(rd >> 8) & 0xFF]) << 16) ^ \ - (((uint32_t) sa[ rd & 0xFF]) << 24); \ - rd = ( (uint32_t) sb[(rc >> 8) & 0xFF]) ^ \ - (((uint32_t) sa[ rc & 0xFF]) << 8) ^ \ - (((uint32_t) sd[ rc >> 24]) << 16) ^ \ - (((uint32_t) sc[(rc >> 16) & 0xFF]) << 24); \ - rc = ta; \ - ta = ARIA_FLIP1( ra ) ^ rd; \ - tc = ARIA_FLIP1( rb ); \ - ta = ARIA_FLIP2( ta ) ^ tc ^ rc; \ - tb = ARIA_FLIP2( rc ) ^ ARIA_FLIP1( rd ); \ - tc ^= ARIA_FLIP2( ra ); \ - rb ^= ta ^ tb; \ - tb = ARIA_FLIP1( tb ) ^ ta; \ - ra ^= ARIA_FLIP2( tb ); \ - ta = ARIA_FLIP1( ta ); \ - rd ^= ARIA_FLIP2( ta ) ^ tc; \ - tc = ARIA_FLIP1( tc ); \ - rc ^= ARIA_FLIP2( tc ) ^ ta; \ +static inline void aria_sla( uint32_t *a, uint32_t *b, + uint32_t *c, uint32_t *d, + const uint8_t sa[0x100], const uint8_t sb[0x100], + const uint8_t sc[0x100], const uint8_t sd[0x100] ) +{ + uint32_t ra, rb, rc, rd, ta, tb, tc; + + ra = *a; + rb = *b; + rc = *c; + rd = *d; + + ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ + (((uint32_t) sd[ rb >> 24]) << 8) ^ + (((uint32_t) sa[ rb & 0xFF]) << 16) ^ + (((uint32_t) sb[(rb >> 8) & 0xFF]) << 24); + rb = ( (uint32_t) sa[ ra & 0xFF]) ^ + (((uint32_t) sb[(ra >> 8) & 0xFF]) << 8) ^ + (((uint32_t) sc[(ra >> 16) & 0xFF]) << 16) ^ + (((uint32_t) sd[ ra >> 24]) << 24); + ra = ta; + ta = ( (uint32_t) sd[ rd >> 24]) ^ + (((uint32_t) sc[(rd >> 16) & 0xFF]) << 8) ^ + (((uint32_t) sb[(rd >> 8) & 0xFF]) << 16) ^ + (((uint32_t) sa[ rd & 0xFF]) << 24); + rd = ( (uint32_t) sb[(rc >> 8) & 0xFF]) ^ + (((uint32_t) sa[ rc & 0xFF]) << 8) ^ + (((uint32_t) sd[ rc >> 24]) << 16) ^ + (((uint32_t) sc[(rc >> 16) & 0xFF]) << 24); + rc = ta; + ta = ARIA_FLIP1( ra ) ^ rd; + tc = ARIA_FLIP1( rb ); + ta = ARIA_FLIP2( ta ) ^ tc ^ rc; + tb = ARIA_FLIP2( rc ) ^ ARIA_FLIP1( rd ); + tc ^= ARIA_FLIP2( ra ); + rb ^= ta ^ tb; + tb = ARIA_FLIP1( tb ) ^ ta; + ra ^= ARIA_FLIP2( tb ); + ta = ARIA_FLIP1( ta ); + rd ^= ARIA_FLIP2( ta ) ^ tc; + tc = ARIA_FLIP1( tc ); + rc ^= ARIA_FLIP2( tc ) ^ ta; + + *a = ra; + *b = rb; + *c = rc; + *d = rd; } /* @@ -272,7 +287,7 @@ static void aria_fo_xor( uint32_t r[4], c = p[2] ^ k[2]; d = p[3] ^ k[3]; - ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + aria_sla( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -293,7 +308,7 @@ static void aria_fe_xor(uint32_t r[4], c = p[2] ^ k[2]; d = p[3] ^ k[3]; - ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); + aria_sla( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -447,7 +462,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, c ^= ctx->rk[i][2]; d ^= ctx->rk[i][3]; i++; - ARIA_SLA( a, b, c, d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + aria_sla( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); a ^= ctx->rk[i][0]; b ^= ctx->rk[i][1]; @@ -457,7 +472,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, if (i >= ctx->nr) break; - ARIA_SLA( a, b, c, d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); + aria_sla( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); } /* final substitution */ From 64744f88b60c8654884b99afa707cc32edbf4488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 21 Feb 2018 12:35:19 +0100 Subject: [PATCH 0159/1100] aria: define SLA() as sl(a()) This decreases the size with -Os by nearly 1k while not hurting performance too much with -O2 and -O3 Before: O aria.o ins s 8784 41,408 2 11112 37,001 3 13096 27,438 After: O aria.o ins s 7976 43,865 2 10520 37,631 3 13040 28,146 (See previous commit for measurement details.) --- library/aria.c | 165 +++++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 102 deletions(-) diff --git a/library/aria.c b/library/aria.c index b71cc38451..dc2192afe9 100644 --- a/library/aria.c +++ b/library/aria.c @@ -84,87 +84,62 @@ static void mbedtls_zeroize( void *v, size_t n ) { #define ARIA_FLIP2(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) /* - * Affine Transform A + * ARIA Affine Transform * (ra, rb, rc, rd) = state in/out */ -#define ARIA_A( ra, rb, rc, rd ) { \ - uint32_t ta, tb, tc; \ - ta = rb; \ - rb = ra; \ - ra = ARIA_FLIP1( ta ); \ - tb = ARIA_FLIP1( rd ); \ - rd = ARIA_FLIP2( rc ); \ - rc = ARIA_FLIP2( tb ); \ - ta ^= rd; \ - tc = ARIA_FLIP1( rb ); \ - ta = ARIA_FLIP2( ta ) ^ tc ^ rc; \ - tb ^= ARIA_FLIP1( rd ); \ - tc ^= ARIA_FLIP2( ra ); \ - rb ^= ta ^ tb; \ - tb = ARIA_FLIP1( tb ) ^ ta; \ - ra ^= ARIA_FLIP2( tb ); \ - ta = ARIA_FLIP1( ta ); \ - rd ^= ARIA_FLIP2( ta ) ^ tc; \ - tc = ARIA_FLIP1( tc ); \ - rc ^= ARIA_FLIP2( tc ) ^ ta; \ +static inline void aria_a( uint32_t *a, uint32_t *b, + uint32_t *c, uint32_t *d ) +{ + uint32_t ta, tb, tc; + ta = *b; + *b = *a; + *a = ARIA_FLIP1( ta ); + tb = ARIA_FLIP1( *d ); + *d = ARIA_FLIP2( *c ); + *c = ARIA_FLIP2( tb ); + ta ^= *d; + tc = ARIA_FLIP1( *b ); + ta = ARIA_FLIP2( ta ) ^ tc ^ *c; + tb ^= ARIA_FLIP1( *d ); + tc ^= ARIA_FLIP2( *a ); + *b ^= ta ^ tb; + tb = ARIA_FLIP1( tb ) ^ ta; + *a ^= ARIA_FLIP2( tb ); + ta = ARIA_FLIP1( ta ); + *d ^= ARIA_FLIP2( ta ) ^ tc; + tc = ARIA_FLIP1( tc ); + *c ^= ARIA_FLIP2( tc ) ^ ta; } - /* - * ARIA Round function ( Substitution Layer SLx + Affine Transform A ) - * (ra, rb, rc, rd) = state in/out + * ARIA Substitution Layer SL1 / SL2 + * (a, b, c, d) = state in/out * (sa, sb, sc, sd) = 256 8-bit S-Boxes (see below) * - * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1-then-A. - * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2-then-A. + * By passing sb1, sb2, is1, is2 as S-Boxes you get SL1 + * By passing is1, is2, sb1, sb2 as S-Boxes you get SL2 */ -static inline void aria_sla( uint32_t *a, uint32_t *b, - uint32_t *c, uint32_t *d, - const uint8_t sa[0x100], const uint8_t sb[0x100], - const uint8_t sc[0x100], const uint8_t sd[0x100] ) +static inline void aria_sl( uint32_t *a, uint32_t *b, + uint32_t *c, uint32_t *d, + const uint8_t sa[0x100], const uint8_t sb[0x100], + const uint8_t sc[0x100], const uint8_t sd[0x100] ) { - uint32_t ra, rb, rc, rd, ta, tb, tc; - - ra = *a; - rb = *b; - rc = *c; - rd = *d; - - ta = ( (uint32_t) sc[(rb >> 16) & 0xFF]) ^ - (((uint32_t) sd[ rb >> 24]) << 8) ^ - (((uint32_t) sa[ rb & 0xFF]) << 16) ^ - (((uint32_t) sb[(rb >> 8) & 0xFF]) << 24); - rb = ( (uint32_t) sa[ ra & 0xFF]) ^ - (((uint32_t) sb[(ra >> 8) & 0xFF]) << 8) ^ - (((uint32_t) sc[(ra >> 16) & 0xFF]) << 16) ^ - (((uint32_t) sd[ ra >> 24]) << 24); - ra = ta; - ta = ( (uint32_t) sd[ rd >> 24]) ^ - (((uint32_t) sc[(rd >> 16) & 0xFF]) << 8) ^ - (((uint32_t) sb[(rd >> 8) & 0xFF]) << 16) ^ - (((uint32_t) sa[ rd & 0xFF]) << 24); - rd = ( (uint32_t) sb[(rc >> 8) & 0xFF]) ^ - (((uint32_t) sa[ rc & 0xFF]) << 8) ^ - (((uint32_t) sd[ rc >> 24]) << 16) ^ - (((uint32_t) sc[(rc >> 16) & 0xFF]) << 24); - rc = ta; - ta = ARIA_FLIP1( ra ) ^ rd; - tc = ARIA_FLIP1( rb ); - ta = ARIA_FLIP2( ta ) ^ tc ^ rc; - tb = ARIA_FLIP2( rc ) ^ ARIA_FLIP1( rd ); - tc ^= ARIA_FLIP2( ra ); - rb ^= ta ^ tb; - tb = ARIA_FLIP1( tb ) ^ ta; - ra ^= ARIA_FLIP2( tb ); - ta = ARIA_FLIP1( ta ); - rd ^= ARIA_FLIP2( ta ) ^ tc; - tc = ARIA_FLIP1( tc ); - rc ^= ARIA_FLIP2( tc ) ^ ta; - - *a = ra; - *b = rb; - *c = rc; - *d = rd; + *a = ( (uint32_t) sa[ *a & 0xFF]) ^ + (((uint32_t) sb[(*a >> 8) & 0xFF]) << 8) ^ + (((uint32_t) sc[(*a >> 16) & 0xFF]) << 16) ^ + (((uint32_t) sd[ *a >> 24 ]) << 24); + *b = ( (uint32_t) sa[ *b & 0xFF]) ^ + (((uint32_t) sb[(*b >> 8) & 0xFF]) << 8) ^ + (((uint32_t) sc[(*b >> 16) & 0xFF]) << 16) ^ + (((uint32_t) sd[ *b >> 24 ]) << 24); + *c = ( (uint32_t) sa[ *c & 0xFF]) ^ + (((uint32_t) sb[(*c >> 8) & 0xFF]) << 8) ^ + (((uint32_t) sc[(*c >> 16) & 0xFF]) << 16) ^ + (((uint32_t) sd[ *c >> 24 ]) << 24); + *d = ( (uint32_t) sa[ *d & 0xFF]) ^ + (((uint32_t) sb[(*d >> 8) & 0xFF]) << 8) ^ + (((uint32_t) sc[(*d >> 16) & 0xFF]) << 16) ^ + (((uint32_t) sd[ *d >> 24 ]) << 24); } /* @@ -287,7 +262,8 @@ static void aria_fo_xor( uint32_t r[4], c = p[2] ^ k[2]; d = p[3] ^ k[3]; - aria_sla( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + aria_sl( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + aria_a( &a, &b, &c, &d ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -308,7 +284,8 @@ static void aria_fe_xor(uint32_t r[4], c = p[2] ^ k[2]; d = p[3] ^ k[3]; - aria_sla( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); + aria_sl( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); + aria_a( &a, &b, &c, &d ); r[0] = a ^ x[0]; r[1] = b ^ x[1]; @@ -430,7 +407,7 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, /* apply affine transform to middle keys */ for (i = 1; i < ctx->nr; i++ ) - ARIA_A( ctx->rk[i][0], ctx->rk[i][1], ctx->rk[i][2], ctx->rk[i][3] ); + aria_a( &ctx->rk[i][0], &ctx->rk[i][1], &ctx->rk[i][2], &ctx->rk[i][3] ); return 0; } @@ -462,43 +439,27 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, c ^= ctx->rk[i][2]; d ^= ctx->rk[i][3]; i++; - aria_sla( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + + aria_sl( &a, &b, &c, &d, aria_sb1, aria_sb2, aria_is1, aria_is2 ); + aria_a( &a, &b, &c, &d ); a ^= ctx->rk[i][0]; b ^= ctx->rk[i][1]; c ^= ctx->rk[i][2]; d ^= ctx->rk[i][3]; i++; + + aria_sl( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); if (i >= ctx->nr) break; - - aria_sla( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); + aria_a( &a, &b, &c, &d ); } - /* final substitution */ - a = ctx->rk[i][0] ^ - ( (uint32_t) aria_is1[ a & 0xFF]) ^ - (((uint32_t) aria_is2[(a >> 8) & 0xFF]) << 8) ^ - (((uint32_t) aria_sb1[(a >> 16) & 0xFF]) << 16) ^ - (((uint32_t) aria_sb2[ a >> 24 ]) << 24); - - b = ctx->rk[i][1] ^ - ( (uint32_t) aria_is1[ b & 0xFF]) ^ - (((uint32_t) aria_is2[(b >> 8) & 0xFF]) << 8) ^ - (((uint32_t) aria_sb1[(b >> 16) & 0xFF]) << 16) ^ - (((uint32_t) aria_sb2[ b >> 24 ]) << 24); - - c = ctx->rk[i][2] ^ - ( (uint32_t) aria_is1[ c & 0xFF]) ^ - (((uint32_t) aria_is2[(c >> 8) & 0xFF]) << 8) ^ - (((uint32_t) aria_sb1[(c >> 16) & 0xFF]) << 16) ^ - (((uint32_t) aria_sb2[ c >> 24 ]) << 24); - - d = ctx->rk[i][3] ^ - ( (uint32_t) aria_is1[ d & 0xFF]) ^ - (((uint32_t) aria_is2[(d >> 8) & 0xFF]) << 8) ^ - (((uint32_t) aria_sb1[(d >> 16) & 0xFF]) << 16) ^ - (((uint32_t) aria_sb2[ d >> 24 ]) << 24); + /* final key mixing */ + a ^= ctx->rk[i][0]; + b ^= ctx->rk[i][1]; + c ^= ctx->rk[i][2]; + d ^= ctx->rk[i][3]; PUT_UINT32_LE( a, output, 0 ); PUT_UINT32_LE( b, output, 4 ); From 35ad891aee79b94b5aa179bcf149c86e50a74dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 26 Feb 2018 11:59:16 +0100 Subject: [PATCH 0160/1100] aria: internal names closer to standard document --- library/aria.c | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/library/aria.c b/library/aria.c index dc2192afe9..19172f8475 100644 --- a/library/aria.c +++ b/library/aria.c @@ -77,11 +77,19 @@ static void mbedtls_zeroize( void *v, size_t n ) { } #endif -/* modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits */ -#define ARIA_FLIP1(x) (((x) >> 16) ^ ((x) << 16)) +/* + * modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes + * + * This is submatrix P1 in [1] Appendix B.1 + */ +#define ARIA_P1(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) -/* modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes */ -#define ARIA_FLIP2(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) +/* + * modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits + * + * This is submatrix P2 in [1] Appendix B.1 + */ +#define ARIA_P2(x) (((x) >> 16) ^ ((x) << 16)) /* * ARIA Affine Transform @@ -93,22 +101,22 @@ static inline void aria_a( uint32_t *a, uint32_t *b, uint32_t ta, tb, tc; ta = *b; *b = *a; - *a = ARIA_FLIP1( ta ); - tb = ARIA_FLIP1( *d ); - *d = ARIA_FLIP2( *c ); - *c = ARIA_FLIP2( tb ); + *a = ARIA_P2( ta ); + tb = ARIA_P2( *d ); + *d = ARIA_P1( *c ); + *c = ARIA_P1( tb ); ta ^= *d; - tc = ARIA_FLIP1( *b ); - ta = ARIA_FLIP2( ta ) ^ tc ^ *c; - tb ^= ARIA_FLIP1( *d ); - tc ^= ARIA_FLIP2( *a ); + tc = ARIA_P2( *b ); + ta = ARIA_P1( ta ) ^ tc ^ *c; + tb ^= ARIA_P2( *d ); + tc ^= ARIA_P1( *a ); *b ^= ta ^ tb; - tb = ARIA_FLIP1( tb ) ^ ta; - *a ^= ARIA_FLIP2( tb ); - ta = ARIA_FLIP1( ta ); - *d ^= ARIA_FLIP2( ta ) ^ tc; - tc = ARIA_FLIP1( tc ); - *c ^= ARIA_FLIP2( tc ) ^ ta; + tb = ARIA_P2( tb ) ^ ta; + *a ^= ARIA_P1( tb ); + ta = ARIA_P2( ta ); + *d ^= ARIA_P1( ta ) ^ tc; + tc = ARIA_P2( tc ); + *c ^= ARIA_P1( tc ) ^ ta; } /* @@ -309,14 +317,14 @@ static void aria_rot128(uint32_t r[4], const uint32_t a[4], const uint8_t n2 = n1 ? 32 - n1 : 0; // reverse bit offset j = (n / 32) % 4; // initial word offset - t = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); // big endian + t = ARIA_P2( ARIA_P1( b[j] ) ); // big endian for( i = 0; i < 4; i++ ) { j = (j + 1) % 4; // get next word, big endian - u = ARIA_FLIP1( ARIA_FLIP2( b[j] ) ); + u = ARIA_P2( ARIA_P1( b[j] ) ); t <<= n1; // rotate t |= u >> n2; - t = ARIA_FLIP1( ARIA_FLIP2( t ) ); // back to little endian + t = ARIA_P2( ARIA_P1( t ) ); // back to little endian r[i] = a[i] ^ t; // store t = u; // move to next word } From f205a012b84e5e06df624841c57158bb1fed0268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 26 Feb 2018 14:10:23 +0100 Subject: [PATCH 0161/1100] aria: comment implementation of A transform The line-by-line comments were generated using the following Python 3 script: #!/usr/bin/python3 class Atom: def __init__(self, val): self.v = val def __str__(self): return self.v def p1(self): v = self.v return Atom(v[1] + v[0] + v[3] + v[2]) def p2(self): v = self.v return Atom(v[2] + v[3] + v[0] + v[1]) def __xor__(self, other): return Sum(self.tuple() + other.tuple()) def tuple(self): return (self,) class Sum: def __init__(self, terms): self.t = terms assert(type(terms) == tuple) for t in terms: assert(type(t) == Atom) def __str__(self): return '+'.join(sorted((str(t) for t in self.t), key=lambda v: int(v, 16))) def p1(self): return Sum(tuple(t.p1() for t in self.t)) def p2(self): return Sum(tuple(t.p2() for t in self.t)) def tuple(self): return self.t def __xor__(self, other): return Sum(self.t + other.tuple()) class LoggingDict(dict): def __setitem__(self, key, val): print(key, '=', val) dict.__setitem__(self, key, val) def set(self, key, val): dict.__setitem__(self, key, val) env = LoggingDict() env.set('ra', Atom('0123')) env.set('rb', Atom('4567')) env.set('rc', Atom('89ab')) env.set('rd', Atom('cdef')) env.set('ARIA_P1', lambda x: x.p1()) env.set('ARIA_P2', lambda x: x.p2()) code = """ ta = rb; rb = ra; ra = ARIA_P2( ta ); tb = ARIA_P2( rd ); rd = ARIA_P1( rc ); rc = ARIA_P1( tb ); ta ^= rd; tc = ARIA_P2( rb ); ta = ARIA_P1( ta ) ^ tc ^ rc; tb ^= ARIA_P2( rd ); tc ^= ARIA_P1( ra ); rb ^= ta ^ tb; tb = ARIA_P2( tb ) ^ ta; ra ^= ARIA_P1( tb ); ta = ARIA_P2( ta ); rd ^= ARIA_P1( ta ) ^ tc; tc = ARIA_P2( tc ); rc ^= ARIA_P1( tc ) ^ ta; """ exec(code, env) --- library/aria.c | 59 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/library/aria.c b/library/aria.c index 19172f8475..4c59d70c7e 100644 --- a/library/aria.c +++ b/library/aria.c @@ -78,7 +78,7 @@ static void mbedtls_zeroize( void *v, size_t n ) { #endif /* - * modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes + * modify byte order: ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes * * This is submatrix P1 in [1] Appendix B.1 */ @@ -93,30 +93,49 @@ static void mbedtls_zeroize( void *v, size_t n ) { /* * ARIA Affine Transform - * (ra, rb, rc, rd) = state in/out + * (a, b, c, d) = state in/out + * + * If we denote the first by of input by 0, ..., the last byte by f, + * then inputs are: a = 0123, b = 4567, c = 89ab, d = cdef. + * + * Reading [1] 2.4 or [2] 2.4.3 in colums and performing simple + * rearrangements on adjacent pairs, output is: + * + * a = 3210 + 4545 + 6767 + 88aa + 99bb + dccd + effe + * = 3210 + 4567 + 6745 + 89ab + 98ba + dcfe + efcd + * b = 0101 + 2323 + 5476 + 8998 + baab + ecec + ffdd + * = 0123 + 2301 + 5476 + 89ab + ba98 + efcd + fedc + * c = 0022 + 1133 + 4545 + 7667 + ab89 + dcdc + fefe + * = 0123 + 1032 + 4567 + 7654 + ab89 + dcfe + fedc + * d = 1001 + 2332 + 6644 + 7755 + 9898 + baba + cedf + * = 1032 + 2301 + 6745 + 7654 + 98ba + ba98 + cdef + * + * Note: another presentation of the A transform can be found as the first + * half of App. B.1 in [1] in terms of 4-byte operators P1, P2, P3 and P4. + * The implementation below uses only P1 and P2 as they are sufficient. */ static inline void aria_a( uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d ) { uint32_t ta, tb, tc; - ta = *b; - *b = *a; - *a = ARIA_P2( ta ); - tb = ARIA_P2( *d ); - *d = ARIA_P1( *c ); - *c = ARIA_P1( tb ); - ta ^= *d; - tc = ARIA_P2( *b ); - ta = ARIA_P1( ta ) ^ tc ^ *c; - tb ^= ARIA_P2( *d ); - tc ^= ARIA_P1( *a ); - *b ^= ta ^ tb; - tb = ARIA_P2( tb ) ^ ta; - *a ^= ARIA_P1( tb ); - ta = ARIA_P2( ta ); - *d ^= ARIA_P1( ta ) ^ tc; - tc = ARIA_P2( tc ); - *c ^= ARIA_P1( tc ) ^ ta; + ta = *b; // 4567 + *b = *a; // 0123 + *a = ARIA_P2( ta ); // 6745 + tb = ARIA_P2( *d ); // efcd + *d = ARIA_P1( *c ); // 98ba + *c = ARIA_P1( tb ); // fedc + ta ^= *d; // 4567+98ba + tc = ARIA_P2( *b ); // 2301 + ta = ARIA_P1( ta ) ^ tc ^ *c; // 2301+5476+89ab+fedc + tb ^= ARIA_P2( *d ); // ba98+efcd + tc ^= ARIA_P1( *a ); // 2301+7654 + *b ^= ta ^ tb; // 0123+2301+5476+89ab+ba98+efcd+fedc OUT + tb = ARIA_P2( tb ) ^ ta; // 2301+5476+89ab+98ba+cdef+fedc + *a ^= ARIA_P1( tb ); // 3210+4567+6745+89ab+98ba+dcfe+efcd OUT + ta = ARIA_P2( ta ); // 0123+7654+ab89+dcfe + *d ^= ARIA_P1( ta ) ^ tc; // 1032+2301+6745+7654+98ba+ba98+cdef OUT + tc = ARIA_P2( tc ); // 0123+5476 + *c ^= ARIA_P1( tc ) ^ ta; // 0123+1032+4567+7654+ab89+dcfe+fedc OUT } /* From cac5008b177f1b46d0769c42528a6eb9863ecb6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 26 Feb 2018 15:23:03 +0100 Subject: [PATCH 0162/1100] aria: define P3 macro This will allow to replace it with an optimised implementation later --- library/aria.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/library/aria.c b/library/aria.c index 4c59d70c7e..72bcc6acea 100644 --- a/library/aria.c +++ b/library/aria.c @@ -91,6 +91,13 @@ static void mbedtls_zeroize( void *v, size_t n ) { */ #define ARIA_P2(x) (((x) >> 16) ^ ((x) << 16)) +/* + * modify byte order: ( A B C D ) -> ( D C B A ), i.e. change endianness + * + * This is submatrix P3 in [1] Appendix B.1 + */ +#define ARIA_P3(x) ARIA_P2( ARIA_P1 ( x ) ) + /* * ARIA Affine Transform * (a, b, c, d) = state in/out @@ -336,14 +343,14 @@ static void aria_rot128(uint32_t r[4], const uint32_t a[4], const uint8_t n2 = n1 ? 32 - n1 : 0; // reverse bit offset j = (n / 32) % 4; // initial word offset - t = ARIA_P2( ARIA_P1( b[j] ) ); // big endian + t = ARIA_P3( b[j] ); // big endian for( i = 0; i < 4; i++ ) { j = (j + 1) % 4; // get next word, big endian - u = ARIA_P2( ARIA_P1( b[j] ) ); + u = ARIA_P3( b[j] ); t <<= n1; // rotate t |= u >> n2; - t = ARIA_P2( ARIA_P1( t ) ); // back to little endian + t = ARIA_P3( t ); // back to little endian r[i] = a[i] ^ t; // store t = u; // move to next word } From fb0e4f0d1a34bc7eca5b87169925c5c086db6c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 26 Feb 2018 16:08:40 +0100 Subject: [PATCH 0163/1100] aria: optimise byte perms on Intel (A similar commit for Arm follows.) Use specific instructions for moving bytes around in a word. This speeds things up, and as a side-effect, slightly lowers code size. ARIA_P3 (aka reverse byte order) is now 1 instruction on x86, which speeds up key schedule. (Clang 3.8 finds this but GCC 5.4 doesn't.) I couldn't find an Intel equivalent of ARM's ret16 (aka ARIA_P1), so I made it two instructions, which is still much better than the code generated with the previous mask-shift-or definition, and speeds up en/decryption. (Neither Clang 3.8 nor GCC 5.4 find this.) Before: O aria.o ins s 7976 43,865 2 10520 37,631 3 13040 28,146 After: O aria.o ins s 7768 33,497 2 9816 28,268 3 11432 20,829 For measurement method, see previous commit: "aria: turn macro into static inline function" --- library/aria.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/library/aria.c b/library/aria.c index 72bcc6acea..f6ad7f126b 100644 --- a/library/aria.c +++ b/library/aria.c @@ -81,13 +81,26 @@ static void mbedtls_zeroize( void *v, size_t n ) { * modify byte order: ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes * * This is submatrix P1 in [1] Appendix B.1 + * + * Common compilers fail to translate this to minimal number of instructions, + * so let's provide asm versions for common platforms with C fallback. */ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) +#if defined(__i386__) || defined(__amd64__) || defined( __x86_64__) +/* I couldn't find an Intel equivalent of ret16, so two instructions */ +#define ARIA_P1(x) ARIA_P2( ARIA_P3( x ) ) +#endif +#endif /* MBEDTLS_HAVE_ASM && GNUC */ +#if !defined(ARIA_P1) #define ARIA_P1(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) +#endif /* * modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits * * This is submatrix P2 in [1] Appendix B.1 + * + * Common compilers will translate this to a single instruction. */ #define ARIA_P2(x) (((x) >> 16) ^ ((x) << 16)) @@ -95,8 +108,23 @@ static void mbedtls_zeroize( void *v, size_t n ) { * modify byte order: ( A B C D ) -> ( D C B A ), i.e. change endianness * * This is submatrix P3 in [1] Appendix B.1 + * + * Some compilers fail to translate this to a single instruction, + * so let's provide asm versions for common platforms with C fallback. */ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) +#if defined(__i386__) || defined(__amd64__) || defined( __x86_64__) +static inline uint32_t aria_p3( uint32_t x ) +{ + asm( "bswap %0" : "=r" (x) : "0" (x) ); + return( x ); +} +#define ARIA_P3 aria_p3 +#endif +#endif /* MBEDTLS_HAVE_ASM && GNUC */ +#if !defined(ARIA_P3) #define ARIA_P3(x) ARIA_P2( ARIA_P1 ( x ) ) +#endif /* * ARIA Affine Transform From 377b2b624d5a5d894965236f0ae7fe8d09813a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 27 Feb 2018 10:22:26 +0100 Subject: [PATCH 0164/1100] aria: optimize byte perms on Arm Use specific instructions for moving bytes around in a word. This speeds things up, and as a side-effect, slightly lowers code size. ARIA_P3 and ARIA_P1 are now 1 single-cycle instruction each (those instructions are available in all architecture versions starting from v6-M). Note: ARIA_P3 was already translated to a single instruction by Clang 3.8 and armclang 6.5, but not arm-gcc 5.4 nor armcc 5.06. ARIA_P2 is already efficiently translated to the minimal number of instruction (1 in ARM mode, 2 in thumb mode) by all tested compilers Manually compiled and inspected generated code with the following compilers: arm-gcc 5.4, clang 3.8, armcc 5.06 (with and without --gnu), armclang 6.5. Size reduction (arm-none-eabi-gcc -march=armv6-m -mthumb -Os): 5288 -> 5044 B Effect on executing time of self-tests on a few boards: FRDM-K64F (Cortex-M4): 444 -> 385 us (-13%) LPC1768 (Cortex-M3): 488 -> 432 us (-11%) FRDM-KL64Z (Cortex-M0): 1429 -> 1134 us (-20%) Measured using a config.h with no cipher mode and the following program with aria.c and aria.h copy-pasted to the online compiler: #include "mbed.h" #include "aria.h" int main() { Timer t; t.start(); int ret = mbedtls_aria_self_test(0); t.stop(); printf("ret = %d; time = %d us\n", ret, t.read_us()); } --- library/aria.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/library/aria.c b/library/aria.c index f6ad7f126b..1d1daa18af 100644 --- a/library/aria.c +++ b/library/aria.c @@ -85,11 +85,33 @@ static void mbedtls_zeroize( void *v, size_t n ) { * Common compilers fail to translate this to minimal number of instructions, * so let's provide asm versions for common platforms with C fallback. */ -#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) -#if defined(__i386__) || defined(__amd64__) || defined( __x86_64__) +#if defined(MBEDTLS_HAVE_ASM) +#if defined(__arm__) +/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ +#if defined(__GNUC__) && \ + ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) +static inline uint32_t aria_p1( uint32_t x ) +{ + uint32_t r; + asm( "rev16 %0, %1" : "=l" (r) : "l" (x) ); + return( r ); +} +#define ARIA_P1 aria_p1 +#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 +static __inline uint32_t aria_p1( uint32_t x ) +{ + uint32_t r; + __asm( "rev16 r, x" ); + return( r ); +} +#define ARIA_P1 aria_p1 +#endif +#endif /* arm */ +#if defined(__GNUC__) && \ + defined(__i386__) || defined(__amd64__) || defined( __x86_64__) /* I couldn't find an Intel equivalent of ret16, so two instructions */ #define ARIA_P1(x) ARIA_P2( ARIA_P3( x ) ) -#endif +#endif /* x86 gnuc */ #endif /* MBEDTLS_HAVE_ASM && GNUC */ #if !defined(ARIA_P1) #define ARIA_P1(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8)) @@ -112,15 +134,37 @@ static void mbedtls_zeroize( void *v, size_t n ) { * Some compilers fail to translate this to a single instruction, * so let's provide asm versions for common platforms with C fallback. */ -#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) -#if defined(__i386__) || defined(__amd64__) || defined( __x86_64__) +#if defined(MBEDTLS_HAVE_ASM) +#if defined(__arm__) +/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ +#if defined(__GNUC__) && \ + ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) +static inline uint32_t aria_p3( uint32_t x ) +{ + uint32_t r; + asm( "rev %0, %1" : "=l" (r) : "l" (x) ); + return( r ); +} +#define ARIA_P3 aria_p3 +#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 +static __inline uint32_t aria_p3( uint32_t x ) +{ + uint32_t r; + __asm( "rev r, x" ); + return( r ); +} +#define ARIA_P3 aria_p3 +#endif +#endif /* arm */ +#if defined(__GNUC__) && \ + defined(__i386__) || defined(__amd64__) || defined( __x86_64__) static inline uint32_t aria_p3( uint32_t x ) { asm( "bswap %0" : "=r" (x) : "0" (x) ); return( x ); } #define ARIA_P3 aria_p3 -#endif +#endif /* x86 gnuc */ #endif /* MBEDTLS_HAVE_ASM && GNUC */ #if !defined(ARIA_P3) #define ARIA_P3(x) ARIA_P2( ARIA_P1 ( x ) ) From 26b54fabaf5b9a7f5859910df7d6d6366e89f822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 27 Feb 2018 12:20:20 +0100 Subject: [PATCH 0165/1100] aria: document optional asm usage in config.h --- include/mbedtls/config.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 3369620fbb..ed69f14b17 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -48,10 +48,14 @@ * Requires support for asm() in compiler. * * Used in: + * library/aria.c * library/timing.c - * library/padlock.c * include/mbedtls/bn_mul.h * + * Required by: + * MBEDTLS_AESNI_C + * MBEDTLS_PADLOCK_C + * * Comment to disable the use of assembly code. */ #define MBEDTLS_HAVE_ASM From 2268b967cbbe7f8fd8fb555d5cbe8fc64a35a254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 27 Feb 2018 12:22:36 +0100 Subject: [PATCH 0166/1100] aria: disable by default in config.h --- include/mbedtls/config.h | 5 +++-- tests/compat.sh | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index ed69f14b17..e342e4ce90 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1806,11 +1806,12 @@ /** * \def MBEDTLS_ARIA_C * - * Enable the ARIA block cipher. + * Enable the ARIA block cipher (and TLS ciphersuites that use it, if other + * requirements for them are met too). * * Module: library/aria.c */ -#define MBEDTLS_ARIA_C +//#define MBEDTLS_ARIA_C /** * \def MBEDTLS_CCM_C diff --git a/tests/compat.sh b/tests/compat.sh index 93e6b3a6d6..0a863fa487 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -57,7 +57,7 @@ FILTER="" # - NULL: excluded from our default config # - RC4, single-DES: requires legacy OpenSSL/GnuTLS versions # avoid plain DES but keep 3DES-EDE-CBC (mbedTLS), DES-CBC3 (OpenSSL) -# - ARIA: requires OpenSSL >= 1.1.1 +# - ARIA: not in default config.h + requires OpenSSL >= 1.1.1 EXCLUDE='NULL\|DES-CBC-\|RC4\|ARCFOUR\|ARIA' VERBOSE="" MEMCHECK=0 From 08d1e91ca938b00bdad07889b1b4fae4ff350e8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 27 Feb 2018 12:43:35 +0100 Subject: [PATCH 0167/1100] aria: add ChangeLog entry --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 68fb6f5e96..b24afbbe68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Features + * Add support for ARIA cipher (RFC 5794) and associated TLS ciphersuites + (RFC 6209). Disabled by default, see MBEDTLS_ARIA_C in config.h + = mbed TLS 2.7.x branch released 2018-xx-xx Default behavior changes From 525168c7ef7842c9611e728b900e9870a1f701db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 10:47:02 +0100 Subject: [PATCH 0168/1100] aria: expand config.h entry: ciphersuites & caller --- include/mbedtls/config.h | 46 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index e342e4ce90..59bb3bd9eb 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1806,10 +1806,52 @@ /** * \def MBEDTLS_ARIA_C * - * Enable the ARIA block cipher (and TLS ciphersuites that use it, if other - * requirements for them are met too). + * Enable the ARIA block cipher. * * Module: library/aria.c + * Caller: library/cipher.c + * + * This module enables the following ciphersuites (if other requisites are + * enabled as well): + * + * MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 + * MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 + * MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 + * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 + * MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 */ //#define MBEDTLS_ARIA_C From fdd43543291ff2547cb0b495157f06846bd2b5a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 10:49:02 +0100 Subject: [PATCH 0169/1100] config.h: SSL no longer uses ciphers directly --- include/mbedtls/config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 59bb3bd9eb..0a35e6ec2f 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1585,7 +1585,7 @@ * Enable the AES block cipher. * * Module: library/aes.c - * Caller: library/ssl_tls.c + * Caller: library/cipher.c * library/pem.c * library/ctr_drbg.c * @@ -1660,7 +1660,7 @@ * Enable the ARCFOUR stream cipher. * * Module: library/arc4.c - * Caller: library/ssl_tls.c + * Caller: library/cipher.c * * This module enables the following ciphersuites (if other requisites are * enabled as well): @@ -1754,7 +1754,7 @@ * Enable the Camellia block cipher. * * Module: library/camellia.c - * Caller: library/ssl_tls.c + * Caller: library/cipher.c * * This module enables the following ciphersuites (if other requisites are * enabled as well): @@ -1941,7 +1941,7 @@ * * Module: library/des.c * Caller: library/pem.c - * library/ssl_tls.c + * library/cipher.c * * This module enables the following ciphersuites (if other requisites are * enabled as well): From 4231e7f46fe49e29f718a694375bd67671491d3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 10:54:31 +0100 Subject: [PATCH 0170/1100] Fix some whitespace and other style issues In addition to whitespace: - wrapped a few long lines - added parenthesis to return statements --- include/mbedtls/aria.h | 50 +++++++++--------- include/mbedtls/ssl_ciphersuites.h | 76 +++++++++++++-------------- library/aria.c | 62 +++++++++++----------- tests/suites/test_suite_aria.function | 41 +++++++++------ 4 files changed, 120 insertions(+), 109 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index fc8ca98d7b..1617bf1676 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -81,8 +81,9 @@ void mbedtls_aria_free( mbedtls_aria_context *ctx ); * * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH */ -int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, const unsigned char *key, - unsigned int keybits ); +int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, + const unsigned char *key, + unsigned int keybits ); /** * \brief ARIA key schedule (decryption) @@ -93,8 +94,9 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, const unsigned char *key * * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH */ -int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, const unsigned char *key, - unsigned int keybits ); +int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, + const unsigned char *key, + unsigned int keybits ); /** * \brief ARIA-ECB block encryption/decryption @@ -107,9 +109,9 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, const unsigned char *key * \return 0 if successful */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, - int mode, - const unsigned char input[16], - unsigned char output[16] ); + int mode, + const unsigned char input[16], + unsigned char output[16] ); #if defined(MBEDTLS_CIPHER_MODE_CBC) /** @@ -136,11 +138,11 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH */ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, - int mode, - size_t length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ); + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_CIPHER_MODE_CFB) @@ -171,12 +173,12 @@ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH */ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, - int mode, - size_t length, - size_t *iv_off, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ); + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) @@ -203,12 +205,12 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * \return 0 if successful */ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, - size_t length, - size_t *nc_off, - unsigned char nonce_counter[16], - unsigned char stream_block[16], - const unsigned char *input, - unsigned char *output ); + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ #ifdef __cplusplus diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 13f84a4353..7d5eba0916 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -169,44 +169,44 @@ extern "C" { #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256 0xC03A /**< Weak! No SSL3! */ #define MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384 0xC03B /**< Weak! No SSL3! */ -#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 /**< TLS 1.2 */ -#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 /**< TLS 1.2 */ -#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 /**< TLS 1.2 */ -#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A /**< TLS 1.2 */ -#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C /**< TLS 1.2 */ -#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E /**< TLS 1.2 */ -#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 /**< TLS 1.2 */ -#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256 0xC03C /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384 0xC03D /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC044 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC045 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC048 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC049 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256 0xC04A /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384 0xC04B /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256 0xC04C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384 0xC04D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256 0xC04E /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384 0xC04F /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256 0xC050 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384 0xC051 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC052 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC053 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05C /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05D /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0xC05E /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0xC05F /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0xC060 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0xC061 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0xC062 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0xC063 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256 0xC064 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384 0xC065 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC066 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC067 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256 0xC068 /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384 0xC069 /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256 0xC06A /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384 0xC06B /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0xC06C /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0xC06D /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0xC06E /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0xC06F /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256 0xC070 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384 0xC071 /**< TLS 1.2 */ #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0xC072 /**< Not in SSL3! */ #define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0xC073 /**< Not in SSL3! */ diff --git a/library/aria.c b/library/aria.c index 1d1daa18af..41ed7599a0 100644 --- a/library/aria.c +++ b/library/aria.c @@ -56,9 +56,8 @@ static void mbedtls_zeroize( void *v, size_t n ) { /* * 32-bit integer manipulation macros (little endian) */ - #ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ +#define GET_UINT32_LE( n, b, i ) \ { \ (n) = ( (uint32_t) (b)[(i) ] ) \ | ( (uint32_t) (b)[(i) + 1] << 8 ) \ @@ -68,7 +67,7 @@ static void mbedtls_zeroize( void *v, size_t n ) { #endif #ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ +#define PUT_UINT32_LE( n, b, i ) \ { \ (b)[(i) ] = (unsigned char) ( ( (n) ) & 0xFF ); \ (b)[(i) + 1] = (unsigned char) ( ( (n) >> 8 ) & 0xFF ); \ @@ -431,8 +430,8 @@ static void aria_rot128(uint32_t r[4], const uint32_t a[4], /* * Set encryption key */ -int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, - const unsigned char *key, unsigned int keybits) +int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, + const unsigned char *key, unsigned int keybits ) { /* round constant masks */ const uint32_t rc[3][4] = @@ -446,7 +445,7 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, uint32_t w[4][4], *w2; if (keybits != 128 && keybits != 192 && keybits != 256) - return MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH; + return( MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH ); /* Copy key to W0 (and potential remainder to W1) */ GET_UINT32_LE( w[0][0], key, 0 ); @@ -485,20 +484,20 @@ int mbedtls_aria_setkey_enc(mbedtls_aria_context *ctx, } aria_rot128( ctx->rk[16], w[0], w[1], 19 ); - return 0; + return( 0 ); } /* * Set decryption key */ -int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, - const unsigned char *key, unsigned int keybits) +int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, + const unsigned char *key, unsigned int keybits ) { int i, j, k, ret; ret = mbedtls_aria_setkey_enc( ctx, key, keybits ); if( ret != 0 ) - return ret; + return( ret ); /* flip the order of round keys */ for( i = 0, j = ctx->nr; i < j; i++, j-- ) @@ -513,9 +512,12 @@ int mbedtls_aria_setkey_dec(mbedtls_aria_context *ctx, /* apply affine transform to middle keys */ for (i = 1; i < ctx->nr; i++ ) - aria_a( &ctx->rk[i][0], &ctx->rk[i][1], &ctx->rk[i][2], &ctx->rk[i][3] ); + { + aria_a( &ctx->rk[i][0], &ctx->rk[i][1], + &ctx->rk[i][2], &ctx->rk[i][3] ); + } - return 0; + return( 0 ); } /* @@ -572,7 +574,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, PUT_UINT32_LE( c, output, 8 ); PUT_UINT32_LE( d, output, 12 ); - return 0; + return( 0 ); } /* Initialize context */ @@ -595,11 +597,11 @@ void mbedtls_aria_free( mbedtls_aria_context *ctx ) * ARIA-CBC buffer encryption/decryption */ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, - int mode, - size_t length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ) + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) { int i; unsigned char temp[16]; @@ -649,12 +651,12 @@ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, * ARIA-CFB128 buffer encryption/decryption */ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, - int mode, - size_t length, - size_t *iv_off, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ) + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) { int c; size_t n = *iv_off; @@ -697,12 +699,12 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * ARIA-CTR buffer encryption/decryption */ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, - size_t length, - size_t *nc_off, - unsigned char nonce_counter[16], - unsigned char stream_block[16], - const unsigned char *input, - unsigned char *output ) + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ) { int c, i; size_t n = *nc_off; diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function index 2c3e347322..d3d8ebeead 100644 --- a/tests/suites/test_suite_aria.function +++ b/tests/suites/test_suite_aria.function @@ -27,12 +27,14 @@ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, key_len = unhexify( key_str, hex_key_string ); data_len = unhexify( src_str, hex_src_string ); - TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ) + == setkey_result ); if( setkey_result == 0 ) { for( i = 0; i < data_len; i += 16 ) { - TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, src_str + i, output + i ) == 0 ); + TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, + src_str + i, output + i ) == 0 ); } hexify( dst_str, output, data_len ); @@ -55,16 +57,17 @@ void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, mbedtls_aria_context ctx; int key_len, data_len, i; - memset( key_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, 1000 ); + memset( src_str, 0x00, 1000 ); + memset( dst_str, 0x00, 1000 ); + memset( output, 0x00, 1000 ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); data_len = unhexify( src_str, hex_src_string ); - TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 ) + == setkey_result ); if( setkey_result == 0 ) { for( i = 0; i < data_len; i += 16 ) @@ -107,8 +110,9 @@ void aria_encrypt_cbc( char *hex_key_string, char *hex_iv_string, data_len = unhexify( src_str, hex_src_string ); mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, - data_len, iv_str, src_str, output) == cbc_result ); + TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, data_len, + iv_str, src_str, output ) + == cbc_result ); if( cbc_result == 0 ) { hexify( dst_str, output, data_len ); @@ -146,8 +150,9 @@ void aria_decrypt_cbc( char *hex_key_string, char *hex_iv_string, data_len = unhexify( src_str, hex_src_string ); mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, - data_len, iv_str, src_str, output ) == cbc_result ); + TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, data_len, + iv_str, src_str, output ) + == cbc_result ); if( cbc_result == 0 ) { hexify( dst_str, output, data_len ); @@ -187,7 +192,8 @@ void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, - data_len, &iv_offset, iv_str, src_str, output ) == result ); + data_len, &iv_offset, iv_str, + src_str, output ) == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -224,7 +230,8 @@ void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, - data_len, &iv_offset, iv_str, src_str, output ) == result ); + data_len, &iv_offset, iv_str, + src_str, output ) == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -261,8 +268,8 @@ void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string, data_len = unhexify( src_str, hex_src_string ); mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, - &iv_offset, iv_str, blk, src_str, output ) == result ); + TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str, + blk, src_str, output ) == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -299,8 +306,8 @@ void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string, data_len = unhexify( src_str, hex_src_string ); mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, - &iv_offset, iv_str, blk, src_str, output ) == result ); + TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str, + blk, src_str, output ) == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); From 5aa4e3b1d0d13f7a5a265d469860b26a2110052a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 11:55:49 +0100 Subject: [PATCH 0171/1100] aria: align documentation on AES --- include/mbedtls/aria.h | 219 +++++++++++++++++++++++++---------------- 1 file changed, 136 insertions(+), 83 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 1617bf1676..67c747ef7e 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -3,7 +3,13 @@ * * \brief ARIA block cipher * - * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * The ARIA algorithm is a symmetric block cipher that can encrypt and + * decrypt information. It is defined by the Korean Agency for + * Technology and Standards (KATS) in KS X 1213:2004 (in + * Korean, but see http://210.104.33.10/ARIA/index-e.html in English) + * and also described by the IETF in RFC 5794. + */ +/* Copyright (C) 2006-2018, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -33,8 +39,8 @@ #include #include -#define MBEDTLS_ARIA_ENCRYPT 1 -#define MBEDTLS_ARIA_DECRYPT 0 +#define MBEDTLS_ARIA_ENCRYPT 1 /**< ARIA encryption. */ +#define MBEDTLS_ARIA_DECRYPT 0 /**< ARIA decryption. */ #define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH -0x005C /**< Invalid key length. */ #define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ @@ -48,65 +54,85 @@ extern "C" { #endif /** - * \brief ARIA context structure + * \brief The ARIA context-type definition. */ typedef struct { - int nr; // rounds: nr = 12, 14, or 16 - uint32_t rk[17][4]; // nr+1 round keys (+1 for final) + int nr; /*!< The number of rounds (12, 14 or 16) */ + uint32_t rk[17][4]; /*!< The ARIA round keys. */ } mbedtls_aria_context; /** - * \brief Initialize ARIA context + * \brief This function initializes the specified ARIA context. * - * \param ctx ARIA context to be initialized + * It must be the first API called before using + * the context. + * + * \param ctx The ARIA context to initialize. */ void mbedtls_aria_init( mbedtls_aria_context *ctx ); /** - * \brief Clear ARIA context + * \brief This function releases and clears the specified ARIA context. * - * \param ctx ARIA context to be cleared + * \param ctx The ARIA context to clear. */ void mbedtls_aria_free( mbedtls_aria_context *ctx ); /** - * \brief ARIA key schedule (encryption) + * \brief This function sets the encryption key. * - * \param ctx ARIA context to be initialized - * \param key encryption key - * \param keybits must be 128, 192 or 256 + * \param ctx The ARIA context to which the key should be bound. + * \param key The encryption key. + * \param keybits The size of data passed in bits. Valid options are: + *
  • 128 bits
  • + *
  • 192 bits
  • + *
  • 256 bits
* - * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH + * \return \c 0 on success or #MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH + * on failure. */ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits ); /** - * \brief ARIA key schedule (decryption) + * \brief This function sets the decryption key. * - * \param ctx ARIA context to be initialized - * \param key decryption key - * \param keybits must be 128, 192 or 256 + * \param ctx The ARIA context to which the key should be bound. + * \param key The decryption key. + * \param keybits The size of data passed. Valid options are: + *
  • 128 bits
  • + *
  • 192 bits
  • + *
  • 256 bits
* - * \return 0 if successful, or MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH + * \return \c 0 on success, or #MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH on failure. */ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, const unsigned char *key, unsigned int keybits ); /** - * \brief ARIA-ECB block encryption/decryption + * \brief This function performs an ARIA single-block encryption or + * decryption operation. * - * \param ctx ARIA context - * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT - * \param input 16-byte input block - * \param output 16-byte output block + * It performs the operation defined in the \p mode parameter + * (encrypt or decrypt), on the input data buffer defined in + * the \p input parameter. * - * \return 0 if successful + * mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or + * mbedtls_aes_setkey_dec() must be called before the first + * call to this API with the same context. + * + * \param ctx The ARIA context to use for encryption or decryption. + * \param mode The ARIA operation: #MBEDTLS_ARIA_ENCRYPT or + * #MBEDTLS_ARIA_DECRYPT. + * \param input The 16-Byte buffer holding the input data. + * \param output The 16-Byte buffer holding the output data. + + * \return \c 0 on success. */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, int mode, @@ -115,62 +141,83 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, #if defined(MBEDTLS_CIPHER_MODE_CBC) /** - * \brief ARIA-CBC buffer encryption/decryption - * Length should be a multiple of the block - * size (16 bytes) + * \brief This function performs an ARIA-CBC encryption or decryption operation + * on full blocks. * - * \note Upon exit, the content of the IV is updated so that you can - * call the function same function again on the following - * block(s) of data and get the same result as if it was - * encrypted in one call. This allows a "streaming" usage. - * If on the other hand you need to retain the contents of the - * IV, you should either save it manually or use the cipher - * module instead. + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined in + * the \p input parameter. * - * \param ctx ARIA context - * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT - * \param length length of the input data - * \param iv initialization vector (updated after use) - * \param input buffer holding the input data - * \param output buffer holding the output data + * It can be called as many times as needed, until all the input + * data is processed. mbedtls_aes_init(), and either + * mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called + * before the first call to this API with the same context. * - * \return 0 if successful, or - * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH + * \note This function operates on aligned blocks, that is, the input size + * must be a multiple of the ARIA block size of 16 Bytes. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the IV, you should + * either save it manually or use the cipher module instead. + * + * + * \param ctx The ARIA context to use for encryption or decryption. + * \param mode The ARIA operation: #MBEDTLS_ARIA_ENCRYPT or + * #MBEDTLS_ARIA_DECRYPT. + * \param length The length of the input data in Bytes. This must be a + * multiple of the block size (16 Bytes). + * \param iv Initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success, or #MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH + * on failure. */ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, int mode, size_t length, - unsigned char iv[16], + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_CIPHER_MODE_CFB) /** - * \brief ARIA-CFB128 buffer encryption/decryption + * \brief This function performs an ARIA-CFB128 encryption or decryption + * operation. * - * Note: Due to the nature of CFB you should use the same key schedule for - * both encryption and decryption. So a context initialized with - * mbedtls_aria_setkey_enc() for both MBEDTLS_ARIA_ENCRYPT and CAMELLIE_DECRYPT. + * It performs the operation defined in the \p mode + * parameter (encrypt or decrypt), on the input data buffer + * defined in the \p input parameter. * - * \note Upon exit, the content of the IV is updated so that you can - * call the function same function again on the following - * block(s) of data and get the same result as if it was - * encrypted in one call. This allows a "streaming" usage. - * If on the other hand you need to retain the contents of the - * IV, you should either save it manually or use the cipher - * module instead. + * For CFB, you must set up the context with mbedtls_aes_setkey_enc(), + * regardless of whether you are performing an encryption or decryption + * operation, that is, regardless of the \p mode parameter. This is + * because CFB mode uses the same key schedule for encryption and + * decryption. * - * \param ctx ARIA context - * \param mode MBEDTLS_ARIA_ENCRYPT or MBEDTLS_ARIA_DECRYPT - * \param length length of the input data - * \param iv_off offset in IV (updated after use) - * \param iv initialization vector (updated after use) - * \param input buffer holding the input data - * \param output buffer holding the output data + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you must either save it manually or use the cipher + * module instead. * - * \return 0 if successful, or - * MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH + * + * \param ctx The ARIA context to use for encryption or decryption. + * \param mode The ARIA operation: #MBEDTLS_ARIA_ENCRYPT or + * #MBEDTLS_ARIA_DECRYPT. + * \param length The length of the input data. + * \param iv_off The offset in IV (updated after use). + * \param iv The initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. */ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, int mode, @@ -183,26 +230,32 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, #if defined(MBEDTLS_CIPHER_MODE_CTR) /** - * \brief ARIA-CTR buffer encryption/decryption + * \brief This function performs an ARIA-CTR encryption or decryption + * operation. * - * Warning: You have to keep the maximum use of your counter in mind! + * This function performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer + * defined in the \p input parameter. * - * Note: Due to the nature of CTR you should use the same key schedule for - * both encryption and decryption. So a context initialized with - * mbedtls_aria_setkey_enc() for both MBEDTLS_ARIA_ENCRYPT and MBEDTLS_ARIA_DECRYPT. + * Due to the nature of CTR, you must use the same key schedule + * for both encryption and decryption operations. Therefore, you + * must use the context initialized with mbedtls_aes_setkey_enc() + * for both #MBEDTLS_ARIA_ENCRYPT and #MBEDTLS_ARIA_DECRYPT. * - * \param ctx ARIA context - * \param length The length of the data - * \param nc_off The offset in the current stream_block (for resuming - * within current cipher stream). The offset pointer to - * should be 0 at the start of a stream. - * \param nonce_counter The 128-bit nonce and counter. - * \param stream_block The saved stream-block for resuming. Is overwritten - * by the function. - * \param input The input data stream - * \param output The output data stream + * \warning You must keep the maximum use of your counter in mind. * - * \return 0 if successful + * \param ctx The ARIA context to use for encryption or decryption. + * \param length The length of the input data. + * \param nc_off The offset in the current \p stream_block, for + * resuming within the current cipher stream. The + * offset pointer should be 0 at the start of a stream. + * \param nonce_counter The 128-bit nonce and counter. + * \param stream_block The saved stream block for resuming. This is + * overwritten by the function. + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. */ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, size_t length, @@ -226,9 +279,9 @@ extern "C" { #endif /** - * \brief Checkup routine + * \brief Checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 on success, or \c 1 on failure. */ int mbedtls_aria_self_test( int verbose ); From 22997b7200575a94e77a87b2aa45cdfceb289494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 12:29:41 +0100 Subject: [PATCH 0172/1100] block ciphers: improve CTR nonce warning --- include/mbedtls/aes.h | 19 ++++++++++++++++++- include/mbedtls/aria.h | 19 ++++++++++++++++++- include/mbedtls/blowfish.h | 19 ++++++++++++++++++- include/mbedtls/camellia.h | 21 +++++++++++++++++++-- 4 files changed, 73 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 46016dcb7f..27be761687 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -300,7 +300,24 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * must use the context initialized with mbedtls_aes_setkey_enc() * for both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT. * - * \warning You must keep the maximum use of your counter in mind. + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. Use a counter starting at 0 or a random value. With this + * strategy, this function will increment the counter for you, so + * you only need to preserve the \p nonce_counter buffer between + * calls. With this strategy, you must not encrypt more than + * 2**128 blocks of data. + * 2. Use a randomly-generated \p nonce_counter for each call. + * With this strategy, you need to ensure the nonce is generated + * in an unbiased way and you must not encrypt more than 2**64 + * block of data. + * + * Note that for both stategies, the limit is in number of blocks + * and that an AES block is 16 bytes. * * \param ctx The AES context to use for encryption or decryption. * \param length The length of the input data. diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 67c747ef7e..5724308600 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -242,7 +242,24 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * must use the context initialized with mbedtls_aes_setkey_enc() * for both #MBEDTLS_ARIA_ENCRYPT and #MBEDTLS_ARIA_DECRYPT. * - * \warning You must keep the maximum use of your counter in mind. + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. Use a counter starting at 0 or a random value. With this + * strategy, this function will increment the counter for you, so + * you only need to preserve the \p nonce_counter buffer between + * calls. With this strategy, you must not encrypt more than + * 2**128 blocks of data. + * 2. Use a randomly-generated \p nonce_counter for each call. + * With this strategy, you need to ensure the nonce is generated + * in an unbiased way and you must not encrypt more than 2**64 + * block of data. + * + * Note that for both stategies, the limit is in number of blocks + * and that an ARIA block is 16 bytes. * * \param ctx The ARIA context to use for encryption or decryption. * \param length The length of the input data. diff --git a/include/mbedtls/blowfish.h b/include/mbedtls/blowfish.h index c0ef5a04cc..4b4916e03a 100644 --- a/include/mbedtls/blowfish.h +++ b/include/mbedtls/blowfish.h @@ -170,7 +170,24 @@ int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, /** * \brief Blowfish-CTR buffer encryption/decryption * - * Warning: You have to keep the maximum use of your counter in mind! + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. Use a counter starting at 0 or a random value. With this + * strategy, this function will increment the counter for you, so + * you only need to preserve the \p nonce_counter buffer between + * calls. With this strategy, you must not encrypt more than + * 2**64 blocks of data. + * 2. Use a randomly-generated \p nonce_counter for each call. + * With this strategy, you need to ensure the nonce is generated + * in an unbiased way and you must not encrypt more than 2**32 + * block of data. + * + * Note that for both stategies, the limit is in number of blocks + * and that a Blowfish block is 8 bytes. * * \param ctx Blowfish context * \param length The length of the data diff --git a/include/mbedtls/camellia.h b/include/mbedtls/camellia.h index cf07629d9b..1b138fc9e7 100644 --- a/include/mbedtls/camellia.h +++ b/include/mbedtls/camellia.h @@ -183,12 +183,29 @@ int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, /** * \brief CAMELLIA-CTR buffer encryption/decryption * - * Warning: You have to keep the maximum use of your counter in mind! - * * Note: Due to the nature of CTR you should use the same key schedule for * both encryption and decryption. So a context initialized with * mbedtls_camellia_setkey_enc() for both MBEDTLS_CAMELLIA_ENCRYPT and MBEDTLS_CAMELLIA_DECRYPT. * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. Use a counter starting at 0 or a random value. With this + * strategy, this function will increment the counter for you, so + * you only need to preserve the \p nonce_counter buffer between + * calls. With this strategy, you must not encrypt more than + * 2**128 blocks of data. + * 2. Use a randomly-generated \p nonce_counter for each call. + * With this strategy, you need to ensure the nonce is generated + * in an unbiased way and you must not encrypt more than 2**64 + * block of data. + * + * Note that for both stategies, the limit is in number of blocks + * and that a CAMELLIA block is 16 bytes. + * * \param ctx CAMELLIA context * \param length The length of the data * \param nc_off The offset in the current stream_block (for resuming From c0bb66f47ea6101ba077f7a037ebd52a85574c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 12:38:04 +0100 Subject: [PATCH 0173/1100] aria: improve compiler inline compatibility --- library/aria.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/library/aria.c b/library/aria.c index 41ed7599a0..a9b88713d6 100644 --- a/library/aria.c +++ b/library/aria.c @@ -48,6 +48,11 @@ #if !defined(MBEDTLS_ARIA_ALT) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + /* Implementation that should never be optimized out by the compiler */ static void mbedtls_zeroize( void *v, size_t n ) { volatile unsigned char *p = (unsigned char*)v; while( n-- ) *p++ = 0; @@ -97,7 +102,7 @@ static inline uint32_t aria_p1( uint32_t x ) } #define ARIA_P1 aria_p1 #elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 -static __inline uint32_t aria_p1( uint32_t x ) +static inline uint32_t aria_p1( uint32_t x ) { uint32_t r; __asm( "rev16 r, x" ); @@ -146,7 +151,7 @@ static inline uint32_t aria_p3( uint32_t x ) } #define ARIA_P3 aria_p3 #elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 -static __inline uint32_t aria_p3( uint32_t x ) +static inline uint32_t aria_p3( uint32_t x ) { uint32_t r; __asm( "rev r, x" ); From f3a46a9b4f1a710f522c0a17c51c3d079b43b0a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 28 Feb 2018 12:38:21 +0100 Subject: [PATCH 0174/1100] aria: fix some typos in comments --- library/aria.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/aria.c b/library/aria.c index a9b88713d6..f6d1c54986 100644 --- a/library/aria.c +++ b/library/aria.c @@ -181,7 +181,7 @@ static inline uint32_t aria_p3( uint32_t x ) * If we denote the first by of input by 0, ..., the last byte by f, * then inputs are: a = 0123, b = 4567, c = 89ab, d = cdef. * - * Reading [1] 2.4 or [2] 2.4.3 in colums and performing simple + * Reading [1] 2.4 or [2] 2.4.3 in columns and performing simple * rearrangements on adjacent pairs, output is: * * a = 3210 + 4545 + 6767 + 88aa + 99bb + dccd + effe @@ -800,7 +800,7 @@ static const uint8_t aria_test2_iv[16] = #endif #if defined(MBEDTLS_CIPHER_MODE_CBC) -static const uint8_t aria_test2_cbc_ct[3][48] = // CBC ciphertxt +static const uint8_t aria_test2_cbc_ct[3][48] = // CBC ciphertext { { 0x49, 0xd6, 0x18, 0x60, 0xb1, 0x49, 0x09, 0x10, // 128-bit key 0x9c, 0xef, 0x0d, 0x22, 0xa9, 0x26, 0x81, 0x34, @@ -824,7 +824,7 @@ static const uint8_t aria_test2_cbc_ct[3][48] = // CBC ciphertxt #endif /* MBEDTLS_CIPHER_MODE_CBC */ #if defined(MBEDTLS_CIPHER_MODE_CFB) -static const uint8_t aria_test2_cfb_ct[3][48] = // CFB ciphertxt +static const uint8_t aria_test2_cfb_ct[3][48] = // CFB ciphertext { { 0x37, 0x20, 0xe5, 0x3b, 0xa7, 0xd6, 0x15, 0x38, // 128-bit key 0x34, 0x06, 0xb0, 0x9f, 0x0a, 0x05, 0xa2, 0x00, @@ -848,7 +848,7 @@ static const uint8_t aria_test2_cfb_ct[3][48] = // CFB ciphertxt #endif /* MBEDTLS_CIPHER_MODE_CFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) -static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertxt +static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertext { { 0xac, 0x5d, 0x7d, 0xe8, 0x05, 0xa0, 0xbf, 0x1c, // 128-bit key 0x57, 0xc8, 0x54, 0x50, 0x1a, 0xf6, 0x0f, 0xa1, From 3c80009615d4cf266f21d7d0c635208279c55880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 09:02:16 +0100 Subject: [PATCH 0175/1100] aria: add error codes for hw implementations --- include/mbedtls/aria.h | 2 ++ include/mbedtls/error.h | 2 +- library/error.c | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 5724308600..69518eec0e 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -44,6 +44,8 @@ #define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH -0x005C /**< Invalid key length. */ #define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ +#define MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, an unsupported ARIA key size. */ +#define MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED -0x0058 /**< ARIA hardware accelerator failed. */ #if !defined(MBEDTLS_ARIA_ALT) // Regular implementation diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index b65c25cb37..30c4972f89 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -63,7 +63,7 @@ * CTR_DBRG 4 0x0034-0x003A * ENTROPY 3 0x003C-0x0040 0x003D-0x003F * NET 11 0x0042-0x0052 0x0043-0x0045 - * ARIA 2 0x005C-0x005E + * ARIA 4 0x0058-0x005E * ASN1 7 0x0060-0x006C * CMAC 1 0x007A-0x007A * PBKDF2 1 0x007C-0x007C diff --git a/library/error.c b/library/error.c index 0e0cc51fc8..56d7f2a171 100644 --- a/library/error.c +++ b/library/error.c @@ -590,6 +590,10 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "ARIA - Invalid key length" ); if( use_ret == -(MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH) ) mbedtls_snprintf( buf, buflen, "ARIA - Invalid data input length" ); + if( use_ret == -(MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE) ) + mbedtls_snprintf( buf, buflen, "ARIA - Feature not available. For example, an unsupported ARIA key size" ); + if( use_ret == -(MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED) ) + mbedtls_snprintf( buf, buflen, "ARIA - ARIA hardware accelerator failed" ); #endif /* MBEDTLS_ARIA_C */ #if defined(MBEDTLS_ASN1_PARSE_C) From 5ad88b6d0d5096383df3be046a846e85ffc53a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 09:20:47 +0100 Subject: [PATCH 0176/1100] aria: define constants for block size and max rounds --- include/mbedtls/aria.h | 17 ++++++----- library/aria.c | 66 +++++++++++++++++++++--------------------- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 69518eec0e..bcbc03da5a 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -42,6 +42,9 @@ #define MBEDTLS_ARIA_ENCRYPT 1 /**< ARIA encryption. */ #define MBEDTLS_ARIA_DECRYPT 0 /**< ARIA decryption. */ +#define MBEDTLS_ARIA_BLOCKSIZE 16 /**< ARIA block size in bytes. */ +#define MBEDTLS_ARIA_MAX_ROUNDS 16 /**< Maxiumum number of rounds in ARIA. */ + #define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH -0x005C /**< Invalid key length. */ #define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ #define MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, an unsupported ARIA key size. */ @@ -58,11 +61,11 @@ extern "C" { /** * \brief The ARIA context-type definition. */ - typedef struct { int nr; /*!< The number of rounds (12, 14 or 16) */ - uint32_t rk[17][4]; /*!< The ARIA round keys. */ + /*! The ARIA round keys. */ + uint32_t rk[MBEDTLS_ARIA_MAX_ROUNDS + 1][MBEDTLS_ARIA_BLOCKSIZE / 4]; } mbedtls_aria_context; @@ -138,8 +141,8 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, int mode, - const unsigned char input[16], - unsigned char output[16] ); + const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] ); #if defined(MBEDTLS_CIPHER_MODE_CBC) /** @@ -225,7 +228,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, int mode, size_t length, size_t *iv_off, - unsigned char iv[16], + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CFB */ @@ -279,8 +282,8 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, size_t length, size_t *nc_off, - unsigned char nonce_counter[16], - unsigned char stream_block[16], + unsigned char nonce_counter[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char stream_block[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ diff --git a/library/aria.c b/library/aria.c index f6d1c54986..f1bde78853 100644 --- a/library/aria.c +++ b/library/aria.c @@ -530,8 +530,8 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, int mode, - const unsigned char input[16], - unsigned char output[16] ) + const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] ) { int i; @@ -604,46 +604,46 @@ void mbedtls_aria_free( mbedtls_aria_context *ctx ) int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, int mode, size_t length, - unsigned char iv[16], + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ) { int i; - unsigned char temp[16]; + unsigned char temp[MBEDTLS_ARIA_BLOCKSIZE]; - if( length % 16 ) + if( length % MBEDTLS_ARIA_BLOCKSIZE ) return( MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH ); if( mode == MBEDTLS_ARIA_DECRYPT ) { while( length > 0 ) { - memcpy( temp, input, 16 ); + memcpy( temp, input, MBEDTLS_ARIA_BLOCKSIZE ); mbedtls_aria_crypt_ecb( ctx, mode, input, output ); - for( i = 0; i < 16; i++ ) + for( i = 0; i < MBEDTLS_ARIA_BLOCKSIZE; i++ ) output[i] = (unsigned char)( output[i] ^ iv[i] ); - memcpy( iv, temp, 16 ); + memcpy( iv, temp, MBEDTLS_ARIA_BLOCKSIZE ); - input += 16; - output += 16; - length -= 16; + input += MBEDTLS_ARIA_BLOCKSIZE; + output += MBEDTLS_ARIA_BLOCKSIZE; + length -= MBEDTLS_ARIA_BLOCKSIZE; } } else { while( length > 0 ) { - for( i = 0; i < 16; i++ ) + for( i = 0; i < MBEDTLS_ARIA_BLOCKSIZE; i++ ) output[i] = (unsigned char)( input[i] ^ iv[i] ); mbedtls_aria_crypt_ecb( ctx, mode, output, output ); - memcpy( iv, output, 16 ); + memcpy( iv, output, MBEDTLS_ARIA_BLOCKSIZE ); - input += 16; - output += 16; - length -= 16; + input += MBEDTLS_ARIA_BLOCKSIZE; + output += MBEDTLS_ARIA_BLOCKSIZE; + length -= MBEDTLS_ARIA_BLOCKSIZE; } } @@ -659,7 +659,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, int mode, size_t length, size_t *iv_off, - unsigned char iv[16], + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ) { @@ -706,8 +706,8 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, size_t length, size_t *nc_off, - unsigned char nonce_counter[16], - unsigned char stream_block[16], + unsigned char nonce_counter[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char stream_block[MBEDTLS_ARIA_BLOCKSIZE], const unsigned char *input, unsigned char *output ) { @@ -720,7 +720,7 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, nonce_counter, stream_block ); - for( i = 16; i > 0; i-- ) + for( i = MBEDTLS_ARIA_BLOCKSIZE; i > 0; i-- ) if( ++nonce_counter[i - 1] != 0 ) break; } @@ -750,13 +750,13 @@ static const uint8_t aria_test1_ecb_key[32] = // test key 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F // 256 bit }; -static const uint8_t aria_test1_ecb_pt[16] = // plaintext +static const uint8_t aria_test1_ecb_pt[MBEDTLS_ARIA_BLOCKSIZE] = // plaintext { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, // same for all 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF // key sizes }; -static const uint8_t aria_test1_ecb_ct[3][16] = // ciphertext +static const uint8_t aria_test1_ecb_ct[3][MBEDTLS_ARIA_BLOCKSIZE] = // ciphertext { { 0xD7, 0x18, 0xFB, 0xD6, 0xAB, 0x64, 0x4C, 0x73, // 128 bit 0x9D, 0xA9, 0x5F, 0x3B, 0xE6, 0x45, 0x17, 0x78 }, @@ -792,7 +792,7 @@ static const uint8_t aria_test2_pt[48] = #endif #if (defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB)) -static const uint8_t aria_test2_iv[16] = +static const uint8_t aria_test2_iv[MBEDTLS_ARIA_BLOCKSIZE] = { 0x0f, 0x1e, 0x2d, 0x3c, 0x4b, 0x5a, 0x69, 0x78, // same for CBC, CFB 0x87, 0x96, 0xa5, 0xb4, 0xc3, 0xd2, 0xe1, 0xf0 // CTR has zero IV @@ -887,7 +887,7 @@ static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertext int mbedtls_aria_self_test( int verbose ) { int i; - uint8_t blk[16]; + uint8_t blk[MBEDTLS_ARIA_BLOCKSIZE]; mbedtls_aria_context ctx; #if (defined(MBEDTLS_CIPHER_MODE_CFB) || defined(MBEDTLS_CIPHER_MODE_CTR)) @@ -897,7 +897,7 @@ int mbedtls_aria_self_test( int verbose ) #if (defined(MBEDTLS_CIPHER_MODE_CBC) || \ defined(MBEDTLS_CIPHER_MODE_CFB) || \ defined(MBEDTLS_CIPHER_MODE_CTR)) - uint8_t buf[48], iv[16]; + uint8_t buf[48], iv[MBEDTLS_ARIA_BLOCKSIZE]; #endif /* @@ -911,7 +911,7 @@ int mbedtls_aria_self_test( int verbose ) mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, aria_test1_ecb_pt, blk ); - if( memcmp( blk, aria_test1_ecb_ct[i], 16 ) != 0 ) + if( memcmp( blk, aria_test1_ecb_ct[i], MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) ARIA_SELF_TEST_IF_FAIL; /* test ECB decryption */ @@ -920,7 +920,7 @@ int mbedtls_aria_self_test( int verbose ) mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, aria_test1_ecb_ct[i], blk ); - if (memcmp( blk, aria_test1_ecb_pt, 16 ) != 0) + if (memcmp( blk, aria_test1_ecb_pt, MBEDTLS_ARIA_BLOCKSIZE ) != 0) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) @@ -936,7 +936,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); - memcpy( iv, aria_test2_iv, 16 ); + memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0x55, sizeof(buf) ); mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, iv, aria_test2_pt, buf ); @@ -947,7 +947,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_dec( &ctx, aria_test2_key, 128 + 64 * i ); - memcpy( iv, aria_test2_iv, 16 ); + memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0xAA, sizeof(buf) ); mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, 48, iv, aria_test2_cbc_ct[i], buf ); @@ -966,7 +966,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); - memcpy( iv, aria_test2_iv, 16 ); + memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0x55, sizeof(buf) ); j = 0; mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, &j, iv, @@ -978,7 +978,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); - memcpy( iv, aria_test2_iv, 16 ); + memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0xAA, sizeof(buf) ); j = 0; mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, 48, &j, @@ -997,7 +997,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); - memset( iv, 0, 16 ); // IV = 0 + memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 memset( buf, 0x55, sizeof(buf) ); j = 0; mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, @@ -1009,7 +1009,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); - memset( iv, 0, 16 ); // IV = 0 + memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 memset( buf, 0xAA, sizeof(buf) ); j = 0; mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, From 7fc08795c1fa8f3d667a19abfd7bf58e5b237285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 09:33:20 +0100 Subject: [PATCH 0177/1100] aria: more whitespace fixes --- library/aria.c | 68 +++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/library/aria.c b/library/aria.c index f1bde78853..c7cdb97909 100644 --- a/library/aria.c +++ b/library/aria.c @@ -234,19 +234,19 @@ static inline void aria_sl( uint32_t *a, uint32_t *b, const uint8_t sa[0x100], const uint8_t sb[0x100], const uint8_t sc[0x100], const uint8_t sd[0x100] ) { - *a = ( (uint32_t) sa[ *a & 0xFF]) ^ + *a = ( (uint32_t) sa[ *a & 0xFF] ) ^ (((uint32_t) sb[(*a >> 8) & 0xFF]) << 8) ^ (((uint32_t) sc[(*a >> 16) & 0xFF]) << 16) ^ (((uint32_t) sd[ *a >> 24 ]) << 24); - *b = ( (uint32_t) sa[ *b & 0xFF]) ^ + *b = ( (uint32_t) sa[ *b & 0xFF] ) ^ (((uint32_t) sb[(*b >> 8) & 0xFF]) << 8) ^ (((uint32_t) sc[(*b >> 16) & 0xFF]) << 16) ^ (((uint32_t) sd[ *b >> 24 ]) << 24); - *c = ( (uint32_t) sa[ *c & 0xFF]) ^ + *c = ( (uint32_t) sa[ *c & 0xFF] ) ^ (((uint32_t) sb[(*c >> 8) & 0xFF]) << 8) ^ (((uint32_t) sc[(*c >> 16) & 0xFF]) << 16) ^ (((uint32_t) sd[ *c >> 24 ]) << 24); - *d = ( (uint32_t) sa[ *d & 0xFF]) ^ + *d = ( (uint32_t) sa[ *d & 0xFF] ) ^ (((uint32_t) sb[(*d >> 8) & 0xFF]) << 8) ^ (((uint32_t) sc[(*d >> 16) & 0xFF]) << 16) ^ (((uint32_t) sd[ *d >> 24 ]) << 24); @@ -362,8 +362,8 @@ static const uint8_t aria_is2[0x100] = /* * Helper for key schedule: r = FO( p, k ) ^ x */ -static void aria_fo_xor( uint32_t r[4], - const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) +static void aria_fo_xor( uint32_t r[4], const uint32_t p[4], + const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; @@ -384,8 +384,8 @@ static void aria_fo_xor( uint32_t r[4], /* * Helper for key schedule: r = FE( p, k ) ^ x */ -static void aria_fe_xor(uint32_t r[4], - const uint32_t p[4], const uint32_t k[4], const uint32_t x[4] ) +static void aria_fe_xor( uint32_t r[4], const uint32_t p[4], + const uint32_t k[4], const uint32_t x[4] ) { uint32_t a, b, c, d; @@ -409,8 +409,8 @@ static void aria_fe_xor(uint32_t r[4], * We chose to store bytes into 32-bit words in little-endian format (see * GET/PUT_UINT32_LE) so we need to reverse bytes here. */ -static void aria_rot128(uint32_t r[4], const uint32_t a[4], - const uint32_t b[4], uint8_t n) +static void aria_rot128( uint32_t r[4], const uint32_t a[4], + const uint32_t b[4], uint8_t n ) { uint8_t i, j; uint32_t t, u; @@ -449,7 +449,7 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, int i; uint32_t w[4][4], *w2; - if (keybits != 128 && keybits != 192 && keybits != 256) + if( keybits != 128 && keybits != 192 && keybits != 256 ) return( MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH ); /* Copy key to W0 (and potential remainder to W1) */ @@ -458,7 +458,7 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, GET_UINT32_LE( w[0][2], key, 8 ); GET_UINT32_LE( w[0][3], key, 12 ); - memset(w[1], 0, 16); + memset( w[1], 0, 16 ); if( keybits >= 192 ) { GET_UINT32_LE( w[1][0], key, 16 ); // 192 bit key @@ -516,7 +516,7 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, } /* apply affine transform to middle keys */ - for (i = 1; i < ctx->nr; i++ ) + for( i = 1; i < ctx->nr; i++ ) { aria_a( &ctx->rk[i][0], &ctx->rk[i][1], &ctx->rk[i][2], &ctx->rk[i][3] ); @@ -545,7 +545,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, GET_UINT32_LE( d, input, 12 ); i = 0; - while (1) + while( 1 ) { a ^= ctx->rk[i][0]; b ^= ctx->rk[i][1]; @@ -563,7 +563,7 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, i++; aria_sl( &a, &b, &c, &d, aria_is1, aria_is2, aria_sb1, aria_sb2 ); - if (i >= ctx->nr) + if( i >= ctx->nr ) break; aria_a( &a, &b, &c, &d ); } @@ -907,7 +907,7 @@ int mbedtls_aria_self_test( int verbose ) { /* test ECB encryption */ if( verbose ) - printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i); + printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, aria_test1_ecb_pt, blk ); @@ -916,15 +916,15 @@ int mbedtls_aria_self_test( int verbose ) /* test ECB decryption */ if( verbose ) - printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i); + printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, aria_test1_ecb_ct[i], blk ); - if (memcmp( blk, aria_test1_ecb_pt, MBEDTLS_ARIA_BLOCKSIZE ) != 0) + if( memcmp( blk, aria_test1_ecb_pt, MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf("\n"); + printf( "\n" ); /* * Test set 2 @@ -934,10 +934,10 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CBC encryption */ if( verbose ) - printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i); + printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); - memset( buf, 0x55, sizeof(buf) ); + memset( buf, 0x55, sizeof( buf ) ); mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, iv, aria_test2_pt, buf ); if( memcmp( buf, aria_test2_cbc_ct[i], 48 ) != 0 ) @@ -945,17 +945,17 @@ int mbedtls_aria_self_test( int verbose ) /* Test CBC decryption */ if( verbose ) - printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i); + printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_dec( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); - memset( buf, 0xAA, sizeof(buf) ); + memset( buf, 0xAA, sizeof( buf ) ); mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, 48, iv, aria_test2_cbc_ct[i], buf ); if( memcmp( buf, aria_test2_pt, 48 ) != 0 ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf("\n"); + printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -964,10 +964,10 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CFB encryption */ if( verbose ) - printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i); + printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); - memset( buf, 0x55, sizeof(buf) ); + memset( buf, 0x55, sizeof( buf ) ); j = 0; mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, 48, &j, iv, aria_test2_pt, buf ); @@ -976,10 +976,10 @@ int mbedtls_aria_self_test( int verbose ) /* Test CFB decryption */ if( verbose ) - printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i); + printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); - memset( buf, 0xAA, sizeof(buf) ); + memset( buf, 0xAA, sizeof( buf ) ); j = 0; mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, 48, &j, iv, aria_test2_cfb_ct[i], buf ); @@ -987,7 +987,7 @@ int mbedtls_aria_self_test( int verbose ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf("\n"); + printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) @@ -995,10 +995,10 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CTR encryption */ if( verbose ) - printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i); + printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 - memset( buf, 0x55, sizeof(buf) ); + memset( buf, 0x55, sizeof( buf ) ); j = 0; mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, aria_test2_pt, buf ); @@ -1007,10 +1007,10 @@ int mbedtls_aria_self_test( int verbose ) /* Test CTR decryption */ if( verbose ) - printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i); + printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 - memset( buf, 0xAA, sizeof(buf) ); + memset( buf, 0xAA, sizeof( buf ) ); j = 0; mbedtls_aria_crypt_ctr( &ctx, 48, &j, iv, blk, aria_test2_ctr_ct[i], buf ); @@ -1018,7 +1018,7 @@ int mbedtls_aria_self_test( int verbose ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf("\n"); + printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ return( 0 ); From 906bc90b301762ccd5bde86f825b33dce96bfc3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 09:39:01 +0100 Subject: [PATCH 0178/1100] aria: number of rounds is non-negative --- include/mbedtls/aria.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index bcbc03da5a..b3617505d3 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -63,7 +63,7 @@ extern "C" { */ typedef struct { - int nr; /*!< The number of rounds (12, 14 or 16) */ + unsigned char nr; /*!< The number of rounds (12, 14 or 16) */ /*! The ARIA round keys. */ uint32_t rk[MBEDTLS_ARIA_MAX_ROUNDS + 1][MBEDTLS_ARIA_BLOCKSIZE / 4]; } From d82d79154cc0683e18d370fd98814a33905d98e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 09:43:21 +0100 Subject: [PATCH 0179/1100] aria: fix more whitespace --- tests/suites/test_suite_aria.function | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function index d3d8ebeead..38fc7e3d78 100644 --- a/tests/suites/test_suite_aria.function +++ b/tests/suites/test_suite_aria.function @@ -9,7 +9,7 @@ /* BEGIN_CASE */ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) + char *hex_dst_string, int setkey_result ) { unsigned char key_str[1000]; unsigned char src_str[1000]; @@ -48,7 +48,7 @@ exit: /* BEGIN_CASE */ void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) + char *hex_dst_string, int setkey_result ) { unsigned char key_str[1000]; unsigned char src_str[1000]; @@ -87,8 +87,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ void aria_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) + char *hex_src_string, char *hex_dst_string, + int cbc_result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; @@ -127,8 +127,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ void aria_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) + char *hex_src_string, char *hex_dst_string, + int cbc_result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; @@ -167,8 +167,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int result ) + char *hex_src_string, char *hex_dst_string, + int result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; @@ -205,8 +205,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int result ) + char *hex_src_string, char *hex_dst_string, + int result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; @@ -243,8 +243,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int result ) + char *hex_src_string, char *hex_dst_string, + int result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; @@ -281,8 +281,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int result ) + char *hex_src_string, char *hex_dst_string, + int result ) { unsigned char key_str[1000]; unsigned char iv_str[1000]; From 8abc34988165be7aaca736d8f016c9025e4f40c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 10:02:47 +0100 Subject: [PATCH 0180/1100] aria: rationalize buffer sizes in test functions --- include/mbedtls/aria.h | 5 +- tests/suites/test_suite_aria.function | 169 ++++++++++++++------------ 2 files changed, 92 insertions(+), 82 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index b3617505d3..2eed2f974a 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -42,8 +42,9 @@ #define MBEDTLS_ARIA_ENCRYPT 1 /**< ARIA encryption. */ #define MBEDTLS_ARIA_DECRYPT 0 /**< ARIA decryption. */ -#define MBEDTLS_ARIA_BLOCKSIZE 16 /**< ARIA block size in bytes. */ -#define MBEDTLS_ARIA_MAX_ROUNDS 16 /**< Maxiumum number of rounds in ARIA. */ +#define MBEDTLS_ARIA_BLOCKSIZE 16 /**< ARIA block size in bytes. */ +#define MBEDTLS_ARIA_MAX_ROUNDS 16 /**< Maxiumum number of rounds in ARIA. */ +#define MBEDTLS_ARIA_MAX_KEYSIZE 32 /**< Maximum size of an ARIA key in bytes. */ #define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH -0x005C /**< Invalid key length. */ #define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function index 38fc7e3d78..b363406063 100644 --- a/tests/suites/test_suite_aria.function +++ b/tests/suites/test_suite_aria.function @@ -1,5 +1,14 @@ /* BEGIN_HEADER */ #include "mbedtls/aria.h" + +/* Maxium size of data used by test vectors + * WARNING: to be adapted if and when adding larger test cases */ +#define ARIA_MAX_DATASIZE 160 + +/* Maximum sizes of hexified things */ +#define ARIA_MAX_KEY_STR ( 2 * MBEDTLS_ARIA_MAX_KEYSIZE + 1 ) +#define ARIA_BLOCK_STR ( 2 * MBEDTLS_ARIA_BLOCKSIZE + 1 ) +#define ARIA_MAX_DATA_STR ( 2 * ARIA_MAX_DATASIZE + 1 ) /* END_HEADER */ /* BEGIN_DEPENDENCIES @@ -11,17 +20,17 @@ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, char *hex_dst_string, int setkey_result ) { - unsigned char key_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; int key_len, data_len, i; - memset( key_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -31,7 +40,7 @@ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, == setkey_result ); if( setkey_result == 0 ) { - for( i = 0; i < data_len; i += 16 ) + for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, src_str + i, output + i ) == 0 ); @@ -50,17 +59,17 @@ exit: void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, char *hex_dst_string, int setkey_result ) { - unsigned char key_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; int key_len, data_len, i; - memset( key_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -70,7 +79,7 @@ void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, == setkey_result ); if( setkey_result == 0 ) { - for( i = 0; i < data_len; i += 16 ) + for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, src_str + i, output + i ) == 0 ); @@ -90,19 +99,19 @@ void aria_encrypt_cbc( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int cbc_result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -130,19 +139,19 @@ void aria_decrypt_cbc( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int cbc_result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -170,20 +179,20 @@ void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; size_t iv_offset = 0; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -208,20 +217,20 @@ void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; mbedtls_aria_context ctx; size_t iv_offset = 0; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -246,21 +255,21 @@ void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; - unsigned char blk[16]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; + unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE]; mbedtls_aria_context ctx; size_t iv_offset = 0; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); @@ -284,21 +293,21 @@ void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, int result ) { - unsigned char key_str[1000]; - unsigned char iv_str[1000]; - unsigned char src_str[1000]; - unsigned char dst_str[1000]; - unsigned char output[1000]; - unsigned char blk[16]; + unsigned char key_str[ARIA_MAX_KEY_STR]; + unsigned char iv_str[ARIA_BLOCK_STR]; + unsigned char src_str[ARIA_MAX_DATA_STR]; + unsigned char dst_str[ARIA_MAX_DATA_STR]; + unsigned char output[ARIA_MAX_DATASIZE]; + unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE]; mbedtls_aria_context ctx; size_t iv_offset = 0; int key_len, data_len; - memset( key_str, 0x00, 1000 ); - memset( iv_str, 0x00, 1000 ); - memset( src_str, 0x00, 1000 ); - memset( dst_str, 0x00, 1000 ); - memset( output, 0x00, 1000 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aria_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); From 2078725feb3cb741a7d9224a3349421efbc9e64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 10:37:47 +0100 Subject: [PATCH 0181/1100] aria: check arm arch version for asm rev and rev16 are only supported from v6 (all profiles) and up. arm-none-eabi-gcc picks a lower architecture version by default, which means before this commit it would fail to build (assembler error) unless you manually specified -march=armv6-m -mthumb or similar, which broke all.sh. Source for version-checking macros: - GCC/Clang: use the -E -dM - = 6000000 ) + ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) && \ + __ARM_ARCH >= 6 static inline uint32_t aria_p1( uint32_t x ) { uint32_t r; @@ -101,7 +102,8 @@ static inline uint32_t aria_p1( uint32_t x ) return( r ); } #define ARIA_P1 aria_p1 -#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 +#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 && \ + ( __TARGET_ARCH_ARM >= 6 || __TARGET_ARCH_THUMB >= 3 ) static inline uint32_t aria_p1( uint32_t x ) { uint32_t r; @@ -139,10 +141,11 @@ static inline uint32_t aria_p1( uint32_t x ) * so let's provide asm versions for common platforms with C fallback. */ #if defined(MBEDTLS_HAVE_ASM) -#if defined(__arm__) +#if defined(__arm__) /* rev available from v6 up */ /* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ #if defined(__GNUC__) && \ - ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) + ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) && \ + __ARM_ARCH >= 6 static inline uint32_t aria_p3( uint32_t x ) { uint32_t r; @@ -150,7 +153,8 @@ static inline uint32_t aria_p3( uint32_t x ) return( r ); } #define ARIA_P3 aria_p3 -#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 +#elif defined(__ARMCC_VERSION) && __ARMCC_VERSION < 6000000 && \ + ( __TARGET_ARCH_ARM >= 6 || __TARGET_ARCH_THUMB >= 3 ) static inline uint32_t aria_p3( uint32_t x ) { uint32_t r; From 21662148f71fd622e9533ae9a11f9f19085b526f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 11:27:14 +0100 Subject: [PATCH 0182/1100] aria: improve compiler compat by using __asm gcc --std=c99 doesn't like the shorter "asm" (this broke all.sh) --- library/aria.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/aria.c b/library/aria.c index 7a43d416b0..55efd9a529 100644 --- a/library/aria.c +++ b/library/aria.c @@ -98,7 +98,7 @@ static void mbedtls_zeroize( void *v, size_t n ) { static inline uint32_t aria_p1( uint32_t x ) { uint32_t r; - asm( "rev16 %0, %1" : "=l" (r) : "l" (x) ); + __asm( "rev16 %0, %1" : "=l" (r) : "l" (x) ); return( r ); } #define ARIA_P1 aria_p1 @@ -149,7 +149,7 @@ static inline uint32_t aria_p1( uint32_t x ) static inline uint32_t aria_p3( uint32_t x ) { uint32_t r; - asm( "rev %0, %1" : "=l" (r) : "l" (x) ); + __asm( "rev %0, %1" : "=l" (r) : "l" (x) ); return( r ); } #define ARIA_P3 aria_p3 @@ -168,7 +168,7 @@ static inline uint32_t aria_p3( uint32_t x ) defined(__i386__) || defined(__amd64__) || defined( __x86_64__) static inline uint32_t aria_p3( uint32_t x ) { - asm( "bswap %0" : "=r" (x) : "0" (x) ); + __asm( "bswap %0" : "=r" (x) : "0" (x) ); return( x ); } #define ARIA_P3 aria_p3 From f6b787cbcc7944b3974aae896d4547c7d2847ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 13:48:21 +0100 Subject: [PATCH 0183/1100] Fix typo in documentation (CTR warning) --- include/mbedtls/aes.h | 2 +- include/mbedtls/aria.h | 2 +- include/mbedtls/blowfish.h | 2 +- include/mbedtls/camellia.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 27be761687..22eb116b84 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -314,7 +314,7 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * 2. Use a randomly-generated \p nonce_counter for each call. * With this strategy, you need to ensure the nonce is generated * in an unbiased way and you must not encrypt more than 2**64 - * block of data. + * blocks of data. * * Note that for both stategies, the limit is in number of blocks * and that an AES block is 16 bytes. diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 2eed2f974a..0c4960b1b2 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -262,7 +262,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * 2. Use a randomly-generated \p nonce_counter for each call. * With this strategy, you need to ensure the nonce is generated * in an unbiased way and you must not encrypt more than 2**64 - * block of data. + * blocks of data. * * Note that for both stategies, the limit is in number of blocks * and that an ARIA block is 16 bytes. diff --git a/include/mbedtls/blowfish.h b/include/mbedtls/blowfish.h index 4b4916e03a..f4e8afcb6e 100644 --- a/include/mbedtls/blowfish.h +++ b/include/mbedtls/blowfish.h @@ -184,7 +184,7 @@ int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, * 2. Use a randomly-generated \p nonce_counter for each call. * With this strategy, you need to ensure the nonce is generated * in an unbiased way and you must not encrypt more than 2**32 - * block of data. + * blocks of data. * * Note that for both stategies, the limit is in number of blocks * and that a Blowfish block is 8 bytes. diff --git a/include/mbedtls/camellia.h b/include/mbedtls/camellia.h index 1b138fc9e7..74e09615bf 100644 --- a/include/mbedtls/camellia.h +++ b/include/mbedtls/camellia.h @@ -201,7 +201,7 @@ int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, * 2. Use a randomly-generated \p nonce_counter for each call. * With this strategy, you need to ensure the nonce is generated * in an unbiased way and you must not encrypt more than 2**64 - * block of data. + * blocks of data. * * Note that for both stategies, the limit is in number of blocks * and that a CAMELLIA block is 16 bytes. From 977dc36b1455a764de6657bbb61e935dfcdc1991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 13:51:52 +0100 Subject: [PATCH 0184/1100] aria test suite: uniformize line wrapping --- tests/suites/test_suite_aria.function | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function index b363406063..a662047cd9 100644 --- a/tests/suites/test_suite_aria.function +++ b/tests/suites/test_suite_aria.function @@ -43,7 +43,8 @@ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, - src_str + i, output + i ) == 0 ); + src_str + i, output + i ) + == 0 ); } hexify( dst_str, output, data_len ); @@ -82,7 +83,8 @@ void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, - src_str + i, output + i ) == 0 ); + src_str + i, output + i ) + == 0 ); } hexify( dst_str, output, data_len ); @@ -202,7 +204,8 @@ void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT, data_len, &iv_offset, iv_str, - src_str, output ) == result ); + src_str, output ) + == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -240,7 +243,8 @@ void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT, data_len, &iv_offset, iv_str, - src_str, output ) == result ); + src_str, output ) + == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -278,7 +282,8 @@ void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str, - blk, src_str, output ) == result ); + blk, src_str, output ) + == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); @@ -316,7 +321,8 @@ void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string, mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str, - blk, src_str, output ) == result ); + blk, src_str, output ) + == result ); hexify( dst_str, output, data_len ); TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); From 366e1b046457f2e9d1c62fab6c32669e04a3fe11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 1 Mar 2018 14:48:10 +0100 Subject: [PATCH 0185/1100] aria: fix comment on aria_a function The new version of the comment has been generated by the following python3 script, when the first constant is copy-pasted from RFC 5794 2.4.3. #!/usr/bin/python3 RFC_A = """ y0 = x3 ^ x4 ^ x6 ^ x8 ^ x9 ^ x13 ^ x14, y1 = x2 ^ x5 ^ x7 ^ x8 ^ x9 ^ x12 ^ x15, y2 = x1 ^ x4 ^ x6 ^ x10 ^ x11 ^ x12 ^ x15, y3 = x0 ^ x5 ^ x7 ^ x10 ^ x11 ^ x13 ^ x14, y4 = x0 ^ x2 ^ x5 ^ x8 ^ x11 ^ x14 ^ x15, y5 = x1 ^ x3 ^ x4 ^ x9 ^ x10 ^ x14 ^ x15, y6 = x0 ^ x2 ^ x7 ^ x9 ^ x10 ^ x12 ^ x13, y7 = x1 ^ x3 ^ x6 ^ x8 ^ x11 ^ x12 ^ x13, y8 = x0 ^ x1 ^ x4 ^ x7 ^ x10 ^ x13 ^ x15, y9 = x0 ^ x1 ^ x5 ^ x6 ^ x11 ^ x12 ^ x14, y10 = x2 ^ x3 ^ x5 ^ x6 ^ x8 ^ x13 ^ x15, y11 = x2 ^ x3 ^ x4 ^ x7 ^ x9 ^ x12 ^ x14, y12 = x1 ^ x2 ^ x6 ^ x7 ^ x9 ^ x11 ^ x12, y13 = x0 ^ x3 ^ x6 ^ x7 ^ x8 ^ x10 ^ x13, y14 = x0 ^ x3 ^ x4 ^ x5 ^ x9 ^ x11 ^ x14, y15 = x1 ^ x2 ^ x4 ^ x5 ^ x8 ^ x10 ^ x15. """ matrix = [] for l in RFC_A.split('\n')[1:-1]: rhs = l.split('=')[1][:-1] row = tuple(hex(int(t[2:]))[2:] for t in rhs.split('^')) matrix.append(row) out = {} out['a'] = tuple(''.join(w) for w in zip(*(matrix[0:4]))) out['b'] = tuple(''.join(w) for w in zip(*(matrix[4:8]))) out['c'] = tuple(''.join(w) for w in zip(*(matrix[8:12]))) out['d'] = tuple(''.join(w) for w in zip(*(matrix[12:]))) out2 = {} for o, r in out.items(): row = list(r) for i in range(len(r) - 1): w1 = row[i] if len(set(w1)) == 2: w2 = row[i+1] nw1 = nw2 = '' for j in range(len(w1)): if w1[j] in nw1: nw1 += w2[j] nw2 += w1[j] else: nw1 += w1[j] nw2 += w2[j] row[i] = nw1 row[i+1] = nw2 out2[o] = row for o in 'abcd': print(o, '=', ' + '.join(out[o])) print(' ', '=', ' + '.join(out2[o])) --- library/aria.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/aria.c b/library/aria.c index 55efd9a529..fdc2137fe9 100644 --- a/library/aria.c +++ b/library/aria.c @@ -190,11 +190,11 @@ static inline uint32_t aria_p3( uint32_t x ) * * a = 3210 + 4545 + 6767 + 88aa + 99bb + dccd + effe * = 3210 + 4567 + 6745 + 89ab + 98ba + dcfe + efcd - * b = 0101 + 2323 + 5476 + 8998 + baab + ecec + ffdd + * b = 0101 + 2323 + 5476 + 8998 + baab + eecc + ffdd * = 0123 + 2301 + 5476 + 89ab + ba98 + efcd + fedc - * c = 0022 + 1133 + 4545 + 7667 + ab89 + dcdc + fefe + * c = 0022 + 1133 + 4554 + 7667 + ab89 + dcdc + fefe * = 0123 + 1032 + 4567 + 7654 + ab89 + dcfe + fedc - * d = 1001 + 2332 + 6644 + 7755 + 9898 + baba + cedf + * d = 1001 + 2332 + 6644 + 7755 + 9898 + baba + cdef * = 1032 + 2301 + 6745 + 7654 + 98ba + ba98 + cdef * * Note: another presentation of the A transform can be found as the first From df761d5a6bb8deede515f6ab8ca656f8778ec24b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 1 Mar 2018 22:18:14 +0100 Subject: [PATCH 0186/1100] Fix build with gcc -O -Wall Fix warnings from gcc -O -Wall about `ret` used uninitialized in CMAC selftest auxiliary functions. The variable was indeed uninitialized if the function was called with num_tests=0 (which never happens). --- library/cmac.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/cmac.c b/library/cmac.c index 9dbff90386..a76313e94b 100644 --- a/library/cmac.c +++ b/library/cmac.c @@ -832,6 +832,7 @@ static int cmac_test_subkeys( int verbose, mbedtls_cipher_free( &ctx ); } + ret = 0; goto exit; cleanup: @@ -887,6 +888,7 @@ static int cmac_test_wth_cipher( int verbose, if( verbose != 0 ) mbedtls_printf( "passed\n" ); } + ret = 0; exit: return( ret ); From b4ef45b4f561f7cf272b9a5cfeb3847027e33ef1 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 1 Mar 2018 22:23:50 +0100 Subject: [PATCH 0187/1100] all.sh: build with -O -Werror in the full config Build with MBEDTLS_DEPRECATED_REMOVED and MBEDTLS_DEPRECATED_WARNING separately. Do these builds with `-O -Werror -Wall -Wextra` to catch a maximum of issues while we're at it. Do one with gcc and one with clang for variety. This caught an uninitialized variable warning in cmac.c that builds without -O didn't catch. --- tests/scripts/all.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 4cd5246c58..f025e2a64a 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -547,11 +547,23 @@ if_build_succeeded tests/ssl-opt.sh -f Default msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' -msg "build: cmake, full config + DEPRECATED_REMOVED, clang, C99" -# No cleanup: tweak the configuration, keep the makefiles +msg "build: make, full config + DEPRECATED_WARNING, gcc -O" # ~ 30s +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl full scripts/config.pl set MBEDTLS_DEPRECATED_WARNING +# Build with -O -Wextra to catch a maximum of issues. +make CC=gcc CFLAGS='-O -Werror -Wall -Wextra' lib programs +make CC=gcc CFLAGS='-O -Werror -Wall -Wextra -Wno-unused-function' tests + +msg "build: make, full config + DEPRECATED_REMOVED, clang -O" # ~ 30s +# No cleanup, just tweak the configuration and rebuild +make clean +scripts/config.pl unset MBEDTLS_DEPRECATED_WARNING scripts/config.pl set MBEDTLS_DEPRECATED_REMOVED -make +# Build with -O -Wextra to catch a maximum of issues. +make CC=clang CFLAGS='-O -Werror -Wall -Wextra' lib programs +make CC=clang CFLAGS='-O -Werror -Wall -Wextra -Wno-unused-function' tests msg "test/build: curves.pl (gcc)" # ~ 4 min cleanup From ce5673cbe651c42d32062cc73ab53d2513928e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 6 Mar 2018 09:54:10 +0100 Subject: [PATCH 0188/1100] Add reference to github issue in compat.sh --- tests/compat.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/compat.sh b/tests/compat.sh index 0a863fa487..b914386bb4 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -435,7 +435,8 @@ add_common_ciphersuites() # with its Mbed TLS name. # # NOTE: for some reason RSA-PSK doesn't work with OpenSSL, -# so RSA-PSK ciphersuites need to go in other sections. +# so RSA-PSK ciphersuites need to go in other sections, see +# https://github.com/ARMmbed/mbedtls/issues/1419 add_openssl_ciphersuites() { case $TYPE in From 84052570355bb5608248f162b622068b7b9eaa7c Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Mar 2018 12:12:47 +0100 Subject: [PATCH 0189/1100] Support out-of-tree testing with CMake Create extra symbolic links with CMake so that SSL testing (ssl-opt.sh and compat.sh) works in out-of-tree builds. --- CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ include/CMakeLists.txt | 6 ++++++ tests/CMakeLists.txt | 27 ++++++--------------------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ca4cba2165..df03dd6073 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,30 @@ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull" FORCE) +# Create a symbolic link from ${base_name} in the binary directory +# to the corresponding path in the source directory. +function(link_to_source base_name) + # Get OS dependent path to use in `execute_process` + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/${base_name}" link) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${base_name}" target) + + if (NOT EXISTS ${link}) + if (CMAKE_HOST_UNIX) + set(command ln -s ${target} ${link}) + else() + set(command cmd.exe /c mklink /j ${link} ${target}) + endif() + + execute_process(COMMAND ${command} + RESULT_VARIABLE result + ERROR_VARIABLE output) + + if (NOT ${result} EQUAL 0) + message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}") + endif() + endif() +endfunction(link_to_source) + string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}") if(CMAKE_COMPILER_IS_GNUCC) @@ -164,3 +188,9 @@ if(ENABLE_TESTING) ) endif(UNIX) endif() + +# Make scripts and data files needed for testing available in an +# out-of-source build. +if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) + link_to_source(scripts) +endif() diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 985a3530b9..3081b2678b 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -9,3 +9,9 @@ if(INSTALL_MBEDTLS_HEADERS) PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ) endif(INSTALL_MBEDTLS_HEADERS) + +# Make scripts and data files needed for testing available in an +# out-of-source build. +if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) + link_to_source(mbedtls) +endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 16e19a9275..9fd4916bbd 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -105,26 +105,11 @@ add_test_suite(xtea) add_test_suite(x509parse) add_test_suite(x509write) -# Make data_files available in an out-of-source build +# Make scripts and data files needed for testing available in an +# out-of-source build. if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) - # Get OS dependent path to use in `execute_process` - file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/data_files" link) - file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/data_files" target) - - if (NOT EXISTS ${link}) - if (CMAKE_HOST_UNIX) - set(command ln -s ${target} ${link}) - else() - set(command cmd.exe /c mklink /j ${link} ${target}) - endif() - - execute_process(COMMAND ${command} - RESULT_VARIABLE result - ERROR_VARIABLE output) - - if (NOT ${result} EQUAL 0) - message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}") - endif() - endif() + link_to_source(compat.sh) + link_to_source(data_files) + link_to_source(scripts) + link_to_source(ssl-opt.sh) endif() - From 31b07e283321b1470c31466d10ca8a8099b73bba Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Mar 2018 12:15:06 +0100 Subject: [PATCH 0190/1100] all.sh: be more conservative when cleaning up CMake artefacts Only delete things that we expect to find, to avoid deleting other things that people might have lying around in their build tree. Explicitly skip .git to avoid e.g. accidentally matching a branch name. --- tests/scripts/all.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index b559af8e18..7caebd5dc1 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -149,7 +149,13 @@ cleanup() { command make clean - find . -name yotta -prune -o -iname '*cmake*' -not -name CMakeLists.txt -exec rm -rf {} \+ + # Remove CMake artefacts + find . -name .git -prune -o -name yotta -prune -o \ + -iname CMakeFiles -exec rm -rf {} \+ -o \ + \( -iname cmake_install.cmake -o \ + -iname CTestTestfile.cmake -o \ + -iname CMakeCache.txt \) -exec rm {} \+ + # Recover files overwritten by in-tree CMake builds rm -f include/Makefile include/mbedtls/Makefile programs/*/Makefile git update-index --no-skip-worktree Makefile library/Makefile programs/Makefile tests/Makefile git checkout -- Makefile library/Makefile programs/Makefile tests/Makefile From a71d64c74fccffb1affe07cda551f6d073c88a88 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Mar 2018 12:16:57 +0100 Subject: [PATCH 0191/1100] all.sh: fix cleanup happening during an out-of-tree build --- tests/scripts/all.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 7caebd5dc1..00dc9ca2ee 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -147,6 +147,10 @@ EOF # remove built files as well as the cmake cache/config cleanup() { + if [ -n "${MBEDTLS_ROOT_DIR+set}" ]; then + cd "$MBEDTLS_ROOT_DIR" + fi + command make clean # Remove CMake artefacts @@ -857,6 +861,7 @@ msg "test: cmake 'out-of-source' build" make test cd "$MBEDTLS_ROOT_DIR" rm -rf "$OUT_OF_SOURCE_DIR" +unset MBEDTLS_ROOT_DIR From 0114ffc76bc4ff85b665e27cd180bd2e80968a77 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Mar 2018 12:17:20 +0100 Subject: [PATCH 0192/1100] all.sh: Verify out-of-tree testing with CMake Run a test case in ssl-opt.sh to validate that testing works in an out-of-tree CMake build. --- tests/scripts/all.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 00dc9ca2ee..cbf4837e6d 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -859,6 +859,17 @@ make msg "test: cmake 'out-of-source' build" make test +# Test an SSL option that requires an auxiliary script in test/scripts/. +# Also ensure that there are no error messages such as +# "No such file or directory", which would indicate that some required +# file is missing (ssl-opt.sh tolerates the absence of some files so +# may exit with status 0 but emit errors). +if_build_succeeded ./tests/ssl-opt.sh -f 'Fallback SCSV: beginning of list' 2>ssl-opt.err +if [ -s ssl-opt.err ]; then + cat ssl-opt.err >&2 + record_status [ ! -s ssl-opt.err ] + rm ssl-opt.err +fi cd "$MBEDTLS_ROOT_DIR" rm -rf "$OUT_OF_SOURCE_DIR" unset MBEDTLS_ROOT_DIR From b2f09c32658668d0d79469ed32c86b6836a4beb1 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 21 Mar 2018 12:38:00 +0100 Subject: [PATCH 0193/1100] Support out-of-tree testing with CMake: add ChangeLog entry. Fixes #1193 --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8db0215914..5d8673373a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS 2.x.x branch released xxxx-xx-xx + +Changes + * Support TLS testing in out-of-source builds using cmake. Fixes #1193. + = mbed TLS 2.7.0 branch released 2018-02-03 Security From be038366eab275e7157f979b2d57fc0da00eab3e Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 22 Mar 2018 17:12:46 +0100 Subject: [PATCH 0194/1100] Fix some comments regarding what files are symlinked --- CMakeLists.txt | 3 +-- include/CMakeLists.txt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index df03dd6073..8b26e6e7c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -189,8 +189,7 @@ if(ENABLE_TESTING) endif(UNIX) endif() -# Make scripts and data files needed for testing available in an -# out-of-source build. +# Make scripts needed for testing available in an out-of-source build. if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) link_to_source(scripts) endif() diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 3081b2678b..1b581a54dd 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -10,8 +10,7 @@ if(INSTALL_MBEDTLS_HEADERS) endif(INSTALL_MBEDTLS_HEADERS) -# Make scripts and data files needed for testing available in an -# out-of-source build. +# Make config.h available in an out-of-source build. ssl-opt.sh requires it. if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) link_to_source(mbedtls) endif() From 533407a266e4a63b7fd4721851dcf1773baf23b2 Mon Sep 17 00:00:00 2001 From: fbrosson Date: Wed, 4 Apr 2018 21:44:29 +0000 Subject: [PATCH 0195/1100] Use "#!/usr/bin/env perl" as shebang line. --- ChangeLog | 2 ++ scripts/config.pl | 2 +- scripts/generate_errors.pl | 2 +- scripts/generate_features.pl | 2 +- scripts/generate_visualc_files.pl | 2 +- scripts/massif_max.pl | 2 +- scripts/rename.pl | 2 +- tests/scripts/check-doxy-blocks.pl | 2 +- tests/scripts/curves.pl | 2 +- tests/scripts/depends-hashes.pl | 2 +- tests/scripts/depends-pkalgs.pl | 2 +- tests/scripts/gen_ctr_drbg.pl | 2 +- tests/scripts/gen_gcm_decrypt.pl | 2 +- tests/scripts/gen_gcm_encrypt.pl | 2 +- tests/scripts/gen_pkcs1_v21_sign_verify.pl | 2 +- tests/scripts/key-exchanges.pl | 2 +- tests/scripts/list-enum-consts.pl | 2 +- tests/scripts/recursion.pl | 2 +- tests/scripts/run-test-suites.pl | 2 +- tests/scripts/test-ref-configs.pl | 2 +- 20 files changed, 21 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ee82c6853..bed6c9cd9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -93,6 +93,8 @@ Changes * Improve robustness of mbedtls_ssl_derive_keys against the use of HMAC functions with non-HMAC ciphersuites. Independently contributed by Jiayuan Chen in #1377. Fixes #1437. + * Change the shebang line in Perl scripts to look up perl in the PATH. + Contributed by fbrosson. = mbed TLS 2.8.0 branch released 2018-03-16 diff --git a/scripts/config.pl b/scripts/config.pl index 5bf27859a8..468aeb93e1 100755 --- a/scripts/config.pl +++ b/scripts/config.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # This file is part of mbed TLS (https://tls.mbed.org) # diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index ac0fbff056..4f0ad31f1b 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # Generate error.c # diff --git a/scripts/generate_features.pl b/scripts/generate_features.pl index 2aa695c544..1bd82ca2a7 100755 --- a/scripts/generate_features.pl +++ b/scripts/generate_features.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # use strict; diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 8d36653b4c..5e3b9b5823 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # Generate files for MS Visual Studio: # - for VS6: main project (library) file, individual app files, workspace diff --git a/scripts/massif_max.pl b/scripts/massif_max.pl index d1ce4ca7de..4e3342a2ca 100755 --- a/scripts/massif_max.pl +++ b/scripts/massif_max.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # Parse a massif.out.xxx file and output peak total memory usage diff --git a/scripts/rename.pl b/scripts/rename.pl index c29519eef6..fb428098c8 100755 --- a/scripts/rename.pl +++ b/scripts/rename.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # This file is part of mbed TLS (https://tls.mbed.org) # diff --git a/tests/scripts/check-doxy-blocks.pl b/tests/scripts/check-doxy-blocks.pl index b0fd696355..4967699927 100755 --- a/tests/scripts/check-doxy-blocks.pl +++ b/tests/scripts/check-doxy-blocks.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # Detect comment blocks that are likely meant to be doxygen blocks but aren't. # diff --git a/tests/scripts/curves.pl b/tests/scripts/curves.pl index 004181432f..ddc90c580a 100755 --- a/tests/scripts/curves.pl +++ b/tests/scripts/curves.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # curves.pl # diff --git a/tests/scripts/depends-hashes.pl b/tests/scripts/depends-hashes.pl index 29dcfb00ce..f57e7ed88d 100755 --- a/tests/scripts/depends-hashes.pl +++ b/tests/scripts/depends-hashes.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # depends-hashes.pl # diff --git a/tests/scripts/depends-pkalgs.pl b/tests/scripts/depends-pkalgs.pl index 14c92b2214..97a43e881b 100755 --- a/tests/scripts/depends-pkalgs.pl +++ b/tests/scripts/depends-pkalgs.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # depends-pkalgs.pl # diff --git a/tests/scripts/gen_ctr_drbg.pl b/tests/scripts/gen_ctr_drbg.pl index 66d9b3ab03..08ca5dfa29 100755 --- a/tests/scripts/gen_ctr_drbg.pl +++ b/tests/scripts/gen_ctr_drbg.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # Based on NIST CTR_DRBG.rsp validation file # Only uses AES-256-CTR cases that use a Derivation function diff --git a/tests/scripts/gen_gcm_decrypt.pl b/tests/scripts/gen_gcm_decrypt.pl index 6decac2867..03809cb946 100755 --- a/tests/scripts/gen_gcm_decrypt.pl +++ b/tests/scripts/gen_gcm_decrypt.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # Based on NIST gcmDecryptxxx.rsp validation files # Only first 3 of every set used for compile time saving diff --git a/tests/scripts/gen_gcm_encrypt.pl b/tests/scripts/gen_gcm_encrypt.pl index 8adbbcefc1..29ec677da1 100755 --- a/tests/scripts/gen_gcm_encrypt.pl +++ b/tests/scripts/gen_gcm_encrypt.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # Based on NIST gcmEncryptIntIVxxx.rsp validation files # Only first 3 of every set used for compile time saving diff --git a/tests/scripts/gen_pkcs1_v21_sign_verify.pl b/tests/scripts/gen_pkcs1_v21_sign_verify.pl index 0d7fc7d1ed..95c52358ad 100755 --- a/tests/scripts/gen_pkcs1_v21_sign_verify.pl +++ b/tests/scripts/gen_pkcs1_v21_sign_verify.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # use strict; diff --git a/tests/scripts/key-exchanges.pl b/tests/scripts/key-exchanges.pl index d167c67c73..3bf7ae34fa 100755 --- a/tests/scripts/key-exchanges.pl +++ b/tests/scripts/key-exchanges.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # key-exchanges.pl # diff --git a/tests/scripts/list-enum-consts.pl b/tests/scripts/list-enum-consts.pl index 633e3fdf9e..21c25b33ec 100755 --- a/tests/scripts/list-enum-consts.pl +++ b/tests/scripts/list-enum-consts.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl use warnings; use strict; diff --git a/tests/scripts/recursion.pl b/tests/scripts/recursion.pl index 3ad42b1f8f..431e592115 100755 --- a/tests/scripts/recursion.pl +++ b/tests/scripts/recursion.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # Find functions making recursive calls to themselves. # (Multiple recursion where a() calls b() which calls a() not covered.) diff --git a/tests/scripts/run-test-suites.pl b/tests/scripts/run-test-suites.pl index 7e2974bbcd..627935888f 100755 --- a/tests/scripts/run-test-suites.pl +++ b/tests/scripts/run-test-suites.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # run-test-suites.pl # diff --git a/tests/scripts/test-ref-configs.pl b/tests/scripts/test-ref-configs.pl index b07329cacb..80d5f38751 100755 --- a/tests/scripts/test-ref-configs.pl +++ b/tests/scripts/test-ref-configs.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # test-ref-configs.pl # From c33c7c8363e998a0d7b54f1f310372757c67ada4 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 5 Apr 2018 15:57:56 +0200 Subject: [PATCH 0196/1100] Copy DartConfiguration.tcl, needed for make memcheck --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b26e6e7c7..e9a632e9bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,4 +192,8 @@ endif() # Make scripts needed for testing available in an out-of-source build. if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) link_to_source(scripts) + # Copy (don't link) DartConfiguration.tcl, needed for memcheck, to + # keep things simple with the sed commands in the memcheck target. + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/DartConfiguration.tcl + ${CMAKE_CURRENT_BINARY_DIR}/DartConfiguration.tcl COPYONLY) endif() From fe60132305df0eea16f90aeb8867fe344642a1ca Mon Sep 17 00:00:00 2001 From: Krzysztof Stachowiak Date: Thu, 5 Apr 2018 16:53:35 +0200 Subject: [PATCH 0197/1100] Move a buffer size test before the first relevant read --- library/x509_crt.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index afff4e18bf..0885c8e3b7 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -574,6 +574,9 @@ static int x509_get_crt_ext( unsigned char **p, end_ext_data = *p + len; /* Get extension ID */ + if( ( end - *p ) < 1 ) + return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + + MBEDTLS_ERR_ASN1_OUT_OF_DATA ); extn_oid.tag = **p; if( ( ret = mbedtls_asn1_get_tag( p, end, &extn_oid.len, MBEDTLS_ASN1_OID ) ) != 0 ) @@ -582,10 +585,6 @@ static int x509_get_crt_ext( unsigned char **p, extn_oid.p = *p; *p += extn_oid.len; - if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); - /* Get optional critical */ if( ( ret = mbedtls_asn1_get_bool( p, end_ext_data, &is_critical ) ) != 0 && ( ret != MBEDTLS_ERR_ASN1_UNEXPECTED_TAG ) ) From df60856702158368022d366ec1ac7dd5102edc63 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Tue, 3 Apr 2018 19:40:11 +0200 Subject: [PATCH 0198/1100] Only redefine _WIN32_WINNT macro when < 0x0501 --- library/net_sockets.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/net_sockets.c b/library/net_sockets.c index f99d339ff0..62f5b68ea6 100644 --- a/library/net_sockets.c +++ b/library/net_sockets.c @@ -47,11 +47,12 @@ #define IS_EINTR( ret ) ( ( ret ) == WSAEINTR ) -#ifdef _WIN32_WINNT +#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0501) #undef _WIN32_WINNT -#endif /* Enables getaddrinfo() & Co */ #define _WIN32_WINNT 0x0501 +#endif + #include #include From 8339c8f5bd50e96ba0d7cc2e5541e15f5c0f0a0c Mon Sep 17 00:00:00 2001 From: Brendan Shanks Date: Fri, 6 Apr 2018 16:47:43 -0700 Subject: [PATCH 0199/1100] x509.c: Remove unused includes Remove unused includes guarded by MBEDTLS_FS_IO, which doesn't appear anywhere else in the file. --- library/x509.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/library/x509.c b/library/x509.c index 371d6da1dc..264c7fb0c6 100644 --- a/library/x509.c +++ b/library/x509.c @@ -70,15 +70,6 @@ #include #endif -#if defined(MBEDTLS_FS_IO) -#include -#if !defined(_WIN32) -#include -#include -#include -#endif -#endif - #define CHECK(code) if( ( ret = code ) != 0 ){ return( ret ); } #define CHECK_RANGE(min, max, val) if( val < min || val > max ){ return( ret ); } From 60bc47dd875b2e2823355b96fbf31bda8a1f2c9b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 11 Apr 2018 20:27:32 -0400 Subject: [PATCH 0200/1100] library: Port to Haiku. --- library/CMakeLists.txt | 4 ++++ library/entropy_poll.c | 3 ++- library/net_sockets.c | 3 ++- library/timing.c | 3 ++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 7742c22d25..993244f928 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -95,6 +95,10 @@ if(WIN32) set(libs ${libs} ws2_32) endif(WIN32) +if(HAIKU) + set(libs ${libs} network) +endif(HAIKU) + if(USE_PKCS11_HELPER_LIBRARY) set(libs ${libs} pkcs11-helper) endif(USE_PKCS11_HELPER_LIBRARY) diff --git a/library/entropy_poll.c b/library/entropy_poll.c index 67900c46c8..c8cf6be167 100644 --- a/library/entropy_poll.c +++ b/library/entropy_poll.c @@ -44,7 +44,8 @@ #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY) #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ - !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) + !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ + !defined(__HAIKU__) #error "Platform entropy sources only work on Unix and Windows, see MBEDTLS_NO_PLATFORM_ENTROPY in config.h" #endif diff --git a/library/net_sockets.c b/library/net_sockets.c index f99d339ff0..e68b3ef05f 100644 --- a/library/net_sockets.c +++ b/library/net_sockets.c @@ -28,7 +28,8 @@ #if defined(MBEDTLS_NET_C) #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ - !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) + !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ + !defined(__HAIKU__) #error "This module only works on Unix and Windows, see MBEDTLS_NET_C in config.h" #endif diff --git a/library/timing.c b/library/timing.c index 6a30e51259..3e8139f1f9 100644 --- a/library/timing.c +++ b/library/timing.c @@ -39,7 +39,8 @@ #if !defined(MBEDTLS_TIMING_ALT) #if !defined(unix) && !defined(__unix__) && !defined(__unix) && \ - !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) + !defined(__APPLE__) && !defined(_WIN32) && !defined(__QNXNTO__) && \ + !defined(__HAIKU__) #error "This module only works on Unix and Windows, see MBEDTLS_TIMING_C in config.h" #endif From 3c5f9498e5dedfdb46174b7b479b1f679e1f994e Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 11 Jan 2018 19:51:27 +0000 Subject: [PATCH 0201/1100] genereate_visualc_files.pl deletes old files Add a function that deletes all the old Visual Studio prokect files before generating the new ones. This ensure that project files for delete example applications are removed from the repository. --- scripts/generate_visualc_files.pl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 8d36653b4c..0f54239718 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -171,12 +171,22 @@ sub gen_vsx_solution { content_to_file( $out, $vsx_sln_file ); } +sub del_vsx_files { + unlink glob "'$vsx_dir/*.$vsx_ext'"; + unlink $vsx_main_file; + unlink $vsx_sln_file; +} + sub main { if( ! check_dirs() ) { chdir '..' or die; check_dirs or die "Must but run from mbedTLS root or scripts dir\n"; } + # Remove old files to ensure that, for example, project files from deleted + # apps are not kept + del_vsx_files(); + my @app_list = get_app_list(); my @headers = <$header_dir/*.h>; my @sources = <$source_dir/*.c>; From 4c1e2ec286e0b990b62c9708cb4645e36c324654 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 10 Jan 2018 11:03:45 +0000 Subject: [PATCH 0202/1100] Check generated-visualc-files in check-generated-files --- tests/scripts/check-generated-files.sh | 62 ++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh index 0400bc7544..f471ad2927 100755 --- a/tests/scripts/check-generated-files.sh +++ b/tests/scripts/check-generated-files.sh @@ -1,6 +1,12 @@ -#!/bin/sh +#! /usr/bin/env sh -# check if generated files are up-to-date +# This file is part of mbed TLS (https://tls.mbed.org) +# +# Copyright (c) 2018, ARM Limited, All Rights Reserved +# +# Purpose +# +# Check if generated files are up-to-date. set -eu @@ -11,14 +17,52 @@ fi check() { - FILE=$1 - SCRIPT=$2 + SCRIPT=$1 + TO_CHECK=$2 + PATTERN="" + + if [ -d $TO_CHECK ]; then + for FILE in $TO_CHECK/*; do + FILES="$FILE $FILES" + done + else + FILES=$TO_CHECK + fi + + for FILE in $FILES; do + cp $FILE $FILE.bak + done - cp $FILE $FILE.bak $SCRIPT - diff $FILE $FILE.bak - mv $FILE.bak $FILE + + # Compare the script output to the old files and remove backups + for FILE in $FILES; do + if ! diff $FILE $FILE.bak >/dev/null 2>&1; then + echo "'$FILE' was either modified or deleted by '$SCRIPT'" + exit 1 + fi + mv $FILE.bak $FILE + + if [ -d $TO_CHECK ]; then + # Create a grep regular expression that we can check against the + # directory contents to test whether new files have been created + if [ -z $PATTERN ]; then + PATTERN="$(basename $FILE)" + else + PATTERN="$PATTERN\|$(basename $FILE)" + fi + fi + done + + if [ -d $TO_CHECK ]; then + # Check if there are any new files + if ls -1 $TO_CHECK | grep -v "$PATTERN" >/dev/null 2>&1; then + echo "Files were created by '$SCRIPT'" + exit 1 + fi + fi } -check library/error.c scripts/generate_errors.pl -check library/version_features.c scripts/generate_features.pl +check scripts/generate_errors.pl library/error.c +check scripts/generate_features.pl library/version_features.c +check scripts/generate_visualc_files.pl visualc/VS2010 From 5121d4b32fbc4b3f8cb37948f1bafa20f70a0d39 Mon Sep 17 00:00:00 2001 From: Andres AG Date: Wed, 11 Apr 2018 20:35:19 -0500 Subject: [PATCH 0203/1100] Remove refs to VS6 from generate_visualc_files.pl --- scripts/generate_visualc_files.pl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 0f54239718..e042a4493d 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -1,8 +1,7 @@ #!/usr/bin/perl -# Generate files for MS Visual Studio: -# - for VS6: main project (library) file, individual app files, workspace -# - for VS2010: main file, individual apps, solution file +# Generate main file, individual apps and solution files for MS Visual Studio +# 2010 # # Must be run from mbedTLS root or scripts directory. # Takes no argument. From dfeda4818627d70f1e43e4841fcffc02f24c42a0 Mon Sep 17 00:00:00 2001 From: Andres AG Date: Wed, 11 Apr 2018 20:55:22 -0500 Subject: [PATCH 0204/1100] Remove VS project files from deleted example apps --- visualc/VS2010/md5sum.vcxproj | 170 --------------------------------- visualc/VS2010/sha1sum.vcxproj | 170 --------------------------------- visualc/VS2010/sha2sum.vcxproj | 170 --------------------------------- 3 files changed, 510 deletions(-) delete mode 100644 visualc/VS2010/md5sum.vcxproj delete mode 100644 visualc/VS2010/sha1sum.vcxproj delete mode 100644 visualc/VS2010/sha2sum.vcxproj diff --git a/visualc/VS2010/md5sum.vcxproj b/visualc/VS2010/md5sum.vcxproj deleted file mode 100644 index 6f20e57e74..0000000000 --- a/visualc/VS2010/md5sum.vcxproj +++ /dev/null @@ -1,170 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - - - {46cf2d25-6a36-4189-b59c-e4815388e554} - true - - - - {80FE1ECF-6992-A275-7973-E2976718D128} - Win32Proj - md5sum - - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - Windows7.1SDK - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - Level3 - - - MaxSpeed - true - true - WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - %(AdditionalDependencies); - - - - - - diff --git a/visualc/VS2010/sha1sum.vcxproj b/visualc/VS2010/sha1sum.vcxproj deleted file mode 100644 index 2c3674b45f..0000000000 --- a/visualc/VS2010/sha1sum.vcxproj +++ /dev/null @@ -1,170 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - - - {46cf2d25-6a36-4189-b59c-e4815388e554} - true - - - - {E91D12D7-01C0-357F-CAB1-8478B096743C} - Win32Proj - sha1sum - - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - Windows7.1SDK - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - Level3 - - - MaxSpeed - true - true - WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - %(AdditionalDependencies); - - - - - - diff --git a/visualc/VS2010/sha2sum.vcxproj b/visualc/VS2010/sha2sum.vcxproj deleted file mode 100644 index b1afb674d7..0000000000 --- a/visualc/VS2010/sha2sum.vcxproj +++ /dev/null @@ -1,170 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - - - - - {46cf2d25-6a36-4189-b59c-e4815388e554} - true - - - - {8C5CF095-A0A4-54FB-0D48-8DF2B7FE4CA5} - Win32Proj - sha2sum - - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - Windows7.1SDK - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - NotSet - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - Debug - - - false - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) - - - - - Level3 - - - MaxSpeed - true - true - WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - ../../include - - - Console - true - true - true - Release - %(AdditionalDependencies); - - - - - - From c4ec716ec84b456262a8da43903b7afc212e48bc Mon Sep 17 00:00:00 2001 From: Andres AG Date: Wed, 11 Apr 2018 21:13:20 -0500 Subject: [PATCH 0205/1100] Fix uninitialized var in check-generated-files.sh --- tests/scripts/check-generated-files.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh index f471ad2927..4976bacf5c 100755 --- a/tests/scripts/check-generated-files.sh +++ b/tests/scripts/check-generated-files.sh @@ -20,6 +20,7 @@ check() SCRIPT=$1 TO_CHECK=$2 PATTERN="" + FILES="" if [ -d $TO_CHECK ]; then for FILE in $TO_CHECK/*; do From 3f7f8170d6ba71da9a9f624ef9da6c9edeb64b50 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 23 Nov 2017 17:49:05 +0000 Subject: [PATCH 0206/1100] Check invalid nc_off Uninitialized nc_off value >0xf passed by the caller can cause array out-of-bound. --- include/mbedtls/aes.h | 1 + library/aes.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 46016dcb7f..d252930fd7 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -49,6 +49,7 @@ /* Error codes in range 0x0020-0x0022 */ #define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ #define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ +#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0024 /**< Invalid input data. */ /* Error codes in range 0x0023-0x0025 */ #define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */ diff --git a/library/aes.c b/library/aes.c index da94b19439..3bb8515201 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1082,6 +1082,9 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, int c, i; size_t n = *nc_off; + if ( n > 0x0F ) + return( MBEDTLS_ERR_AES_BAD_INPUT_DATA ); + while( length-- ) { if( n == 0 ) { From e5b5bd7a400391f3730a43f6191d7c5e7f89bf21 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Fri, 24 Nov 2017 10:52:51 +0000 Subject: [PATCH 0207/1100] Allocate a unique err code for MBEDTLS_ERR_AES_BAD_INPUT_DATA --- include/mbedtls/aes.h | 4 ++-- include/mbedtls/error.h | 2 +- library/error.c | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index d252930fd7..8b9280d97a 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -49,9 +49,9 @@ /* Error codes in range 0x0020-0x0022 */ #define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ #define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ -#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0024 /**< Invalid input data. */ -/* Error codes in range 0x0023-0x0025 */ +/* Error codes in range 0x0021-0x0025 */ +#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021 /**< Invalid input data. */ #define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */ #define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */ diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 8b4d3a8755..786d02e32a 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -53,7 +53,7 @@ * GCM 3 0x0012-0x0014 0x0013-0x0013 * BLOWFISH 3 0x0016-0x0018 0x0017-0x0017 * THREADING 3 0x001A-0x001E - * AES 4 0x0020-0x0022 0x0023-0x0025 + * AES 5 0x0020-0x0022 0x0021-0x0025 * CAMELLIA 3 0x0024-0x0026 0x0027-0x0027 * XTEA 2 0x0028-0x0028 0x0029-0x0029 * BASE64 2 0x002A-0x002C diff --git a/library/error.c b/library/error.c index 96ab203766..37058254c1 100644 --- a/library/error.c +++ b/library/error.c @@ -572,6 +572,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "AES - Invalid key length" ); if( use_ret == -(MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH) ) mbedtls_snprintf( buf, buflen, "AES - Invalid data input length" ); + if( use_ret == -(MBEDTLS_ERR_AES_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "AES - Invalid input data" ); if( use_ret == -(MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE) ) mbedtls_snprintf( buf, buflen, "AES - Feature not available. For example, an unsupported AES key size" ); if( use_ret == -(MBEDTLS_ERR_AES_HW_ACCEL_FAILED) ) From 81d4e899a4eee9e1f1a2d794dbe70a83b4a7be9a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 27 Oct 2017 10:18:44 +0200 Subject: [PATCH 0208/1100] Don't rely on private key metadata in SSL In SSL, don't use mbedtls_pk_ec or mbedtls_pk_rsa on a private signature or decryption key (as opposed to a public key or a key used for DH/ECDH). Extract the data (it's the same data) from the public key object instead. This way the code works even if the private key is opaque or if there is no private key object at all. Specifically, with an EC key, when checking whether the curve in a server key matches the handshake parameters, rely only on the offered certificate and not on the metadata of the private key. --- library/ssl_srv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 37f415dd12..fd04e927ad 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -731,7 +731,7 @@ static int ssl_pick_cert( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_ECDSA_C) if( pk_alg == MBEDTLS_PK_ECDSA && - ssl_check_key_curve( cur->key, ssl->handshake->curves ) != 0 ) + ssl_check_key_curve( &cur->cert->pk, ssl->handshake->curves ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "certificate mismatch: elliptic curve" ) ); continue; From fe1c0937d70a9970393afe7d77e1429cb6b07856 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 23 Nov 2017 13:35:02 +0100 Subject: [PATCH 0209/1100] ssl_write_server_key_exchange refactor: remove redundant variable n Remove redundant variable n, which counts in parallel to p. Having both adds the burden of keeping them in synch for no benefit. --- library/ssl_srv.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index fd04e927ad..70fe13d795 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2829,12 +2829,11 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { int ret; - size_t n = 0; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) unsigned char *p = ssl->out_msg + 4; +#if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) size_t len; #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) unsigned char *dig_signed = p; @@ -2894,7 +2893,6 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } p += len; - n += len; } #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ @@ -2910,8 +2908,6 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { *(p++) = 0x00; *(p++) = 0x00; - - n += 2; } #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */ @@ -2958,7 +2954,6 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #endif p += len; - n += len; MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: X ", &ssl->handshake->dhm_ctx.X ); MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: P ", &ssl->handshake->dhm_ctx.P ); @@ -3006,9 +3001,10 @@ curve_matching_done: return( ret ); } - if( ( ret = mbedtls_ecdh_make_params( &ssl->handshake->ecdh_ctx, &len, - p, MBEDTLS_SSL_MAX_CONTENT_LEN - n, - ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + if( ( ret = mbedtls_ecdh_make_params( + &ssl->handshake->ecdh_ctx, &len, + p, ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN - p, + ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_make_params", ret ); return( ret ); @@ -3020,7 +3016,6 @@ curve_matching_done: #endif p += len; - n += len; MBEDTLS_SSL_DEBUG_ECP( 3, "ECDH: Q ", &ssl->handshake->ecdh_ctx.Q ); } @@ -3203,8 +3198,6 @@ curve_matching_done: *(p++) = mbedtls_ssl_hash_from_md_alg( md_alg ); *(p++) = mbedtls_ssl_sig_from_pk_alg( sig_alg ); - - n += 2; } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ @@ -3217,17 +3210,16 @@ curve_matching_done: *(p++) = (unsigned char)( signature_len >> 8 ); *(p++) = (unsigned char)( signature_len ); - n += 2; MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", p, signature_len ); - n += signature_len; + p += signature_len; } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ /* Done with actual work; add header and send. */ - ssl->out_msglen = 4 + n; + ssl->out_msglen = p - ssl->out_msg; ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE; From 59e83d96dbd337b02c2260729d1d0d4173e98852 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:08:15 +0100 Subject: [PATCH 0210/1100] Add conf parameter to mbedtls_ssl_handshake_free This function is declared in ssl_internal.h, so this is not a public API change. This is in preparation for mbedtls_ssl_handshake_free needing to call methods from the config structure. --- include/mbedtls/ssl_internal.h | 4 +++- library/ssl_tls.c | 10 ++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 756360b181..f990243eea 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -385,9 +385,11 @@ void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ); * \brief Free referenced items in an SSL handshake context and clear * memory * + * \param conf SSL configuration * \param handshake SSL handshake context */ -void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ); +void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, + mbedtls_ssl_handshake_params *handshake ); int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 2690e46730..9482723b3d 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5153,7 +5153,7 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ) /* * Free our handshake params */ - mbedtls_ssl_handshake_free( ssl->handshake ); + mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); mbedtls_free( ssl->handshake ); ssl->handshake = NULL; @@ -5508,7 +5508,7 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) if( ssl->session_negotiate ) mbedtls_ssl_session_free( ssl->session_negotiate ); if( ssl->handshake ) - mbedtls_ssl_handshake_free( ssl->handshake ); + mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); /* * Either the pointers are now NULL or cleared properly and can be freed. @@ -7263,10 +7263,12 @@ static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) } #endif /* MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_ssl_handshake_free( mbedtls_ssl_handshake_params *handshake ) +void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, + mbedtls_ssl_handshake_params *handshake ) { if( handshake == NULL ) return; + (void) conf; /*unused in some compile-time configurations*/ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -7397,7 +7399,7 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ) if( ssl->handshake ) { - mbedtls_ssl_handshake_free( ssl->handshake ); + mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); mbedtls_ssl_transform_free( ssl->transform_negotiate ); mbedtls_ssl_session_free( ssl->session_negotiate ); From 8bf79f6dc666efca9a7841935bef58508e584c1f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:11:53 +0100 Subject: [PATCH 0211/1100] SSL asynchronous private key operation callbacks: interface New compile-time option MBEDTLS_SSL_ASYNC_PRIVATE_C, enabling callbacks to replace private key operations. These callbacks allow the SSL stack to make an asynchronous call to an external cryptographic module instead of calling the cryptography layer inside the library. The call is asynchronous in that it may return the new status code MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, in which case the SSL stack returns and can be later called where it left off. This commit introduces the configuration option. Later commits will implement the feature proper. --- include/mbedtls/config.h | 11 ++ include/mbedtls/error.h | 2 +- include/mbedtls/ssl.h | 199 +++++++++++++++++++++++++++++++++ include/mbedtls/ssl_internal.h | 4 + library/error.c | 2 + library/ssl_tls.c | 26 +++++ library/version_features.c | 3 + 7 files changed, 246 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 7c0681549e..80a4fef32a 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2333,6 +2333,17 @@ */ #define MBEDTLS_SHA512_C +/** + * \def MBEDTLS_SSL_ASYNC_PRIVATE_C + * + * Enable asynchronous external private key operations in SSL. This allows + * you to configure an SSL connection to call an external cryptographic + * module to perform private key operations instead of performing the + * operation inside the library. + * + */ +#define MBEDTLS_SSL_ASYNC_PRIVATE_C + /** * \def MBEDTLS_SSL_CACHE_C * diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 4eb7b78ebf..2fc9e46c1c 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -79,7 +79,7 @@ * ECP 4 8 (Started from top) * MD 5 4 * CIPHER 6 6 - * SSL 6 17 (Started from top) + * SSL 6 21 (Started from top) * SSL 7 31 * * Module dependent error code (5 bits 0x.00.-0x.F8.) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index e98101e19d..38538c7f1a 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -109,6 +109,7 @@ #define MBEDTLS_ERR_SSL_UNEXPECTED_RECORD -0x6700 /**< Record header looks valid but is not expected. */ #define MBEDTLS_ERR_SSL_NON_FATAL -0x6680 /**< The alert message received indicates a non-fatal error. */ #define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 /**< Couldn't set the hash for verifying CertificateVerify */ +#define MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS -0x6580 /**< Asynchronous operation is not completed yet */ /* * Various constants @@ -525,6 +526,160 @@ typedef void mbedtls_ssl_set_timer_t( void * ctx, */ typedef int mbedtls_ssl_get_timer_t( void * ctx ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) +/** + * \brief Callback type: start external signature operation + * + * Callback to start a signature operation using an + * external processor. The parameter \c cert contains + * the public key; it is up to the callback function to + * look up the associated private key or a handle to the + * private key. + * + * This function must start the signature operation. + * It is expected to be non-blocking, i.e. typically + * this function sends or enqueues a request and does + * not wait for the operation to complete. + * + * The parameters \c connection_ctx and \c cert are + * guaranteed to remain valid as long as the SSL + * configuration remains valid. On the other hand, this + * function must save the contents of \c hash, as the + * \c hash buffer is no longer valid when this function + * returns. + * + * \param connection_ctx Pointer to the connection context set in the + * SSL configuration + * \param p_operation_ctx On output, pointer to the operation context. + * This pointer will be passed later to the resume + * or detach function. The value is only used if + * an operation is started, i.e. if this callback + * returns 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * \param cert Certificate containing the public key + * \param md_alg Hash algorithm + * \param hash Buffer containing the hash. This buffer is + * no longer valid when the function returns. + * \param hash_len Size of the \c hash buffer in bytes + * + * \return - 0 if the SSL stack should call the resume callback + * immediately. The resume function may provide the + * or may itself return + * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the SSL stack + * should return immediately without calling the resume + * callback. + * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external + * processor does not support this key. The SSL stack will + * use the associated private key object instead. + * - Any other error is propagated up the call chain. + */ +typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + mbedtls_md_type_t md_alg, + const unsigned char *hash, + size_t hash_len ); + +/** + * \brief Callback type: start external decryption operation + * + * Callback to start a decryption operation using an + * external processor. The parameter \c cert contains + * the public key; it is up to the callback function to + * look up the associated private key or a handle to the + * private key. + * + * This function must start the decryption operation. + * It is expected to be non-blocking, i.e. typically + * this function sends or enqueues a request and does + * not wait for the operation to complete. + * + * The parameters \c connection_ctx and \c cert are + * guaranteed to remain valid as long as the SSL + * configuration remains valid. On the other hand, this + * function must save the contents of \c hash, as the + * \c hash buffer is no longer valid when this function + * returns. + * + * \param connection_ctx Pointer to the connection context set in the + * SSL configuration + * \param p_operation_ctx On output, pointer to the operation context. + * This pointer will be passed later to the resume + * or detach function. The value is only used if + * an operation is started, i.e. if this callback + * returns 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * \param cert Certificate containing the public key + * \param input Buffer containing the input ciphertext. This buffer + * is no longer valid when the function returns. + * \param input_len Size of the \c input buffer in bytes + * + * \return - 0 if the SSL stack should call the resume callback + * immediately. The resume function may provide the + * or may itself return + * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the SSL stack + * should return immediately without calling the resume + * callback. + * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external + * processor does not support this key. The SSL stack will + * use the associated private key object instead. + * - Any other error is propagated up the call chain. + */ +typedef int mbedtls_ssl_async_decrypt_t( void *connection_ctx, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + const unsigned char *input, + size_t input_len ); +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + +/** + * \brief Callback type: resume external operation + * + * Callback to resume an external operation + * started by the \c mbedtls_ssl_async_sign_t callback. + * + * \param connection_ctx Pointer to the connection context set in the + * SSL configuration + * \param operation_ctx Pointer to the operation context created by + * the start function. If this callback returns + * any value other than + * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, it should + * free all resources associated with this context. + * \param output Buffer containing the output on success + * \param output_len On success, number of bytes written to \c output + * \param output_size Size of the \c output buffer in bytes + * + * \return - 0 if output of the operation is available in the + * \c output buffer. + * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * is still in progress. Subsequent requests for progress + * on the SSL connection will call the resume callback + * again. + * - Any other error means that the operation is aborted. + * The SSL handshake is aborted. + */ +typedef int mbedtls_ssl_async_resume_t( void *connection_ctx, + void *operation_ctx, + unsigned char *output, + size_t *output_len, + size_t output_size ); + +/** + * \brief Callback type: cancel external operation + * + * Callback to cancel an external operation + * started by the \c mbedtls_ssl_async_sign_t callback. + * + * \param connection_ctx Pointer to the connection context set in the + * SSL configuration + * \param operation_ctx Pointer to the operation context created by + * the start function. The callback should free + * all resources associated with this context. + */ +typedef void mbedtls_ssl_async_cancel_t( void *connection_ctx, + void *operation_ctx ); +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ /* Defined below */ typedef struct mbedtls_ssl_session mbedtls_ssl_session; @@ -658,6 +813,16 @@ struct mbedtls_ssl_config mbedtls_x509_crl *ca_crl; /*!< trusted CAs CRLs */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_X509_CRT_PARSE_C) + mbedtls_ssl_async_sign_t *f_async_sign_start; /*!< start asynchronous signature operation */ + mbedtls_ssl_async_decrypt_t *f_async_decrypt_start; /*!< start asynchronous decryption operation */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ + mbedtls_ssl_async_resume_t *f_async_resume; /*!< resume asynchronous operation */ + mbedtls_ssl_async_cancel_t *f_async_cancel; /*!< cancel asynchronous operation */ + void *p_async_connection_ctx; /*!< connection context for asynchronous operation callbacks */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) const int *sig_hashes; /*!< allowed signature hashes */ #endif @@ -1291,6 +1456,40 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, void *p_export_keys ); #endif /* MBEDTLS_SSL_EXPORT_KEYS */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +/** + * \brief Configure asynchronous private key operation callbacks. + * + * \param conf SSL configuration context + * \param f_async_sign Callback to start a signature operation. See + * the description of \c mbedtls_ssl_async_sign_t + * for more information. This may be NULL if the + * external processor does no support any signature + * operation; in this case the private key object + * associated with the certificate will be used. + * \param f_async_decrypt Callback to start a decryption operation. See + * the description of \c mbedtls_ssl_async_decrypt_t + * for more information. This may be NULL if the + * external processor does no support any decryption + * operation; in this case the private key object + * associated with the certificate will be used. + * \param f_async_resume Callback to resume an asynchronous operation. See + * the description of \c mbedtls_ssl_async_resume_t + * for more information. + * \param f_async_cancel Callback to cancel an asynchronous operation. See + * the description of \c mbedtls_ssl_async_cancel_t + * for more information. + * \param connection_ctx Pointer to the connection context which will be + * passed to the callbacks + */ +void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, + mbedtls_ssl_async_sign_t *f_async_sign, + mbedtls_ssl_async_decrypt_t *f_async_decrypt, + mbedtls_ssl_async_resume_t *f_async_resume, + mbedtls_ssl_async_cancel_t *f_async_cancel, + void *connection_ctx ); +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + /** * \brief Callback type: generate a cookie * diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index f990243eea..c141e8adce 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -218,6 +218,10 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + void *p_async_operation_ctx; /*!< asynchronous operation context */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + #if defined(MBEDTLS_SSL_PROTO_DTLS) unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ unsigned int in_msg_seq; /*!< Incoming handshake sequence number */ diff --git a/library/error.c b/library/error.c index 151ca4eae9..490a040581 100644 --- a/library/error.c +++ b/library/error.c @@ -441,6 +441,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "SSL - The alert message received indicates a non-fatal error" ); if( use_ret == -(MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH) ) mbedtls_snprintf( buf, buflen, "SSL - Couldn't set the hash for verifying CertificateVerify" ); + if( use_ret == -(MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS) ) + mbedtls_snprintf( buf, buflen, "SSL - Asynchronous operation is not completed yet" ); #endif /* MBEDTLS_SSL_TLS_C */ #if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 9482723b3d..9626fa7a10 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6399,6 +6399,23 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, } #endif +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +void mbedtls_ssl_conf_async_private_cb( + mbedtls_ssl_config *conf, + mbedtls_ssl_async_sign_t *f_async_sign, + mbedtls_ssl_async_decrypt_t *f_async_decrypt, + mbedtls_ssl_async_resume_t *f_async_resume, + mbedtls_ssl_async_cancel_t *f_async_cancel, + void *connection_ctx ) +{ + conf->f_async_sign_start = f_async_sign; + conf->f_async_decrypt_start = f_async_decrypt; + conf->f_async_resume = f_async_resume; + conf->f_async_cancel = f_async_cancel; + conf->p_async_connection_ctx = connection_ctx; +} +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + /* * SSL get accessors */ @@ -7332,6 +7349,15 @@ void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, } #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( conf->f_async_cancel != NULL && + handshake->p_async_operation_ctx != NULL ) + { + conf->f_async_cancel( conf->p_async_connection_ctx, + handshake->p_async_operation_ctx ); + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + #if defined(MBEDTLS_SSL_PROTO_DTLS) mbedtls_free( handshake->verify_cookie ); mbedtls_free( handshake->hs_msg ); diff --git a/library/version_features.c b/library/version_features.c index 49bba11ef6..7152e702bc 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -615,6 +615,9 @@ static const char *features[] = { #if defined(MBEDTLS_SHA512_C) "MBEDTLS_SHA512_C", #endif /* MBEDTLS_SHA512_C */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + "MBEDTLS_SSL_ASYNC_PRIVATE_C", +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ #if defined(MBEDTLS_SSL_CACHE_C) "MBEDTLS_SSL_CACHE_C", #endif /* MBEDTLS_SSL_CACHE_C */ From 9eb5e9a16ea7a5f639bb948ac6089457c5fcf6c2 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:15:57 +0100 Subject: [PATCH 0212/1100] SSL asynchronous private key operation callbacks: test server New options in ssl_server2 to use the asynchronous private key operation feature. Features: resume delay to call resume more than once; error injection at each stage; renegotiation support. --- programs/ssl/ssl_server2.c | 259 +++++++++++++++++++++++++++++++++++-- 1 file changed, 248 insertions(+), 11 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 1285abcbd1..d75338fe29 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -108,6 +108,9 @@ int main( void ) #define DFL_KEY_FILE "" #define DFL_CRT_FILE2 "" #define DFL_KEY_FILE2 "" +#define DFL_ASYNC_PRIVATE_DELAY1 ( -1 ) +#define DFL_ASYNC_PRIVATE_DELAY2 ( -1 ) +#define DFL_ASYNC_PRIVATE_ERROR ( -1 ) #define DFL_PSK "" #define DFL_PSK_IDENTITY "Client_identity" #define DFL_ECJPAKE_PW NULL @@ -195,6 +198,16 @@ int main( void ) #define USAGE_IO "" #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#define USAGE_SSL_ASYNC \ + " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ + " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ + " default: -1 (not asynchronous)\n" \ + " async_private_error=%%d Async callback error injection (default=0=none, 1=start, 2=cancel, 3=resume, 4=pk)" +#else +#define USAGE_SSL_ASYNC "" +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) #define USAGE_PSK \ " psk=%%s default: \"\" (in hex, without 0x)\n" \ @@ -343,6 +356,7 @@ int main( void ) " cert_req_ca_list=%%d default: 1 (send ca list)\n" \ " options: 1 (send ca list), 0 (don't send)\n" \ USAGE_IO \ + USAGE_SSL_ASYNC \ USAGE_SNI \ "\n" \ USAGE_PSK \ @@ -406,6 +420,9 @@ struct options const char *key_file; /* the file with the server key */ const char *crt_file2; /* the file with the 2nd server certificate */ const char *key_file2; /* the file with the 2nd server key */ + int async_private_delay1; /* number of times f_async_resume needs to be called for key 1, or -1 for no async */ + int async_private_delay2; /* number of times f_async_resume needs to be called for key 2, or -1 for no async */ + int async_private_error; /* inject error in async private callback */ const char *psk; /* the pre-shared key */ const char *psk_identity; /* the pre-shared key identity */ char *psk_list; /* list of PSK id/key pairs for callback */ @@ -837,6 +854,150 @@ static int ssl_sig_hashes_for_test[] = { }; #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +typedef struct +{ + mbedtls_x509_crt *cert; + mbedtls_pk_context *pk; + unsigned delay; +} ssl_async_key_slot_t; + +typedef enum { + SSL_ASYNC_INJECT_ERROR_NONE = 0, + SSL_ASYNC_INJECT_ERROR_START, + SSL_ASYNC_INJECT_ERROR_CANCEL, + SSL_ASYNC_INJECT_ERROR_RESUME, + SSL_ASYNC_INJECT_ERROR_PK +#define SSL_ASYNC_INJECT_ERROR_MAX SSL_ASYNC_INJECT_ERROR_PK +} ssl_async_inject_error_t; + +typedef struct +{ + ssl_async_key_slot_t slots[2]; + size_t slots_used; + ssl_async_inject_error_t inject_error; + int (*f_rng)(void *, unsigned char *, size_t); + void *p_rng; +} ssl_async_key_context_t; + +void ssl_async_set_key( ssl_async_key_context_t *ctx, + mbedtls_x509_crt *cert, + mbedtls_pk_context *pk, + unsigned delay ) +{ + ctx->slots[ctx->slots_used].cert = cert; + ctx->slots[ctx->slots_used].pk = pk; + ctx->slots[ctx->slots_used].delay = delay; + ++ctx->slots_used; +} + +typedef struct +{ + size_t slot; + mbedtls_md_type_t md_alg; + unsigned char hash[MBEDTLS_MD_MAX_SIZE]; + size_t hash_len; + unsigned delay; +} ssl_async_operation_context_t; + +int ssl_async_sign( void *connection_ctx_arg, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + mbedtls_md_type_t md_alg, + const unsigned char *hash, + size_t hash_len ) +{ + ssl_async_key_context_t *key_ctx = connection_ctx_arg; + size_t slot; + ssl_async_operation_context_t *ctx = NULL; + { + char dn[100]; + mbedtls_x509_dn_gets( dn, sizeof( dn ), &cert->subject ); + mbedtls_printf( "Async sign callback: looking for DN=%s\n", dn ); + } + for( slot = 0; slot < key_ctx->slots_used; slot++ ) + { + if( key_ctx->slots[slot].cert == cert ) + break; + } + if( slot == key_ctx->slots_used ) + { + mbedtls_printf( "Async sign callback: no key matches this certificate.\n" ); + return( MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ); + } + mbedtls_printf( "Async sign callback: using key slot %zd, delay=%u.\n", + slot, key_ctx->slots[slot].delay ); + if( key_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_START ) + { + mbedtls_printf( "Async sign callback: injected error\n" ); + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + } + if( hash_len > MBEDTLS_MD_MAX_SIZE ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + ctx = mbedtls_calloc( 1, sizeof( *ctx ) ); + if( ctx == NULL ) + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + ctx->slot = slot; + ctx->md_alg = md_alg; + memcpy( ctx->hash, hash, hash_len ); + ctx->hash_len = hash_len; + ctx->delay = key_ctx->slots[slot].delay; + *p_operation_ctx = ctx; + if( ctx->delay == 0 ) + return( 0 ); + else + return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); +} + +int ssl_async_resume( void *connection_ctx_arg, + void *operation_ctx_arg, + unsigned char *output, + size_t *output_len, + size_t output_size ) +{ + ssl_async_operation_context_t *ctx = operation_ctx_arg; + ssl_async_key_context_t *connection_ctx = connection_ctx_arg; + ssl_async_key_slot_t *key_slot = &connection_ctx->slots[ctx->slot]; + int ret; + if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) + { + mbedtls_printf( "Async resume callback: injected error\n" ); + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + } + if( ctx->delay > 0 ) + { + --ctx->delay; + mbedtls_printf( "Async resume (slot %zd): call %u more times.\n", + ctx->slot, ctx->delay ); + return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); + } + (void) output_size; /* mbedtls_pk_size lacks this parameter */ + ret = mbedtls_pk_sign( key_slot->pk, + ctx->md_alg, + ctx->hash, ctx->hash_len, + output, output_len, + connection_ctx->f_rng, connection_ctx->p_rng ); + if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) + { + mbedtls_printf( "Async resume callback: done but injected error\n" ); + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + } + mbedtls_printf( "Async resume (slot %zd): done, status=%d.\n", + ctx->slot, ret ); + mbedtls_free( ctx ); + return( ret ); +} + +void ssl_async_cancel( void *connection_ctx_arg, + void *operation_ctx_arg ) +{ + ssl_async_operation_context_t *ctx = operation_ctx_arg; + (void) connection_ctx_arg; + mbedtls_printf( "Async cancel callback.\n" ); + mbedtls_free( ctx ); +} +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + int main( int argc, char *argv[] ) { int ret = 0, len, written, frags, exchanges_left; @@ -875,7 +1036,10 @@ int main( int argc, char *argv[] ) mbedtls_x509_crt srvcert2; mbedtls_pk_context pkey2; int key_cert_init = 0, key_cert_init2 = 0; -#endif +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + ssl_async_key_context_t ssl_async_keys; +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO) mbedtls_dhm_context dhm; #endif @@ -977,6 +1141,9 @@ int main( int argc, char *argv[] ) opt.key_file = DFL_KEY_FILE; opt.crt_file2 = DFL_CRT_FILE2; opt.key_file2 = DFL_KEY_FILE2; + opt.async_private_delay1 = DFL_ASYNC_PRIVATE_DELAY1; + opt.async_private_delay2 = DFL_ASYNC_PRIVATE_DELAY2; + opt.async_private_error = DFL_ASYNC_PRIVATE_ERROR; opt.psk = DFL_PSK; opt.psk_identity = DFL_PSK_IDENTITY; opt.psk_list = DFL_PSK_LIST; @@ -1063,6 +1230,22 @@ int main( int argc, char *argv[] ) opt.key_file2 = q; else if( strcmp( p, "dhm_file" ) == 0 ) opt.dhm_file = q; +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + else if( strcmp( p, "async_private_delay1" ) == 0 ) + opt.async_private_delay1 = atoi( q ); + else if( strcmp( p, "async_private_delay2" ) == 0 ) + opt.async_private_delay2 = atoi( q ); + else if( strcmp( p, "async_private_error" ) == 0 ) + { + int n = atoi( q ); + if( n < 0 || n > SSL_ASYNC_INJECT_ERROR_MAX ) + { + ret = 2; + goto usage; + } + opt.async_private_error = n; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ else if( strcmp( p, "psk" ) == 0 ) opt.psk = q; else if( strcmp( p, "psk_identity" ) == 0 ) @@ -1932,18 +2115,55 @@ int main( int argc, char *argv[] ) mbedtls_ssl_conf_ca_chain( &conf, &cacert, NULL ); } if( key_cert_init ) - if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert, &pkey ) ) != 0 ) + { + mbedtls_pk_context *pk = &pkey; +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( opt.async_private_delay1 >= 0 ) + { + ssl_async_set_key( &ssl_async_keys, &srvcert, pk, + opt.async_private_delay1 ); + pk = NULL; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert, pk ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_ssl_conf_own_cert returned %d\n\n", ret ); goto exit; } + } if( key_cert_init2 ) - if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert2, &pkey2 ) ) != 0 ) + { + mbedtls_pk_context *pk = &pkey2; +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( opt.async_private_delay2 >= 0 ) + { + ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, + opt.async_private_delay2 ); + pk = NULL; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert2, pk ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_ssl_conf_own_cert returned %d\n\n", ret ); goto exit; } -#endif + } + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( opt.async_private_delay1 >= 0 || opt.async_private_delay2 >= 0 ) + { + ssl_async_keys.inject_error = opt.async_private_error; + ssl_async_keys.f_rng = mbedtls_ctr_drbg_random; + ssl_async_keys.p_rng = &ctr_drbg; + mbedtls_ssl_conf_async_private_cb( &conf, + ssl_async_sign, + NULL, + ssl_async_resume, + ssl_async_cancel, + &ssl_async_keys ); + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(SNI_OPTION) if( opt.sni != NULL ) @@ -2113,9 +2333,21 @@ handshake: mbedtls_printf( " . Performing the SSL/TLS handshake..." ); fflush( stdout ); - do ret = mbedtls_ssl_handshake( &ssl ); + do + { + ret = mbedtls_ssl_handshake( &ssl ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS && + opt.async_private_error == SSL_ASYNC_INJECT_ERROR_CANCEL ) + { + mbedtls_printf( " cancelling on injected error\n" ); + goto reset; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + } while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ); + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); if( ret == MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED ) { @@ -2220,7 +2452,8 @@ data_exchange: ret = mbedtls_ssl_read( &ssl, buf, len ); if( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ) + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) continue; if( ret <= 0 ) @@ -2311,7 +2544,8 @@ data_exchange: do ret = mbedtls_ssl_read( &ssl, buf, len ); while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ); + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); if( ret <= 0 ) { @@ -2347,7 +2581,8 @@ data_exchange: while( ( ret = mbedtls_ssl_renegotiate( &ssl ) ) != 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_renegotiate returned %d\n\n", ret ); goto reset; @@ -2381,7 +2616,8 @@ data_exchange: } if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE ) + ret != MBEDTLS_ERR_SSL_WANT_WRITE && + ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_write returned %d\n\n", ret ); goto reset; @@ -2393,7 +2629,8 @@ data_exchange: { do ret = mbedtls_ssl_write( &ssl, buf, len ); while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE ); + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); if( ret < 0 ) { From e198df53a070da3e29707fd16c5736811a2b1415 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:17:45 +0100 Subject: [PATCH 0213/1100] ssl_pick_cert: use the public key for can_do This is in preparation for support of external private key operations, where there is no private key object. --- library/ssl_srv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 70fe13d795..2034d75f3e 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -707,7 +707,7 @@ static int ssl_pick_cert( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_CRT( 3, "candidate certificate chain, certificate", cur->cert ); - if( ! mbedtls_pk_can_do( cur->key, pk_alg ) ) + if( ! mbedtls_pk_can_do( &cur->cert->pk, pk_alg ) ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "certificate mismatch: key type" ) ); continue; From e1efdf912f9f2d8a1ff9704454615de1dc1716fc Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:18:37 +0100 Subject: [PATCH 0214/1100] ssl_write_server_key_exchange: don't hard-code max hash size --- library/ssl_srv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 2034d75f3e..bc94ebb982 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3032,7 +3032,7 @@ curve_matching_done: { size_t signature_len = 0; unsigned int hashlen = 0; - unsigned char hash[64]; + unsigned char hash[MBEDTLS_MD_MAX_SIZE]; /* * 3.1: Choose hash algorithm: From ebd652fe2dfc2c82d774bfd334398279d9027492 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:18:59 +0100 Subject: [PATCH 0215/1100] ssl_write_server_key_exchange: calculate hashlen explicitly The pk layer can infer the hash length from the hash type. Calculate it explicitly here anyway because it's needed for debugging purposes, and it's needed for the upcoming feature allowing the signature operation to be offloaded to an external cryptographic processor, as the offloading code will need to know what length hash to copy. --- library/ssl_srv.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index bc94ebb982..84c8e1e117 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3135,8 +3135,7 @@ curve_matching_done: mbedtls_md_init( &ctx ); - /* Info from md_alg will be used instead */ - hashlen = 0; + hashlen = mbedtls_md_get_size( md_info ); /* * digitally-signed struct { @@ -3165,8 +3164,7 @@ curve_matching_done: return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen != 0 ? hashlen : - (unsigned int) ( mbedtls_md_get_size( mbedtls_md_info_from_type( md_alg ) ) ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen ); /* * 3.3: Compute and add the signature From 4bf9a28d1df0adf88456044684dd0f3c94a87b79 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:20:50 +0100 Subject: [PATCH 0216/1100] SSL asynchronous signature: first implementation Implement SSL asynchronous private operation for the case of a signature operation in a server. This is a first implementation. It is functional, but the code is not clean, with heavy reliance on goto. --- include/mbedtls/ssl_internal.h | 1 + library/ssl_srv.c | 67 +++++++++++++++++++++++++++++++--- 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index c141e8adce..e4b767b7b0 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -220,6 +220,7 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) void *p_async_operation_ctx; /*!< asynchronous operation context */ + unsigned char *out_async_start; /*!< pointer where the asynchronous operation must write in the output buffer */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ #if defined(MBEDTLS_SSL_PROTO_DTLS) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 84c8e1e117..ac9e6a55d9 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2843,6 +2843,17 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( ssl->handshake->out_async_start != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); + p = ssl->handshake->out_async_start; + goto async_resume; + } +#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ + /* * * Part 1: Extract static ECDH parameters and abort @@ -3169,12 +3180,6 @@ curve_matching_done: /* * 3.3: Compute and add the signature */ - if( mbedtls_ssl_own_key( ssl ) == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no private key" ) ); - return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); - } - #if defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) { @@ -3199,6 +3204,55 @@ curve_matching_done: } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( ssl->conf->f_async_sign_start != NULL ) + { + size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN + - ( p + 2 ) ); + ret = ssl->conf->f_async_sign_start( + ssl->conf->p_async_connection_ctx, + &ssl->handshake->p_async_operation_ctx, + mbedtls_ssl_own_cert( ssl ), + md_alg, hash, hashlen ); + switch( ret ) + { + case MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH: + /* act as if f_async_sign was null */ + break; + case 0: + async_resume: + ret = ssl->conf->f_async_resume( + ssl->conf->p_async_connection_ctx, + ssl->handshake->p_async_operation_ctx, + p + 2, &signature_len, sig_max_len ); + if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + { + ssl->handshake->p_async_operation_ctx = NULL; + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_resume", ret ); + return( ret ); + } + goto have_signature; + } + /* FALLTHROUGH */ + case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: + ssl->handshake->out_async_start = p; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); + return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); + default: + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign", ret ); + return( ret ); + } + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + + if( mbedtls_ssl_own_key( ssl ) == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no private key" ) ); + return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); + } + if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), md_alg, hash, hashlen, p + 2 , &signature_len, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { @@ -3206,6 +3260,7 @@ curve_matching_done: return( ret ); } + have_signature: *(p++) = (unsigned char)( signature_len >> 8 ); *(p++) = (unsigned char)( signature_len ); From 3665f1db9db40b5ff0ea5a10d91a0e899f432e9d Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 5 Jan 2018 21:22:12 +0100 Subject: [PATCH 0217/1100] SSL asynchronous signature: test cases Add test cases for SSL asynchronous signature to ssl-opt.sh: * Delay=0,1 to test the sequences of calls to f_async_resume * Test fallback when the async callbacks don't support that key * Test error injection at each stage * Test renegotiation --- programs/ssl/ssl_server2.c | 2 +- tests/ssl-opt.sh | 121 +++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index d75338fe29..28f6367511 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -110,7 +110,7 @@ int main( void ) #define DFL_KEY_FILE2 "" #define DFL_ASYNC_PRIVATE_DELAY1 ( -1 ) #define DFL_ASYNC_PRIVATE_DELAY2 ( -1 ) -#define DFL_ASYNC_PRIVATE_ERROR ( -1 ) +#define DFL_ASYNC_PRIVATE_ERROR ( 0 ) #define DFL_PSK "" #define DFL_PSK_IDENTITY "Client_identity" #define DFL_ECJPAKE_PW NULL diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index fa785a4f1e..5f23cd1df4 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3636,6 +3636,127 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" +# Tests of asynchronous private key support in SSL + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: delay=0" \ + "$P_SRV async_private_delay1=0 async_private_delay2=0" \ + "$P_CLI" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: delay=1" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): call 0 more times." \ + -s "Async resume (slot [0-9]): done, status=0" + +# key1: ECDSA, key2: RSA; use key1 from slot 0 +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: slot 0 used with key1" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay1=1" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async sign callback: using key slot 0," \ + -s "Async resume (slot 0): call 0 more times." \ + -s "Async resume (slot 0): done, status=0" + +# key1: ECDSA, key2: RSA; use key2 from slot 0 +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: slot 0 used with key2" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay2=1" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async sign callback: using key slot 0," \ + -s "Async resume (slot 0): call 0 more times." \ + -s "Async resume (slot 0): done, status=0" + +# key1: ECDSA, key2: RSA; use key2 from slot 1 +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: slot 1 used" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async sign callback: using key slot 1," \ + -s "Async resume (slot 1): call 0 more times." \ + -s "Async resume (slot 1): done, status=0" + +# key1: ECDSA, key2: RSA; use key2 directly +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: fall back to transparent key" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay1=1" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async sign callback: no key matches this certificate." + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: error in start" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=1" \ + "$P_CLI" \ + 1 \ + -s "Async sign callback: injected error" \ + -S "Async resume" \ + -s "! mbedtls_ssl_handshake returned" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: cancel after start" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=2" \ + "$P_CLI" \ + 1 \ + -s "Async sign callback: using key slot " \ + -S "Async resume" \ + -s "Async cancel" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: error in resume" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=3" \ + "$P_CLI" \ + 1 \ + -s "Async sign callback: using key slot " \ + -s "Async resume callback: injected error" \ + -s "! mbedtls_ssl_handshake returned" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: error in pk" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=4" \ + "$P_CLI" \ + 1 \ + -s "Async sign callback: using key slot " \ + -s "Async resume callback: done but injected error" \ + -s "! mbedtls_ssl_handshake returned" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +run_test "SSL async private: renegotiation: client-initiated" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 + exchanges=2 renegotiation=1" \ + "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +run_test "SSL async private: renegotiation: server-initiated" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 + exchanges=2 renegotiation=1 renegotiate=1" \ + "$P_CLI exchanges=2 renegotiation=1" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): done, status=0" + # Tests for DTLS HelloVerifyRequest run_test "DTLS cookie: enabled" \ From 3ce9b900d262149518f2d3222f6a11c8542f629a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 6 Jan 2018 01:34:21 +0100 Subject: [PATCH 0218/1100] ssl_write_server_key_exchange refactor: remove dig_signed_len Simplify the redundant varaible dig_signed_len away. This is in preparation for splitting ssl_write_server_key_exchange into several functions. --- library/ssl_srv.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index ac9e6a55d9..daebb9e941 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2836,8 +2836,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) size_t len; #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) - unsigned char *dig_signed = p; - size_t dig_signed_len = 0; + unsigned char *dig_signed = NULL; #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ @@ -2961,7 +2960,6 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) dig_signed = p; - dig_signed_len = len; #endif p += len; @@ -3022,8 +3020,7 @@ curve_matching_done: } #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) - dig_signed = p; - dig_signed_len = len; + dig_signed = p; #endif p += len; @@ -3041,6 +3038,7 @@ curve_matching_done: #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { + size_t dig_signed_len = p - dig_signed; size_t signature_len = 0; unsigned int hashlen = 0; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; From 184a3faa8ad1a5264dca11dd7a8a01e73295af8f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 6 Jan 2018 01:46:17 +0100 Subject: [PATCH 0219/1100] ssl_write_server_key_exchange refactor: create ssl_prepare_server_key_exchange This is in the process of splitting ssl_write_server_key_exchange into several functions. --- library/ssl_srv.c | 87 +++++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index daebb9e941..d87663d99f 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2826,9 +2826,8 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) +static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl ) { - int ret; const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; @@ -2839,6 +2838,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) unsigned char *dig_signed = NULL; #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ + (void) ciphersuite_info; /* unused in some configurations */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); @@ -2855,34 +2855,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) /* * - * Part 1: Extract static ECDH parameters and abort - * if ServerKeyExchange not needed. - * - */ - - /* For suites involving ECDH, extract DH parameters - * from certificate at this point. */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) - if( mbedtls_ssl_ciphersuite_uses_ecdh( ciphersuite_info ) ) - { - ssl_get_ecdh_params_from_cert( ssl ); - } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ - - /* Key exchanges not involving ephemeral keys don't use - * ServerKeyExchange, so end here. */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) - if( mbedtls_ssl_ciphersuite_no_pfs( ciphersuite_info ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write server key exchange" ) ); - ssl->state++; - return( 0 ); - } -#endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ - - /* - * - * Part 2: Provide key exchange parameters for chosen ciphersuite. + * Part 1: Provide key exchange parameters for chosen ciphersuite. * */ @@ -2892,6 +2865,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { + int ret; const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, @@ -2928,6 +2902,8 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) if( mbedtls_ssl_ciphersuite_uses_dhe( ciphersuite_info ) ) { + int ret; + if( ssl->conf->dhm_P.p == NULL || ssl->conf->dhm_G.p == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "no DH parameters set" ) ); @@ -2987,6 +2963,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) */ const mbedtls_ecp_curve_info **curve = NULL; const mbedtls_ecp_group_id *gid; + int ret; /* Match our preference list against the offered curves */ for( gid = ssl->conf->curve_list; *gid != MBEDTLS_ECP_DP_NONE; gid++ ) @@ -3031,7 +3008,7 @@ curve_matching_done: /* * - * Part 3: For key exchanges involving the server signing the + * Part 2: For key exchanges involving the server signing the * exchange parameters, compute and add the signature here. * */ @@ -3042,9 +3019,10 @@ curve_matching_done: size_t signature_len = 0; unsigned int hashlen = 0; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; + int ret; /* - * 3.1: Choose hash algorithm: + * 2.1: Choose hash algorithm: * A: For TLS 1.2, obey signature-hash-algorithm extension * to choose appropriate hash. * B: For SSL3, TLS1.0, TLS1.1 and ECDHE_ECDSA, use SHA1 @@ -3091,7 +3069,7 @@ curve_matching_done: MBEDTLS_SSL_DEBUG_MSG( 3, ( "pick hash algorithm %d for signing", md_alg ) ); /* - * 3.2: Compute the hash to be signed + * 2.2: Compute the hash to be signed */ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -3176,7 +3154,7 @@ curve_matching_done: MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen ); /* - * 3.3: Compute and add the signature + * 2.3: Compute and add the signature */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 ) @@ -3258,7 +3236,9 @@ curve_matching_done: return( ret ); } +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) have_signature: +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ *(p++) = (unsigned char)( signature_len >> 8 ); *(p++) = (unsigned char)( signature_len ); @@ -3268,9 +3248,44 @@ curve_matching_done: } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ - /* Done with actual work; add header and send. */ - ssl->out_msglen = p - ssl->out_msg; + return( 0 ); +} + +static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) +{ + int ret; + /* Extract static ECDH parameters and abort if ServerKeyExchange + * is not needed. */ +#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) + const mbedtls_ssl_ciphersuite_t *ciphersuite_info = + ssl->transform_negotiate->ciphersuite_info; + + if( mbedtls_ssl_ciphersuite_no_pfs( ciphersuite_info ) ) + { + /* For suites involving ECDH, extract DH parameters + * from certificate at this point. */ +#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) + if( mbedtls_ssl_ciphersuite_uses_ecdh( ciphersuite_info ) ) + { + ssl_get_ecdh_params_from_cert( ssl ); + } +#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ + + /* Key exchanges not involving ephemeral keys don't use + * ServerKeyExchange, so end here. */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= skip write server key exchange" ) ); + ssl->state++; + return( 0 ); + } +#endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ + + /* ServerKeyExchange is needed. Prepare the message. */ + ret = ssl_prepare_server_key_exchange( ssl ); + if( ret != 0 ) + return( ret ); + + /* Add header and send. */ ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE; From 1004c19ed0a67c4bdbc4635dcd6814817360338e Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 16:59:14 +0100 Subject: [PATCH 0220/1100] ssl_write_server_key_exchange refactor: don't use p in the signing phase This is in preparation of further splitting ssl_write_server_key_exchange into several functions. --- library/ssl_srv.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index d87663d99f..6c2059b622 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3006,6 +3006,8 @@ curve_matching_done: } #endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED */ + ssl->out_msglen = p - ssl->out_msg; + /* * * Part 2: For key exchanges involving the server signing the @@ -3015,7 +3017,7 @@ curve_matching_done: #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { - size_t dig_signed_len = p - dig_signed; + size_t dig_signed_len = ssl->out_msg + ssl->out_msglen - dig_signed; size_t signature_len = 0; unsigned int hashlen = 0; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; @@ -3175,8 +3177,10 @@ curve_matching_done: * */ - *(p++) = mbedtls_ssl_hash_from_md_alg( md_alg ); - *(p++) = mbedtls_ssl_sig_from_pk_alg( sig_alg ); + ssl->out_msg[ssl->out_msglen++] = + mbedtls_ssl_hash_from_md_alg( md_alg ); + ssl->out_msg[ssl->out_msglen++] = + mbedtls_ssl_sig_from_pk_alg( sig_alg ); } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ @@ -3184,7 +3188,7 @@ curve_matching_done: if( ssl->conf->f_async_sign_start != NULL ) { size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN - - ( p + 2 ) ); + - ( ssl->out_msg + ssl->out_msglen + 2 ) ); ret = ssl->conf->f_async_sign_start( ssl->conf->p_async_connection_ctx, &ssl->handshake->p_async_operation_ctx, @@ -3200,7 +3204,8 @@ curve_matching_done: ret = ssl->conf->f_async_resume( ssl->conf->p_async_connection_ctx, ssl->handshake->p_async_operation_ctx, - p + 2, &signature_len, sig_max_len ); + ssl->out_msg + ssl->out_msglen + 2, + &signature_len, sig_max_len ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->p_async_operation_ctx = NULL; @@ -3213,7 +3218,7 @@ curve_matching_done: } /* FALLTHROUGH */ case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: - ssl->handshake->out_async_start = p; + ssl->handshake->out_async_start = ssl->out_msg + ssl->out_msglen; MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); default: @@ -3229,8 +3234,12 @@ curve_matching_done: return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); } - if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), md_alg, hash, hashlen, - p + 2 , &signature_len, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), + md_alg, hash, hashlen, + ssl->out_msg + ssl->out_msglen + 2, + &signature_len, + ssl->conf->f_rng, + ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_sign", ret ); return( ret ); @@ -3239,22 +3248,24 @@ curve_matching_done: #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) have_signature: #endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ - *(p++) = (unsigned char)( signature_len >> 8 ); - *(p++) = (unsigned char)( signature_len ); + ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len >> 8 ); + ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len ); - MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", p, signature_len ); + MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", + ssl->out_msg + ssl->out_msglen, + signature_len ); - p += signature_len; + ssl->out_msglen += signature_len; } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ - ssl->out_msglen = p - ssl->out_msg; return( 0 ); } static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { int ret; + /* Extract static ECDH parameters and abort if ServerKeyExchange * is not needed. */ #if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) From 7ab013a08a729dab0c43dfa860c8218b94ca83eb Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 17:04:16 +0100 Subject: [PATCH 0221/1100] ssl_write_server_key_exchange refactor: move signature_len out Move the writing of signature_len out of ssl_prepare_server_key_exchange. This simplifies the control flow (one less goto). --- library/ssl_srv.c | 50 +++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 6c2059b622..daf87b96c3 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2826,7 +2826,8 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ -static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl ) +static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, + size_t *signature_len ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; @@ -2839,6 +2840,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ (void) ciphersuite_info; /* unused in some configurations */ + (void) signature_len; /* unused in some configurations */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); @@ -3018,7 +3020,6 @@ curve_matching_done: if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { size_t dig_signed_len = ssl->out_msg + ssl->out_msglen - dig_signed; - size_t signature_len = 0; unsigned int hashlen = 0; unsigned char hash[MBEDTLS_MD_MAX_SIZE]; int ret; @@ -3205,16 +3206,12 @@ curve_matching_done: ssl->conf->p_async_connection_ctx, ssl->handshake->p_async_operation_ctx, ssl->out_msg + ssl->out_msglen + 2, - &signature_len, sig_max_len ); + signature_len, sig_max_len ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->p_async_operation_ctx = NULL; - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "f_async_resume", ret ); - return( ret ); - } - goto have_signature; + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_resume", ret ); + return( ret ); } /* FALLTHROUGH */ case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: @@ -3237,25 +3234,13 @@ curve_matching_done: if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), md_alg, hash, hashlen, ssl->out_msg + ssl->out_msglen + 2, - &signature_len, + signature_len, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_sign", ret ); return( ret ); } - -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) - have_signature: -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ - ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len >> 8 ); - ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len ); - - MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", - ssl->out_msg + ssl->out_msglen, - signature_len ); - - ssl->out_msglen += signature_len; } #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ @@ -3265,6 +3250,7 @@ curve_matching_done: static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { int ret; + size_t signature_len = 0; /* Extract static ECDH parameters and abort if ServerKeyExchange * is not needed. */ @@ -3292,10 +3278,28 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ /* ServerKeyExchange is needed. Prepare the message. */ - ret = ssl_prepare_server_key_exchange( ssl ); + ret = ssl_prepare_server_key_exchange( ssl, &signature_len ); if( ret != 0 ) return( ret ); + /* If there is a signature, write its length. + ssl_prepare_server_key_exchange already wrote the signature + itself at its proper place in the output buffer. */ +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) + if( signature_len != 0 ) + { + ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len >> 8 ); + ssl->out_msg[ssl->out_msglen++] = (unsigned char)( signature_len ); + + MBEDTLS_SSL_DEBUG_BUF( 3, "my signature", + ssl->out_msg + ssl->out_msglen, + signature_len ); + + /* Skip over the already-written signature */ + ssl->out_msglen += signature_len; + } +#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ + /* Add header and send. */ ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_SERVER_KEY_EXCHANGE; From ab50f83a93b07fb0bb82ecdfcf4d8565229e9173 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 6 Jan 2018 03:12:45 +0100 Subject: [PATCH 0222/1100] Improve documentation of async operation start callbacks --- include/mbedtls/ssl.h | 58 ++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 38538c7f1a..d895f3acf8 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -551,28 +551,29 @@ typedef int mbedtls_ssl_get_timer_t( void * ctx ); * * \param connection_ctx Pointer to the connection context set in the * SSL configuration - * \param p_operation_ctx On output, pointer to the operation context. - * This pointer will be passed later to the resume - * or detach function. The value is only used if - * an operation is started, i.e. if this callback - * returns 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * \param p_operation_ctx On success, pointer to the operation context. + * This must be a non-null pointer. Success means + * that an operation was started, and the return + * status is 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * This pointer will be passed to later calls to the + * resume or cancel function. If the callback fails, + * the value is ignored. * \param cert Certificate containing the public key * \param md_alg Hash algorithm * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. * \param hash_len Size of the \c hash buffer in bytes * - * \return - 0 if the SSL stack should call the resume callback - * immediately. The resume function may provide the - * or may itself return - * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. - * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the SSL stack - * should return immediately without calling the resume - * callback. + * \return - 0 if the operation was started successfully and the SSL + * stack should call the resume callback immediately. + * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * was started successfully and the SSL stack should return + * immediately without calling the resume callback yet. * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external * processor does not support this key. The SSL stack will - * use the associated private key object instead. - * - Any other error is propagated up the call chain. + * use the private key object instead. + * - Any other error indicates a fatal failure and is + * propagated up the call chain. */ typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, void **p_operation_ctx, @@ -604,27 +605,28 @@ typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, * * \param connection_ctx Pointer to the connection context set in the * SSL configuration - * \param p_operation_ctx On output, pointer to the operation context. - * This pointer will be passed later to the resume - * or detach function. The value is only used if - * an operation is started, i.e. if this callback - * returns 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * \param p_operation_ctx On success, pointer to the operation context. + * This must be a non-null pointer. Success means + * that an operation was started, and the return + * status is 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. + * This pointer will be passed to later calls to the + * resume or cancel function. If the callback fails, + * the value is ignored. * \param cert Certificate containing the public key * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. * \param input_len Size of the \c input buffer in bytes * - * \return - 0 if the SSL stack should call the resume callback - * immediately. The resume function may provide the - * or may itself return - * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. - * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the SSL stack - * should return immediately without calling the resume - * callback. + * \return - 0 if the operation was started successfully and the SSL + * stack should call the resume callback immediately. + * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * was started successfully and the SSL stack should return + * immediately without calling the resume callback yet. * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external * processor does not support this key. The SSL stack will - * use the associated private key object instead. - * - Any other error is propagated up the call chain. + * use the private key object instead. + * - Any other error indicates a fatal failure and is + * propagated up the call chain. */ typedef int mbedtls_ssl_async_decrypt_t( void *connection_ctx, void **p_operation_ctx, From d04d292b64865b1316d4c3117a2cc3104404e90c Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 6 Jan 2018 03:13:12 +0100 Subject: [PATCH 0223/1100] Get rid of useless handshake field out_async_start The location where the signature goes is now tracked via ssl->out_msglen, which makes ssl->handshake->out_async_start redundant. --- include/mbedtls/ssl_internal.h | 1 - library/ssl_srv.c | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index e4b767b7b0..c141e8adce 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -220,7 +220,6 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) void *p_async_operation_ctx; /*!< asynchronous operation context */ - unsigned char *out_async_start; /*!< pointer where the asynchronous operation must write in the output buffer */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ #if defined(MBEDTLS_SSL_PROTO_DTLS) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index daf87b96c3..f6db3c715c 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2846,10 +2846,9 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) - if( ssl->handshake->out_async_start != NULL ) + if( ssl->handshake->p_async_operation_ctx != NULL ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); - p = ssl->handshake->out_async_start; goto async_resume; } #endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && @@ -3215,7 +3214,6 @@ curve_matching_done: } /* FALLTHROUGH */ case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: - ssl->handshake->out_async_start = ssl->out_msg + ssl->out_msglen; MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); default: From ebd30ae205b3d76ffd7101006a46e38a8ba09eea Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 6 Jan 2018 03:34:20 +0100 Subject: [PATCH 0224/1100] ssl_write_server_key_exchange refactor: ssl_resume_server_key_exchange Continue clarifying the control flow. This gets rid of the last goto introduced by the initial code for asynchronous signature support. --- library/ssl_srv.c | 71 ++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index f6db3c715c..da6069d84e 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2826,6 +2826,27 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, + size_t *signature_len ) +{ + size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN + - ( ssl->out_msg + ssl->out_msglen + 2 ) ); + int ret = ssl->conf->f_async_resume( ssl->conf->p_async_connection_ctx, + ssl->handshake->p_async_operation_ctx, + ssl->out_msg + ssl->out_msglen + 2, + signature_len, sig_max_len ); + MBEDTLS_SSL_DEBUG_RET( 3, "f_async_resume", ret ); + if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + { + ssl->handshake->p_async_operation_ctx = NULL; + } + return( ret ); +} +#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ + static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) { @@ -2844,16 +2865,6 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) - if( ssl->handshake->p_async_operation_ctx != NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); - goto async_resume; - } -#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ - /* * * Part 1: Provide key exchange parameters for chosen ciphersuite. @@ -3187,8 +3198,6 @@ curve_matching_done: #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) if( ssl->conf->f_async_sign_start != NULL ) { - size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN - - ( ssl->out_msg + ssl->out_msglen + 2 ) ); ret = ssl->conf->f_async_sign_start( ssl->conf->p_async_connection_ctx, &ssl->handshake->p_async_operation_ctx, @@ -3200,19 +3209,7 @@ curve_matching_done: /* act as if f_async_sign was null */ break; case 0: - async_resume: - ret = ssl->conf->f_async_resume( - ssl->conf->p_async_connection_ctx, - ssl->handshake->p_async_operation_ctx, - ssl->out_msg + ssl->out_msglen + 2, - signature_len, sig_max_len ); - if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) - { - ssl->handshake->p_async_operation_ctx = NULL; - MBEDTLS_SSL_DEBUG_RET( 1, "f_async_resume", ret ); - return( ret ); - } - /* FALLTHROUGH */ + return( ssl_resume_server_key_exchange( ssl, signature_len ) ); case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); @@ -3275,10 +3272,26 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ - /* ServerKeyExchange is needed. Prepare the message. */ - ret = ssl_prepare_server_key_exchange( ssl, &signature_len ); - if( ret != 0 ) - return( ret ); + /* If we have already prepared the message and there is an ongoing + signature operation, resume signing. */ +#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( ssl->handshake->p_async_operation_ctx != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); + ret = ssl_resume_server_key_exchange( ssl, &signature_len ); + if( ret != 0 ) + return( ret ); + } + else +#endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && + defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ + { + /* ServerKeyExchange is needed. Prepare the message. */ + ret = ssl_prepare_server_key_exchange( ssl, &signature_len ); + if( ret != 0 ) + return( ret ); + } /* If there is a signature, write its length. ssl_prepare_server_key_exchange already wrote the signature From d3eb0619a6858798e1220b42c43e0487002cb34d Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 17:07:44 +0100 Subject: [PATCH 0225/1100] ssl_write_server_key_exchange refactor: minor cleanup Clean up some debug messages and improve some comments. --- library/ssl_srv.c | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index da6069d84e..415eaf8c9e 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2837,25 +2837,26 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, ssl->handshake->p_async_operation_ctx, ssl->out_msg + ssl->out_msglen + 2, signature_len, sig_max_len ); - MBEDTLS_SSL_DEBUG_RET( 3, "f_async_resume", ret ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->p_async_operation_ctx = NULL; } + MBEDTLS_SSL_DEBUG_RET( 2, "ssl_resume_server_key_exchange", ret ); return( ret ); } #endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ +/* Prepare the ServerKeyExchange message, up to and including + calculating the signature if any, but excluding formatting the + signature and sending the message. */ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; - unsigned char *p = ssl->out_msg + 4; #if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) - size_t len; #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) unsigned char *dig_signed = NULL; #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ @@ -2863,8 +2864,6 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, (void) ciphersuite_info; /* unused in some configurations */ (void) signature_len; /* unused in some configurations */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); - /* * * Part 1: Provide key exchange parameters for chosen ciphersuite. @@ -2879,6 +2878,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, { int ret; const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + size_t len; ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, p, end - p, &len, ssl->conf->f_rng, ssl->conf->p_rng ); @@ -2915,6 +2915,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, if( mbedtls_ssl_ciphersuite_uses_dhe( ciphersuite_info ) ) { int ret; + size_t len; if( ssl->conf->dhm_P.p == NULL || ssl->conf->dhm_G.p == NULL ) { @@ -2976,6 +2977,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, const mbedtls_ecp_curve_info **curve = NULL; const mbedtls_ecp_group_id *gid; int ret; + size_t len; /* Match our preference list against the offered curves */ for( gid = ssl->conf->curve_list; *gid != MBEDTLS_ECP_DP_NONE; gid++ ) @@ -3211,7 +3213,6 @@ curve_matching_done: case 0: return( ssl_resume_server_key_exchange( ssl, signature_len ) ); case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); default: MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign", ret ); @@ -3242,17 +3243,24 @@ curve_matching_done: return( 0 ); } +/* Prepare the ServerKeyExchange message and send it. For ciphersuites + that do not include a ServerKeyExchange message, do nothing. Either + way, if successful, move on to the next step in the SSL state + machine */ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { int ret; size_t signature_len = 0; - - /* Extract static ECDH parameters and abort if ServerKeyExchange - * is not needed. */ #if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; +#endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); + +#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) + /* Extract static ECDH parameters and abort if ServerKeyExchange + * is not needed. */ if( mbedtls_ssl_ciphersuite_no_pfs( ciphersuite_info ) ) { /* For suites involving ECDH, extract DH parameters @@ -3272,16 +3280,14 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ - /* If we have already prepared the message and there is an ongoing - signature operation, resume signing. */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + /* If we have already prepared the message and there is an ongoing + signature operation, resume signing. */ if( ssl->handshake->p_async_operation_ctx != NULL ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); ret = ssl_resume_server_key_exchange( ssl, &signature_len ); - if( ret != 0 ) - return( ret ); } else #endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && @@ -3289,8 +3295,15 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { /* ServerKeyExchange is needed. Prepare the message. */ ret = ssl_prepare_server_key_exchange( ssl, &signature_len ); - if( ret != 0 ) - return( ret ); + } + + if( ret != 0 ) + { + if( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); + else + ssl->out_msglen = 0; + return( ret ); } /* If there is a signature, write its length. @@ -3324,7 +3337,6 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange" ) ); - return( 0 ); } From f9f15ae5a12c9595315a104549e95c59b7da931f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 17:13:01 +0100 Subject: [PATCH 0226/1100] ssl_write_server_key_exchange refactor: don't use p at all Use ssl->out_msglen as the cursor in ssl->out_msg throughout, rather than switching a between pointer and an offset. --- library/ssl_srv.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 415eaf8c9e..56a266231c 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2855,15 +2855,17 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, { const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; - unsigned char *p = ssl->out_msg + 4; #if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) unsigned char *dig_signed = NULL; #endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ + (void) ciphersuite_info; /* unused in some configurations */ (void) signature_len; /* unused in some configurations */ + ssl->out_msglen = 4; /* header (type:1, length:3) to be written later */ + /* * * Part 1: Provide key exchange parameters for chosen ciphersuite. @@ -2877,18 +2879,20 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { int ret; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; size_t len; - ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, - p, end - p, &len, ssl->conf->f_rng, ssl->conf->p_rng ); + ret = mbedtls_ecjpake_write_round_two( + &ssl->handshake->ecjpake_ctx, + ssl->out_msg + ssl->out_msglen, + MBEDTLS_SSL_MAX_CONTENT_LEN - ssl->out_msglen, &len, + ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecjpake_write_round_two", ret ); return( ret ); } - p += len; + ssl->out_msglen += len; } #endif /* MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED */ @@ -2902,8 +2906,8 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_DHE_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECDHE_PSK ) { - *(p++) = 0x00; - *(p++) = 0x00; + ssl->out_msg[ssl->out_msglen++] = 0x00; + ssl->out_msg[ssl->out_msglen++] = 0x00; } #endif /* MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED */ @@ -2939,19 +2943,21 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, return( ret ); } - if( ( ret = mbedtls_dhm_make_params( &ssl->handshake->dhm_ctx, - (int) mbedtls_mpi_size( &ssl->handshake->dhm_ctx.P ), - p, &len, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) + if( ( ret = mbedtls_dhm_make_params( + &ssl->handshake->dhm_ctx, + (int) mbedtls_mpi_size( &ssl->handshake->dhm_ctx.P ), + ssl->out_msg + ssl->out_msglen, &len, + ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_dhm_make_params", ret ); return( ret ); } #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) - dig_signed = p; + dig_signed = ssl->out_msg + ssl->out_msglen; #endif - p += len; + ssl->out_msglen += len; MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: X ", &ssl->handshake->dhm_ctx.X ); MBEDTLS_SSL_DEBUG_MPI( 3, "DHM: P ", &ssl->handshake->dhm_ctx.P ); @@ -3003,7 +3009,8 @@ curve_matching_done: if( ( ret = mbedtls_ecdh_make_params( &ssl->handshake->ecdh_ctx, &len, - p, ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN - p, + ssl->out_msg + ssl->out_msglen, + MBEDTLS_SSL_MAX_CONTENT_LEN - ssl->out_msglen, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_make_params", ret ); @@ -3011,17 +3018,15 @@ curve_matching_done: } #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) - dig_signed = p; + dig_signed = ssl->out_msg + ssl->out_msglen; #endif - p += len; + ssl->out_msglen += len; MBEDTLS_SSL_DEBUG_ECP( 3, "ECDH: Q ", &ssl->handshake->ecdh_ctx.Q ); } #endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED */ - ssl->out_msglen = p - ssl->out_msg; - /* * * Part 2: For key exchanges involving the server signing the From 60ee4cadceeae56375a1543a592177e3722695d1 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 11:28:05 +0100 Subject: [PATCH 0227/1100] SSL asynchronous signature: basic test of recovery after error Add test cases where the server goes through an async operation which fails, then the server makes a successful connection. --- programs/ssl/ssl_server2.c | 19 +++++++++++---- tests/ssl-opt.sh | 50 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 28f6367511..2a4c833d97 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -203,7 +203,8 @@ int main( void ) " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ " default: -1 (not asynchronous)\n" \ - " async_private_error=%%d Async callback error injection (default=0=none, 1=start, 2=cancel, 3=resume, 4=pk)" + " async_private_error=%%d Async callback error injection (default=0=none,\n" \ + " 1=start, 2=cancel, 3=resume, 4=pk, negative=first time only)" #else #define USAGE_SSL_ASYNC "" #endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ @@ -1238,7 +1239,8 @@ int main( int argc, char *argv[] ) else if( strcmp( p, "async_private_error" ) == 0 ) { int n = atoi( q ); - if( n < 0 || n > SSL_ASYNC_INJECT_ERROR_MAX ) + if( n < -SSL_ASYNC_INJECT_ERROR_MAX || + n > SSL_ASYNC_INJECT_ERROR_MAX ) { ret = 2; goto usage; @@ -2152,7 +2154,9 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) if( opt.async_private_delay1 >= 0 || opt.async_private_delay2 >= 0 ) { - ssl_async_keys.inject_error = opt.async_private_error; + ssl_async_keys.inject_error = ( opt.async_private_error < 0 ? + - opt.async_private_error : + opt.async_private_error ); ssl_async_keys.f_rng = mbedtls_ctr_drbg_random; ssl_async_keys.p_rng = &ctr_drbg; mbedtls_ssl_conf_async_private_cb( &conf, @@ -2338,10 +2342,10 @@ handshake: ret = mbedtls_ssl_handshake( &ssl ); #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) if( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS && - opt.async_private_error == SSL_ASYNC_INJECT_ERROR_CANCEL ) + ssl_async_keys.inject_error == SSL_ASYNC_INJECT_ERROR_CANCEL ) { mbedtls_printf( " cancelling on injected error\n" ); - goto reset; + break; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ } @@ -2371,6 +2375,11 @@ handshake: } #endif +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( opt.async_private_error < 0 ) + /* Injected error only the first time round, to test reset */ + ssl_async_keys.inject_error = SSL_ASYNC_INJECT_ERROR_NONE; +#endif goto reset; } else /* ret == 0 */ diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 5f23cd1df4..1ec1a149a7 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3737,6 +3737,56 @@ run_test "SSL async private: error in pk" \ -s "Async resume callback: done but injected error" \ -s "! mbedtls_ssl_handshake returned" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: cancel after start then operate correctly" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=-2" \ + "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \ + 0 \ + -s "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" \ + -s "Async resume" \ + -s "Successful connection" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: error in resume then operate correctly" \ + "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=-3" \ + "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \ + 0 \ + -s "! mbedtls_ssl_handshake returned" \ + -s "Async resume" \ + -s "Successful connection" + +# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: cancel after start then fall back to transparent key" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay1=1 async_private_error=-2" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256; + [ \$? -eq 1 ] && + $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -S "Async resume" \ + -s "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" \ + -s "Async sign callback: no key matches this certificate." \ + -s "Successful connection" + +# key1: ECDSA, key2: RSA; use key1 through async, then key2 directly +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: error in resume then fall back to transparent key" \ + "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ + async_private_delay1=1 async_private_error=-3" \ + "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256; + [ \$? -eq 1 ] && + $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async resume" \ + -s "! mbedtls_ssl_handshake returned" \ + -s "Async sign callback: no key matches this certificate." \ + -s "Successful connection" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: client-initiated" \ From 9d12b4c849a84cb1783bca04e78aa8ec804833a5 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 13:17:27 +0100 Subject: [PATCH 0228/1100] SSL asynchronous signature: turn off by default --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 80a4fef32a..6b7ecf2ca4 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2342,7 +2342,7 @@ * operation inside the library. * */ -#define MBEDTLS_SSL_ASYNC_PRIVATE_C +//#define MBEDTLS_SSL_ASYNC_PRIVATE_C /** * \def MBEDTLS_SSL_CACHE_C From dbb14e09f240867ed4048717bc6dd97db5ac69ac Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 18:17:53 +0100 Subject: [PATCH 0229/1100] all.sh: run ssl-opt.sh on ECJPAKE, SSL async Run ssl-opt.sh in the "full" configuration on things that are not in the default configuration: SSL async private, ECJPAKE. --- tests/scripts/all.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 2ea31dbc29..f9eb990f30 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -541,8 +541,8 @@ make CFLAGS='-Werror -Wall -Wextra -std=c99 -pedantic' msg "test: main suites (full config)" # ~ 5s make CFLAGS='-Werror -Wall -Wextra' test -msg "test: ssl-opt.sh default (full config)" # ~ 1s -if_build_succeeded tests/ssl-opt.sh -f Default +msg "test: ssl-opt.sh default, ECJPAKE, SSL async (full config)" # ~ 1s +if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE\|SSL async private' msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' From e630aed5aef599cc661473877e6c2e6c7c1fbfbf Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 8 Jan 2018 18:28:00 +0100 Subject: [PATCH 0230/1100] SSL asynchronous signature: ChangeLog entry --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 2284f34272..8c7b6d8def 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,10 @@ Features MBEDTLS_CMAC_ALT). Submitted by Steve Cooreman, Silicon Labs. * Add support for alternative implementations of GCM, selected by the configuration flag MBEDTLS_GCM_ALT. + * In TLS, support offloading private key operations to an external + cryptoprocessor. Private key operations can be asynchronous to allow + non-blocking operation of the TLS stack. + Currently restricted to signature only, server-side only. New deprecations * Deprecate usage of RSA primitives with non-matching key-type From d9bfcabcb918d7a6f1c933a1ef45f79251a3acb7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 12 Jan 2018 13:49:37 +0100 Subject: [PATCH 0231/1100] SSL asynchronous signature: fix renegotiation tests Fixed typo in "SSL async private: renegotiation" tests that caused the renegotiation not to actually take place. --- tests/ssl-opt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 1ec1a149a7..e3a3edd025 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3790,7 +3790,7 @@ run_test "SSL async private: error in resume then fall back to transparent ke requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: client-initiated" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 + "$P_SRV async_private_delay1=1 async_private_delay2=1 \ exchanges=2 renegotiation=1" \ "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \ 0 \ @@ -3800,7 +3800,7 @@ run_test "SSL async private: renegotiation: client-initiated" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: server-initiated" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 + "$P_SRV async_private_delay1=1 async_private_delay2=1 \ exchanges=2 renegotiation=1 renegotiate=1" \ "$P_CLI exchanges=2 renegotiation=1" \ 0 \ From 422ccabe2944574ec6475a6e359d7e24bbc13975 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 11 Jan 2018 18:29:01 +0100 Subject: [PATCH 0232/1100] ssl_parse_encrypted_pms refactor: prepare for remote private key Use the public key to extract metadata rather than the public key. Don't abort early if there is no private key. This is in preparation for allowing the private key operation to be offloaded to an external cryptographic module. --- library/ssl_srv.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 56a266231c..c8578158a7 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3422,7 +3422,9 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, size_t pms_offset ) { int ret; - size_t len = mbedtls_pk_get_len( mbedtls_ssl_own_key( ssl ) ); + mbedtls_pk_context *private_key = mbedtls_ssl_own_key( ssl ); + mbedtls_pk_context *public_key = &mbedtls_ssl_own_cert( ssl )->pk; + size_t len = mbedtls_pk_get_len( public_key ); unsigned char *pms = ssl->handshake->premaster + pms_offset; unsigned char ver[2]; unsigned char fake_pms[48], peer_pms[48]; @@ -3430,14 +3432,8 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, size_t i, peer_pmslen; unsigned int diff; - if( ! mbedtls_pk_can_do( mbedtls_ssl_own_key( ssl ), MBEDTLS_PK_RSA ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no RSA private key" ) ); - return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); - } - /* - * Decrypt the premaster using own private RSA key + * Prepare to decrypt the premaster using own private RSA key */ #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) @@ -3466,18 +3462,31 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding * must not cause the connection to end immediately; instead, send a * bad_record_mac later in the handshake. - * Also, avoid data-dependant branches here to protect against - * timing-based variants. + * To protect against timing-based variants, always generate the fake + * premaster secret, so as to avoid data-dependant branches. */ ret = ssl->conf->f_rng( ssl->conf->p_rng, fake_pms, sizeof( fake_pms ) ); if( ret != 0 ) return( ret ); - ret = mbedtls_pk_decrypt( mbedtls_ssl_own_key( ssl ), p, len, + /* + * Decrypt the premaster secret + */ + if( ! mbedtls_pk_can_do( private_key, MBEDTLS_PK_RSA ) ) + { + /* */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no RSA private key" ) ); + return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); + } + + ret = mbedtls_pk_decrypt( private_key, p, len, peer_pms, &peer_pmslen, sizeof( peer_pms ), ssl->conf->f_rng, ssl->conf->p_rng ); + /* Avoid data-dependent branches while checking for invalid + * padding, to protect against timing-based Bleichenbacher-type + * attacks. */ diff = (unsigned int) ret; diff |= peer_pmslen ^ 48; diff |= peer_pms[0] ^ ver[0]; @@ -3508,6 +3517,8 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, #pragma warning( pop ) #endif + /* Set pms to either the true or the fake PMS, without + * data-dependent branches. */ for( i = 0; i < ssl->handshake->pmslen; i++ ) pms[i] = ( mask & fake_pms[i] ) | ( (~mask) & peer_pms[i] ); From bcd98a5306a6d2143c992f1169449c9a32b39642 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 11 Jan 2018 21:30:40 +0100 Subject: [PATCH 0233/1100] ssl_parse_encrypted_pms refactor: prepare, decrypt, return Reorganize ssl_parse_encrypted_pms so that it first prepares the ciphertext to decrypt, then decrypts it, then returns either the decrypted premaster secret or random data in an appropriate manner. This is in preparation for allowing the private key operation to be offloaded to an external cryptographic module which can operate asynchronously. The refactored code no longer calculates state before the decryption that needs to be saved until after the decryption, which allows the decryption to be started and later resumed. --- library/ssl_srv.c | 76 ++++++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index c8578158a7..0c7e15d293 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3416,21 +3416,17 @@ static int ssl_parse_client_dh_public( mbedtls_ssl_context *ssl, unsigned char * #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) -static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, - const unsigned char *p, - const unsigned char *end, - size_t pms_offset ) +static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, + const unsigned char *p, + const unsigned char *end, + unsigned char *peer_pms, + size_t *peer_pmslen, + size_t peer_pmssize ) { int ret; mbedtls_pk_context *private_key = mbedtls_ssl_own_key( ssl ); mbedtls_pk_context *public_key = &mbedtls_ssl_own_cert( ssl )->pk; size_t len = mbedtls_pk_get_len( public_key ); - unsigned char *pms = ssl->handshake->premaster + pms_offset; - unsigned char ver[2]; - unsigned char fake_pms[48], peer_pms[48]; - unsigned char mask; - size_t i, peer_pmslen; - unsigned int diff; /* * Prepare to decrypt the premaster using own private RSA key @@ -3454,21 +3450,6 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); } - mbedtls_ssl_write_version( ssl->handshake->max_major_ver, - ssl->handshake->max_minor_ver, - ssl->conf->transport, ver ); - - /* - * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding - * must not cause the connection to end immediately; instead, send a - * bad_record_mac later in the handshake. - * To protect against timing-based variants, always generate the fake - * premaster secret, so as to avoid data-dependant branches. - */ - ret = ssl->conf->f_rng( ssl->conf->p_rng, fake_pms, sizeof( fake_pms ) ); - if( ret != 0 ) - return( ret ); - /* * Decrypt the premaster secret */ @@ -3480,9 +3461,48 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, } ret = mbedtls_pk_decrypt( private_key, p, len, - peer_pms, &peer_pmslen, - sizeof( peer_pms ), - ssl->conf->f_rng, ssl->conf->p_rng ); + peer_pms, peer_pmslen, peer_pmssize, + ssl->conf->f_rng, ssl->conf->p_rng ); + return( ret ); +} + +static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, + const unsigned char *p, + const unsigned char *end, + size_t pms_offset ) +{ + int ret; + unsigned char *pms = ssl->handshake->premaster + pms_offset; + unsigned char ver[2]; + unsigned char fake_pms[48], peer_pms[48]; + unsigned char mask; + size_t i, peer_pmslen; + unsigned int diff; + + ret = ssl_decrypt_encrypted_pms( ssl, p, end, + peer_pms, + &peer_pmslen, + sizeof( peer_pms ) ); + + /* + * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding + * must not cause the connection to end immediately; instead, send a + * bad_record_mac later in the handshake. + * To protect against timing-based variants of the attack, we must + * not have any branch that depends on whether the decryption was + * successful. In particular, always generate the fake premaster secret, + * regardless of whether it will ultimately influence the output or not. + */ + ret = ssl->conf->f_rng( ssl->conf->p_rng, fake_pms, sizeof( fake_pms ) ); + if( ret != 0 ) + { + /* It's ok to abort on an RNG failure, since this does not */ + return( ret ); + } + + mbedtls_ssl_write_version( ssl->handshake->max_major_ver, + ssl->handshake->max_minor_ver, + ssl->conf->transport, ver ); /* Avoid data-dependent branches while checking for invalid * padding, to protect against timing-based Bleichenbacher-type From 2c6078ed3b68d823381d8161f475e4e3a109e910 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 12 Jan 2018 13:46:43 +0100 Subject: [PATCH 0234/1100] SSL asynchronous decryption (server side) Support SSL asynchronous private operation for the case of a decryption operation on a server. --- library/ssl_srv.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 0c7e15d293..5c3aacf99f 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3416,6 +3416,25 @@ static int ssl_parse_client_dh_public( mbedtls_ssl_context *ssl, unsigned char * #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, + unsigned char *peer_pms, + size_t *peer_pmslen, + size_t peer_pmssize ) +{ + int ret = ssl->conf->f_async_resume( ssl->conf->p_async_connection_ctx, + ssl->handshake->p_async_operation_ctx, + peer_pms, peer_pmslen, peer_pmssize ); + if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + { + ssl->handshake->p_async_operation_ctx = NULL; + } + MBEDTLS_SSL_DEBUG_RET( 2, "ssl_decrypt_encrypted_pms", ret ); + return( ret ); +} +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, const unsigned char *p, const unsigned char *end, @@ -3428,6 +3447,17 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, mbedtls_pk_context *public_key = &mbedtls_ssl_own_cert( ssl )->pk; size_t len = mbedtls_pk_get_len( public_key ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + /* If we have already started decoding the message and there is an ongoing + decryption operation, resume signing. */ + if( ssl->handshake->p_async_operation_ctx != NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming decryption operation" ) ); + return( ssl_resume_decrypt_pms( ssl, + peer_pms, peer_pmslen, peer_pmssize ) ); + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + /* * Prepare to decrypt the premaster using own private RSA key */ @@ -3453,6 +3483,33 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, /* * Decrypt the premaster secret */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if( ssl->conf->f_async_decrypt_start != NULL ) + { + ret = ssl->conf->f_async_decrypt_start( + ssl->conf->p_async_connection_ctx, + &ssl->handshake->p_async_operation_ctx, + mbedtls_ssl_own_cert( ssl ), + p, len ); + switch( ret ) + { + case MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH: + /* act as if f_async_decrypt_start was null */ + break; + case 0: + return( ssl_resume_decrypt_pms( ssl, + peer_pms, + peer_pmslen, + peer_pmssize ) ); + case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: + return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); + default: + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign", ret ); + return( ret ); + } + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + if( ! mbedtls_pk_can_do( private_key, MBEDTLS_PK_RSA ) ) { /* */ @@ -3484,6 +3541,11 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, &peer_pmslen, sizeof( peer_pms ) ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if ( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + return( ret ); +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ + /* * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding * must not cause the connection to end immediately; instead, send a @@ -3620,6 +3682,20 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse client key exchange" ) ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) && \ + ( defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) ) + if( ( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || + ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA ) && + ( ssl->handshake->p_async_operation_ctx != NULL ) ) + { + /* We've already read a record and there is an asynchronous + * operation in progress to decrypt it. So skip reading the + record. */ + MBEDTLS_SSL_DEBUG_MSG( 3, ( "will resume decryption of previously-read record" ) ); + } + else +#endif if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); @@ -3732,6 +3808,19 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) { +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + if ( ssl->handshake->p_async_operation_ctx != NULL ) + { + /* There is an asynchronous operation in progress to + * decrypt the encrypted premaster secret, so skip + * directly to resuming this operation. */ + MBEDTLS_SSL_DEBUG_MSG( 3, ( "PSK identity already parsed" ) ); + /* Update p to skip the PSK identity. ssl_parse_encrypted_pms + * won't actually use it, but maintain p anyway for robustness. */ + p += ssl->conf->psk_identity_len + 2; + } + else +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ if( ( ret = ssl_parse_client_psk_identity( ssl, &p, end ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_parse_client_psk_identity" ), ret ); From fcca9d8cef06aebb411a6e4cc7218f51f36d10bb Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 12 Jan 2018 13:47:48 +0100 Subject: [PATCH 0235/1100] SSL asynchronous decryption (server side): tests Test SSL asynchronous private operation for the case of a decryption operation on a server. --- programs/ssl/ssl_server2.c | 130 ++++++++++++++++++------- tests/ssl-opt.sh | 192 +++++++++++++++++++++++++++++-------- 2 files changed, 247 insertions(+), 75 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 2a4c833d97..2f3908d97b 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -108,6 +108,7 @@ int main( void ) #define DFL_KEY_FILE "" #define DFL_CRT_FILE2 "" #define DFL_KEY_FILE2 "" +#define DFL_ASYNC_OPERATIONS "-" #define DFL_ASYNC_PRIVATE_DELAY1 ( -1 ) #define DFL_ASYNC_PRIVATE_DELAY2 ( -1 ) #define DFL_ASYNC_PRIVATE_ERROR ( 0 ) @@ -200,6 +201,7 @@ int main( void ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) #define USAGE_SSL_ASYNC \ + " async_operations=%%c... d=decrypt, s=sign (default: -=off)\n" \ " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ " default: -1 (not asynchronous)\n" \ @@ -421,6 +423,7 @@ struct options const char *key_file; /* the file with the server key */ const char *crt_file2; /* the file with the 2nd server certificate */ const char *key_file2; /* the file with the 2nd server key */ + const char *async_operations; /* supported SSL asynchronous operations */ int async_private_delay1; /* number of times f_async_resume needs to be called for key 1, or -1 for no async */ int async_private_delay2; /* number of times f_async_resume needs to be called for key 2, or -1 for no async */ int async_private_error; /* inject error in async private callback */ @@ -892,21 +895,23 @@ void ssl_async_set_key( ssl_async_key_context_t *ctx, ++ctx->slots_used; } +#define SSL_ASYNC_INPUT_MAX_SIZE 512 typedef struct { size_t slot; mbedtls_md_type_t md_alg; - unsigned char hash[MBEDTLS_MD_MAX_SIZE]; - size_t hash_len; + unsigned char input[SSL_ASYNC_INPUT_MAX_SIZE]; + size_t input_len; unsigned delay; } ssl_async_operation_context_t; -int ssl_async_sign( void *connection_ctx_arg, - void **p_operation_ctx, - mbedtls_x509_crt *cert, - mbedtls_md_type_t md_alg, - const unsigned char *hash, - size_t hash_len ) +static int ssl_async_start( void *connection_ctx_arg, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + const char *op_name, + mbedtls_md_type_t md_alg, + const unsigned char *input, + size_t input_len ) { ssl_async_key_context_t *key_ctx = connection_ctx_arg; size_t slot; @@ -914,7 +919,7 @@ int ssl_async_sign( void *connection_ctx_arg, { char dn[100]; mbedtls_x509_dn_gets( dn, sizeof( dn ), &cert->subject ); - mbedtls_printf( "Async sign callback: looking for DN=%s\n", dn ); + mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); } for( slot = 0; slot < key_ctx->slots_used; slot++ ) { @@ -923,25 +928,26 @@ int ssl_async_sign( void *connection_ctx_arg, } if( slot == key_ctx->slots_used ) { - mbedtls_printf( "Async sign callback: no key matches this certificate.\n" ); + mbedtls_printf( "Async %s callback: no key matches this certificate.\n", + op_name ); return( MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ); } - mbedtls_printf( "Async sign callback: using key slot %zd, delay=%u.\n", - slot, key_ctx->slots[slot].delay ); + mbedtls_printf( "Async %s callback: using key slot %zd, delay=%u.\n", + op_name, slot, key_ctx->slots[slot].delay ); if( key_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_START ) { - mbedtls_printf( "Async sign callback: injected error\n" ); + mbedtls_printf( "Async %s callback: injected error\n", op_name ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } - if( hash_len > MBEDTLS_MD_MAX_SIZE ) + if( input_len > SSL_ASYNC_INPUT_MAX_SIZE ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); ctx = mbedtls_calloc( 1, sizeof( *ctx ) ); if( ctx == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); ctx->slot = slot; ctx->md_alg = md_alg; - memcpy( ctx->hash, hash, hash_len ); - ctx->hash_len = hash_len; + memcpy( ctx->input, input, input_len ); + ctx->input_len = input_len; ctx->delay = key_ctx->slots[slot].delay; *p_operation_ctx = ctx; if( ctx->delay == 0 ) @@ -950,16 +956,40 @@ int ssl_async_sign( void *connection_ctx_arg, return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } -int ssl_async_resume( void *connection_ctx_arg, - void *operation_ctx_arg, - unsigned char *output, - size_t *output_len, - size_t output_size ) +static int ssl_async_sign( void *connection_ctx_arg, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + mbedtls_md_type_t md_alg, + const unsigned char *hash, + size_t hash_len ) +{ + return( ssl_async_start( connection_ctx_arg, p_operation_ctx, cert, + "sign", md_alg, + hash, hash_len ) ); +} + +static int ssl_async_decrypt( void *connection_ctx_arg, + void **p_operation_ctx, + mbedtls_x509_crt *cert, + const unsigned char *input, + size_t input_len ) +{ + return( ssl_async_start( connection_ctx_arg, p_operation_ctx, cert, + "decrypt", MBEDTLS_MD_NONE, + input, input_len ) ); +} + +static int ssl_async_resume( void *connection_ctx_arg, + void *operation_ctx_arg, + unsigned char *output, + size_t *output_len, + size_t output_size ) { ssl_async_operation_context_t *ctx = operation_ctx_arg; ssl_async_key_context_t *connection_ctx = connection_ctx_arg; ssl_async_key_slot_t *key_slot = &connection_ctx->slots[ctx->slot]; int ret; + const char *op_name; if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: injected error\n" ); @@ -972,25 +1002,37 @@ int ssl_async_resume( void *connection_ctx_arg, ctx->slot, ctx->delay ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } - (void) output_size; /* mbedtls_pk_size lacks this parameter */ - ret = mbedtls_pk_sign( key_slot->pk, - ctx->md_alg, - ctx->hash, ctx->hash_len, - output, output_len, - connection_ctx->f_rng, connection_ctx->p_rng ); + if( ctx->md_alg == MBEDTLS_MD_NONE ) + { + op_name = "decrypt"; + ret = mbedtls_pk_decrypt( key_slot->pk, + ctx->input, ctx->input_len, + output, output_len, output_size, + connection_ctx->f_rng, connection_ctx->p_rng ); + } + else + { + op_name = "sign"; + ret = mbedtls_pk_sign( key_slot->pk, + ctx->md_alg, + ctx->input, ctx->input_len, + output, output_len, + connection_ctx->f_rng, connection_ctx->p_rng ); + } if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) { - mbedtls_printf( "Async resume callback: done but injected error\n" ); + mbedtls_printf( "Async resume callback: %s done but injected error\n", + op_name ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } - mbedtls_printf( "Async resume (slot %zd): done, status=%d.\n", - ctx->slot, ret ); + mbedtls_printf( "Async resume (slot %zd): %s done, status=%d.\n", + ctx->slot, op_name, ret ); mbedtls_free( ctx ); return( ret ); } -void ssl_async_cancel( void *connection_ctx_arg, - void *operation_ctx_arg ) +static void ssl_async_cancel( void *connection_ctx_arg, + void *operation_ctx_arg ) { ssl_async_operation_context_t *ctx = operation_ctx_arg; (void) connection_ctx_arg; @@ -1142,6 +1184,7 @@ int main( int argc, char *argv[] ) opt.key_file = DFL_KEY_FILE; opt.crt_file2 = DFL_CRT_FILE2; opt.key_file2 = DFL_KEY_FILE2; + opt.async_operations = DFL_ASYNC_OPERATIONS; opt.async_private_delay1 = DFL_ASYNC_PRIVATE_DELAY1; opt.async_private_delay2 = DFL_ASYNC_PRIVATE_DELAY2; opt.async_private_error = DFL_ASYNC_PRIVATE_ERROR; @@ -1232,6 +1275,8 @@ int main( int argc, char *argv[] ) else if( strcmp( p, "dhm_file" ) == 0 ) opt.dhm_file = q; #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + else if( strcmp( p, "async_operations" ) == 0 ) + opt.async_operations = q; else if( strcmp( p, "async_private_delay1" ) == 0 ) opt.async_private_delay1 = atoi( q ); else if( strcmp( p, "async_private_delay2" ) == 0 ) @@ -2152,16 +2197,31 @@ int main( int argc, char *argv[] ) } #if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) - if( opt.async_private_delay1 >= 0 || opt.async_private_delay2 >= 0 ) + if( opt.async_operations[0] != '-' ) { + mbedtls_ssl_async_sign_t *sign = NULL; + mbedtls_ssl_async_decrypt_t *decrypt = NULL; + const char *p; + for( p = opt.async_operations; *p; p++ ) + { + switch( *p ) + { + case 'd': + decrypt = ssl_async_decrypt; + break; + case 's': + sign = ssl_async_sign; + break; + } + } ssl_async_keys.inject_error = ( opt.async_private_error < 0 ? - opt.async_private_error : opt.async_private_error ); ssl_async_keys.f_rng = mbedtls_ctr_drbg_random; ssl_async_keys.p_rng = &ctr_drbg; mbedtls_ssl_conf_async_private_cb( &conf, - ssl_async_sign, - NULL, + sign, + decrypt, ssl_async_resume, ssl_async_cancel, &ssl_async_keys ); diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index e3a3edd025..5579e4ab89 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3639,71 +3639,145 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ # Tests of asynchronous private key support in SSL requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C -run_test "SSL async private: delay=0" \ - "$P_SRV async_private_delay1=0 async_private_delay2=0" \ +run_test "SSL async private: sign, delay=0" \ + "$P_SRV \ + async_operations=s async_private_delay1=0 async_private_delay2=0" \ "$P_CLI" \ 0 \ -s "Async sign callback: using key slot " \ - -s "Async resume (slot [0-9]): done, status=0" + -s "Async resume (slot [0-9]): sign done, status=0" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C -run_test "SSL async private: delay=1" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1" \ +run_test "SSL async private: sign, delay=1" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1" \ "$P_CLI" \ 0 \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): call 0 more times." \ - -s "Async resume (slot [0-9]): done, status=0" + -s "Async resume (slot [0-9]): sign done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: decrypt, delay=0" \ + "$P_SRV \ + async_operations=d async_private_delay1=0 async_private_delay2=0" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): decrypt done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: decrypt, delay=1" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): call 0 more times." \ + -s "Async resume (slot [0-9]): decrypt done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: decrypt RSA-PSK, delay=0" \ + "$P_SRV psk=abc123 \ + async_operations=d async_private_delay1=0 async_private_delay2=0" \ + "$P_CLI psk=abc123 \ + force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): decrypt done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: decrypt RSA-PSK, delay=1" \ + "$P_SRV psk=abc123 \ + async_operations=d async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI psk=abc123 \ + force_ciphersuite=TLS-RSA-PSK-WITH-AES-128-CBC-SHA256" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): call 0 more times." \ + -s "Async resume (slot [0-9]): decrypt done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: sign callback not present" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI; [ \$? -eq 1 ] && + $P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -S "Async sign callback" \ + -s "! mbedtls_ssl_handshake returned" \ + -s "The own private key or pre-shared key is not set, but needed" \ + -s "Async resume (slot [0-9]): decrypt done, status=0" \ + -s "Successful connection" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +run_test "SSL async private: decrypt callback not present" \ + "$P_SRV debug_level=1 \ + async_operations=s async_private_delay1=1 async_private_delay2=1" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA; + [ \$? -eq 1 ] && $P_CLI" \ + 0 \ + -S "Async decrypt callback" \ + -s "! mbedtls_ssl_handshake returned" \ + -s "got no RSA private key" \ + -s "Async resume (slot [0-9]): sign done, status=0" \ + -s "Successful connection" # key1: ECDSA, key2: RSA; use key1 from slot 0 requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: slot 0 used with key1" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay1=1" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ 0 \ -s "Async sign callback: using key slot 0," \ -s "Async resume (slot 0): call 0 more times." \ - -s "Async resume (slot 0): done, status=0" + -s "Async resume (slot 0): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 from slot 0 requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: slot 0 used with key2" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay2=1" \ + "$P_SRV \ + async_operations=s async_private_delay2=1 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ -s "Async sign callback: using key slot 0," \ -s "Async resume (slot 0): call 0 more times." \ - -s "Async resume (slot 0): done, status=0" + -s "Async resume (slot 0): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 from slot 1 requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: slot 1 used" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay1=1 async_private_delay2=1" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1\ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ -s "Async sign callback: using key slot 1," \ -s "Async resume (slot 1): call 0 more times." \ - -s "Async resume (slot 1): done, status=0" + -s "Async resume (slot 1): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 directly requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: fall back to transparent key" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay1=1" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt " \ "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ -s "Async sign callback: no key matches this certificate." requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: error in start" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=1" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=1" \ "$P_CLI" \ 1 \ -s "Async sign callback: injected error" \ @@ -3712,7 +3786,9 @@ run_test "SSL async private: error in start" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: cancel after start" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=2" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=2" \ "$P_CLI" \ 1 \ -s "Async sign callback: using key slot " \ @@ -3721,7 +3797,9 @@ run_test "SSL async private: cancel after start" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: error in resume" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=3" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=3" \ "$P_CLI" \ 1 \ -s "Async sign callback: using key slot " \ @@ -3730,16 +3808,20 @@ run_test "SSL async private: error in resume" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: error in pk" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=4" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=4" \ "$P_CLI" \ 1 \ -s "Async sign callback: using key slot " \ - -s "Async resume callback: done but injected error" \ + -s "Async resume callback: sign done but injected error" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: cancel after start then operate correctly" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=-2" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=-2" \ "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \ 0 \ -s "Async cancel" \ @@ -3749,7 +3831,9 @@ run_test "SSL async private: cancel after start then operate correctly" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: error in resume then operate correctly" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 async_private_error=-3" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ + async_private_error=-3" \ "$P_CLI; [ \$? -eq 1 ] && $P_CLI" \ 0 \ -s "! mbedtls_ssl_handshake returned" \ @@ -3759,9 +3843,10 @@ run_test "SSL async private: error in resume then operate correctly" \ # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: cancel after start then fall back to transparent key" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay1=1 async_private_error=-2" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_error=-2 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256; [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ @@ -3775,9 +3860,10 @@ run_test "SSL async private: cancel after start then fall back to transparent # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C run_test "SSL async private: error in resume then fall back to transparent key" \ - "$P_SRV key_file=data_files/server5.key crt_file=data_files/server5.crt \ - key_file2=data_files/server2.key crt_file2=data_files/server2.crt \ - async_private_delay1=1 async_private_error=-3" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_error=-3 \ + key_file=data_files/server5.key crt_file=data_files/server5.crt \ + key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256; [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ @@ -3789,23 +3875,49 @@ run_test "SSL async private: error in resume then fall back to transparent ke requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C requires_config_enabled MBEDTLS_SSL_RENEGOTIATION -run_test "SSL async private: renegotiation: client-initiated" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 \ +run_test "SSL async private: renegotiation: client-initiated; sign" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ exchanges=2 renegotiation=1" \ "$P_CLI exchanges=2 renegotiation=1 renegotiate=1" \ 0 \ -s "Async sign callback: using key slot " \ - -s "Async resume (slot [0-9]): done, status=0" + -s "Async resume (slot [0-9]): sign done, status=0" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C requires_config_enabled MBEDTLS_SSL_RENEGOTIATION -run_test "SSL async private: renegotiation: server-initiated" \ - "$P_SRV async_private_delay1=1 async_private_delay2=1 \ +run_test "SSL async private: renegotiation: server-initiated; sign" \ + "$P_SRV \ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ exchanges=2 renegotiation=1 renegotiate=1" \ "$P_CLI exchanges=2 renegotiation=1" \ 0 \ -s "Async sign callback: using key slot " \ - -s "Async resume (slot [0-9]): done, status=0" + -s "Async resume (slot [0-9]): sign done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +run_test "SSL async private: renegotiation: client-initiated; decrypt" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + exchanges=2 renegotiation=1" \ + "$P_CLI exchanges=2 renegotiation=1 renegotiate=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): decrypt done, status=0" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +run_test "SSL async private: renegotiation: server-initiated; decrypt" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + exchanges=2 renegotiation=1 renegotiate=1" \ + "$P_CLI exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume (slot [0-9]): decrypt done, status=0" # Tests for DTLS HelloVerifyRequest From 0329d72ad49603812cc5ffbfbff37ebcd85fe4d3 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 12 Jan 2018 13:52:00 +0100 Subject: [PATCH 0236/1100] SSL asynchronous decryption (server side): update ChangeLog --- ChangeLog | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8c7b6d8def..888ee2e8c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,10 +22,9 @@ Features MBEDTLS_CMAC_ALT). Submitted by Steve Cooreman, Silicon Labs. * Add support for alternative implementations of GCM, selected by the configuration flag MBEDTLS_GCM_ALT. - * In TLS, support offloading private key operations to an external + * In TLS servers, support offloading private key operations to an external cryptoprocessor. Private key operations can be asynchronous to allow - non-blocking operation of the TLS stack. - Currently restricted to signature only, server-side only. + non-blocking operation of the TLS server stack. New deprecations * Deprecate usage of RSA primitives with non-matching key-type From ca1d74290439ec9e2723a911657fd96aa320e219 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 24 Apr 2018 11:53:22 +0200 Subject: [PATCH 0237/1100] mbedtls_ssl_get_key_exchange_md_tls1_2: return hashlen In mbedtls_ssl_get_key_exchange_md_tls1_2, add an output parameter for the hash length. The code that calls this function can currently do without it, but it will need the hash length in the future, when adding support for a third-party callback to calculate the signature of the hash. --- include/mbedtls/ssl_internal.h | 6 +++--- library/ssl_cli.c | 10 ++++------ library/ssl_srv.c | 9 +++------ library/ssl_tls.c | 9 +++++---- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 60b431a0f4..d4b1b19eed 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -646,9 +646,9 @@ int mbedtls_ssl_get_key_exchange_md_ssl_tls( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, - unsigned char *output, - unsigned char *data, size_t data_len, - mbedtls_md_type_t md_alg ); + unsigned char *hash, size_t *hashlen, + unsigned char *data, size_t data_len, + mbedtls_md_type_t md_alg ); #endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ MBEDTLS_SSL_PROTO_TLS1_2 */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 738014e9ef..f952b0f88c 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2526,10 +2526,9 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) defined(MBEDTLS_SSL_PROTO_TLS1_2) if( md_alg != MBEDTLS_MD_NONE ) { - /* Info from md_alg will be used instead */ - hashlen = 0; - ret = mbedtls_ssl_get_key_exchange_md_tls1_2( ssl, hash, params, - params_len, md_alg ); + ret = mbedtls_ssl_get_key_exchange_md_tls1_2( ssl, hash, &hashlen, + params, params_len, + md_alg ); if( ret != 0 ) return( ret ); } @@ -2541,8 +2540,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen != 0 ? hashlen : - (unsigned int) ( mbedtls_md_get_size( mbedtls_md_info_from_type( md_alg ) ) ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen ); if( ssl->session_negotiate->peer_cert == NULL ) { diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 2c180f13f4..618c81b9ba 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3045,7 +3045,7 @@ curve_matching_done: if( mbedtls_ssl_ciphersuite_uses_server_signature( ciphersuite_info ) ) { size_t signature_len = 0; - unsigned int hashlen = 0; + size_t hashlen = 0; unsigned char hash[64]; /* @@ -3116,9 +3116,7 @@ curve_matching_done: defined(MBEDTLS_SSL_PROTO_TLS1_2) if( md_alg != MBEDTLS_MD_NONE ) { - /* Info from md_alg will be used instead */ - hashlen = 0; - ret = mbedtls_ssl_get_key_exchange_md_tls1_2( ssl, hash, + ret = mbedtls_ssl_get_key_exchange_md_tls1_2( ssl, hash, &hashlen, dig_signed, dig_signed_len, md_alg ); @@ -3133,8 +3131,7 @@ curve_matching_done: return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen != 0 ? hashlen : - (unsigned int) ( mbedtls_md_get_size( mbedtls_md_info_from_type( md_alg ) ) ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "parameters hash", hash, hashlen ); /* * 3.3: Compute and add the signature diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e8063d2c1a..28c234ad9e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -8310,13 +8310,14 @@ exit: #if defined(MBEDTLS_SSL_PROTO_TLS1) || defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_2) int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, - unsigned char *output, - unsigned char *data, size_t data_len, - mbedtls_md_type_t md_alg ) + unsigned char *hash, size_t *hashlen, + unsigned char *data, size_t data_len, + mbedtls_md_type_t md_alg ) { int ret = 0; mbedtls_md_context_t ctx; const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type( md_alg ); + *hashlen = mbedtls_md_get_size( md_info ); mbedtls_md_init( &ctx ); @@ -8347,7 +8348,7 @@ int mbedtls_ssl_get_key_exchange_md_tls1_2( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_md_update", ret ); goto exit; } - if( ( ret = mbedtls_md_finish( &ctx, output ) ) != 0 ) + if( ( ret = mbedtls_md_finish( &ctx, hash ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_md_finish", ret ); goto exit; From 12ab5d4cfbd30b6b298c3d8c92fe162670aa0676 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 24 Apr 2018 12:32:04 +0200 Subject: [PATCH 0238/1100] Don't shadow the variable p --- programs/ssl/ssl_server2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 02f9633370..86672e8643 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -2287,10 +2287,10 @@ int main( int argc, char *argv[] ) { mbedtls_ssl_async_sign_t *sign = NULL; mbedtls_ssl_async_decrypt_t *decrypt = NULL; - const char *p; - for( p = opt.async_operations; *p; p++ ) + const char *r; + for( r = opt.async_operations; *r; r++ ) { - switch( *p ) + switch( *r ) { case 'd': decrypt = ssl_async_decrypt; From f112725487e16b7a1c9608ad5d71612da79c30d4 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 24 Apr 2018 13:05:39 +0200 Subject: [PATCH 0239/1100] Style and grammar fixes --- include/mbedtls/ssl.h | 4 ++-- library/ssl_srv.c | 4 ++-- library/ssl_tls.c | 2 +- programs/ssl/ssl_server2.c | 11 +++++++++++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 720c338778..582be2c79b 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1490,13 +1490,13 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, * \param f_async_sign Callback to start a signature operation. See * the description of \c mbedtls_ssl_async_sign_t * for more information. This may be NULL if the - * external processor does no support any signature + * external processor does not support any signature * operation; in this case the private key object * associated with the certificate will be used. * \param f_async_decrypt Callback to start a decryption operation. See * the description of \c mbedtls_ssl_async_decrypt_t * for more information. This may be NULL if the - * external processor does no support any decryption + * external processor does not support any decryption * operation; in this case the private key object * associated with the certificate will be used. * \param f_async_resume Callback to resume an asynchronous operation. See diff --git a/library/ssl_srv.c b/library/ssl_srv.c index fa858f8e9a..f7bed5847a 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3221,7 +3221,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) const mbedtls_ssl_ciphersuite_t *ciphersuite_info = ssl->transform_negotiate->ciphersuite_info; -#endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write server key exchange" ) ); @@ -3245,7 +3245,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) ssl->state++; return( 0 ); } -#endif /* MBEDTLS_KEY_EXCHANGE__NON_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8ad3494e43..256590ff79 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -7431,7 +7431,7 @@ void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, { if( handshake == NULL ) return; - (void) conf; /*unused in some compile-time configurations*/ + (void) conf; /* Unused in some compile-time configurations. */ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 86672e8643..9f05e7d4d7 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -920,11 +920,13 @@ static int ssl_async_start( void *connection_ctx_arg, ssl_async_key_context_t *key_ctx = connection_ctx_arg; size_t slot; ssl_async_operation_context_t *ctx = NULL; + { char dn[100]; mbedtls_x509_dn_gets( dn, sizeof( dn ), &cert->subject ); mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); } + for( slot = 0; slot < key_ctx->slots_used; slot++ ) { if( key_ctx->slots[slot].cert == cert ) @@ -938,13 +940,16 @@ static int ssl_async_start( void *connection_ctx_arg, } mbedtls_printf( "Async %s callback: using key slot %zd, delay=%u.\n", op_name, slot, key_ctx->slots[slot].delay ); + if( key_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_START ) { mbedtls_printf( "Async %s callback: injected error\n", op_name ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } + if( input_len > SSL_ASYNC_INPUT_MAX_SIZE ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + ctx = mbedtls_calloc( 1, sizeof( *ctx ) ); if( ctx == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); @@ -954,6 +959,7 @@ static int ssl_async_start( void *connection_ctx_arg, ctx->input_len = input_len; ctx->delay = key_ctx->slots[slot].delay; *p_operation_ctx = ctx; + if( ctx->delay == 0 ) return( 0 ); else @@ -994,11 +1000,13 @@ static int ssl_async_resume( void *connection_ctx_arg, ssl_async_key_slot_t *key_slot = &connection_ctx->slots[ctx->slot]; int ret; const char *op_name; + if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: injected error\n" ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } + if( ctx->delay > 0 ) { --ctx->delay; @@ -1006,6 +1014,7 @@ static int ssl_async_resume( void *connection_ctx_arg, ctx->slot, ctx->delay ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } + if( ctx->md_alg == MBEDTLS_MD_NONE ) { op_name = "decrypt"; @@ -1023,12 +1032,14 @@ static int ssl_async_resume( void *connection_ctx_arg, output, output_len, connection_ctx->f_rng, connection_ctx->p_rng ); } + if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) { mbedtls_printf( "Async resume callback: %s done but injected error\n", op_name ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } + mbedtls_printf( "Async resume (slot %zd): %s done, status=%d.\n", ctx->slot, op_name, ret ); mbedtls_free( ctx ); From b74a1c73b107827b5a09d6f2d5550f4a3fde0dc3 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 24 Apr 2018 13:09:22 +0200 Subject: [PATCH 0240/1100] Rename MBEDTLS_SSL_ASYNC_PRIVATE_C to MBEDTLS_SSL_ASYNC_PRIVATE This is an optional feature, not a module of its own, so don't call it MBEDTLS_xxx_C and put it in the appropriate section of config.h. --- include/mbedtls/config.h | 22 ++++++++-------- include/mbedtls/ssl.h | 12 ++++----- include/mbedtls/ssl_internal.h | 4 +-- library/ssl_srv.c | 34 ++++++++++++------------ library/ssl_tls.c | 8 +++--- library/version_features.c | 6 ++--- programs/ssl/ssl_server2.c | 34 ++++++++++++------------ tests/ssl-opt.sh | 48 +++++++++++++++++----------------- 8 files changed, 84 insertions(+), 84 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 4aec9ac642..b80667ab14 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1128,6 +1128,17 @@ */ #define MBEDTLS_SSL_ALL_ALERT_MESSAGES +/** + * \def MBEDTLS_SSL_ASYNC_PRIVATE + * + * Enable asynchronous external private key operations in SSL. This allows + * you to configure an SSL connection to call an external cryptographic + * module to perform private key operations instead of performing the + * operation inside the library. + * + */ +//#define MBEDTLS_SSL_ASYNC_PRIVATE + /** * \def MBEDTLS_SSL_DEBUG_ALL * @@ -2472,17 +2483,6 @@ */ #define MBEDTLS_SHA512_C -/** - * \def MBEDTLS_SSL_ASYNC_PRIVATE_C - * - * Enable asynchronous external private key operations in SSL. This allows - * you to configure an SSL connection to call an external cryptographic - * module to perform private key operations instead of performing the - * operation inside the library. - * - */ -//#define MBEDTLS_SSL_ASYNC_PRIVATE_C - /** * \def MBEDTLS_SSL_CACHE_C * diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 582be2c79b..be27b89caf 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -537,7 +537,7 @@ typedef void mbedtls_ssl_set_timer_t( void * ctx, */ typedef int mbedtls_ssl_get_timer_t( void * ctx ); -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) #if defined(MBEDTLS_X509_CRT_PARSE_C) /** * \brief Callback type: start external signature operation @@ -692,7 +692,7 @@ typedef int mbedtls_ssl_async_resume_t( void *connection_ctx, */ typedef void mbedtls_ssl_async_cancel_t( void *connection_ctx, void *operation_ctx ); -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* Defined below */ typedef struct mbedtls_ssl_session mbedtls_ssl_session; @@ -826,7 +826,7 @@ struct mbedtls_ssl_config mbedtls_x509_crl *ca_crl; /*!< trusted CAs CRLs */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) #if defined(MBEDTLS_X509_CRT_PARSE_C) mbedtls_ssl_async_sign_t *f_async_sign_start; /*!< start asynchronous signature operation */ mbedtls_ssl_async_decrypt_t *f_async_decrypt_start; /*!< start asynchronous decryption operation */ @@ -834,7 +834,7 @@ struct mbedtls_ssl_config mbedtls_ssl_async_resume_t *f_async_resume; /*!< resume asynchronous operation */ mbedtls_ssl_async_cancel_t *f_async_cancel; /*!< cancel asynchronous operation */ void *p_async_connection_ctx; /*!< connection context for asynchronous operation callbacks */ -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) const int *sig_hashes; /*!< allowed signature hashes */ @@ -1482,7 +1482,7 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, void *p_export_keys ); #endif /* MBEDTLS_SSL_EXPORT_KEYS */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) /** * \brief Configure asynchronous private key operation callbacks. * @@ -1514,7 +1514,7 @@ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, mbedtls_ssl_async_resume_t *f_async_resume, mbedtls_ssl_async_cancel_t *f_async_cancel, void *connection_ctx ); -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /** * \brief Callback type: generate a cookie diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 6f36711a12..4c7205d705 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -243,9 +243,9 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) void *p_async_operation_ctx; /*!< asynchronous operation context */ -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_PROTO_DTLS) unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ diff --git a/library/ssl_srv.c b/library/ssl_srv.c index f7bed5847a..de8056426d 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2835,7 +2835,7 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + defined(MBEDTLS_SSL_ASYNC_PRIVATE) static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) { @@ -2853,7 +2853,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, return( ret ); } #endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ + defined(MBEDTLS_SSL_ASYNC_PRIVATE) */ /* Prepare the ServerKeyExchange message, up to and including calculating the signature if any, but excluding formatting the @@ -3164,7 +3164,7 @@ curve_matching_done: } #endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_sign_start != NULL ) { ret = ssl->conf->f_async_sign_start( @@ -3186,7 +3186,7 @@ curve_matching_done: return( ret ); } } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( mbedtls_ssl_own_key( ssl ) == NULL ) { @@ -3248,7 +3248,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) + defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already prepared the message and there is an ongoing signature operation, resume signing. */ if( ssl->handshake->p_async_operation_ctx != NULL ) @@ -3258,7 +3258,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } else #endif /* defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && - defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) */ + defined(MBEDTLS_SSL_ASYNC_PRIVATE) */ { /* ServerKeyExchange is needed. Prepare the message. */ ret = ssl_prepare_server_key_exchange( ssl, &signature_len ); @@ -3379,7 +3379,7 @@ static int ssl_parse_client_dh_public( mbedtls_ssl_context *ssl, unsigned char * #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, unsigned char *peer_pms, size_t *peer_pmslen, @@ -3395,7 +3395,7 @@ static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_RET( 2, "ssl_decrypt_encrypted_pms", ret ); return( ret ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, const unsigned char *p, @@ -3409,7 +3409,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, mbedtls_pk_context *public_key = &mbedtls_ssl_own_cert( ssl )->pk; size_t len = mbedtls_pk_get_len( public_key ); -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already started decoding the message and there is an ongoing decryption operation, resume signing. */ if( ssl->handshake->p_async_operation_ctx != NULL ) @@ -3418,7 +3418,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, return( ssl_resume_decrypt_pms( ssl, peer_pms, peer_pmslen, peer_pmssize ) ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* * Prepare to decrypt the premaster using own private RSA key @@ -3445,7 +3445,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, /* * Decrypt the premaster secret */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_decrypt_start != NULL ) { ret = ssl->conf->f_async_decrypt_start( @@ -3470,7 +3470,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, return( ret ); } } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( ! mbedtls_pk_can_do( private_key, MBEDTLS_PK_RSA ) ) { @@ -3503,10 +3503,10 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, &peer_pmslen, sizeof( peer_pms ) ); -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if ( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) return( ret ); -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding @@ -3644,7 +3644,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse client key exchange" ) ); -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) && \ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) && \ ( defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) ) if( ( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || @@ -3770,7 +3770,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) { -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if ( ssl->handshake->p_async_operation_ctx != NULL ) { /* There is an asynchronous operation in progress to @@ -3782,7 +3782,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) p += ssl->conf->psk_identity_len + 2; } else -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( ( ret = ssl_parse_client_psk_identity( ssl, &p, end ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_parse_client_psk_identity" ), ret ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 256590ff79..f5d332fa8b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6478,7 +6478,7 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, } #endif -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, mbedtls_ssl_async_sign_t *f_async_sign, @@ -6493,7 +6493,7 @@ void mbedtls_ssl_conf_async_private_cb( conf->f_async_cancel = f_async_cancel; conf->p_async_connection_ctx = connection_ctx; } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* * SSL get accessors @@ -7495,14 +7495,14 @@ void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, } #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( conf->f_async_cancel != NULL && handshake->p_async_operation_ctx != NULL ) { conf->f_async_cancel( conf->p_async_connection_ctx, handshake->p_async_operation_ctx ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_PROTO_DTLS) mbedtls_free( handshake->verify_cookie ); diff --git a/library/version_features.c b/library/version_features.c index c017c4151a..659b96d176 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -402,6 +402,9 @@ static const char *features[] = { #if defined(MBEDTLS_SSL_ALL_ALERT_MESSAGES) "MBEDTLS_SSL_ALL_ALERT_MESSAGES", #endif /* MBEDTLS_SSL_ALL_ALERT_MESSAGES */ +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + "MBEDTLS_SSL_ASYNC_PRIVATE", +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_DEBUG_ALL) "MBEDTLS_SSL_DEBUG_ALL", #endif /* MBEDTLS_SSL_DEBUG_ALL */ @@ -648,9 +651,6 @@ static const char *features[] = { #if defined(MBEDTLS_SHA512_C) "MBEDTLS_SHA512_C", #endif /* MBEDTLS_SHA512_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) - "MBEDTLS_SSL_ASYNC_PRIVATE_C", -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ #if defined(MBEDTLS_SSL_CACHE_C) "MBEDTLS_SSL_CACHE_C", #endif /* MBEDTLS_SSL_CACHE_C */ diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 9f05e7d4d7..bf25d4e03d 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -200,7 +200,7 @@ int main( void ) #define USAGE_IO "" #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) #define USAGE_SSL_ASYNC \ " async_operations=%%c... d=decrypt, s=sign (default: -=off)\n" \ " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ @@ -210,7 +210,7 @@ int main( void ) " 1=start, 2=cancel, 3=resume, 4=pk, negative=first time only)" #else #define USAGE_SSL_ASYNC "" -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) #define USAGE_PSK \ @@ -862,7 +862,7 @@ static int ssl_sig_hashes_for_test[] = { }; #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) typedef struct { mbedtls_x509_crt *cert; @@ -1054,7 +1054,7 @@ static void ssl_async_cancel( void *connection_ctx_arg, mbedtls_printf( "Async cancel callback.\n" ); mbedtls_free( ctx ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* * Wait for an event from the underlying transport or the timer @@ -1144,9 +1144,9 @@ int main( int argc, char *argv[] ) mbedtls_x509_crt srvcert2; mbedtls_pk_context pkey2; int key_cert_init = 0, key_cert_init2 = 0; -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) ssl_async_key_context_t ssl_async_keys; -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO) mbedtls_dhm_context dhm; @@ -1346,7 +1346,7 @@ int main( int argc, char *argv[] ) opt.key_file2 = q; else if( strcmp( p, "dhm_file" ) == 0 ) opt.dhm_file = q; -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) else if( strcmp( p, "async_operations" ) == 0 ) opt.async_operations = q; else if( strcmp( p, "async_private_delay1" ) == 0 ) @@ -1364,7 +1364,7 @@ int main( int argc, char *argv[] ) } opt.async_private_error = n; } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ else if( strcmp( p, "psk" ) == 0 ) opt.psk = q; else if( strcmp( p, "psk_identity" ) == 0 ) @@ -2261,14 +2261,14 @@ int main( int argc, char *argv[] ) if( key_cert_init ) { mbedtls_pk_context *pk = &pkey; -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay1 >= 0 ) { ssl_async_set_key( &ssl_async_keys, &srvcert, pk, opt.async_private_delay1 ); pk = NULL; } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert, pk ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_ssl_conf_own_cert returned %d\n\n", ret ); @@ -2278,14 +2278,14 @@ int main( int argc, char *argv[] ) if( key_cert_init2 ) { mbedtls_pk_context *pk = &pkey2; -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, opt.async_private_delay2 ); pk = NULL; } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( ( ret = mbedtls_ssl_conf_own_cert( &conf, &srvcert2, pk ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_ssl_conf_own_cert returned %d\n\n", ret ); @@ -2293,7 +2293,7 @@ int main( int argc, char *argv[] ) } } -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_operations[0] != '-' ) { mbedtls_ssl_async_sign_t *sign = NULL; @@ -2323,7 +2323,7 @@ int main( int argc, char *argv[] ) ssl_async_cancel, &ssl_async_keys ); } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(SNI_OPTION) @@ -2500,14 +2500,14 @@ handshake: while( ( ret = mbedtls_ssl_handshake( &ssl ) ) != 0 ) { -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS && ssl_async_keys.inject_error == SSL_ASYNC_INJECT_ERROR_CANCEL ) { mbedtls_printf( " cancelling on injected error\n" ); break; } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE_C */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && @@ -2549,7 +2549,7 @@ handshake: } #endif -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE_C) +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_error < 0 ) /* Injected error only the first time round, to test reset */ ssl_async_keys.inject_error = SSL_ASYNC_INJECT_ERROR_NONE; diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ee34a6c6b0..c692fc9ae1 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4069,7 +4069,7 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ # Tests of asynchronous private key support in SSL -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: sign, delay=0" \ "$P_SRV \ async_operations=s async_private_delay1=0 async_private_delay2=0" \ @@ -4078,7 +4078,7 @@ run_test "SSL async private: sign, delay=0" \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): sign done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: sign, delay=1" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1" \ @@ -4088,7 +4088,7 @@ run_test "SSL async private: sign, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): sign done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt, delay=0" \ "$P_SRV \ async_operations=d async_private_delay1=0 async_private_delay2=0" \ @@ -4097,7 +4097,7 @@ run_test "SSL async private: decrypt, delay=0" \ -s "Async decrypt callback: using key slot " \ -s "Async resume (slot [0-9]): decrypt done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt, delay=1" \ "$P_SRV \ async_operations=d async_private_delay1=1 async_private_delay2=1" \ @@ -4107,7 +4107,7 @@ run_test "SSL async private: decrypt, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): decrypt done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt RSA-PSK, delay=0" \ "$P_SRV psk=abc123 \ async_operations=d async_private_delay1=0 async_private_delay2=0" \ @@ -4117,7 +4117,7 @@ run_test "SSL async private: decrypt RSA-PSK, delay=0" \ -s "Async decrypt callback: using key slot " \ -s "Async resume (slot [0-9]): decrypt done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt RSA-PSK, delay=1" \ "$P_SRV psk=abc123 \ async_operations=d async_private_delay1=1 async_private_delay2=1" \ @@ -4128,7 +4128,7 @@ run_test "SSL async private: decrypt RSA-PSK, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): decrypt done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: sign callback not present" \ "$P_SRV \ async_operations=d async_private_delay1=1 async_private_delay2=1" \ @@ -4141,7 +4141,7 @@ run_test "SSL async private: sign callback not present" \ -s "Async resume (slot [0-9]): decrypt done, status=0" \ -s "Successful connection" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt callback not present" \ "$P_SRV debug_level=1 \ async_operations=s async_private_delay1=1 async_private_delay2=1" \ @@ -4155,7 +4155,7 @@ run_test "SSL async private: decrypt callback not present" \ -s "Successful connection" # key1: ECDSA, key2: RSA; use key1 from slot 0 -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: slot 0 used with key1" \ "$P_SRV \ async_operations=s async_private_delay1=1 \ @@ -4168,7 +4168,7 @@ run_test "SSL async private: slot 0 used with key1" \ -s "Async resume (slot 0): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 from slot 0 -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: slot 0 used with key2" \ "$P_SRV \ async_operations=s async_private_delay2=1 \ @@ -4181,7 +4181,7 @@ run_test "SSL async private: slot 0 used with key2" \ -s "Async resume (slot 0): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 from slot 1 -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: slot 1 used" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1\ @@ -4194,7 +4194,7 @@ run_test "SSL async private: slot 1 used" \ -s "Async resume (slot 1): sign done, status=0" # key1: ECDSA, key2: RSA; use key2 directly -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: fall back to transparent key" \ "$P_SRV \ async_operations=s async_private_delay1=1 \ @@ -4204,7 +4204,7 @@ run_test "SSL async private: fall back to transparent key" \ 0 \ -s "Async sign callback: no key matches this certificate." -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: error in start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4215,7 +4215,7 @@ run_test "SSL async private: error in start" \ -S "Async resume" \ -s "! mbedtls_ssl_handshake returned" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: cancel after start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4226,7 +4226,7 @@ run_test "SSL async private: cancel after start" \ -S "Async resume" \ -s "Async cancel" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: error in resume" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4237,7 +4237,7 @@ run_test "SSL async private: error in resume" \ -s "Async resume callback: injected error" \ -s "! mbedtls_ssl_handshake returned" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: error in pk" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4248,7 +4248,7 @@ run_test "SSL async private: error in pk" \ -s "Async resume callback: sign done but injected error" \ -s "! mbedtls_ssl_handshake returned" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: cancel after start then operate correctly" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4260,7 +4260,7 @@ run_test "SSL async private: cancel after start then operate correctly" \ -s "Async resume" \ -s "Successful connection" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: error in resume then operate correctly" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ @@ -4272,7 +4272,7 @@ run_test "SSL async private: error in resume then operate correctly" \ -s "Successful connection" # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: cancel after start then fall back to transparent key" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_error=-2 \ @@ -4289,7 +4289,7 @@ run_test "SSL async private: cancel after start then fall back to transparent -s "Successful connection" # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: error in resume then fall back to transparent key" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_error=-3 \ @@ -4304,7 +4304,7 @@ run_test "SSL async private: error in resume then fall back to transparent ke -s "Async sign callback: no key matches this certificate." \ -s "Successful connection" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: client-initiated; sign" \ "$P_SRV \ @@ -4315,7 +4315,7 @@ run_test "SSL async private: renegotiation: client-initiated; sign" \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): sign done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: server-initiated; sign" \ "$P_SRV \ @@ -4326,7 +4326,7 @@ run_test "SSL async private: renegotiation: server-initiated; sign" \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): sign done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: client-initiated; decrypt" \ "$P_SRV \ @@ -4338,7 +4338,7 @@ run_test "SSL async private: renegotiation: client-initiated; decrypt" \ -s "Async decrypt callback: using key slot " \ -s "Async resume (slot [0-9]): decrypt done, status=0" -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE_C +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "SSL async private: renegotiation: server-initiated; decrypt" \ "$P_SRV \ From 2e333375708f01bed5db51a3d89613e2fdd30daf Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 24 Apr 2018 13:22:10 +0200 Subject: [PATCH 0241/1100] Fix invalid data being accepted in RSA-decryption-based ciphersuites In the refactoring of ssl_parse_encrypted_pms, I advertently broke the case when decryption signalled an error, with the variable ret getting overwritten before calculating diff. Move the calculation of diff immediately after getting the return code to make the connection more obvious. Also move the calculation of mask immediately after the calculation of diff, which doesn't change the behavior, because I find the code clearer that way. --- library/ssl_srv.c | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index de8056426d..e1dc5a8e98 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3508,6 +3508,30 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, return( ret ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + mbedtls_ssl_write_version( ssl->handshake->max_major_ver, + ssl->handshake->max_minor_ver, + ssl->conf->transport, ver ); + + /* Avoid data-dependent branches while checking for invalid + * padding, to protect against timing-based Bleichenbacher-type + * attacks. */ + diff = (unsigned int) ret; + diff |= peer_pmslen ^ 48; + diff |= peer_pms[0] ^ ver[0]; + diff |= peer_pms[1] ^ ver[1]; + + /* mask = diff ? 0xff : 0x00 using bit operations to avoid branches */ + /* MSVC has a warning about unary minus on unsigned, but this is + * well-defined and precisely what we want to do here */ +#if defined(_MSC_VER) +#pragma warning( push ) +#pragma warning( disable : 4146 ) +#endif + mask = - ( ( diff | - diff ) >> ( sizeof( unsigned int ) * 8 - 1 ) ); +#if defined(_MSC_VER) +#pragma warning( pop ) +#endif + /* * Protection against Bleichenbacher's attack: invalid PKCS#1 v1.5 padding * must not cause the connection to end immediately; instead, send a @@ -3524,18 +3548,6 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, return( ret ); } - mbedtls_ssl_write_version( ssl->handshake->max_major_ver, - ssl->handshake->max_minor_ver, - ssl->conf->transport, ver ); - - /* Avoid data-dependent branches while checking for invalid - * padding, to protect against timing-based Bleichenbacher-type - * attacks. */ - diff = (unsigned int) ret; - diff |= peer_pmslen ^ 48; - diff |= peer_pms[0] ^ ver[0]; - diff |= peer_pms[1] ^ ver[1]; - #if defined(MBEDTLS_SSL_DEBUG_ALL) if( diff != 0 ) MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) ); @@ -3549,18 +3561,6 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, } ssl->handshake->pmslen = 48; - /* mask = diff ? 0xff : 0x00 using bit operations to avoid branches */ - /* MSVC has a warning about unary minus on unsigned, but this is - * well-defined and precisely what we want to do here */ -#if defined(_MSC_VER) -#pragma warning( push ) -#pragma warning( disable : 4146 ) -#endif - mask = - ( ( diff | - diff ) >> ( sizeof( unsigned int ) * 8 - 1 ) ); -#if defined(_MSC_VER) -#pragma warning( pop ) -#endif - /* Set pms to either the true or the fake PMS, without * data-dependent branches. */ for( i = 0; i < ssl->handshake->pmslen; i++ ) From 9b562d5c3671354d61193c285eaf5e50d62d64e4 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 25 Apr 2018 20:32:43 +0200 Subject: [PATCH 0242/1100] mbedtls_ssl_handshake_free: take the SSL context as argument Change the signature of mbedtls_ssl_handshake_free again. Now take the whole SSL context as argument and not just the configuration and the handshake substructure. This is in preparation for changing the asynchronous cancel callback to take the SSL context as an argument. --- include/mbedtls/ssl_internal.h | 6 ++---- library/ssl_tls.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 4c7205d705..334b5d8526 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -414,11 +414,9 @@ void mbedtls_ssl_transform_free( mbedtls_ssl_transform *transform ); * \brief Free referenced items in an SSL handshake context and clear * memory * - * \param conf SSL configuration - * \param handshake SSL handshake context + * \param ssl SSL context */ -void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, - mbedtls_ssl_handshake_params *handshake ); +void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f5d332fa8b..aa48b4538d 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5201,7 +5201,7 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ) /* * Free our handshake params */ - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); mbedtls_free( ssl->handshake ); ssl->handshake = NULL; @@ -5556,7 +5556,7 @@ static int ssl_handshake_init( mbedtls_ssl_context *ssl ) if( ssl->session_negotiate ) mbedtls_ssl_session_free( ssl->session_negotiate ); if( ssl->handshake ) - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); /* * Either the pointers are now NULL or cleared properly and can be freed. @@ -7426,12 +7426,12 @@ static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) } #endif /* MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, - mbedtls_ssl_handshake_params *handshake ) +void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) { + mbedtls_ssl_handshake_params *handshake = ssl->handshake; + if( handshake == NULL ) return; - (void) conf; /* Unused in some compile-time configurations. */ #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) @@ -7496,11 +7496,11 @@ void mbedtls_ssl_handshake_free( const mbedtls_ssl_config *conf, #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - if( conf->f_async_cancel != NULL && + if( ssl->conf->f_async_cancel != NULL && handshake->p_async_operation_ctx != NULL ) { - conf->f_async_cancel( conf->p_async_connection_ctx, - handshake->p_async_operation_ctx ); + ssl->conf->f_async_cancel( ssl->conf->p_async_connection_ctx, + handshake->p_async_operation_ctx ); } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -7571,7 +7571,7 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ) if( ssl->handshake ) { - mbedtls_ssl_handshake_free( ssl->conf, ssl->handshake ); + mbedtls_ssl_handshake_free( ssl ); mbedtls_ssl_transform_free( ssl->transform_negotiate ); mbedtls_ssl_session_free( ssl->session_negotiate ); From df13d5c7a6e0e4678075f948499530654ff65d5b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 25 Apr 2018 20:39:48 +0200 Subject: [PATCH 0243/1100] Pass the SSL context to async callbacks When a handshake step starts an asynchronous operation, the application needs to know which SSL connection the operation is for, so that when the operation completes, the application can wake that connection up. Therefore the async start callbacks need to take the SSL context as an argument. It isn't enough to let them set a cookie in the SSL connection, the application needs to be able to find the right SSL connection later. Also pass the SSL context to the other callbacks for consistency. Add a new field to the handshake that the application can use to store a per-connection context. This new field replaces the former context (operation_ctx) that was created by the start function and passed to the resume function. Add a boolean flag to the handshake structure to track whether an asynchronous operation is in progress. This is more robust than relying on the application to set a non-null application context. --- include/mbedtls/ssl.h | 148 ++++++++++++++++++++------------- include/mbedtls/ssl_internal.h | 16 +++- library/ssl_srv.c | 46 +++++----- library/ssl_tls.c | 36 +++++--- programs/ssl/ssl_server2.c | 58 ++++++------- 5 files changed, 179 insertions(+), 125 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index be27b89caf..2dac1da773 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -537,6 +537,22 @@ typedef void mbedtls_ssl_set_timer_t( void * ctx, */ typedef int mbedtls_ssl_get_timer_t( void * ctx ); +/* Defined below */ +typedef struct mbedtls_ssl_session mbedtls_ssl_session; +typedef struct mbedtls_ssl_context mbedtls_ssl_context; +typedef struct mbedtls_ssl_config mbedtls_ssl_config; + +/* Defined in ssl_internal.h */ +typedef struct mbedtls_ssl_transform mbedtls_ssl_transform; +typedef struct mbedtls_ssl_handshake_params mbedtls_ssl_handshake_params; +typedef struct mbedtls_ssl_sig_hash_set_t mbedtls_ssl_sig_hash_set_t; +#if defined(MBEDTLS_X509_CRT_PARSE_C) +typedef struct mbedtls_ssl_key_cert mbedtls_ssl_key_cert; +#endif +#if defined(MBEDTLS_SSL_PROTO_DTLS) +typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; +#endif + #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) #if defined(MBEDTLS_X509_CRT_PARSE_C) /** @@ -553,22 +569,20 @@ typedef int mbedtls_ssl_get_timer_t( void * ctx ); * this function sends or enqueues a request and does * not wait for the operation to complete. * - * The parameters \c connection_ctx and \c cert are + * The parameters \c ssl and \c cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this * function must save the contents of \c hash, as the * \c hash buffer is no longer valid when this function * returns. * - * \param connection_ctx Pointer to the connection context set in the - * SSL configuration - * \param p_operation_ctx On success, pointer to the operation context. - * This must be a non-null pointer. Success means - * that an operation was started, and the return - * status is 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. - * This pointer will be passed to later calls to the - * resume or cancel function. If the callback fails, - * the value is ignored. + * This function may call mbedtls_ssl_async_set_data() to + * store an operation context for later retrieval + * by the resume callback. + * + * \param config_data The configuration data parameter passed to + * mbedtls_ssl_conf_async_private_cb(). + * \param ssl The SSL connection instance. * \param cert Certificate containing the public key * \param md_alg Hash algorithm * \param hash Buffer containing the hash. This buffer is @@ -586,8 +600,8 @@ typedef int mbedtls_ssl_get_timer_t( void * ctx ); * - Any other error indicates a fatal failure and is * propagated up the call chain. */ -typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, - void **p_operation_ctx, +typedef int mbedtls_ssl_async_sign_t( void *config_data, + mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, mbedtls_md_type_t md_alg, const unsigned char *hash, @@ -607,22 +621,20 @@ typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, * this function sends or enqueues a request and does * not wait for the operation to complete. * - * The parameters \c connection_ctx and \c cert are + * The parameters \c ssl and \c cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this * function must save the contents of \c hash, as the * \c hash buffer is no longer valid when this function * returns. * - * \param connection_ctx Pointer to the connection context set in the - * SSL configuration - * \param p_operation_ctx On success, pointer to the operation context. - * This must be a non-null pointer. Success means - * that an operation was started, and the return - * status is 0 or \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. - * This pointer will be passed to later calls to the - * resume or cancel function. If the callback fails, - * the value is ignored. + * This function may call mbedtls_ssl_async_set_data() to + * store an operation context for later retrieval + * by the resume callback. + * + * \param config_data The configuration data parameter passed to + * mbedtls_ssl_conf_async_private_cb(). + * \param ssl The SSL connection instance. * \param cert Certificate containing the public key * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. @@ -639,8 +651,8 @@ typedef int mbedtls_ssl_async_sign_t( void *connection_ctx, * - Any other error indicates a fatal failure and is * propagated up the call chain. */ -typedef int mbedtls_ssl_async_decrypt_t( void *connection_ctx, - void **p_operation_ctx, +typedef int mbedtls_ssl_async_decrypt_t( void *config_data, + mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, const unsigned char *input, size_t input_len ); @@ -652,13 +664,14 @@ typedef int mbedtls_ssl_async_decrypt_t( void *connection_ctx, * Callback to resume an external operation * started by the \c mbedtls_ssl_async_sign_t callback. * - * \param connection_ctx Pointer to the connection context set in the - * SSL configuration - * \param operation_ctx Pointer to the operation context created by - * the start function. If this callback returns - * any value other than - * \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, it should - * free all resources associated with this context. + * This function may call mbedtls_ssl_async_get_data() to + * retrieve an operation context set by the start callback. + * It may call mbedtls_ssl_async_set_data() to modify this + * context. + * + * \param config_data The configuration data parameter passed to + * mbedtls_ssl_conf_async_private_cb(). + * \param ssl The SSL connection instance. * \param output Buffer containing the output on success * \param output_len On success, number of bytes written to \c output * \param output_size Size of the \c output buffer in bytes @@ -672,8 +685,8 @@ typedef int mbedtls_ssl_async_decrypt_t( void *connection_ctx, * - Any other error means that the operation is aborted. * The SSL handshake is aborted. */ -typedef int mbedtls_ssl_async_resume_t( void *connection_ctx, - void *operation_ctx, +typedef int mbedtls_ssl_async_resume_t( void *config_data, + mbedtls_ssl_context *ssl, unsigned char *output, size_t *output_len, size_t output_size ); @@ -684,32 +697,17 @@ typedef int mbedtls_ssl_async_resume_t( void *connection_ctx, * Callback to cancel an external operation * started by the \c mbedtls_ssl_async_sign_t callback. * - * \param connection_ctx Pointer to the connection context set in the - * SSL configuration - * \param operation_ctx Pointer to the operation context created by - * the start function. The callback should free - * all resources associated with this context. + * This function may call mbedtls_ssl_async_get_data() to + * retrieve an operation context set by the start callback. + * + * \param config_data The configuration data parameter passed to + * mbedtls_ssl_conf_async_private_cb(). + * \param ssl The SSL connection instance. */ -typedef void mbedtls_ssl_async_cancel_t( void *connection_ctx, - void *operation_ctx ); +typedef void mbedtls_ssl_async_cancel_t( void *config_data, + mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ -/* Defined below */ -typedef struct mbedtls_ssl_session mbedtls_ssl_session; -typedef struct mbedtls_ssl_context mbedtls_ssl_context; -typedef struct mbedtls_ssl_config mbedtls_ssl_config; - -/* Defined in ssl_internal.h */ -typedef struct mbedtls_ssl_transform mbedtls_ssl_transform; -typedef struct mbedtls_ssl_handshake_params mbedtls_ssl_handshake_params; -typedef struct mbedtls_ssl_sig_hash_set_t mbedtls_ssl_sig_hash_set_t; -#if defined(MBEDTLS_X509_CRT_PARSE_C) -typedef struct mbedtls_ssl_key_cert mbedtls_ssl_key_cert; -#endif -#if defined(MBEDTLS_SSL_PROTO_DTLS) -typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; -#endif - /* * This structure is used for storing current session data. */ @@ -833,7 +831,7 @@ struct mbedtls_ssl_config #endif /* MBEDTLS_X509_CRT_PARSE_C */ mbedtls_ssl_async_resume_t *f_async_resume; /*!< resume asynchronous operation */ mbedtls_ssl_async_cancel_t *f_async_cancel; /*!< cancel asynchronous operation */ - void *p_async_connection_ctx; /*!< connection context for asynchronous operation callbacks */ + void *p_async_config_data; /*!< Configuration data set by mbedtls_ssl_conf_async_private_cb() and passed to the callbacks. */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) @@ -1505,15 +1503,45 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, * \param f_async_cancel Callback to cancel an asynchronous operation. See * the description of \c mbedtls_ssl_async_cancel_t * for more information. - * \param connection_ctx Pointer to the connection context which will be - * passed to the callbacks + * \param config_data A pointer to configuration data which will be + * passed to the callbacks. The library stores and + * passes back this value without dereferencing it. */ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, mbedtls_ssl_async_sign_t *f_async_sign, mbedtls_ssl_async_decrypt_t *f_async_decrypt, mbedtls_ssl_async_resume_t *f_async_resume, mbedtls_ssl_async_cancel_t *f_async_cancel, - void *connection_ctx ); + void *config_data ); + +/** + * \brief Retrieve the asynchronous operation user context. + * + * \note This function may only be called while a handshake + * is in progress. + * + * \param ssl The SSL context to access. + * + * \return The asynchronous operation user context that was last + * set during the current handshake. If mbedtls_ssl_set_data() + * has not been called during the current handshake yet, + * this function returns \c NULL. + */ +void *mbedtls_ssl_async_get_data( mbedtls_ssl_context *ssl ); + +/** + * \brief Retrieve the asynchronous operation user context. + * + * \note This function may only be called while a handshake + * is in progress. + * + * \param ssl The SSL context to access. + * \param ctx The new value of the asynchronous operation user context. + * Call mbedtls_ssl_get_data() later during the same handshake + * to retrieve this value. + */ +void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, + void *ctx ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /** diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 334b5d8526..506aff395b 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -243,9 +243,6 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - void *p_async_operation_ctx; /*!< asynchronous operation context */ -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_PROTO_DTLS) unsigned int out_msg_seq; /*!< Outgoing handshake sequence number */ @@ -311,6 +308,19 @@ struct mbedtls_ssl_handshake_params #if defined(MBEDTLS_SSL_EXTENDED_MASTER_SECRET) int extended_ms; /*!< use Extended Master Secret? */ #endif + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + int async_in_progress : 1; /*!< an asynchronous operation is in progress */ +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + /** Asynchronous operation context. This field is meant for use by the + * asynchronous operation callbacks (mbedtls_ssl_config::f_async_sign_start, + * mbedtls_ssl_config::f_async_decrypt_start, + * mbedtls_ssl_config::f_async_resume, mbedtls_ssl_config::f_async_cancel). + * The library does not use it internally. */ + void *user_async_ctx; +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ }; /* diff --git a/library/ssl_srv.c b/library/ssl_srv.c index e1dc5a8e98..8bd332cbaa 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2841,13 +2841,13 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, { size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN - ( ssl->out_msg + ssl->out_msglen + 2 ) ); - int ret = ssl->conf->f_async_resume( ssl->conf->p_async_connection_ctx, - ssl->handshake->p_async_operation_ctx, + int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl, ssl->out_msg + ssl->out_msglen + 2, signature_len, sig_max_len ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { - ssl->handshake->p_async_operation_ctx = NULL; + ssl->handshake->async_in_progress = 0; + mbedtls_ssl_async_set_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_resume_server_key_exchange", ret ); return( ret ); @@ -3167,22 +3167,23 @@ curve_matching_done: #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_sign_start != NULL ) { - ret = ssl->conf->f_async_sign_start( - ssl->conf->p_async_connection_ctx, - &ssl->handshake->p_async_operation_ctx, - mbedtls_ssl_own_cert( ssl ), - md_alg, hash, hashlen ); + ret = ssl->conf->f_async_sign_start( ssl->conf->p_async_config_data, + ssl, + mbedtls_ssl_own_cert( ssl ), + md_alg, hash, hashlen ); switch( ret ) { case MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH: /* act as if f_async_sign was null */ break; case 0: + ssl->handshake->async_in_progress = 1; return( ssl_resume_server_key_exchange( ssl, signature_len ) ); case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: + ssl->handshake->async_in_progress = 1; return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); default: - MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign_start", ret ); return( ret ); } } @@ -3251,7 +3252,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already prepared the message and there is an ongoing signature operation, resume signing. */ - if( ssl->handshake->p_async_operation_ctx != NULL ) + if( ssl->handshake->async_in_progress != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); ret = ssl_resume_server_key_exchange( ssl, &signature_len ); @@ -3385,12 +3386,12 @@ static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, size_t *peer_pmslen, size_t peer_pmssize ) { - int ret = ssl->conf->f_async_resume( ssl->conf->p_async_connection_ctx, - ssl->handshake->p_async_operation_ctx, + int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl, peer_pms, peer_pmslen, peer_pmssize ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { - ssl->handshake->p_async_operation_ctx = NULL; + ssl->handshake->async_in_progress = 0; + mbedtls_ssl_async_set_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_decrypt_encrypted_pms", ret ); return( ret ); @@ -3412,7 +3413,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already started decoding the message and there is an ongoing decryption operation, resume signing. */ - if( ssl->handshake->p_async_operation_ctx != NULL ) + if( ssl->handshake->async_in_progress != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming decryption operation" ) ); return( ssl_resume_decrypt_pms( ssl, @@ -3448,25 +3449,26 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_decrypt_start != NULL ) { - ret = ssl->conf->f_async_decrypt_start( - ssl->conf->p_async_connection_ctx, - &ssl->handshake->p_async_operation_ctx, - mbedtls_ssl_own_cert( ssl ), - p, len ); + ret = ssl->conf->f_async_decrypt_start( ssl->conf->p_async_config_data, + ssl, + mbedtls_ssl_own_cert( ssl ), + p, len ); switch( ret ) { case MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH: /* act as if f_async_decrypt_start was null */ break; case 0: + ssl->handshake->async_in_progress = 1; return( ssl_resume_decrypt_pms( ssl, peer_pms, peer_pmslen, peer_pmssize ) ); case MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS: + ssl->handshake->async_in_progress = 1; return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); default: - MBEDTLS_SSL_DEBUG_RET( 1, "f_async_sign", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "f_async_decrypt_start", ret ); return( ret ); } } @@ -3649,7 +3651,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) ) if( ( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK || ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA ) && - ( ssl->handshake->p_async_operation_ctx != NULL ) ) + ( ssl->handshake->async_in_progress != 0 ) ) { /* We've already read a record and there is an asynchronous * operation in progress to decrypt it. So skip reading the @@ -3771,7 +3773,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_RSA_PSK ) { #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - if ( ssl->handshake->p_async_operation_ctx != NULL ) + if ( ssl->handshake->async_in_progress != 0 ) { /* There is an asynchronous operation in progress to * decrypt the encrypted premaster secret, so skip diff --git a/library/ssl_tls.c b/library/ssl_tls.c index aa48b4538d..2c6eef8ecd 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6485,13 +6485,28 @@ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_async_decrypt_t *f_async_decrypt, mbedtls_ssl_async_resume_t *f_async_resume, mbedtls_ssl_async_cancel_t *f_async_cancel, - void *connection_ctx ) + void *async_config_data ) { conf->f_async_sign_start = f_async_sign; conf->f_async_decrypt_start = f_async_decrypt; conf->f_async_resume = f_async_resume; conf->f_async_cancel = f_async_cancel; - conf->p_async_connection_ctx = connection_ctx; + conf->p_async_config_data = async_config_data; +} + +void *mbedtls_ssl_async_get_data( mbedtls_ssl_context *ssl ) +{ + if( ssl->handshake == NULL ) + return( NULL ); + else + return( ssl->handshake->user_async_ctx ); +} + +void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, + void *ctx ) +{ + if( ssl->handshake != NULL ) + ssl->handshake->user_async_ctx = ctx; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -7433,6 +7448,14 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) if( handshake == NULL ) return; +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + if( ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0 ) + { + ssl->conf->f_async_cancel( ssl->conf->p_async_config_data, ssl ); + handshake->async_in_progress = 0; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + #if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ defined(MBEDTLS_SSL_PROTO_TLS1_1) mbedtls_md5_free( &handshake->fin_md5 ); @@ -7495,15 +7518,6 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_SSL_SERVER_NAME_INDICATION */ -#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - if( ssl->conf->f_async_cancel != NULL && - handshake->p_async_operation_ctx != NULL ) - { - ssl->conf->f_async_cancel( ssl->conf->p_async_connection_ctx, - handshake->p_async_operation_ctx ); - } -#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ - #if defined(MBEDTLS_SSL_PROTO_DTLS) mbedtls_free( handshake->verify_cookie ); mbedtls_free( handshake->hs_msg ); diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index bf25d4e03d..9ff735ad83 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -909,15 +909,15 @@ typedef struct unsigned delay; } ssl_async_operation_context_t; -static int ssl_async_start( void *connection_ctx_arg, - void **p_operation_ctx, +static int ssl_async_start( void *config_data_arg, + mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, const char *op_name, mbedtls_md_type_t md_alg, const unsigned char *input, size_t input_len ) { - ssl_async_key_context_t *key_ctx = connection_ctx_arg; + ssl_async_key_context_t *config_data = config_data_arg; size_t slot; ssl_async_operation_context_t *ctx = NULL; @@ -927,21 +927,21 @@ static int ssl_async_start( void *connection_ctx_arg, mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); } - for( slot = 0; slot < key_ctx->slots_used; slot++ ) + for( slot = 0; slot < config_data->slots_used; slot++ ) { - if( key_ctx->slots[slot].cert == cert ) + if( config_data->slots[slot].cert == cert ) break; } - if( slot == key_ctx->slots_used ) + if( slot == config_data->slots_used ) { mbedtls_printf( "Async %s callback: no key matches this certificate.\n", op_name ); return( MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ); } mbedtls_printf( "Async %s callback: using key slot %zd, delay=%u.\n", - op_name, slot, key_ctx->slots[slot].delay ); + op_name, slot, config_data->slots[slot].delay ); - if( key_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_START ) + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_START ) { mbedtls_printf( "Async %s callback: injected error\n", op_name ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); @@ -957,8 +957,8 @@ static int ssl_async_start( void *connection_ctx_arg, ctx->md_alg = md_alg; memcpy( ctx->input, input, input_len ); ctx->input_len = input_len; - ctx->delay = key_ctx->slots[slot].delay; - *p_operation_ctx = ctx; + ctx->delay = config_data->slots[slot].delay; + mbedtls_ssl_async_set_data( ssl, ctx ); if( ctx->delay == 0 ) return( 0 ); @@ -966,42 +966,42 @@ static int ssl_async_start( void *connection_ctx_arg, return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } -static int ssl_async_sign( void *connection_ctx_arg, - void **p_operation_ctx, +static int ssl_async_sign( void *config_data_arg, + mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len ) { - return( ssl_async_start( connection_ctx_arg, p_operation_ctx, cert, + return( ssl_async_start( config_data_arg, ssl, cert, "sign", md_alg, hash, hash_len ) ); } -static int ssl_async_decrypt( void *connection_ctx_arg, - void **p_operation_ctx, +static int ssl_async_decrypt( void *config_data_arg, + mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, const unsigned char *input, size_t input_len ) { - return( ssl_async_start( connection_ctx_arg, p_operation_ctx, cert, + return( ssl_async_start( config_data_arg, ssl, cert, "decrypt", MBEDTLS_MD_NONE, input, input_len ) ); } -static int ssl_async_resume( void *connection_ctx_arg, - void *operation_ctx_arg, +static int ssl_async_resume( void *config_data_arg, + mbedtls_ssl_context *ssl, unsigned char *output, size_t *output_len, size_t output_size ) { - ssl_async_operation_context_t *ctx = operation_ctx_arg; - ssl_async_key_context_t *connection_ctx = connection_ctx_arg; - ssl_async_key_slot_t *key_slot = &connection_ctx->slots[ctx->slot]; + ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + ssl_async_key_context_t *config_data = config_data_arg; + ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; int ret; const char *op_name; - if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: injected error\n" ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); @@ -1021,7 +1021,7 @@ static int ssl_async_resume( void *connection_ctx_arg, ret = mbedtls_pk_decrypt( key_slot->pk, ctx->input, ctx->input_len, output, output_len, output_size, - connection_ctx->f_rng, connection_ctx->p_rng ); + config_data->f_rng, config_data->p_rng ); } else { @@ -1030,10 +1030,10 @@ static int ssl_async_resume( void *connection_ctx_arg, ctx->md_alg, ctx->input, ctx->input_len, output, output_len, - connection_ctx->f_rng, connection_ctx->p_rng ); + config_data->f_rng, config_data->p_rng ); } - if( connection_ctx->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) { mbedtls_printf( "Async resume callback: %s done but injected error\n", op_name ); @@ -1046,11 +1046,11 @@ static int ssl_async_resume( void *connection_ctx_arg, return( ret ); } -static void ssl_async_cancel( void *connection_ctx_arg, - void *operation_ctx_arg ) +static void ssl_async_cancel( void *config_data_arg, + mbedtls_ssl_context *ssl ) { - ssl_async_operation_context_t *ctx = operation_ctx_arg; - (void) connection_ctx_arg; + ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + (void) config_data_arg; mbedtls_printf( "Async cancel callback.\n" ); mbedtls_free( ctx ); } From 168dae85676c8dcda800e2e28c8e90e7ae3802ff Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 25 Apr 2018 23:35:42 +0200 Subject: [PATCH 0244/1100] Comment formatting and whitespace fixes --- library/ssl_srv.c | 21 ++++++++++----------- tests/ssl-opt.sh | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 8bd332cbaa..92372310d5 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2856,8 +2856,8 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, defined(MBEDTLS_SSL_ASYNC_PRIVATE) */ /* Prepare the ServerKeyExchange message, up to and including - calculating the signature if any, but excluding formatting the - signature and sending the message. */ + * calculating the signature if any, but excluding formatting the + * signature and sending the message. */ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, size_t *signature_len ) { @@ -3212,9 +3212,9 @@ curve_matching_done: } /* Prepare the ServerKeyExchange message and send it. For ciphersuites - that do not include a ServerKeyExchange message, do nothing. Either - way, if successful, move on to the next step in the SSL state - machine */ + * that do not include a ServerKeyExchange message, do nothing. Either + * way, if successful, move on to the next step in the SSL state + * machine. */ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) { int ret; @@ -3251,7 +3251,7 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already prepared the message and there is an ongoing - signature operation, resume signing. */ + * signature operation, resume signing. */ if( ssl->handshake->async_in_progress != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming signature operation" ) ); @@ -3275,8 +3275,8 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) } /* If there is a signature, write its length. - ssl_prepare_server_key_exchange already wrote the signature - itself at its proper place in the output buffer. */ + * ssl_prepare_server_key_exchange already wrote the signature + * itself at its proper place in the output buffer. */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) if( signature_len != 0 ) { @@ -3412,7 +3412,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) /* If we have already started decoding the message and there is an ongoing - decryption operation, resume signing. */ + * decryption operation, resume signing. */ if( ssl->handshake->async_in_progress != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "resuming decryption operation" ) ); @@ -3476,7 +3476,6 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, if( ! mbedtls_pk_can_do( private_key, MBEDTLS_PK_RSA ) ) { - /* */ MBEDTLS_SSL_DEBUG_MSG( 1, ( "got no RSA private key" ) ); return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); } @@ -3655,7 +3654,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) { /* We've already read a record and there is an asynchronous * operation in progress to decrypt it. So skip reading the - record. */ + * record. */ MBEDTLS_SSL_DEBUG_MSG( 3, ( "will resume decryption of previously-read record" ) ); } else diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index c692fc9ae1..1a35aac419 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4184,7 +4184,7 @@ run_test "SSL async private: slot 0 used with key2" \ requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: slot 1 used" \ "$P_SRV \ - async_operations=s async_private_delay1=1 async_private_delay2=1\ + async_operations=s async_private_delay1=1 async_private_delay2=1 \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ key_file2=data_files/server2.key crt_file2=data_files/server2.crt" \ "$P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ From ad28bf0e58b21d38d948e04cd71ba9c84927b02f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 00:19:16 +0200 Subject: [PATCH 0245/1100] Documentation improvements --- include/mbedtls/ssl.h | 97 +++++++++++++++++++++----------------- library/ssl_srv.c | 4 ++ programs/ssl/ssl_server2.c | 10 ++-- tests/ssl-opt.sh | 2 +- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 2dac1da773..9b17e610be 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -556,25 +556,24 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) #if defined(MBEDTLS_X509_CRT_PARSE_C) /** - * \brief Callback type: start external signature operation + * \brief Callback type: start external signature operation. * - * Callback to start a signature operation using an + * This callback is called during an SSL handshake to start + * a signature decryption operation using an * external processor. The parameter \c cert contains * the public key; it is up to the callback function to - * look up the associated private key or a handle to the - * private key. + * determine how to access the associated private key. * - * This function must start the signature operation. - * It is expected to be non-blocking, i.e. typically - * this function sends or enqueues a request and does - * not wait for the operation to complete. + * This function typically sends or enqueues a request, and + * does not wait for the operation to complete. This allows + * the handshake step to be non-blocking. * * The parameters \c ssl and \c cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this - * function must save the contents of \c hash, as the - * \c hash buffer is no longer valid when this function - * returns. + * function must save the contents of \c hash if the value + * is needed for later processing, because the \c hash buffer + * is no longer valid after this function returns. * * This function may call mbedtls_ssl_async_set_data() to * store an operation context for later retrieval @@ -582,12 +581,13 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * * \param config_data The configuration data parameter passed to * mbedtls_ssl_conf_async_private_cb(). - * \param ssl The SSL connection instance. - * \param cert Certificate containing the public key - * \param md_alg Hash algorithm + * \param ssl The SSL connection instance. It should not be + * modified other than via mbedtls_ssl_async_set_data(). + * \param cert Certificate containing the public key. + * \param md_alg Hash algorithm. * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. - * \param hash_len Size of the \c hash buffer in bytes + * \param hash_len Size of the \c hash buffer in bytes. * * \return - 0 if the operation was started successfully and the SSL * stack should call the resume callback immediately. @@ -608,25 +608,24 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, size_t hash_len ); /** - * \brief Callback type: start external decryption operation + * \brief Callback type: start external decryption operation. * - * Callback to start a decryption operation using an + * This callback is called during an SSL handshake to start + * an RSA decryption operation using an * external processor. The parameter \c cert contains * the public key; it is up to the callback function to - * look up the associated private key or a handle to the - * private key. + * determine how to access the associated private key. * - * This function must start the decryption operation. - * It is expected to be non-blocking, i.e. typically - * this function sends or enqueues a request and does - * not wait for the operation to complete. + * This function typically sends or enqueues a request, and + * does not wait for the operation to complete. This allows + * the handshake step to be non-blocking. * * The parameters \c ssl and \c cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this - * function must save the contents of \c hash, as the - * \c hash buffer is no longer valid when this function - * returns. + * function must save the contents of \c input if the value + * is needed for later processing, because the \c input buffer + * is no longer valid after this function returns. * * This function may call mbedtls_ssl_async_set_data() to * store an operation context for later retrieval @@ -634,11 +633,12 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * * \param config_data The configuration data parameter passed to * mbedtls_ssl_conf_async_private_cb(). - * \param ssl The SSL connection instance. - * \param cert Certificate containing the public key + * \param ssl The SSL connection instance. It should not be + * modified other than via mbedtls_ssl_async_set_data(). + * \param cert Certificate containing the public key. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. - * \param input_len Size of the \c input buffer in bytes + * \param input_len Size of the \c input buffer in bytes. * * \return - 0 if the operation was started successfully and the SSL * stack should call the resume callback immediately. @@ -659,10 +659,17 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, #endif /* MBEDTLS_X509_CRT_PARSE_C */ /** - * \brief Callback type: resume external operation + * \brief Callback type: resume external operation. * - * Callback to resume an external operation - * started by the \c mbedtls_ssl_async_sign_t callback. + * This callback is called during an SSL handshake to resume + * an external operation started by the + * \c mbedtls_ssl_async_sign_t or + * \c mbedtls_ssl_async_decrypt_t callback. + * + * This function typically checks the status of a pending + * request or causes the request queue to make progress, and + * does not wait for the operation to complete. This allows + * the handshake step to be non-blocking. * * This function may call mbedtls_ssl_async_get_data() to * retrieve an operation context set by the start callback. @@ -671,10 +678,12 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, * * \param config_data The configuration data parameter passed to * mbedtls_ssl_conf_async_private_cb(). - * \param ssl The SSL connection instance. - * \param output Buffer containing the output on success - * \param output_len On success, number of bytes written to \c output - * \param output_size Size of the \c output buffer in bytes + * \param ssl The SSL connection instance. It should not be + * modified other than via mbedtls_ssl_async_set_data(). + * \param output Buffer containing the output (signature or decrypted + * data) on success. + * \param output_len On success, number of bytes written to \c output. + * \param output_size Size of the \c output buffer in bytes. * * \return - 0 if output of the operation is available in the * \c output buffer. @@ -692,17 +701,18 @@ typedef int mbedtls_ssl_async_resume_t( void *config_data, size_t output_size ); /** - * \brief Callback type: cancel external operation + * \brief Callback type: cancel external operation. * - * Callback to cancel an external operation - * started by the \c mbedtls_ssl_async_sign_t callback. + * This callback is called if an SSL connection is closed + * while an asynchronous operation is in progress. * * This function may call mbedtls_ssl_async_get_data() to * retrieve an operation context set by the start callback. * * \param config_data The configuration data parameter passed to * mbedtls_ssl_conf_async_private_cb(). - * \param ssl The SSL connection instance. + * \param ssl The SSL connection instance. It should not be + * modified. */ typedef void mbedtls_ssl_async_cancel_t( void *config_data, mbedtls_ssl_context *ssl ); @@ -1499,10 +1509,13 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, * associated with the certificate will be used. * \param f_async_resume Callback to resume an asynchronous operation. See * the description of \c mbedtls_ssl_async_resume_t - * for more information. + * for more information. This may not be \c NULL unless + * \p f_async_sign and \p f_async_decrypt are both + * \c NULL. * \param f_async_cancel Callback to cancel an asynchronous operation. See * the description of \c mbedtls_ssl_async_cancel_t - * for more information. + * for more information. This may be \c NULL if + * no cleanup is needed. * \param config_data A pointer to configuration data which will be * passed to the callbacks. The library stores and * passes back this value without dereferencing it. diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 92372310d5..c4f1adee8f 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3267,6 +3267,10 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) if( ret != 0 ) { + /* If we're starting to write a new message, set ssl->out_msglen + * to 0. But if we're resuming after an asynchronous message, + * out_msglen is the amount of data written so far and mst be + * preserved. */ if( ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server key exchange (pending)" ) ); else diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 9ff735ad83..7d9072e876 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -871,11 +871,11 @@ typedef struct } ssl_async_key_slot_t; typedef enum { - SSL_ASYNC_INJECT_ERROR_NONE = 0, - SSL_ASYNC_INJECT_ERROR_START, - SSL_ASYNC_INJECT_ERROR_CANCEL, - SSL_ASYNC_INJECT_ERROR_RESUME, - SSL_ASYNC_INJECT_ERROR_PK + SSL_ASYNC_INJECT_ERROR_NONE = 0, /*!< Let the callbacks succeed */ + SSL_ASYNC_INJECT_ERROR_START, /*!< Inject error during start */ + SSL_ASYNC_INJECT_ERROR_CANCEL, /*!< Close the connection after async start */ + SSL_ASYNC_INJECT_ERROR_RESUME, /*!< Inject error during resume */ + SSL_ASYNC_INJECT_ERROR_PK /*!< Inject error during resume */ #define SSL_ASYNC_INJECT_ERROR_MAX SSL_ASYNC_INJECT_ERROR_PK } ssl_async_inject_error_t; diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 1a35aac419..15503e2c53 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4182,7 +4182,7 @@ run_test "SSL async private: slot 0 used with key2" \ # key1: ECDSA, key2: RSA; use key2 from slot 1 requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: slot 1 used" \ +run_test "SSL async private: slot 1 used with key2" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ From 22e695fc5ada32346544664080852c0373c0cdb7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 00:22:50 +0200 Subject: [PATCH 0246/1100] Be more precise about when a variable is unused --- library/ssl_srv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index c4f1adee8f..9c94fff7d7 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2870,7 +2870,9 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, #endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ (void) ciphersuite_info; /* unused in some configurations */ - (void) signature_len; /* unused in some configurations */ +#if !defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) + (void) signature_len; +#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ ssl->out_msglen = 4; /* header (type:1, length:3) to be written later */ From ceb541b7deffcfc920d72b584a2e460be255f665 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 06:30:45 +0200 Subject: [PATCH 0247/1100] ssl_server2: rename delay in ssl_async_operation_context_t Rename to remaining_delay to convey that it is decremented over time. --- programs/ssl/ssl_server2.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 7d9072e876..500ff042be 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -906,7 +906,7 @@ typedef struct mbedtls_md_type_t md_alg; unsigned char input[SSL_ASYNC_INPUT_MAX_SIZE]; size_t input_len; - unsigned delay; + unsigned remaining_delay; } ssl_async_operation_context_t; static int ssl_async_start( void *config_data_arg, @@ -957,10 +957,10 @@ static int ssl_async_start( void *config_data_arg, ctx->md_alg = md_alg; memcpy( ctx->input, input, input_len ); ctx->input_len = input_len; - ctx->delay = config_data->slots[slot].delay; + ctx->remaining_delay = config_data->slots[slot].delay; mbedtls_ssl_async_set_data( ssl, ctx ); - if( ctx->delay == 0 ) + if( ctx->remaining_delay == 0 ) return( 0 ); else return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); @@ -1007,11 +1007,11 @@ static int ssl_async_resume( void *config_data_arg, return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } - if( ctx->delay > 0 ) + if( ctx->remaining_delay > 0 ) { - --ctx->delay; + --ctx->remaining_delay; mbedtls_printf( "Async resume (slot %zd): call %u more times.\n", - ctx->slot, ctx->delay ); + ctx->slot, ctx->remaining_delay ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } From d3268834f376f6fdd5e58686ebb68d7e8e43d595 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 06:23:59 +0200 Subject: [PATCH 0248/1100] Document what the SSL async sign callback needs to do with RSA Document how the SSL async sign callback must treat its md_alg and hash parameters when doing an RSA signature: sign-the-hash if md_alg is nonzero (TLS 1.2), and sign-the-digestinfo if md_alg is zero (TLS <= 1.1). In ssl_server2, don't use md_alg=MBEDTLS_MD_NONE to indicate that ssl_async_resume must perform an encryption, because md_alg is also MBEDTLS_MD_NONE in TLS <= 1.1. Add a test case to exercise this case (signature with MBEDTLS_MD_NONE). --- include/mbedtls/ssl.h | 15 +++++++++ programs/ssl/ssl_server2.c | 62 ++++++++++++++++++++++++++------------ tests/ssl-opt.sh | 12 ++++++++ 3 files changed, 70 insertions(+), 19 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 9b17e610be..6460fd9bf6 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -579,6 +579,21 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * store an operation context for later retrieval * by the resume callback. * + * \note For RSA signatures, this function must produce output + * that is consistent with PKCS#1 v1.5 in the same way as + * mbedtls_rsa_pkcs1_sign(). Before the private key operation, + * apply the padding steps described in RFC 8017, section 9.2 + * "EMSA-PKCS1-v1_5" as follows. + * - If \p md_alg is #MBEDTLS_MD_NONE, apply the PKCS#1 v1.5 + * encoding, treating \p hash as the DigestInfo to be + * padded. In other words, apply EMSA-PKCS1-v1_5 starting + * from step 3, with `T = hash` and `tLen = hash_len`. + * - If \p md_alg is #MBEDTLS_MD_NONE, apply the PKCS#1 v1.5 + * encoding, treating \p hash as the hash to be encoded and + * padded. In other words, apply EMSA-PKCS1-v1_5 starting + * from step 2, with `digestAlgorithm` obtained by calling + * mbedtls_oid_get_oid_by_md() on \p md_alg. + * * \param config_data The configuration data parameter passed to * mbedtls_ssl_conf_async_private_cb(). * \param ssl The SSL connection instance. It should not be diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 500ff042be..28d9e6f4c4 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -900,9 +900,25 @@ void ssl_async_set_key( ssl_async_key_context_t *ctx, } #define SSL_ASYNC_INPUT_MAX_SIZE 512 + +typedef enum +{ + ASYNC_OP_SIGN, + ASYNC_OP_DECRYPT, +} ssl_async_operation_type_t; +/* Note that the enum above and the array below need to be kept in sync! + * `ssl_async_operation_names[op]` is the name of op for each value `op` + * of type `ssl_async_operation_type_t`. */ +static const char *const ssl_async_operation_names[] = +{ + "sign", + "decrypt", +}; + typedef struct { size_t slot; + ssl_async_operation_type_t operation_type; mbedtls_md_type_t md_alg; unsigned char input[SSL_ASYNC_INPUT_MAX_SIZE]; size_t input_len; @@ -912,7 +928,7 @@ typedef struct static int ssl_async_start( void *config_data_arg, mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, - const char *op_name, + ssl_async_operation_type_t op_type, mbedtls_md_type_t md_alg, const unsigned char *input, size_t input_len ) @@ -920,6 +936,7 @@ static int ssl_async_start( void *config_data_arg, ssl_async_key_context_t *config_data = config_data_arg; size_t slot; ssl_async_operation_context_t *ctx = NULL; + const char *op_name = ssl_async_operation_names[op_type]; { char dn[100]; @@ -954,6 +971,7 @@ static int ssl_async_start( void *config_data_arg, if( ctx == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); ctx->slot = slot; + ctx->operation_type = op_type; ctx->md_alg = md_alg; memcpy( ctx->input, input, input_len ); ctx->input_len = input_len; @@ -974,7 +992,7 @@ static int ssl_async_sign( void *config_data_arg, size_t hash_len ) { return( ssl_async_start( config_data_arg, ssl, cert, - "sign", md_alg, + ASYNC_OP_SIGN, md_alg, hash, hash_len ) ); } @@ -985,7 +1003,7 @@ static int ssl_async_decrypt( void *config_data_arg, size_t input_len ) { return( ssl_async_start( config_data_arg, ssl, cert, - "decrypt", MBEDTLS_MD_NONE, + ASYNC_OP_DECRYPT, MBEDTLS_MD_NONE, input, input_len ) ); } @@ -999,7 +1017,7 @@ static int ssl_async_resume( void *config_data_arg, ssl_async_key_context_t *config_data = config_data_arg; ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; int ret; - const char *op_name; + const char *op_name = NULL; if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { @@ -1015,22 +1033,28 @@ static int ssl_async_resume( void *config_data_arg, return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } - if( ctx->md_alg == MBEDTLS_MD_NONE ) + switch( ctx->operation_type ) { - op_name = "decrypt"; - ret = mbedtls_pk_decrypt( key_slot->pk, - ctx->input, ctx->input_len, - output, output_len, output_size, - config_data->f_rng, config_data->p_rng ); - } - else - { - op_name = "sign"; - ret = mbedtls_pk_sign( key_slot->pk, - ctx->md_alg, - ctx->input, ctx->input_len, - output, output_len, - config_data->f_rng, config_data->p_rng ); + case ASYNC_OP_DECRYPT: + op_name = "decrypt"; + ret = mbedtls_pk_decrypt( key_slot->pk, + ctx->input, ctx->input_len, + output, output_len, output_size, + config_data->f_rng, config_data->p_rng ); + break; + case ASYNC_OP_SIGN: + op_name = "sign"; + ret = mbedtls_pk_sign( key_slot->pk, + ctx->md_alg, + ctx->input, ctx->input_len, + output, output_len, + config_data->f_rng, config_data->p_rng ); + break; + default: + mbedtls_printf( "Async resume (slot %zd): unknown operation type %ld. This shouldn't happen.\n", + ctx->slot, (long) ctx->operation_type ); + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + break; } if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 15503e2c53..0f8af026af 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4088,6 +4088,18 @@ run_test "SSL async private: sign, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): sign done, status=0" +# Test that the async callback correctly signs the 36-byte hash of TLS 1.0/1.1 +# with RSA PKCS#1v1.5 as used in TLS 1.0/1.1. +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "SSL async private: sign, RSA, TLS 1.1" \ + "$P_SRV key_file=data_files/server2.key crt_file=data_files/server2.crt \ + async_operations=s async_private_delay1=0 async_private_delay2=0" \ + "$P_CLI force_version=tls1_1" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): sign done, status=0" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt, delay=0" \ "$P_SRV \ From c912572a7f6886fc3e28723ca5f2644f3e76a878 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 07:15:40 +0200 Subject: [PATCH 0249/1100] ssl_server2: merge redundant async_private_error=resume/pk Testing the case where the resume callback returns an error at the beginning and the case where it returns an error at the end is redundant. Keep the test after the output has been produced, to validate that the product does not use even a valid output if the return value is an error code. --- programs/ssl/ssl_server2.c | 13 +++---------- tests/ssl-opt.sh | 11 ----------- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 28d9e6f4c4..544ff3606f 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -207,7 +207,7 @@ int main( void ) " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ " default: -1 (not asynchronous)\n" \ " async_private_error=%%d Async callback error injection (default=0=none,\n" \ - " 1=start, 2=cancel, 3=resume, 4=pk, negative=first time only)" + " 1=start, 2=cancel, 3=resume, negative=first time only)" #else #define USAGE_SSL_ASYNC "" #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -875,8 +875,7 @@ typedef enum { SSL_ASYNC_INJECT_ERROR_START, /*!< Inject error during start */ SSL_ASYNC_INJECT_ERROR_CANCEL, /*!< Close the connection after async start */ SSL_ASYNC_INJECT_ERROR_RESUME, /*!< Inject error during resume */ - SSL_ASYNC_INJECT_ERROR_PK /*!< Inject error during resume */ -#define SSL_ASYNC_INJECT_ERROR_MAX SSL_ASYNC_INJECT_ERROR_PK +#define SSL_ASYNC_INJECT_ERROR_MAX SSL_ASYNC_INJECT_ERROR_RESUME } ssl_async_inject_error_t; typedef struct @@ -1019,12 +1018,6 @@ static int ssl_async_resume( void *config_data_arg, int ret; const char *op_name = NULL; - if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) - { - mbedtls_printf( "Async resume callback: injected error\n" ); - return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); - } - if( ctx->remaining_delay > 0 ) { --ctx->remaining_delay; @@ -1057,7 +1050,7 @@ static int ssl_async_resume( void *config_data_arg, break; } - if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_PK ) + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: %s done but injected error\n", op_name ); diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 0f8af026af..6261225b23 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4246,17 +4246,6 @@ run_test "SSL async private: error in resume" \ "$P_CLI" \ 1 \ -s "Async sign callback: using key slot " \ - -s "Async resume callback: injected error" \ - -s "! mbedtls_ssl_handshake returned" - -requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in pk" \ - "$P_SRV \ - async_operations=s async_private_delay1=1 async_private_delay2=1 \ - async_private_error=4" \ - "$P_CLI" \ - 1 \ - -s "Async sign callback: using key slot " \ -s "Async resume callback: sign done but injected error" \ -s "! mbedtls_ssl_handshake returned" From 2481a712ed37d2757474d8812226c4d310da0eb3 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 07:28:44 +0200 Subject: [PATCH 0250/1100] Doxygen formatting improvements --- include/mbedtls/ssl.h | 94 +++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 6460fd9bf6..60ce5d470a 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -560,7 +560,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * * This callback is called during an SSL handshake to start * a signature decryption operation using an - * external processor. The parameter \c cert contains + * external processor. The parameter \p cert contains * the public key; it is up to the callback function to * determine how to access the associated private key. * @@ -568,11 +568,11 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \c ssl and \c cert are + * The parameters \p ssl and \p cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this - * function must save the contents of \c hash if the value - * is needed for later processing, because the \c hash buffer + * function must save the contents of \p hash if the value + * is needed for later processing, because the \p hash buffer * is no longer valid after this function returns. * * This function may call mbedtls_ssl_async_set_data() to @@ -604,16 +604,16 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * no longer valid when the function returns. * \param hash_len Size of the \c hash buffer in bytes. * - * \return - 0 if the operation was started successfully and the SSL - * stack should call the resume callback immediately. - * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation - * was started successfully and the SSL stack should return - * immediately without calling the resume callback yet. - * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external - * processor does not support this key. The SSL stack will - * use the private key object instead. - * - Any other error indicates a fatal failure and is - * propagated up the call chain. + * \return 0 if the operation was started successfully and the SSL + * stack should call the resume callback immediately. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * was started successfully and the SSL stack should return + * immediately without calling the resume callback yet. + * \return #MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external + * processor does not support this key. The SSL stack will + * use the private key object instead. + * \return Any other error indicates a fatal failure and is + * propagated up the call chain. */ typedef int mbedtls_ssl_async_sign_t( void *config_data, mbedtls_ssl_context *ssl, @@ -627,7 +627,7 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * * This callback is called during an SSL handshake to start * an RSA decryption operation using an - * external processor. The parameter \c cert contains + * external processor. The parameter \p cert contains * the public key; it is up to the callback function to * determine how to access the associated private key. * @@ -635,11 +635,11 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \c ssl and \c cert are + * The parameters \p ssl and \p cert are * guaranteed to remain valid as long as the SSL * configuration remains valid. On the other hand, this - * function must save the contents of \c input if the value - * is needed for later processing, because the \c input buffer + * function must save the contents of \p input if the value + * is needed for later processing, because the \p input buffer * is no longer valid after this function returns. * * This function may call mbedtls_ssl_async_set_data() to @@ -653,18 +653,18 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * \param cert Certificate containing the public key. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. - * \param input_len Size of the \c input buffer in bytes. + * \param input_len Size of the \p input buffer in bytes. * - * \return - 0 if the operation was started successfully and the SSL - * stack should call the resume callback immediately. - * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation - * was started successfully and the SSL stack should return - * immediately without calling the resume callback yet. - * - \c MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external - * processor does not support this key. The SSL stack will - * use the private key object instead. - * - Any other error indicates a fatal failure and is - * propagated up the call chain. + * \return 0 if the operation was started successfully and the SSL + * stack should call the resume callback immediately. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * was started successfully and the SSL stack should return + * immediately without calling the resume callback yet. + * \return #MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH if the external + * processor does not support this key. The SSL stack will + * use the private key object instead. + * \return Any other error indicates a fatal failure and is + * propagated up the call chain. */ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, mbedtls_ssl_context *ssl, @@ -678,8 +678,8 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, * * This callback is called during an SSL handshake to resume * an external operation started by the - * \c mbedtls_ssl_async_sign_t or - * \c mbedtls_ssl_async_decrypt_t callback. + * ::mbedtls_ssl_async_sign_t or + * ::mbedtls_ssl_async_decrypt_t callback. * * This function typically checks the status of a pending * request or causes the request queue to make progress, and @@ -697,17 +697,17 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, * modified other than via mbedtls_ssl_async_set_data(). * \param output Buffer containing the output (signature or decrypted * data) on success. - * \param output_len On success, number of bytes written to \c output. - * \param output_size Size of the \c output buffer in bytes. + * \param output_len On success, number of bytes written to \p output. + * \param output_size Size of the \p output buffer in bytes. * - * \return - 0 if output of the operation is available in the - * \c output buffer. - * - \c MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation - * is still in progress. Subsequent requests for progress - * on the SSL connection will call the resume callback - * again. - * - Any other error means that the operation is aborted. - * The SSL handshake is aborted. + * \return 0 if output of the operation is available in the + * \p output buffer. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if the operation + * is still in progress. Subsequent requests for progress + * on the SSL connection will call the resume callback + * again. + * \return Any other error means that the operation is aborted. + * The SSL handshake is aborted. */ typedef int mbedtls_ssl_async_resume_t( void *config_data, mbedtls_ssl_context *ssl, @@ -1511,24 +1511,24 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, * * \param conf SSL configuration context * \param f_async_sign Callback to start a signature operation. See - * the description of \c mbedtls_ssl_async_sign_t - * for more information. This may be NULL if the + * the description of ::mbedtls_ssl_async_sign_t + * for more information. This may be \c NULL if the * external processor does not support any signature * operation; in this case the private key object * associated with the certificate will be used. * \param f_async_decrypt Callback to start a decryption operation. See - * the description of \c mbedtls_ssl_async_decrypt_t - * for more information. This may be NULL if the + * the description of ::mbedtls_ssl_async_decrypt_t + * for more information. This may be \c NULL if the * external processor does not support any decryption * operation; in this case the private key object * associated with the certificate will be used. * \param f_async_resume Callback to resume an asynchronous operation. See - * the description of \c mbedtls_ssl_async_resume_t + * the description of ::mbedtls_ssl_async_resume_t * for more information. This may not be \c NULL unless * \p f_async_sign and \p f_async_decrypt are both * \c NULL. * \param f_async_cancel Callback to cancel an asynchronous operation. See - * the description of \c mbedtls_ssl_async_cancel_t + * the description of ::mbedtls_ssl_async_cancel_t * for more information. This may be \c NULL if * no cleanup is needed. * \param config_data A pointer to configuration data which will be From 0fd90dd713d34afb5e36e6219425c1911705ac2b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 07:41:09 +0200 Subject: [PATCH 0251/1100] ssl_prepare_server_key_exchange: clarify where the signature is written --- library/ssl_srv.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 9c94fff7d7..10ded131e0 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2837,13 +2837,18 @@ static int ssl_get_ecdh_params_from_cert( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) && \ defined(MBEDTLS_SSL_ASYNC_PRIVATE) static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, - size_t *signature_len ) + size_t *signature_len ) { + /* Append the signature to ssl->out_msg, leaving 2 bytes for the + * signature length which will be added in ssl_write_server_key_exchange + * after the call to ssl_prepare_server_key_exchange. + * ssl_write_server_key_exchange also takes care of incrementing + * ssl->out_msglen. */ + unsigned char *sig_start = ssl->out_msg + ssl->out_msglen + 2; size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN - - ( ssl->out_msg + ssl->out_msglen + 2 ) ); + - sig_start ); int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl, - ssl->out_msg + ssl->out_msglen + 2, - signature_len, sig_max_len ); + sig_start, signature_len, sig_max_len ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->async_in_progress = 0; @@ -3197,6 +3202,11 @@ curve_matching_done: return( MBEDTLS_ERR_SSL_PRIVATE_KEY_REQUIRED ); } + /* Append the signature to ssl->out_msg, leaving 2 bytes for the + * signature length which will be added in ssl_write_server_key_exchange + * after the call to ssl_prepare_server_key_exchange. + * ssl_write_server_key_exchange also takes care of incrementing + * ssl->out_msglen. */ if( ( ret = mbedtls_pk_sign( mbedtls_ssl_own_key( ssl ), md_alg, hash, hashlen, ssl->out_msg + ssl->out_msglen + 2, From a36ac4fe6894e4df9058e25285dc1902114c6bd7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 08:05:02 +0200 Subject: [PATCH 0252/1100] New wrapper mbedtls_status_is_ssl_in_progress(ret) Wrapper function to check whether a return status indicates that an SSL operation is in progress. --- programs/ssl/ssl_server2.c | 41 +++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 544ff3606f..f96040ea2c 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -862,6 +862,23 @@ static int ssl_sig_hashes_for_test[] = { }; #endif /* MBEDTLS_X509_CRT_PARSE_C */ +/** Return true if \p ret is a status code indicating that there is an + * operation in progress on an SSL connection, and false if it indicates + * success or a fatal error. + * + * The possible operations in progress are: + * + * - A read, when the SSL input buffer does not contain a full message. + * - A write, when the SSL output buffer contains some data that has not + * been sent over the network yet. + * - An asynchronous callback that has not completed yet. */ +static int mbedtls_status_is_ssl_in_progress( int ret ) +{ + return( ret == MBEDTLS_ERR_SSL_WANT_READ || + ret == MBEDTLS_ERR_SSL_WANT_WRITE || + ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); +} + #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) typedef struct { @@ -2526,9 +2543,7 @@ handshake: } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ - if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + if( ! mbedtls_status_is_ssl_in_progress( ret ) ) break; /* For event-driven IO, wait for socket to become available */ @@ -2651,9 +2666,7 @@ data_exchange: memset( buf, 0, sizeof( buf ) ); ret = mbedtls_ssl_read( &ssl, buf, len ); - if( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE || - ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + if( mbedtls_status_is_ssl_in_progress( ret ) ) { if( opt.event == 1 /* level triggered IO */ ) { @@ -2784,9 +2797,7 @@ data_exchange: * returns `MBEDTLS_ERR_SSL_WANT_READ`, because the pending messages * might be discarded (e.g. because they are retransmissions). */ } - while( ret == MBEDTLS_ERR_SSL_WANT_READ || - ret == MBEDTLS_ERR_SSL_WANT_WRITE || - ret == MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); + while( mbedtls_status_is_ssl_in_progress( ret ) ); if( ret <= 0 ) { @@ -2821,9 +2832,7 @@ data_exchange: while( ( ret = mbedtls_ssl_renegotiate( &ssl ) ) != 0 ) { - if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + if( ! mbedtls_status_is_ssl_in_progress( ret ) ) { mbedtls_printf( " failed\n ! mbedtls_ssl_renegotiate returned %d\n\n", ret ); goto reset; @@ -2866,9 +2875,7 @@ data_exchange: goto reset; } - if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + if( ! mbedtls_status_is_ssl_in_progress( ret ) ) { mbedtls_printf( " failed\n ! mbedtls_ssl_write returned %d\n\n", ret ); goto reset; @@ -2892,9 +2899,7 @@ data_exchange: { ret = mbedtls_ssl_write( &ssl, buf, len ); - if( ret != MBEDTLS_ERR_SSL_WANT_READ && - ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) + if( ! mbedtls_status_is_ssl_in_progress( ret ) ) break; /* For event-driven IO, wait for socket to become available */ From e14163886852d744adb317e1ffc107f742e360d6 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 10:23:21 +0200 Subject: [PATCH 0253/1100] Finish writing an unfinished comment --- library/ssl_srv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 10ded131e0..6819e7ac7f 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3561,7 +3561,8 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, ret = ssl->conf->f_rng( ssl->conf->p_rng, fake_pms, sizeof( fake_pms ) ); if( ret != 0 ) { - /* It's ok to abort on an RNG failure, since this does not */ + /* It's ok to abort on an RNG failure, since this does not reveal + * anything about the RSA decryption. */ return( ret ); } From 8f97af7ea3ebe368b5359331f4f726add2640384 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 11:46:10 +0200 Subject: [PATCH 0254/1100] Don't pass the async config data to async callbacks The config data is in the SSL config, so callbacks can retrieve it from there, with the new function mbedtls_ssl_conf_get_async_config_data. --- include/mbedtls/ssl.h | 41 +++++++++++++++++++------------------- library/ssl_srv.c | 10 ++++------ library/ssl_tls.c | 9 +++++++-- programs/ssl/ssl_server2.c | 26 ++++++++++-------------- 4 files changed, 42 insertions(+), 44 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 60ce5d470a..2e5a1b80d9 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -594,8 +594,6 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * from step 2, with `digestAlgorithm` obtained by calling * mbedtls_oid_get_oid_by_md() on \p md_alg. * - * \param config_data The configuration data parameter passed to - * mbedtls_ssl_conf_async_private_cb(). * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. @@ -615,8 +613,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * \return Any other error indicates a fatal failure and is * propagated up the call chain. */ -typedef int mbedtls_ssl_async_sign_t( void *config_data, - mbedtls_ssl_context *ssl, +typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, mbedtls_md_type_t md_alg, const unsigned char *hash, @@ -646,8 +643,6 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * store an operation context for later retrieval * by the resume callback. * - * \param config_data The configuration data parameter passed to - * mbedtls_ssl_conf_async_private_cb(). * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. @@ -666,8 +661,7 @@ typedef int mbedtls_ssl_async_sign_t( void *config_data, * \return Any other error indicates a fatal failure and is * propagated up the call chain. */ -typedef int mbedtls_ssl_async_decrypt_t( void *config_data, - mbedtls_ssl_context *ssl, +typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, const unsigned char *input, size_t input_len ); @@ -691,8 +685,6 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, * It may call mbedtls_ssl_async_set_data() to modify this * context. * - * \param config_data The configuration data parameter passed to - * mbedtls_ssl_conf_async_private_cb(). * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param output Buffer containing the output (signature or decrypted @@ -709,8 +701,7 @@ typedef int mbedtls_ssl_async_decrypt_t( void *config_data, * \return Any other error means that the operation is aborted. * The SSL handshake is aborted. */ -typedef int mbedtls_ssl_async_resume_t( void *config_data, - mbedtls_ssl_context *ssl, +typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, unsigned char *output, size_t *output_len, size_t output_size ); @@ -724,13 +715,10 @@ typedef int mbedtls_ssl_async_resume_t( void *config_data, * This function may call mbedtls_ssl_async_get_data() to * retrieve an operation context set by the start callback. * - * \param config_data The configuration data parameter passed to - * mbedtls_ssl_conf_async_private_cb(). * \param ssl The SSL connection instance. It should not be * modified. */ -typedef void mbedtls_ssl_async_cancel_t( void *config_data, - mbedtls_ssl_context *ssl ); +typedef void mbedtls_ssl_async_cancel_t( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ /* @@ -856,7 +844,7 @@ struct mbedtls_ssl_config #endif /* MBEDTLS_X509_CRT_PARSE_C */ mbedtls_ssl_async_resume_t *f_async_resume; /*!< resume asynchronous operation */ mbedtls_ssl_async_cancel_t *f_async_cancel; /*!< cancel asynchronous operation */ - void *p_async_config_data; /*!< Configuration data set by mbedtls_ssl_conf_async_private_cb() and passed to the callbacks. */ + void *p_async_config_data; /*!< Configuration data set by mbedtls_ssl_conf_async_private_cb(). */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) @@ -1531,9 +1519,10 @@ void mbedtls_ssl_conf_export_keys_cb( mbedtls_ssl_config *conf, * the description of ::mbedtls_ssl_async_cancel_t * for more information. This may be \c NULL if * no cleanup is needed. - * \param config_data A pointer to configuration data which will be - * passed to the callbacks. The library stores and - * passes back this value without dereferencing it. + * \param config_data A pointer to configuration data which can be + * retrieved with + * mbedtls_ssl_conf_get_async_config_data(). The + * library stores this value without dereferencing it. */ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, mbedtls_ssl_async_sign_t *f_async_sign, @@ -1542,6 +1531,16 @@ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, mbedtls_ssl_async_cancel_t *f_async_cancel, void *config_data ); +/** + * \brief Retrieve the configuration data set by + * mbedtls_ssl_conf_async_private_cb(). + * + * \param conf SSL configuration context + * \return The configuration data set by + * mbedtls_ssl_conf_async_private_cb(). + */ +void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ); + /** * \brief Retrieve the asynchronous operation user context. * @@ -1555,7 +1554,7 @@ void mbedtls_ssl_conf_async_private_cb( mbedtls_ssl_config *conf, * has not been called during the current handshake yet, * this function returns \c NULL. */ -void *mbedtls_ssl_async_get_data( mbedtls_ssl_context *ssl ); +void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ); /** * \brief Retrieve the asynchronous operation user context. diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 6819e7ac7f..5439f6d617 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2847,7 +2847,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, unsigned char *sig_start = ssl->out_msg + ssl->out_msglen + 2; size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN - sig_start ); - int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl, + int ret = ssl->conf->f_async_resume( ssl, sig_start, signature_len, sig_max_len ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { @@ -3174,8 +3174,7 @@ curve_matching_done: #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_sign_start != NULL ) { - ret = ssl->conf->f_async_sign_start( ssl->conf->p_async_config_data, - ssl, + ret = ssl->conf->f_async_sign_start( ssl, mbedtls_ssl_own_cert( ssl ), md_alg, hash, hashlen ); switch( ret ) @@ -3402,7 +3401,7 @@ static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, size_t *peer_pmslen, size_t peer_pmssize ) { - int ret = ssl->conf->f_async_resume( ssl->conf->p_async_config_data, ssl, + int ret = ssl->conf->f_async_resume( ssl, peer_pms, peer_pmslen, peer_pmssize ); if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { @@ -3465,8 +3464,7 @@ static int ssl_decrypt_encrypted_pms( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_decrypt_start != NULL ) { - ret = ssl->conf->f_async_decrypt_start( ssl->conf->p_async_config_data, - ssl, + ret = ssl->conf->f_async_decrypt_start( ssl, mbedtls_ssl_own_cert( ssl ), p, len ); switch( ret ) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 2c6eef8ecd..04f34587da 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6494,7 +6494,12 @@ void mbedtls_ssl_conf_async_private_cb( conf->p_async_config_data = async_config_data; } -void *mbedtls_ssl_async_get_data( mbedtls_ssl_context *ssl ) +void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ) +{ + return( conf->p_async_config_data ); +} + +void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ) { if( ssl->handshake == NULL ) return( NULL ); @@ -7451,7 +7456,7 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( ssl->conf->f_async_cancel != NULL && handshake->async_in_progress != 0 ) { - ssl->conf->f_async_cancel( ssl->conf->p_async_config_data, ssl ); + ssl->conf->f_async_cancel( ssl ); handshake->async_in_progress = 0; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index f96040ea2c..272eecdc5e 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -941,15 +941,15 @@ typedef struct unsigned remaining_delay; } ssl_async_operation_context_t; -static int ssl_async_start( void *config_data_arg, - mbedtls_ssl_context *ssl, +static int ssl_async_start( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, ssl_async_operation_type_t op_type, mbedtls_md_type_t md_alg, const unsigned char *input, size_t input_len ) { - ssl_async_key_context_t *config_data = config_data_arg; + ssl_async_key_context_t *config_data = + mbedtls_ssl_conf_get_async_config_data( ssl->conf ); size_t slot; ssl_async_operation_context_t *ctx = NULL; const char *op_name = ssl_async_operation_names[op_type]; @@ -1000,37 +1000,35 @@ static int ssl_async_start( void *config_data_arg, return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } -static int ssl_async_sign( void *config_data_arg, - mbedtls_ssl_context *ssl, +static int ssl_async_sign( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len ) { - return( ssl_async_start( config_data_arg, ssl, cert, + return( ssl_async_start( ssl, cert, ASYNC_OP_SIGN, md_alg, hash, hash_len ) ); } -static int ssl_async_decrypt( void *config_data_arg, - mbedtls_ssl_context *ssl, +static int ssl_async_decrypt( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, const unsigned char *input, size_t input_len ) { - return( ssl_async_start( config_data_arg, ssl, cert, + return( ssl_async_start( ssl, cert, ASYNC_OP_DECRYPT, MBEDTLS_MD_NONE, input, input_len ) ); } -static int ssl_async_resume( void *config_data_arg, - mbedtls_ssl_context *ssl, +static int ssl_async_resume( mbedtls_ssl_context *ssl, unsigned char *output, size_t *output_len, size_t output_size ) { ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); - ssl_async_key_context_t *config_data = config_data_arg; + ssl_async_key_context_t *config_data = + mbedtls_ssl_conf_get_async_config_data( ssl->conf ); ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; int ret; const char *op_name = NULL; @@ -1080,11 +1078,9 @@ static int ssl_async_resume( void *config_data_arg, return( ret ); } -static void ssl_async_cancel( void *config_data_arg, - mbedtls_ssl_context *ssl ) +static void ssl_async_cancel( mbedtls_ssl_context *ssl ) { ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); - (void) config_data_arg; mbedtls_printf( "Async cancel callback.\n" ); mbedtls_free( ctx ); } From ac5e8a32862f3e99eee830822d969e22e092d51a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 11:50:07 +0200 Subject: [PATCH 0255/1100] Document that callbacks must not return arbitrary SSL errors --- include/mbedtls/ssl.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 2e5a1b80d9..84bc63ba59 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -611,7 +611,10 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * processor does not support this key. The SSL stack will * use the private key object instead. * \return Any other error indicates a fatal failure and is - * propagated up the call chain. + * propagated up the call chain. The callback should + * use \c MBEDTLS_ERR_PK_xxx error codes, and must not + * use \c MBEDTLS_ERR_SSL_xxx error codes except as + * directed here. */ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -659,7 +662,10 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * processor does not support this key. The SSL stack will * use the private key object instead. * \return Any other error indicates a fatal failure and is - * propagated up the call chain. + * propagated up the call chain. The callback should + * use \c MBEDTLS_ERR_PK_xxx error codes, and must not + * use \c MBEDTLS_ERR_SSL_xxx error codes except as + * directed here. */ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -699,7 +705,10 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * on the SSL connection will call the resume callback * again. * \return Any other error means that the operation is aborted. - * The SSL handshake is aborted. + * The SSL handshake is aborted. The callback should + * use \c MBEDTLS_ERR_PK_xxx error codes, and must not + * use \c MBEDTLS_ERR_SSL_xxx error codes except as + * directed here. */ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, unsigned char *output, From 5ffe41c8f9e53ddde74e63d58bd05fb5e67abca0 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 11:51:03 +0200 Subject: [PATCH 0256/1100] Turn on MBEDTLS_SSL_ASYNC_PRIVATE by default This is an ABI change in libmbedtls. --- include/mbedtls/config.h | 2 +- tests/scripts/all.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index b80667ab14..43ca74ee78 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1137,7 +1137,7 @@ * operation inside the library. * */ -//#define MBEDTLS_SSL_ASYNC_PRIVATE +#define MBEDTLS_SSL_ASYNC_PRIVATE /** * \def MBEDTLS_SSL_DEBUG_ALL diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 0eda3788cc..d61ba98699 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -557,8 +557,8 @@ make msg "test: main suites (full config)" # ~ 5s make test -msg "test: ssl-opt.sh default, ECJPAKE, SSL async (full config)" # ~ 1s -if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE\|SSL async private' +msg "test: ssl-opt.sh default, ECJPAKE (full config)" # ~ 1s +if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE' msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' From 783007375f839a5fa0c78c6304923305ae6831db Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 13:03:29 +0200 Subject: [PATCH 0257/1100] Change boolean bitfield to unsigned Reminder to self: 1 is not a valid value in a 1-bit bitfield. It's undefined behavior and gcc -ansi -pedantic helpfully complains about it. --- include/mbedtls/ssl_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 506aff395b..bbaf3564f6 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -310,7 +310,7 @@ struct mbedtls_ssl_handshake_params #endif #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - int async_in_progress : 1; /*!< an asynchronous operation is in progress */ + unsigned int async_in_progress : 1; /*!< an asynchronous operation is in progress */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) From 5bea9f61b91d143904cdddc56d9d74aaf10855d7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 13:27:43 +0200 Subject: [PATCH 0258/1100] Don't use the printf format %zd We target C89 libc, so don't use %zd or %zu. Just use %u, and make slot numbers `unsigned` for simplicity. --- programs/ssl/ssl_server2.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 272eecdc5e..9a226e4e43 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -933,7 +933,7 @@ static const char *const ssl_async_operation_names[] = typedef struct { - size_t slot; + unsigned slot; ssl_async_operation_type_t operation_type; mbedtls_md_type_t md_alg; unsigned char input[SSL_ASYNC_INPUT_MAX_SIZE]; @@ -950,7 +950,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, { ssl_async_key_context_t *config_data = mbedtls_ssl_conf_get_async_config_data( ssl->conf ); - size_t slot; + unsigned slot; ssl_async_operation_context_t *ctx = NULL; const char *op_name = ssl_async_operation_names[op_type]; @@ -971,7 +971,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, op_name ); return( MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ); } - mbedtls_printf( "Async %s callback: using key slot %zd, delay=%u.\n", + mbedtls_printf( "Async %s callback: using key slot %u, delay=%u.\n", op_name, slot, config_data->slots[slot].delay ); if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_START ) @@ -1036,7 +1036,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, if( ctx->remaining_delay > 0 ) { --ctx->remaining_delay; - mbedtls_printf( "Async resume (slot %zd): call %u more times.\n", + mbedtls_printf( "Async resume (slot %u): call %u more times.\n", ctx->slot, ctx->remaining_delay ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } @@ -1059,7 +1059,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, config_data->f_rng, config_data->p_rng ); break; default: - mbedtls_printf( "Async resume (slot %zd): unknown operation type %ld. This shouldn't happen.\n", + mbedtls_printf( "Async resume (slot %u): unknown operation type %ld. This shouldn't happen.\n", ctx->slot, (long) ctx->operation_type ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); break; @@ -1072,7 +1072,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } - mbedtls_printf( "Async resume (slot %zd): %s done, status=%d.\n", + mbedtls_printf( "Async resume (slot %u): %s done, status=%d.\n", ctx->slot, op_name, ret ); mbedtls_free( ctx ); return( ret ); From 9de55fab562e8e37d42fd609576c32bc4d5d7299 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 14:33:43 +0200 Subject: [PATCH 0259/1100] Fix uninitialized variable in ssl_server2 --- programs/ssl/ssl_server2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 9a226e4e43..bf50f1d50e 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1223,6 +1223,9 @@ int main( int argc, char *argv[] ) mbedtls_pk_init( &pkey ); mbedtls_x509_crt_init( &srvcert2 ); mbedtls_pk_init( &pkey2 ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + memset( &ssl_async_keys, 0, sizeof( ssl_async_keys ) ); +#endif #endif #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO) mbedtls_dhm_init( &dhm ); From 12d0cc1b8fbbeedc87afe6f5920eaef5b0ded643 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 15:06:56 +0200 Subject: [PATCH 0260/1100] Add test case for SSL async resume after resume Add a test case for SSL asynchronous signature where f_async_resume is called twice. Verify that f_async_sign_start is only called once. This serves as a non-regression test for a bug where f_async_sign_start was only called once, which turned out to be due to a stale build artifacts with mismatched numerical values of MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. --- tests/ssl-opt.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 6261225b23..bf7d914b28 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4088,6 +4088,18 @@ run_test "SSL async private: sign, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): sign done, status=0" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: sign, delay=2" \ + "$P_SRV \ + async_operations=s async_private_delay1=2 async_private_delay2=2" \ + "$P_CLI" \ + 0 \ + -s "Async sign callback: using key slot " \ + -U "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): call 1 more times." \ + -s "Async resume (slot [0-9]): call 0 more times." \ + -s "Async resume (slot [0-9]): sign done, status=0" + # Test that the async callback correctly signs the 36-byte hash of TLS 1.0/1.1 # with RSA PKCS#1v1.5 as used in TLS 1.0/1.1. requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE From 20deb01264721df975bfa7ff4c3fa1a72bf04fae Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 17:57:37 +0200 Subject: [PATCH 0261/1100] Improve documentation of the async callback's crypto parameters --- include/mbedtls/ssl.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 84bc63ba59..097b86a3cc 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -594,9 +594,16 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * from step 2, with `digestAlgorithm` obtained by calling * mbedtls_oid_get_oid_by_md() on \p md_alg. * + * \note For ECDSA signatures, the output format is the DER encoding + * `Ecdsa-Sig-Value` defined in + * [RFC 4492 section 5.4](https://tools.ietf.org/html/rfc4492#section-5.4). + * * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. + * This is one of the pointers passed to + * mbedtls_ssl_conf_own_cert() when configuring the SSL + * connection. * \param md_alg Hash algorithm. * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. @@ -646,9 +653,21 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * store an operation context for later retrieval * by the resume callback. * + * \warning RSA decryption as used in TLS is subject to a potential + * timing side channel attack first discovered by Bleichenbacher + * in 1998. This attack can be remotely exploitable + * in practice. To avoid this attack, you must ensure that + * if the callback performs an RSA decryption, the time it + * takes to execute and return the result does not depend + * on whether the RSA decryption succeeded or reported + * invalid padding. + * * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. + * This is one of the pointers passed to + * mbedtls_ssl_conf_own_cert() when configuring the SSL + * connection. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. * \param input_len Size of the \p input buffer in bytes. From 37289cdb9958efb6f175a1739b150e82e7cf2763 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 27 Apr 2018 11:50:14 +0200 Subject: [PATCH 0262/1100] SSL async tests: tighten a few log checks in some test cases --- tests/ssl-opt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index bf7d914b28..cf2c168755 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4237,6 +4237,7 @@ run_test "SSL async private: error in start" \ 1 \ -s "Async sign callback: injected error" \ -S "Async resume" \ + -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE @@ -4259,6 +4260,7 @@ run_test "SSL async private: error in resume" \ 1 \ -s "Async sign callback: using key slot " \ -s "Async resume callback: sign done but injected error" \ + -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE @@ -4295,6 +4297,7 @@ run_test "SSL async private: cancel after start then fall back to transparent [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ + -s "Async sign callback: using key slot 0" -S "Async resume" \ -s "Async cancel" \ -s "! mbedtls_ssl_handshake returned" \ From deda75a09e6a2c828ec68820e6025a1a205b49fa Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:02:45 +0200 Subject: [PATCH 0263/1100] Fix missing continuation indicator in ssl-opt.sh --- tests/ssl-opt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index cf2c168755..597a5f1c11 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4297,7 +4297,7 @@ run_test "SSL async private: cancel after start then fall back to transparent [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ - -s "Async sign callback: using key slot 0" + -s "Async sign callback: using key slot 0" \ -S "Async resume" \ -s "Async cancel" \ -s "! mbedtls_ssl_handshake returned" \ From 0b53e24c6b74fdeaf4d40b8e9a85f98afc05fe67 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:23:56 +0200 Subject: [PATCH 0264/1100] ssl_async_set_key: detect if ctx->slots overflows --- programs/ssl/ssl_server2.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index bf50f1d50e..838f41d7cc 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -904,15 +904,18 @@ typedef struct void *p_rng; } ssl_async_key_context_t; -void ssl_async_set_key( ssl_async_key_context_t *ctx, +int ssl_async_set_key( ssl_async_key_context_t *ctx, mbedtls_x509_crt *cert, mbedtls_pk_context *pk, unsigned delay ) { + if( ctx->slots_used >= sizeof( ctx->slots ) / sizeof( *ctx->slots ) ) + return( -1 ); ctx->slots[ctx->slots_used].cert = cert; ctx->slots[ctx->slots_used].pk = pk; ctx->slots[ctx->slots_used].delay = delay; ++ctx->slots_used; + return( 0 ); } #define SSL_ASYNC_INPUT_MAX_SIZE 512 @@ -2297,8 +2300,14 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay1 >= 0 ) { - ssl_async_set_key( &ssl_async_keys, &srvcert, pk, - opt.async_private_delay1 ); + ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, + opt.async_private_delay1 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } pk = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -2314,8 +2323,14 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, - opt.async_private_delay2 ); + ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } pk = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ From 807d74a062f79eb7196f56c967357ccaf9d663b4 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:30:49 +0200 Subject: [PATCH 0265/1100] SSL async callback: cert is not always from mbedtls_ssl_conf_own_cert The certificate passed to async callbacks may not be the one set by mbedtls_ssl_conf_own_cert. For example, when using an SNI callback, it's whatever the callback is using. Document this, and add a test case (and code sample) with SNI. --- include/mbedtls/ssl.h | 14 ++++++++++---- programs/ssl/ssl_server2.c | 25 ++++++++++++++++++++++--- tests/ssl-opt.sh | 14 ++++++++++++++ 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 097b86a3cc..b199e2ea6d 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -601,9 +601,12 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. - * This is one of the pointers passed to + * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL - * connection. + * connection. However, if other callbacks are used, this + * property may not hold. For example, if an SNI callback + * is registered with mbedtls_ssl_conf_sni(), then + * this callback determines what certificate is used. * \param md_alg Hash algorithm. * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. @@ -665,9 +668,12 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. - * This is one of the pointers passed to + * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL - * connection. + * connection. However, if other callbacks are used, this + * property may not hold. For example, if an SNI callback + * is registered with mbedtls_ssl_conf_sni(), then + * this callback determines what certificate is used. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. * \param input_len Size of the \p input buffer in bytes. diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 838f41d7cc..b1f2382cbc 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -204,7 +204,7 @@ int main( void ) #define USAGE_SSL_ASYNC \ " async_operations=%%c... d=decrypt, s=sign (default: -=off)\n" \ " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ - " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ + " async_private_delay2=%%d Asynchronous delay for key_file2 and sni\n" \ " default: -1 (not asynchronous)\n" \ " async_private_error=%%d Async callback error injection (default=0=none,\n" \ " 1=start, 2=cancel, 3=resume, negative=first time only)" @@ -897,7 +897,7 @@ typedef enum { typedef struct { - ssl_async_key_slot_t slots[2]; + ssl_async_key_slot_t slots[3]; /* key, key2, sni */ size_t slots_used; ssl_async_inject_error_t inject_error; int (*f_rng)(void *, unsigned char *, size_t); @@ -965,7 +965,9 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, for( slot = 0; slot < config_data->slots_used; slot++ ) { - if( config_data->slots[slot].cert == cert ) + if( memcmp( &config_data->slots[slot].cert->pk, + &cert->pk, + sizeof( cert->pk ) ) == 0 ) break; } if( slot == config_data->slots_used ) @@ -2376,7 +2378,24 @@ int main( int argc, char *argv[] ) #if defined(SNI_OPTION) if( opt.sni != NULL ) + { mbedtls_ssl_conf_sni( &conf, sni_callback, sni_info ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + if( opt.async_private_delay2 >= 0 ) + { + ret = ssl_async_set_key( &ssl_async_keys, + sni_info->cert, sni_info->key, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } + sni_info->key = NULL; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + } #endif #if defined(MBEDTLS_ECP_C) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 597a5f1c11..6afca2d12a 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4112,6 +4112,20 @@ run_test "SSL async private: sign, RSA, TLS 1.1" \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): sign done, status=0" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: sign, SNI" \ + "$P_SRV debug_level=3 \ + async_operations=s async_private_delay1=0 async_private_delay2=0 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ + "$P_CLI server_name=polarssl.example" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): sign done, status=0" \ + -s "parse ServerName extension" \ + -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ + -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt, delay=0" \ "$P_SRV \ From 6a8cb36c24c60b3734c46479350066b1e1361245 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 11:54:14 +0200 Subject: [PATCH 0266/1100] Fix copypasta in the async callback documentation --- include/mbedtls/ssl.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index b199e2ea6d..b7dc98b5b9 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -568,9 +568,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \p ssl and \p cert are - * guaranteed to remain valid as long as the SSL - * configuration remains valid. On the other hand, this + * The parameters \p ssl and \p cert are guaranteed to remain + * valid throughout the handshake. On the other hand, this * function must save the contents of \p hash if the value * is needed for later processing, because the \p hash buffer * is no longer valid after this function returns. @@ -588,7 +587,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * encoding, treating \p hash as the DigestInfo to be * padded. In other words, apply EMSA-PKCS1-v1_5 starting * from step 3, with `T = hash` and `tLen = hash_len`. - * - If \p md_alg is #MBEDTLS_MD_NONE, apply the PKCS#1 v1.5 + * - If `md_alg != MBEDTLS_MD_NONE`, apply the PKCS#1 v1.5 * encoding, treating \p hash as the hash to be encoded and * padded. In other words, apply EMSA-PKCS1-v1_5 starting * from step 2, with `digestAlgorithm` obtained by calling @@ -645,9 +644,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \p ssl and \p cert are - * guaranteed to remain valid as long as the SSL - * configuration remains valid. On the other hand, this + * The parameters \p ssl and \p cert are guaranteed to remain + * valid throughout the handshake. On the other hand, this * function must save the contents of \p input if the value * is needed for later processing, because the \p input buffer * is no longer valid after this function returns. From 1febfef56122a79d5fa4f04412c2c14bce712a90 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 11:54:39 +0200 Subject: [PATCH 0267/1100] Rename mbedtls_ssl_async_{get,set}_data for clarity Rename to mbedtls_ssl_get_async_operation_data and mbedtls_ssl_set_async_operation_data so that they're about "async operation data" and not about some not-obvious "data". --- include/mbedtls/ssl.h | 44 +++++++++++++++++++++----------------- library/ssl_srv.c | 4 ++-- library/ssl_tls.c | 4 ++-- programs/ssl/ssl_server2.c | 6 +++--- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index b7dc98b5b9..ec9018a1f9 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -574,8 +574,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * is needed for later processing, because the \p hash buffer * is no longer valid after this function returns. * - * This function may call mbedtls_ssl_async_set_data() to - * store an operation context for later retrieval + * This function may call mbedtls_ssl_set_async_operation_data() + * to store an operation context for later retrieval * by the resume callback. * * \note For RSA signatures, this function must produce output @@ -598,7 +598,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * [RFC 4492 section 5.4](https://tools.ietf.org/html/rfc4492#section-5.4). * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param cert Certificate containing the public key. * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL @@ -650,8 +651,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * is needed for later processing, because the \p input buffer * is no longer valid after this function returns. * - * This function may call mbedtls_ssl_async_set_data() to - * store an operation context for later retrieval + * This function may call mbedtls_ssl_set_async_operation_data() + * to store an operation context for later retrieval * by the resume callback. * * \warning RSA decryption as used in TLS is subject to a potential @@ -664,7 +665,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * invalid padding. * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param cert Certificate containing the public key. * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL @@ -709,13 +711,14 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * This function may call mbedtls_ssl_async_get_data() to - * retrieve an operation context set by the start callback. - * It may call mbedtls_ssl_async_set_data() to modify this - * context. + * This function may call mbedtls_ssl_get_async_operation_data() + * to retrieve an operation context set by the start callback. + * It may call mbedtls_ssl_set_async_operation_data() to modify + * this context. * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param output Buffer containing the output (signature or decrypted * data) on success. * \param output_len On success, number of bytes written to \p output. @@ -744,8 +747,8 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, * This callback is called if an SSL connection is closed * while an asynchronous operation is in progress. * - * This function may call mbedtls_ssl_async_get_data() to - * retrieve an operation context set by the start callback. + * This function may call mbedtls_ssl_get_async_operation_data() + * to retrieve an operation context set by the start callback. * * \param ssl The SSL connection instance. It should not be * modified. @@ -1582,11 +1585,12 @@ void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ); * \param ssl The SSL context to access. * * \return The asynchronous operation user context that was last - * set during the current handshake. If mbedtls_ssl_set_data() - * has not been called during the current handshake yet, - * this function returns \c NULL. + * set during the current handshake. If + * mbedtls_ssl_set_async_operation_data() has not yet been + * called during the current handshake, this function returns + * \c NULL. */ -void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ); +void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ); /** * \brief Retrieve the asynchronous operation user context. @@ -1596,10 +1600,10 @@ void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ); * * \param ssl The SSL context to access. * \param ctx The new value of the asynchronous operation user context. - * Call mbedtls_ssl_get_data() later during the same handshake - * to retrieve this value. + * Call mbedtls_ssl_get_async_operation_data() later during the + * same handshake to retrieve this value. */ -void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, +void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, void *ctx ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 5439f6d617..2b25e091fb 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2852,7 +2852,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->async_in_progress = 0; - mbedtls_ssl_async_set_data( ssl, NULL ); + mbedtls_ssl_set_async_operation_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_resume_server_key_exchange", ret ); return( ret ); @@ -3406,7 +3406,7 @@ static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->async_in_progress = 0; - mbedtls_ssl_async_set_data( ssl, NULL ); + mbedtls_ssl_set_async_operation_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_decrypt_encrypted_pms", ret ); return( ret ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 04f34587da..3819b6f7f2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6499,7 +6499,7 @@ void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ) return( conf->p_async_config_data ); } -void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ) +void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ) { if( ssl->handshake == NULL ) return( NULL ); @@ -6507,7 +6507,7 @@ void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ) return( ssl->handshake->user_async_ctx ); } -void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, +void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, void *ctx ) { if( ssl->handshake != NULL ) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index b1f2382cbc..876f8156c5 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -997,7 +997,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, memcpy( ctx->input, input, input_len ); ctx->input_len = input_len; ctx->remaining_delay = config_data->slots[slot].delay; - mbedtls_ssl_async_set_data( ssl, ctx ); + mbedtls_ssl_set_async_operation_data( ssl, ctx ); if( ctx->remaining_delay == 0 ) return( 0 ); @@ -1031,7 +1031,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, size_t *output_len, size_t output_size ) { - ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + ssl_async_operation_context_t *ctx = mbedtls_ssl_get_async_operation_data( ssl ); ssl_async_key_context_t *config_data = mbedtls_ssl_conf_get_async_config_data( ssl->conf ); ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; @@ -1085,7 +1085,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, static void ssl_async_cancel( mbedtls_ssl_context *ssl ) { - ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + ssl_async_operation_context_t *ctx = mbedtls_ssl_get_async_operation_data( ssl ); mbedtls_printf( "Async cancel callback.\n" ); mbedtls_free( ctx ); } From 26d01bcb5cd48c437318aa12a5360591f0988ec5 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 12:07:56 +0200 Subject: [PATCH 0268/1100] Async callback: use mbedtls_pk_check_pair to compare keys In the current test code, the object that is used as a public key in the certificate also contains a private key. However this is because of the way the stest code is built and does not demonstrate the API in a useful way. Use mbedtls_pk_check_pair, which is not what real-world code would do (since the private key would typically be in an external cryptoprocessor) but is a more representative placeholder. --- programs/ssl/ssl_server2.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 876f8156c5..d550b7c4ce 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -963,11 +963,14 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); } + /* Look for a private key that matches the public key in cert. + * Since this test code has the private key inside Mbed TLS, + * we call mbedtls_pk_check_pair to match a private key with the + * public key. */ for( slot = 0; slot < config_data->slots_used; slot++ ) { - if( memcmp( &config_data->slots[slot].cert->pk, - &cert->pk, - sizeof( cert->pk ) ) == 0 ) + if( mbedtls_pk_check_pair( &cert->pk, + config_data->slots[slot].pk ) == 0 ) break; } if( slot == config_data->slots_used ) From ea5fab829c0940e8dcba8ece9e13ae142aab9781 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 13:57:45 +0200 Subject: [PATCH 0269/1100] SSL async callbacks documentation: clarify resource cleanup Clarify when resume must clean up resources and when cancel is called. --- include/mbedtls/ssl.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index ec9018a1f9..a839e84d88 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -576,7 +576,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * * This function may call mbedtls_ssl_set_async_operation_data() * to store an operation context for later retrieval - * by the resume callback. + * by the resume or cancel callback. * * \note For RSA signatures, this function must produce output * that is consistent with PKCS#1 v1.5 in the same way as @@ -653,7 +653,7 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * * This function may call mbedtls_ssl_set_async_operation_data() * to store an operation context for later retrieval - * by the resume callback. + * by the resume or cancel callback. * * \warning RSA decryption as used in TLS is subject to a potential * timing side channel attack first discovered by Bleichenbacher @@ -716,6 +716,10 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * It may call mbedtls_ssl_set_async_operation_data() to modify * this context. * + * Note that when this function returns a status other than + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, it must free any + * resources associated with the operation. + * * \param ssl The SSL connection instance. It should not be * modified other than via * mbedtls_ssl_set_async_operation_data(). @@ -745,7 +749,12 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, * \brief Callback type: cancel external operation. * * This callback is called if an SSL connection is closed - * while an asynchronous operation is in progress. + * while an asynchronous operation is in progress. Note that + * this callback is not called if the + * ::mbedtls_ssl_async_resume_t callback has run and has + * returned a value other than + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, since in that case + * the asynchronous operation has already completed. * * This function may call mbedtls_ssl_get_async_operation_data() * to retrieve an operation context set by the start callback. From 9ceae8b4f6858a97ca694412d63e7e18b1016715 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 16:37:03 +0200 Subject: [PATCH 0270/1100] Clarify "as directed here" in SSL async callback documentation --- include/mbedtls/ssl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index a839e84d88..606d9c2f5a 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -624,7 +624,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * propagated up the call chain. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -690,7 +690,7 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * propagated up the call chain. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -738,7 +738,7 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * The SSL handshake is aborted. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, unsigned char *output, From 276b9a650c1865b0b73fc4276547e97e686a0f8d Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 16:37:23 +0200 Subject: [PATCH 0271/1100] ssl_server2: get op_name from context in ssl_async_resume as well --- programs/ssl/ssl_server2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index d550b7c4ce..ac3d1b1c7b 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1039,7 +1039,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, mbedtls_ssl_conf_get_async_config_data( ssl->conf ); ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; int ret; - const char *op_name = NULL; + const char *op_name; if( ctx->remaining_delay > 0 ) { @@ -1052,14 +1052,12 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, switch( ctx->operation_type ) { case ASYNC_OP_DECRYPT: - op_name = "decrypt"; ret = mbedtls_pk_decrypt( key_slot->pk, ctx->input, ctx->input_len, output, output_len, output_size, config_data->f_rng, config_data->p_rng ); break; case ASYNC_OP_SIGN: - op_name = "sign"; ret = mbedtls_pk_sign( key_slot->pk, ctx->md_alg, ctx->input, ctx->input_len, @@ -1073,6 +1071,8 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, break; } + op_name = ssl_async_operation_names[ctx->operation_type]; + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: %s done but injected error\n", From 0b3f00c3cfe715044710ecaefdec2b78ce306da4 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 1 May 2018 10:17:48 +0100 Subject: [PATCH 0272/1100] Avoid -Wformat-truncation warning on gcc7 --- tests/suites/main_test.function | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 1390f9fbba..abf3320364 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -226,12 +226,23 @@ int parse_arguments( char *buf, size_t len, char *params[50] ) return( cnt ); } +#if defined(__GNUC__) +/* At high optimization levels (e.g. gcc -O3), this function may be + * inlined in run_test_snprintf. This can trigger a spurious warning about + * potential misuse of snprintf from gcc -Wformat-truncation (observed with + * gcc 7.2). This warning makes tests in run_test_snprintf redundant on gcc + * only. They are still valid for other compilers. Avoid this warning by + * forbidding inlining of this function by gcc. */ +__attribute__((__noinline__)) +#endif static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) { int ret; char buf[10] = "xxxxxxxxx"; const char ref[10] = "xxxxxxxxx"; + if( n >= sizeof( buf ) ) + return( -1 ); ret = mbedtls_snprintf( buf, n, "%s", "123" ); if( ret < 0 || (size_t) ret >= n ) ret = -1; From f77d3d31d6aa32e90dec47a047ebcac26e4ef945 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 1 May 2018 20:26:47 +0100 Subject: [PATCH 0273/1100] Rename SNI/DTLS tests in ssl-opt.sh script --- tests/ssl-opt.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 4654034950..b4fea55dc5 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -2072,7 +2072,7 @@ run_test "SNI: CA override with CRL" \ # Tests for SNI and DTLS -run_test "SNI/DTLS: matching cert 1" \ +run_test "SNI: DTLS, matching cert 1" \ "$P_SRV debug_level=3 dtls=1 \ crt_file=data_files/server5.crt key_file=data_files/server5.key \ sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ @@ -2082,7 +2082,7 @@ run_test "SNI/DTLS: matching cert 1" \ -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ -c "subject name *: C=NL, O=PolarSSL, CN=localhost" -run_test "SNI/DTLS: CA override" \ +run_test "SNI: DTLS, CA override" \ "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ crt_file=data_files/server5.crt key_file=data_files/server5.key \ ca_file=data_files/test-ca.crt \ @@ -2100,7 +2100,7 @@ run_test "SNI/DTLS: CA override" \ -S "! The certificate is not correctly signed by the trusted CA" \ -S "The certificate has been revoked (is on a CRL)" -run_test "SNI/DTLS: CA override with CRL" \ +run_test "SNI: DTLS, CA override with CRL" \ "$P_SRV debug_level=3 auth_mode=optional \ crt_file=data_files/server5.crt key_file=data_files/server5.key dtls=1 \ ca_file=data_files/test-ca.crt \ From 54306c14f69b982469522ce1bceaf61a10ba8392 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 1 May 2018 20:27:37 +0100 Subject: [PATCH 0274/1100] Add more SNI/DTLS tests Run the normal SNI/TLS tests over DTLS in ssl-opt.sh for greater coverage. --- tests/ssl-opt.sh | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index b4fea55dc5..0f07982369 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -2072,6 +2072,15 @@ run_test "SNI: CA override with CRL" \ # Tests for SNI and DTLS +run_test "SNI: DTLS, no SNI callback" \ + "$P_SRV debug_level=3 dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key" \ + "$P_CLI server_name=localhost dtls=1" \ + 0 \ + -S "parse ServerName extension" \ + -c "issuer name *: C=NL, O=PolarSSL, CN=Polarssl Test EC CA" \ + -c "subject name *: C=NL, O=PolarSSL, CN=localhost" + run_test "SNI: DTLS, matching cert 1" \ "$P_SRV debug_level=3 dtls=1 \ crt_file=data_files/server5.crt key_file=data_files/server5.key \ @@ -2082,6 +2091,85 @@ run_test "SNI: DTLS, matching cert 1" \ -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ -c "subject name *: C=NL, O=PolarSSL, CN=localhost" +run_test "SNI: DTLS, matching cert 2" \ + "$P_SRV debug_level=3 dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ + "$P_CLI server_name=polarssl.example dtls=1" \ + 0 \ + -s "parse ServerName extension" \ + -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ + -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example" + +run_test "SNI: DTLS, no matching cert" \ + "$P_SRV debug_level=3 dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ + "$P_CLI server_name=nonesuch.example dtls=1" \ + 1 \ + -s "parse ServerName extension" \ + -s "ssl_sni_wrapper() returned" \ + -s "mbedtls_ssl_handshake returned" \ + -c "mbedtls_ssl_handshake returned" \ + -c "SSL - A fatal alert message was received from our peer" + +run_test "SNI: DTLS, client auth no override: optional" \ + "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1" \ + 0 \ + -S "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got a certificate request" \ + -C "skip write certificate" \ + -C "skip write certificate verify" \ + -S "skip parse certificate verify" + +run_test "SNI: DTLS, client auth override: none -> optional" \ + "$P_SRV debug_level=3 auth_mode=none dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,optional" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1" \ + 0 \ + -S "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got a certificate request" \ + -C "skip write certificate" \ + -C "skip write certificate verify" \ + -S "skip parse certificate verify" + +run_test "SNI: DTLS, client auth override: optional -> none" \ + "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,none" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1" \ + 0 \ + -s "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got no certificate request" \ + -c "skip write certificate" \ + -c "skip write certificate verify" \ + -s "skip parse certificate verify" + +run_test "SNI: DTLS, CA no override" \ + "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + ca_file=data_files/test-ca.crt \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,required" \ + "$P_CLI debug_level=3 server_name=localhost dtls=1 \ + crt_file=data_files/server6.crt key_file=data_files/server6.key" \ + 1 \ + -S "skip write certificate request" \ + -C "skip parse certificate request" \ + -c "got a certificate request" \ + -C "skip write certificate" \ + -C "skip write certificate verify" \ + -S "skip parse certificate verify" \ + -s "x509_verify_cert() returned" \ + -s "! The certificate is not correctly signed by the trusted CA" \ + -S "The certificate has been revoked (is on a CRL)" + run_test "SNI: DTLS, CA override" \ "$P_SRV debug_level=3 auth_mode=optional dtls=1 \ crt_file=data_files/server5.crt key_file=data_files/server5.key \ From 6087f200bffe5f518f2df0883a7fe4b259f994d5 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Fri, 4 May 2018 08:34:22 +0200 Subject: [PATCH 0275/1100] Fix memory leak in mbedtls_x509_csr_parse --- library/x509_csr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/library/x509_csr.c b/library/x509_csr.c index 26a06db4f6..8bb7f3363b 100644 --- a/library/x509_csr.c +++ b/library/x509_csr.c @@ -294,11 +294,9 @@ int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, siz /* * Was PEM encoded, parse the result */ - if( ( ret = mbedtls_x509_csr_parse_der( csr, pem.buf, pem.buflen ) ) != 0 ) - return( ret ); - + ret = mbedtls_x509_csr_parse_der( csr, pem.buf, pem.buflen ); mbedtls_pem_free( &pem ); - return( 0 ); + return( ret ); } else if( ret != MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT ) { From 707e9624e07538eaf43078cd19a3658121dfc892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 10:57:04 +0200 Subject: [PATCH 0276/1100] Update visualc project files --- visualc/VS2010/mbedTLS.vcxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index f13f83cc16..b2df4b4ad5 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -149,6 +149,7 @@ + @@ -222,6 +223,7 @@ + From 6fd96addf4e8caec48f69fed77f11ea1c3b374c2 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sat, 12 May 2018 18:23:32 +0100 Subject: [PATCH 0277/1100] Change the default IP addresses for DTLS samples Changes the IP address to bind to for dtls_server.c to be "::" or optionally "0.0.0.0" if the preprocessor symbol FORCE_IPV4 is defined. Also changes the destinaton IP address for dtls_client.c to be "::1" or if FORCE_IPV4 symbol is defined "127.0.0.1". This change allows on compilation dtls_server.c and dtls_client.c to both be compiled to use either IPv4 or IPv6 so out of the box they will work together without problem, and to avoid dtls_server.c binding to IPv6 and dtls_client.c binding to IPv4. --- programs/ssl/dtls_client.c | 11 ++++++++++- programs/ssl/dtls_server.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/programs/ssl/dtls_client.c b/programs/ssl/dtls_client.c index f271bad30f..c29ab34a60 100644 --- a/programs/ssl/dtls_client.c +++ b/programs/ssl/dtls_client.c @@ -60,9 +60,18 @@ int main( void ) #include "mbedtls/certs.h" #include "mbedtls/timing.h" +/* Uncomment out the following line to default to IPv4 and disable IPv6 */ +//#define FORCE_IPV4 + #define SERVER_PORT "4433" #define SERVER_NAME "localhost" -#define SERVER_ADDR "127.0.0.1" /* forces IPv4 */ + +#ifdef FORCE_IPV4 +#define SERVER_ADDR "127.0.0.1" /* Forces IPv4 */ +#else +#define SERVER_ADDR "::1" +#endif + #define MESSAGE "Echo this" #define READ_TIMEOUT_MS 1000 diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c index 9d0dda4d1a..b4ad6b53aa 100644 --- a/programs/ssl/dtls_server.c +++ b/programs/ssl/dtls_server.c @@ -34,6 +34,15 @@ #define mbedtls_time_t time_t #endif +/* Uncomment out the following line to default to IPv4 and disable IPv6 */ +//#define FORCE_IPV4 + +#ifdef FORCE_IPV4 +#define BIND_IP "0.0.0.0" /* Forces IPv4 */ +#else +#define BIND_IP "::" +#endif + #if !defined(MBEDTLS_SSL_SRV_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) || \ !defined(MBEDTLS_SSL_COOKIE_C) || !defined(MBEDTLS_NET_C) || \ !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_CTR_DRBG_C) || \ @@ -170,7 +179,7 @@ int main( void ) printf( " . Bind on udp/*/4433 ..." ); fflush( stdout ); - if( ( ret = mbedtls_net_bind( &listen_fd, NULL, "4433", MBEDTLS_NET_PROTO_UDP ) ) != 0 ) + if( ( ret = mbedtls_net_bind( &listen_fd, BIND_IP, "4433", MBEDTLS_NET_PROTO_UDP ) ) != 0 ) { printf( " failed\n ! mbedtls_net_bind returned %d\n\n", ret ); goto exit; From 3efa8889b7fe6c4caeaae187ff9d667e95d54e95 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sat, 12 May 2018 20:28:56 +0100 Subject: [PATCH 0278/1100] Update ChangeLog with dtls sample IPv6 change --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7b50534ca6..95fdfd5031 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ API Changes Therefore, mbedtls_platform_zeroize() is moved to the platform module to facilitate testing and maintenance. +Changes + * Change the dtls_client and dtls_server samples to work by default over + IPv6 and optionally by a build option over IPv4. + = mbed TLS 2.9.0 branch released 2018-04-30 Security From 10d9ce332f9aabfcc4382fb2e35c56454c20140c Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Wed, 28 Feb 2018 10:02:55 +0000 Subject: [PATCH 0279/1100] Add script for source integrity checking --- tests/scripts/check-files.py | 223 +++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100755 tests/scripts/check-files.py diff --git a/tests/scripts/check-files.py b/tests/scripts/check-files.py new file mode 100755 index 0000000000..f560d03785 --- /dev/null +++ b/tests/scripts/check-files.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python3 +""" +This file is part of Mbed TLS (https://tls.mbed.org) + +Copyright (c) 2018, Arm Limited, All Rights Reserved + +Purpose + +This script checks the current state of the source code for minor issues, +including incorrect file permissions, presence of tabs, non-Unix line endings, +trailing whitespace, presence of UTF-8 BOM, and TODO comments. +Note: requires python 3, must be run from Mbed TLS root. +""" + +import os +import argparse +import logging +import codecs +import sys + + +class IssueTracker(object): + """Base class for issue tracking. Issues should inherit from this and + overwrite either issue_with_line if they check the file line by line, or + overwrite check_file_for_issue if they check the file as a whole.""" + + def __init__(self): + self.heading = "" + self.files_exemptions = [] + self.files_with_issues = {} + + def should_check_file(self, filepath): + for files_exemption in self.files_exemptions: + if filepath.endswith(files_exemption): + return False + return True + + def issue_with_line(self, line): + raise NotImplementedError + + def check_file_for_issue(self, filepath): + with open(filepath, "rb") as f: + for i, line in enumerate(iter(f.readline, b"")): + self.check_file_line(filepath, line, i + 1) + + def check_file_line(self, filepath, line, line_number): + if self.issue_with_line(line): + if filepath not in self.files_with_issues.keys(): + self.files_with_issues[filepath] = [] + self.files_with_issues[filepath].append(line_number) + + def output_file_issues(self, logger): + if self.files_with_issues.values(): + logger.info(self.heading) + for filename, lines in sorted(self.files_with_issues.items()): + if lines: + logger.info("{}: {}".format( + filename, ", ".join(str(x) for x in lines) + )) + else: + logger.info(filename) + logger.info("") + + +class PermissionIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "Incorrect permissions:" + + def check_file_for_issue(self, filepath): + if not (os.access(filepath, os.X_OK) == + filepath.endswith((".sh", ".pl", ".py"))): + self.files_with_issues[filepath] = None + + +class EndOfFileNewlineIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "Missing newline at end of file:" + + def check_file_for_issue(self, filepath): + with open(filepath, "rb") as f: + if not f.read().endswith(b"\n"): + self.files_with_issues[filepath] = None + + +class Utf8BomIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "UTF-8 BOM present:" + + def check_file_for_issue(self, filepath): + with open(filepath, "rb") as f: + if f.read().startswith(codecs.BOM_UTF8): + self.files_with_issues[filepath] = None + + +class LineEndingIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "Non Unix line endings:" + + def issue_with_line(self, line): + return b"\r" in line + + +class TrailingWhitespaceIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "Trailing whitespace:" + self.files_exemptions = [".md"] + + def issue_with_line(self, line): + return line.rstrip(b"\r\n") != line.rstrip() + + +class TabIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "Tabs present:" + self.files_exemptions = [ + "Makefile", "generate_visualc_files.pl" + ] + + def issue_with_line(self, line): + return b"\t" in line + + +class TodoIssueTracker(IssueTracker): + + def __init__(self): + super().__init__() + self.heading = "TODO present:" + self.files_exemptions = [ + __file__, "benchmark.c", "pull_request_template.md" + ] + + def issue_with_line(self, line): + return b"todo" in line.lower() + + +class IntegrityChecker(object): + + def __init__(self, log_file): + self.check_repo_path() + self.logger = None + self.setup_logger(log_file) + self.files_to_check = ( + ".c", ".h", ".sh", ".pl", ".py", ".md", ".function", ".data", + "Makefile", "CMakeLists.txt", "ChangeLog" + ) + self.issues_to_check = [ + PermissionIssueTracker(), + EndOfFileNewlineIssueTracker(), + Utf8BomIssueTracker(), + LineEndingIssueTracker(), + TrailingWhitespaceIssueTracker(), + TabIssueTracker(), + TodoIssueTracker(), + ] + + def check_repo_path(self): + if not all(os.path.isdir(d) for d in ["include", "library", "tests"]): + raise Exception("Must be run from Mbed TLS root") + + def setup_logger(self, log_file, level=logging.INFO): + self.logger = logging.getLogger() + self.logger.setLevel(level) + if log_file: + handler = logging.FileHandler(log_file) + self.logger.addHandler(handler) + else: + console = logging.StreamHandler() + self.logger.addHandler(console) + + def check_files(self): + for root, dirs, files in sorted(os.walk(".")): + for filename in sorted(files): + filepath = os.path.join(root, filename) + if (os.path.join("yotta", "module") in filepath or + not filepath.endswith(self.files_to_check)): + continue + for issue_to_check in self.issues_to_check: + if issue_to_check.should_check_file(filepath): + issue_to_check.check_file_for_issue(filepath) + + def output_issues(self): + integrity_return_code = 0 + for issue_to_check in self.issues_to_check: + if issue_to_check.files_with_issues: + integrity_return_code = 1 + issue_to_check.output_file_issues(self.logger) + return integrity_return_code + + +def run_main(): + parser = argparse.ArgumentParser( + description=( + "This script checks the current state of the source code for " + "minor issues, including incorrect file permissions, " + "presence of tabs, non-Unix line endings, trailing whitespace, " + "presence of UTF-8 BOM, and TODO comments. " + "Note: requires python 3, must be run from Mbed TLS root." + ) + ) + parser.add_argument( + "-l", "--log_file", type=str, help="path to optional output log", + ) + check_args = parser.parse_args() + integrity_check = IntegrityChecker(check_args.log_file) + integrity_check.check_files() + return_code = integrity_check.output_issues() + sys.exit(return_code) + + +if __name__ == "__main__": + run_main() From a07039cfe2e4574b40e08ecb03774b55b210948c Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Tue, 13 Mar 2018 16:48:16 +0000 Subject: [PATCH 0280/1100] Add check-files.py to all.sh --- tests/scripts/all.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index e6c7549e6a..6eb25026e4 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -413,6 +413,10 @@ tests/scripts/check-generated-files.sh msg "test: doxygen markup outside doxygen blocks" # < 1s tests/scripts/check-doxy-blocks.pl +msg "test: check-files.py" # < 1s +cleanup +tests/scripts/check-files.py + msg "test/build: declared and exported names" # < 3s cleanup tests/scripts/check-names.sh From 2699de33703c06ac32ed860ffc705a40999085ce Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Mon, 21 May 2018 11:40:22 +0100 Subject: [PATCH 0281/1100] Add check-files.py to pre-push.sh --- tests/git-scripts/pre-push.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/git-scripts/pre-push.sh b/tests/git-scripts/pre-push.sh index ee54a6cffe..7407f44b97 100755 --- a/tests/git-scripts/pre-push.sh +++ b/tests/git-scripts/pre-push.sh @@ -45,3 +45,4 @@ run_test() run_test ./tests/scripts/check-doxy-blocks.pl run_test ./tests/scripts/check-names.sh run_test ./tests/scripts/check-generated-files.sh +run_test ./tests/scripts/check-files.py From 4d393b983539522511b6f6e9335d25e5c1d000d5 Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Mon, 21 May 2018 11:59:28 +0100 Subject: [PATCH 0282/1100] Add check-files.py to travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index fa01e5a24c..4d23652c67 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ script: - tests/scripts/check-generated-files.sh - tests/scripts/check-doxy-blocks.pl - tests/scripts/check-names.sh +- tests/scripts/check-files.py - tests/scripts/doxygen.sh - cmake -D CMAKE_BUILD_TYPE:String="Check" . - make From 9d410733c2ee607a569f5452e68806ebc17db541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 12:49:22 +0200 Subject: [PATCH 0283/1100] Fix typos from copy-pasting --- include/mbedtls/aria.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 0c4960b1b2..0cf06c4c7d 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -128,8 +128,8 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, * (encrypt or decrypt), on the input data buffer defined in * the \p input parameter. * - * mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or - * mbedtls_aes_setkey_dec() must be called before the first + * mbedtls_aria_init(), and either mbedtls_aria_setkey_enc() or + * mbedtls_aria_setkey_dec() must be called before the first * call to this API with the same context. * * \param ctx The ARIA context to use for encryption or decryption. @@ -155,8 +155,8 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, * the \p input parameter. * * It can be called as many times as needed, until all the input - * data is processed. mbedtls_aes_init(), and either - * mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called + * data is processed. mbedtls_aria_init(), and either + * mbedtls_aria_setkey_enc() or mbedtls_aria_setkey_dec() must be called * before the first call to this API with the same context. * * \note This function operates on aligned blocks, that is, the input size @@ -199,7 +199,7 @@ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, * parameter (encrypt or decrypt), on the input data buffer * defined in the \p input parameter. * - * For CFB, you must set up the context with mbedtls_aes_setkey_enc(), + * For CFB, you must set up the context with mbedtls_aria_setkey_enc(), * regardless of whether you are performing an encryption or decryption * operation, that is, regardless of the \p mode parameter. This is * because CFB mode uses the same key schedule for encryption and @@ -245,7 +245,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * * Due to the nature of CTR, you must use the same key schedule * for both encryption and decryption operations. Therefore, you - * must use the context initialized with mbedtls_aes_setkey_enc() + * must use the context initialized with mbedtls_aria_setkey_enc() * for both #MBEDTLS_ARIA_ENCRYPT and #MBEDTLS_ARIA_DECRYPT. * * \warning You must never reuse a nonce value with the same key. Doing so From d418b0dcbaf2a680905bdc3bf07bbe69dc3bf0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 12:56:11 +0200 Subject: [PATCH 0284/1100] Fix typo in comment --- library/aria.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/aria.c b/library/aria.c index fdc2137fe9..f5354a9d04 100644 --- a/library/aria.c +++ b/library/aria.c @@ -182,7 +182,7 @@ static inline uint32_t aria_p3( uint32_t x ) * ARIA Affine Transform * (a, b, c, d) = state in/out * - * If we denote the first by of input by 0, ..., the last byte by f, + * If we denote the first byte of input by 0, ..., the last byte by f, * then inputs are: a = 0123, b = 4567, c = 89ab, d = cdef. * * Reading [1] 2.4 or [2] 2.4.3 in columns and performing simple From 12e2fbdf293ca414e4ee45671d44dd7a2c7f35b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 13:01:09 +0200 Subject: [PATCH 0285/1100] Style adjustments --- library/aria.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/library/aria.c b/library/aria.c index f5354a9d04..fbdc0ec560 100644 --- a/library/aria.c +++ b/library/aria.c @@ -235,8 +235,8 @@ static inline void aria_a( uint32_t *a, uint32_t *b, */ static inline void aria_sl( uint32_t *a, uint32_t *b, uint32_t *c, uint32_t *d, - const uint8_t sa[0x100], const uint8_t sb[0x100], - const uint8_t sc[0x100], const uint8_t sd[0x100] ) + const uint8_t sa[256], const uint8_t sb[256], + const uint8_t sc[256], const uint8_t sd[256] ) { *a = ( (uint32_t) sa[ *a & 0xFF] ) ^ (((uint32_t) sb[(*a >> 8) & 0xFF]) << 8) ^ @@ -259,7 +259,7 @@ static inline void aria_sl( uint32_t *a, uint32_t *b, /* * S-Boxes */ -static const uint8_t aria_sb1[0x100] = +static const uint8_t aria_sb1[256] = { 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, @@ -285,7 +285,7 @@ static const uint8_t aria_sb1[0x100] = 0xB0, 0x54, 0xBB, 0x16 }; -static const uint8_t aria_sb2[0x100] = +static const uint8_t aria_sb2[256] = { 0xE2, 0x4E, 0x54, 0xFC, 0x94, 0xC2, 0x4A, 0xCC, 0x62, 0x0D, 0x6A, 0x46, 0x3C, 0x4D, 0x8B, 0xD1, 0x5E, 0xFA, 0x64, 0xCB, 0xB4, 0x97, 0xBE, 0x2B, @@ -311,7 +311,7 @@ static const uint8_t aria_sb2[0x100] = 0xAF, 0xBA, 0xB5, 0x81 }; -static const uint8_t aria_is1[0x100] = +static const uint8_t aria_is1[256] = { 0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB, 0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, @@ -337,7 +337,7 @@ static const uint8_t aria_is1[0x100] = 0x55, 0x21, 0x0C, 0x7D }; -static const uint8_t aria_is2[0x100] = +static const uint8_t aria_is2[256] = { 0x30, 0x68, 0x99, 0x1B, 0x87, 0xB9, 0x21, 0x78, 0x50, 0x39, 0xDB, 0xE1, 0x72, 0x09, 0x62, 0x3C, 0x3E, 0x7E, 0x5E, 0x8E, 0xF1, 0xA0, 0xCC, 0xA3, @@ -422,11 +422,11 @@ static void aria_rot128( uint32_t r[4], const uint32_t a[4], const uint8_t n1 = n % 32; // bit offset const uint8_t n2 = n1 ? 32 - n1 : 0; // reverse bit offset - j = (n / 32) % 4; // initial word offset + j = ( n / 32 ) % 4; // initial word offset t = ARIA_P3( b[j] ); // big endian for( i = 0; i < 4; i++ ) { - j = (j + 1) % 4; // get next word, big endian + j = ( j + 1 ) % 4; // get next word, big endian u = ARIA_P3( b[j] ); t <<= n1; // rotate t |= u >> n2; @@ -474,7 +474,7 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, GET_UINT32_LE( w[1][3], key, 28 ); } - i = (keybits - 128) >> 6; // index: 0, 1, 2 + i = ( keybits - 128 ) >> 6; // index: 0, 1, 2 ctx->nr = 12 + 2 * i; // no. rounds: 12, 14, 16 aria_fo_xor( w[1], w[0], rc[i], w[1] ); // W1 = FO(W0, CK1) ^ KR From 89924ddc7e861d8c86bc90b7a0fc049998863221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 13:07:07 +0200 Subject: [PATCH 0286/1100] Wipe sensitive info from the stack --- library/aria.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/aria.c b/library/aria.c index fbdc0ec560..498a13264b 100644 --- a/library/aria.c +++ b/library/aria.c @@ -493,6 +493,9 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, } aria_rot128( ctx->rk[16], w[0], w[1], 19 ); + /* w holds enough info to reconstruct the round keys */ + mbedtls_zeroize( w, sizeof( w ) ); + return( 0 ); } From 08c337d058bef5f66bc8c28c5fa8b9df7b80b3ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 13:18:01 +0200 Subject: [PATCH 0287/1100] Remove useless parameter from function --- include/mbedtls/aria.h | 9 +++------ library/aria.c | 19 +++++++------------ library/cipher_wrap.c | 6 ++++-- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 0cf06c4c7d..153c76a71b 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -124,24 +124,21 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, * \brief This function performs an ARIA single-block encryption or * decryption operation. * - * It performs the operation defined in the \p mode parameter - * (encrypt or decrypt), on the input data buffer defined in - * the \p input parameter. + * It performs encryption or decryption (depending on whether + * the key was set for encryption on decryption) on the input + * data buffer defined in the \p input parameter. * * mbedtls_aria_init(), and either mbedtls_aria_setkey_enc() or * mbedtls_aria_setkey_dec() must be called before the first * call to this API with the same context. * * \param ctx The ARIA context to use for encryption or decryption. - * \param mode The ARIA operation: #MBEDTLS_ARIA_ENCRYPT or - * #MBEDTLS_ARIA_DECRYPT. * \param input The 16-Byte buffer holding the input data. * \param output The 16-Byte buffer holding the output data. * \return \c 0 on success. */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, - int mode, const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] ); diff --git a/library/aria.c b/library/aria.c index 498a13264b..646978e89b 100644 --- a/library/aria.c +++ b/library/aria.c @@ -536,7 +536,6 @@ int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, * Encrypt a block */ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, - int mode, const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] ) { @@ -544,8 +543,6 @@ int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, uint32_t a, b, c, d; - ( (void) mode ); - GET_UINT32_LE( a, input, 0 ); GET_UINT32_LE( b, input, 4 ); GET_UINT32_LE( c, input, 8 ); @@ -626,7 +623,7 @@ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, while( length > 0 ) { memcpy( temp, input, MBEDTLS_ARIA_BLOCKSIZE ); - mbedtls_aria_crypt_ecb( ctx, mode, input, output ); + mbedtls_aria_crypt_ecb( ctx, input, output ); for( i = 0; i < MBEDTLS_ARIA_BLOCKSIZE; i++ ) output[i] = (unsigned char)( output[i] ^ iv[i] ); @@ -645,7 +642,7 @@ int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, for( i = 0; i < MBEDTLS_ARIA_BLOCKSIZE; i++ ) output[i] = (unsigned char)( input[i] ^ iv[i] ); - mbedtls_aria_crypt_ecb( ctx, mode, output, output ); + mbedtls_aria_crypt_ecb( ctx, output, output ); memcpy( iv, output, MBEDTLS_ARIA_BLOCKSIZE ); input += MBEDTLS_ARIA_BLOCKSIZE; @@ -678,7 +675,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, while( length-- ) { if( n == 0 ) - mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, iv, iv ); + mbedtls_aria_crypt_ecb( ctx, iv, iv ); c = *input++; *output++ = (unsigned char)( c ^ iv[n] ); @@ -692,7 +689,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, while( length-- ) { if( n == 0 ) - mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, iv, iv ); + mbedtls_aria_crypt_ecb( ctx, iv, iv ); iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ ); @@ -724,7 +721,7 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, while( length-- ) { if( n == 0 ) { - mbedtls_aria_crypt_ecb( ctx, MBEDTLS_ARIA_ENCRYPT, nonce_counter, + mbedtls_aria_crypt_ecb( ctx, nonce_counter, stream_block ); for( i = MBEDTLS_ARIA_BLOCKSIZE; i > 0; i-- ) @@ -916,8 +913,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); - mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, - aria_test1_ecb_pt, blk ); + mbedtls_aria_crypt_ecb( &ctx, aria_test1_ecb_pt, blk ); if( memcmp( blk, aria_test1_ecb_ct[i], MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) ARIA_SELF_TEST_IF_FAIL; @@ -925,8 +921,7 @@ int mbedtls_aria_self_test( int verbose ) if( verbose ) printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); - mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, - aria_test1_ecb_ct[i], blk ); + mbedtls_aria_crypt_ecb( &ctx, aria_test1_ecb_ct[i], blk ); if( memcmp( blk, aria_test1_ecb_pt, MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) ARIA_SELF_TEST_IF_FAIL; } diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index 47851e9c02..b1ab8f164b 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -831,7 +831,8 @@ static const mbedtls_cipher_info_t camellia_256_ccm_info = { static int aria_crypt_ecb_wrap( void *ctx, mbedtls_operation_t operation, const unsigned char *input, unsigned char *output ) { - return mbedtls_aria_crypt_ecb( (mbedtls_aria_context *) ctx, operation, input, + (void) operation; + return mbedtls_aria_crypt_ecb( (mbedtls_aria_context *) ctx, input, output ); } @@ -840,7 +841,8 @@ static int aria_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length, unsigned char *iv, const unsigned char *input, unsigned char *output ) { - return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, operation, length, iv, + (void) operation; + return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, length, iv, input, output ); } #endif /* MBEDTLS_CIPHER_MODE_CBC */ From 565e4e0fb2fd86469f4969469afaff16965d48f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 13:30:28 +0200 Subject: [PATCH 0288/1100] Use more appropriate type for local variable --- library/aria.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/aria.c b/library/aria.c index 646978e89b..ad15cebfa8 100644 --- a/library/aria.c +++ b/library/aria.c @@ -667,7 +667,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, const unsigned char *input, unsigned char *output ) { - int c; + unsigned char c; size_t n = *iv_off; if( mode == MBEDTLS_ARIA_DECRYPT ) @@ -678,8 +678,8 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, mbedtls_aria_crypt_ecb( ctx, iv, iv ); c = *input++; - *output++ = (unsigned char)( c ^ iv[n] ); - iv[n] = (unsigned char) c; + *output++ = c ^ iv[n]; + iv[n] = c; n = ( n + 1 ) & 0x0F; } From 2df4bfe80336ecaee77262eddd15b752a78b07cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 13:39:01 +0200 Subject: [PATCH 0289/1100] Fix typo in comments --- library/aria.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/aria.c b/library/aria.c index ad15cebfa8..25beafc098 100644 --- a/library/aria.c +++ b/library/aria.c @@ -115,7 +115,7 @@ static inline uint32_t aria_p1( uint32_t x ) #endif /* arm */ #if defined(__GNUC__) && \ defined(__i386__) || defined(__amd64__) || defined( __x86_64__) -/* I couldn't find an Intel equivalent of ret16, so two instructions */ +/* I couldn't find an Intel equivalent of rev16, so two instructions */ #define ARIA_P1(x) ARIA_P2( ARIA_P3( x ) ) #endif /* x86 gnuc */ #endif /* MBEDTLS_HAVE_ASM && GNUC */ From c0893122df60de5d2ecdb45fb14d318f353e1045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 15:17:20 +0200 Subject: [PATCH 0290/1100] Add ifdef for selftest in header file See https://github.com/ARMmbed/mbedtls/pull/975 --- include/mbedtls/aria.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 153c76a71b..ea68ae9ebc 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -298,12 +298,14 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, extern "C" { #endif +#if defined(MBEDTLS_SELF_TEST) /** * \brief Checkup routine. * * \return \c 0 on success, or \c 1 on failure. */ int mbedtls_aria_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ #ifdef __cplusplus } From 0960b80d53b6338dd9dd5e79f2c082c0ab83dcf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 15:22:07 +0200 Subject: [PATCH 0291/1100] Move to new header style for ALT implementations See https://github.com/ARMmbed/mbedtls-restricted/pull/357 --- include/mbedtls/aria.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index ea68ae9ebc..4bb1fc28a1 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -70,6 +70,10 @@ typedef struct } mbedtls_aria_context; +#else /* MBEDTLS_ARIA_ALT */ +#include "aria_alt.h" +#endif /* MBEDTLS_ARIA_ALT */ + /** * \brief This function initializes the specified ARIA context. * @@ -286,18 +290,6 @@ int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ -#ifdef __cplusplus -} -#endif - -#else /* MBEDTLS_ARIA_ALT */ -#include "aria_alt.h" -#endif /* MBEDTLS_ARIA_ALT */ - -#ifdef __cplusplus -extern "C" { -#endif - #if defined(MBEDTLS_SELF_TEST) /** * \brief Checkup routine. From 7124fb63be173bec1f73af56e5a14328f51780d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 22 May 2018 16:05:33 +0200 Subject: [PATCH 0292/1100] Use zeroize function from new platform_util --- library/aria.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/library/aria.c b/library/aria.c index 25beafc098..e9bcd6d135 100644 --- a/library/aria.c +++ b/library/aria.c @@ -48,16 +48,13 @@ #if !defined(MBEDTLS_ARIA_ALT) +#include "mbedtls/platform_util.h" + #if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ !defined(inline) && !defined(__cplusplus) #define inline __inline #endif -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = (unsigned char*)v; while( n-- ) *p++ = 0; -} - /* * 32-bit integer manipulation macros (little endian) */ @@ -494,7 +491,7 @@ int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, aria_rot128( ctx->rk[16], w[0], w[1], 19 ); /* w holds enough info to reconstruct the round keys */ - mbedtls_zeroize( w, sizeof( w ) ); + mbedtls_platform_zeroize( w, sizeof( w ) ); return( 0 ); } @@ -598,7 +595,7 @@ void mbedtls_aria_free( mbedtls_aria_context *ctx ) if( ctx == NULL ) return; - mbedtls_zeroize( ctx, sizeof( mbedtls_aria_context ) ); + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_aria_context ) ); } #if defined(MBEDTLS_CIPHER_MODE_CBC) From 7f3ef2780c1825fbc2270f49c6834502cc8c26e1 Mon Sep 17 00:00:00 2001 From: TabascoEye Date: Fri, 27 Apr 2018 13:14:59 +0200 Subject: [PATCH 0293/1100] silence "no symbols" warnings on apple clang fixes #1252 --- library/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 6177ca2b4c..cd1857c3da 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -96,6 +96,13 @@ if(WIN32) set(libs ${libs} ws2_32) endif(WIN32) +if(APPLE) + SET(CMAKE_C_ARCHIVE_CREATE " Scr ") + SET(CMAKE_CXX_ARCHIVE_CREATE " Scr ") + SET(CMAKE_C_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") + SET(CMAKE_CXX_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") +endif(APPLE) + if(USE_PKCS11_HELPER_LIBRARY) set(libs ${libs} pkcs11-helper) endif(USE_PKCS11_HELPER_LIBRARY) From 0e98e88a223214952e7e75e2a1a38a875fbc13ed Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 23 May 2018 09:19:54 +0100 Subject: [PATCH 0294/1100] Silence no symbols warn on apple & Makefile --- library/Makefile | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/library/Makefile b/library/Makefile index b155c720ea..60e9cbcc4a 100644 --- a/library/Makefile +++ b/library/Makefile @@ -35,16 +35,26 @@ SOEXT_TLS=so.10 SOEXT_X509=so.0 SOEXT_CRYPTO=so.2 -# Set DLEXT=dylib to compile as a shared library for Mac OS X DLEXT ?= so # Set AR_DASH= (empty string) to use an ar implentation that does not accept # the - prefix for command line options (e.g. llvm-ar) AR_DASH ?= - -# Windows shared library extension: +ifdef APPLE_BUILD +ARFLAGS = $(AR_DASH)Src +RLFLAGS = -no_warning_for_no_symbols -c +RL ?= ranlib +else +ARFLAGS = $(AR_DASH)src +endif + ifdef WINDOWS_BUILD -DLEXT=dll +# Windows shared library extension: +DLEXT = dll +else ifdef APPLE_BUILD +# Mac OS X shared library extension: +DLEXT = dylib endif OBJS_CRYPTO= aes.o aesni.o arc4.o \ @@ -95,9 +105,11 @@ shared: libmbedcrypto.$(DLEXT) libmbedx509.$(DLEXT) libmbedtls.$(DLEXT) # tls libmbedtls.a: $(OBJS_TLS) echo " AR $@" - $(AR) $(AR_DASH)rc $@ $(OBJS_TLS) + $(AR) $(ARFLAGS) $@ $(OBJS_TLS) +ifdef APPLE_BUILD echo " RL $@" - $(AR) $(AR_DASH)s $@ + $(RL) $(RLFLAGS) $@ +endif libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so echo " LD $@" @@ -118,9 +130,11 @@ libmbedtls.dll: $(OBJS_TLS) libmbedx509.dll # x509 libmbedx509.a: $(OBJS_X509) echo " AR $@" - $(AR) $(AR_DASH)rc $@ $(OBJS_X509) + $(AR) $(ARFLAGS) $@ $(OBJS_X509) +ifdef APPLE_BUILD echo " RL $@" - $(AR) $(AR_DASH)s $@ + $(RL) $(RLFLAGS) $@ +endif libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so echo " LD $@" @@ -141,9 +155,11 @@ libmbedx509.dll: $(OBJS_X509) libmbedcrypto.dll # crypto libmbedcrypto.a: $(OBJS_CRYPTO) echo " AR $@" - $(AR) $(AR_DASH)rc $@ $(OBJS_CRYPTO) + $(AR) $(ARFLAGS) $@ $(OBJS_CRYPTO) +ifdef APPLE_BUILD echo " RL $@" - $(AR) $(AR_DASH)s $@ + $(RL) $(RLFLAGS) $@ +endif libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO) echo " LD $@" From 8c754218c5d97aa55ee534063767279a2354732c Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 23 May 2018 09:26:08 +0100 Subject: [PATCH 0295/1100] Add no symbols warning fix to ChangeLog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 348864c0e9..d86f1e8c3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ API Changes Therefore, mbedtls_platform_zeroize() is moved to the platform module to facilitate testing and maintenance. +Bugfix + * Fix "no symbols" warning issued by ranlib when building on Mac OS X. Fix + contributed by tabascoeye in pull request #1600. + = mbed TLS 2.9.0 branch released 2018-04-30 Security From 8a1b2c88060d05865794047958a44f34645b9f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 23 May 2018 13:26:22 +0200 Subject: [PATCH 0296/1100] Update CTR documentation --- include/mbedtls/aria.h | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 4bb1fc28a1..8e59ffc045 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -255,19 +255,44 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * * There are two common strategies for managing nonces with CTR: * - * 1. Use a counter starting at 0 or a random value. With this - * strategy, this function will increment the counter for you, so - * you only need to preserve the \p nonce_counter buffer between - * calls. With this strategy, you must not encrypt more than - * 2**128 blocks of data. - * 2. Use a randomly-generated \p nonce_counter for each call. - * With this strategy, you need to ensure the nonce is generated - * in an unbiased way and you must not encrypt more than 2**64 + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**128 * blocks of data. * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * * Note that for both stategies, the limit is in number of blocks * and that an ARIA block is 16 bytes. * + * \warning Upon return, \p stream_block constains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * * \param ctx The ARIA context to use for encryption or decryption. * \param length The length of the input data. * \param nc_off The offset in the current \p stream_block, for From a64fba41fb034e908b1b59700499b2265b0ddb29 Mon Sep 17 00:00:00 2001 From: Moran Peker Date: Sun, 25 Feb 2018 13:29:03 +0200 Subject: [PATCH 0297/1100] Remove double declaration of mbedtls_ssl_list_ciphersuites Raised by TrinityTonic. #1359 --- ChangeLog | 4 ++++ include/mbedtls/ssl.h | 8 -------- 2 files changed, 4 insertions(+), 8 deletions(-) mode change 100644 => 100755 include/mbedtls/ssl.h diff --git a/ChangeLog b/ChangeLog index 348864c0e9..5d697049b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ API Changes Therefore, mbedtls_platform_zeroize() is moved to the platform module to facilitate testing and maintenance. +Bugfix + * Fix redundant declaration of mbedtls_ssl_list_ciphersuites. Raised by + TrinityTonic. #1359. + = mbed TLS 2.9.0 branch released 2018-04-30 Security diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h old mode 100644 new mode 100755 index f91066d570..250031a6d3 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -946,14 +946,6 @@ extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl); extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl); #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ -/** - * \brief Returns the list of ciphersuites supported by the SSL/TLS module. - * - * \return a statically allocated array of ciphersuites, the last - * entry is 0. - */ -const int *mbedtls_ssl_list_ciphersuites( void ); - /** * \brief Return the name of the ciphersuite associated with the * given ID From e95092d8eb26578348884976483d607453a1c233 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 24 May 2018 10:15:13 +0300 Subject: [PATCH 0298/1100] Change the value of fno-sanitize-recover Change the value of `-fno-sanitize-recover` from `undefined,integer` to `all` --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5f4bacb8a..5bc352523a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,8 +84,8 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS_RELEASE "-O2") set(CMAKE_C_FLAGS_DEBUG "-O0 -g3") set(CMAKE_C_FLAGS_COVERAGE "-O0 -g3 --coverage") - set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O3") - set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=undefined,integer -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") + set(CMAKE_C_FLAGS_ASAN "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O3") + set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") set(CMAKE_C_FLAGS_MEMSAN "-Werror -fsanitize=memory -O3") set(CMAKE_C_FLAGS_MEMSANDBG "-Werror -fsanitize=memory -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2") set(CMAKE_C_FLAGS_CHECK "-Werror -Os") From f5842864d8f26664a65e45a1383ed3dbe509278a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 11:51:58 +0200 Subject: [PATCH 0299/1100] Slightly tune ARIA CTR documentation --- include/mbedtls/aria.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 8e59ffc045..04f9240ead 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -263,7 +263,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * updated by this function. * * With this strategy, you must not encrypt more than 2**128 - * blocks of data. + * blocks of data with the same key. * * 2. You can encrypt separate messages by dividing the \p * nonce_counter buffer in two areas: the first one used for a @@ -276,7 +276,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * set the first 12 bytes of \p nonce_counter to your chosen nonce * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p * stream_block to be ignored). That way, you can encrypt at most - * 2**96 messages of up to 2**32 blocks each. + * 2**96 messages of up to 2**32 blocks each with the same key. * * The per-message nonce (or information sufficient to reconstruct * it) needs to be communicated with the ciphertext and must be unique. @@ -286,8 +286,8 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * for example, with 96-bit random nonces, you should not encrypt * more than 2**32 messages with the same key. * - * Note that for both stategies, the limit is in number of blocks - * and that an ARIA block is 16 bytes. + * Note that for both stategies, sizes are measured in blocks and + * that an ARIA block is 16 bytes. * * \warning Upon return, \p stream_block constains sensitive data. Its * content must not be written to insecure storage and should be From 4f24e9502e3de9ebd749482935bc58b9087e197a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 11:59:30 +0200 Subject: [PATCH 0300/1100] Update CTR doc for other 128-bit block ciphers --- include/mbedtls/aes.h | 43 ++++++++++++++++++++++++++++---------- include/mbedtls/camellia.h | 43 ++++++++++++++++++++++++++++---------- 2 files changed, 64 insertions(+), 22 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 4c0429d450..731e5685ba 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -315,18 +315,39 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * * There are two common strategies for managing nonces with CTR: * - * 1. Use a counter starting at 0 or a random value. With this - * strategy, this function will increment the counter for you, so - * you only need to preserve the \p nonce_counter buffer between - * calls. With this strategy, you must not encrypt more than - * 2**128 blocks of data. - * 2. Use a randomly-generated \p nonce_counter for each call. - * With this strategy, you need to ensure the nonce is generated - * in an unbiased way and you must not encrypt more than 2**64 - * blocks of data. + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. * - * Note that for both stategies, the limit is in number of blocks - * and that an AES block is 16 bytes. + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that an AES block is 16 bytes. * * \param ctx The AES context to use for encryption or decryption. * \param length The length of the input data. diff --git a/include/mbedtls/camellia.h b/include/mbedtls/camellia.h index 2eb945d5f7..1d3610fea7 100644 --- a/include/mbedtls/camellia.h +++ b/include/mbedtls/camellia.h @@ -197,18 +197,39 @@ int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, * * There are two common strategies for managing nonces with CTR: * - * 1. Use a counter starting at 0 or a random value. With this - * strategy, this function will increment the counter for you, so - * you only need to preserve the \p nonce_counter buffer between - * calls. With this strategy, you must not encrypt more than - * 2**128 blocks of data. - * 2. Use a randomly-generated \p nonce_counter for each call. - * With this strategy, you need to ensure the nonce is generated - * in an unbiased way and you must not encrypt more than 2**64 - * blocks of data. + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. * - * Note that for both stategies, the limit is in number of blocks - * and that a CAMELLIA block is 16 bytes. + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that a CAMELLIA block is 16 bytes. * * \param ctx CAMELLIA context * \param length The length of the data From d0f143b1c9be651c08a9b16bc8f21aeeb589eca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 12:01:58 +0200 Subject: [PATCH 0301/1100] Update CTR doc for the 64-bit block cipher - constants need adjustment - don't mention "random nonces" as the space is too small --- include/mbedtls/blowfish.h | 40 +++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/blowfish.h b/include/mbedtls/blowfish.h index 0318db6979..fb16782aa8 100644 --- a/include/mbedtls/blowfish.h +++ b/include/mbedtls/blowfish.h @@ -180,18 +180,36 @@ int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, * * There are two common strategies for managing nonces with CTR: * - * 1. Use a counter starting at 0 or a random value. With this - * strategy, this function will increment the counter for you, so - * you only need to preserve the \p nonce_counter buffer between - * calls. With this strategy, you must not encrypt more than - * 2**64 blocks of data. - * 2. Use a randomly-generated \p nonce_counter for each call. - * With this strategy, you need to ensure the nonce is generated - * in an unbiased way and you must not encrypt more than 2**32 - * blocks of data. + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. * - * Note that for both stategies, the limit is in number of blocks - * and that a Blowfish block is 8 bytes. + * With this strategy, you must not encrypt more than 2**64 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 4 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 4 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**32 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. + * + * Note that for both stategies, sizes are measured in blocks and + * that a Blowfish block is 8 bytes. * * \param ctx Blowfish context * \param length The length of the data From 34b822ce7b1f8765356c189d5a926970af090686 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Sun, 15 May 2016 17:28:08 -0300 Subject: [PATCH 0302/1100] Initial implementation of ChaCha20 --- include/mbedtls/chacha20.h | 169 +++++++ include/mbedtls/config.h | 10 + include/mbedtls/error.h | 1 + library/CMakeLists.txt | 1 + library/Makefile | 3 +- library/chacha20.c | 551 ++++++++++++++++++++++ library/error.c | 9 + library/version_features.c | 6 + programs/test/benchmark.c | 14 +- scripts/generate_errors.pl | 2 +- tests/CMakeLists.txt | 1 + tests/Makefile | 6 +- tests/suites/test_suite_chacha20.data | 2 + tests/suites/test_suite_chacha20.function | 14 + 14 files changed, 784 insertions(+), 5 deletions(-) create mode 100644 include/mbedtls/chacha20.h create mode 100644 library/chacha20.c create mode 100644 tests/suites/test_suite_chacha20.data create mode 100644 tests/suites/test_suite_chacha20.function diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h new file mode 100644 index 0000000000..ab10a96a81 --- /dev/null +++ b/include/mbedtls/chacha20.h @@ -0,0 +1,169 @@ +/** + * \file chacha20.h + * + * \brief ChaCha20 cipher. + * + * \author Daniel King + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CHACHA20_H +#define MBEDTLS_CHACHA20_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if !defined(MBEDTLS_CHACHA20_ALT) + +#include +#include + +#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x003B /**< Invalid input parameter(s). */ + +typedef struct +{ + uint32_t initial_state[16]; /*! Holds the initial state (before round operations) */ + uint32_t working_state[16]; /*! Holds the working state (after round operations) */ + uint8_t keystream8[64]; /*! Holds leftover keystream bytes */ + size_t keystream_bytes_used; /*! Number of keystream bytes currently used */ +} +mbedtls_chacha20_context; + +/** + * \brief Initialize ChaCha20 context + * + * \param ctx ChaCha20 context to be initialized + */ +void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ); + +/** + * \brief Clear ChaCha20 context + * + * \param ctx ChaCha20 context to be cleared + */ +void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ); + +/** + * \brief Set the ChaCha20 key. + * + * \note The nonce and counter must be set after calling this function, + * before data can be encrypted/decrypted. The nonce and + * counter are set by calling mbedtls_chacha20_starts. + * + * \see mbedtls_chacha20_starts + * + * \param ctx The context to setup. + * \param key Buffer containing the 256-bit key. Must be 32 bytes in length. + * + * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA is returned if ctx or key + * is NULL, or if key_bits is not 128 or 256. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, + const unsigned char key[32] ); + +/** + * \brief Set the ChaCha20 nonce and initial counter value. + * + * \note A ChaCha20 context can be re-used with the same key by + * calling this function to change the nonce and/or initial + * counter value. + * + * \param ctx The ChaCha20 context. + * \param nonce Buffer containing the 96-bit nonce. Must be 12 bytes in size. + * \param counter Initial counter value to use. This is usually 0. + * + * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA is returned if ctx or + * nonce is NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, + const unsigned char nonce[12], + uint32_t counter ); + +/** + * \brief Encrypt or decrypt data. + * + * This function is used to both encrypt and decrypt data. + * + * \note The \p input and \p output buffers may overlap, but only + * if input >= output (i.e. only if input points ahead of + * the output pointer). + * + * \note mbedtls_chacha20_setkey and mbedtls_chacha20_starts must be + * called at least once to setup the context before this function + * can be called. + * + * \param ctx The ChaCha20 context. + * \param size The length (in bytes) to process. This can have any length. + * \param input Buffer containing the input data. + * \param output Buffer containing the output data. + * + * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if the ctx, input, or + * output pointers are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chacha20_process( mbedtls_chacha20_context *ctx, + size_t size, + const unsigned char *input, + unsigned char *output ); + +#else /* MBEDTLS_CHACHA20_ALT */ +#include "chacha20_alt.h" +#endif /* MBEDTLS_CHACHA20_ALT */ + +/** + * \brief Encrypt or decrypt a message using ChaCha20. + * + * This function is used the same way for encrypting and + * decrypting data. It's not necessary to specify which + * operation is being performed. + * + * \note The \p input and \p output buffers may overlap, but only + * if input >= output (i.e. only if input points ahead of + * the output pointer). + * + * \param key Buffer containing the 256-bit key. Must be 32 bytes in length. + * \param nonce Buffer containing the 96-bit nonce. Must be 12 bytes in length. + * \param counter The initial counter value. This is usually 0. + * \param data_len The number of bytes to process. + * \param input Buffer containing the input data (data to encrypt or decrypt). + * \param output Buffer to where the processed data is written. + * + * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if key, nonce, input, + * or output is NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chacha20_crypt( const unsigned char key[32], + const unsigned char nonce[12], + uint32_t counter, + size_t data_len, + const unsigned char* input, + unsigned char* output ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_chacha20_self_test( int verbose ); + +#endif /* MBEDTLS_CHACHA20_H */ diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 7c9acb2309..4c8fc3c367 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -274,6 +274,7 @@ //#define MBEDTLS_BLOWFISH_ALT //#define MBEDTLS_CAMELLIA_ALT //#define MBEDTLS_CCM_ALT +//#define MBEDTLS_CHACHA20_ALT //#define MBEDTLS_CMAC_ALT //#define MBEDTLS_DES_ALT //#define MBEDTLS_DHM_ALT @@ -1861,6 +1862,15 @@ */ #define MBEDTLS_CERTS_C +/** + * \def MBEDTLS_CHACHA20_C + * + * Enable the ChaCha20 stream cipher. + * + * Module: library/chacha20.c + */ +#define MBEDTLS_CHACHA20_C + /** * \def MBEDTLS_CIPHER_C * diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 8b4d3a8755..ace0c47a62 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -76,6 +76,7 @@ * SHA1 1 0x0035-0x0035 * SHA256 1 0x0037-0x0037 * SHA512 1 0x0039-0x0039 + * CHACHA20 1 0x003B-0x003B * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 6177ca2b4c..78bab7fc72 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -13,6 +13,7 @@ set(src_crypto blowfish.c camellia.c ccm.c + chacha20.c cipher.c cipher_wrap.c cmac.c diff --git a/library/Makefile b/library/Makefile index b155c720ea..4fab598467 100644 --- a/library/Makefile +++ b/library/Makefile @@ -50,7 +50,8 @@ endif OBJS_CRYPTO= aes.o aesni.o arc4.o \ asn1parse.o asn1write.o base64.o \ bignum.o blowfish.o camellia.o \ - ccm.o cipher.o cipher_wrap.o \ + ccm.o chacha20.o \ + cipher.o cipher_wrap.o \ cmac.o ctr_drbg.o des.o \ dhm.o ecdh.o ecdsa.o \ ecjpake.o ecp.o \ diff --git a/library/chacha20.c b/library/chacha20.c new file mode 100644 index 0000000000..75fd9e9151 --- /dev/null +++ b/library/chacha20.c @@ -0,0 +1,551 @@ +/** + * \file chacha20.c + * + * \brief ChaCha20 cipher. + * + * \author Daniel King + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#include "mbedtls/chacha20.h" + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_CHACHA20_C) + +#if !defined(MBEDTLS_CHACHA20_ALT) + +#include +#include + +#if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST */ + +#define BYTES_TO_U32_LE( data, offset ) \ + ( (uint32_t)data[offset] | \ + (uint32_t)( (uint32_t)data[(offset) + 1] << 8 ) | \ + (uint32_t)( (uint32_t)data[(offset) + 2] << 16 ) | \ + (uint32_t)( (uint32_t)data[(offset) + 3] << 24 ) \ + ) + +#define ROTL32( value, amount ) ( (uint32_t)( value << amount ) | ( value >> ( 32 - amount ) ) ) + +#define CHACHA20_CTR_INDEX ( 12U ) + +#define CHACHA20_BLOCK_SIZE_BYTES ( 4U * 16U ) + +/* Implementation that should never be optimized out by the compiler */ +static void mbedtls_zeroize( void *v, size_t n ) { + volatile unsigned char *p = v; while( n-- ) *p++ = 0; +} + +/** + * \brief ChaCha20 quarter round operation. + * + * The quarter round is defined as follows (from RFC 7539): + * 1. a += b; d ^= a; d <<<= 16; + * 2. c += d; b ^= c; b <<<= 12; + * 3. a += b; d ^= a; d <<<= 8; + * 4. c += d; b ^= c; b <<<= 7; + * + * \param state ChaCha20 state to modify. + * \param a The index of 'a' in the state. + * \param b The index of 'b' in the state. + * \param c The index of 'c' in the state. + * \param d The index of 'd' in the state. + */ +static inline void mbedtls_chacha20_quarter_round( uint32_t state[16], + size_t a, + size_t b, + size_t c, + size_t d ) +{ + /* a += b; d ^= a; d <<<= 16; */ + state[a] += state[b]; + state[d] ^= state[a]; + state[d] = ROTL32( state[d], 16 ); + + /* c += d; b ^= c; b <<<= 12 */ + state[c] += state[d]; + state[b] ^= state[c]; + state[b] = ROTL32( state[b], 12 ); + + /* a += b; d ^= a; d <<<= 8; */ + state[a] += state[b]; + state[d] ^= state[a]; + state[d] = ROTL32( state[d], 8 ); + + /* c += d; b ^= c; b <<<= 7; */ + state[c] += state[d]; + state[b] ^= state[c]; + state[b] = ROTL32( state[b], 7 ); +} + +/** + * \brief Perform the ChaCha20 inner block operation. + * + * This function performs two rounds: the column round and the + * diagonal round. + * + * \param state The ChaCha20 state to update. + */ +static void mbedtls_chacha20_inner_block( uint32_t state[16] ) +{ + mbedtls_chacha20_quarter_round( state, 0, 4, 8, 12 ); + mbedtls_chacha20_quarter_round( state, 1, 5, 9, 13 ); + mbedtls_chacha20_quarter_round( state, 2, 6, 10, 14 ); + mbedtls_chacha20_quarter_round( state, 3, 7, 11, 15 ); + + mbedtls_chacha20_quarter_round( state, 0, 5, 10, 15 ); + mbedtls_chacha20_quarter_round( state, 1, 6, 11, 12 ); + mbedtls_chacha20_quarter_round( state, 2, 7, 8, 13 ); + mbedtls_chacha20_quarter_round( state, 3, 4, 9, 14 ); +} + +/** + * \brief Generates a keystream block. + * + * \param initial_state The initial ChaCha20 state (containing the key, nonce, counter). + * \param working_state This state is used as a temporary working area. + * \param keystream Generated keystream bytes are written to this buffer. + */ +static void mbedtls_chacha20_block( mbedtls_chacha20_context *ctx, + unsigned char keystream[64] ) +{ + size_t i; + size_t offset; + + memcpy( ctx->working_state, + ctx->initial_state, + sizeof(ctx->initial_state) ); + + for ( i = 0U; i < 10U; i++ ) + { + mbedtls_chacha20_inner_block( ctx->working_state ); + } + + ctx->working_state[0] += ctx->initial_state[0]; + ctx->working_state[1] += ctx->initial_state[1]; + ctx->working_state[2] += ctx->initial_state[2]; + ctx->working_state[3] += ctx->initial_state[3]; + ctx->working_state[4] += ctx->initial_state[4]; + ctx->working_state[5] += ctx->initial_state[5]; + ctx->working_state[6] += ctx->initial_state[6]; + ctx->working_state[7] += ctx->initial_state[7]; + ctx->working_state[8] += ctx->initial_state[8]; + ctx->working_state[9] += ctx->initial_state[9]; + ctx->working_state[10] += ctx->initial_state[10]; + ctx->working_state[11] += ctx->initial_state[11]; + ctx->working_state[12] += ctx->initial_state[12]; + ctx->working_state[13] += ctx->initial_state[13]; + ctx->working_state[14] += ctx->initial_state[14]; + ctx->working_state[15] += ctx->initial_state[15]; + + for ( i = 0U; i < 16; i++ ) + { + offset = i * 4U; + + keystream[offset ] = (unsigned char) ctx->working_state[i]; + keystream[offset + 1U] = (unsigned char)( ctx->working_state[i] >> 8 ); + keystream[offset + 2U] = (unsigned char)( ctx->working_state[i] >> 16 ); + keystream[offset + 3U] = (unsigned char)( ctx->working_state[i] >> 24 ); + } +} + +void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_zeroize( ctx->initial_state, sizeof( ctx->initial_state ) ); + mbedtls_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); + mbedtls_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); + + /* Initially, there's no keystream bytes available */ + ctx->keystream_bytes_used = CHACHA20_BLOCK_SIZE_BYTES; + } +} + +void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_zeroize( ctx, sizeof( mbedtls_chacha20_context ) ); + } +} + +int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, + const unsigned char key[32] ) +{ + if ( ( ctx == NULL ) || ( key == NULL ) ) + { + return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + } + + /* ChaCha20 constants - the string "expand 32-byte k" */ + ctx->initial_state[0] = 0x61707865; + ctx->initial_state[1] = 0x3320646e; + ctx->initial_state[2] = 0x79622d32; + ctx->initial_state[3] = 0x6b206574; + + /* Set key */ + ctx->initial_state[4] = BYTES_TO_U32_LE( key, 0 ); + ctx->initial_state[5] = BYTES_TO_U32_LE( key, 4 ); + ctx->initial_state[6] = BYTES_TO_U32_LE( key, 8 ); + ctx->initial_state[7] = BYTES_TO_U32_LE( key, 12 ); + ctx->initial_state[8] = BYTES_TO_U32_LE( key, 16 ); + ctx->initial_state[9] = BYTES_TO_U32_LE( key, 20 ); + ctx->initial_state[10] = BYTES_TO_U32_LE( key, 24 ); + ctx->initial_state[11] = BYTES_TO_U32_LE( key, 28 ); + + return( 0 ); +} + +int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, + const unsigned char nonce[12], + uint32_t counter ) +{ + if ( ( ctx == NULL ) || ( nonce == NULL ) ) + { + return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + } + + /* Counter */ + ctx->initial_state[12] = counter; + + /* Nonce */ + ctx->initial_state[13] = BYTES_TO_U32_LE( nonce, 0 ); + ctx->initial_state[14] = BYTES_TO_U32_LE( nonce, 4 ); + ctx->initial_state[15] = BYTES_TO_U32_LE( nonce, 8 ); + + return( 0 ); +} + +int mbedtls_chacha20_process( mbedtls_chacha20_context *ctx, + size_t size, + const unsigned char *input, + unsigned char *output ) +{ + size_t offset = 0U; + size_t i; + + if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) ) + { + return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + } + + /* Use leftover keystream bytes, if available */ + while ( ( size > 0U ) && ( ctx->keystream_bytes_used < CHACHA20_BLOCK_SIZE_BYTES ) ) + { + output[offset] = input[offset] ^ ctx->keystream8[ctx->keystream_bytes_used]; + + ctx->keystream_bytes_used++; + offset++; + size--; + } + + /* Process full blocks */ + while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) + { + mbedtls_chacha20_block( ctx, &output[offset] ); + + for ( i = 0U; i < 64U; i += 8U ) + { + output[offset + i ] ^= input[offset + i ]; + output[offset + i + 1U] ^= input[offset + i + 1U]; + output[offset + i + 2U] ^= input[offset + i + 2U]; + output[offset + i + 3U] ^= input[offset + i + 3U]; + output[offset + i + 4U] ^= input[offset + i + 4U]; + output[offset + i + 5U] ^= input[offset + i + 5U]; + output[offset + i + 6U] ^= input[offset + i + 6U]; + output[offset + i + 7U] ^= input[offset + i + 7U]; + } + + /* Increment counter */ + ctx->initial_state[CHACHA20_CTR_INDEX]++; + + offset += 64U; + size -= 64U; + } + + /* Last (partial) block */ + if ( size > 0U ) + { + mbedtls_chacha20_block( ctx, ctx->keystream8 ); + + for ( i = 0U; i < size; i++) + { + output[offset + i] = input[offset + i] ^ ctx->keystream8[i]; + } + + ctx->keystream_bytes_used = size; + + /* Increment counter */ + ctx->initial_state[CHACHA20_CTR_INDEX]++; + } + + return 0; +} + +#endif /* !MBEDTLS_CHACHA20_ALT */ + +int mbedtls_chacha20_crypt( const unsigned char key[32], + const unsigned char nonce[12], + uint32_t counter, + size_t data_len, + const unsigned char* input, + unsigned char* output ) +{ + mbedtls_chacha20_context ctx; + int result; + + mbedtls_chacha20_init( &ctx ); + + result = mbedtls_chacha20_setkey( &ctx, key ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_chacha20_starts( &ctx, nonce, counter ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_chacha20_process( &ctx, data_len, input, output ); + +cleanup: + mbedtls_chacha20_free( &ctx ); + return result; +} + +#if defined(MBEDTLS_SELF_TEST) + +static const unsigned char test_keys[2][32] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 + } +}; + +static const unsigned char test_nonces[2][12] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02 + } +}; + +static const uint32_t test_counters[2] = +{ + 0U, + 1U +}; + +static const unsigned char test_input[2][375] = +{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x41, 0x6e, 0x79, 0x20, 0x73, 0x75, 0x62, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x45, + 0x54, 0x46, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x72, + 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x61, 0x6e, 0x20, 0x49, 0x45, 0x54, 0x46, + 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x2d, 0x44, 0x72, 0x61, 0x66, 0x74, 0x20, + 0x6f, 0x72, 0x20, 0x52, 0x46, 0x43, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x49, + 0x45, 0x54, 0x46, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, + 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x64, 0x65, 0x72, + 0x65, 0x64, 0x20, 0x61, 0x6e, 0x20, 0x22, 0x49, + 0x45, 0x54, 0x46, 0x20, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x2e, 0x20, 0x53, 0x75, 0x63, 0x68, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x20, 0x6f, 0x72, 0x61, 0x6c, 0x20, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x45, + 0x54, 0x46, 0x20, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x73, 0x20, + 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x72, 0x6f, 0x6e, 0x69, 0x63, 0x20, 0x63, + 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x61, + 0x64, 0x65, 0x20, 0x61, 0x74, 0x20, 0x61, 0x6e, + 0x79, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x6f, + 0x72, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x2c, + 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f + } +}; + +static const unsigned char test_output[2][375] = +{ + { + 0x76, 0xb8, 0xe0, 0xad, 0xa0, 0xf1, 0x3d, 0x90, + 0x40, 0x5d, 0x6a, 0xe5, 0x53, 0x86, 0xbd, 0x28, + 0xbd, 0xd2, 0x19, 0xb8, 0xa0, 0x8d, 0xed, 0x1a, + 0xa8, 0x36, 0xef, 0xcc, 0x8b, 0x77, 0x0d, 0xc7, + 0xda, 0x41, 0x59, 0x7c, 0x51, 0x57, 0x48, 0x8d, + 0x77, 0x24, 0xe0, 0x3f, 0xb8, 0xd8, 0x4a, 0x37, + 0x6a, 0x43, 0xb8, 0xf4, 0x15, 0x18, 0xa1, 0x1c, + 0xc3, 0x87, 0xb6, 0x69, 0xb2, 0xee, 0x65, 0x86 + }, + { + 0xa3, 0xfb, 0xf0, 0x7d, 0xf3, 0xfa, 0x2f, 0xde, + 0x4f, 0x37, 0x6c, 0xa2, 0x3e, 0x82, 0x73, 0x70, + 0x41, 0x60, 0x5d, 0x9f, 0x4f, 0x4f, 0x57, 0xbd, + 0x8c, 0xff, 0x2c, 0x1d, 0x4b, 0x79, 0x55, 0xec, + 0x2a, 0x97, 0x94, 0x8b, 0xd3, 0x72, 0x29, 0x15, + 0xc8, 0xf3, 0xd3, 0x37, 0xf7, 0xd3, 0x70, 0x05, + 0x0e, 0x9e, 0x96, 0xd6, 0x47, 0xb7, 0xc3, 0x9f, + 0x56, 0xe0, 0x31, 0xca, 0x5e, 0xb6, 0x25, 0x0d, + 0x40, 0x42, 0xe0, 0x27, 0x85, 0xec, 0xec, 0xfa, + 0x4b, 0x4b, 0xb5, 0xe8, 0xea, 0xd0, 0x44, 0x0e, + 0x20, 0xb6, 0xe8, 0xdb, 0x09, 0xd8, 0x81, 0xa7, + 0xc6, 0x13, 0x2f, 0x42, 0x0e, 0x52, 0x79, 0x50, + 0x42, 0xbd, 0xfa, 0x77, 0x73, 0xd8, 0xa9, 0x05, + 0x14, 0x47, 0xb3, 0x29, 0x1c, 0xe1, 0x41, 0x1c, + 0x68, 0x04, 0x65, 0x55, 0x2a, 0xa6, 0xc4, 0x05, + 0xb7, 0x76, 0x4d, 0x5e, 0x87, 0xbe, 0xa8, 0x5a, + 0xd0, 0x0f, 0x84, 0x49, 0xed, 0x8f, 0x72, 0xd0, + 0xd6, 0x62, 0xab, 0x05, 0x26, 0x91, 0xca, 0x66, + 0x42, 0x4b, 0xc8, 0x6d, 0x2d, 0xf8, 0x0e, 0xa4, + 0x1f, 0x43, 0xab, 0xf9, 0x37, 0xd3, 0x25, 0x9d, + 0xc4, 0xb2, 0xd0, 0xdf, 0xb4, 0x8a, 0x6c, 0x91, + 0x39, 0xdd, 0xd7, 0xf7, 0x69, 0x66, 0xe9, 0x28, + 0xe6, 0x35, 0x55, 0x3b, 0xa7, 0x6c, 0x5c, 0x87, + 0x9d, 0x7b, 0x35, 0xd4, 0x9e, 0xb2, 0xe6, 0x2b, + 0x08, 0x71, 0xcd, 0xac, 0x63, 0x89, 0x39, 0xe2, + 0x5e, 0x8a, 0x1e, 0x0e, 0xf9, 0xd5, 0x28, 0x0f, + 0xa8, 0xca, 0x32, 0x8b, 0x35, 0x1c, 0x3c, 0x76, + 0x59, 0x89, 0xcb, 0xcf, 0x3d, 0xaa, 0x8b, 0x6c, + 0xcc, 0x3a, 0xaf, 0x9f, 0x39, 0x79, 0xc9, 0x2b, + 0x37, 0x20, 0xfc, 0x88, 0xdc, 0x95, 0xed, 0x84, + 0xa1, 0xbe, 0x05, 0x9c, 0x64, 0x99, 0xb9, 0xfd, + 0xa2, 0x36, 0xe7, 0xe8, 0x18, 0xb0, 0x4b, 0x0b, + 0xc3, 0x9c, 0x1e, 0x87, 0x6b, 0x19, 0x3b, 0xfe, + 0x55, 0x69, 0x75, 0x3f, 0x88, 0x12, 0x8c, 0xc0, + 0x8a, 0xaa, 0x9b, 0x63, 0xd1, 0xa1, 0x6f, 0x80, + 0xef, 0x25, 0x54, 0xd7, 0x18, 0x9c, 0x41, 0x1f, + 0x58, 0x69, 0xca, 0x52, 0xc5, 0xb8, 0x3f, 0xa3, + 0x6f, 0xf2, 0x16, 0xb9, 0xc1, 0xd3, 0x00, 0x62, + 0xbe, 0xbc, 0xfd, 0x2d, 0xc5, 0xbc, 0xe0, 0x91, + 0x19, 0x34, 0xfd, 0xa7, 0x9a, 0x86, 0xf6, 0xe6, + 0x98, 0xce, 0xd7, 0x59, 0xc3, 0xff, 0x9b, 0x64, + 0x77, 0x33, 0x8f, 0x3d, 0xa4, 0xf9, 0xcd, 0x85, + 0x14, 0xea, 0x99, 0x82, 0xcc, 0xaf, 0xb3, 0x41, + 0xb2, 0x38, 0x4d, 0xd9, 0x02, 0xf3, 0xd1, 0xab, + 0x7a, 0xc6, 0x1d, 0xd2, 0x9c, 0x6f, 0x21, 0xba, + 0x5b, 0x86, 0x2f, 0x37, 0x30, 0xe3, 0x7c, 0xfd, + 0xc4, 0xfd, 0x80, 0x6c, 0x22, 0xf2, 0x21 + } +}; + +static const size_t test_lengths[2] = +{ + 64U, + 375U +}; + +int mbedtls_chacha20_self_test( int verbose ) +{ + unsigned char output[381]; + size_t i; + int result; + + for ( i = 0U; i < 2U; i++ ) + { + result = mbedtls_chacha20_crypt( test_keys[i], + test_nonces[i], + test_counters[i], + test_lengths[i], + test_input[i], + output ); + if ( result != 0) + { + if ( verbose != 0 ) + { + mbedtls_printf( "ChaCha20 test %zi error code: %i\n", i, result ); + } + + return( -1 ); + } + + if ( 0 != memcmp( output, test_output[i], test_lengths[i] ) ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "ChaCha20 test %zi failed\n", i ); + } + + return( -1 ); + } + } + + return( 0 ); +} + +#endif /* MBEDTLS_SELF_TEST */ + +#endif /* !MBEDTLS_CHACHA20_C */ diff --git a/library/error.c b/library/error.c index 222d85b62e..2aaf359ef3 100644 --- a/library/error.c +++ b/library/error.c @@ -69,6 +69,10 @@ #include "mbedtls/ccm.h" #endif +#if defined(MBEDTLS_CHACHA20_C) +#include "mbedtls/chacha20.h" +#endif + #if defined(MBEDTLS_CIPHER_C) #include "mbedtls/cipher.h" #endif @@ -653,6 +657,11 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CCM - CCM hardware accelerator failed" ); #endif /* MBEDTLS_CCM_C */ +#if defined(MBEDTLS_CHACHA20_C) + if( use_ret == -(MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "CHACHA20 - Invalid input parameter(s)" ); +#endif /* MBEDTLS_CHACHA20_C */ + #if defined(MBEDTLS_CMAC_C) if( use_ret == -(MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED) ) mbedtls_snprintf( buf, buflen, "CMAC - CMAC hardware accelerator failed" ); diff --git a/library/version_features.c b/library/version_features.c index a452caf5e9..febd506b7c 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -99,6 +99,9 @@ static const char *features[] = { #if defined(MBEDTLS_CCM_ALT) "MBEDTLS_CCM_ALT", #endif /* MBEDTLS_CCM_ALT */ +#if defined(MBEDTLS_CHACHA20_ALT) + "MBEDTLS_CHACHA20_ALT", +#endif /* MBEDTLS_CHACHA20_ALT */ #if defined(MBEDTLS_CMAC_ALT) "MBEDTLS_CMAC_ALT", #endif /* MBEDTLS_CMAC_ALT */ @@ -537,6 +540,9 @@ static const char *features[] = { #if defined(MBEDTLS_CERTS_C) "MBEDTLS_CERTS_C", #endif /* MBEDTLS_CERTS_C */ +#if defined(MBEDTLS_CHACHA20_C) + "MBEDTLS_CHACHA20_C", +#endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CIPHER_C) "MBEDTLS_CIPHER_C", #endif /* MBEDTLS_CIPHER_C */ diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index cecf3e363c..bc473cf86d 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -59,6 +59,7 @@ int main( void ) #include "mbedtls/aes.h" #include "mbedtls/blowfish.h" #include "mbedtls/camellia.h" +#include "mbedtls/chacha20.h" #include "mbedtls/gcm.h" #include "mbedtls/ccm.h" #include "mbedtls/cmac.h" @@ -93,7 +94,7 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ - "arc4, des3, des, camellia, blowfish,\n" \ + "arc4, des3, des, camellia, blowfish, chacha20,\n" \ "aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac,\n" \ "havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" @@ -229,7 +230,7 @@ typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac, - camellia, blowfish, + camellia, blowfish, chacha20, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; } todo_list; @@ -286,6 +287,8 @@ int main( int argc, char *argv[] ) todo.camellia = 1; else if( strcmp( argv[i], "blowfish" ) == 0 ) todo.blowfish = 1; + else if( strcmp( argv[i], "chacha20" ) == 0 ) + todo.chacha20 = 1; else if( strcmp( argv[i], "havege" ) == 0 ) todo.havege = 1; else if( strcmp( argv[i], "ctr_drbg" ) == 0 ) @@ -520,6 +523,13 @@ int main( int argc, char *argv[] ) } #endif +#if defined(MBEDTLS_CHACHA20_C) + if ( todo.chacha20 ) + { + TIME_AND_TSC( "ChaCha20", mbedtls_chacha20_crypt( buf, buf, 0U, BUFSIZE, buf, buf ) ); + } +#endif + #if defined(MBEDTLS_BLOWFISH_C) && defined(MBEDTLS_CIPHER_MODE_CBC) if( todo.blowfish ) { diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index ac0fbff056..36ee60b72a 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -30,7 +30,7 @@ if( @ARGV ) { my $error_format_file = $data_dir.'/error.fmt'; my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH - CAMELLIA CCM CMAC CTR_DRBG DES + CAMELLIA CCM CHACHA20 CMAC CTR_DRBG DES ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 NET OID PADLOCK PBKDF2 RIPEMD160 SHA1 SHA256 SHA512 THREADING XTEA ); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 16e19a9275..1525bc2a33 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -54,6 +54,7 @@ add_test_suite(base64) add_test_suite(blowfish) add_test_suite(camellia) add_test_suite(ccm) +add_test_suite(chacha20) add_test_suite(cipher cipher.aes) add_test_suite(cipher cipher.arc4) add_test_suite(cipher cipher.blowfish) diff --git a/tests/Makefile b/tests/Makefile index d85617fdca..233259b7af 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -50,7 +50,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ - test_suite_cmac$(EXEXT) \ + test_suite_chacha20$(EXEXT) test_suite_cmac$(EXEXT) \ test_suite_cipher.aes$(EXEXT) \ test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ test_suite_cipher.gcm$(EXEXT) \ @@ -237,6 +237,10 @@ test_suite_ccm$(EXEXT): test_suite_ccm.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_chacha20$(EXEXT): test_suite_chacha20.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_cmac$(EXEXT): test_suite_cmac.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_chacha20.data b/tests/suites/test_suite_chacha20.data new file mode 100644 index 0000000000..79f0408a2c --- /dev/null +++ b/tests/suites/test_suite_chacha20.data @@ -0,0 +1,2 @@ +ChaCha20 Selftest +chacha20_self_test: diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function new file mode 100644 index 0000000000..2825a61480 --- /dev/null +++ b/tests/suites/test_suite_chacha20.function @@ -0,0 +1,14 @@ +/* BEGIN_HEADER */ +#include "mbedtls/chacha20.h" +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_CHACHA20_C + * END_DEPENDENCIES + */ +/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ +void chacha20_self_test() +{ + TEST_ASSERT( mbedtls_chacha20_self_test( 0 ) == 0 ); +} +/* END_CASE */ \ No newline at end of file From bd92062269997a882e6214360da21307fc0bae9b Mon Sep 17 00:00:00 2001 From: Daniel King Date: Sun, 15 May 2016 19:56:20 -0300 Subject: [PATCH 0303/1100] Add ChaCha20 to the Cipher module --- include/mbedtls/chacha20.h | 2 +- include/mbedtls/cipher.h | 4 +- library/chacha20.c | 4 +- library/cipher.c | 31 ++++++ library/cipher_wrap.c | 73 ++++++++++++ tests/CMakeLists.txt | 1 + tests/Makefile | 9 ++ tests/suites/test_suite_cipher.chacha20.data | 111 +++++++++++++++++++ 8 files changed, 231 insertions(+), 4 deletions(-) create mode 100644 tests/suites/test_suite_cipher.chacha20.data diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index ab10a96a81..d23618ee06 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -121,7 +121,7 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, * output pointers are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_chacha20_process( mbedtls_chacha20_context *ctx, +int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, unsigned char *output ); diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index 3ee2ab7db9..c5a50c0d28 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -86,6 +86,7 @@ typedef enum { MBEDTLS_CIPHER_ID_CAMELLIA, /**< The Camellia cipher. */ MBEDTLS_CIPHER_ID_BLOWFISH, /**< The Blowfish cipher. */ MBEDTLS_CIPHER_ID_ARC4, /**< The RC4 cipher. */ + MBEDTLS_CIPHER_ID_CHACHA20, /**< The Chacha20 cipher. */ } mbedtls_cipher_id_t; /** @@ -145,6 +146,7 @@ typedef enum { MBEDTLS_CIPHER_CAMELLIA_128_CCM, /**< Camellia cipher with 128-bit CCM mode. */ MBEDTLS_CIPHER_CAMELLIA_192_CCM, /**< Camellia cipher with 192-bit CCM mode. */ MBEDTLS_CIPHER_CAMELLIA_256_CCM, /**< Camellia cipher with 256-bit CCM mode. */ + MBEDTLS_CIPHER_CHACHA20, /**< Chacha20 stream cipher. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ @@ -190,7 +192,7 @@ enum { /** Maximum length of any IV, in Bytes. */ #define MBEDTLS_MAX_IV_LENGTH 16 /** Maximum block size of any cipher, in Bytes. */ -#define MBEDTLS_MAX_BLOCK_LENGTH 16 +#define MBEDTLS_MAX_BLOCK_LENGTH 64 /** * Base cipher information (opaque struct). diff --git a/library/chacha20.c b/library/chacha20.c index 75fd9e9151..8206a3bf0d 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -245,7 +245,7 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, return( 0 ); } -int mbedtls_chacha20_process( mbedtls_chacha20_context *ctx, +int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, unsigned char *output ) @@ -333,7 +333,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], if ( result != 0 ) goto cleanup; - result = mbedtls_chacha20_process( &ctx, data_len, input, output ); + result = mbedtls_chacha20_update( &ctx, data_len, input, output ); cleanup: mbedtls_chacha20_free( &ctx ); diff --git a/library/cipher.c b/library/cipher.c index a5cd61cdf3..68d0c10ff8 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -46,6 +46,10 @@ #include "mbedtls/ccm.h" #endif +#if defined(MBEDTLS_CHACHA20_C) +#include "mbedtls/chacha20.h" +#endif + #if defined(MBEDTLS_CMAC_C) #include "mbedtls/cmac.h" #endif @@ -231,6 +235,18 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } +#if defined(MBEDTLS_CHACHA20_C) + if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20 ) + { + if ( 0 != mbedtls_chacha20_starts( (mbedtls_chacha20_context*)ctx->cipher_ctx, + iv, + 0U ) ) /* Initial counter value */ + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + } +#endif + memcpy( ctx->iv, iv, actual_iv_size ); ctx->iv_size = actual_iv_size; @@ -314,6 +330,16 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } + +#if defined(MBEDTLS_CHACHA20_C) + if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20 ) + { + *olen = ilen; + return mbedtls_chacha20_update( (mbedtls_chacha20_context*) ctx->cipher_ctx, + ilen, input, output ); + } +#endif + #if defined(MBEDTLS_CIPHER_MODE_CBC) if( ctx->cipher_info->mode == MBEDTLS_MODE_CBC ) { @@ -646,6 +672,11 @@ int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, return( 0 ); } + if ( MBEDTLS_CIPHER_CHACHA20 == ctx->cipher_info->type ) + { + return( 0 ); + } + if( MBEDTLS_MODE_ECB == ctx->cipher_info->mode ) { if( ctx->unprocessed_len != 0 ) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index dc76af8ff4..f4e7964dfa 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -53,6 +53,10 @@ #include "mbedtls/blowfish.h" #endif +#if defined(MBEDTLS_CHACHA20_C) +#include "mbedtls/chacha20.h" +#endif + #if defined(MBEDTLS_GCM_C) #include "mbedtls/gcm.h" #endif @@ -1283,6 +1287,71 @@ static const mbedtls_cipher_info_t arc4_128_info = { }; #endif /* MBEDTLS_ARC4_C */ +#if defined(MBEDTLS_CHACHA20_C) + +static int chacha20_setkey_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + if( key_bitlen != 256U ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + if ( 0 != mbedtls_chacha20_setkey( (mbedtls_chacha20_context*)ctx, key ) ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + return( 0 ); +} + +static void * chacha20_ctx_alloc( void ) +{ + mbedtls_chacha20_context *ctx; + ctx = mbedtls_calloc( 1, sizeof( mbedtls_chacha20_context ) ); + + if( ctx == NULL ) + return( NULL ); + + mbedtls_chacha20_init( ctx ); + + return( ctx ); +} + +static void chacha20_ctx_free( void *ctx ) +{ + mbedtls_chacha20_free( (mbedtls_chacha20_context *) ctx ); + mbedtls_free( ctx ); +} + +static const mbedtls_cipher_base_t chacha20_base_info = { + MBEDTLS_CIPHER_ID_CHACHA20, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + chacha20_setkey_wrap, + chacha20_setkey_wrap, + chacha20_ctx_alloc, + chacha20_ctx_free +}; +static const mbedtls_cipher_info_t chacha20_info = { + MBEDTLS_CIPHER_CHACHA20, + MBEDTLS_MODE_NONE, + 256, + "CHACHA20", + 12, + 0, + 64, + &chacha20_base_info +}; +#endif /* MBEDTLS_CHACHA20_C */ + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) static int null_crypt_stream( void *ctx, size_t length, const unsigned char *input, @@ -1438,6 +1507,10 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = #endif #endif /* MBEDTLS_DES_C */ +#if defined(MBEDTLS_CHACHA20_C) + { MBEDTLS_CIPHER_CHACHA20, &chacha20_info }, +#endif + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) { MBEDTLS_CIPHER_NULL, &null_cipher_info }, #endif /* MBEDTLS_CIPHER_NULL_CIPHER */ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1525bc2a33..3821657ae7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -60,6 +60,7 @@ add_test_suite(cipher cipher.arc4) add_test_suite(cipher cipher.blowfish) add_test_suite(cipher cipher.camellia) add_test_suite(cipher cipher.ccm) +add_test_suite(cipher cipher.chacha20) add_test_suite(cipher cipher.des) add_test_suite(cipher cipher.gcm) add_test_suite(cipher cipher.null) diff --git a/tests/Makefile b/tests/Makefile index 233259b7af..34a0a89159 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -53,6 +53,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_chacha20$(EXEXT) test_suite_cmac$(EXEXT) \ test_suite_cipher.aes$(EXEXT) \ test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ + test_suite_cipher.chacha20$(EXEXT) \ test_suite_cipher.gcm$(EXEXT) \ test_suite_cipher.blowfish$(EXEXT) \ test_suite_cipher.camellia$(EXEXT) \ @@ -125,6 +126,10 @@ test_suite_cipher.ccm.c : suites/test_suite_cipher.function suites/test_suite_ci echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.ccm +test_suite_cipher.chacha20.c : suites/test_suite_cipher.function suites/test_suite_cipher.chacha20.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.chacha20 + test_suite_cipher.gcm.c : suites/test_suite_cipher.function suites/test_suite_cipher.gcm.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.gcm @@ -257,6 +262,10 @@ test_suite_cipher.ccm$(EXEXT): test_suite_cipher.ccm.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_cipher.chacha20$(EXEXT): test_suite_cipher.chacha20.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_cipher.gcm$(EXEXT): test_suite_cipher.gcm.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_cipher.chacha20.data b/tests/suites/test_suite_cipher.chacha20.data new file mode 100644 index 0000000000..5f3e07d0bb --- /dev/null +++ b/tests/suites/test_suite_cipher.chacha20.data @@ -0,0 +1,111 @@ +Decrypt empty buffer +depends_on:MBEDTLS_CHACHA20_C: +dec_empty_buf: + +ChaCha20 Encrypt and decrypt 0 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:0:-1 + +ChaCha20 Encrypt and decrypt 1 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:1:-1 + +ChaCha20 Encrypt and decrypt 2 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:2:-1 + +ChaCha20 Encrypt and decrypt 7 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:7:-1 + +ChaCha20 Encrypt and decrypt 8 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:8:-1 + +ChaCha20 Encrypt and decrypt 9 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:9:-1 + +ChaCha20 Encrypt and decrypt 15 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:15:-1 + +ChaCha20 Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:16:-1 + +ChaCha20 Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:17:-1 + +ChaCha20 Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:31:-1 + +ChaCha20 Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:32:-1 + +ChaCha20 Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:33:-1 + +ChaCha20 Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:47:-1 + +ChaCha20 Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:48:-1 + +ChaCha20 Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:49:-1 + +ChaCha20 Encrypt and decrypt 0 bytes in multiple parts 1 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:0:0:-1:0:0:0:0 + +ChaCha20 Encrypt and decrypt 1 bytes in multiple parts 1 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:1:0:-1:1:0:1:0 + +ChaCha20 Encrypt and decrypt 1 bytes in multiple parts 2 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:0:1:-1:0:1:0:1 + +ChaCha20 Encrypt and decrypt 16 bytes in multiple parts 1 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:16:0:-1:16:0:16:0 + +ChaCha20 Encrypt and decrypt 16 bytes in multiple parts 2 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:0:16:-1:0:16:0:16 + +ChaCha20 Encrypt and decrypt 16 bytes in multiple parts 3 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:1:15:-1:1:15:1:15 + +ChaCha20 Encrypt and decrypt 16 bytes in multiple parts 4 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:15:1:-1:15:1:15:1 + +ChaCha20 Encrypt and decrypt 22 bytes in multiple parts 1 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:15:7:-1:15:7:15:7 + +ChaCha20 Encrypt and decrypt 22 bytes in multiple parts 2 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:7:15:-1:7:15:7:15 + +ChaCha20 Encrypt and decrypt 22 bytes in multiple parts 3 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:16:6:-1:16:6:16:6 + +ChaCha20 Encrypt and decrypt 22 bytes in multiple parts 4 +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:6:16:-1:6:16:6:16 + +ChaCha20 Encrypt and decrypt 32 bytes in multiple parts +depends_on:MBEDTLS_CHACHA20_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20:256:16:16:-1:16:16:16:16 From adc32c0b507e706b076b0978d63d8c5d99cbd474 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Mon, 16 May 2016 18:25:45 -0300 Subject: [PATCH 0304/1100] Add Poly1305 authenticator algorithm (RFC 7539) Test vectors are included from RFC 7539. Poly1305 is also added to the benchmark program. --- include/mbedtls/config.h | 10 + include/mbedtls/error.h | 1 + include/mbedtls/poly1305.h | 142 ++++++ library/CMakeLists.txt | 1 + library/Makefile | 10 +- library/error.c | 9 + library/poly1305.c | 518 ++++++++++++++++++++++ library/version_features.c | 6 + programs/test/benchmark.c | 14 +- scripts/generate_errors.pl | 2 +- tests/CMakeLists.txt | 1 + tests/Makefile | 5 + tests/suites/test_suite_poly1305.data | 51 +++ tests/suites/test_suite_poly1305.function | 35 ++ 14 files changed, 798 insertions(+), 7 deletions(-) create mode 100644 include/mbedtls/poly1305.h create mode 100644 library/poly1305.c create mode 100644 tests/suites/test_suite_poly1305.data create mode 100644 tests/suites/test_suite_poly1305.function diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 4c8fc3c367..7d0960a293 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -283,6 +283,7 @@ //#define MBEDTLS_MD2_ALT //#define MBEDTLS_MD4_ALT //#define MBEDTLS_MD5_ALT +//#define MBEDTLS_POLY1305_ALT //#define MBEDTLS_RIPEMD160_ALT //#define MBEDTLS_RSA_ALT //#define MBEDTLS_SHA1_ALT @@ -2398,6 +2399,15 @@ */ #define MBEDTLS_PLATFORM_C +/** + * \def MBEDTLS_POLY1305_C + * + * Enable the Poly1305 MAC algorithm. + * + * Module: library/poly1305.c + */ +#define MBEDTLS_POLY1305_C + /** * \def MBEDTLS_RIPEMD160_C * diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index ace0c47a62..feeda79ed5 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -77,6 +77,7 @@ * SHA256 1 0x0037-0x0037 * SHA512 1 0x0039-0x0039 * CHACHA20 1 0x003B-0x003B + * POLY1305 1 0x0041-0x0041 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h new file mode 100644 index 0000000000..1aa55aeee4 --- /dev/null +++ b/include/mbedtls/poly1305.h @@ -0,0 +1,142 @@ +/** + * \file poly1305.h + * + * \brief Poly1305 authenticator algorithm. + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_POLY1305_H +#define MBEDTLS_POLY1305_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if !defined(MBEDTLS_POLY1305_ALT) + +#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0041 /**< Invalid input parameter(s). */ + +typedef struct +{ + uint32_t r[4]; /** Stores the value for 'r' (low 128 bits of the key) */ + uint32_t s[4]; /** Stores the value for 's' (high 128 bits of the key) */ + uint32_t acc[5]; /** Accumulator number */ + uint8_t queue[16]; /** Stores partial block data */ + size_t queue_len; /** Number of bytes stored in 'queue'. Always less than 16 */ +} +mbedtls_poly1305_context; + +/** + * \brief Initialize a Poly1305 context + * + * \param ctx The Poly1305 context to be initialized + */ +void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ); + +/** + * \brief Clear a Poly1305 context + * + * \param ctx The Poly1305 context to be cleared + */ +void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ); + +/** + * \brief Set the Poly1305 authentication key. + * + * \warning The key should be unique, and \b MUST be + * unpredictable for each invocation of Poly1305. + * + * \param ctx The Poly1305 context. + * \param key Buffer containing the 256-bit key. + * + * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx + * or key are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, + const unsigned char key[32] ); + +/** + * \brief Process data with Poly1305. + * + * This function can be called multiple times to process + * a stream of data. + * + * \param ctx The Poly1305 context. + * \param ilen The input length (in bytes). Any value is accepted. + * \param input Buffer containing the input data to Process. + * + * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx + * or input are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, + size_t ilen, + const unsigned char *input ); + +/** + * \brief Generate the Poly1305 MAC. + * + * \param ctx The Poly1305 context. + * \param mac Buffer to where the MAC is written. Must be big enough + * to hold the 16-byte MAC. + * + * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx + * or mac are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, + unsigned char mac[16] ); + +#else /* MBEDTLS_POLY1305_ALT */ +#include "poly1305_alt.h" +#endif /* MBEDTLS_POLY1305_ALT */ + +/** + * \brief Generate the Poly1305 MAC of some data with the given key. + * + * \warning The key should be unique, and \b MUST be + * unpredictable for each invocation of Poly1305. + * + * \param key Buffer containing the 256-bit (32 bytes) key. + * \param ilen The length of the input data (in bytes). + * \param input Buffer containing the input data to process. + * \param mac Buffer to where the 128-bit (16 bytes) MAC is written. + * + * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if key, + * input, or mac are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_poly1305_mac( const unsigned char key[32], + size_t ilen, + const unsigned char *input, + unsigned char mac[16] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_poly1305_self_test( int verbose ); + +#endif /* MBEDTLS_POLY1305_H */ diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 78bab7fc72..251b6c6252 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -48,6 +48,7 @@ set(src_crypto pkwrite.c platform.c platform_util.c + poly1305.c ripemd160.c rsa.c rsa_internal.c diff --git a/library/Makefile b/library/Makefile index 4fab598467..5fd693b25a 100644 --- a/library/Makefile +++ b/library/Makefile @@ -63,11 +63,11 @@ OBJS_CRYPTO= aes.o aesni.o arc4.o \ padlock.o pem.o pk.o \ pk_wrap.o pkcs12.o pkcs5.o \ pkparse.o pkwrite.o platform.o \ - platform_util.o ripemd160.o rsa_internal.o \ - rsa.o sha1.o sha256.o \ - sha512.o threading.o timing.o \ - version.o version_features.o \ - xtea.o + platform_util.o poly1305.o \ + ripemd160.o rsa_internal.o rsa.o \ + sha1.o sha256.o sha512.o \ + threading.o timing.o version.o \ + version_features.o xtea.o OBJS_X509= certs.o pkcs11.o x509.o \ x509_create.o x509_crl.o x509_crt.o \ diff --git a/library/error.c b/library/error.c index 2aaf359ef3..12bd2101b3 100644 --- a/library/error.c +++ b/library/error.c @@ -153,6 +153,10 @@ #include "mbedtls/pkcs5.h" #endif +#if defined(MBEDTLS_POLY1305_C) +#include "mbedtls/poly1305.h" +#endif + #if defined(MBEDTLS_RIPEMD160_C) #include "mbedtls/ripemd160.h" #endif @@ -774,6 +778,11 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "PADLOCK - Input data should be aligned" ); #endif /* MBEDTLS_PADLOCK_C */ +#if defined(MBEDTLS_POLY1305_C) + if( use_ret == -(MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "POLY1305 - Invalid input parameter(s)" ); +#endif /* MBEDTLS_POLY1305_C */ + #if defined(MBEDTLS_RIPEMD160_C) if( use_ret == -(MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED) ) mbedtls_snprintf( buf, buflen, "RIPEMD160 - RIPEMD160 hardware accelerator failed" ); diff --git a/library/poly1305.c b/library/poly1305.c new file mode 100644 index 0000000000..9a61a85ce8 --- /dev/null +++ b/library/poly1305.c @@ -0,0 +1,518 @@ +/** + * \file poly1305.c + * + * \brief Poly1305 authentication algorithm. + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_POLY1305_C) + +#if !defined(MBEDTLS_POLY1305_ALT) + +#include "mbedtls/poly1305.h" + +#include + +#if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST */ + +#define POLY1305_BLOCK_SIZE_BYTES ( 16U ) + +#define BYTES_TO_U32_LE( data, offset ) \ + ( (uint32_t)data[offset] | \ + (uint32_t)( (uint32_t)data[(offset) + 1] << 8 ) | \ + (uint32_t)( (uint32_t)data[(offset) + 2] << 16 ) | \ + (uint32_t)( (uint32_t)data[(offset) + 3] << 24 ) \ + ) + +/* Implementation that should never be optimized out by the compiler */ +static void mbedtls_zeroize( void *v, size_t n ) { + volatile unsigned char *p = v; while( n-- ) *p++ = 0; +} + +/** + * \brief Process blocks with Poly1305. + * + * \param ctx The Poly1305 context. + * \param nblocks Number of blocks to process. Note that this function + * only processes full blocks. + * \param input Buffer containing the input block(s). + * \param needs_padding Set to 0 if the padding bit has already been applied + * to the input data before calling this function. + * Otherwise, set this parameter to 1. + */ +static void mbedtls_poly1305_process( mbedtls_poly1305_context *ctx, + size_t nblocks, + const unsigned char *input, + uint32_t needs_padding ) +{ + uint64_t d0, d1, d2, d3; + uint32_t acc0, acc1, acc2, acc3, acc4; + uint32_t r0, r1, r2, r3; + uint32_t rs1, rs2, rs3; + size_t offset = 0U; + size_t i; + + r0 = ctx->r[0]; + r1 = ctx->r[1]; + r2 = ctx->r[2]; + r3 = ctx->r[3]; + + rs1 = r1 + ( r1 >> 2U ); + rs2 = r2 + ( r2 >> 2U ); + rs3 = r3 + ( r3 >> 2U ); + + acc0 = ctx->acc[0]; + acc1 = ctx->acc[1]; + acc2 = ctx->acc[2]; + acc3 = ctx->acc[3]; + acc4 = ctx->acc[4]; + + /* Process full blocks */ + for ( i = 0U; i < nblocks; i++ ) + { + /* Compute: acc += block */ + /* Note that the input block is treated as a 128-bit little-endian integer */ + d0 = (uint64_t)acc0 + BYTES_TO_U32_LE( input, offset + 0 ); + d1 = (uint64_t)acc1 + BYTES_TO_U32_LE( input, offset + 4 ) + ( d0 >> 32U ); + d2 = (uint64_t)acc2 + BYTES_TO_U32_LE( input, offset + 8 ) + ( d1 >> 32U ); + d3 = (uint64_t)acc3 + BYTES_TO_U32_LE( input, offset + 12 ) + ( d2 >> 32U ); + acc0 = (uint32_t)d0; + acc1 = (uint32_t)d1; + acc2 = (uint32_t)d2; + acc3 = (uint32_t)d3; + acc4 += (uint32_t)( d3 >> 32U ) + needs_padding; + + /* Compute: acc *= r */ + d0 = ( (uint64_t)acc0 * r0 ) + + ( (uint64_t)acc1 * rs3 ) + + ( (uint64_t)acc2 * rs2 ) + + ( (uint64_t)acc3 * rs1 ); + d1 = ( (uint64_t)acc0 * r1 ) + + ( (uint64_t)acc1 * r0 ) + + ( (uint64_t)acc2 * rs3 ) + + ( (uint64_t)acc3 * rs2 ) + + ( (uint64_t)acc4 * rs1 ); + d2 = ( (uint64_t)acc0 * r2 ) + + ( (uint64_t)acc1 * r1 ) + + ( (uint64_t)acc2 * r0 ) + + ( (uint64_t)acc3 * rs3 ) + + ( (uint64_t)acc4 * rs2 ); + d3 = ( (uint64_t)acc0 * r3 ) + + ( (uint64_t)acc1 * r2 ) + + ( (uint64_t)acc2 * r1 ) + + ( (uint64_t)acc3 * r0 ) + + ( (uint64_t)acc4 * rs3 ); + acc4 *= r0; + + /* Compute: acc %= (2^130 - 5) (partial remainder) */ + d1 += ( d0 >> 32 ); + d2 += ( d1 >> 32 ); + d3 += ( d2 >> 32 ); + acc0 = (uint32_t)d0; + acc1 = (uint32_t)d1; + acc2 = (uint32_t)d2; + acc3 = (uint32_t)d3; + acc4 = (uint32_t)( d3 >> 32 ) + acc4; + + d0 = (uint64_t)acc0 + ( acc4 >> 2 ) + ( acc4 & 0xFFFFFFFCU ); + acc4 &= 3U; + acc0 = (uint32_t)d0; + d0 = (uint64_t)acc1 + ( d0 >> 32U ); + acc1 = (uint32_t)d0; + d0 = (uint64_t)acc2 + ( d0 >> 32U ); + acc2 = (uint32_t)d0; + d0 = (uint64_t)acc3 + ( d0 >> 32U ); + acc3 = (uint32_t)d0; + d0 = (uint64_t)acc4 + ( d0 >> 32U ); + acc4 = (uint32_t)d0; + + offset += POLY1305_BLOCK_SIZE_BYTES; + } + + ctx->acc[0] = acc0; + ctx->acc[1] = acc1; + ctx->acc[2] = acc2; + ctx->acc[3] = acc3; + ctx->acc[4] = acc4; +} + +/** + * \brief Compute the Poly1305 MAC + * + * \param ctx The Poly1305 context. + * \param mac The buffer to where the MAC is written. Must be + * big enough to contain the 16-byte MAC. + */ +static void mbedtls_poly1305_compute_mac( const mbedtls_poly1305_context *ctx, + unsigned char mac[16] ) +{ + uint64_t d; + uint32_t g0, g1, g2, g3, g4; + uint32_t acc0, acc1, acc2, acc3, acc4; + uint32_t mask; + uint32_t mask_inv; + + acc0 = ctx->acc[0]; + acc1 = ctx->acc[1]; + acc2 = ctx->acc[2]; + acc3 = ctx->acc[3]; + acc4 = ctx->acc[4]; + + /* Before adding 's' we need to ensure that the accumulator is mod 2^130 - 5. + * We do this by calculating acc - (2^130 - 5), then checking if + * the 131st bit is set. If it is, then reduce: acc -= (2^130 - 5) + */ + + /* Calculate acc + -(2^130 - 5) */ + d = ( (uint64_t)acc0 + 5U ); + g0 = (uint32_t)d; + d = ( (uint64_t)acc1 + ( d >> 32 ) ); + g1 = (uint32_t)d; + d = ( (uint64_t)acc2 + ( d >> 32 ) ); + g2 = (uint32_t)d; + d = ( (uint64_t)acc3 + ( d >> 32 ) ); + g3 = (uint32_t)d; + g4 = acc4 + (uint32_t)( d >> 32U ); + + /* mask == 0xFFFFFFFF if 131st bit is set, otherwise mask == 0 */ + mask = (uint32_t)0U - ( g4 >> 2U ); + mask_inv = ~mask; + + /* If 131st bit is set then acc=g, otherwise, acc is unmodified */ + acc0 = ( acc0 & mask_inv ) | ( g0 & mask ); + acc1 = ( acc1 & mask_inv ) | ( g1 & mask ); + acc2 = ( acc2 & mask_inv ) | ( g2 & mask ); + acc3 = ( acc3 & mask_inv ) | ( g3 & mask ); + + /* Add 's' */ + d = (uint64_t)acc0 + ctx->s[0]; + acc0 = (uint32_t)d; + d = (uint64_t)acc1 + ctx->s[1] + ( d >> 32U ); + acc1 = (uint32_t)d; + d = (uint64_t)acc2 + ctx->s[2] + ( d >> 32U ); + acc2 = (uint32_t)d; + acc3 += ctx->s[3] + (uint32_t)( d >> 32U ); + + /* Compute MAC (128 least significant bits of the accumulator) */ + mac[0] = (uint8_t)acc0; + mac[1] = (uint8_t)( acc0 >> 8 ); + mac[2] = (uint8_t)( acc0 >> 16 ); + mac[3] = (uint8_t)( acc0 >> 24 ); + mac[4] = (uint8_t)acc1; + mac[5] = (uint8_t)( acc1 >> 8 ); + mac[6] = (uint8_t)( acc1 >> 16 ); + mac[7] = (uint8_t)( acc1 >> 24 ); + mac[8] = (uint8_t)acc2; + mac[9] = (uint8_t)( acc2 >> 8 ); + mac[10] = (uint8_t)( acc2 >> 16 ); + mac[11] = (uint8_t)( acc2 >> 24 ); + mac[12] = (uint8_t)acc3; + mac[13] = (uint8_t)( acc3 >> 8 ); + mac[14] = (uint8_t)( acc3 >> 16 ); + mac[15] = (uint8_t)( acc3 >> 24 ); +} + +void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_zeroize( ctx, sizeof(mbedtls_poly1305_context) ); + } +} + +void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_zeroize( ctx, sizeof(mbedtls_poly1305_context) ); + } +} + +int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, + const unsigned char key[32] ) +{ + if ( ctx == NULL ) + { + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + } + + /* r &= 0x0ffffffc0ffffffc0ffffffc0fffffff */ + ctx->r[0] = BYTES_TO_U32_LE( key, 0 ) & 0x0FFFFFFFU; + ctx->r[1] = BYTES_TO_U32_LE( key, 4 ) & 0x0FFFFFFCU; + ctx->r[2] = BYTES_TO_U32_LE( key, 8 ) & 0x0FFFFFFCU; + ctx->r[3] = BYTES_TO_U32_LE( key, 12 ) & 0x0FFFFFFCU; + + ctx->s[0] = BYTES_TO_U32_LE( key, 16 ); + ctx->s[1] = BYTES_TO_U32_LE( key, 20 ); + ctx->s[2] = BYTES_TO_U32_LE( key, 24 ); + ctx->s[3] = BYTES_TO_U32_LE( key, 28 ); + + /* Initial accumulator state */ + ctx->acc[0] = 0U; + ctx->acc[1] = 0U; + ctx->acc[2] = 0U; + ctx->acc[3] = 0U; + + return 0; +} + +int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, + size_t ilen, + const unsigned char* input ) +{ + size_t offset = 0U; + size_t remaining = ilen; + size_t queue_free_len; + size_t nblocks; + + if ( ( ctx == NULL ) || ( input == NULL ) ) + { + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + } + + if ( ctx->queue_len > 0U ) + { + queue_free_len = ( POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); + + if ( ilen < queue_free_len ) + { + /* Not enough data to complete the block. + * Store this data with the other leftovers. + */ + memcpy( &ctx->queue[ctx->queue_len], + input, + ilen ); + + ctx->queue_len += ilen; + + remaining = 0U; + } + else + { + /* Enough data to produce a complete block */ + memcpy( &ctx->queue[ctx->queue_len], + input, + queue_free_len ); + + ctx->queue_len = 0U; + + mbedtls_poly1305_process( ctx, + 1U, + ctx->queue, + 1U ); /* add padding bit */ + + offset += queue_free_len; + remaining -= queue_free_len; + } + } + + if ( remaining >= POLY1305_BLOCK_SIZE_BYTES ) + { + nblocks = remaining / POLY1305_BLOCK_SIZE_BYTES; + + mbedtls_poly1305_process( ctx, nblocks, &input[offset], 1U ); + + offset += nblocks * POLY1305_BLOCK_SIZE_BYTES; + remaining %= POLY1305_BLOCK_SIZE_BYTES; + } + + if ( remaining > 0U ) + { + /* Store partial block */ + ctx->queue_len = remaining; + memcpy( ctx->queue, &input[offset], remaining ); + } + + return( 0 ); +} + +int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, + unsigned char mac[16] ) +{ + if ( ( ctx == NULL ) || ( mac == NULL ) ) + { + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + } + + /* Process any leftover data */ + if ( ctx->queue_len > 0U ) + { + /* Add padding bit */ + ctx->queue[ctx->queue_len] = 1U; + ctx->queue_len++; + + /* Pad with zeroes */ + memset( &ctx->queue[ctx->queue_len], + 0, + POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); + + mbedtls_poly1305_process( ctx, + 1U, /* Process 1 block */ + ctx->queue, + 0U ); /* Don't add padding bit (it was just added above) */ + } + + mbedtls_poly1305_compute_mac( ctx, mac ); + + return( 0 ); +} + +#endif /* MBEDTLS_POLY1305_ALT */ + +int mbedtls_poly1305_mac( const unsigned char key[32], + size_t ilen, + const unsigned char *input, + unsigned char mac[16] ) +{ + mbedtls_poly1305_context ctx; + int result; + + mbedtls_poly1305_init( &ctx ); + + result = mbedtls_poly1305_setkey( &ctx, key ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_poly1305_update( &ctx, ilen, input ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_poly1305_finish( &ctx, mac ); + +cleanup: + mbedtls_poly1305_free( &ctx ); + return( 0 ); +} + +#if defined(MBEDTLS_SELF_TEST) + +static const unsigned char test_keys[2][32] = +{ + { + 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33, + 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8, + 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd, + 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b + }, + { + 0x1c, 0x92, 0x40, 0xa5, 0xeb, 0x55, 0xd3, 0x8a, + 0xf3, 0x33, 0x88, 0x86, 0x04, 0xf6, 0xb5, 0xf0, + 0x47, 0x39, 0x17, 0xc1, 0x40, 0x2b, 0x80, 0x09, + 0x9d, 0xca, 0x5c, 0xbc, 0x20, 0x70, 0x75, 0xc0 + } +}; + +static const unsigned char test_data[2][127] = +{ + { + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x69, 0x63, 0x20, 0x46, 0x6f, + 0x72, 0x75, 0x6d, 0x20, 0x52, 0x65, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f, + 0x75, 0x70 + }, + { + 0x27, 0x54, 0x77, 0x61, 0x73, 0x20, 0x62, 0x72, + 0x69, 0x6c, 0x6c, 0x69, 0x67, 0x2c, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x6c, 0x69, 0x74, 0x68, 0x79, 0x20, 0x74, 0x6f, + 0x76, 0x65, 0x73, 0x0a, 0x44, 0x69, 0x64, 0x20, + 0x67, 0x79, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x67, 0x69, 0x6d, 0x62, 0x6c, 0x65, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, + 0x61, 0x62, 0x65, 0x3a, 0x0a, 0x41, 0x6c, 0x6c, + 0x20, 0x6d, 0x69, 0x6d, 0x73, 0x79, 0x20, 0x77, + 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x62, 0x6f, 0x72, 0x6f, 0x67, 0x6f, 0x76, 0x65, + 0x73, 0x2c, 0x0a, 0x41, 0x6e, 0x64, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x6d, 0x65, 0x20, + 0x72, 0x61, 0x74, 0x68, 0x73, 0x20, 0x6f, 0x75, + 0x74, 0x67, 0x72, 0x61, 0x62, 0x65, 0x2e + } +}; + +static const size_t test_data_len[2] = +{ + 34U, + 127U +}; + +static const unsigned char test_mac[2][16] = +{ + { + 0xa8, 0x06, 0x1d, 0xc1, 0x30, 0x51, 0x36, 0xc6, + 0xc2, 0x2b, 0x8b, 0xaf, 0x0c, 0x01, 0x27, 0xa9 + }, + { + 0x45, 0x41, 0x66, 0x9a, 0x7e, 0xaa, 0xee, 0x61, + 0xe7, 0x08, 0xdc, 0x7c, 0xbc, 0xc5, 0xeb, 0x62 + } +}; + +int mbedtls_poly1305_self_test( int verbose ) +{ + uint8_t mac[16]; + size_t i; + int result; + + for ( i = 0U; i < 2U; i++ ) + { + result = mbedtls_poly1305_mac( test_keys[i], + test_data_len[i], + test_data[i], + mac ); + if ( result != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "Poly1305 test %zi error code: %i\n", i, result ); + } + + return( -1 ); + } + + if ( memcmp( mac, test_mac[i], 16U ) != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "Poly1305 test %zi failed\n", i ); + } + + return( -1 ); + } + } + + return( 0 ); +} + +#endif /* MBEDTLS_SELF_TEST */ + +#endif /* MBEDTLS_POLY1305_C */ diff --git a/library/version_features.c b/library/version_features.c index febd506b7c..babf2c7824 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -168,6 +168,9 @@ static const char *features[] = { #if defined(MBEDTLS_SHA512_PROCESS_ALT) "MBEDTLS_SHA512_PROCESS_ALT", #endif /* MBEDTLS_SHA512_PROCESS_ALT */ +#if defined(MBEDTLS_POLY1305_ALT) + "MBEDTLS_POLY1305_ALT", +#endif /* MBEDTLS_POLY1305_ALT */ #if defined(MBEDTLS_DES_SETKEY_ALT) "MBEDTLS_DES_SETKEY_ALT", #endif /* MBEDTLS_DES_SETKEY_ALT */ @@ -639,6 +642,9 @@ static const char *features[] = { #if defined(MBEDTLS_PLATFORM_C) "MBEDTLS_PLATFORM_C", #endif /* MBEDTLS_PLATFORM_C */ +#if defined(MBEDTLS_POLY1305_C) + "MBEDTLS_POLY1305_C", +#endif /* MBEDTLS_POLY1305_C */ #if defined(MBEDTLS_RIPEMD160_C) "MBEDTLS_RIPEMD160_C", #endif /* MBEDTLS_RIPEMD160_C */ diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index bc473cf86d..c419665864 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -63,6 +63,7 @@ int main( void ) #include "mbedtls/gcm.h" #include "mbedtls/ccm.h" #include "mbedtls/cmac.h" +#include "mbedtls/poly1305.h" #include "mbedtls/havege.h" #include "mbedtls/ctr_drbg.h" #include "mbedtls/hmac_drbg.h" @@ -95,7 +96,8 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish, chacha20,\n" \ - "aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac,\n" \ + "aes_cbc, aes_gcm, aes_ccm,\n" \ + "aes_cmac, des3_cmac, poly1305\n" \ "havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" @@ -231,6 +233,7 @@ typedef struct { arc4, des3, des, aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac, camellia, blowfish, chacha20, + poly1305, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; } todo_list; @@ -289,6 +292,8 @@ int main( int argc, char *argv[] ) todo.blowfish = 1; else if( strcmp( argv[i], "chacha20" ) == 0 ) todo.chacha20 = 1; + else if( strcmp( argv[i], "poly1305" ) == 0 ) + todo.poly1305 = 1; else if( strcmp( argv[i], "havege" ) == 0 ) todo.havege = 1; else if( strcmp( argv[i], "ctr_drbg" ) == 0 ) @@ -530,6 +535,13 @@ int main( int argc, char *argv[] ) } #endif +#if defined(MBEDTLS_POLY1305_C) + if ( todo.poly1305 ) + { + TIME_AND_TSC( "Poly1305", mbedtls_poly1305_mac( buf, BUFSIZE, buf, buf ) ); + } +#endif + #if defined(MBEDTLS_BLOWFISH_C) && defined(MBEDTLS_CIPHER_MODE_CBC) if( todo.blowfish ) { diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index 36ee60b72a..1dac39bf17 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -32,7 +32,7 @@ my $error_format_file = $data_dir.'/error.fmt'; my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH CAMELLIA CCM CHACHA20 CMAC CTR_DRBG DES ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 - NET OID PADLOCK PBKDF2 RIPEMD160 + NET OID PADLOCK PBKDF2 POLY1305 RIPEMD160 SHA1 SHA256 SHA512 THREADING XTEA ); my @high_level_modules = qw( CIPHER DHM ECP MD PEM PK PKCS12 PKCS5 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3821657ae7..82f155419f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -98,6 +98,7 @@ add_test_suite(pkcs5) add_test_suite(pk) add_test_suite(pkparse) add_test_suite(pkwrite) +add_test_suite(poly1305) add_test_suite(shax) add_test_suite(ssl) add_test_suite(timing) diff --git a/tests/Makefile b/tests/Makefile index 34a0a89159..90b2028f52 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -82,6 +82,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_pkcs1_v21$(EXEXT) test_suite_pkcs5$(EXEXT) \ test_suite_pkparse$(EXEXT) test_suite_pkwrite$(EXEXT) \ test_suite_pk$(EXEXT) \ + test_suite_poly1305$(EXEXT) \ test_suite_rsa$(EXEXT) test_suite_shax$(EXEXT) \ test_suite_ssl$(EXEXT) test_suite_timing$(EXEXT) \ test_suite_x509parse$(EXEXT) test_suite_x509write$(EXEXT) \ @@ -414,6 +415,10 @@ test_suite_pk$(EXEXT): test_suite_pk.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_poly1305$(EXEXT): test_suite_poly1305.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_rsa$(EXEXT): test_suite_rsa.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_poly1305.data b/tests/suites/test_suite_poly1305.data new file mode 100644 index 0000000000..f259e848ba --- /dev/null +++ b/tests/suites/test_suite_poly1305.data @@ -0,0 +1,51 @@ +Poly1305 RFC 7539 Example And Test Vector +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"85d6be7857556d337f4452fe42d506a80103808afb0db2fd4abff6af4149f51b":"a8061dc1305136c6c22b8baf0c0127a9":"43727970746f6772617068696320466f72756d2052657365617263682047726f7570" + +Poly1305 RFC 7539 Test Vector #1 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + +Poly1305 RFC 7539 Test Vector #2 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0000000000000000000000000000000036e5f6b5c5e06070f0efca96227a863e":"36e5f6b5c5e06070f0efca96227a863e":"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f" + +Poly1305 RFC 7539 Test Vector #3 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"36e5f6b5c5e06070f0efca96227a863e00000000000000000000000000000000":"f3477e7cd95417af89a6b8794c310cf0":"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f" + +Poly1305 RFC 7539 Test Vector #4 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"4541669a7eaaee61e708dc7cbcc5eb62":"2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e" + +Poly1305 RFC 7539 Test Vector #5 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0200000000000000000000000000000000000000000000000000000000000000":"03000000000000000000000000000000":"ffffffffffffffffffffffffffffffff" + +Poly1305 RFC 7539 Test Vector #6 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"02000000000000000000000000000000ffffffffffffffffffffffffffffffff":"03000000000000000000000000000000":"02000000000000000000000000000000" + +Poly1305 RFC 7539 Test Vector #7 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0100000000000000000000000000000000000000000000000000000000000000":"05000000000000000000000000000000":"fffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffff11000000000000000000000000000000" + +Poly1305 RFC 7539 Test Vector #8 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0100000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"fffffffffffffffffffffffffffffffffbfefefefefefefefefefefefefefefe01010101010101010101010101010101" + +Poly1305 RFC 7539 Test Vector #9 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0200000000000000000000000000000000000000000000000000000000000000":"faffffffffffffffffffffffffffffff":"fdffffffffffffffffffffffffffffff" + +Poly1305 RFC 7539 Test Vector #10 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0100000000000000040000000000000000000000000000000000000000000000":"14000000000000005500000000000000":"e33594d7505e43b900000000000000003394d7505e4379cd01000000000000000000000000000000000000000000000001000000000000000000000000000000" + +Poly1305 RFC 7539 Test Vector #11 +depends_on:MBEDTLS_POLY1305_C +mbedtls_poly1305:"0100000000000000040000000000000000000000000000000000000000000000":"13000000000000000000000000000000":"e33594d7505e43b900000000000000003394d7505e4379cd010000000000000000000000000000000000000000000000" + +Poly1305 Selftest +depends_on:MBEDTLS_SELF_TEST:MBEDTLS_POLY1305_C +poly1305_selftest: diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function new file mode 100644 index 0000000000..af69a03126 --- /dev/null +++ b/tests/suites/test_suite_poly1305.function @@ -0,0 +1,35 @@ +/* BEGIN_HEADER */ +#include "mbedtls/poly1305.h" +#include +/* END_HEADER */ + +/* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C */ +void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src_string ) +{ + unsigned char src_str[10000]; + unsigned char mac_str[100]; + unsigned char key[32]; + unsigned char mac[16]; + size_t src_len; + + memset(src_str, 0x00, 10000); + memset(mac_str, 0x00, 100); + memset(key, 0x00, 32); + memset(mac, 0x00, 16); + + src_len = unhexify( src_str, hex_src_string ); + unhexify( key, hex_key_string ); + + mbedtls_poly1305_mac( key, src_len, src_str, mac ); + hexify( mac_str, mac, 16 ); + + TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C:MBEDTLS_SELF_TEST */ +void poly1305_selftest() +{ + TEST_ASSERT( mbedtls_poly1305_self_test( 0 ) == 0 ); +} +/* END_CASE */ From b8025c58265e3fe89d123900477818c57b94434c Mon Sep 17 00:00:00 2001 From: Daniel King Date: Tue, 17 May 2016 14:43:01 -0300 Subject: [PATCH 0305/1100] Implement AEAD-ChaCha20-Poly1305. This implementation is based off the description in RFC 7539. The ChaCha20 code is also updated to provide a means of generating keystream blocks with arbitrary counter values. This is used to generated the one-time Poly1305 key in the AEAD construction. --- include/mbedtls/aead_chacha20_poly1305.h | 224 +++++++++ include/mbedtls/chacha20.h | 21 + include/mbedtls/config.h | 23 + include/mbedtls/error.h | 1 + library/CMakeLists.txt | 1 + library/Makefile | 3 +- library/aead_chacha20_poly1305.c | 463 ++++++++++++++++++ library/chacha20.c | 96 ++-- library/error.c | 11 + library/version_features.c | 3 + scripts/generate_errors.pl | 3 +- tests/CMakeLists.txt | 1 + tests/Makefile | 8 +- .../test_suite_aead_chacha20_poly1305.data | 19 + ...test_suite_aead_chacha20_poly1305.function | 109 +++++ 15 files changed, 954 insertions(+), 32 deletions(-) create mode 100644 include/mbedtls/aead_chacha20_poly1305.h create mode 100644 library/aead_chacha20_poly1305.c create mode 100644 tests/suites/test_suite_aead_chacha20_poly1305.data create mode 100644 tests/suites/test_suite_aead_chacha20_poly1305.function diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/aead_chacha20_poly1305.h new file mode 100644 index 0000000000..a1ccf319eb --- /dev/null +++ b/include/mbedtls/aead_chacha20_poly1305.h @@ -0,0 +1,224 @@ +/** + * \file aead_chacha20_poly1305.h + * + * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_AEAD_CHACHA20_POLY1305_H +#define MBEDTLS_AEAD_CHACHA20_POLY1305_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) + +#include "chacha20.h" +#include "poly1305.h" + +#define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ + +typedef enum +{ + MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, + MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT +} +mbedtls_aead_chacha20_poly1305_mode_t; + +typedef struct +{ + mbedtls_chacha20_context chacha20_ctx; /** ChaCha20 context */ + mbedtls_poly1305_context poly1305_ctx; /** Poly1305 context */ + uint64_t aad_len; /** Length (bytes) of the Additional Authenticated Data */ + uint64_t ciphertext_len; /** Length (bytes) of the ciphertext */ + int state; /** Current state of the context */ + mbedtls_aead_chacha20_poly1305_mode_t mode; /** Cipher mode (encrypt or decrypt) */ +} +mbedtls_aead_chacha20_poly1305_context; + +/** + * \brief Initialize ChaCha20-Poly1305 context + * + * \param ctx ChaCha20-Poly1305 context to be initialized + */ +void mbedtls_aead_chacha20_poly1305_init( mbedtls_aead_chacha20_poly1305_context *ctx ); + +/** + * \brief Clear ChaCha20-Poly1305 context + * + * \param ctx ChaCha20-Poly1305 context to be cleared + */ +void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context *ctx ); + +/** + * \brief Set the ChaCha20-Poly1305 symmetric encryption key. + * + * \param ctx The ChaCha20-Poly1305 context. + * \param key The 256-bit (32 bytes) key. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if \p ctx or \p key are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_context *ctx, + const unsigned char key[32] ); + +/** + * \brief Setup ChaCha20-Poly1305 context for encryption or decryption. + * + * \note If the context is being used for AAD only (no data to + * encrypt or decrypt) then \p mode can be set to any value. + * + * \param ctx The ChaCha20-Poly1305 context. + * \param nonce The nonce/IV to use for the message. This must be unique + * for every message encrypted under the same key. + * \param mode Specifies whether the context is used to encrypt or + * decrypt data. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if \p ctx or \p mac are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_context *ctx, + const unsigned char nonce[12], + mbedtls_aead_chacha20_poly1305_mode_t mode ); + +/** + * \brief Process additional authenticated data (AAD). + * + * This function processes data that is authenticated, but + * not encrypted. + * + * \note This function is called before data is encrypted/decrypted. + * I.e. call this function to process the AAD before calling + * mbedtls_aead_chacha20_poly1305_update. + * + * You may call this function multiple times to process + * an arbitrary amount of AAD. It is permitted to call + * this function 0 times, if no AAD is used. + * + * This function cannot be called any more if data has + * been processed by mbedtls_aead_chacha20_poly1305_update, + * or if the context has been finished. + * + * \param ctx The ChaCha20-Poly1305 context. + * \param aad_len The length (in bytes) of the AAD. The length has no + * restrictions. + * \param aad Buffer containing the AAD. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if \p ctx or \p aad are NULL. + * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * the context has not been setup, the context has been + * finished, or if the AAD has been finished. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_context *ctx, + size_t aad_len, + const unsigned char *aad ); + +/** + * \brief Encrypt/decrypt data. + * + * The direction (encryption or decryption) depends on the + * mode that was given when calling + * mbedtls_aead_chacha20_poly1305_starts. + * + * You may call this function multiple times to process + * an arbitrary amount of data. It is permitted to call + * this function 0 times, if no data is to be encrypted + * or decrypted. + * + * \param ctx The ChaCha20-Poly1305 context. + * \param len The length (in bytes) of the data to encrypt or decrypt. + * \param input Buffer containing the data to encrypt or decrypt. + * \param output Buffer to where the encrypted or decrypted data is written. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if \p ctx, \p input, or \p output are NULL. + * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * the context has not been setup, or if the context has been + * finished. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_context *ctx, + size_t len, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief Compute the ChaCha20-Poly1305 MAC. + * + * \param ctx The ChaCha20-Poly1305 context. + * \param mac Buffer to where the 128-bit (16 bytes) MAC is written. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if \p ctx or \p mac are NULL. + * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * the context has not been setup. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx, + unsigned char mac[16] ); + +#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ +#include "aead_chacha20_poly1305_alt.h" +#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ + +/** + * \brief Encrypt or decrypt data, and produce a MAC with ChaCha20-Poly1305. + * + * \param key The 256-bit (32 bytes) encryption key to use. + * \param nonce The 96-bit (12 bytes) nonce/IV to use. + * \param mode Specifies whether the data in the \p input buffer is to + * be encrypted or decrypted. If there is no data to encrypt + * or decrypt (i.e. \p ilen is 0) then the value of this + * parameter does not matter. + * \param aad_len The length (in bytes) of the AAD data to process. + * \param aad Buffer containing the additional authenticated data (AAD). + * \param ilen The length (in bytes) of the data to encrypt or decrypt. + * \param input Buffer containing the data to encrypt or decrypt. + * \param output Buffer to where the encrypted or decrypted data is written. + * \param mac Buffer to where the computed 128-bit (16 bytes) MAC is written. + * + * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * if one or more of the required parameters are NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_aead_chacha20_poly1305_crypt_and_mac( const unsigned char key[32], + const unsigned char nonce[12], + mbedtls_aead_chacha20_poly1305_mode_t mode, + size_t aad_len, + const unsigned char *aad, + size_t ilen, + const unsigned char *input, + unsigned char *output, + unsigned char mac[16] ); + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_aead_chacha20_poly1305_self_test( int verbose ); + +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_H */ diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index d23618ee06..ab87f66b90 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -99,6 +99,27 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, const unsigned char nonce[12], uint32_t counter ); +/** + * \brief Generates a block of keystream bytes for a specific counter value. + * + * This function uses the key and nonce previously set in + * the context (via mbedtls_chacha20_setkey and + * mbedtls_chacha20_starts), but ignores the previously + * set counter and uses the counter given as the parameter to + * this function. + * + * \param ctx The ChaCha20 context. This context is not modified. + * \param counter The counter value to use. + * \param keystream Buffer to where the generated keystream bytes are written. + * + * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or keystream are + * NULL. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, + uint32_t counter, + unsigned char keystream[64] ); + /** * \brief Encrypt or decrypt data. * diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 7d0960a293..22d465cdab 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -269,6 +269,7 @@ * digests and ciphers instead. * */ +//#define MBEDTLS_AEAD_CHACHA20_POLY1305_ALT //#define MBEDTLS_AES_ALT //#define MBEDTLS_ARC4_ALT //#define MBEDTLS_BLOWFISH_ALT @@ -1688,6 +1689,17 @@ */ #define MBEDTLS_AES_C +/** + * \def MBEDTLS_AEAD_CHACHA20_POLY1305_C + * + * Enable the ChaCha20-Poly1305 AEAD algorithm. + * + * Module: library/aead_chacha20_poly1305.c + * + * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C + */ +#define MBEDTLS_AEAD_CHACHA20_POLY1305_C + /** * \def MBEDTLS_ARC4_C * @@ -1837,6 +1849,16 @@ */ #define MBEDTLS_CAMELLIA_C +/** + * \def MBEDTLS_CHACHA20_C + * + * Enable the ChaCha20 block cipher. + * + * Module: library/chacha20.c + * Caller: library/aead_chacha20_poly1305.c + */ +#define MBEDTLS_CHACHA20_C + /** * \def MBEDTLS_CCM_C * @@ -2405,6 +2427,7 @@ * Enable the Poly1305 MAC algorithm. * * Module: library/poly1305.c + * Caller: library/aead_chacha20_poly1305.c */ #define MBEDTLS_POLY1305_C diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index feeda79ed5..72b7f18ffd 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -78,6 +78,7 @@ * SHA512 1 0x0039-0x0039 * CHACHA20 1 0x003B-0x003B * POLY1305 1 0x0041-0x0041 + * AEAD_CHACHA20_POLY1305 2 0x0047-0x0049 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 251b6c6252..b8f663d9cd 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -3,6 +3,7 @@ option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF) option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF) set(src_crypto + aead_chacha20_poly1305.c aes.c aesni.c arc4.c diff --git a/library/Makefile b/library/Makefile index 5fd693b25a..de4bd5c42a 100644 --- a/library/Makefile +++ b/library/Makefile @@ -47,7 +47,8 @@ ifdef WINDOWS_BUILD DLEXT=dll endif -OBJS_CRYPTO= aes.o aesni.o arc4.o \ +OBJS_CRYPTO= aead_chacha20_poly1305.o \ + aes.o aesni.o arc4.o \ asn1parse.o asn1write.o base64.o \ bignum.o blowfish.o camellia.o \ ccm.o chacha20.o \ diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c new file mode 100644 index 0000000000..ab29dfa1b1 --- /dev/null +++ b/library/aead_chacha20_poly1305.c @@ -0,0 +1,463 @@ +/** + * \file aead_chacha20_poly1305.c + * + * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. + * + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + +#include "mbedtls/aead_chacha20_poly1305.h" +#include + +#if defined(MBEDTLS_SELF_TEST) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST */ + +#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) + +#define AEAD_CHACHA20_POLY1305_STATE_INIT ( 0 ) +#define AEAD_CHACHA20_POLY1305_STATE_AAD ( 1 ) +#define AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ( 2 ) /* Encrypting or decrypting */ +#define AEAD_CHACHA20_POLY1305_STATE_FINISHED ( 3 ) + +/* Implementation that should never be optimized out by the compiler */ +static void mbedtls_zeroize( void *v, size_t n ) { + volatile unsigned char *p = v; while( n-- ) *p++ = 0; +} + +/** + * \brief Adds padding bytes (zeroes) to pad the AAD for Poly1305. + * + * \param ctx The ChaCha20-Poly1305 context. + */ +static void mbedtls_aead_chacha20_poly1305_pad_aad( mbedtls_aead_chacha20_poly1305_context *ctx ) +{ + uint32_t partial_block_len = (uint32_t)( ctx->aad_len % 16U ); + unsigned char zeroes[15]; + + if ( partial_block_len > 0U ) + { + memset( zeroes, 0, sizeof(zeroes) ); + (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, + 16U - partial_block_len, + zeroes ); + } +} + +/** + * \brief Adds padding bytes (zeroes) to pad the ciphertext for Poly1305. + * + * \param ctx The ChaCha20-Poly1305 context. + */ +static void mbedtls_aead_chacha20_poly1305_pad_ciphertext( mbedtls_aead_chacha20_poly1305_context *ctx ) +{ + uint32_t partial_block_len = (uint32_t)( ctx->ciphertext_len % 16U ); + unsigned char zeroes[15]; + + if ( partial_block_len > 0U ) + { + memset( zeroes, 0, sizeof(zeroes) ); + (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, + 16U - partial_block_len, + zeroes ); + } +} + +void mbedtls_aead_chacha20_poly1305_init( mbedtls_aead_chacha20_poly1305_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_chacha20_init( &ctx->chacha20_ctx ); + mbedtls_poly1305_init( &ctx->poly1305_ctx ); + ctx->aad_len = 0U; + ctx->ciphertext_len = 0U; + ctx->state = AEAD_CHACHA20_POLY1305_STATE_INIT; + ctx->mode = MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT; + } +} + +void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context *ctx ) +{ + if ( ctx != NULL ) + { + mbedtls_chacha20_free( &ctx->chacha20_ctx ); + mbedtls_poly1305_free( &ctx->poly1305_ctx ); + ctx->aad_len = 0U; + ctx->ciphertext_len = 0U; + ctx->state = AEAD_CHACHA20_POLY1305_STATE_INIT; + ctx->mode = MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT; + } +} + +int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_context *ctx, + const unsigned char key[32] ) +{ + int result; + + if ( ( ctx == NULL ) || ( key == NULL ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } + + result = mbedtls_chacha20_setkey( &ctx->chacha20_ctx, key ); + + return( result ); +} + +int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_context *ctx, + const unsigned char nonce[12], + mbedtls_aead_chacha20_poly1305_mode_t mode ) +{ + int result; + unsigned char poly1305_key[64]; + + if ( ( ctx == NULL ) || ( nonce == NULL ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } + + result = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 1U ); + if ( result != 0 ) + goto cleanup; + + /* Generate the Poly1305 key by getting the ChaCha20 keystream output with counter = 0. + * Only the first 256-bits (32 bytes) of the key is used for Poly1305. + * The other 256 bits are discarded. + */ + result = mbedtls_chacha20_keystream_block( &ctx->chacha20_ctx, 0U, poly1305_key ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_poly1305_setkey( &ctx->poly1305_ctx, poly1305_key ); + + if ( result == 0 ) + { + ctx->aad_len = 0U; + ctx->ciphertext_len = 0U; + ctx->state = AEAD_CHACHA20_POLY1305_STATE_AAD; + ctx->mode = mode; + } + +cleanup: + mbedtls_zeroize( poly1305_key, 64U ); + return( result ); +} + +int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_context *ctx, + size_t aad_len, + const unsigned char *aad ) +{ + if ( ( ctx == NULL ) || ( aad == NULL ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } + else if ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) + { + return (MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + } + + ctx->aad_len += aad_len; + + return ( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad_len, aad ) ); +} + +int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_context *ctx, + size_t len, + const unsigned char *input, + unsigned char *output ) +{ + if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } + else if ( ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) && + ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + } + + if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_AAD ) + { + ctx->state = AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT; + + mbedtls_aead_chacha20_poly1305_pad_aad( ctx ); + } + + ctx->ciphertext_len += len; + + if ( ctx->mode == MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT ) + { + /* Note: the following functions return an error only if one or more of + * the input pointers are NULL. Since we have checked their validity + * above, we can safety ignore the return value. + */ + (void)mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, len, output ); + } + else /* DECRYPT */ + { + (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, len, input ); + (void)mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + } + + return( 0 ); +} + +int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx, + unsigned char mac[16] ) +{ + unsigned char len_block[16]; + + if ( ( ctx == NULL ) || ( mac == NULL ) ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } + else if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_INIT ) + { + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + } + + if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_AAD ) + { + mbedtls_aead_chacha20_poly1305_pad_aad( ctx ); + } + else if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) + { + mbedtls_aead_chacha20_poly1305_pad_ciphertext( ctx ); + } + + ctx->state = AEAD_CHACHA20_POLY1305_STATE_FINISHED; + + /* The lengths of the AAD and ciphertext are processed by + * Poly1305 as the final 128-bit block, encoded as little-endian integers. + */ + len_block[0] = (unsigned char)ctx->aad_len; + len_block[1] = (unsigned char)( ctx->aad_len >> 8 ); + len_block[2] = (unsigned char)( ctx->aad_len >> 16 ); + len_block[3] = (unsigned char)( ctx->aad_len >> 24 ); + len_block[4] = (unsigned char)( ctx->aad_len >> 32 ); + len_block[5] = (unsigned char)( ctx->aad_len >> 40 ); + len_block[6] = (unsigned char)( ctx->aad_len >> 48 ); + len_block[7] = (unsigned char)( ctx->aad_len >> 56 ); + len_block[8] = (unsigned char)ctx->ciphertext_len; + len_block[9] = (unsigned char)( ctx->ciphertext_len >> 8 ); + len_block[10] = (unsigned char)( ctx->ciphertext_len >> 16 ); + len_block[11] = (unsigned char)( ctx->ciphertext_len >> 24 ); + len_block[12] = (unsigned char)( ctx->ciphertext_len >> 32 ); + len_block[13] = (unsigned char)( ctx->ciphertext_len >> 40 ); + len_block[14] = (unsigned char)( ctx->ciphertext_len >> 48 ); + len_block[15] = (unsigned char)( ctx->ciphertext_len >> 56 ); + + (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, 16U, len_block ); + (void)mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); + + return( 0 ); +} + +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ + +int mbedtls_aead_chacha20_poly1305_crypt_and_mac ( const unsigned char key[32], + const unsigned char nonce[12], + mbedtls_aead_chacha20_poly1305_mode_t mode, + size_t aad_len, + const unsigned char *aad, + size_t ilen, + const unsigned char *input, + unsigned char *output, + unsigned char mac[16] ) +{ + mbedtls_aead_chacha20_poly1305_context ctx; + int result; + + mbedtls_aead_chacha20_poly1305_init( &ctx ); + + result = mbedtls_aead_chacha20_poly1305_setkey( &ctx, key ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_aead_chacha20_poly1305_starts( &ctx, nonce, mode ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_aead_chacha20_poly1305_update_aad( &ctx, aad_len, aad ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_aead_chacha20_poly1305_update( &ctx, ilen, input, output ); + if ( result != 0 ) + goto cleanup; + + result = mbedtls_aead_chacha20_poly1305_finish( &ctx, mac ); + +cleanup: + mbedtls_aead_chacha20_poly1305_free( &ctx ); + return( result ); +} + +#if defined(MBEDTLS_SELF_TEST) + +static const unsigned char test_key[1][32] = +{ + { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f + } +}; + +static const unsigned char test_nonce[1][12] = +{ + { + 0x07, 0x00, 0x00, 0x00, /* 32-bit common part */ + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 /* 64-bit IV */ + } +}; + +static const unsigned char test_aad[1][12] = +{ + { + 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, + 0xc4, 0xc5, 0xc6, 0xc7 + } +}; + +static const size_t test_aad_len[1] = +{ + 12U +}; + +static const unsigned char test_input[1][114] = +{ + { + 0x4c, 0x61, 0x64, 0x69, 0x65, 0x73, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x47, 0x65, 0x6e, 0x74, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x27, 0x39, 0x39, + 0x3a, 0x20, 0x49, 0x66, 0x20, 0x49, 0x20, 0x63, + 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x66, + 0x65, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6f, + 0x6e, 0x6c, 0x79, 0x20, 0x6f, 0x6e, 0x65, 0x20, + 0x74, 0x69, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x74, 0x75, + 0x72, 0x65, 0x2c, 0x20, 0x73, 0x75, 0x6e, 0x73, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x77, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, + 0x74, 0x2e + } +}; + +static const unsigned char test_output[1][114] = +{ + { + 0xd3, 0x1a, 0x8d, 0x34, 0x64, 0x8e, 0x60, 0xdb, + 0x7b, 0x86, 0xaf, 0xbc, 0x53, 0xef, 0x7e, 0xc2, + 0xa4, 0xad, 0xed, 0x51, 0x29, 0x6e, 0x08, 0xfe, + 0xa9, 0xe2, 0xb5, 0xa7, 0x36, 0xee, 0x62, 0xd6, + 0x3d, 0xbe, 0xa4, 0x5e, 0x8c, 0xa9, 0x67, 0x12, + 0x82, 0xfa, 0xfb, 0x69, 0xda, 0x92, 0x72, 0x8b, + 0x1a, 0x71, 0xde, 0x0a, 0x9e, 0x06, 0x0b, 0x29, + 0x05, 0xd6, 0xa5, 0xb6, 0x7e, 0xcd, 0x3b, 0x36, + 0x92, 0xdd, 0xbd, 0x7f, 0x2d, 0x77, 0x8b, 0x8c, + 0x98, 0x03, 0xae, 0xe3, 0x28, 0x09, 0x1b, 0x58, + 0xfa, 0xb3, 0x24, 0xe4, 0xfa, 0xd6, 0x75, 0x94, + 0x55, 0x85, 0x80, 0x8b, 0x48, 0x31, 0xd7, 0xbc, + 0x3f, 0xf4, 0xde, 0xf0, 0x8e, 0x4b, 0x7a, 0x9d, + 0xe5, 0x76, 0xd2, 0x65, 0x86, 0xce, 0xc6, 0x4b, + 0x61, 0x16 + } +}; + +static const size_t test_input_len[1] = +{ + 114U +}; + +static const unsigned char test_mac[1][16] = +{ + { + 0x1a, 0xe1, 0x0b, 0x59, 0x4f, 0x09, 0xe2, 0x6a, + 0x7e, 0x90, 0x2e, 0xcb, 0xd0, 0x60, 0x06, 0x91 + } +}; + +int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) +{ + size_t i; + int result; + unsigned char output[200]; + unsigned char mac[16]; + + for ( i = 0U; i < 1U; i++ ) + { + result = mbedtls_aead_chacha20_poly1305_crypt_and_mac( test_key[i], + test_nonce[i], + MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, + test_aad_len[i], + test_aad[i], + test_input_len[i], + test_input[i], + output, + mac ); + if ( result != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "ChaCha20-Poly1305 test %zi error code: %i\n", i, result ); + } + return( -1 ); + } + + if ( memcmp( output, test_output[i], test_input_len[i] ) != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "ChaCha20-Poly1305 test %zi failure (wrong output)\n", i ); + } + return( -1 ); + } + + if ( memcmp( mac, test_mac[i], 16U ) != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "ChaCha20-Poly1305 test %zi failure (wrong MAC)\n", i ); + } + return( -1 ); + } + } + + return( 0 ); +} + +#endif /* MBEDTLS_SELF_TEST */ + +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ diff --git a/library/chacha20.c b/library/chacha20.c index 8206a3bf0d..b20c7ad551 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -134,46 +134,47 @@ static void mbedtls_chacha20_inner_block( uint32_t state[16] ) * \param working_state This state is used as a temporary working area. * \param keystream Generated keystream bytes are written to this buffer. */ -static void mbedtls_chacha20_block( mbedtls_chacha20_context *ctx, +static void mbedtls_chacha20_block( const uint32_t initial_state[16], + uint32_t working_state[16], unsigned char keystream[64] ) { size_t i; size_t offset; - memcpy( ctx->working_state, - ctx->initial_state, - sizeof(ctx->initial_state) ); + memcpy( working_state, + initial_state, + CHACHA20_BLOCK_SIZE_BYTES ); for ( i = 0U; i < 10U; i++ ) { - mbedtls_chacha20_inner_block( ctx->working_state ); + mbedtls_chacha20_inner_block( working_state ); } - ctx->working_state[0] += ctx->initial_state[0]; - ctx->working_state[1] += ctx->initial_state[1]; - ctx->working_state[2] += ctx->initial_state[2]; - ctx->working_state[3] += ctx->initial_state[3]; - ctx->working_state[4] += ctx->initial_state[4]; - ctx->working_state[5] += ctx->initial_state[5]; - ctx->working_state[6] += ctx->initial_state[6]; - ctx->working_state[7] += ctx->initial_state[7]; - ctx->working_state[8] += ctx->initial_state[8]; - ctx->working_state[9] += ctx->initial_state[9]; - ctx->working_state[10] += ctx->initial_state[10]; - ctx->working_state[11] += ctx->initial_state[11]; - ctx->working_state[12] += ctx->initial_state[12]; - ctx->working_state[13] += ctx->initial_state[13]; - ctx->working_state[14] += ctx->initial_state[14]; - ctx->working_state[15] += ctx->initial_state[15]; + working_state[0] += initial_state[0]; + working_state[1] += initial_state[1]; + working_state[2] += initial_state[2]; + working_state[3] += initial_state[3]; + working_state[4] += initial_state[4]; + working_state[5] += initial_state[5]; + working_state[6] += initial_state[6]; + working_state[7] += initial_state[7]; + working_state[8] += initial_state[8]; + working_state[9] += initial_state[9]; + working_state[10] += initial_state[10]; + working_state[11] += initial_state[11]; + working_state[12] += initial_state[12]; + working_state[13] += initial_state[13]; + working_state[14] += initial_state[14]; + working_state[15] += initial_state[15]; for ( i = 0U; i < 16; i++ ) { offset = i * 4U; - keystream[offset ] = (unsigned char) ctx->working_state[i]; - keystream[offset + 1U] = (unsigned char)( ctx->working_state[i] >> 8 ); - keystream[offset + 2U] = (unsigned char)( ctx->working_state[i] >> 16 ); - keystream[offset + 3U] = (unsigned char)( ctx->working_state[i] >> 24 ); + keystream[offset ] = (unsigned char) working_state[i]; + keystream[offset + 1U] = (unsigned char)( working_state[i] >> 8 ); + keystream[offset + 2U] = (unsigned char)( working_state[i] >> 16 ); + keystream[offset + 3U] = (unsigned char)( working_state[i] >> 24 ); } } @@ -245,6 +246,43 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, return( 0 ); } +int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, + uint32_t counter, + unsigned char keystream[64] ) +{ + uint32_t initial_state[16]; + uint32_t working_state[16]; + + if ( ( ctx == NULL ) || ( keystream == NULL ) ) + { + return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + } + + initial_state[0] = ctx->initial_state[0]; + initial_state[1] = ctx->initial_state[1]; + initial_state[2] = ctx->initial_state[2]; + initial_state[3] = ctx->initial_state[3]; + initial_state[4] = ctx->initial_state[4]; + initial_state[5] = ctx->initial_state[5]; + initial_state[6] = ctx->initial_state[6]; + initial_state[7] = ctx->initial_state[7]; + initial_state[8] = ctx->initial_state[8]; + initial_state[9] = ctx->initial_state[9]; + initial_state[10] = ctx->initial_state[10]; + initial_state[11] = ctx->initial_state[11]; + initial_state[12] = counter; + initial_state[13] = ctx->initial_state[13]; + initial_state[14] = ctx->initial_state[14]; + initial_state[15] = ctx->initial_state[15]; + + mbedtls_chacha20_block( initial_state, working_state, keystream ); + + mbedtls_zeroize( initial_state, sizeof(initial_state) ); + mbedtls_zeroize( working_state, sizeof(working_state) ); + + return ( 0 ); +} + int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, @@ -271,7 +309,7 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, /* Process full blocks */ while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) { - mbedtls_chacha20_block( ctx, &output[offset] ); + mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, &output[offset] ); for ( i = 0U; i < 64U; i += 8U ) { @@ -288,14 +326,14 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, /* Increment counter */ ctx->initial_state[CHACHA20_CTR_INDEX]++; - offset += 64U; - size -= 64U; + offset += CHACHA20_BLOCK_SIZE_BYTES; + size -= CHACHA20_BLOCK_SIZE_BYTES; } /* Last (partial) block */ if ( size > 0U ) { - mbedtls_chacha20_block( ctx, ctx->keystream8 ); + mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); for ( i = 0U; i < size; i++) { diff --git a/library/error.c b/library/error.c index 12bd2101b3..d0a75ca5a7 100644 --- a/library/error.c +++ b/library/error.c @@ -41,6 +41,10 @@ #include +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#include "mbedtls/aead_chacha20_poly1305.h" +#endif + #if defined(MBEDTLS_AES_C) #include "mbedtls/aes.h" #endif @@ -575,6 +579,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) // Low level error codes // // BEGIN generated code +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if( use_ret == -(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "AEAD_CHACHA20_POLY1305 - Invalid input parameter(s)" ); + if( use_ret == -(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE) ) + mbedtls_snprintf( buf, buflen, "AEAD_CHACHA20_POLY1305 - The requested operation is not permitted in the current state" ); +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ + #if defined(MBEDTLS_AES_C) if( use_ret == -(MBEDTLS_ERR_AES_INVALID_KEY_LENGTH) ) mbedtls_snprintf( buf, buflen, "AES - Invalid key length" ); diff --git a/library/version_features.c b/library/version_features.c index babf2c7824..64aa9f6415 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -516,6 +516,9 @@ static const char *features[] = { #if defined(MBEDTLS_AES_C) "MBEDTLS_AES_C", #endif /* MBEDTLS_AES_C */ +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + "MBEDTLS_AEAD_CHACHA20_POLY1305_C", +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ #if defined(MBEDTLS_ARC4_C) "MBEDTLS_ARC4_C", #endif /* MBEDTLS_ARC4_C */ diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index 1dac39bf17..b5d1413224 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -29,7 +29,7 @@ if( @ARGV ) { my $error_format_file = $data_dir.'/error.fmt'; -my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH +my @low_level_modules = qw( AEAD_CHACHA20_POLY1305 AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH CAMELLIA CCM CHACHA20 CMAC CTR_DRBG DES ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 NET OID PADLOCK PBKDF2 POLY1305 RIPEMD160 @@ -88,6 +88,7 @@ foreach my $line (@matches) $module_name = "BIGNUM" if ($module_name eq "MPI"); $module_name = "CTR_DRBG" if ($module_name eq "CTR"); $module_name = "HMAC_DRBG" if ($module_name eq "HMAC"); + $module_name = "AEAD_CHACHA20_POLY1305" if ($module_name eq "AEAD"); my $define_name = $module_name; $define_name = "X509_USE,X509_CREATE" if ($define_name eq "X509"); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 82f155419f..03797ec326 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -44,6 +44,7 @@ if(MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX-") endif(MSVC) +add_test_suite(aead_chacha20_poly1305) add_test_suite(aes aes.ecb) add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) diff --git a/tests/Makefile b/tests/Makefile index 90b2028f52..4a23e64cc7 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -45,7 +45,8 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ +APPS = test_suite_aead_chacha20_poly1305$(EXEXT) \ + test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_aes.cfb$(EXEXT) test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ @@ -203,6 +204,11 @@ test_suite_hmac_drbg.pr.c : suites/test_suite_hmac_drbg.function suites/test_sui echo " Gen $@" perl scripts/generate_code.pl suites $* $* + +test_suite_aead_chacha20_poly1305$(EXEXT): test_suite_aead_chacha20_poly1305.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_aes.ecb$(EXEXT): test_suite_aes.ecb.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_aead_chacha20_poly1305.data b/tests/suites/test_suite_aead_chacha20_poly1305.data new file mode 100644 index 0000000000..1cbfa24dad --- /dev/null +++ b/tests/suites/test_suite_aead_chacha20_poly1305.data @@ -0,0 +1,19 @@ +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +mbedtls_aead_chacha20_poly1305_enc:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"1ae10b594f09e26a7e902ecbd0600691" + +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +mbedtls_aead_chacha20_poly1305_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691" + +ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Encrypt) +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +mbedtls_aead_chacha20_poly1305_enc:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38" + +ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt) +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +mbedtls_aead_chacha20_poly1305_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38" + +ChaCha20-Poly1305 Selftest +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C:MBEDTLS_SELF_TEST +aead_chacha20_poly1305_selftest: diff --git a/tests/suites/test_suite_aead_chacha20_poly1305.function b/tests/suites/test_suite_aead_chacha20_poly1305.function new file mode 100644 index 0000000000..6abd054145 --- /dev/null +++ b/tests/suites/test_suite_aead_chacha20_poly1305.function @@ -0,0 +1,109 @@ +/* BEGIN_HEADER */ +#include "mbedtls/aead_chacha20_poly1305.h" +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE */ +void mbedtls_aead_chacha20_poly1305_enc( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) +{ + unsigned char key_str[32]; + unsigned char nonce_str[12]; + unsigned char aad_str[10000]; + unsigned char input_str[10000]; + unsigned char output_str[10000]; + unsigned char mac_str[16]; + unsigned char output[10000]; + unsigned char mac[16]; + size_t input_len; + size_t output_len; + size_t aad_len; + size_t key_len; + size_t nonce_len; + size_t mac_len; + + memset( key_str, 0x00, 32 ); + memset( nonce_str, 0x00, 12 ); + memset( aad_str, 0x00, 10000 ); + memset( input_str, 0x00, 10000 ); + memset( output_str, 0x00, 10000 ); + memset( mac_str, 0x00, 16 ); + + aad_len = unhexify( aad_str, hex_aad_string ); + input_len = unhexify( input_str, hex_input_string ); + output_len = unhexify( output_str, hex_output_string ); + key_len = unhexify( key_str, hex_key_string ); + nonce_len = unhexify( nonce_str, hex_nonce_string ); + mac_len = unhexify( mac_str, hex_mac_string ); + + TEST_ASSERT( key_len == 32 ); + TEST_ASSERT( nonce_len == 12 ); + TEST_ASSERT( mac_len == 16 ); + + mbedtls_aead_chacha20_poly1305_crypt_and_mac( key_str, nonce_str, + MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, + aad_len, aad_str, + input_len, input_str, output, + mac ); + + TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); + TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_aead_chacha20_poly1305_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) +{ + unsigned char key_str[32]; + unsigned char nonce_str[12]; + unsigned char aad_str[10000]; + unsigned char input_str[10000]; + unsigned char output_str[10000]; + unsigned char mac_str[16]; + unsigned char output[10000]; + unsigned char mac[16]; + size_t input_len; + size_t output_len; + size_t aad_len; + size_t key_len; + size_t nonce_len; + size_t mac_len; + + memset( key_str, 0x00, 32 ); + memset( nonce_str, 0x00, 12 ); + memset( aad_str, 0x00, 10000 ); + memset( input_str, 0x00, 10000 ); + memset( output_str, 0x00, 10000 ); + memset( mac_str, 0x00, 16 ); + + aad_len = unhexify( aad_str, hex_aad_string ); + input_len = unhexify( input_str, hex_input_string ); + output_len = unhexify( output_str, hex_output_string ); + key_len = unhexify( key_str, hex_key_string ); + nonce_len = unhexify( nonce_str, hex_nonce_string ); + mac_len = unhexify( mac_str, hex_mac_string ); + + TEST_ASSERT( key_len == 32 ); + TEST_ASSERT( nonce_len == 12 ); + TEST_ASSERT( mac_len == 16 ); + + mbedtls_aead_chacha20_poly1305_crypt_and_mac( key_str, nonce_str, + MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT, + aad_len, aad_str, + input_len, input_str, output, + mac ); + + TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); + TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ +void aead_chacha20_poly1305_selftest() +{ + TEST_ASSERT( mbedtls_aead_chacha20_poly1305_self_test( 1 ) == 0 ); +} +/* END_CASE */ From a310c5e42baf0ca4192228be1f04ca95491b57b4 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Tue, 17 May 2016 15:56:26 -0300 Subject: [PATCH 0306/1100] Allow some parameters to be NULL if the length is 0. This change permits users of the ChaCha20/Poly1305 algorithms (and the AEAD construction thereof) to pass NULL pointers for data that they do not need, and avoids the need to provide a valid buffer for data that is not used. --- include/mbedtls/aead_chacha20_poly1305.h | 6 ++++++ include/mbedtls/chacha20.h | 2 ++ include/mbedtls/poly1305.h | 1 + library/aead_chacha20_poly1305.c | 12 +++++++++++- library/chacha20.c | 7 ++++++- library/poly1305.c | 9 +++++++-- 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/aead_chacha20_poly1305.h index a1ccf319eb..6c8e420b52 100644 --- a/include/mbedtls/aead_chacha20_poly1305.h +++ b/include/mbedtls/aead_chacha20_poly1305.h @@ -124,6 +124,7 @@ int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_contex * \param aad_len The length (in bytes) of the AAD. The length has no * restrictions. * \param aad Buffer containing the AAD. + * This pointer can be NULL if aad_len == 0. * * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned * if \p ctx or \p aad are NULL. @@ -151,7 +152,9 @@ int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_co * \param ctx The ChaCha20-Poly1305 context. * \param len The length (in bytes) of the data to encrypt or decrypt. * \param input Buffer containing the data to encrypt or decrypt. + * This pointer can be NULL if len == 0. * \param output Buffer to where the encrypted or decrypted data is written. + * This pointer can be NULL if len == 0. * * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned * if \p ctx, \p input, or \p output are NULL. @@ -195,9 +198,12 @@ int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_contex * parameter does not matter. * \param aad_len The length (in bytes) of the AAD data to process. * \param aad Buffer containing the additional authenticated data (AAD). + * This pointer can be NULL if aad_len == 0. * \param ilen The length (in bytes) of the data to encrypt or decrypt. * \param input Buffer containing the data to encrypt or decrypt. + * This pointer can be NULL if ilen == 0. * \param output Buffer to where the encrypted or decrypted data is written. + * This pointer can be NULL if ilen == 0. * \param mac Buffer to where the computed 128-bit (16 bytes) MAC is written. * * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index ab87f66b90..ccce122701 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -136,7 +136,9 @@ int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, * \param ctx The ChaCha20 context. * \param size The length (in bytes) to process. This can have any length. * \param input Buffer containing the input data. + * This pointer can be NULL if size == 0. * \param output Buffer containing the output data. + * This pointer can be NULL if size == 0. * * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if the ctx, input, or * output pointers are NULL. diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 1aa55aeee4..ea9364a3cf 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -85,6 +85,7 @@ int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, * \param ctx The Poly1305 context. * \param ilen The input length (in bytes). Any value is accepted. * \param input Buffer containing the input data to Process. + * This pointer can be NULL if ilen == 0. * * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx * or input are NULL. diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index ab29dfa1b1..2dea5c9c54 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -174,10 +174,15 @@ int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_co size_t aad_len, const unsigned char *aad ) { - if ( ( ctx == NULL ) || ( aad == NULL ) ) + if ( ctx == NULL ) { return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); } + else if ( ( aad_len > 0U ) && ( aad == NULL ) ) + { + /* aad pointer is allowed to be NULL if aad_len == 0 */ + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } else if ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) { return (MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); @@ -197,6 +202,11 @@ int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_contex { return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); } + else if ( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) + { + /* input and output pointers are allowed to be NULL if len == 0 */ + return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + } else if ( ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) && ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) ) { diff --git a/library/chacha20.c b/library/chacha20.c index b20c7ad551..351124541b 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -291,10 +291,15 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t offset = 0U; size_t i; - if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) ) + if ( ctx == NULL ) { return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); } + else if ( ( size > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) + { + /* input and output pointers are allowed to be NULL only if size == 0 */ + return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + } /* Use leftover keystream bytes, if available */ while ( ( size > 0U ) && ( ctx->keystream_bytes_used < CHACHA20_BLOCK_SIZE_BYTES ) ) diff --git a/library/poly1305.c b/library/poly1305.c index 9a61a85ce8..f9bdf2c939 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -293,12 +293,17 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, size_t queue_free_len; size_t nblocks; - if ( ( ctx == NULL ) || ( input == NULL ) ) + if ( ctx == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } + else if ( ( ilen > 0U ) && ( input == NULL ) ) + { + /* input pointer is allowed to be NULL only if ilen == 0 */ + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + } - if ( ctx->queue_len > 0U ) + if ( ( remaining > 0U ) && ( ctx->queue_len > 0U ) ) { queue_free_len = ( POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); From 8fe4701abe99a765837e9c995376528e0edff4ac Mon Sep 17 00:00:00 2001 From: Daniel King Date: Tue, 17 May 2016 20:33:28 -0300 Subject: [PATCH 0307/1100] Add ChaCha20+Poly1305 to the Cipher module --- include/mbedtls/cipher.h | 19 +- library/cipher.c | 191 ++++++++++++++++-- library/cipher_wrap.c | 73 +++++++ library/version_features.c | 12 +- tests/CMakeLists.txt | 1 + tests/Makefile | 9 + ...t_suite_cipher.aead_chacha20_poly1305.data | 111 ++++++++++ 7 files changed, 391 insertions(+), 25 deletions(-) create mode 100644 tests/suites/test_suite_cipher.aead_chacha20_poly1305.data diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index c5a50c0d28..f954ccec37 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -37,7 +37,7 @@ #include -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) #define MBEDTLS_CIPHER_MODE_AEAD #endif @@ -147,6 +147,7 @@ typedef enum { MBEDTLS_CIPHER_CAMELLIA_192_CCM, /**< Camellia cipher with 192-bit CCM mode. */ MBEDTLS_CIPHER_CAMELLIA_256_CCM, /**< Camellia cipher with 256-bit CCM mode. */ MBEDTLS_CIPHER_CHACHA20, /**< Chacha20 stream cipher. */ + MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< Chacha20-Poly1305 AEAD cipher. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ @@ -562,11 +563,11 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, */ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) /** * \brief This function adds additional data for AEAD ciphers. - * Only supported with GCM. Must be called - * exactly once, after mbedtls_cipher_reset(). + * Currently supported with GCM and ChaCha20+Poly1305. + * Must be called exactly once, after mbedtls_cipher_reset(). * * \param ctx The generic cipher context. * \param ad The additional data to use. @@ -577,7 +578,7 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); */ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len ); -#endif /* MBEDTLS_GCM_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ /** * \brief The generic cipher update function. It encrypts or @@ -635,10 +636,10 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) /** * \brief This function writes a tag for AEAD ciphers. - * Only supported with GCM. + * Currently supported with GCM and ChaCha20+Poly1305. * Must be called after mbedtls_cipher_finish(). * * \param ctx The generic cipher context. @@ -653,7 +654,7 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, /** * \brief This function checks the tag for AEAD ciphers. - * Only supported with GCM. + * Currently supported with GCM and ChaCha20+Poly1305. * Must be called after mbedtls_cipher_finish(). * * \param ctx The generic cipher context. @@ -665,7 +666,7 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, */ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len ); -#endif /* MBEDTLS_GCM_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ /** * \brief The generic all-in-one encryption/decryption function, diff --git a/library/cipher.c b/library/cipher.c index 68d0c10ff8..b51a40bcc8 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -38,6 +38,10 @@ #include #include +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#include "mbedtls/aead_chacha20_poly1305.h" +#endif + #if defined(MBEDTLS_GCM_C) #include "mbedtls/gcm.h" #endif @@ -65,6 +69,22 @@ #define MBEDTLS_CIPHER_MODE_STREAM #endif +/* Compare the contents of two buffers in constant time. + * Returns 0 if the contents are bitwise identical, otherwise returns + * a non-zero value. */ +static int mbedtls_constant_time_memcmp( const void *v1, const void *v2, size_t len ) +{ + const unsigned char *p1 = (const unsigned char*) v1; + const unsigned char *p2 = (const unsigned char*) v2; + size_t i; + unsigned char diff; + + for( diff = 0, i = 0; i < len; i++ ) + diff |= p1[i] ^ p2[i]; + + return (int)diff; +} + static int supported_init = 0; const int *mbedtls_cipher_list( void ) @@ -263,22 +283,45 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ) return( 0 ); } -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len ) { if( NULL == ctx || NULL == ctx->cipher_info ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { return mbedtls_gcm_starts( (mbedtls_gcm_context *) ctx->cipher_ctx, ctx->operation, ctx->iv, ctx->iv_size, ad, ad_len ); } +#endif + +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if (MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) + { + int result; + mbedtls_aead_chacha20_poly1305_mode_t mode; + + mode = ( ctx->operation == MBEDTLS_ENCRYPT ) + ? MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT + : MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT; + + result = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ctx->iv, + mode ); + if ( result != 0 ) + return( result ); + + return mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ad_len, ad ); + } +#endif return( 0 ); } -#endif /* MBEDTLS_GCM_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ) @@ -340,6 +383,21 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i } #endif + if( input == output && + ( ctx->unprocessed_len != 0 || ilen % mbedtls_cipher_get_block_size( ctx ) ) ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305 ) + { + *olen = ilen; + return mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ilen, input, output ); + } +#endif + #if defined(MBEDTLS_CIPHER_MODE_CBC) if( ctx->cipher_info->mode == MBEDTLS_MODE_CBC ) { @@ -672,7 +730,8 @@ int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, return( 0 ); } - if ( MBEDTLS_CIPHER_CHACHA20 == ctx->cipher_info->type ) + if ( ( MBEDTLS_CIPHER_CHACHA20 == ctx->cipher_info->type ) || + ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) ) { return( 0 ); } @@ -788,7 +847,7 @@ int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, mbedtls_ciph } #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len ) { @@ -798,8 +857,22 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, if( MBEDTLS_ENCRYPT != ctx->operation ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); +#if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) return mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, tag, tag_len ); +#endif + +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) + { + /* Don't allow truncated MAC for Poly1305 */ + if ( tag_len != 16U ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + return mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + tag ); + } +#endif return( 0 ); } @@ -807,6 +880,7 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len ) { + unsigned char check_tag[16]; int ret; if( NULL == ctx || NULL == ctx->cipher_info || @@ -815,12 +889,9 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } +#if defined(MBEDTLS_GCM_C) if( MBEDTLS_MODE_GCM == ctx->cipher_info->mode ) { - unsigned char check_tag[16]; - size_t i; - int diff; - if( tag_len > sizeof( check_tag ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); @@ -831,18 +902,38 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, } /* Check the tag in "constant-time" */ - for( diff = 0, i = 0; i < tag_len; i++ ) - diff |= tag[i] ^ check_tag[i]; - - if( diff != 0 ) + if( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); return( 0 ); } +#endif /* MBEDTLS_GCM_C */ + +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) + { + /* Don't allow truncated MAC for Poly1305 */ + if ( tag_len != sizeof( check_tag ) ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + check_tag ); + if ( ret != 0 ) + { + return( ret ); + } + + /* Check the tag in "constant-time" */ + if( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) + return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); + + return( 0 ); + } +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ return( 0 ); } -#endif /* MBEDTLS_GCM_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ /* * Packet-oriented wrapper for non-AEAD modes @@ -901,6 +992,39 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, tag, tag_len ) ); } #endif /* MBEDTLS_CCM_C */ +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) + { + int ret; + + if ( ( iv_len != ctx->cipher_info->iv_size ) || + ( tag_len != 16U ) ) /* Truncated MAC is not allowed for Poly1305 */ + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + *olen = ilen; + + ret = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + iv, MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ad_len, ad ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ilen, input, output ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + tag ); + return( ret ); + } +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); } @@ -947,6 +1071,47 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, return( ret ); } #endif /* MBEDTLS_CCM_C */ +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) + { + unsigned char check_tag[16]; + int ret; + + if ( ( iv_len != ctx->cipher_info->iv_size ) || + ( tag_len != 16U ) ) /* Truncated MAC is not allowed for Poly1305 */ + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + *olen = ilen; + + ret = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + iv, MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ad_len, ad ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ilen, input, output ); + if ( ret != 0 ) + return( ret ); + + ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + check_tag ); + if ( ret != 0 ) + return( ret ); + + /* Compare the tag in constant time */ + if ( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) + return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); + + return( 0 ); + } +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); } diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index f4e7964dfa..d8c5f0611f 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -33,6 +33,10 @@ #include "mbedtls/cipher_internal.h" +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#include "mbedtls/aead_chacha20_poly1305.h" +#endif + #if defined(MBEDTLS_AES_C) #include "mbedtls/aes.h" #endif @@ -1352,6 +1356,71 @@ static const mbedtls_cipher_info_t chacha20_info = { }; #endif /* MBEDTLS_CHACHA20_C */ +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + +static int aead_chacha20_poly1305_setkey_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + if( key_bitlen != 256U ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + if ( 0 != mbedtls_aead_chacha20_poly1305_setkey( (mbedtls_aead_chacha20_poly1305_context*)ctx, key ) ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + return( 0 ); +} + +static void * aead_chacha20_poly1305_ctx_alloc( void ) +{ + mbedtls_aead_chacha20_poly1305_context *ctx; + ctx = mbedtls_calloc( 1, sizeof( mbedtls_aead_chacha20_poly1305_context ) ); + + if( ctx == NULL ) + return( NULL ); + + mbedtls_aead_chacha20_poly1305_init( ctx ); + + return( ctx ); +} + +static void aead_chacha20_poly1305_ctx_free( void *ctx ) +{ + mbedtls_aead_chacha20_poly1305_free( (mbedtls_aead_chacha20_poly1305_context *) ctx ); + mbedtls_free( ctx ); +} + +static const mbedtls_cipher_base_t aead_chacha20_poly1305_base_info = { + MBEDTLS_CIPHER_ID_CHACHA20, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + aead_chacha20_poly1305_setkey_wrap, + aead_chacha20_poly1305_setkey_wrap, + aead_chacha20_poly1305_ctx_alloc, + aead_chacha20_poly1305_ctx_free +}; +static const mbedtls_cipher_info_t aead_chacha20_poly1305_info = { + MBEDTLS_CIPHER_CHACHA20_POLY1305, + MBEDTLS_MODE_NONE, + 256, + "CHACHA20-POLY1305", + 12, + 0, + 64, + &aead_chacha20_poly1305_base_info +}; +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) static int null_crypt_stream( void *ctx, size_t length, const unsigned char *input, @@ -1511,6 +1580,10 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_CHACHA20, &chacha20_info }, #endif +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + { MBEDTLS_CIPHER_CHACHA20_POLY1305, &aead_chacha20_poly1305_info }, +#endif + #if defined(MBEDTLS_CIPHER_NULL_CIPHER) { MBEDTLS_CIPHER_NULL, &null_cipher_info }, #endif /* MBEDTLS_CIPHER_NULL_CIPHER */ diff --git a/library/version_features.c b/library/version_features.c index 64aa9f6415..b73410c6a7 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -84,6 +84,9 @@ static const char *features[] = { #if defined(MBEDTLS_TIMING_ALT) "MBEDTLS_TIMING_ALT", #endif /* MBEDTLS_TIMING_ALT */ +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) + "MBEDTLS_AEAD_CHACHA20_POLY1305_ALT", +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ #if defined(MBEDTLS_AES_ALT) "MBEDTLS_AES_ALT", #endif /* MBEDTLS_AES_ALT */ @@ -126,6 +129,9 @@ static const char *features[] = { #if defined(MBEDTLS_MD5_ALT) "MBEDTLS_MD5_ALT", #endif /* MBEDTLS_MD5_ALT */ +#if defined(MBEDTLS_POLY1305_ALT) + "MBEDTLS_POLY1305_ALT", +#endif /* MBEDTLS_POLY1305_ALT */ #if defined(MBEDTLS_RIPEMD160_ALT) "MBEDTLS_RIPEMD160_ALT", #endif /* MBEDTLS_RIPEMD160_ALT */ @@ -168,9 +174,6 @@ static const char *features[] = { #if defined(MBEDTLS_SHA512_PROCESS_ALT) "MBEDTLS_SHA512_PROCESS_ALT", #endif /* MBEDTLS_SHA512_PROCESS_ALT */ -#if defined(MBEDTLS_POLY1305_ALT) - "MBEDTLS_POLY1305_ALT", -#endif /* MBEDTLS_POLY1305_ALT */ #if defined(MBEDTLS_DES_SETKEY_ALT) "MBEDTLS_DES_SETKEY_ALT", #endif /* MBEDTLS_DES_SETKEY_ALT */ @@ -540,6 +543,9 @@ static const char *features[] = { #if defined(MBEDTLS_CAMELLIA_C) "MBEDTLS_CAMELLIA_C", #endif /* MBEDTLS_CAMELLIA_C */ +#if defined(MBEDTLS_CHACHA20_C) + "MBEDTLS_CHACHA20_C", +#endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CCM_C) "MBEDTLS_CCM_C", #endif /* MBEDTLS_CCM_C */ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 03797ec326..c7d9fad3c0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -56,6 +56,7 @@ add_test_suite(blowfish) add_test_suite(camellia) add_test_suite(ccm) add_test_suite(chacha20) +add_test_suite(cipher cipher.aead_chacha20_poly1305) add_test_suite(cipher cipher.aes) add_test_suite(cipher cipher.arc4) add_test_suite(cipher cipher.blowfish) diff --git a/tests/Makefile b/tests/Makefile index 4a23e64cc7..e6ff26cf31 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -52,6 +52,7 @@ APPS = test_suite_aead_chacha20_poly1305$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ test_suite_chacha20$(EXEXT) test_suite_cmac$(EXEXT) \ + test_suite_cipher.aead_chacha20_poly1305$(EXEXT) \ test_suite_cipher.aes$(EXEXT) \ test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ test_suite_cipher.chacha20$(EXEXT) \ @@ -116,6 +117,10 @@ test_suite_aes.rest.c : suites/test_suite_aes.function suites/test_suite_aes.res echo " Gen $@" perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.rest +test_suite_cipher.aead_chacha20_poly1305.c : suites/test_suite_cipher.function suites/test_suite_cipher.aead_chacha20_poly1305.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aead_chacha20_poly1305 + test_suite_cipher.aes.c : suites/test_suite_cipher.function suites/test_suite_cipher.aes.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aes @@ -261,6 +266,10 @@ test_suite_cipher.aes$(EXEXT): test_suite_cipher.aes.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_cipher.aead_chacha20_poly1305$(EXEXT): test_suite_cipher.aead_chacha20_poly1305.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_cipher.arc4$(EXEXT): test_suite_cipher.arc4.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_cipher.aead_chacha20_poly1305.data b/tests/suites/test_suite_cipher.aead_chacha20_poly1305.data new file mode 100644 index 0000000000..9cd1ed021b --- /dev/null +++ b/tests/suites/test_suite_cipher.aead_chacha20_poly1305.data @@ -0,0 +1,111 @@ +Decrypt empty buffer +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C: +dec_empty_buf: + +ChaCha20+Poly1305 Encrypt and decrypt 0 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:0:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 1 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:1:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 2 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:2:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 7 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:7:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 8 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:8:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 9 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:9:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 15 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:15:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:16:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:17:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:31:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:32:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:33:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:47:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:48:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:49:-1 + +ChaCha20+Poly1305 Encrypt and decrypt 0 bytes in multiple parts 1 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:0:-1:0:0:0:0 + +ChaCha20+Poly1305 Encrypt and decrypt 1 bytes in multiple parts 1 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:1:0:-1:1:0:1:0 + +ChaCha20+Poly1305 Encrypt and decrypt 1 bytes in multiple parts 2 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:1:-1:0:1:0:1 + +ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 1 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:0:-1:16:0:16:0 + +ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 2 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:16:-1:0:16:0:16 + +ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 3 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:1:15:-1:1:15:1:15 + +ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 4 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:15:1:-1:15:1:15:1 + +ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 1 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:15:7:-1:15:7:15:7 + +ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 2 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:7:15:-1:7:15:7:15 + +ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 3 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:6:-1:16:6:16:6 + +ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 4 +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:6:16:-1:6:16:6:16 + +ChaCha20+Poly1305 Encrypt and decrypt 32 bytes in multiple parts +depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:16:-1:16:16:16:16 From dedf4a3e7b61c2d791f8b01164bcb31e6f7d750a Mon Sep 17 00:00:00 2001 From: Daniel King Date: Wed, 18 May 2016 10:07:53 -0300 Subject: [PATCH 0308/1100] Adjust verbose self-test output to match other ciphers. --- library/aead_chacha20_poly1305.c | 21 ++++++++++++++++++--- library/chacha20.c | 19 +++++++++++++++++-- library/poly1305.c | 19 +++++++++++++++++-- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index 2dea5c9c54..3aa8d637d4 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -428,6 +428,11 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) for ( i = 0U; i < 1U; i++ ) { + if ( verbose != 0 ) + { + mbedtls_printf( " ChaCha20-Poly1305 test %zi ", i ); + } + result = mbedtls_aead_chacha20_poly1305_crypt_and_mac( test_key[i], test_nonce[i], MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, @@ -441,7 +446,7 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "ChaCha20-Poly1305 test %zi error code: %i\n", i, result ); + mbedtls_printf( "error code: %i\n", result ); } return( -1 ); } @@ -450,7 +455,7 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "ChaCha20-Poly1305 test %zi failure (wrong output)\n", i ); + mbedtls_printf( "failure (wrong output)\n" ); } return( -1 ); } @@ -459,10 +464,20 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "ChaCha20-Poly1305 test %zi failure (wrong MAC)\n", i ); + mbedtls_printf( "failure (wrong MAC)\n" ); } return( -1 ); } + + if ( verbose != 0 ) + { + mbedtls_printf( "passed\n" ); + } + } + + if( verbose != 0 ) + { + mbedtls_printf( "\n" ); } return( 0 ); diff --git a/library/chacha20.c b/library/chacha20.c index 351124541b..f3ddd9b96c 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -559,6 +559,11 @@ int mbedtls_chacha20_self_test( int verbose ) for ( i = 0U; i < 2U; i++ ) { + if ( verbose != 0 ) + { + mbedtls_printf( " ChaCha20 test %zi ", i ); + } + result = mbedtls_chacha20_crypt( test_keys[i], test_nonces[i], test_counters[i], @@ -569,7 +574,7 @@ int mbedtls_chacha20_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "ChaCha20 test %zi error code: %i\n", i, result ); + mbedtls_printf( "error code: %i\n", result ); } return( -1 ); @@ -579,11 +584,21 @@ int mbedtls_chacha20_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "ChaCha20 test %zi failed\n", i ); + mbedtls_printf( "failed\n" ); } return( -1 ); } + + if ( verbose != 0 ) + { + mbedtls_printf( "passed\n" ); + } + } + + if( verbose != 0 ) + { + mbedtls_printf( "\n" ); } return( 0 ); diff --git a/library/poly1305.c b/library/poly1305.c index f9bdf2c939..d7c9ce160e 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -490,6 +490,11 @@ int mbedtls_poly1305_self_test( int verbose ) for ( i = 0U; i < 2U; i++ ) { + if ( verbose != 0 ) + { + mbedtls_printf( " Poly1305 test %zi ", i ); + } + result = mbedtls_poly1305_mac( test_keys[i], test_data_len[i], test_data[i], @@ -498,7 +503,7 @@ int mbedtls_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "Poly1305 test %zi error code: %i\n", i, result ); + mbedtls_printf( "error code: %i\n", result ); } return( -1 ); @@ -508,11 +513,21 @@ int mbedtls_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "Poly1305 test %zi failed\n", i ); + mbedtls_printf( "failed\n" ); } return( -1 ); } + + if ( verbose != 0 ) + { + mbedtls_printf( "passed\n" ); + } + } + + if( verbose != 0 ) + { + mbedtls_printf( "\n" ); } return( 0 ); From 4d8f87b1cada5041fa60012dcb502cd452a2bc42 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Wed, 18 May 2016 10:09:28 -0300 Subject: [PATCH 0309/1100] Add ChaCha20/Poly1305 ciphers to the selftest program --- programs/test/selftest.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/programs/test/selftest.c b/programs/test/selftest.c index 72a37342fd..57f9924cec 100644 --- a/programs/test/selftest.c +++ b/programs/test/selftest.c @@ -44,6 +44,9 @@ #include "mbedtls/des.h" #include "mbedtls/aes.h" #include "mbedtls/camellia.h" +#include "mbedtls/chacha20.h" +#include "mbedtls/poly1305.h" +#include "mbedtls/aead_chacha20_poly1305.h" #include "mbedtls/base64.h" #include "mbedtls/bignum.h" #include "mbedtls/rsa.h" @@ -207,6 +210,15 @@ const selftest_t selftests[] = #if defined(MBEDTLS_CMAC_C) {"cmac", mbedtls_cmac_self_test}, #endif +#if defined(MBEDTLS_CHACHA20_C) + {"chacha20", mbedtls_chacha20_self_test}, +#endif +#if defined(MBEDTLS_POLY1305_C) + {"poly1305", mbedtls_poly1305_self_test}, +#endif +#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) + {"chacha20-poly1305", mbedtls_aead_chacha20_poly1305_self_test}, +#endif #if defined(MBEDTLS_BASE64_C) {"base64", mbedtls_base64_self_test}, #endif From 6155cc82ba04a53e0cef88aed72bf9fc081a46b3 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Wed, 18 May 2016 11:51:22 -0300 Subject: [PATCH 0310/1100] Add ChaCha20 test vectors from RFC 7539 --- tests/suites/test_suite_chacha20.data | 24 +++++++++++++ tests/suites/test_suite_chacha20.function | 41 +++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/tests/suites/test_suite_chacha20.data b/tests/suites/test_suite_chacha20.data index 79f0408a2c..86094604bf 100644 --- a/tests/suites/test_suite_chacha20.data +++ b/tests/suites/test_suite_chacha20.data @@ -1,2 +1,26 @@ +ChaCha20 RFC 7539 Example and Test Vector (Encrypt) +chacha20_crypt:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"000000000000004a00000000":1:"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"6e2e359a2568f98041ba0728dd0d6981e97e7aec1d4360c20a27afccfd9fae0bf91b65c5524733ab8f593dabcd62b3571639d624e65152ab8f530c359f0861d807ca0dbf500d6a6156a38e088a22b65e52bc514d16ccf806818ce91ab77937365af90bbf74a35be6b40b8eedf2785e42874d" + +ChaCha20 RFC 7539 Example and Test Vector (Decrypt) +chacha20_crypt:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f":"000000000000004a00000000":1:"6e2e359a2568f98041ba0728dd0d6981e97e7aec1d4360c20a27afccfd9fae0bf91b65c5524733ab8f593dabcd62b3571639d624e65152ab8f530c359f0861d807ca0dbf500d6a6156a38e088a22b65e52bc514d16ccf806818ce91ab77937365af90bbf74a35be6b40b8eedf2785e42874d":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e" + +ChaCha20 RFC 7539 Test Vector #1 (Encrypt) +chacha20_crypt:"0000000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000":0:"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586" + +ChaCha20 RFC 7539 Test Vector #1 (Decrypt) +chacha20_crypt:"0000000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000":0:"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + +ChaCha20 RFC 7539 Test Vector #2 (Encrypt) +chacha20_crypt:"0000000000000000000000000000000000000000000000000000000000000001":"000000000000000000000002":1:"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f":"a3fbf07df3fa2fde4f376ca23e82737041605d9f4f4f57bd8cff2c1d4b7955ec2a97948bd3722915c8f3d337f7d370050e9e96d647b7c39f56e031ca5eb6250d4042e02785ececfa4b4bb5e8ead0440e20b6e8db09d881a7c6132f420e52795042bdfa7773d8a9051447b3291ce1411c680465552aa6c405b7764d5e87bea85ad00f8449ed8f72d0d662ab052691ca66424bc86d2df80ea41f43abf937d3259dc4b2d0dfb48a6c9139ddd7f76966e928e635553ba76c5c879d7b35d49eb2e62b0871cdac638939e25e8a1e0ef9d5280fa8ca328b351c3c765989cbcf3daa8b6ccc3aaf9f3979c92b3720fc88dc95ed84a1be059c6499b9fda236e7e818b04b0bc39c1e876b193bfe5569753f88128cc08aaa9b63d1a16f80ef2554d7189c411f5869ca52c5b83fa36ff216b9c1d30062bebcfd2dc5bce0911934fda79a86f6e698ced759c3ff9b6477338f3da4f9cd8514ea9982ccafb341b2384dd902f3d1ab7ac61dd29c6f21ba5b862f3730e37cfdc4fd806c22f221" + +ChaCha20 RFC 7539 Test Vector #2 (Decrypt) +chacha20_crypt:"0000000000000000000000000000000000000000000000000000000000000001":"000000000000000000000002":1:"a3fbf07df3fa2fde4f376ca23e82737041605d9f4f4f57bd8cff2c1d4b7955ec2a97948bd3722915c8f3d337f7d370050e9e96d647b7c39f56e031ca5eb6250d4042e02785ececfa4b4bb5e8ead0440e20b6e8db09d881a7c6132f420e52795042bdfa7773d8a9051447b3291ce1411c680465552aa6c405b7764d5e87bea85ad00f8449ed8f72d0d662ab052691ca66424bc86d2df80ea41f43abf937d3259dc4b2d0dfb48a6c9139ddd7f76966e928e635553ba76c5c879d7b35d49eb2e62b0871cdac638939e25e8a1e0ef9d5280fa8ca328b351c3c765989cbcf3daa8b6ccc3aaf9f3979c92b3720fc88dc95ed84a1be059c6499b9fda236e7e818b04b0bc39c1e876b193bfe5569753f88128cc08aaa9b63d1a16f80ef2554d7189c411f5869ca52c5b83fa36ff216b9c1d30062bebcfd2dc5bce0911934fda79a86f6e698ced759c3ff9b6477338f3da4f9cd8514ea9982ccafb341b2384dd902f3d1ab7ac61dd29c6f21ba5b862f3730e37cfdc4fd806c22f221":"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f" + +ChaCha20 RFC 7539 Test Vector #3 (Encrypt) +chacha20_crypt:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000000000000000002":42:"2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e":"62e6347f95ed87a45ffae7426f27a1df5fb69110044c0d73118effa95b01e5cf166d3df2d721caf9b21e5fb14c616871fd84c54f9d65b283196c7fe4f60553ebf39c6402c42234e32a356b3e764312a61a5532055716ead6962568f87d3f3f7704c6a8d1bcd1bf4d50d6154b6da731b187b58dfd728afa36757a797ac188d1" + +ChaCha20 RFC 7539 Test Vector #3 (Decrypt) +chacha20_crypt:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000000000000000002":42:"62e6347f95ed87a45ffae7426f27a1df5fb69110044c0d73118effa95b01e5cf166d3df2d721caf9b21e5fb14c616871fd84c54f9d65b283196c7fe4f60553ebf39c6402c42234e32a356b3e764312a61a5532055716ead6962568f87d3f3f7704c6a8d1bcd1bf4d50d6154b6da731b187b58dfd728afa36757a797ac188d1":"2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e" + ChaCha20 Selftest chacha20_self_test: diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index 2825a61480..75d2d0fc99 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -6,6 +6,47 @@ * depends_on:MBEDTLS_CHACHA20_C * END_DEPENDENCIES */ + +/* BEGIN_CASE */ +void chacha20_crypt( char *hex_key_string, + char *hex_nonce_string, + int counter, + char *hex_src_string, + char *hex_dst_string ) +{ + unsigned char key_str[100]; + unsigned char nonce_str[100]; + unsigned char src_str[10000]; + unsigned char dst_str[10000]; + unsigned char output[10000]; + size_t key_len; + size_t nonce_len; + size_t src_len; + size_t dst_len; + + memset(key_str, 0x00, 100); + memset(nonce_str, 0x00, 100); + memset(src_str, 0x00, 10000); + memset(dst_str, 0x00, 10000); + memset(output, 0x00, 10000); + + key_len = unhexify( key_str, hex_key_string ); + nonce_len = unhexify( nonce_str, hex_nonce_string ); + src_len = unhexify( src_str, hex_src_string ); + dst_len = unhexify( dst_str, hex_dst_string ); + + TEST_ASSERT( src_len == dst_len ); + TEST_ASSERT( key_len == 32U ); + TEST_ASSERT( nonce_len == 12U ); + + TEST_ASSERT( mbedtls_chacha20_crypt( key_str, nonce_str, counter, src_len, src_str, output ) == 0 ); + + hexify( dst_str, output, src_len ); + + TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void chacha20_self_test() { From dca6abb24bae3694325c61dcf0bf3c2c4e0c1047 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Wed, 18 May 2016 12:04:41 -0300 Subject: [PATCH 0311/1100] Fix test suite when GCM Is disabled, but AEAD_ChaCha20_Poly1305 is enabled. --- tests/suites/test_suite_cipher.function | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 8f1109ee84..e5a252fdbb 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -60,7 +60,7 @@ void cipher_null_args( ) TEST_ASSERT( mbedtls_cipher_reset( NULL ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_reset( &ctx ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( mbedtls_cipher_update_ad( NULL, buf, 0 ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_update_ad( &ctx, buf, 0 ) @@ -77,7 +77,7 @@ void cipher_null_args( ) TEST_ASSERT( mbedtls_cipher_finish( &ctx, buf, &olen ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( mbedtls_cipher_write_tag( NULL, buf, olen ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_write_tag( &ctx, buf, olen ) @@ -195,7 +195,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_enc ) ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, ad, sizeof( ad ) - i ) ); TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_enc, ad, sizeof( ad ) - i ) ); #endif @@ -215,7 +215,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_finish( &ctx_enc, encbuf + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_write_tag( &ctx_enc, tag, sizeof( tag ) ) ); #endif @@ -236,7 +236,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_finish( &ctx_dec, decbuf + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_check_tag( &ctx_dec, tag, sizeof( tag ) ) ); #endif @@ -292,7 +292,7 @@ void enc_fail( int cipher_id, int pad_mode, int key_len, #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv, 16 ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx ) ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, NULL, 0 ) ); #endif @@ -340,7 +340,7 @@ void dec_empty_buf() TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, NULL, 0 ) ); #endif @@ -416,7 +416,7 @@ void enc_dec_buf_multipart( int cipher_id, int key_len, int first_length_val, TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_enc ) ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, NULL, 0 ) ); TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_enc, NULL, 0 ) ); #endif @@ -484,7 +484,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, unsigned char ad[200]; unsigned char tag[20]; size_t key_len, iv_len, cipher_len, clear_len; -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) size_t ad_len, tag_len; #endif mbedtls_cipher_context_t ctx; @@ -505,7 +505,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, iv_len = unhexify( iv, hex_iv ); cipher_len = unhexify( cipher, hex_cipher ); clear_len = unhexify( clear, hex_clear ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) ad_len = unhexify( ad, hex_ad ); tag_len = unhexify( tag, hex_tag ); #else @@ -525,7 +525,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv, iv_len ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx ) ); -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, ad, ad_len ) ); #endif @@ -536,7 +536,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, TEST_ASSERT( finish_result == mbedtls_cipher_finish( &ctx, output + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) TEST_ASSERT( tag_result == mbedtls_cipher_check_tag( &ctx, tag, tag_len ) ); #endif From 16b04ce641b0ecb98a0500e2534ff51687d1ba17 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Wed, 18 May 2016 13:38:22 -0300 Subject: [PATCH 0312/1100] Fix unused function warning under certain configurations. I refactored some code into the function mbedtls_constant_time_memcmp in commit 7aad291 but this function is only used by GCM and AEAD_ChaCha20_Poly1305 to check the tags. So this function is now only enabled if either of these two ciphers is enabled. --- library/cipher.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/cipher.c b/library/cipher.c index b51a40bcc8..71fa6f5350 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -69,9 +69,13 @@ #define MBEDTLS_CIPHER_MODE_STREAM #endif + +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) /* Compare the contents of two buffers in constant time. * Returns 0 if the contents are bitwise identical, otherwise returns - * a non-zero value. */ + * a non-zero value. + * This is currently only used by GCM and ChaCha20+Poly1305. + */ static int mbedtls_constant_time_memcmp( const void *v1, const void *v2, size_t len ) { const unsigned char *p1 = (const unsigned char*) v1; @@ -84,6 +88,7 @@ static int mbedtls_constant_time_memcmp( const void *v1, const void *v2, size_t return (int)diff; } +#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ static int supported_init = 0; From b6897f67a4e584a69154ffe6c828a8f1bdf6ef32 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Thu, 19 May 2016 09:57:59 -0300 Subject: [PATCH 0313/1100] Correct signedness of printf specifier in self tests --- library/aead_chacha20_poly1305.c | 2 +- library/chacha20.c | 2 +- library/poly1305.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index 3aa8d637d4..dac96ae348 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -430,7 +430,7 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( " ChaCha20-Poly1305 test %zi ", i ); + mbedtls_printf( " ChaCha20-Poly1305 test %zu ", i ); } result = mbedtls_aead_chacha20_poly1305_crypt_and_mac( test_key[i], diff --git a/library/chacha20.c b/library/chacha20.c index f3ddd9b96c..437e38069d 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -561,7 +561,7 @@ int mbedtls_chacha20_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( " ChaCha20 test %zi ", i ); + mbedtls_printf( " ChaCha20 test %zu ", i ); } result = mbedtls_chacha20_crypt( test_keys[i], diff --git a/library/poly1305.c b/library/poly1305.c index d7c9ce160e..004d8574a0 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -492,7 +492,7 @@ int mbedtls_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( " Poly1305 test %zi ", i ); + mbedtls_printf( " Poly1305 test %zu ", i ); } result = mbedtls_poly1305_mac( test_keys[i], From e6e7968c3ab2111a7f5cad51fd9ae45a608d5752 Mon Sep 17 00:00:00 2001 From: Daniel King Date: Tue, 24 May 2016 11:16:17 -0300 Subject: [PATCH 0314/1100] Minor style and formatting fixes. This change corrects some minor style violations, mostly for spacing around parentheses. --- library/aead_chacha20_poly1305.c | 68 ++++++------ library/chacha20.c | 30 +++--- library/poly1305.c | 176 +++++++++++++++---------------- 3 files changed, 137 insertions(+), 137 deletions(-) diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index dac96ae348..8d7b63a706 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -59,15 +59,15 @@ static void mbedtls_zeroize( void *v, size_t n ) { */ static void mbedtls_aead_chacha20_poly1305_pad_aad( mbedtls_aead_chacha20_poly1305_context *ctx ) { - uint32_t partial_block_len = (uint32_t)( ctx->aad_len % 16U ); + uint32_t partial_block_len = (uint32_t) ( ctx->aad_len % 16U ); unsigned char zeroes[15]; if ( partial_block_len > 0U ) { - memset( zeroes, 0, sizeof(zeroes) ); - (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, - 16U - partial_block_len, - zeroes ); + memset( zeroes, 0, sizeof( zeroes ) ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, + 16U - partial_block_len, + zeroes ); } } @@ -78,15 +78,15 @@ static void mbedtls_aead_chacha20_poly1305_pad_aad( mbedtls_aead_chacha20_poly13 */ static void mbedtls_aead_chacha20_poly1305_pad_ciphertext( mbedtls_aead_chacha20_poly1305_context *ctx ) { - uint32_t partial_block_len = (uint32_t)( ctx->ciphertext_len % 16U ); + uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; if ( partial_block_len > 0U ) { - memset( zeroes, 0, sizeof(zeroes) ); - (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, - 16U - partial_block_len, - zeroes ); + memset( zeroes, 0, sizeof( zeroes ) ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, + 16U - partial_block_len, + zeroes ); } } @@ -185,12 +185,12 @@ int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_co } else if ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) { - return (MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + return(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); } ctx->aad_len += aad_len; - return ( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad_len, aad ) ); + return( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad_len, aad ) ); } int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_context *ctx, @@ -228,13 +228,13 @@ int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_contex * the input pointers are NULL. Since we have checked their validity * above, we can safety ignore the return value. */ - (void)mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); - (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, len, output ); + (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len, output ); } else /* DECRYPT */ { - (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, len, input ); - (void)mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len, input ); + (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); } return( 0 ); @@ -268,25 +268,25 @@ int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_contex /* The lengths of the AAD and ciphertext are processed by * Poly1305 as the final 128-bit block, encoded as little-endian integers. */ - len_block[0] = (unsigned char)ctx->aad_len; - len_block[1] = (unsigned char)( ctx->aad_len >> 8 ); - len_block[2] = (unsigned char)( ctx->aad_len >> 16 ); - len_block[3] = (unsigned char)( ctx->aad_len >> 24 ); - len_block[4] = (unsigned char)( ctx->aad_len >> 32 ); - len_block[5] = (unsigned char)( ctx->aad_len >> 40 ); - len_block[6] = (unsigned char)( ctx->aad_len >> 48 ); - len_block[7] = (unsigned char)( ctx->aad_len >> 56 ); - len_block[8] = (unsigned char)ctx->ciphertext_len; - len_block[9] = (unsigned char)( ctx->ciphertext_len >> 8 ); - len_block[10] = (unsigned char)( ctx->ciphertext_len >> 16 ); - len_block[11] = (unsigned char)( ctx->ciphertext_len >> 24 ); - len_block[12] = (unsigned char)( ctx->ciphertext_len >> 32 ); - len_block[13] = (unsigned char)( ctx->ciphertext_len >> 40 ); - len_block[14] = (unsigned char)( ctx->ciphertext_len >> 48 ); - len_block[15] = (unsigned char)( ctx->ciphertext_len >> 56 ); + len_block[0] = (unsigned char) ctx->aad_len; + len_block[1] = (unsigned char) ( ctx->aad_len >> 8 ); + len_block[2] = (unsigned char) ( ctx->aad_len >> 16 ); + len_block[3] = (unsigned char) ( ctx->aad_len >> 24 ); + len_block[4] = (unsigned char) ( ctx->aad_len >> 32 ); + len_block[5] = (unsigned char) ( ctx->aad_len >> 40 ); + len_block[6] = (unsigned char) ( ctx->aad_len >> 48 ); + len_block[7] = (unsigned char) ( ctx->aad_len >> 56 ); + len_block[8] = (unsigned char) ctx->ciphertext_len; + len_block[9] = (unsigned char) ( ctx->ciphertext_len >> 8 ); + len_block[10] = (unsigned char) ( ctx->ciphertext_len >> 16 ); + len_block[11] = (unsigned char) ( ctx->ciphertext_len >> 24 ); + len_block[12] = (unsigned char) ( ctx->ciphertext_len >> 32 ); + len_block[13] = (unsigned char) ( ctx->ciphertext_len >> 40 ); + len_block[14] = (unsigned char) ( ctx->ciphertext_len >> 48 ); + len_block[15] = (unsigned char) ( ctx->ciphertext_len >> 56 ); - (void)mbedtls_poly1305_update( &ctx->poly1305_ctx, 16U, len_block ); - (void)mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, 16U, len_block ); + (void) mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); return( 0 ); } diff --git a/library/chacha20.c b/library/chacha20.c index 437e38069d..4c2d8ef9ac 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -46,14 +46,14 @@ #endif /* MBEDTLS_PLATFORM_C */ #endif /* MBEDTLS_SELF_TEST */ -#define BYTES_TO_U32_LE( data, offset ) \ - ( (uint32_t)data[offset] | \ - (uint32_t)( (uint32_t)data[(offset) + 1] << 8 ) | \ - (uint32_t)( (uint32_t)data[(offset) + 2] << 16 ) | \ - (uint32_t)( (uint32_t)data[(offset) + 3] << 24 ) \ +#define BYTES_TO_U32_LE( data, offset ) \ + ( (uint32_t) data[offset] \ + | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ + | (uint32_t) ( (uint32_t) data[( offset ) + 2] << 16 ) \ + | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ ) -#define ROTL32( value, amount ) ( (uint32_t)( value << amount ) | ( value >> ( 32 - amount ) ) ) +#define ROTL32( value, amount ) ( (uint32_t) ( value << amount ) | ( value >> ( 32 - amount ) ) ) #define CHACHA20_CTR_INDEX ( 12U ) @@ -171,10 +171,10 @@ static void mbedtls_chacha20_block( const uint32_t initial_state[16], { offset = i * 4U; - keystream[offset ] = (unsigned char) working_state[i]; - keystream[offset + 1U] = (unsigned char)( working_state[i] >> 8 ); - keystream[offset + 2U] = (unsigned char)( working_state[i] >> 16 ); - keystream[offset + 3U] = (unsigned char)( working_state[i] >> 24 ); + keystream[offset ] = (unsigned char) working_state[i]; + keystream[offset + 1U] = (unsigned char) ( working_state[i] >> 8 ); + keystream[offset + 2U] = (unsigned char) ( working_state[i] >> 16 ); + keystream[offset + 3U] = (unsigned char) ( working_state[i] >> 24 ); } } @@ -277,10 +277,10 @@ int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, mbedtls_chacha20_block( initial_state, working_state, keystream ); - mbedtls_zeroize( initial_state, sizeof(initial_state) ); - mbedtls_zeroize( working_state, sizeof(working_state) ); + mbedtls_zeroize( initial_state, sizeof( initial_state ) ); + mbedtls_zeroize( working_state, sizeof( working_state ) ); - return ( 0 ); + return( 0 ); } int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, @@ -351,7 +351,7 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, ctx->initial_state[CHACHA20_CTR_INDEX]++; } - return 0; + return( 0 ); } #endif /* !MBEDTLS_CHACHA20_ALT */ @@ -380,7 +380,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], cleanup: mbedtls_chacha20_free( &ctx ); - return result; + return( result ); } #if defined(MBEDTLS_SELF_TEST) diff --git a/library/poly1305.c b/library/poly1305.c index 004d8574a0..842a4d464c 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -45,11 +45,11 @@ #define POLY1305_BLOCK_SIZE_BYTES ( 16U ) -#define BYTES_TO_U32_LE( data, offset ) \ - ( (uint32_t)data[offset] | \ - (uint32_t)( (uint32_t)data[(offset) + 1] << 8 ) | \ - (uint32_t)( (uint32_t)data[(offset) + 2] << 16 ) | \ - (uint32_t)( (uint32_t)data[(offset) + 3] << 24 ) \ +#define BYTES_TO_U32_LE( data, offset ) \ + ( (uint32_t) data[offset] \ + | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ + | (uint32_t) ( (uint32_t) data[( offset ) + 2] << 16 ) \ + | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ ) /* Implementation that should never be optimized out by the compiler */ @@ -100,59 +100,59 @@ static void mbedtls_poly1305_process( mbedtls_poly1305_context *ctx, { /* Compute: acc += block */ /* Note that the input block is treated as a 128-bit little-endian integer */ - d0 = (uint64_t)acc0 + BYTES_TO_U32_LE( input, offset + 0 ); - d1 = (uint64_t)acc1 + BYTES_TO_U32_LE( input, offset + 4 ) + ( d0 >> 32U ); - d2 = (uint64_t)acc2 + BYTES_TO_U32_LE( input, offset + 8 ) + ( d1 >> 32U ); - d3 = (uint64_t)acc3 + BYTES_TO_U32_LE( input, offset + 12 ) + ( d2 >> 32U ); - acc0 = (uint32_t)d0; - acc1 = (uint32_t)d1; - acc2 = (uint32_t)d2; - acc3 = (uint32_t)d3; - acc4 += (uint32_t)( d3 >> 32U ) + needs_padding; + d0 = (uint64_t) acc0 + BYTES_TO_U32_LE( input, offset + 0 ); + d1 = (uint64_t) acc1 + BYTES_TO_U32_LE( input, offset + 4 ) + ( d0 >> 32U ); + d2 = (uint64_t) acc2 + BYTES_TO_U32_LE( input, offset + 8 ) + ( d1 >> 32U ); + d3 = (uint64_t) acc3 + BYTES_TO_U32_LE( input, offset + 12 ) + ( d2 >> 32U ); + acc0 = (uint32_t) d0; + acc1 = (uint32_t) d1; + acc2 = (uint32_t) d2; + acc3 = (uint32_t) d3; + acc4 += (uint32_t) ( d3 >> 32U ) + needs_padding; /* Compute: acc *= r */ - d0 = ( (uint64_t)acc0 * r0 ) + - ( (uint64_t)acc1 * rs3 ) + - ( (uint64_t)acc2 * rs2 ) + - ( (uint64_t)acc3 * rs1 ); - d1 = ( (uint64_t)acc0 * r1 ) + - ( (uint64_t)acc1 * r0 ) + - ( (uint64_t)acc2 * rs3 ) + - ( (uint64_t)acc3 * rs2 ) + - ( (uint64_t)acc4 * rs1 ); - d2 = ( (uint64_t)acc0 * r2 ) + - ( (uint64_t)acc1 * r1 ) + - ( (uint64_t)acc2 * r0 ) + - ( (uint64_t)acc3 * rs3 ) + - ( (uint64_t)acc4 * rs2 ); - d3 = ( (uint64_t)acc0 * r3 ) + - ( (uint64_t)acc1 * r2 ) + - ( (uint64_t)acc2 * r1 ) + - ( (uint64_t)acc3 * r0 ) + - ( (uint64_t)acc4 * rs3 ); + d0 = ( (uint64_t) acc0 * r0 ) + + ( (uint64_t) acc1 * rs3 ) + + ( (uint64_t) acc2 * rs2 ) + + ( (uint64_t) acc3 * rs1 ); + d1 = ( (uint64_t) acc0 * r1 ) + + ( (uint64_t) acc1 * r0 ) + + ( (uint64_t) acc2 * rs3 ) + + ( (uint64_t) acc3 * rs2 ) + + ( (uint64_t) acc4 * rs1 ); + d2 = ( (uint64_t) acc0 * r2 ) + + ( (uint64_t) acc1 * r1 ) + + ( (uint64_t) acc2 * r0 ) + + ( (uint64_t) acc3 * rs3 ) + + ( (uint64_t) acc4 * rs2 ); + d3 = ( (uint64_t) acc0 * r3 ) + + ( (uint64_t) acc1 * r2 ) + + ( (uint64_t) acc2 * r1 ) + + ( (uint64_t) acc3 * r0 ) + + ( (uint64_t) acc4 * rs3 ); acc4 *= r0; /* Compute: acc %= (2^130 - 5) (partial remainder) */ d1 += ( d0 >> 32 ); d2 += ( d1 >> 32 ); d3 += ( d2 >> 32 ); - acc0 = (uint32_t)d0; - acc1 = (uint32_t)d1; - acc2 = (uint32_t)d2; - acc3 = (uint32_t)d3; - acc4 = (uint32_t)( d3 >> 32 ) + acc4; + acc0 = (uint32_t) d0; + acc1 = (uint32_t) d1; + acc2 = (uint32_t) d2; + acc3 = (uint32_t) d3; + acc4 = (uint32_t) ( d3 >> 32 ) + acc4; - d0 = (uint64_t)acc0 + ( acc4 >> 2 ) + ( acc4 & 0xFFFFFFFCU ); + d0 = (uint64_t) acc0 + ( acc4 >> 2 ) + ( acc4 & 0xFFFFFFFCU ); acc4 &= 3U; - acc0 = (uint32_t)d0; - d0 = (uint64_t)acc1 + ( d0 >> 32U ); - acc1 = (uint32_t)d0; - d0 = (uint64_t)acc2 + ( d0 >> 32U ); - acc2 = (uint32_t)d0; - d0 = (uint64_t)acc3 + ( d0 >> 32U ); - acc3 = (uint32_t)d0; - d0 = (uint64_t)acc4 + ( d0 >> 32U ); - acc4 = (uint32_t)d0; + acc0 = (uint32_t) d0; + d0 = (uint64_t) acc1 + ( d0 >> 32U ); + acc1 = (uint32_t) d0; + d0 = (uint64_t) acc2 + ( d0 >> 32U ); + acc2 = (uint32_t) d0; + d0 = (uint64_t) acc3 + ( d0 >> 32U ); + acc3 = (uint32_t) d0; + d0 = (uint64_t) acc4 + ( d0 >> 32U ); + acc4 = (uint32_t) d0; offset += POLY1305_BLOCK_SIZE_BYTES; } @@ -192,18 +192,18 @@ static void mbedtls_poly1305_compute_mac( const mbedtls_poly1305_context *ctx, */ /* Calculate acc + -(2^130 - 5) */ - d = ( (uint64_t)acc0 + 5U ); - g0 = (uint32_t)d; - d = ( (uint64_t)acc1 + ( d >> 32 ) ); - g1 = (uint32_t)d; - d = ( (uint64_t)acc2 + ( d >> 32 ) ); - g2 = (uint32_t)d; - d = ( (uint64_t)acc3 + ( d >> 32 ) ); - g3 = (uint32_t)d; - g4 = acc4 + (uint32_t)( d >> 32U ); + d = ( (uint64_t) acc0 + 5U ); + g0 = (uint32_t) d; + d = ( (uint64_t) acc1 + ( d >> 32 ) ); + g1 = (uint32_t) d; + d = ( (uint64_t) acc2 + ( d >> 32 ) ); + g2 = (uint32_t) d; + d = ( (uint64_t) acc3 + ( d >> 32 ) ); + g3 = (uint32_t) d; + g4 = acc4 + (uint32_t) ( d >> 32U ); /* mask == 0xFFFFFFFF if 131st bit is set, otherwise mask == 0 */ - mask = (uint32_t)0U - ( g4 >> 2U ); + mask = (uint32_t) 0U - ( g4 >> 2U ); mask_inv = ~mask; /* If 131st bit is set then acc=g, otherwise, acc is unmodified */ @@ -213,38 +213,38 @@ static void mbedtls_poly1305_compute_mac( const mbedtls_poly1305_context *ctx, acc3 = ( acc3 & mask_inv ) | ( g3 & mask ); /* Add 's' */ - d = (uint64_t)acc0 + ctx->s[0]; - acc0 = (uint32_t)d; - d = (uint64_t)acc1 + ctx->s[1] + ( d >> 32U ); - acc1 = (uint32_t)d; - d = (uint64_t)acc2 + ctx->s[2] + ( d >> 32U ); - acc2 = (uint32_t)d; - acc3 += ctx->s[3] + (uint32_t)( d >> 32U ); + d = (uint64_t) acc0 + ctx->s[0]; + acc0 = (uint32_t) d; + d = (uint64_t) acc1 + ctx->s[1] + ( d >> 32U ); + acc1 = (uint32_t) d; + d = (uint64_t) acc2 + ctx->s[2] + ( d >> 32U ); + acc2 = (uint32_t) d; + acc3 += ctx->s[3] + (uint32_t) ( d >> 32U ); /* Compute MAC (128 least significant bits of the accumulator) */ - mac[0] = (uint8_t)acc0; - mac[1] = (uint8_t)( acc0 >> 8 ); - mac[2] = (uint8_t)( acc0 >> 16 ); - mac[3] = (uint8_t)( acc0 >> 24 ); - mac[4] = (uint8_t)acc1; - mac[5] = (uint8_t)( acc1 >> 8 ); - mac[6] = (uint8_t)( acc1 >> 16 ); - mac[7] = (uint8_t)( acc1 >> 24 ); - mac[8] = (uint8_t)acc2; - mac[9] = (uint8_t)( acc2 >> 8 ); - mac[10] = (uint8_t)( acc2 >> 16 ); - mac[11] = (uint8_t)( acc2 >> 24 ); - mac[12] = (uint8_t)acc3; - mac[13] = (uint8_t)( acc3 >> 8 ); - mac[14] = (uint8_t)( acc3 >> 16 ); - mac[15] = (uint8_t)( acc3 >> 24 ); + mac[0] = (unsigned char) acc0; + mac[1] = (unsigned char) ( acc0 >> 8 ); + mac[2] = (unsigned char) ( acc0 >> 16 ); + mac[3] = (unsigned char) ( acc0 >> 24 ); + mac[4] = (unsigned char) acc1; + mac[5] = (unsigned char) ( acc1 >> 8 ); + mac[6] = (unsigned char) ( acc1 >> 16 ); + mac[7] = (unsigned char) ( acc1 >> 24 ); + mac[8] = (unsigned char) acc2; + mac[9] = (unsigned char) ( acc2 >> 8 ); + mac[10] = (unsigned char) ( acc2 >> 16 ); + mac[11] = (unsigned char) ( acc2 >> 24 ); + mac[12] = (unsigned char) acc3; + mac[13] = (unsigned char) ( acc3 >> 8 ); + mac[14] = (unsigned char) ( acc3 >> 16 ); + mac[15] = (unsigned char) ( acc3 >> 24 ); } void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx, sizeof(mbedtls_poly1305_context) ); + mbedtls_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } } @@ -252,7 +252,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx, sizeof(mbedtls_poly1305_context) ); + mbedtls_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } } @@ -281,7 +281,7 @@ int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, ctx->acc[2] = 0U; ctx->acc[3] = 0U; - return 0; + return( 0 ); } int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, @@ -484,7 +484,7 @@ static const unsigned char test_mac[2][16] = int mbedtls_poly1305_self_test( int verbose ) { - uint8_t mac[16]; + unsigned char mac[16]; size_t i; int result; @@ -496,9 +496,9 @@ int mbedtls_poly1305_self_test( int verbose ) } result = mbedtls_poly1305_mac( test_keys[i], - test_data_len[i], - test_data[i], - mac ); + test_data_len[i], + test_data[i], + mac ); if ( result != 0 ) { if ( verbose != 0 ) From ce8314f5f0856bc72e0bd26c83770086712d969b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 3 May 2018 12:49:58 +0200 Subject: [PATCH 0315/1100] Add ChangeLog entry for new features. Fixes #346 --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 348864c0e9..10dd8689c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,11 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Features + * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time + authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by + Daniel King (#485). + API Changes * Extend the platform module with a util component that contains functionality shared by multiple Mbed TLS modules. At this stage From 95d0bdbd84817cb4defeb8030b8b2fc39f5d54b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 09:58:35 +0200 Subject: [PATCH 0316/1100] Adapt the _ALT style to our new standard - in .h files: only put the context declaration inside the #ifdef _ALT (this was changed in 2.9.0, ie after the original PR) - in .c file: only leave selftest out of _ALT: even though some function are trivial to build from other parts, alt implementors might want to go another way about them (for efficiency or other reasons) --- include/mbedtls/aead_chacha20_poly1305.h | 18 +++++++++--------- include/mbedtls/chacha20.h | 12 ++++++------ include/mbedtls/poly1305.h | 12 ++++++------ library/aead_chacha20_poly1305.c | 4 ++-- library/chacha20.c | 4 ++-- library/poly1305.c | 4 ++-- 6 files changed, 27 insertions(+), 27 deletions(-) diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/aead_chacha20_poly1305.h index 6c8e420b52..6f7ab6f7fe 100644 --- a/include/mbedtls/aead_chacha20_poly1305.h +++ b/include/mbedtls/aead_chacha20_poly1305.h @@ -29,11 +29,6 @@ #include MBEDTLS_CONFIG_FILE #endif -#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) - -#include "chacha20.h" -#include "poly1305.h" - #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ @@ -44,6 +39,11 @@ typedef enum } mbedtls_aead_chacha20_poly1305_mode_t; +#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) + +#include "chacha20.h" +#include "poly1305.h" + typedef struct { mbedtls_chacha20_context chacha20_ctx; /** ChaCha20 context */ @@ -55,6 +55,10 @@ typedef struct } mbedtls_aead_chacha20_poly1305_context; +#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ +#include "aead_chacha20_poly1305_alt.h" +#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ + /** * \brief Initialize ChaCha20-Poly1305 context * @@ -183,10 +187,6 @@ int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_contex int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx, unsigned char mac[16] ); -#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ -#include "aead_chacha20_poly1305_alt.h" -#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ - /** * \brief Encrypt or decrypt data, and produce a MAC with ChaCha20-Poly1305. * diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index ccce122701..a2856a7e47 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -31,13 +31,13 @@ #include MBEDTLS_CONFIG_FILE #endif -#if !defined(MBEDTLS_CHACHA20_ALT) - #include #include #define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x003B /**< Invalid input parameter(s). */ +#if !defined(MBEDTLS_CHACHA20_ALT) + typedef struct { uint32_t initial_state[16]; /*! Holds the initial state (before round operations) */ @@ -47,6 +47,10 @@ typedef struct } mbedtls_chacha20_context; +#else /* MBEDTLS_CHACHA20_ALT */ +#include "chacha20_alt.h" +#endif /* MBEDTLS_CHACHA20_ALT */ + /** * \brief Initialize ChaCha20 context * @@ -149,10 +153,6 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, const unsigned char *input, unsigned char *output ); -#else /* MBEDTLS_CHACHA20_ALT */ -#include "chacha20_alt.h" -#endif /* MBEDTLS_CHACHA20_ALT */ - /** * \brief Encrypt or decrypt a message using ChaCha20. * diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index ea9364a3cf..915f8ab0d2 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -32,10 +32,10 @@ #include #include -#if !defined(MBEDTLS_POLY1305_ALT) - #define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0041 /**< Invalid input parameter(s). */ +#if !defined(MBEDTLS_POLY1305_ALT) + typedef struct { uint32_t r[4]; /** Stores the value for 'r' (low 128 bits of the key) */ @@ -46,6 +46,10 @@ typedef struct } mbedtls_poly1305_context; +#else /* MBEDTLS_POLY1305_ALT */ +#include "poly1305_alt.h" +#endif /* MBEDTLS_POLY1305_ALT */ + /** * \brief Initialize a Poly1305 context * @@ -109,10 +113,6 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, unsigned char mac[16] ); -#else /* MBEDTLS_POLY1305_ALT */ -#include "poly1305_alt.h" -#endif /* MBEDTLS_POLY1305_ALT */ - /** * \brief Generate the Poly1305 MAC of some data with the given key. * diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index 8d7b63a706..2e07f1ed46 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -291,8 +291,6 @@ int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_contex return( 0 ); } -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ - int mbedtls_aead_chacha20_poly1305_crypt_and_mac ( const unsigned char key[32], const unsigned char nonce[12], mbedtls_aead_chacha20_poly1305_mode_t mode, @@ -331,6 +329,8 @@ cleanup: return( result ); } +#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ + #if defined(MBEDTLS_SELF_TEST) static const unsigned char test_key[1][32] = diff --git a/library/chacha20.c b/library/chacha20.c index 4c2d8ef9ac..5d2c3e5bf7 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -354,8 +354,6 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, return( 0 ); } -#endif /* !MBEDTLS_CHACHA20_ALT */ - int mbedtls_chacha20_crypt( const unsigned char key[32], const unsigned char nonce[12], uint32_t counter, @@ -383,6 +381,8 @@ cleanup: return( result ); } +#endif /* !MBEDTLS_CHACHA20_ALT */ + #if defined(MBEDTLS_SELF_TEST) static const unsigned char test_keys[2][32] = diff --git a/library/poly1305.c b/library/poly1305.c index 842a4d464c..6acbc7fa57 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -390,8 +390,6 @@ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, return( 0 ); } -#endif /* MBEDTLS_POLY1305_ALT */ - int mbedtls_poly1305_mac( const unsigned char key[32], size_t ilen, const unsigned char *input, @@ -417,6 +415,8 @@ cleanup: return( 0 ); } +#endif /* MBEDTLS_POLY1305_ALT */ + #if defined(MBEDTLS_SELF_TEST) static const unsigned char test_keys[2][32] = From 823b7a0ce7f8f4e1b4e7381ad1d38176bb52823a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 10:10:30 +0200 Subject: [PATCH 0317/1100] Add missing extern "C" guard to new headers --- include/mbedtls/aead_chacha20_poly1305.h | 8 ++++++++ include/mbedtls/chacha20.h | 8 ++++++++ include/mbedtls/poly1305.h | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/aead_chacha20_poly1305.h index 6f7ab6f7fe..21c3158b03 100644 --- a/include/mbedtls/aead_chacha20_poly1305.h +++ b/include/mbedtls/aead_chacha20_poly1305.h @@ -32,6 +32,10 @@ #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ #define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ +#ifdef __cplusplus +extern "C" { +#endif + typedef enum { MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, @@ -227,4 +231,8 @@ int mbedtls_aead_chacha20_poly1305_crypt_and_mac( const unsigned char key[32], */ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ); +#ifdef __cplusplus +} +#endif + #endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_H */ diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index a2856a7e47..f88bd28b7c 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -36,6 +36,10 @@ #define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x003B /**< Invalid input parameter(s). */ +#ifdef __cplusplus +extern "C" { +#endif + #if !defined(MBEDTLS_CHACHA20_ALT) typedef struct @@ -189,4 +193,8 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], */ int mbedtls_chacha20_self_test( int verbose ); +#ifdef __cplusplus +} +#endif + #endif /* MBEDTLS_CHACHA20_H */ diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 915f8ab0d2..c911b9fde2 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -34,6 +34,10 @@ #define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0041 /**< Invalid input parameter(s). */ +#ifdef __cplusplus +extern "C" { +#endif + #if !defined(MBEDTLS_POLY1305_ALT) typedef struct @@ -140,4 +144,8 @@ int mbedtls_poly1305_mac( const unsigned char key[32], */ int mbedtls_poly1305_self_test( int verbose ); +#ifdef __cplusplus +} +#endif + #endif /* MBEDTLS_POLY1305_H */ From b7e99006f9c85df28a9f15464e1fd5ed28559028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 10:14:18 +0200 Subject: [PATCH 0318/1100] Avoid using %zu in selftest functions This is a C99 feature and unfortunately we can't rely on it yet considering the set of toolchain (versions) we want to support. --- library/aead_chacha20_poly1305.c | 4 ++-- library/chacha20.c | 4 ++-- library/poly1305.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index 2e07f1ed46..f00380c0be 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -421,7 +421,7 @@ static const unsigned char test_mac[1][16] = int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { - size_t i; + unsigned i; int result; unsigned char output[200]; unsigned char mac[16]; @@ -430,7 +430,7 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( " ChaCha20-Poly1305 test %zu ", i ); + mbedtls_printf( " ChaCha20-Poly1305 test %u ", i ); } result = mbedtls_aead_chacha20_poly1305_crypt_and_mac( test_key[i], diff --git a/library/chacha20.c b/library/chacha20.c index 5d2c3e5bf7..28133a675e 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -554,14 +554,14 @@ static const size_t test_lengths[2] = int mbedtls_chacha20_self_test( int verbose ) { unsigned char output[381]; - size_t i; + unsigned i; int result; for ( i = 0U; i < 2U; i++ ) { if ( verbose != 0 ) { - mbedtls_printf( " ChaCha20 test %zu ", i ); + mbedtls_printf( " ChaCha20 test %u ", i ); } result = mbedtls_chacha20_crypt( test_keys[i], diff --git a/library/poly1305.c b/library/poly1305.c index 6acbc7fa57..5a096586d1 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -485,14 +485,14 @@ static const unsigned char test_mac[2][16] = int mbedtls_poly1305_self_test( int verbose ) { unsigned char mac[16]; - size_t i; + unsigned i; int result; for ( i = 0U; i < 2U; i++ ) { if ( verbose != 0 ) { - mbedtls_printf( " Poly1305 test %zu ", i ); + mbedtls_printf( " Poly1305 test %u ", i ); } result = mbedtls_poly1305_mac( test_keys[i], From 4edd51babec6fa560c3197805d3d4ff946c2b85e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 10:21:56 +0200 Subject: [PATCH 0319/1100] Rename poly1305_setkey() to poly1305_starts() For consistency with the existing CMAC and HMAC APIs --- include/mbedtls/poly1305.h | 2 +- library/aead_chacha20_poly1305.c | 2 +- library/poly1305.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index c911b9fde2..f691915781 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -81,7 +81,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ); * or key are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, +int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ); /** diff --git a/library/aead_chacha20_poly1305.c b/library/aead_chacha20_poly1305.c index f00380c0be..04180081a2 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/aead_chacha20_poly1305.c @@ -155,7 +155,7 @@ int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_contex if ( result != 0 ) goto cleanup; - result = mbedtls_poly1305_setkey( &ctx->poly1305_ctx, poly1305_key ); + result = mbedtls_poly1305_starts( &ctx->poly1305_ctx, poly1305_key ); if ( result == 0 ) { diff --git a/library/poly1305.c b/library/poly1305.c index 5a096586d1..66f932c4f4 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -256,7 +256,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) } } -int mbedtls_poly1305_setkey( mbedtls_poly1305_context *ctx, +int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ) { if ( ctx == NULL ) @@ -400,7 +400,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], mbedtls_poly1305_init( &ctx ); - result = mbedtls_poly1305_setkey( &ctx, key ); + result = mbedtls_poly1305_starts( &ctx, key ); if ( result != 0 ) goto cleanup; From dca3a5d8842d50833c2f5bc5ad225aefeeb874b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 10:43:27 +0200 Subject: [PATCH 0320/1100] Rename aead_chacha20_poly1305 to chachapoly While the old name is explicit and aligned with the RFC, it's also very long, so with the mbedtls_ prefix prepended we get a 31-char prefix to each identifier, which quickly conflicts with our 80-column policy. The new name is shorter, it's what a lot of people use when speaking about that construction anyway, and hopefully should not introduce confusion at it seems unlikely that variants other than 20/1305 be standardised in the foreseeable future. --- ...{aead_chacha20_poly1305.h => chachapoly.h} | 106 +++++------ include/mbedtls/cipher.h | 10 +- include/mbedtls/config.h | 12 +- include/mbedtls/error.h | 2 +- library/CMakeLists.txt | 2 +- library/Makefile | 5 +- ...{aead_chacha20_poly1305.c => chachapoly.c} | 166 +++++++++--------- library/cipher.c | 70 ++++---- library/cipher_wrap.c | 45 ++--- library/error.c | 22 +-- library/version_features.c | 12 +- programs/test/selftest.c | 6 +- scripts/generate_errors.pl | 5 +- tests/CMakeLists.txt | 4 +- tests/Makefile | 32 ++-- .../test_suite_aead_chacha20_poly1305.data | 19 -- tests/suites/test_suite_chachapoly.data | 19 ++ ...unction => test_suite_chachapoly.function} | 32 ++-- ...data => test_suite_cipher.chachapoly.data} | 56 +++--- tests/suites/test_suite_cipher.function | 24 +-- visualc/VS2010/mbedTLS.vcxproj | 6 + 21 files changed, 330 insertions(+), 325 deletions(-) rename include/mbedtls/{aead_chacha20_poly1305.h => chachapoly.h} (64%) rename library/{aead_chacha20_poly1305.c => chachapoly.c} (64%) delete mode 100644 tests/suites/test_suite_aead_chacha20_poly1305.data create mode 100644 tests/suites/test_suite_chachapoly.data rename tests/suites/{test_suite_aead_chacha20_poly1305.function => test_suite_chachapoly.function} (67%) rename tests/suites/{test_suite_cipher.aead_chacha20_poly1305.data => test_suite_cipher.chachapoly.data} (74%) diff --git a/include/mbedtls/aead_chacha20_poly1305.h b/include/mbedtls/chachapoly.h similarity index 64% rename from include/mbedtls/aead_chacha20_poly1305.h rename to include/mbedtls/chachapoly.h index 21c3158b03..810675ddd7 100644 --- a/include/mbedtls/aead_chacha20_poly1305.h +++ b/include/mbedtls/chachapoly.h @@ -1,5 +1,5 @@ /** - * \file aead_chacha20_poly1305.h + * \file chachapoly.h * * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. * @@ -20,8 +20,8 @@ * * This file is part of mbed TLS (https://tls.mbed.org) */ -#ifndef MBEDTLS_AEAD_CHACHA20_POLY1305_H -#define MBEDTLS_AEAD_CHACHA20_POLY1305_H +#ifndef MBEDTLS_CHACHAPOLY_H +#define MBEDTLS_CHACHAPOLY_H #if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" @@ -29,8 +29,8 @@ #include MBEDTLS_CONFIG_FILE #endif -#define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ -#define MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ #ifdef __cplusplus extern "C" { @@ -38,12 +38,12 @@ extern "C" { typedef enum { - MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, - MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT + MBEDTLS_CHACHAPOLY_ENCRYPT, + MBEDTLS_CHACHAPOLY_DECRYPT } -mbedtls_aead_chacha20_poly1305_mode_t; +mbedtls_chachapoly_mode_t; -#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) +#if !defined(MBEDTLS_CHACHAPOLY_ALT) #include "chacha20.h" #include "poly1305.h" @@ -55,27 +55,27 @@ typedef struct uint64_t aad_len; /** Length (bytes) of the Additional Authenticated Data */ uint64_t ciphertext_len; /** Length (bytes) of the ciphertext */ int state; /** Current state of the context */ - mbedtls_aead_chacha20_poly1305_mode_t mode; /** Cipher mode (encrypt or decrypt) */ + mbedtls_chachapoly_mode_t mode; /** Cipher mode (encrypt or decrypt) */ } -mbedtls_aead_chacha20_poly1305_context; +mbedtls_chachapoly_context; -#else /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ -#include "aead_chacha20_poly1305_alt.h" -#endif /* !MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ +#else /* !MBEDTLS_CHACHAPOLY_ALT */ +#include "chachapoly_alt.h" +#endif /* !MBEDTLS_CHACHAPOLY_ALT */ /** * \brief Initialize ChaCha20-Poly1305 context * * \param ctx ChaCha20-Poly1305 context to be initialized */ -void mbedtls_aead_chacha20_poly1305_init( mbedtls_aead_chacha20_poly1305_context *ctx ); +void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ); /** * \brief Clear ChaCha20-Poly1305 context * * \param ctx ChaCha20-Poly1305 context to be cleared */ -void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context *ctx ); +void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ); /** * \brief Set the ChaCha20-Poly1305 symmetric encryption key. @@ -83,12 +83,12 @@ void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context * \param ctx The ChaCha20-Poly1305 context. * \param key The 256-bit (32 bytes) key. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if \p ctx or \p key are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_context *ctx, - const unsigned char key[32] ); +int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, + const unsigned char key[32] ); /** * \brief Setup ChaCha20-Poly1305 context for encryption or decryption. @@ -102,13 +102,13 @@ int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_contex * \param mode Specifies whether the context is used to encrypt or * decrypt data. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if \p ctx or \p mac are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_context *ctx, - const unsigned char nonce[12], - mbedtls_aead_chacha20_poly1305_mode_t mode ); +int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, + const unsigned char nonce[12], + mbedtls_chachapoly_mode_t mode ); /** * \brief Process additional authenticated data (AAD). @@ -118,14 +118,14 @@ int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_contex * * \note This function is called before data is encrypted/decrypted. * I.e. call this function to process the AAD before calling - * mbedtls_aead_chacha20_poly1305_update. + * mbedtls_chachapoly_update. * * You may call this function multiple times to process * an arbitrary amount of AAD. It is permitted to call * this function 0 times, if no AAD is used. * * This function cannot be called any more if data has - * been processed by mbedtls_aead_chacha20_poly1305_update, + * been processed by mbedtls_chachapoly_update, * or if the context has been finished. * * \param ctx The ChaCha20-Poly1305 context. @@ -134,23 +134,23 @@ int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_contex * \param aad Buffer containing the AAD. * This pointer can be NULL if aad_len == 0. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if \p ctx or \p aad are NULL. - * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if * the context has not been setup, the context has been * finished, or if the AAD has been finished. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_context *ctx, - size_t aad_len, - const unsigned char *aad ); +int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, + size_t aad_len, + const unsigned char *aad ); /** * \brief Encrypt/decrypt data. * * The direction (encryption or decryption) depends on the * mode that was given when calling - * mbedtls_aead_chacha20_poly1305_starts. + * mbedtls_chachapoly_starts. * * You may call this function multiple times to process * an arbitrary amount of data. It is permitted to call @@ -164,17 +164,17 @@ int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_co * \param output Buffer to where the encrypted or decrypted data is written. * This pointer can be NULL if len == 0. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if \p ctx, \p input, or \p output are NULL. - * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if * the context has not been setup, or if the context has been * finished. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_context *ctx, - size_t len, - const unsigned char *input, - unsigned char *output ); +int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, + size_t len, + const unsigned char *input, + unsigned char *output ); /** * \brief Compute the ChaCha20-Poly1305 MAC. @@ -182,14 +182,14 @@ int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_contex * \param ctx The ChaCha20-Poly1305 context. * \param mac Buffer to where the 128-bit (16 bytes) MAC is written. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if \p ctx or \p mac are NULL. - * MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE is returned if + * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if * the context has not been setup. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx, - unsigned char mac[16] ); +int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, + unsigned char mac[16] ); /** * \brief Encrypt or decrypt data, and produce a MAC with ChaCha20-Poly1305. @@ -210,29 +210,29 @@ int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_contex * This pointer can be NULL if ilen == 0. * \param mac Buffer to where the computed 128-bit (16 bytes) MAC is written. * - * \return MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA is returned + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if one or more of the required parameters are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_aead_chacha20_poly1305_crypt_and_mac( const unsigned char key[32], - const unsigned char nonce[12], - mbedtls_aead_chacha20_poly1305_mode_t mode, - size_t aad_len, - const unsigned char *aad, - size_t ilen, - const unsigned char *input, - unsigned char *output, - unsigned char mac[16] ); +int mbedtls_chachapoly_crypt_and_mac( const unsigned char key[32], + const unsigned char nonce[12], + mbedtls_chachapoly_mode_t mode, + size_t aad_len, + const unsigned char *aad, + size_t ilen, + const unsigned char *input, + unsigned char *output, + unsigned char mac[16] ); /** * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed */ -int mbedtls_aead_chacha20_poly1305_self_test( int verbose ); +int mbedtls_chachapoly_self_test( int verbose ); #ifdef __cplusplus } #endif -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_H */ +#endif /* MBEDTLS_CHACHAPOLY_H */ diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index f954ccec37..ac1f564fb0 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -37,7 +37,7 @@ #include -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C) #define MBEDTLS_CIPHER_MODE_AEAD #endif @@ -563,7 +563,7 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, */ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) /** * \brief This function adds additional data for AEAD ciphers. * Currently supported with GCM and ChaCha20+Poly1305. @@ -578,7 +578,7 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); */ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len ); -#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ /** * \brief The generic cipher update function. It encrypts or @@ -636,7 +636,7 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, unsigned char *output, size_t *olen ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) /** * \brief This function writes a tag for AEAD ciphers. * Currently supported with GCM and ChaCha20+Poly1305. @@ -666,7 +666,7 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, */ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, const unsigned char *tag, size_t tag_len ); -#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ /** * \brief The generic all-in-one encryption/decryption function, diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 22d465cdab..69d2b63b58 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -269,7 +269,7 @@ * digests and ciphers instead. * */ -//#define MBEDTLS_AEAD_CHACHA20_POLY1305_ALT +//#define MBEDTLS_CHACHAPOLY_ALT //#define MBEDTLS_AES_ALT //#define MBEDTLS_ARC4_ALT //#define MBEDTLS_BLOWFISH_ALT @@ -1690,15 +1690,15 @@ #define MBEDTLS_AES_C /** - * \def MBEDTLS_AEAD_CHACHA20_POLY1305_C + * \def MBEDTLS_CHACHAPOLY_C * * Enable the ChaCha20-Poly1305 AEAD algorithm. * - * Module: library/aead_chacha20_poly1305.c + * Module: library/chachapoly.c * * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C */ -#define MBEDTLS_AEAD_CHACHA20_POLY1305_C +#define MBEDTLS_CHACHAPOLY_C /** * \def MBEDTLS_ARC4_C @@ -1855,7 +1855,7 @@ * Enable the ChaCha20 block cipher. * * Module: library/chacha20.c - * Caller: library/aead_chacha20_poly1305.c + * Caller: library/chachapoly.c */ #define MBEDTLS_CHACHA20_C @@ -2427,7 +2427,7 @@ * Enable the Poly1305 MAC algorithm. * * Module: library/poly1305.c - * Caller: library/aead_chacha20_poly1305.c + * Caller: library/chachapoly.c */ #define MBEDTLS_POLY1305_C diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 72b7f18ffd..e056975a20 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -78,7 +78,7 @@ * SHA512 1 0x0039-0x0039 * CHACHA20 1 0x003B-0x003B * POLY1305 1 0x0041-0x0041 - * AEAD_CHACHA20_POLY1305 2 0x0047-0x0049 + * CHACHAPOLY 2 0x0047-0x0049 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index b8f663d9cd..582769bafd 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -3,7 +3,6 @@ option(USE_SHARED_MBEDTLS_LIBRARY "Build mbed TLS shared library." OFF) option(LINK_WITH_PTHREAD "Explicitly link mbed TLS library to pthread." OFF) set(src_crypto - aead_chacha20_poly1305.c aes.c aesni.c arc4.c @@ -15,6 +14,7 @@ set(src_crypto camellia.c ccm.c chacha20.c + chachapoly.c cipher.c cipher_wrap.c cmac.c diff --git a/library/Makefile b/library/Makefile index de4bd5c42a..a4c6e35b51 100644 --- a/library/Makefile +++ b/library/Makefile @@ -47,11 +47,10 @@ ifdef WINDOWS_BUILD DLEXT=dll endif -OBJS_CRYPTO= aead_chacha20_poly1305.o \ - aes.o aesni.o arc4.o \ +OBJS_CRYPTO= aes.o aesni.o arc4.o \ asn1parse.o asn1write.o base64.o \ bignum.o blowfish.o camellia.o \ - ccm.o chacha20.o \ + ccm.o chacha20.o chachapoly.o \ cipher.o cipher_wrap.o \ cmac.o ctr_drbg.o des.o \ dhm.o ecdh.o ecdsa.o \ diff --git a/library/aead_chacha20_poly1305.c b/library/chachapoly.c similarity index 64% rename from library/aead_chacha20_poly1305.c rename to library/chachapoly.c index 04180081a2..3ba19542ed 100644 --- a/library/aead_chacha20_poly1305.c +++ b/library/chachapoly.c @@ -1,5 +1,5 @@ /** - * \file aead_chacha20_poly1305.c + * \file chachapoly.c * * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. * @@ -26,9 +26,9 @@ #include MBEDTLS_CONFIG_FILE #endif -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) -#include "mbedtls/aead_chacha20_poly1305.h" +#include "mbedtls/chachapoly.h" #include #if defined(MBEDTLS_SELF_TEST) @@ -40,12 +40,12 @@ #endif /* MBEDTLS_PLATFORM_C */ #endif /* MBEDTLS_SELF_TEST */ -#if !defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) +#if !defined(MBEDTLS_CHACHAPOLY_ALT) -#define AEAD_CHACHA20_POLY1305_STATE_INIT ( 0 ) -#define AEAD_CHACHA20_POLY1305_STATE_AAD ( 1 ) -#define AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ( 2 ) /* Encrypting or decrypting */ -#define AEAD_CHACHA20_POLY1305_STATE_FINISHED ( 3 ) +#define CHACHAPOLY_STATE_INIT ( 0 ) +#define CHACHAPOLY_STATE_AAD ( 1 ) +#define CHACHAPOLY_STATE_CIPHERTEXT ( 2 ) /* Encrypting or decrypting */ +#define CHACHAPOLY_STATE_FINISHED ( 3 ) /* Implementation that should never be optimized out by the compiler */ static void mbedtls_zeroize( void *v, size_t n ) { @@ -57,7 +57,7 @@ static void mbedtls_zeroize( void *v, size_t n ) { * * \param ctx The ChaCha20-Poly1305 context. */ -static void mbedtls_aead_chacha20_poly1305_pad_aad( mbedtls_aead_chacha20_poly1305_context *ctx ) +static void mbedtls_chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->aad_len % 16U ); unsigned char zeroes[15]; @@ -76,7 +76,7 @@ static void mbedtls_aead_chacha20_poly1305_pad_aad( mbedtls_aead_chacha20_poly13 * * \param ctx The ChaCha20-Poly1305 context. */ -static void mbedtls_aead_chacha20_poly1305_pad_ciphertext( mbedtls_aead_chacha20_poly1305_context *ctx ) +static void mbedtls_chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; @@ -90,7 +90,7 @@ static void mbedtls_aead_chacha20_poly1305_pad_ciphertext( mbedtls_aead_chacha20 } } -void mbedtls_aead_chacha20_poly1305_init( mbedtls_aead_chacha20_poly1305_context *ctx ) +void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ) { if ( ctx != NULL ) { @@ -98,12 +98,12 @@ void mbedtls_aead_chacha20_poly1305_init( mbedtls_aead_chacha20_poly1305_context mbedtls_poly1305_init( &ctx->poly1305_ctx ); ctx->aad_len = 0U; ctx->ciphertext_len = 0U; - ctx->state = AEAD_CHACHA20_POLY1305_STATE_INIT; - ctx->mode = MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT; + ctx->state = CHACHAPOLY_STATE_INIT; + ctx->mode = MBEDTLS_CHACHAPOLY_ENCRYPT; } } -void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context *ctx ) +void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ) { if ( ctx != NULL ) { @@ -111,19 +111,19 @@ void mbedtls_aead_chacha20_poly1305_free( mbedtls_aead_chacha20_poly1305_context mbedtls_poly1305_free( &ctx->poly1305_ctx ); ctx->aad_len = 0U; ctx->ciphertext_len = 0U; - ctx->state = AEAD_CHACHA20_POLY1305_STATE_INIT; - ctx->mode = MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT; + ctx->state = CHACHAPOLY_STATE_INIT; + ctx->mode = MBEDTLS_CHACHAPOLY_ENCRYPT; } } -int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_context *ctx, - const unsigned char key[32] ) +int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, + const unsigned char key[32] ) { int result; if ( ( ctx == NULL ) || ( key == NULL ) ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } result = mbedtls_chacha20_setkey( &ctx->chacha20_ctx, key ); @@ -131,16 +131,16 @@ int mbedtls_aead_chacha20_poly1305_setkey( mbedtls_aead_chacha20_poly1305_contex return( result ); } -int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_context *ctx, - const unsigned char nonce[12], - mbedtls_aead_chacha20_poly1305_mode_t mode ) +int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, + const unsigned char nonce[12], + mbedtls_chachapoly_mode_t mode ) { int result; unsigned char poly1305_key[64]; if ( ( ctx == NULL ) || ( nonce == NULL ) ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } result = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 1U ); @@ -161,7 +161,7 @@ int mbedtls_aead_chacha20_poly1305_starts( mbedtls_aead_chacha20_poly1305_contex { ctx->aad_len = 0U; ctx->ciphertext_len = 0U; - ctx->state = AEAD_CHACHA20_POLY1305_STATE_AAD; + ctx->state = CHACHAPOLY_STATE_AAD; ctx->mode = mode; } @@ -170,22 +170,22 @@ cleanup: return( result ); } -int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_context *ctx, - size_t aad_len, - const unsigned char *aad ) +int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, + size_t aad_len, + const unsigned char *aad ) { if ( ctx == NULL ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } else if ( ( aad_len > 0U ) && ( aad == NULL ) ) { /* aad pointer is allowed to be NULL if aad_len == 0 */ - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } - else if ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) + else if ( ctx->state != CHACHAPOLY_STATE_AAD ) { - return(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + return(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } ctx->aad_len += aad_len; @@ -193,36 +193,36 @@ int mbedtls_aead_chacha20_poly1305_update_aad( mbedtls_aead_chacha20_poly1305_co return( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad_len, aad ) ); } -int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_context *ctx, - size_t len, - const unsigned char *input, - unsigned char *output ) +int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, + size_t len, + const unsigned char *input, + unsigned char *output ) { if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } else if ( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) { /* input and output pointers are allowed to be NULL if len == 0 */ - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } - else if ( ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_AAD ) && - ( ctx->state != AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) ) + else if ( ( ctx->state != CHACHAPOLY_STATE_AAD ) && + ( ctx->state != CHACHAPOLY_STATE_CIPHERTEXT ) ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } - if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_AAD ) + if ( ctx->state == CHACHAPOLY_STATE_AAD ) { - ctx->state = AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT; + ctx->state = CHACHAPOLY_STATE_CIPHERTEXT; - mbedtls_aead_chacha20_poly1305_pad_aad( ctx ); + mbedtls_chachapoly_pad_aad( ctx ); } ctx->ciphertext_len += len; - if ( ctx->mode == MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT ) + if ( ctx->mode == MBEDTLS_CHACHAPOLY_ENCRYPT ) { /* Note: the following functions return an error only if one or more of * the input pointers are NULL. Since we have checked their validity @@ -240,30 +240,30 @@ int mbedtls_aead_chacha20_poly1305_update( mbedtls_aead_chacha20_poly1305_contex return( 0 ); } -int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_context *ctx, - unsigned char mac[16] ) +int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, + unsigned char mac[16] ) { unsigned char len_block[16]; if ( ( ctx == NULL ) || ( mac == NULL ) ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } - else if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_INIT ) + else if ( ctx->state == CHACHAPOLY_STATE_INIT ) { - return( MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } - if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_AAD ) + if ( ctx->state == CHACHAPOLY_STATE_AAD ) { - mbedtls_aead_chacha20_poly1305_pad_aad( ctx ); + mbedtls_chachapoly_pad_aad( ctx ); } - else if ( ctx->state == AEAD_CHACHA20_POLY1305_STATE_CIPHERTEXT ) + else if ( ctx->state == CHACHAPOLY_STATE_CIPHERTEXT ) { - mbedtls_aead_chacha20_poly1305_pad_ciphertext( ctx ); + mbedtls_chachapoly_pad_ciphertext( ctx ); } - ctx->state = AEAD_CHACHA20_POLY1305_STATE_FINISHED; + ctx->state = CHACHAPOLY_STATE_FINISHED; /* The lengths of the AAD and ciphertext are processed by * Poly1305 as the final 128-bit block, encoded as little-endian integers. @@ -291,45 +291,45 @@ int mbedtls_aead_chacha20_poly1305_finish( mbedtls_aead_chacha20_poly1305_contex return( 0 ); } -int mbedtls_aead_chacha20_poly1305_crypt_and_mac ( const unsigned char key[32], - const unsigned char nonce[12], - mbedtls_aead_chacha20_poly1305_mode_t mode, - size_t aad_len, - const unsigned char *aad, - size_t ilen, - const unsigned char *input, - unsigned char *output, - unsigned char mac[16] ) +int mbedtls_chachapoly_crypt_and_mac ( const unsigned char key[32], + const unsigned char nonce[12], + mbedtls_chachapoly_mode_t mode, + size_t aad_len, + const unsigned char *aad, + size_t ilen, + const unsigned char *input, + unsigned char *output, + unsigned char mac[16] ) { - mbedtls_aead_chacha20_poly1305_context ctx; + mbedtls_chachapoly_context ctx; int result; - mbedtls_aead_chacha20_poly1305_init( &ctx ); + mbedtls_chachapoly_init( &ctx ); - result = mbedtls_aead_chacha20_poly1305_setkey( &ctx, key ); + result = mbedtls_chachapoly_setkey( &ctx, key ); if ( result != 0 ) goto cleanup; - result = mbedtls_aead_chacha20_poly1305_starts( &ctx, nonce, mode ); + result = mbedtls_chachapoly_starts( &ctx, nonce, mode ); if ( result != 0 ) goto cleanup; - result = mbedtls_aead_chacha20_poly1305_update_aad( &ctx, aad_len, aad ); + result = mbedtls_chachapoly_update_aad( &ctx, aad_len, aad ); if ( result != 0 ) goto cleanup; - result = mbedtls_aead_chacha20_poly1305_update( &ctx, ilen, input, output ); + result = mbedtls_chachapoly_update( &ctx, ilen, input, output ); if ( result != 0 ) goto cleanup; - result = mbedtls_aead_chacha20_poly1305_finish( &ctx, mac ); + result = mbedtls_chachapoly_finish( &ctx, mac ); cleanup: - mbedtls_aead_chacha20_poly1305_free( &ctx ); + mbedtls_chachapoly_free( &ctx ); return( result ); } -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ +#endif /* MBEDTLS_CHACHAPOLY_ALT */ #if defined(MBEDTLS_SELF_TEST) @@ -419,7 +419,7 @@ static const unsigned char test_mac[1][16] = } }; -int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) +int mbedtls_chachapoly_self_test( int verbose ) { unsigned i; int result; @@ -433,15 +433,15 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) mbedtls_printf( " ChaCha20-Poly1305 test %u ", i ); } - result = mbedtls_aead_chacha20_poly1305_crypt_and_mac( test_key[i], - test_nonce[i], - MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, - test_aad_len[i], - test_aad[i], - test_input_len[i], - test_input[i], - output, - mac ); + result = mbedtls_chachapoly_crypt_and_mac( test_key[i], + test_nonce[i], + MBEDTLS_CHACHAPOLY_ENCRYPT, + test_aad_len[i], + test_aad[i], + test_input_len[i], + test_input[i], + output, + mac ); if ( result != 0 ) { if ( verbose != 0 ) @@ -485,4 +485,4 @@ int mbedtls_aead_chacha20_poly1305_self_test( int verbose ) #endif /* MBEDTLS_SELF_TEST */ -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_CHACHAPOLY_C */ diff --git a/library/cipher.c b/library/cipher.c index 71fa6f5350..acc986fa80 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -38,8 +38,8 @@ #include #include -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) -#include "mbedtls/aead_chacha20_poly1305.h" +#if defined(MBEDTLS_CHACHAPOLY_C) +#include "mbedtls/chachapoly.h" #endif #if defined(MBEDTLS_GCM_C) @@ -70,7 +70,7 @@ #endif -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) /* Compare the contents of two buffers in constant time. * Returns 0 if the contents are bitwise identical, otherwise returns * a non-zero value. @@ -88,7 +88,7 @@ static int mbedtls_constant_time_memcmp( const void *v1, const void *v2, size_t return (int)diff; } -#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ static int supported_init = 0; @@ -288,7 +288,7 @@ int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ) return( 0 ); } -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, const unsigned char *ad, size_t ad_len ) { @@ -303,30 +303,30 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, } #endif -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if (MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { int result; - mbedtls_aead_chacha20_poly1305_mode_t mode; + mbedtls_chachapoly_mode_t mode; mode = ( ctx->operation == MBEDTLS_ENCRYPT ) - ? MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT - : MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT; + ? MBEDTLS_CHACHAPOLY_ENCRYPT + : MBEDTLS_CHACHAPOLY_DECRYPT; - result = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + result = mbedtls_chachapoly_starts( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ctx->iv, mode ); if ( result != 0 ) return( result ); - return mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + return mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ad_len, ad ); } #endif return( 0 ); } -#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen ) @@ -394,11 +394,11 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305 ) { *olen = ilen; - return mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + return mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ilen, input, output ); } #endif @@ -852,7 +852,7 @@ int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, mbedtls_ciph } #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, unsigned char *tag, size_t tag_len ) { @@ -867,14 +867,14 @@ int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, return mbedtls_gcm_finish( (mbedtls_gcm_context *) ctx->cipher_ctx, tag, tag_len ); #endif -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { /* Don't allow truncated MAC for Poly1305 */ if ( tag_len != 16U ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - return mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + return mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, tag ); } #endif @@ -914,14 +914,14 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, } #endif /* MBEDTLS_GCM_C */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { /* Don't allow truncated MAC for Poly1305 */ if ( tag_len != sizeof( check_tag ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, check_tag ); if ( ret != 0 ) { @@ -934,11 +934,11 @@ int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, return( 0 ); } -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_CHACHAPOLY_C */ return( 0 ); } -#endif /* MBEDTLS_GCM_C || MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ /* * Packet-oriented wrapper for non-AEAD modes @@ -997,7 +997,7 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, tag, tag_len ) ); } #endif /* MBEDTLS_CCM_C */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { int ret; @@ -1010,26 +1010,26 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, *olen = ilen; - ret = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, - iv, MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT ); + ret = mbedtls_chachapoly_starts( (mbedtls_chachapoly_context*) ctx->cipher_ctx, + iv, MBEDTLS_CHACHAPOLY_ENCRYPT ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ad_len, ad ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ilen, input, output ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, tag ); return( ret ); } -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_CHACHAPOLY_C */ return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); } @@ -1076,7 +1076,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, return( ret ); } #endif /* MBEDTLS_CCM_C */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { unsigned char check_tag[16]; @@ -1090,22 +1090,22 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, *olen = ilen; - ret = mbedtls_aead_chacha20_poly1305_starts( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, - iv, MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT ); + ret = mbedtls_chachapoly_starts( (mbedtls_chachapoly_context*) ctx->cipher_ctx, + iv, MBEDTLS_CHACHAPOLY_DECRYPT ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_update_aad( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ad_len, ad ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_update( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, ilen, input, output ); if ( ret != 0 ) return( ret ); - ret = mbedtls_aead_chacha20_poly1305_finish( (mbedtls_aead_chacha20_poly1305_context*) ctx->cipher_ctx, + ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, check_tag ); if ( ret != 0 ) return( ret ); @@ -1116,7 +1116,7 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, return( 0 ); } -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_CHACHAPOLY_C */ return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); } diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index d8c5f0611f..5c8082850b 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -33,8 +33,8 @@ #include "mbedtls/cipher_internal.h" -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) -#include "mbedtls/aead_chacha20_poly1305.h" +#if defined(MBEDTLS_CHACHAPOLY_C) +#include "mbedtls/chachapoly.h" #endif #if defined(MBEDTLS_AES_C) @@ -1356,40 +1356,41 @@ static const mbedtls_cipher_info_t chacha20_info = { }; #endif /* MBEDTLS_CHACHA20_C */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_CHACHAPOLY_C) -static int aead_chacha20_poly1305_setkey_wrap( void *ctx, const unsigned char *key, - unsigned int key_bitlen ) +static int chachapoly_setkey_wrap( void *ctx, + const unsigned char *key, + unsigned int key_bitlen ) { if( key_bitlen != 256U ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - if ( 0 != mbedtls_aead_chacha20_poly1305_setkey( (mbedtls_aead_chacha20_poly1305_context*)ctx, key ) ) + if ( 0 != mbedtls_chachapoly_setkey( (mbedtls_chachapoly_context*)ctx, key ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); return( 0 ); } -static void * aead_chacha20_poly1305_ctx_alloc( void ) +static void * chachapoly_ctx_alloc( void ) { - mbedtls_aead_chacha20_poly1305_context *ctx; - ctx = mbedtls_calloc( 1, sizeof( mbedtls_aead_chacha20_poly1305_context ) ); + mbedtls_chachapoly_context *ctx; + ctx = mbedtls_calloc( 1, sizeof( mbedtls_chachapoly_context ) ); if( ctx == NULL ) return( NULL ); - mbedtls_aead_chacha20_poly1305_init( ctx ); + mbedtls_chachapoly_init( ctx ); return( ctx ); } -static void aead_chacha20_poly1305_ctx_free( void *ctx ) +static void chachapoly_ctx_free( void *ctx ) { - mbedtls_aead_chacha20_poly1305_free( (mbedtls_aead_chacha20_poly1305_context *) ctx ); + mbedtls_chachapoly_free( (mbedtls_chachapoly_context *) ctx ); mbedtls_free( ctx ); } -static const mbedtls_cipher_base_t aead_chacha20_poly1305_base_info = { +static const mbedtls_cipher_base_t chachapoly_base_info = { MBEDTLS_CIPHER_ID_CHACHA20, NULL, #if defined(MBEDTLS_CIPHER_MODE_CBC) @@ -1404,12 +1405,12 @@ static const mbedtls_cipher_base_t aead_chacha20_poly1305_base_info = { #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif - aead_chacha20_poly1305_setkey_wrap, - aead_chacha20_poly1305_setkey_wrap, - aead_chacha20_poly1305_ctx_alloc, - aead_chacha20_poly1305_ctx_free + chachapoly_setkey_wrap, + chachapoly_setkey_wrap, + chachapoly_ctx_alloc, + chachapoly_ctx_free }; -static const mbedtls_cipher_info_t aead_chacha20_poly1305_info = { +static const mbedtls_cipher_info_t chachapoly_info = { MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MODE_NONE, 256, @@ -1417,9 +1418,9 @@ static const mbedtls_cipher_info_t aead_chacha20_poly1305_info = { 12, 0, 64, - &aead_chacha20_poly1305_base_info + &chachapoly_base_info }; -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_CIPHER_NULL_CIPHER) static int null_crypt_stream( void *ctx, size_t length, @@ -1580,8 +1581,8 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_CHACHA20, &chacha20_info }, #endif -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) - { MBEDTLS_CIPHER_CHACHA20_POLY1305, &aead_chacha20_poly1305_info }, +#if defined(MBEDTLS_CHACHAPOLY_C) + { MBEDTLS_CIPHER_CHACHA20_POLY1305, &chachapoly_info }, #endif #if defined(MBEDTLS_CIPHER_NULL_CIPHER) diff --git a/library/error.c b/library/error.c index d0a75ca5a7..aeef9303a3 100644 --- a/library/error.c +++ b/library/error.c @@ -41,10 +41,6 @@ #include -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) -#include "mbedtls/aead_chacha20_poly1305.h" -#endif - #if defined(MBEDTLS_AES_C) #include "mbedtls/aes.h" #endif @@ -77,6 +73,10 @@ #include "mbedtls/chacha20.h" #endif +#if defined(MBEDTLS_CHACHAPOLY_C) +#include "mbedtls/chachapoly.h" +#endif + #if defined(MBEDTLS_CIPHER_C) #include "mbedtls/cipher.h" #endif @@ -579,13 +579,6 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) // Low level error codes // // BEGIN generated code -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) - if( use_ret == -(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "AEAD_CHACHA20_POLY1305 - Invalid input parameter(s)" ); - if( use_ret == -(MBEDTLS_ERR_AEAD_CHACHA20_POLY1305_BAD_STATE) ) - mbedtls_snprintf( buf, buflen, "AEAD_CHACHA20_POLY1305 - The requested operation is not permitted in the current state" ); -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ - #if defined(MBEDTLS_AES_C) if( use_ret == -(MBEDTLS_ERR_AES_INVALID_KEY_LENGTH) ) mbedtls_snprintf( buf, buflen, "AES - Invalid key length" ); @@ -677,6 +670,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CHACHA20 - Invalid input parameter(s)" ); #endif /* MBEDTLS_CHACHA20_C */ +#if defined(MBEDTLS_CHACHAPOLY_C) + if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Invalid input parameter(s)" ); + if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE) ) + mbedtls_snprintf( buf, buflen, "CHACHAPOLY - The requested operation is not permitted in the current state" ); +#endif /* MBEDTLS_CHACHAPOLY_C */ + #if defined(MBEDTLS_CMAC_C) if( use_ret == -(MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED) ) mbedtls_snprintf( buf, buflen, "CMAC - CMAC hardware accelerator failed" ); diff --git a/library/version_features.c b/library/version_features.c index b73410c6a7..cce1a384ef 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -84,9 +84,9 @@ static const char *features[] = { #if defined(MBEDTLS_TIMING_ALT) "MBEDTLS_TIMING_ALT", #endif /* MBEDTLS_TIMING_ALT */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_ALT) - "MBEDTLS_AEAD_CHACHA20_POLY1305_ALT", -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_ALT */ +#if defined(MBEDTLS_CHACHAPOLY_ALT) + "MBEDTLS_CHACHAPOLY_ALT", +#endif /* MBEDTLS_CHACHAPOLY_ALT */ #if defined(MBEDTLS_AES_ALT) "MBEDTLS_AES_ALT", #endif /* MBEDTLS_AES_ALT */ @@ -519,9 +519,9 @@ static const char *features[] = { #if defined(MBEDTLS_AES_C) "MBEDTLS_AES_C", #endif /* MBEDTLS_AES_C */ -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) - "MBEDTLS_AEAD_CHACHA20_POLY1305_C", -#endif /* MBEDTLS_AEAD_CHACHA20_POLY1305_C */ +#if defined(MBEDTLS_CHACHAPOLY_C) + "MBEDTLS_CHACHAPOLY_C", +#endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_ARC4_C) "MBEDTLS_ARC4_C", #endif /* MBEDTLS_ARC4_C */ diff --git a/programs/test/selftest.c b/programs/test/selftest.c index 57f9924cec..13fa98cdbf 100644 --- a/programs/test/selftest.c +++ b/programs/test/selftest.c @@ -46,7 +46,7 @@ #include "mbedtls/camellia.h" #include "mbedtls/chacha20.h" #include "mbedtls/poly1305.h" -#include "mbedtls/aead_chacha20_poly1305.h" +#include "mbedtls/chachapoly.h" #include "mbedtls/base64.h" #include "mbedtls/bignum.h" #include "mbedtls/rsa.h" @@ -216,8 +216,8 @@ const selftest_t selftests[] = #if defined(MBEDTLS_POLY1305_C) {"poly1305", mbedtls_poly1305_self_test}, #endif -#if defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) - {"chacha20-poly1305", mbedtls_aead_chacha20_poly1305_self_test}, +#if defined(MBEDTLS_CHACHAPOLY_C) + {"chacha20-poly1305", mbedtls_chachapoly_self_test}, #endif #if defined(MBEDTLS_BASE64_C) {"base64", mbedtls_base64_self_test}, diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index b5d1413224..811648a07e 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -29,8 +29,8 @@ if( @ARGV ) { my $error_format_file = $data_dir.'/error.fmt'; -my @low_level_modules = qw( AEAD_CHACHA20_POLY1305 AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH - CAMELLIA CCM CHACHA20 CMAC CTR_DRBG DES +my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH + CAMELLIA CCM CHACHA20 CHACHAPOLY CMAC CTR_DRBG DES ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 NET OID PADLOCK PBKDF2 POLY1305 RIPEMD160 SHA1 SHA256 SHA512 THREADING XTEA ); @@ -88,7 +88,6 @@ foreach my $line (@matches) $module_name = "BIGNUM" if ($module_name eq "MPI"); $module_name = "CTR_DRBG" if ($module_name eq "CTR"); $module_name = "HMAC_DRBG" if ($module_name eq "HMAC"); - $module_name = "AEAD_CHACHA20_POLY1305" if ($module_name eq "AEAD"); my $define_name = $module_name; $define_name = "X509_USE,X509_CREATE" if ($define_name eq "X509"); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c7d9fad3c0..96305386c4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -44,7 +44,6 @@ if(MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX-") endif(MSVC) -add_test_suite(aead_chacha20_poly1305) add_test_suite(aes aes.ecb) add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) @@ -56,13 +55,14 @@ add_test_suite(blowfish) add_test_suite(camellia) add_test_suite(ccm) add_test_suite(chacha20) -add_test_suite(cipher cipher.aead_chacha20_poly1305) +add_test_suite(chachapoly) add_test_suite(cipher cipher.aes) add_test_suite(cipher cipher.arc4) add_test_suite(cipher cipher.blowfish) add_test_suite(cipher cipher.camellia) add_test_suite(cipher cipher.ccm) add_test_suite(cipher cipher.chacha20) +add_test_suite(cipher cipher.chachapoly) add_test_suite(cipher cipher.des) add_test_suite(cipher cipher.gcm) add_test_suite(cipher cipher.null) diff --git a/tests/Makefile b/tests/Makefile index e6ff26cf31..f9d976864b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -45,14 +45,14 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aead_chacha20_poly1305$(EXEXT) \ - test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ +APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_aes.cfb$(EXEXT) test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ - test_suite_chacha20$(EXEXT) test_suite_cmac$(EXEXT) \ - test_suite_cipher.aead_chacha20_poly1305$(EXEXT) \ + test_suite_chacha20$(EXEXT) test_suite_chachapoly$(EXEXT) \ + test_suite_cmac$(EXEXT) \ + test_suite_cipher.chachapoly$(EXEXT) \ test_suite_cipher.aes$(EXEXT) \ test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ test_suite_cipher.chacha20$(EXEXT) \ @@ -117,10 +117,6 @@ test_suite_aes.rest.c : suites/test_suite_aes.function suites/test_suite_aes.res echo " Gen $@" perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.rest -test_suite_cipher.aead_chacha20_poly1305.c : suites/test_suite_cipher.function suites/test_suite_cipher.aead_chacha20_poly1305.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aead_chacha20_poly1305 - test_suite_cipher.aes.c : suites/test_suite_cipher.function suites/test_suite_cipher.aes.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aes @@ -137,6 +133,10 @@ test_suite_cipher.chacha20.c : suites/test_suite_cipher.function suites/test_sui echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.chacha20 +test_suite_cipher.chachapoly.c : suites/test_suite_cipher.function suites/test_suite_cipher.chachapoly.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.chachapoly + test_suite_cipher.gcm.c : suites/test_suite_cipher.function suites/test_suite_cipher.gcm.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.gcm @@ -210,10 +210,6 @@ test_suite_hmac_drbg.pr.c : suites/test_suite_hmac_drbg.function suites/test_sui perl scripts/generate_code.pl suites $* $* -test_suite_aead_chacha20_poly1305$(EXEXT): test_suite_aead_chacha20_poly1305.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - test_suite_aes.ecb$(EXEXT): test_suite_aes.ecb.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ @@ -258,6 +254,10 @@ test_suite_chacha20$(EXEXT): test_suite_chacha20.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_chachapoly$(EXEXT): test_suite_chachapoly.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_cmac$(EXEXT): test_suite_cmac.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ @@ -266,10 +266,6 @@ test_suite_cipher.aes$(EXEXT): test_suite_cipher.aes.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test_suite_cipher.aead_chacha20_poly1305$(EXEXT): test_suite_cipher.aead_chacha20_poly1305.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - test_suite_cipher.arc4$(EXEXT): test_suite_cipher.arc4.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ @@ -282,6 +278,10 @@ test_suite_cipher.chacha20$(EXEXT): test_suite_cipher.chacha20.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_cipher.chachapoly$(EXEXT): test_suite_cipher.chachapoly.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_cipher.gcm$(EXEXT): test_suite_cipher.gcm.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_aead_chacha20_poly1305.data b/tests/suites/test_suite_aead_chacha20_poly1305.data deleted file mode 100644 index 1cbfa24dad..0000000000 --- a/tests/suites/test_suite_aead_chacha20_poly1305.data +++ /dev/null @@ -1,19 +0,0 @@ -ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C -mbedtls_aead_chacha20_poly1305_enc:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"1ae10b594f09e26a7e902ecbd0600691" - -ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C -mbedtls_aead_chacha20_poly1305_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691" - -ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Encrypt) -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C -mbedtls_aead_chacha20_poly1305_enc:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38" - -ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt) -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C -mbedtls_aead_chacha20_poly1305_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38" - -ChaCha20-Poly1305 Selftest -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C:MBEDTLS_SELF_TEST -aead_chacha20_poly1305_selftest: diff --git a/tests/suites/test_suite_chachapoly.data b/tests/suites/test_suite_chachapoly.data new file mode 100644 index 0000000000..08129aa37d --- /dev/null +++ b/tests/suites/test_suite_chachapoly.data @@ -0,0 +1,19 @@ +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_enc:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"1ae10b594f09e26a7e902ecbd0600691" + +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691" + +ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Encrypt) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_enc:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38" + +ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38" + +ChaCha20-Poly1305 Selftest +depends_on:MBEDTLS_CHACHAPOLY_C:MBEDTLS_SELF_TEST +chachapoly_selftest: diff --git a/tests/suites/test_suite_aead_chacha20_poly1305.function b/tests/suites/test_suite_chachapoly.function similarity index 67% rename from tests/suites/test_suite_aead_chacha20_poly1305.function rename to tests/suites/test_suite_chachapoly.function index 6abd054145..fb1a738f0c 100644 --- a/tests/suites/test_suite_aead_chacha20_poly1305.function +++ b/tests/suites/test_suite_chachapoly.function @@ -1,14 +1,14 @@ /* BEGIN_HEADER */ -#include "mbedtls/aead_chacha20_poly1305.h" +#include "mbedtls/chachapoly.h" /* END_HEADER */ /* BEGIN_DEPENDENCIES - * depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C + * depends_on:MBEDTLS_CHACHAPOLY_C * END_DEPENDENCIES */ /* BEGIN_CASE */ -void mbedtls_aead_chacha20_poly1305_enc( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) +void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) { unsigned char key_str[32]; unsigned char nonce_str[12]; @@ -43,11 +43,11 @@ void mbedtls_aead_chacha20_poly1305_enc( char *hex_key_string, char *hex_nonce_s TEST_ASSERT( nonce_len == 12 ); TEST_ASSERT( mac_len == 16 ); - mbedtls_aead_chacha20_poly1305_crypt_and_mac( key_str, nonce_str, - MBEDTLS_AEAD_CHACHA20_POLY1305_ENCRYPT, - aad_len, aad_str, - input_len, input_str, output, - mac ); + mbedtls_chachapoly_crypt_and_mac( key_str, nonce_str, + MBEDTLS_CHACHAPOLY_ENCRYPT, + aad_len, aad_str, + input_len, input_str, output, + mac ); TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); @@ -55,7 +55,7 @@ void mbedtls_aead_chacha20_poly1305_enc( char *hex_key_string, char *hex_nonce_s /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_aead_chacha20_poly1305_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) +void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) { unsigned char key_str[32]; unsigned char nonce_str[12]; @@ -90,11 +90,11 @@ void mbedtls_aead_chacha20_poly1305_dec( char *hex_key_string, char *hex_nonce_s TEST_ASSERT( nonce_len == 12 ); TEST_ASSERT( mac_len == 16 ); - mbedtls_aead_chacha20_poly1305_crypt_and_mac( key_str, nonce_str, - MBEDTLS_AEAD_CHACHA20_POLY1305_DECRYPT, - aad_len, aad_str, - input_len, input_str, output, - mac ); + mbedtls_chachapoly_crypt_and_mac( key_str, nonce_str, + MBEDTLS_CHACHAPOLY_DECRYPT, + aad_len, aad_str, + input_len, input_str, output, + mac ); TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); @@ -102,8 +102,8 @@ void mbedtls_aead_chacha20_poly1305_dec( char *hex_key_string, char *hex_nonce_s /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void aead_chacha20_poly1305_selftest() +void chachapoly_selftest() { - TEST_ASSERT( mbedtls_aead_chacha20_poly1305_self_test( 1 ) == 0 ); + TEST_ASSERT( mbedtls_chachapoly_self_test( 1 ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_cipher.aead_chacha20_poly1305.data b/tests/suites/test_suite_cipher.chachapoly.data similarity index 74% rename from tests/suites/test_suite_cipher.aead_chacha20_poly1305.data rename to tests/suites/test_suite_cipher.chachapoly.data index 9cd1ed021b..de5b3d6482 100644 --- a/tests/suites/test_suite_cipher.aead_chacha20_poly1305.data +++ b/tests/suites/test_suite_cipher.chachapoly.data @@ -1,111 +1,111 @@ Decrypt empty buffer -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C: +depends_on:MBEDTLS_CHACHAPOLY_C: dec_empty_buf: ChaCha20+Poly1305 Encrypt and decrypt 0 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:0:-1 ChaCha20+Poly1305 Encrypt and decrypt 1 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:1:-1 ChaCha20+Poly1305 Encrypt and decrypt 2 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:2:-1 ChaCha20+Poly1305 Encrypt and decrypt 7 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:7:-1 ChaCha20+Poly1305 Encrypt and decrypt 8 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:8:-1 ChaCha20+Poly1305 Encrypt and decrypt 9 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:9:-1 ChaCha20+Poly1305 Encrypt and decrypt 15 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:15:-1 ChaCha20+Poly1305 Encrypt and decrypt 16 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:16:-1 ChaCha20+Poly1305 Encrypt and decrypt 17 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:17:-1 ChaCha20+Poly1305 Encrypt and decrypt 31 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:31:-1 ChaCha20+Poly1305 Encrypt and decrypt 32 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:32:-1 ChaCha20+Poly1305 Encrypt and decrypt 33 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:33:-1 ChaCha20+Poly1305 Encrypt and decrypt 47 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:47:-1 ChaCha20+Poly1305 Encrypt and decrypt 48 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:48:-1 ChaCha20+Poly1305 Encrypt and decrypt 49 bytes -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20_POLY1305:"CHACHA20-POLY1305":256:49:-1 ChaCha20+Poly1305 Encrypt and decrypt 0 bytes in multiple parts 1 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:0:-1:0:0:0:0 ChaCha20+Poly1305 Encrypt and decrypt 1 bytes in multiple parts 1 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:1:0:-1:1:0:1:0 ChaCha20+Poly1305 Encrypt and decrypt 1 bytes in multiple parts 2 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:1:-1:0:1:0:1 ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 1 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:0:-1:16:0:16:0 ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 2 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:0:16:-1:0:16:0:16 ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 3 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:1:15:-1:1:15:1:15 ChaCha20+Poly1305 Encrypt and decrypt 16 bytes in multiple parts 4 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:15:1:-1:15:1:15:1 ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 1 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:15:7:-1:15:7:15:7 ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 2 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:7:15:-1:7:15:7:15 ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 3 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:6:-1:16:6:16:6 ChaCha20+Poly1305 Encrypt and decrypt 22 bytes in multiple parts 4 -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:6:16:-1:6:16:6:16 ChaCha20+Poly1305 Encrypt and decrypt 32 bytes in multiple parts -depends_on:MBEDTLS_AEAD_CHACHA20_POLY1305_C +depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:16:-1:16:16:16:16 diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index e5a252fdbb..92462e52b1 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -60,7 +60,7 @@ void cipher_null_args( ) TEST_ASSERT( mbedtls_cipher_reset( NULL ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_reset( &ctx ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( mbedtls_cipher_update_ad( NULL, buf, 0 ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_update_ad( &ctx, buf, 0 ) @@ -77,7 +77,7 @@ void cipher_null_args( ) TEST_ASSERT( mbedtls_cipher_finish( &ctx, buf, &olen ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( mbedtls_cipher_write_tag( NULL, buf, olen ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_cipher_write_tag( &ctx, buf, olen ) @@ -195,7 +195,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_enc ) ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, ad, sizeof( ad ) - i ) ); TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_enc, ad, sizeof( ad ) - i ) ); #endif @@ -215,7 +215,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_finish( &ctx_enc, encbuf + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_write_tag( &ctx_enc, tag, sizeof( tag ) ) ); #endif @@ -236,7 +236,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, TEST_ASSERT( 0 == mbedtls_cipher_finish( &ctx_dec, decbuf + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_check_tag( &ctx_dec, tag, sizeof( tag ) ) ); #endif @@ -292,7 +292,7 @@ void enc_fail( int cipher_id, int pad_mode, int key_len, #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv, 16 ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx ) ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, NULL, 0 ) ); #endif @@ -340,7 +340,7 @@ void dec_empty_buf() TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, NULL, 0 ) ); #endif @@ -416,7 +416,7 @@ void enc_dec_buf_multipart( int cipher_id, int key_len, int first_length_val, TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_dec ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx_enc ) ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_dec, NULL, 0 ) ); TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx_enc, NULL, 0 ) ); #endif @@ -484,7 +484,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, unsigned char ad[200]; unsigned char tag[20]; size_t key_len, iv_len, cipher_len, clear_len; -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) size_t ad_len, tag_len; #endif mbedtls_cipher_context_t ctx; @@ -505,7 +505,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, iv_len = unhexify( iv, hex_iv ); cipher_len = unhexify( cipher, hex_cipher ); clear_len = unhexify( clear, hex_clear ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) ad_len = unhexify( ad, hex_ad ); tag_len = unhexify( tag, hex_tag ); #else @@ -525,7 +525,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv, iv_len ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx ) ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, ad, ad_len ) ); #endif @@ -536,7 +536,7 @@ void decrypt_test_vec( int cipher_id, int pad_mode, TEST_ASSERT( finish_result == mbedtls_cipher_finish( &ctx, output + outlen, &outlen ) ); total_len += outlen; -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_AEAD_CHACHA20_POLY1305_C) +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) TEST_ASSERT( tag_result == mbedtls_cipher_check_tag( &ctx, tag, tag_len ) ); #endif diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index 802cce7191..b04935a6df 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -158,6 +158,8 @@ + + @@ -198,6 +200,7 @@ + @@ -231,6 +234,8 @@ + + @@ -268,6 +273,7 @@ + From 502f189253fe65d66df7e11000da7f0056379155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 11:57:05 +0200 Subject: [PATCH 0321/1100] ChaCha20: allow in-place en/decryption All other ciphers so far allow this. In particular, the TLS layer depends on this, despite what's documented in the Cipher layer, see https://github.com/ARMmbed/mbedtls/issues/1085 https://github.com/ARMmbed/mbedtls/issues/1087 Also, this can be useful for implementing chachapoly without depending on the semi-internal function keystream_block(), see next commit. --- include/mbedtls/chacha20.h | 5 ++--- library/chacha20.c | 27 +++++++++++++-------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index f88bd28b7c..7999702f5f 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -133,9 +133,8 @@ int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, * * This function is used to both encrypt and decrypt data. * - * \note The \p input and \p output buffers may overlap, but only - * if input >= output (i.e. only if input points ahead of - * the output pointer). + * \note The \p input and \p output pointers must either be equal or + * point to non-overlapping buffers. * * \note mbedtls_chacha20_setkey and mbedtls_chacha20_starts must be * called at least once to setup the context before this function diff --git a/library/chacha20.c b/library/chacha20.c index 28133a675e..1abb96ef93 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -314,23 +314,22 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, /* Process full blocks */ while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) { - mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, &output[offset] ); + /* Generate new keystream block and increment counter */ + mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); + ctx->initial_state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < 64U; i += 8U ) { - output[offset + i ] ^= input[offset + i ]; - output[offset + i + 1U] ^= input[offset + i + 1U]; - output[offset + i + 2U] ^= input[offset + i + 2U]; - output[offset + i + 3U] ^= input[offset + i + 3U]; - output[offset + i + 4U] ^= input[offset + i + 4U]; - output[offset + i + 5U] ^= input[offset + i + 5U]; - output[offset + i + 6U] ^= input[offset + i + 6U]; - output[offset + i + 7U] ^= input[offset + i + 7U]; + output[offset + i ] = input[offset + i ] ^ ctx->keystream8[i ]; + output[offset + i + 1U ] = input[offset + i + 1U ] ^ ctx->keystream8[i + 1U ]; + output[offset + i + 2U ] = input[offset + i + 2U ] ^ ctx->keystream8[i + 2U ]; + output[offset + i + 3U ] = input[offset + i + 3U ] ^ ctx->keystream8[i + 3U ]; + output[offset + i + 4U ] = input[offset + i + 4U ] ^ ctx->keystream8[i + 4U ]; + output[offset + i + 5U ] = input[offset + i + 5U ] ^ ctx->keystream8[i + 5U ]; + output[offset + i + 6U ] = input[offset + i + 6U ] ^ ctx->keystream8[i + 6U ]; + output[offset + i + 7U ] = input[offset + i + 7U ] ^ ctx->keystream8[i + 7U ]; } - /* Increment counter */ - ctx->initial_state[CHACHA20_CTR_INDEX]++; - offset += CHACHA20_BLOCK_SIZE_BYTES; size -= CHACHA20_BLOCK_SIZE_BYTES; } @@ -338,7 +337,9 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, /* Last (partial) block */ if ( size > 0U ) { + /* Generate new keystream block and increment counter */ mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); + ctx->initial_state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < size; i++) { @@ -347,8 +348,6 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, ctx->keystream_bytes_used = size; - /* Increment counter */ - ctx->initial_state[CHACHA20_CTR_INDEX]++; } return( 0 ); From 56206c4db19f472b8429e71d3ae2570072bb5dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 12:18:34 +0200 Subject: [PATCH 0322/1100] Remove semi-internal chacha20_keystrem_block() It's actually easy to implement chachapoly without it, so let's not clutter the API (and avoid adding a burden to alt implementers). --- include/mbedtls/chacha20.h | 21 --------------------- library/chacha20.c | 37 ------------------------------------- library/chachapoly.c | 8 ++++++-- 3 files changed, 6 insertions(+), 60 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index 7999702f5f..d32da1b77f 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -107,27 +107,6 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, const unsigned char nonce[12], uint32_t counter ); -/** - * \brief Generates a block of keystream bytes for a specific counter value. - * - * This function uses the key and nonce previously set in - * the context (via mbedtls_chacha20_setkey and - * mbedtls_chacha20_starts), but ignores the previously - * set counter and uses the counter given as the parameter to - * this function. - * - * \param ctx The ChaCha20 context. This context is not modified. - * \param counter The counter value to use. - * \param keystream Buffer to where the generated keystream bytes are written. - * - * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or keystream are - * NULL. - * Otherwise, 0 is returned to indicate success. - */ -int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, - uint32_t counter, - unsigned char keystream[64] ); - /** * \brief Encrypt or decrypt data. * diff --git a/library/chacha20.c b/library/chacha20.c index 1abb96ef93..5ede4553c0 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -246,43 +246,6 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, return( 0 ); } -int mbedtls_chacha20_keystream_block( const mbedtls_chacha20_context *ctx, - uint32_t counter, - unsigned char keystream[64] ) -{ - uint32_t initial_state[16]; - uint32_t working_state[16]; - - if ( ( ctx == NULL ) || ( keystream == NULL ) ) - { - return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); - } - - initial_state[0] = ctx->initial_state[0]; - initial_state[1] = ctx->initial_state[1]; - initial_state[2] = ctx->initial_state[2]; - initial_state[3] = ctx->initial_state[3]; - initial_state[4] = ctx->initial_state[4]; - initial_state[5] = ctx->initial_state[5]; - initial_state[6] = ctx->initial_state[6]; - initial_state[7] = ctx->initial_state[7]; - initial_state[8] = ctx->initial_state[8]; - initial_state[9] = ctx->initial_state[9]; - initial_state[10] = ctx->initial_state[10]; - initial_state[11] = ctx->initial_state[11]; - initial_state[12] = counter; - initial_state[13] = ctx->initial_state[13]; - initial_state[14] = ctx->initial_state[14]; - initial_state[15] = ctx->initial_state[15]; - - mbedtls_chacha20_block( initial_state, working_state, keystream ); - - mbedtls_zeroize( initial_state, sizeof( initial_state ) ); - mbedtls_zeroize( working_state, sizeof( working_state ) ); - - return( 0 ); -} - int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, diff --git a/library/chachapoly.c b/library/chachapoly.c index 3ba19542ed..35ae99e117 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -143,15 +143,19 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } - result = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 1U ); + /* Set counter = 0, will be update to 1 when generating Poly1305 key */ + result = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 0U ); if ( result != 0 ) goto cleanup; /* Generate the Poly1305 key by getting the ChaCha20 keystream output with counter = 0. + * This is the same as encrypting a buffer of zeroes. * Only the first 256-bits (32 bytes) of the key is used for Poly1305. * The other 256 bits are discarded. */ - result = mbedtls_chacha20_keystream_block( &ctx->chacha20_ctx, 0U, poly1305_key ); + memset( poly1305_key, 0, sizeof( poly1305_key ) ); + result = mbedtls_chacha20_update( &ctx->chacha20_ctx, sizeof( poly1305_key ), + poly1305_key, poly1305_key ); if ( result != 0 ) goto cleanup; From 346b8d5050dd66875d1ae15ebff94b25b9694092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 7 May 2018 12:56:36 +0200 Subject: [PATCH 0323/1100] chachapoly: split crypt_and_mac() to match GCM API In addition to making the APIs of the various AEAD modules more consistent with each other, it's useful to have an auth_decrypt() function so that we can safely check the tag ourselves, as the user might otherwise do it in an insecure way (or even forget to do it altogether). --- include/mbedtls/chachapoly.h | 51 ++++++++--- library/chachapoly.c | 93 +++++++++++++++------ tests/suites/test_suite_chachapoly.function | 37 +++++--- 3 files changed, 133 insertions(+), 48 deletions(-) diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index 810675ddd7..e7413b36f5 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -31,6 +31,8 @@ #define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ #define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ +#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x00049 /**< Authenticated decryption failed: data was not authentic. */ + #ifdef __cplusplus extern "C" { @@ -192,37 +194,64 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, unsigned char mac[16] ); /** - * \brief Encrypt or decrypt data, and produce a MAC with ChaCha20-Poly1305. + * \brief Encrypt or decrypt data, and produce a MAC (tag) with ChaCha20-Poly1305. * - * \param key The 256-bit (32 bytes) encryption key to use. - * \param nonce The 96-bit (12 bytes) nonce/IV to use. + * \param ctx The ChachaPoly context. * \param mode Specifies whether the data in the \p input buffer is to * be encrypted or decrypted. If there is no data to encrypt * or decrypt (i.e. \p ilen is 0) then the value of this * parameter does not matter. - * \param aad_len The length (in bytes) of the AAD data to process. + * \param length The length (in bytes) of the data to encrypt or decrypt. + * \param nonce The 96-bit (12 bytes) nonce/IV to use. * \param aad Buffer containing the additional authenticated data (AAD). * This pointer can be NULL if aad_len == 0. - * \param ilen The length (in bytes) of the data to encrypt or decrypt. + * \param aad_len The length (in bytes) of the AAD data to process. * \param input Buffer containing the data to encrypt or decrypt. * This pointer can be NULL if ilen == 0. * \param output Buffer to where the encrypted or decrypted data is written. * This pointer can be NULL if ilen == 0. - * \param mac Buffer to where the computed 128-bit (16 bytes) MAC is written. + * \param tag Buffer to where the computed 128-bit (16 bytes) MAC is written. * * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned * if one or more of the required parameters are NULL. * Otherwise, 0 is returned to indicate success. */ -int mbedtls_chachapoly_crypt_and_mac( const unsigned char key[32], - const unsigned char nonce[12], +int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, mbedtls_chachapoly_mode_t mode, - size_t aad_len, + size_t length, + const unsigned char nonce[12], const unsigned char *aad, - size_t ilen, + size_t aad_len, const unsigned char *input, unsigned char *output, - unsigned char mac[16] ); + unsigned char tag[16] ); + +/** + * \brief Decrypt data and check a MAC (tag) with ChaCha20-Poly1305. + * + * \param ctx The ChachaPoly context. + * \param length The length of the input and output data. + * \param nonce The nonce / initialization vector. + * \param aad The buffer holding the additional authenticated data. + * \param aad_len The length of the additional authenticated data. + * \param tag The buffer holding the tag. + * \param input The buffer holding the input data. + * \param output The buffer for holding the output data. + * + * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned + * if one or more of the required parameters are NULL. + * MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED if the tag does not + * match. + * Otherwise, 0 is returned to indicate success. + */ +int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char tag[16], + const unsigned char *input, + unsigned char *output ); /** * \brief Checkup routine diff --git a/library/chachapoly.c b/library/chachapoly.c index 35ae99e117..0dba5ed913 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -295,44 +295,70 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, return( 0 ); } -int mbedtls_chachapoly_crypt_and_mac ( const unsigned char key[32], - const unsigned char nonce[12], - mbedtls_chachapoly_mode_t mode, - size_t aad_len, - const unsigned char *aad, - size_t ilen, - const unsigned char *input, - unsigned char *output, - unsigned char mac[16] ) +int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, + mbedtls_chachapoly_mode_t mode, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char *input, + unsigned char *output, + unsigned char tag[16] ) { - mbedtls_chachapoly_context ctx; int result; - mbedtls_chachapoly_init( &ctx ); - - result = mbedtls_chachapoly_setkey( &ctx, key ); + result = mbedtls_chachapoly_starts( ctx, nonce, mode ); if ( result != 0 ) goto cleanup; - result = mbedtls_chachapoly_starts( &ctx, nonce, mode ); - if ( result != 0 ) - goto cleanup; - - result = mbedtls_chachapoly_update_aad( &ctx, aad_len, aad ); + result = mbedtls_chachapoly_update_aad( ctx, aad_len, aad ); if ( result != 0 ) goto cleanup; - result = mbedtls_chachapoly_update( &ctx, ilen, input, output ); + result = mbedtls_chachapoly_update( ctx, length, input, output ); if ( result != 0 ) goto cleanup; - result = mbedtls_chachapoly_finish( &ctx, mac ); + result = mbedtls_chachapoly_finish( ctx, tag ); cleanup: - mbedtls_chachapoly_free( &ctx ); return( result ); } +int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char tag[16], + const unsigned char *input, + unsigned char *output ) +{ + int ret; + unsigned char check_tag[16]; + size_t i; + int diff; + + if( ( ret = mbedtls_chachapoly_crypt_and_tag( ctx, + MBEDTLS_CHACHAPOLY_DECRYPT, length, nonce, + aad, aad_len, input, output, check_tag ) ) != 0 ) + { + return( ret ); + } + + /* Check tag in "constant-time" */ + for( diff = 0, i = 0; i < sizeof( check_tag ); i++ ) + diff |= tag[i] ^ check_tag[i]; + + if( diff != 0 ) + { + mbedtls_zeroize( output, length ); + return( MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ); + } + + return( 0 ); +} + #endif /* MBEDTLS_CHACHAPOLY_ALT */ #if defined(MBEDTLS_SELF_TEST) @@ -425,6 +451,7 @@ static const unsigned char test_mac[1][16] = int mbedtls_chachapoly_self_test( int verbose ) { + mbedtls_chachapoly_context ctx; unsigned i; int result; unsigned char output[200]; @@ -437,12 +464,24 @@ int mbedtls_chachapoly_self_test( int verbose ) mbedtls_printf( " ChaCha20-Poly1305 test %u ", i ); } - result = mbedtls_chachapoly_crypt_and_mac( test_key[i], - test_nonce[i], + mbedtls_chachapoly_init( &ctx ); + + result = mbedtls_chachapoly_setkey( &ctx, test_key[i] ); + if ( result != 0 ) + { + if ( verbose != 0 ) + { + mbedtls_printf( "setkey() error code: %i\n", result ); + } + return( -1 ); + } + + result = mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, - test_aad_len[i], - test_aad[i], test_input_len[i], + test_nonce[i], + test_aad[i], + test_aad_len[i], test_input[i], output, mac ); @@ -450,7 +489,7 @@ int mbedtls_chachapoly_self_test( int verbose ) { if ( verbose != 0 ) { - mbedtls_printf( "error code: %i\n", result ); + mbedtls_printf( "crypt_and_tag() error code: %i\n", result ); } return( -1 ); } @@ -473,6 +512,8 @@ int mbedtls_chachapoly_self_test( int verbose ) return( -1 ); } + mbedtls_chachapoly_free( &ctx ); + if ( verbose != 0 ) { mbedtls_printf( "passed\n" ); diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index fb1a738f0c..b205c4ce01 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -24,6 +24,7 @@ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char size_t key_len; size_t nonce_len; size_t mac_len; + mbedtls_chachapoly_context ctx; memset( key_str, 0x00, 32 ); memset( nonce_str, 0x00, 12 ); @@ -43,14 +44,21 @@ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char TEST_ASSERT( nonce_len == 12 ); TEST_ASSERT( mac_len == 16 ); - mbedtls_chachapoly_crypt_and_mac( key_str, nonce_str, + mbedtls_chachapoly_init( &ctx ); + + mbedtls_chachapoly_setkey( &ctx, key_str ); + + mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, - aad_len, aad_str, - input_len, input_str, output, - mac ); + input_len, nonce_str, + aad_str, aad_len, + input_str, output, mac ); TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); + +exit: + mbedtls_chachapoly_free( &ctx ); } /* END_CASE */ @@ -64,13 +72,14 @@ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char unsigned char output_str[10000]; unsigned char mac_str[16]; unsigned char output[10000]; - unsigned char mac[16]; size_t input_len; size_t output_len; size_t aad_len; size_t key_len; size_t nonce_len; size_t mac_len; + int ret; + mbedtls_chachapoly_context ctx; memset( key_str, 0x00, 32 ); memset( nonce_str, 0x00, 12 ); @@ -90,14 +99,20 @@ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char TEST_ASSERT( nonce_len == 12 ); TEST_ASSERT( mac_len == 16 ); - mbedtls_chachapoly_crypt_and_mac( key_str, nonce_str, - MBEDTLS_CHACHAPOLY_DECRYPT, - aad_len, aad_str, - input_len, input_str, output, - mac ); + mbedtls_chachapoly_init( &ctx ); + mbedtls_chachapoly_setkey( &ctx, key_str ); + + ret = mbedtls_chachapoly_auth_decrypt( &ctx, + input_len, nonce_str, + aad_str, aad_len, + mac_str, input_str, output ); + + TEST_ASSERT( ret == 0 ); TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); - TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); + +exit: + mbedtls_chachapoly_free( &ctx ); } /* END_CASE */ From fe725defaee76f91aa1f8d6b13469107e53556f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 8 May 2018 09:38:09 +0200 Subject: [PATCH 0324/1100] cipher: use new functions from chachapoly --- library/cipher.c | 60 ++++++++++-------------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/library/cipher.c b/library/cipher.c index acc986fa80..1827770b11 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -1000,34 +1000,17 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, #if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { - int ret; - + /* ChachaPoly has fixed length nonce and MAC (tag) */ if ( ( iv_len != ctx->cipher_info->iv_size ) || - ( tag_len != 16U ) ) /* Truncated MAC is not allowed for Poly1305 */ + ( tag_len != 16U ) ) { return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } *olen = ilen; - - ret = mbedtls_chachapoly_starts( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - iv, MBEDTLS_CHACHAPOLY_ENCRYPT ); - if ( ret != 0 ) - return( ret ); - - ret = mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ad_len, ad ); - if ( ret != 0 ) - return( ret ); - - ret = mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ilen, input, output ); - if ( ret != 0 ) - return( ret ); - - ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - tag ); - return( ret ); + return( mbedtls_chachapoly_crypt_and_tag( ctx->cipher_ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + ilen, iv, ad, ad_len, input, output, tag ) ); } #endif /* MBEDTLS_CHACHAPOLY_C */ @@ -1079,42 +1062,23 @@ int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, #if defined(MBEDTLS_CHACHAPOLY_C) if ( MBEDTLS_CIPHER_CHACHA20_POLY1305 == ctx->cipher_info->type ) { - unsigned char check_tag[16]; int ret; + /* ChachaPoly has fixed length nonce and MAC (tag) */ if ( ( iv_len != ctx->cipher_info->iv_size ) || - ( tag_len != 16U ) ) /* Truncated MAC is not allowed for Poly1305 */ + ( tag_len != 16U ) ) { return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } *olen = ilen; + ret = mbedtls_chachapoly_auth_decrypt( ctx->cipher_ctx, ilen, + iv, ad, ad_len, tag, input, output ); - ret = mbedtls_chachapoly_starts( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - iv, MBEDTLS_CHACHAPOLY_DECRYPT ); - if ( ret != 0 ) - return( ret ); + if( ret == MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ) + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; - ret = mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ad_len, ad ); - if ( ret != 0 ) - return( ret ); - - ret = mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ilen, input, output ); - if ( ret != 0 ) - return( ret ); - - ret = mbedtls_chachapoly_finish( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - check_tag ); - if ( ret != 0 ) - return( ret ); - - /* Compare the tag in constant time */ - if ( mbedtls_constant_time_memcmp( tag, check_tag, tag_len ) != 0 ) - return( MBEDTLS_ERR_CIPHER_AUTH_FAILED ); - - return( 0 ); + return( ret ); } #endif /* MBEDTLS_CHACHAPOLY_C */ From b500f8b9113a54e194a116338eb9b606c4628d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 8 May 2018 12:43:48 +0200 Subject: [PATCH 0325/1100] Update documentation to match new guidelines. --- include/mbedtls/chacha20.h | 157 ++++++++++-------- include/mbedtls/chachapoly.h | 297 +++++++++++++++++++++-------------- include/mbedtls/cipher.h | 6 +- include/mbedtls/poly1305.h | 124 +++++++++------ 4 files changed, 350 insertions(+), 234 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index d32da1b77f..579ea38886 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -1,11 +1,18 @@ /** * \file chacha20.h * - * \brief ChaCha20 cipher. + * \brief This file contains ChaCha20 definitions and functions. + * + * ChaCha20 is a stream cipher that can encrypt and decrypt + * information. ChaCha was created by Daniel Bernstein as a variant of + * its Salsa cipher https://cr.yp.to/chacha/chacha-20080128.pdf + * ChaCha20 is the variant with 20 rounds, that was also standardized + * in RFC 7539. * * \author Daniel King - * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,8 +27,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) + * This file is part of Mbed TLS (https://tls.mbed.org) */ + #ifndef MBEDTLS_CHACHA20_H #define MBEDTLS_CHACHA20_H @@ -44,10 +52,10 @@ extern "C" { typedef struct { - uint32_t initial_state[16]; /*! Holds the initial state (before round operations) */ - uint32_t working_state[16]; /*! Holds the working state (after round operations) */ - uint8_t keystream8[64]; /*! Holds leftover keystream bytes */ - size_t keystream_bytes_used; /*! Number of keystream bytes currently used */ + uint32_t initial_state[16]; /*! The initial state (before round operations). */ + uint32_t working_state[16]; /*! The working state (after round operations). */ + uint8_t keystream8[64]; /*! Leftover keystream bytes. */ + size_t keystream_bytes_used; /*! Number of keystream bytes already used. */ } mbedtls_chacha20_context; @@ -56,118 +64,141 @@ mbedtls_chacha20_context; #endif /* MBEDTLS_CHACHA20_ALT */ /** - * \brief Initialize ChaCha20 context + * \brief This function initializes the specified ChaCha20 context. * - * \param ctx ChaCha20 context to be initialized + * It must be the first API called before using + * the context. + * + * It is usually followed by calls to + * \c mbedtls_chacha20_setkey() and + * \c mbedtls_chacha20_starts(), then one or more calls to + * to \c mbedtls_chacha20_update(), and finally to + * \c mbedtls_chacha20_free(). + * + * \param ctx The ChaCha20 context to initialize. */ void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ); /** - * \brief Clear ChaCha20 context + * \brief This function releases and clears the specified ChaCha20 context. * - * \param ctx ChaCha20 context to be cleared + * \param ctx The ChaCha20 context to clear. */ void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ); /** - * \brief Set the ChaCha20 key. + * \brief This function sets the encryption/decryption key. * - * \note The nonce and counter must be set after calling this function, - * before data can be encrypted/decrypted. The nonce and - * counter are set by calling mbedtls_chacha20_starts. + * \note After using this function, you must also call + * \c mbedtls_chacha20_starts() to set a nonce before you + * start encrypting/decrypting data with + * \c mbedtls_chacha_update(). * - * \see mbedtls_chacha20_starts + * \param ctx The ChaCha20 context to which the key should be bound. + * \param key The encryption/decryption key. Must be 32 bytes in length. * - * \param ctx The context to setup. - * \param key Buffer containing the 256-bit key. Must be 32 bytes in length. - * - * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA is returned if ctx or key - * is NULL, or if key_bits is not 128 or 256. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or key is NULL. */ int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, const unsigned char key[32] ); /** - * \brief Set the ChaCha20 nonce and initial counter value. + * \brief This function sets the nonce and initial counter value. * * \note A ChaCha20 context can be re-used with the same key by - * calling this function to change the nonce and/or initial - * counter value. + * calling this function to change the nonce. * - * \param ctx The ChaCha20 context. - * \param nonce Buffer containing the 96-bit nonce. Must be 12 bytes in size. - * \param counter Initial counter value to use. This is usually 0. + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality guarantees for the + * messages encrypted with the same nonce and key. * - * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA is returned if ctx or - * nonce is NULL. - * Otherwise, 0 is returned to indicate success. + * \param ctx The ChaCha20 context to which the nonce should be bound. + * \param nonce The nonce. Must be 12 bytes in size. + * \param counter The initial counter value. This is usually 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or nonce is + * NULL. */ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, const unsigned char nonce[12], uint32_t counter ); /** - * \brief Encrypt or decrypt data. + * \brief This function encrypts or decrypts data. * - * This function is used to both encrypt and decrypt data. + * Since ChaCha20 is a stream cipher, the same operation is + * used for encrypting and decrypting data. * * \note The \p input and \p output pointers must either be equal or * point to non-overlapping buffers. * - * \note mbedtls_chacha20_setkey and mbedtls_chacha20_starts must be - * called at least once to setup the context before this function - * can be called. + * \note \c mbedtls_chacha20_setkey() and + * \c mbedtls_chacha20_starts() must be called at least once + * to setup the context before this function can be called. * - * \param ctx The ChaCha20 context. - * \param size The length (in bytes) to process. This can have any length. - * \param input Buffer containing the input data. + * \note This function can be called mutliple times in a row in + * order to encrypt of decrypt data piecewise with the same + * key and nonce. + * + * \param ctx The ChaCha20 context to use for encryption or decryption. + * \param size The length of the input data in bytes. + * \param input The buffer holding the input data. * This pointer can be NULL if size == 0. - * \param output Buffer containing the output data. + * \param output The buffer holding the output data. + * Must be able to hold \p size bytes. * This pointer can be NULL if size == 0. * - * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if the ctx, input, or + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if the ctx, input, or * output pointers are NULL. - * Otherwise, 0 is returned to indicate success. */ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, - size_t size, - const unsigned char *input, - unsigned char *output ); + size_t size, + const unsigned char *input, + unsigned char *output ); /** - * \brief Encrypt or decrypt a message using ChaCha20. + * \brief This function encrypts or decrypts data with ChaCha20 and + * the given key and nonce. * - * This function is used the same way for encrypting and - * decrypting data. It's not necessary to specify which - * operation is being performed. + * Since ChaCha20 is a stream cipher, the same operation is + * used for encrypting and decrypting data. * - * \note The \p input and \p output buffers may overlap, but only - * if input >= output (i.e. only if input points ahead of - * the output pointer). + * \warning You must never use the same (key, nonce) pair more than + * once. This would void any confidentiality guarantees for + * the messages encrypted with the same nonce and key. * - * \param key Buffer containing the 256-bit key. Must be 32 bytes in length. - * \param nonce Buffer containing the 96-bit nonce. Must be 12 bytes in length. + * \note The \p input and \p output pointers must either be equal or + * point to non-overlapping buffers. + * + * \param key The encryption/decryption key. Must be 32 bytes in length. + * \param nonce The nonce. Must be 12 bytes in size. * \param counter The initial counter value. This is usually 0. - * \param data_len The number of bytes to process. - * \param input Buffer containing the input data (data to encrypt or decrypt). - * \param output Buffer to where the processed data is written. + * \param size The length of the input data in bytes. + * \param input The buffer holding the input data. + * This pointer can be NULL if size == 0. + * \param output The buffer holding the output data. + * Must be able to hold \p size bytes. + * This pointer can be NULL if size == 0. * - * \return MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if key, nonce, input, + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if key, nonce, input, * or output is NULL. - * Otherwise, 0 is returned to indicate success. */ int mbedtls_chacha20_crypt( const unsigned char key[32], const unsigned char nonce[12], uint32_t counter, - size_t data_len, + size_t size, const unsigned char* input, unsigned char* output ); /** - * \brief Checkup routine + * \brief The ChaCha20 checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 on success. + * \return \c 1 on failure. */ int mbedtls_chacha20_self_test( int verbose ); diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index e7413b36f5..ddcd549720 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -1,9 +1,18 @@ /** * \file chachapoly.h * - * \brief ChaCha20-Poly1305 AEAD construction based on RFC 7539. + * \brief This file contains the AEAD-ChaCha20-Poly1305 definitions and + * functions. * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * ChaCha20-Poly1305 is an algorithm for Authenticated Encryption + * with Associated Data (AEAD) that can be used to encrypt and + * authenticate data. It is based on ChaCha20 and Poly1305 by Daniel + * Bernstein and was standardized in RFC 7539. + * + * \author Daniel King + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +27,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) + * This file is part of Mbed TLS (https://tls.mbed.org) */ + #ifndef MBEDTLS_CHACHAPOLY_H #define MBEDTLS_CHACHAPOLY_H @@ -30,7 +40,7 @@ #endif #define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ -#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state. */ #define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x00049 /**< Authenticated decryption failed: data was not authentic. */ @@ -40,8 +50,8 @@ extern "C" { typedef enum { - MBEDTLS_CHACHAPOLY_ENCRYPT, - MBEDTLS_CHACHAPOLY_DECRYPT + MBEDTLS_CHACHAPOLY_ENCRYPT, /**< The mode value for performing encryption. */ + MBEDTLS_CHACHAPOLY_DECRYPT /**< The mode value for performing decryption. */ } mbedtls_chachapoly_mode_t; @@ -52,12 +62,12 @@ mbedtls_chachapoly_mode_t; typedef struct { - mbedtls_chacha20_context chacha20_ctx; /** ChaCha20 context */ - mbedtls_poly1305_context poly1305_ctx; /** Poly1305 context */ - uint64_t aad_len; /** Length (bytes) of the Additional Authenticated Data */ - uint64_t ciphertext_len; /** Length (bytes) of the ciphertext */ - int state; /** Current state of the context */ - mbedtls_chachapoly_mode_t mode; /** Cipher mode (encrypt or decrypt) */ + mbedtls_chacha20_context chacha20_ctx; /**< The ChaCha20 context. */ + mbedtls_poly1305_context poly1305_ctx; /**< The Poly1305 context. */ + uint64_t aad_len; /**< The length (bytes) of the Additional Authenticated Data. */ + uint64_t ciphertext_len; /**< The length (bytes) of the ciphertext. */ + int state; /**< The current state of the context. */ + mbedtls_chachapoly_mode_t mode; /**< Cipher mode (encrypt or decrypt). */ } mbedtls_chachapoly_context; @@ -66,112 +76,144 @@ mbedtls_chachapoly_context; #endif /* !MBEDTLS_CHACHAPOLY_ALT */ /** - * \brief Initialize ChaCha20-Poly1305 context + * \brief This function initializes the specified ChaCha20-Poly1305 context. * - * \param ctx ChaCha20-Poly1305 context to be initialized + * It must be the first API called before using + * the context. It must be followed by a call to + * \c mbedtls_chachapoly_setkey() before any operation can be + * done, and to \c mbedtls_chachapoly_free() once all + * operations with that context have been finished. + * + * In order to encrypt or decrypt full messages at once, for + * each message you should make a single call to + * \c mbedtls_chachapoly_crypt_and_tag() or + * \c mbedtls_chachapoly_auth_decrypt(). + * + * In order to encrypt or decrypt messages piecewise, for each + * message you should make a call to + * \c mbedtls_chachapoly_starts(), then 0 or more calls to + * \c mbedtls_chachapoly_update_aad(), then 0 or more calls to + * \c mbedtls_chachapoly_update(), then one call to + * \c mbedtls_chachapoly_finish(). + * + * + * \param ctx The ChachaPoly context to initialize. */ void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ); /** - * \brief Clear ChaCha20-Poly1305 context + * \brief This function releases and clears the specified ChaCha20-Poly1305 context. * - * \param ctx ChaCha20-Poly1305 context to be cleared + * \param ctx The ChachaPoly context to clear. */ void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ); /** - * \brief Set the ChaCha20-Poly1305 symmetric encryption key. + * \brief This function sets the ChaCha20-Poly1305 symmetric encryption key. * - * \param ctx The ChaCha20-Poly1305 context. - * \param key The 256-bit (32 bytes) key. + * \param ctx The ChaCha20-Poly1305 context to which the key should be + * bound. + * \param key The 256-bit (32 bytes) key. * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if \p ctx or \p key are NULL. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if \p ctx or \p key are NULL. */ int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, const unsigned char key[32] ); /** - * \brief Setup ChaCha20-Poly1305 context for encryption or decryption. + * \brief This function starts a ChaCha20-Poly1305 encryption or + * decryption operation. * - * \note If the context is being used for AAD only (no data to - * encrypt or decrypt) then \p mode can be set to any value. + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality and authenticity + * guarantees for the messages encrypted with the same nonce + * and key. * - * \param ctx The ChaCha20-Poly1305 context. - * \param nonce The nonce/IV to use for the message. This must be unique - * for every message encrypted under the same key. - * \param mode Specifies whether the context is used to encrypt or - * decrypt data. + * \note If the context is being used for AAD only (no data to + * encrypt or decrypt) then \p mode can be set to any value. * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if \p ctx or \p mac are NULL. - * Otherwise, 0 is returned to indicate success. + * \param ctx The ChaCha20-Poly1305 context. + * \param nonce The nonce/IV to use for the message. Must be 12 bytes. + * \param mode The operation to perform: #MBEDTLS_CHACHAPOLY_ENCRYPT or + * #MBEDTLS_CHACHAPOLY_DECRYPT. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if \p ctx or \p mac are NULL. */ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, const unsigned char nonce[12], mbedtls_chachapoly_mode_t mode ); /** - * \brief Process additional authenticated data (AAD). + * \brief This function feeds additional data to be authenticated + * into an ongoing ChaCha20-Poly1305 operation. * - * This function processes data that is authenticated, but - * not encrypted. + * The Additional Authenticated Data (AAD), also called + * Associated Data (AD) is only authenticated but not + * encrypted nor included in the encrypted output. It is + * usually transmitted separately fro mthe ciphertext or + * computed locally by each party. * - * \note This function is called before data is encrypted/decrypted. - * I.e. call this function to process the AAD before calling - * mbedtls_chachapoly_update. + * \note This function is called before data is encrypted/decrypted. + * I.e. call this function to process the AAD before calling + * \c mbedtls_chachapoly_update(). * - * You may call this function multiple times to process - * an arbitrary amount of AAD. It is permitted to call - * this function 0 times, if no AAD is used. + * You may call this function multiple times to process + * an arbitrary amount of AAD. It is permitted to call + * this function 0 times, if no AAD is used. * - * This function cannot be called any more if data has - * been processed by mbedtls_chachapoly_update, - * or if the context has been finished. + * This function cannot be called any more if data has + * been processed by \c mbedtls_chachapoly_update(), + * or if the context has been finished. * - * \param ctx The ChaCha20-Poly1305 context. - * \param aad_len The length (in bytes) of the AAD. The length has no - * restrictions. - * \param aad Buffer containing the AAD. - * This pointer can be NULL if aad_len == 0. + * \param ctx The ChaCha20-Poly1305 context to use. + * \param aad_len The length (in bytes) of the AAD. The length has no + * restrictions. + * \param aad Buffer containing the AAD. + * This pointer can be NULL if aad_len == 0. * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if \p ctx or \p aad are NULL. - * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if - * the context has not been setup, the context has been - * finished, or if the AAD has been finished. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if \p ctx or \p aad are NULL. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operations has not been started or has been + * finished, or if the AAD has been finished. */ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, size_t aad_len, const unsigned char *aad ); /** - * \brief Encrypt/decrypt data. + * \brief Thus function feeds data to be encrypted or decrypted + * into an on-going ChaCha20-Poly1305 + * operation. * - * The direction (encryption or decryption) depends on the - * mode that was given when calling - * mbedtls_chachapoly_starts. + * The direction (encryption or decryption) depends on the + * mode that was given when calling + * \c mbedtls_chachapoly_starts(). * - * You may call this function multiple times to process - * an arbitrary amount of data. It is permitted to call - * this function 0 times, if no data is to be encrypted - * or decrypted. + * You may call this function multiple times to process + * an arbitrary amount of data. It is permitted to call + * this function 0 times, if no data is to be encrypted + * or decrypted. * - * \param ctx The ChaCha20-Poly1305 context. - * \param len The length (in bytes) of the data to encrypt or decrypt. - * \param input Buffer containing the data to encrypt or decrypt. - * This pointer can be NULL if len == 0. - * \param output Buffer to where the encrypted or decrypted data is written. - * This pointer can be NULL if len == 0. + * \param ctx The ChaCha20-Poly1305 context to use. + * \param len The length (in bytes) of the data to encrypt or decrypt. + * \param input The buffer containing the data to encrypt or decrypt. + * This pointer can be NULL if len == 0. + * \param output The buffer to where the encrypted or decrypted data is written. + * Must be able to hold \p len bytes. + * This pointer can be NULL if len == 0. * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if \p ctx, \p input, or \p output are NULL. - * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if - * the context has not been setup, or if the context has been - * finished. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if \p ctx, \p input, or \p output are NULL. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operation has not been started or has been + * finished. */ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, size_t len, @@ -179,42 +221,51 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, unsigned char *output ); /** - * \brief Compute the ChaCha20-Poly1305 MAC. + * \brief This function finished the ChaCha20-Poly1305 operation and + * generates the MAC (authentication tag). * - * \param ctx The ChaCha20-Poly1305 context. - * \param mac Buffer to where the 128-bit (16 bytes) MAC is written. + * \param ctx The ChaCha20-Poly1305 context to use. + * \param mac The buffer to where the 128-bit (16 bytes) MAC is written. * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if \p ctx or \p mac are NULL. - * MBEDTLS_ERR_CHACHAPOLY_BAD_STATE is returned if - * the context has not been setup. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if \p ctx or \p mac are NULL. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operation has not been started or has been + * finished. */ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, unsigned char mac[16] ); /** - * \brief Encrypt or decrypt data, and produce a MAC (tag) with ChaCha20-Poly1305. + * \brief This function performs a complete ChaCha20-Poly1305 + * operation with the previously-set key. * - * \param ctx The ChachaPoly context. - * \param mode Specifies whether the data in the \p input buffer is to - * be encrypted or decrypted. If there is no data to encrypt - * or decrypt (i.e. \p ilen is 0) then the value of this - * parameter does not matter. - * \param length The length (in bytes) of the data to encrypt or decrypt. - * \param nonce The 96-bit (12 bytes) nonce/IV to use. - * \param aad Buffer containing the additional authenticated data (AAD). - * This pointer can be NULL if aad_len == 0. - * \param aad_len The length (in bytes) of the AAD data to process. - * \param input Buffer containing the data to encrypt or decrypt. - * This pointer can be NULL if ilen == 0. - * \param output Buffer to where the encrypted or decrypted data is written. - * This pointer can be NULL if ilen == 0. - * \param tag Buffer to where the computed 128-bit (16 bytes) MAC is written. + * \note Before using this function, you must set the key with + * \c mbedtls_chachapoly_setkey(). * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if one or more of the required parameters are NULL. - * Otherwise, 0 is returned to indicate success. + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality and authenticity + * guarantees for the messages encrypted with the same nonce + * and key. + * + * \param ctx The ChaCha20-Poly1305 context to use (holds the key). + * \param mode The operation to perform: #MBEDTLS_CHACHAPOLY_ENCRYPT or + * #MBEDTLS_CHACHAPOLY_DECRYPT. + * \param length The length (in bytes) of the data to encrypt or decrypt. + * \param nonce The 96-bit (12 bytes) nonce/IV to use. + * \param aad The buffer containing the additional authenticated data (AAD). + * This pointer can be NULL if aad_len == 0. + * \param aad_len The length (in bytes) of the AAD data to process. + * \param input The buffer containing the data to encrypt or decrypt. + * This pointer can be NULL if ilen == 0. + * \param output The buffer to where the encrypted or decrypted data is written. + * This pointer can be NULL if ilen == 0. + * \param tag The buffer to where the computed 128-bit (16 bytes) MAC is written. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if one or more of the required parameters are NULL. */ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, mbedtls_chachapoly_mode_t mode, @@ -227,22 +278,29 @@ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, unsigned char tag[16] ); /** - * \brief Decrypt data and check a MAC (tag) with ChaCha20-Poly1305. + * \brief This function performs a complete ChaCha20-Poly1305 + * authenticated decryption with the previously-set key. * - * \param ctx The ChachaPoly context. - * \param length The length of the input and output data. - * \param nonce The nonce / initialization vector. - * \param aad The buffer holding the additional authenticated data. - * \param aad_len The length of the additional authenticated data. - * \param tag The buffer holding the tag. - * \param input The buffer holding the input data. - * \param output The buffer for holding the output data. + * \note Before using this function, you must set the key with + * \c mbedtls_chachapoly_setkey(). * - * \return MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA is returned - * if one or more of the required parameters are NULL. - * MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED if the tag does not - * match. - * Otherwise, 0 is returned to indicate success. + * \param ctx The ChaCha20-Poly1305 context to use (holds the key). + * \param length The length (in bytes) of the data to decrypt. + * \param nonce The 96-bit (12 bytes) nonce/IV to use. + * \param aad The buffer containing the additional authenticated data (AAD). + * This pointer can be NULL if aad_len == 0. + * \param aad_len The length (in bytes) of the AAD data to process. + * \param tag The buffer holding the authentication tag. + * \param input The buffer containing the data to decrypt. + * This pointer can be NULL if ilen == 0. + * \param output The buffer to where the decrypted data is written. + * This pointer can be NULL if ilen == 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * if one or more of the required parameters are NULL. + * \return #MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED + * if the data was not authentic. */ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, size_t length, @@ -254,9 +312,10 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, unsigned char *output ); /** - * \brief Checkup routine + * \brief The ChaCha20-Poly1305 checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 on success. + * \return \c 1 on failure. */ int mbedtls_chachapoly_self_test( int verbose ); diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index ac1f564fb0..591aa79aac 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -86,7 +86,7 @@ typedef enum { MBEDTLS_CIPHER_ID_CAMELLIA, /**< The Camellia cipher. */ MBEDTLS_CIPHER_ID_BLOWFISH, /**< The Blowfish cipher. */ MBEDTLS_CIPHER_ID_ARC4, /**< The RC4 cipher. */ - MBEDTLS_CIPHER_ID_CHACHA20, /**< The Chacha20 cipher. */ + MBEDTLS_CIPHER_ID_CHACHA20, /**< The ChaCha20 cipher. */ } mbedtls_cipher_id_t; /** @@ -146,8 +146,8 @@ typedef enum { MBEDTLS_CIPHER_CAMELLIA_128_CCM, /**< Camellia cipher with 128-bit CCM mode. */ MBEDTLS_CIPHER_CAMELLIA_192_CCM, /**< Camellia cipher with 192-bit CCM mode. */ MBEDTLS_CIPHER_CAMELLIA_256_CCM, /**< Camellia cipher with 256-bit CCM mode. */ - MBEDTLS_CIPHER_CHACHA20, /**< Chacha20 stream cipher. */ - MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< Chacha20-Poly1305 AEAD cipher. */ + MBEDTLS_CIPHER_CHACHA20, /**< ChaCha20 stream cipher. */ + MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< ChaCha20-Poly1305 AEAD cipher. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index f691915781..c2e2655e7e 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -1,9 +1,18 @@ /** * \file poly1305.h * - * \brief Poly1305 authenticator algorithm. + * \brief This file containts Poly1305 definitions and functions. * - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Poly1305 is a one-time message authenticator that can be used to + * authenticate messages. Poly1305-AES was created by Daniel + * Bernstein https://cr.yp.to/mac/poly1305-20050329.pdf The generic + * Poly1305 algorithm (not tied to AES) was also standardized in RFC + * 7539. + * + * \author Daniel King + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -18,8 +27,9 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * This file is part of mbed TLS (https://tls.mbed.org) + * This file is part of Mbed TLS (https://tls.mbed.org) */ + #ifndef MBEDTLS_POLY1305_H #define MBEDTLS_POLY1305_H @@ -42,11 +52,11 @@ extern "C" { typedef struct { - uint32_t r[4]; /** Stores the value for 'r' (low 128 bits of the key) */ - uint32_t s[4]; /** Stores the value for 's' (high 128 bits of the key) */ - uint32_t acc[5]; /** Accumulator number */ - uint8_t queue[16]; /** Stores partial block data */ - size_t queue_len; /** Number of bytes stored in 'queue'. Always less than 16 */ + uint32_t r[4]; /** The value for 'r' (low 128 bits of the key). */ + uint32_t s[4]; /** The value for 's' (high 128 bits of the key). */ + uint32_t acc[5]; /** The accumulator number. */ + uint8_t queue[16]; /** The current partial block of data. */ + size_t queue_len; /** The number of bytes stored in 'queue'. */ } mbedtls_poly1305_context; @@ -55,82 +65,97 @@ mbedtls_poly1305_context; #endif /* MBEDTLS_POLY1305_ALT */ /** - * \brief Initialize a Poly1305 context + * \brief This function initializes the specified Poly1305 context. * - * \param ctx The Poly1305 context to be initialized + * It must be the first API called before using + * the context. + * + * It is usually followed by a call to + * \c mbedtls_poly1305_starts(), then one or more calls to + * \c mbedtls_poly1305_update(), then one call to + * \c mbedtls_poly1305_finish(), then finally + * \c mbedtls_poly1305_free(). + * + * \param ctx The Poly1305 context to initialize. */ void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ); /** - * \brief Clear a Poly1305 context + * \brief This function releases and clears the specified Poly1305 context. * - * \param ctx The Poly1305 context to be cleared + * \param ctx The Poly1305 context to clear. */ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ); /** - * \brief Set the Poly1305 authentication key. + * \brief This function sets the one-time authentication key. * - * \warning The key should be unique, and \b MUST be - * unpredictable for each invocation of Poly1305. + * \warning The key must be unique and unpredictable for each + * invocation of Poly1305. * - * \param ctx The Poly1305 context. - * \param key Buffer containing the 256-bit key. + * \param ctx The Poly1305 context to which the key should be bound. + * \param key The buffer containing the 256-bit key. * - * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx - * or key are NULL. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA + * if ctx or key are NULL. */ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ); /** - * \brief Process data with Poly1305. + * \brief This functions feeds an input bufer into an ongoing + * Poly1305 computation. * - * This function can be called multiple times to process - * a stream of data. + * It is called between \c mbedtls_cipher_cmac_starts() and + * \c mbedtls_cipher_cmac_finish(). + * Can be called repeatedly to process a stream of data. * - * \param ctx The Poly1305 context. - * \param ilen The input length (in bytes). Any value is accepted. - * \param input Buffer containing the input data to Process. - * This pointer can be NULL if ilen == 0. + * \param ctx The Poly1305 context to use for the Poly1305 operation. + * \param ilen The length of the input data (in bytes). Any value is accepted. + * \param input The buffer holding the input data. + * This pointer can be NULL if ilen == 0. * - * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx - * or input are NULL. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA + * if ctx or input are NULL. */ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, size_t ilen, const unsigned char *input ); /** - * \brief Generate the Poly1305 MAC. + * \brief This function generates the Poly1305 Message + * Authentication Code (MAC). * - * \param ctx The Poly1305 context. - * \param mac Buffer to where the MAC is written. Must be big enough - * to hold the 16-byte MAC. + * \param ctx The Poly1305 context to use for the Poly1305 operation. + * \param mac The buffer to where the MAC is written. Must be big enough + * to hold the 16-byte MAC. * - * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if ctx - * or mac are NULL. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA + * if ctx or mac are NULL. */ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, unsigned char mac[16] ); /** - * \brief Generate the Poly1305 MAC of some data with the given key. + * \brief This function calculates the Poly1305 MAC of the input + * buffer with the provided key. * - * \warning The key should be unique, and \b MUST be - * unpredictable for each invocation of Poly1305. + * \warning The key must be unique and unpredictable for each + * invocation of Poly1305. * - * \param key Buffer containing the 256-bit (32 bytes) key. - * \param ilen The length of the input data (in bytes). - * \param input Buffer containing the input data to process. - * \param mac Buffer to where the 128-bit (16 bytes) MAC is written. + * \param key The buffer containing the 256-bit key. + * \param ilen The length of the input data (in bytes). Any value is accepted. + * \param input The buffer holding the input data. + * This pointer can be NULL if ilen == 0. + * \param mac The buffer to where the MAC is written. Must be big enough + * to hold the 16-byte MAC. * - * \return MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA is returned if key, - * input, or mac are NULL. - * Otherwise, 0 is returned to indicate success. + * \return \c 0 on success. + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA + * if key, input, or mac are NULL. */ int mbedtls_poly1305_mac( const unsigned char key[32], size_t ilen, @@ -138,9 +163,10 @@ int mbedtls_poly1305_mac( const unsigned char key[32], unsigned char mac[16] ); /** - * \brief Checkup routine + * \brief The Poly1305 checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 on success. + * \return \c 1 on failure. */ int mbedtls_poly1305_self_test( int verbose ); From b1ac5e7842376fd2f2fa02094d2f49061c6bb703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 09:25:00 +0200 Subject: [PATCH 0326/1100] poly1305: adjust parameter order This module used (len, pointer) while (pointer, len) is more common in the rest of the library, in particular it's what's used in the CMAC API that is very comparable to Poly1305, so switch to (pointer, len) for consistency. --- include/mbedtls/poly1305.h | 6 +++--- library/chachapoly.c | 16 ++++++++-------- library/poly1305.c | 14 +++++++------- programs/test/benchmark.c | 2 +- tests/suites/test_suite_poly1305.function | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index c2e2655e7e..19f523774d 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -121,8 +121,8 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, * if ctx or input are NULL. */ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, - size_t ilen, - const unsigned char *input ); + const unsigned char *input, + size_t ilen ); /** * \brief This function generates the Poly1305 Message @@ -158,8 +158,8 @@ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, * if key, input, or mac are NULL. */ int mbedtls_poly1305_mac( const unsigned char key[32], - size_t ilen, const unsigned char *input, + size_t ilen, unsigned char mac[16] ); /** diff --git a/library/chachapoly.c b/library/chachapoly.c index 0dba5ed913..d599c52403 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -66,8 +66,8 @@ static void mbedtls_chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) { memset( zeroes, 0, sizeof( zeroes ) ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, - 16U - partial_block_len, - zeroes ); + zeroes, + 16U - partial_block_len ); } } @@ -85,8 +85,8 @@ static void mbedtls_chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) { memset( zeroes, 0, sizeof( zeroes ) ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, - 16U - partial_block_len, - zeroes ); + zeroes, + 16U - partial_block_len ); } } @@ -194,7 +194,7 @@ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, ctx->aad_len += aad_len; - return( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad_len, aad ) ); + return( mbedtls_poly1305_update( &ctx->poly1305_ctx, aad, aad_len ) ); } int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, @@ -233,11 +233,11 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, * above, we can safety ignore the return value. */ (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len, output ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, output, len ); } else /* DECRYPT */ { - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len, input ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, input, len ); (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); } @@ -289,7 +289,7 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, len_block[14] = (unsigned char) ( ctx->ciphertext_len >> 48 ); len_block[15] = (unsigned char) ( ctx->ciphertext_len >> 56 ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, 16U, len_block ); + (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len_block, 16U ); (void) mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); return( 0 ); diff --git a/library/poly1305.c b/library/poly1305.c index 66f932c4f4..14c362d583 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -285,8 +285,8 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, } int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, - size_t ilen, - const unsigned char* input ) + const unsigned char *input, + size_t ilen ) { size_t offset = 0U; size_t remaining = ilen; @@ -391,9 +391,9 @@ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, } int mbedtls_poly1305_mac( const unsigned char key[32], - size_t ilen, - const unsigned char *input, - unsigned char mac[16] ) + const unsigned char *input, + size_t ilen, + unsigned char mac[16] ) { mbedtls_poly1305_context ctx; int result; @@ -404,7 +404,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], if ( result != 0 ) goto cleanup; - result = mbedtls_poly1305_update( &ctx, ilen, input ); + result = mbedtls_poly1305_update( &ctx, input, ilen ); if ( result != 0 ) goto cleanup; @@ -496,8 +496,8 @@ int mbedtls_poly1305_self_test( int verbose ) } result = mbedtls_poly1305_mac( test_keys[i], - test_data_len[i], test_data[i], + test_data_len[i], mac ); if ( result != 0 ) { diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index c419665864..17f9d0e275 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -538,7 +538,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_POLY1305_C) if ( todo.poly1305 ) { - TIME_AND_TSC( "Poly1305", mbedtls_poly1305_mac( buf, BUFSIZE, buf, buf ) ); + TIME_AND_TSC( "Poly1305", mbedtls_poly1305_mac( buf, buf, BUFSIZE, buf ) ); } #endif diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index af69a03126..a633c2baad 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -20,7 +20,7 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src src_len = unhexify( src_str, hex_src_string ); unhexify( key, hex_key_string ); - mbedtls_poly1305_mac( key, src_len, src_str, mac ); + mbedtls_poly1305_mac( key, src_str, src_len, mac ); hexify( mac_str, mac, 16 ); TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); From 5ef92d309a759d9d2acdaf613021d7bfc66d6241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 09:34:25 +0200 Subject: [PATCH 0327/1100] chachapoly: adjust parameter order This module used (len, pointer) while (pointer, len) is more common in the rest of the library, in particular it's what's used in the GCM API that very comparable to it, so switch to (pointer, len) for consistency. Note that the crypt_and_tag() and auth_decrypt() functions were already using the same convention as GCM, so this also increases intra-module consistency. --- include/mbedtls/chachapoly.h | 4 ++-- library/chachapoly.c | 6 +++--- library/cipher.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index ddcd549720..ce9737c2b4 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -183,8 +183,8 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, * finished, or if the AAD has been finished. */ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, - size_t aad_len, - const unsigned char *aad ); + const unsigned char *aad, + size_t aad_len ); /** * \brief Thus function feeds data to be encrypted or decrypted diff --git a/library/chachapoly.c b/library/chachapoly.c index d599c52403..9ca21b39a2 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -175,8 +175,8 @@ cleanup: } int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, - size_t aad_len, - const unsigned char *aad ) + const unsigned char *aad, + size_t aad_len ) { if ( ctx == NULL ) { @@ -311,7 +311,7 @@ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, if ( result != 0 ) goto cleanup; - result = mbedtls_chachapoly_update_aad( ctx, aad_len, aad ); + result = mbedtls_chachapoly_update_aad( ctx, aad, aad_len ); if ( result != 0 ) goto cleanup; diff --git a/library/cipher.c b/library/cipher.c index 1827770b11..2463a6148c 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -320,7 +320,7 @@ int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, return( result ); return mbedtls_chachapoly_update_aad( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ad_len, ad ); + ad, ad_len ); } #endif From b8bd80aa026f9e84b267eb155b910b0d09526c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 09:54:51 +0200 Subject: [PATCH 0328/1100] Add FEATURE_NOT_AVAILABLE error codes. --- include/mbedtls/chacha20.h | 3 ++- include/mbedtls/chachapoly.h | 7 ++++--- include/mbedtls/error.h | 6 +++--- include/mbedtls/poly1305.h | 3 ++- library/error.c | 8 ++++++++ 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index 579ea38886..7a8cd531e5 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -42,7 +42,8 @@ #include #include -#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x003B /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0053 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0055 /**< Feature not available. For example, s part of the API is not implemented. */ #ifdef __cplusplus extern "C" { diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index ce9737c2b4..a55a3eea20 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -39,9 +39,10 @@ #include MBEDTLS_CONFIG_FILE #endif -#define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x00047 /**< Invalid input parameter(s). */ -#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x00049 /**< The requested operation is not permitted in the current state. */ -#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x00049 /**< Authenticated decryption failed: data was not authentic. */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x0054 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0056 /**< The requested operation is not permitted in the current state. */ +#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0058 /**< Authenticated decryption failed: data was not authentic. */ +#define MBEDTLS_ERR_CHACHAPOLY_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, s part of the API is not implemented. */ #ifdef __cplusplus diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index e056975a20..21fa9fce2b 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -76,9 +76,9 @@ * SHA1 1 0x0035-0x0035 * SHA256 1 0x0037-0x0037 * SHA512 1 0x0039-0x0039 - * CHACHA20 1 0x003B-0x003B - * POLY1305 1 0x0041-0x0041 - * CHACHAPOLY 2 0x0047-0x0049 + * CHACHA20 2 0x0053-0x0055 + * POLY1305 2 0x0057-0x0059 + * CHACHAPOLY 4 0x0054-0x005A * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 19f523774d..021a3a0de3 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -42,7 +42,8 @@ #include #include -#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0041 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0057 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE -0x0059 /**< Feature not available. For example, s part of the API is not implemented. */ #ifdef __cplusplus extern "C" { diff --git a/library/error.c b/library/error.c index aeef9303a3..d9c21cd3f6 100644 --- a/library/error.c +++ b/library/error.c @@ -668,6 +668,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #if defined(MBEDTLS_CHACHA20_C) if( use_ret == -(MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA) ) mbedtls_snprintf( buf, buflen, "CHACHA20 - Invalid input parameter(s)" ); + if( use_ret == -(MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE) ) + mbedtls_snprintf( buf, buflen, "CHACHA20 - Feature not available. For example, s part of the API is not implemented" ); #endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CHACHAPOLY_C) @@ -675,6 +677,10 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Invalid input parameter(s)" ); if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE) ) mbedtls_snprintf( buf, buflen, "CHACHAPOLY - The requested operation is not permitted in the current state" ); + if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED) ) + mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Authenticated decryption failed: data was not authentic" ); + if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_FEATURE_UNAVAILABLE) ) + mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Feature not available. For example, s part of the API is not implemented" ); #endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_CMAC_C) @@ -792,6 +798,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #if defined(MBEDTLS_POLY1305_C) if( use_ret == -(MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA) ) mbedtls_snprintf( buf, buflen, "POLY1305 - Invalid input parameter(s)" ); + if( use_ret == -(MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE) ) + mbedtls_snprintf( buf, buflen, "POLY1305 - Feature not available. For example, s part of the API is not implemented" ); #endif /* MBEDTLS_POLY1305_C */ #if defined(MBEDTLS_RIPEMD160_C) From d6aea18749e1bf29f061633dda6e970497692039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 10:21:28 +0200 Subject: [PATCH 0329/1100] Add Chacha20-Poly1305 to benchmark.c --- programs/test/benchmark.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 17f9d0e275..3e9ab0a29b 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -62,6 +62,7 @@ int main( void ) #include "mbedtls/chacha20.h" #include "mbedtls/gcm.h" #include "mbedtls/ccm.h" +#include "mbedtls/chachapoly.h" #include "mbedtls/cmac.h" #include "mbedtls/poly1305.h" #include "mbedtls/havege.h" @@ -96,7 +97,7 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish, chacha20,\n" \ - "aes_cbc, aes_gcm, aes_ccm,\n" \ + "aes_cbc, aes_gcm, aes_ccm, chachapoly,\n" \ "aes_cmac, des3_cmac, poly1305\n" \ "havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" @@ -231,7 +232,8 @@ unsigned char buf[BUFSIZE]; typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, - aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac, + aes_cbc, aes_gcm, aes_ccm, chachapoly, + aes_cmac, des3_cmac, camellia, blowfish, chacha20, poly1305, havege, ctr_drbg, hmac_drbg, @@ -282,6 +284,8 @@ int main( int argc, char *argv[] ) todo.aes_gcm = 1; else if( strcmp( argv[i], "aes_ccm" ) == 0 ) todo.aes_ccm = 1; + else if( strcmp( argv[i], "chachapoly" ) == 0 ) + todo.chachapoly = 1; else if( strcmp( argv[i], "aes_cmac" ) == 0 ) todo.aes_cmac = 1; else if( strcmp( argv[i], "des3_cmac" ) == 0 ) @@ -473,6 +477,27 @@ int main( int argc, char *argv[] ) } } #endif +#if defined(MBEDTLS_CHACHAPOLY_C) + if( todo.chachapoly ) + { + mbedtls_chachapoly_context chachapoly; + + mbedtls_chachapoly_init( &chachapoly ); + memset( buf, 0, sizeof( buf ) ); + memset( tmp, 0, sizeof( tmp ) ); + + mbedtls_snprintf( title, sizeof( title ), "ChaCha20-Poly1305" ); + + mbedtls_chachapoly_setkey( &chachapoly, tmp ); + + TIME_AND_TSC( title, + mbedtls_chachapoly_crypt_and_tag( &chachapoly, + MBEDTLS_CHACHAPOLY_ENCRYPT, BUFSIZE, tmp, + NULL, 0, buf, buf, tmp ) ); + + mbedtls_chachapoly_free( &chachapoly ); + } +#endif #if defined(MBEDTLS_CMAC_C) if( todo.aes_cmac ) { From 528524bf3c6eb6f9873bc38a101952fbc4943b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 11:21:21 +0200 Subject: [PATCH 0330/1100] Reduce size of buffers in test suites --- tests/suites/test_suite_chacha20.function | 22 ++++----- tests/suites/test_suite_chachapoly.function | 54 ++++++++++----------- tests/suites/test_suite_poly1305.function | 16 +++--- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index 75d2d0fc99..9c0b98522b 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -14,21 +14,21 @@ void chacha20_crypt( char *hex_key_string, char *hex_src_string, char *hex_dst_string ) { - unsigned char key_str[100]; - unsigned char nonce_str[100]; - unsigned char src_str[10000]; - unsigned char dst_str[10000]; - unsigned char output[10000]; + unsigned char key_str[32]; /* size set by the standard */ + unsigned char nonce_str[12]; /* size set by the standard */ + unsigned char src_str[375]; /* max size of binary input */ + unsigned char dst_str[751]; /* hex expansion of the above */ + unsigned char output[751]; size_t key_len; size_t nonce_len; size_t src_len; size_t dst_len; - memset(key_str, 0x00, 100); - memset(nonce_str, 0x00, 100); - memset(src_str, 0x00, 10000); - memset(dst_str, 0x00, 10000); - memset(output, 0x00, 10000); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( nonce_str, 0x00, sizeof( nonce_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); key_len = unhexify( key_str, hex_key_string ); nonce_len = unhexify( nonce_str, hex_nonce_string ); @@ -52,4 +52,4 @@ void chacha20_self_test() { TEST_ASSERT( mbedtls_chacha20_self_test( 0 ) == 0 ); } -/* END_CASE */ \ No newline at end of file +/* END_CASE */ diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index b205c4ce01..3d6a2b6d1f 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -10,14 +10,14 @@ /* BEGIN_CASE */ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) { - unsigned char key_str[32]; - unsigned char nonce_str[12]; - unsigned char aad_str[10000]; - unsigned char input_str[10000]; - unsigned char output_str[10000]; - unsigned char mac_str[16]; - unsigned char output[10000]; - unsigned char mac[16]; + unsigned char key_str[32]; /* size set by the standard */ + unsigned char nonce_str[12]; /* size set by the standard */ + unsigned char aad_str[12]; /* max size of test data so far */ + unsigned char input_str[265]; /* max size of binary input/output so far */ + unsigned char output_str[265]; + unsigned char output[265]; + unsigned char mac_str[16]; /* size set by the standard */ + unsigned char mac[16]; /* size set by the standard */ size_t input_len; size_t output_len; size_t aad_len; @@ -26,12 +26,12 @@ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char size_t mac_len; mbedtls_chachapoly_context ctx; - memset( key_str, 0x00, 32 ); - memset( nonce_str, 0x00, 12 ); - memset( aad_str, 0x00, 10000 ); - memset( input_str, 0x00, 10000 ); - memset( output_str, 0x00, 10000 ); - memset( mac_str, 0x00, 16 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( nonce_str, 0x00, sizeof( nonce_str ) ); + memset( aad_str, 0x00, sizeof( aad_str ) ); + memset( input_str, 0x00, sizeof( input_str ) ); + memset( output_str, 0x00, sizeof( output_str ) ); + memset( mac_str, 0x00, sizeof( mac_str ) ); aad_len = unhexify( aad_str, hex_aad_string ); input_len = unhexify( input_str, hex_input_string ); @@ -65,13 +65,13 @@ exit: /* BEGIN_CASE */ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) { - unsigned char key_str[32]; - unsigned char nonce_str[12]; - unsigned char aad_str[10000]; - unsigned char input_str[10000]; - unsigned char output_str[10000]; - unsigned char mac_str[16]; - unsigned char output[10000]; + unsigned char key_str[32]; /* size set by the standard */ + unsigned char nonce_str[12]; /* size set by the standard */ + unsigned char aad_str[12]; /* max size of test data so far */ + unsigned char input_str[265]; /* max size of binary input/output so far */ + unsigned char output_str[265]; + unsigned char output[265]; + unsigned char mac_str[16]; /* size set by the standard */ size_t input_len; size_t output_len; size_t aad_len; @@ -81,12 +81,12 @@ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char int ret; mbedtls_chachapoly_context ctx; - memset( key_str, 0x00, 32 ); - memset( nonce_str, 0x00, 12 ); - memset( aad_str, 0x00, 10000 ); - memset( input_str, 0x00, 10000 ); - memset( output_str, 0x00, 10000 ); - memset( mac_str, 0x00, 16 ); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( nonce_str, 0x00, sizeof( nonce_str ) ); + memset( aad_str, 0x00, sizeof( aad_str ) ); + memset( input_str, 0x00, sizeof( input_str ) ); + memset( output_str, 0x00, sizeof( output_str ) ); + memset( mac_str, 0x00, sizeof( mac_str ) ); aad_len = unhexify( aad_str, hex_aad_string ); input_len = unhexify( input_str, hex_input_string ); diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index a633c2baad..5ede635c9a 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -6,16 +6,16 @@ /* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C */ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src_string ) { - unsigned char src_str[10000]; - unsigned char mac_str[100]; - unsigned char key[32]; - unsigned char mac[16]; + unsigned char src_str[375]; /* max size of binary input */ + unsigned char key[32]; /* size set by the standard */ + unsigned char mac[16]; /* size set by the standard */ + unsigned char mac_str[33]; /* hex expansion of the above */ size_t src_len; - memset(src_str, 0x00, 10000); - memset(mac_str, 0x00, 100); - memset(key, 0x00, 32); - memset(mac, 0x00, 16); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( mac_str, 0x00, sizeof( mac_str ) ); + memset( key, 0x00, sizeof( key ) ); + memset( mac, 0x00, sizeof( mac ) ); src_len = unhexify( src_str, hex_src_string ); unhexify( key, hex_key_string ); From 7296771194379fec7b1b47606e4ad461722c320f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 12:22:13 +0200 Subject: [PATCH 0331/1100] chachapoly: add test with unauthentic data --- tests/suites/test_suite_chachapoly.data | 14 +++++++++++--- tests/suites/test_suite_chachapoly.function | 9 ++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_chachapoly.data b/tests/suites/test_suite_chachapoly.data index 08129aa37d..f0b4a0de60 100644 --- a/tests/suites/test_suite_chachapoly.data +++ b/tests/suites/test_suite_chachapoly.data @@ -2,9 +2,13 @@ ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_enc:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"1ae10b594f09e26a7e902ecbd0600691" -ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Decrypt) depends_on:MBEDTLS_CHACHAPOLY_C -mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691" +mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691":0 + +ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Decrypt, not authentic) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600690":MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Encrypt) depends_on:MBEDTLS_CHACHAPOLY_C @@ -12,7 +16,11 @@ mbedtls_chachapoly_enc:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt) depends_on:MBEDTLS_CHACHAPOLY_C -mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38" +mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38":0 + +ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt, not authentic) +depends_on:MBEDTLS_CHACHAPOLY_C +mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"fead9d67890cbb22392336fea1851f38":MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ChaCha20-Poly1305 Selftest depends_on:MBEDTLS_CHACHAPOLY_C:MBEDTLS_SELF_TEST diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index 3d6a2b6d1f..a613870b35 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -63,7 +63,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string ) +void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char *hex_aad_string, char *hex_input_string, char *hex_output_string, char *hex_mac_string, int ret_exp ) { unsigned char key_str[32]; /* size set by the standard */ unsigned char nonce_str[12]; /* size set by the standard */ @@ -108,8 +108,11 @@ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char aad_str, aad_len, mac_str, input_str, output ); - TEST_ASSERT( ret == 0 ); - TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); + TEST_ASSERT( ret == ret_exp ); + if( ret_exp == 0 ) + { + TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); + } exit: mbedtls_chachapoly_free( &ctx ); From 55c0d096b7747b89394be4063d2d35275aa0ced7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 12:37:58 +0200 Subject: [PATCH 0332/1100] chacha20: fix bug in starts() and add test for it Previously the streaming API would fail when encrypting multiple messages with the same key. --- library/chacha20.c | 6 ++++ tests/suites/test_suite_chacha20.function | 37 ++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/library/chacha20.c b/library/chacha20.c index 5ede4553c0..d89000da2c 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -243,6 +243,12 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, ctx->initial_state[14] = BYTES_TO_U32_LE( nonce, 4 ); ctx->initial_state[15] = BYTES_TO_U32_LE( nonce, 8 ); + mbedtls_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); + mbedtls_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); + + /* Initially, there's no keystream bytes available */ + ctx->keystream_bytes_used = CHACHA20_BLOCK_SIZE_BYTES; + return( 0 ); } diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index 9c0b98522b..fb3ad3e79e 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -23,6 +23,7 @@ void chacha20_crypt( char *hex_key_string, size_t nonce_len; size_t src_len; size_t dst_len; + mbedtls_chacha20_context ctx; memset( key_str, 0x00, sizeof( key_str ) ); memset( nonce_str, 0x00, sizeof( nonce_str ) ); @@ -39,11 +40,45 @@ void chacha20_crypt( char *hex_key_string, TEST_ASSERT( key_len == 32U ); TEST_ASSERT( nonce_len == 12U ); + /* + * Test the integrated API + */ TEST_ASSERT( mbedtls_chacha20_crypt( key_str, nonce_str, counter, src_len, src_str, output ) == 0 ); hexify( dst_str, output, src_len ); + TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 ); - TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0); + /* + * Test the streaming API + */ + mbedtls_chacha20_init( &ctx ); + + TEST_ASSERT( mbedtls_chacha20_setkey( &ctx, key_str ) == 0 ); + + TEST_ASSERT( mbedtls_chacha20_starts( &ctx, nonce_str, counter ) == 0 ); + + memset( output, 0x00, sizeof( output ) ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, src_len, src_str, output ) == 0 ); + + hexify( dst_str, output, src_len ); + TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 ); + + /* + * Test the streaming API again, piecewise + */ + + /* Don't reset the context of key, in order to test that starts() do the + * right thing. */ + TEST_ASSERT( mbedtls_chacha20_starts( &ctx, nonce_str, counter ) == 0 ); + + memset( output, 0x00, sizeof( output ) ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, 1, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, src_len - 1, src_str + 1, output + 1 ) == 0 ); + + hexify( dst_str, output, src_len ); + TEST_ASSERT( strcmp( (char*) dst_str, hex_dst_string ) == 0 ); + + mbedtls_chacha20_free( &ctx ); } /* END_CASE */ From 1465602ee14779f4a21b87ec81aebcabf47fbcac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 12:51:54 +0200 Subject: [PATCH 0333/1100] poly1305: fix bug in starts() and add test for it --- library/poly1305.c | 5 +++ tests/suites/test_suite_chacha20.function | 4 +-- tests/suites/test_suite_poly1305.function | 38 ++++++++++++++++++++++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/library/poly1305.c b/library/poly1305.c index 14c362d583..542a850047 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -280,6 +280,11 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, ctx->acc[1] = 0U; ctx->acc[2] = 0U; ctx->acc[3] = 0U; + ctx->acc[4] = 0U; + + /* Queue initially empty */ + mbedtls_zeroize( ctx->queue, sizeof( ctx->queue ) ); + ctx->queue_len = 0U; return( 0 ); } diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index fb3ad3e79e..bac1ef3cab 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -67,8 +67,8 @@ void chacha20_crypt( char *hex_key_string, * Test the streaming API again, piecewise */ - /* Don't reset the context of key, in order to test that starts() do the - * right thing. */ + /* Don't free/init the context nor set the key again, + * in order to test that starts() does the right thing. */ TEST_ASSERT( mbedtls_chacha20_starts( &ctx, nonce_str, counter ) == 0 ); memset( output, 0x00, sizeof( output ) ); diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index 5ede635c9a..964d1297a9 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -11,6 +11,7 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src unsigned char mac[16]; /* size set by the standard */ unsigned char mac_str[33]; /* hex expansion of the above */ size_t src_len; + mbedtls_poly1305_context ctx; memset( src_str, 0x00, sizeof( src_str ) ); memset( mac_str, 0x00, sizeof( mac_str ) ); @@ -20,10 +21,45 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src src_len = unhexify( src_str, hex_src_string ); unhexify( key, hex_key_string ); + /* + * Test the integrated API + */ mbedtls_poly1305_mac( key, src_str, src_len, mac ); - hexify( mac_str, mac, 16 ); + hexify( mac_str, mac, 16 ); TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + + /* + * Test the streaming API + */ + mbedtls_poly1305_init( &ctx ); + + TEST_ASSERT( mbedtls_poly1305_starts( &ctx, key ) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str, src_len ) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_finish( &ctx, mac ) == 0 ); + + hexify( mac_str, mac, 16 ); + TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + + /* + * Test the streaming API again, piecewise + */ + + /* Don't free/init the context, in order to test that starts() does the + * right thing. */ + TEST_ASSERT( mbedtls_poly1305_starts( &ctx, key ) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str, 1 ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str + 1, src_len - 1) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_finish( &ctx, mac ) == 0 ); + + hexify( mac_str, mac, 16 ); + TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + + mbedtls_poly1305_free( &ctx ); } /* END_CASE */ From 69767d1c7b8796fb02b93ee0b437e68267a0ee42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 12:25:18 +0200 Subject: [PATCH 0334/1100] cipher: add chachapoly test vector + unauth case --- tests/suites/test_suite_cipher.chachapoly.data | 8 ++++++++ tests/suites/test_suite_cipher.function | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/suites/test_suite_cipher.chachapoly.data b/tests/suites/test_suite_cipher.chachapoly.data index de5b3d6482..d91dc24329 100644 --- a/tests/suites/test_suite_cipher.chachapoly.data +++ b/tests/suites/test_suite_cipher.chachapoly.data @@ -109,3 +109,11 @@ enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:6:16:-1:6:16:6:16 ChaCha20+Poly1305 Encrypt and decrypt 32 bytes in multiple parts depends_on:MBEDTLS_CHACHAPOLY_C enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:16:-1:16:16:16:16 + +ChaCha20+Poly1305 RFC 7539 Test Vector #1 +depends_on:MBEDTLS_CHACHAPOLY_C +auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d" + +ChaCha20+Poly1305 RFC 7539 Test Vector #1 Unauthentic (1st bit flipped) +depends_on:MBEDTLS_CHACHAPOLY_C +auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"6ead9d67890cbb22392336fea1851f38":"FAIL" diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 92462e52b1..e4b7e43655 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -560,14 +560,14 @@ void auth_crypt_tv( int cipher_id, char *hex_key, char *hex_iv, int ret; unsigned char key[50]; unsigned char iv[50]; - unsigned char cipher[200]; - unsigned char clear[200]; + unsigned char cipher[265]; /* max size of test data so far */ + unsigned char clear[265]; + unsigned char output[267]; /* above + 2 (overwrite check) */ unsigned char ad[200]; unsigned char tag[20]; unsigned char my_tag[20]; size_t key_len, iv_len, cipher_len, clear_len, ad_len, tag_len; mbedtls_cipher_context_t ctx; - unsigned char output[200]; size_t outlen; mbedtls_cipher_init( &ctx ); From fce88b25333a7ba655b07ded57a96a40b2e4a821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 9 May 2018 13:06:12 +0200 Subject: [PATCH 0335/1100] Fix selftest verbosity in test suites --- tests/suites/test_suite_chacha20.function | 2 +- tests/suites/test_suite_poly1305.function | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index bac1ef3cab..124e510039 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -85,6 +85,6 @@ void chacha20_crypt( char *hex_key_string, /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void chacha20_self_test() { - TEST_ASSERT( mbedtls_chacha20_self_test( 0 ) == 0 ); + TEST_ASSERT( mbedtls_chacha20_self_test( 1 ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index 964d1297a9..682eb05aad 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -66,6 +66,6 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src /* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C:MBEDTLS_SELF_TEST */ void poly1305_selftest() { - TEST_ASSERT( mbedtls_poly1305_self_test( 0 ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_self_test( 1 ) == 0 ); } /* END_CASE */ From 2aca2368817ce558d20624ad06b33d2e2d44ae2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 10:11:42 +0200 Subject: [PATCH 0336/1100] chacha20: add test for parameter validation --- tests/suites/test_suite_chacha20.data | 3 ++ tests/suites/test_suite_chacha20.function | 50 +++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/tests/suites/test_suite_chacha20.data b/tests/suites/test_suite_chacha20.data index 86094604bf..3f9033eeb2 100644 --- a/tests/suites/test_suite_chacha20.data +++ b/tests/suites/test_suite_chacha20.data @@ -22,5 +22,8 @@ chacha20_crypt:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0 ChaCha20 RFC 7539 Test Vector #3 (Decrypt) chacha20_crypt:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000000000000000002":42:"62e6347f95ed87a45ffae7426f27a1df5fb69110044c0d73118effa95b01e5cf166d3df2d721caf9b21e5fb14c616871fd84c54f9d65b283196c7fe4f60553ebf39c6402c42234e32a356b3e764312a61a5532055716ead6962568f87d3f3f7704c6a8d1bcd1bf4d50d6154b6da731b187b58dfd728afa36757a797ac188d1":"2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e" +ChaCha20 Paremeter Validation +chacha20_bad_params: + ChaCha20 Selftest chacha20_self_test: diff --git a/tests/suites/test_suite_chacha20.function b/tests/suites/test_suite_chacha20.function index 124e510039..669d91e792 100644 --- a/tests/suites/test_suite_chacha20.function +++ b/tests/suites/test_suite_chacha20.function @@ -82,6 +82,56 @@ void chacha20_crypt( char *hex_key_string, } /* END_CASE */ +/* BEGIN_CASE */ +void chacha20_bad_params() +{ + unsigned char key[32]; + unsigned char nonce[12]; + unsigned char src[1]; + unsigned char dst[1]; + uint32_t counter = 0; + size_t len = sizeof( src ); + mbedtls_chacha20_context ctx; + + mbedtls_chacha20_init( NULL ); + mbedtls_chacha20_free( NULL ); + + mbedtls_chacha20_init( &ctx ); + + TEST_ASSERT( mbedtls_chacha20_setkey( NULL, key ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_setkey( &ctx, NULL ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chacha20_starts( NULL, nonce, counter ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_starts( &ctx, NULL, counter ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chacha20_update( NULL, 0, src, dst ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, len, NULL, dst ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, len, src, NULL ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_update( &ctx, 0, NULL, NULL ) + == 0 ); + + mbedtls_chacha20_free( &ctx ); + + TEST_ASSERT( mbedtls_chacha20_crypt( NULL, nonce, counter, 0, src, dst ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_crypt( key, NULL, counter, 0, src, dst ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_crypt( key, nonce, counter, len, NULL, dst ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_crypt( key, nonce, counter, len, src, NULL ) + == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chacha20_crypt( key, nonce, counter, 0, NULL, NULL ) + == 0 ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void chacha20_self_test() { From a8fa8b8f964fec5468a9a4a224fda3b04f726ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 10:12:36 +0200 Subject: [PATCH 0337/1100] poly1305: add test for parameter validation Also fix two validation bugs found while adding the tests. Also handle test dependencies the right way while at it. --- library/poly1305.c | 4 +- tests/suites/test_suite_poly1305.data | 17 ++----- tests/suites/test_suite_poly1305.function | 55 +++++++++++++++++++++-- 3 files changed, 58 insertions(+), 18 deletions(-) diff --git a/library/poly1305.c b/library/poly1305.c index 542a850047..0aa453356f 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -259,7 +259,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ) { - if ( ctx == NULL ) + if ( ctx == NULL || key == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } @@ -417,7 +417,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], cleanup: mbedtls_poly1305_free( &ctx ); - return( 0 ); + return( result ); } #endif /* MBEDTLS_POLY1305_ALT */ diff --git a/tests/suites/test_suite_poly1305.data b/tests/suites/test_suite_poly1305.data index f259e848ba..13912e997a 100644 --- a/tests/suites/test_suite_poly1305.data +++ b/tests/suites/test_suite_poly1305.data @@ -1,51 +1,42 @@ Poly1305 RFC 7539 Example And Test Vector -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"85d6be7857556d337f4452fe42d506a80103808afb0db2fd4abff6af4149f51b":"a8061dc1305136c6c22b8baf0c0127a9":"43727970746f6772617068696320466f72756d2052657365617263682047726f7570" Poly1305 RFC 7539 Test Vector #1 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" Poly1305 RFC 7539 Test Vector #2 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0000000000000000000000000000000036e5f6b5c5e06070f0efca96227a863e":"36e5f6b5c5e06070f0efca96227a863e":"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f" Poly1305 RFC 7539 Test Vector #3 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"36e5f6b5c5e06070f0efca96227a863e00000000000000000000000000000000":"f3477e7cd95417af89a6b8794c310cf0":"416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f" Poly1305 RFC 7539 Test Vector #4 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"4541669a7eaaee61e708dc7cbcc5eb62":"2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e" Poly1305 RFC 7539 Test Vector #5 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0200000000000000000000000000000000000000000000000000000000000000":"03000000000000000000000000000000":"ffffffffffffffffffffffffffffffff" Poly1305 RFC 7539 Test Vector #6 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"02000000000000000000000000000000ffffffffffffffffffffffffffffffff":"03000000000000000000000000000000":"02000000000000000000000000000000" Poly1305 RFC 7539 Test Vector #7 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0100000000000000000000000000000000000000000000000000000000000000":"05000000000000000000000000000000":"fffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffff11000000000000000000000000000000" Poly1305 RFC 7539 Test Vector #8 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0100000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"fffffffffffffffffffffffffffffffffbfefefefefefefefefefefefefefefe01010101010101010101010101010101" Poly1305 RFC 7539 Test Vector #9 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0200000000000000000000000000000000000000000000000000000000000000":"faffffffffffffffffffffffffffffff":"fdffffffffffffffffffffffffffffff" Poly1305 RFC 7539 Test Vector #10 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0100000000000000040000000000000000000000000000000000000000000000":"14000000000000005500000000000000":"e33594d7505e43b900000000000000003394d7505e4379cd01000000000000000000000000000000000000000000000001000000000000000000000000000000" Poly1305 RFC 7539 Test Vector #11 -depends_on:MBEDTLS_POLY1305_C mbedtls_poly1305:"0100000000000000040000000000000000000000000000000000000000000000":"13000000000000000000000000000000":"e33594d7505e43b900000000000000003394d7505e4379cd010000000000000000000000000000000000000000000000" +Poly1305 Parameter validation +poly1305_bad_params: + Poly1305 Selftest -depends_on:MBEDTLS_SELF_TEST:MBEDTLS_POLY1305_C +depends_on:MBEDTLS_SELF_TEST poly1305_selftest: diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index 682eb05aad..c5e7989fe3 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -3,7 +3,12 @@ #include /* END_HEADER */ -/* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C */ +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_POLY1305_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE */ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src_string ) { unsigned char src_str[375]; /* max size of binary input */ @@ -24,7 +29,7 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src /* * Test the integrated API */ - mbedtls_poly1305_mac( key, src_str, src_len, mac ); + TEST_ASSERT( mbedtls_poly1305_mac( key, src_str, src_len, mac ) == 0 ); hexify( mac_str, mac, 16 ); TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); @@ -63,7 +68,51 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_POLY1305_C:MBEDTLS_SELF_TEST */ +/* BEGIN_CASE */ +void poly1305_bad_params() +{ + unsigned char src[1]; + unsigned char key[32]; + unsigned char mac[16]; + size_t src_len = sizeof( src ); + mbedtls_poly1305_context ctx; + + mbedtls_poly1305_init( NULL ); + mbedtls_poly1305_free( NULL ); + + mbedtls_poly1305_init( &ctx ); + + TEST_ASSERT( mbedtls_poly1305_starts( NULL, key ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_starts( &ctx, NULL ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_poly1305_update( NULL, src, 0 ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, NULL, src_len ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, NULL, 0 ) + == 0 ); + + TEST_ASSERT( mbedtls_poly1305_finish( NULL, mac ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_finish( &ctx, NULL ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_poly1305_mac( NULL, src, 0, mac ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_mac( key, NULL, src_len, mac ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_mac( key, src, 0, NULL ) + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_poly1305_mac( key, NULL, 0, mac ) + == 0 ); + + mbedtls_poly1305_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void poly1305_selftest() { TEST_ASSERT( mbedtls_poly1305_self_test( 1 ) == 0 ); From 59d2c30ebae033e0050eef3382972665d64b8e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 10:39:32 +0200 Subject: [PATCH 0338/1100] chachapoly: add test for parameter validation Also fix two bugs found by the new tests. Also remove redundant test case dependency declarations while at it. --- library/chachapoly.c | 5 +- tests/suites/test_suite_chachapoly.data | 11 +- tests/suites/test_suite_chachapoly.function | 157 +++++++++++++++++++- 3 files changed, 161 insertions(+), 12 deletions(-) diff --git a/library/chachapoly.c b/library/chachapoly.c index 9ca21b39a2..fd05886fbe 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -202,7 +202,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ) { - if ( ( ctx == NULL ) || ( input == NULL ) || ( output == NULL ) ) + if ( ctx == NULL ) { return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); } @@ -339,6 +339,9 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, size_t i; int diff; + if( tag == NULL ) + return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + if( ( ret = mbedtls_chachapoly_crypt_and_tag( ctx, MBEDTLS_CHACHAPOLY_DECRYPT, length, nonce, aad, aad_len, input, output, check_tag ) ) != 0 ) diff --git a/tests/suites/test_suite_chachapoly.data b/tests/suites/test_suite_chachapoly.data index f0b4a0de60..b0eedea274 100644 --- a/tests/suites/test_suite_chachapoly.data +++ b/tests/suites/test_suite_chachapoly.data @@ -1,27 +1,24 @@ ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Encrypt) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_enc:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"1ae10b594f09e26a7e902ecbd0600691" ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Decrypt) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600691":0 ChaCha20-Poly1305 RFC 7539 Example and Test Vector (Decrypt, not authentic) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_dec:"808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f":"070000004041424344454647":"50515253c0c1c2c3c4c5c6c7":"d31a8d34648e60db7b86afbc53ef7ec2a4aded51296e08fea9e2b5a736ee62d63dbea45e8ca9671282fafb69da92728b1a71de0a9e060b2905d6a5b67ecd3b3692ddbd7f2d778b8c9803aee328091b58fab324e4fad675945585808b4831d7bc3ff4def08e4b7a9de576d26586cec64b6116":"4c616469657320616e642047656e746c656d656e206f662074686520636c617373206f66202739393a204966204920636f756c64206f6666657220796f75206f6e6c79206f6e652074697020666f7220746865206675747572652c2073756e73637265656e20776f756c642062652069742e":"1ae10b594f09e26a7e902ecbd0600690":MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Encrypt) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_enc:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38" ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"eead9d67890cbb22392336fea1851f38":0 ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt, not authentic) -depends_on:MBEDTLS_CHACHAPOLY_C mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"fead9d67890cbb22392336fea1851f38":MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED +ChaCha20-Poly1305 Parameter Validation +chachapoly_bad_params: + ChaCha20-Poly1305 Selftest -depends_on:MBEDTLS_CHACHAPOLY_C:MBEDTLS_SELF_TEST +depends_on:MBEDTLS_SELF_TEST chachapoly_selftest: diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index a613870b35..3f8145a541 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -46,13 +46,13 @@ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char mbedtls_chachapoly_init( &ctx ); - mbedtls_chachapoly_setkey( &ctx, key_str ); + TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, key_str ) == 0 ); - mbedtls_chachapoly_crypt_and_tag( &ctx, + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, input_len, nonce_str, aad_str, aad_len, - input_str, output, mac ); + input_str, output, mac ) == 0 ); TEST_ASSERT( memcmp( output_str, output, output_len ) == 0 ); TEST_ASSERT( memcmp( mac_str, mac, 16U ) == 0 ); @@ -101,7 +101,7 @@ void mbedtls_chachapoly_dec( char *hex_key_string, char *hex_nonce_string, char mbedtls_chachapoly_init( &ctx ); - mbedtls_chachapoly_setkey( &ctx, key_str ); + TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, key_str ) == 0 ); ret = mbedtls_chachapoly_auth_decrypt( &ctx, input_len, nonce_str, @@ -119,6 +119,155 @@ exit: } /* END_CASE */ +/* BEGIN_CASE */ +void chachapoly_bad_params() +{ + unsigned char key[32]; + unsigned char nonce[12]; + unsigned char aad[1]; + unsigned char input[1]; + unsigned char output[1]; + unsigned char mac[16]; + size_t input_len = sizeof( input ); + size_t aad_len = sizeof( aad ); + mbedtls_chachapoly_context ctx; + + memset( key, 0x00, sizeof( key ) ); + memset( nonce, 0x00, sizeof( nonce ) ); + memset( aad, 0x00, sizeof( aad ) ); + memset( input, 0x00, sizeof( input ) ); + memset( output, 0x00, sizeof( output ) ); + memset( mac, 0x00, sizeof( mac ) ); + + mbedtls_chachapoly_init( NULL ); + mbedtls_chachapoly_free( NULL ); + + mbedtls_chachapoly_init( &ctx ); + + TEST_ASSERT( mbedtls_chachapoly_setkey( NULL, key ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, NULL ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( NULL, + MBEDTLS_CHACHAPOLY_ENCRYPT, + 0, nonce, + aad, 0, + input, output, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + 0, NULL, + aad, 0, + input, output, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + 0, nonce, + NULL, aad_len, + input, output, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + input_len, nonce, + aad, 0, + NULL, output, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + input_len, nonce, + aad, 0, + input, NULL, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + 0, nonce, + aad, 0, + input, output, NULL ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( NULL, + 0, nonce, + aad, 0, + mac, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + 0, NULL, + aad, 0, + mac, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + 0, nonce, + NULL, aad_len, + mac, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + 0, nonce, + aad, 0, + NULL, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + input_len, nonce, + aad, 0, + mac, NULL, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + input_len, nonce, + aad, 0, + mac, input, NULL ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + 0, nonce, + aad, aad_len, + NULL, NULL, mac ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + 0, nonce, + aad, aad_len, + mac, NULL, NULL ) + == 0 ); + + TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + input_len, nonce, + NULL, 0, + input, output, mac ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, + input_len, nonce, + NULL, 0, + mac, input, output ) + == 0 ); + + TEST_ASSERT( mbedtls_chachapoly_starts( NULL, nonce, MBEDTLS_CHACHAPOLY_ENCRYPT ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_starts( &ctx, NULL, MBEDTLS_CHACHAPOLY_ENCRYPT ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_update_aad( NULL, aad, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, NULL, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_update( NULL, input_len, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, NULL, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, NULL ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + + TEST_ASSERT( mbedtls_chachapoly_finish( NULL, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, NULL ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + +exit: + mbedtls_chachapoly_free( &ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void chachapoly_selftest() { From 444f71121685facd1a8c9b52719bdb1459892219 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 11:06:46 +0200 Subject: [PATCH 0339/1100] poly1305: add test with multiple small fragments This exercises the code path where data is just appended to the waiting queue while it isn't empty. --- tests/suites/test_suite_poly1305.function | 32 ++++++++++++++++++----- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_poly1305.function b/tests/suites/test_suite_poly1305.function index c5e7989fe3..62d2ad951b 100644 --- a/tests/suites/test_suite_poly1305.function +++ b/tests/suites/test_suite_poly1305.function @@ -54,15 +54,35 @@ void mbedtls_poly1305( char *hex_key_string, char *hex_mac_string, char *hex_src /* Don't free/init the context, in order to test that starts() does the * right thing. */ - TEST_ASSERT( mbedtls_poly1305_starts( &ctx, key ) == 0 ); + if( src_len >= 1 ) + { + TEST_ASSERT( mbedtls_poly1305_starts( &ctx, key ) == 0 ); - TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str, 1 ) == 0 ); - TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str + 1, src_len - 1) == 0 ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str, 1 ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str + 1, src_len - 1 ) == 0 ); - TEST_ASSERT( mbedtls_poly1305_finish( &ctx, mac ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_finish( &ctx, mac ) == 0 ); - hexify( mac_str, mac, 16 ); - TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + hexify( mac_str, mac, 16 ); + TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + } + + /* + * Again with more pieces + */ + if( src_len >= 2 ) + { + TEST_ASSERT( mbedtls_poly1305_starts( &ctx, key ) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str, 1 ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str + 1, 1 ) == 0 ); + TEST_ASSERT( mbedtls_poly1305_update( &ctx, src_str + 2, src_len - 2 ) == 0 ); + + TEST_ASSERT( mbedtls_poly1305_finish( &ctx, mac ) == 0 ); + + hexify( mac_str, mac, 16 ); + TEST_ASSERT( strcmp( (char *) mac_str, hex_mac_string ) == 0 ); + } mbedtls_poly1305_free( &ctx ); } From ceb1225d4610d975e1f5a75df9df3f48ae5d96af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 11:41:00 +0200 Subject: [PATCH 0340/1100] chachapoly: add test for state flow --- tests/suites/test_suite_chachapoly.data | 3 + tests/suites/test_suite_chachapoly.function | 80 +++++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/tests/suites/test_suite_chachapoly.data b/tests/suites/test_suite_chachapoly.data index b0eedea274..34cb568311 100644 --- a/tests/suites/test_suite_chachapoly.data +++ b/tests/suites/test_suite_chachapoly.data @@ -16,6 +16,9 @@ mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc ChaCha20-Poly1305 RFC 7539 Test Vector #1 (Decrypt, not authentic) mbedtls_chachapoly_dec:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"fead9d67890cbb22392336fea1851f38":MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED +ChaCha20-Poly1305 State Flow +chachapoly_state: + ChaCha20-Poly1305 Parameter Validation chachapoly_bad_params: diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index 3f8145a541..e379309cdc 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -268,6 +268,86 @@ exit: } /* END_CASE */ +/* BEGIN_CASE */ +void chachapoly_state() +{ + unsigned char key[32]; + unsigned char nonce[12]; + unsigned char aad[1]; + unsigned char input[1]; + unsigned char output[1]; + unsigned char mac[16]; + size_t input_len = sizeof( input ); + size_t aad_len = sizeof( aad ); + mbedtls_chachapoly_context ctx; + + memset( key, 0x00, sizeof( key ) ); + memset( nonce, 0x00, sizeof( nonce ) ); + memset( aad, 0x00, sizeof( aad ) ); + memset( input, 0x00, sizeof( input ) ); + memset( output, 0x00, sizeof( output ) ); + memset( mac, 0x00, sizeof( mac ) ); + + /* Initial state: finish, update, update_aad forbidden */ + mbedtls_chachapoly_init( &ctx ); + + TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + + /* Still initial state: finish, update, update_aad forbidden */ + TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, key ) + == 0 ); + + TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, mac ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + + /* Starts -> finish OK */ + TEST_ASSERT( mbedtls_chachapoly_starts( &ctx, nonce, MBEDTLS_CHACHAPOLY_ENCRYPT ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, mac ) + == 0 ); + + /* After finish: update, update_aad forbidden */ + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, output ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + + /* Starts -> update* OK */ + TEST_ASSERT( mbedtls_chachapoly_starts( &ctx, nonce, MBEDTLS_CHACHAPOLY_ENCRYPT ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, output ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, output ) + == 0 ); + + /* After update: update_aad forbidden */ + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + + /* Starts -> update_aad* -> finish OK */ + TEST_ASSERT( mbedtls_chachapoly_starts( &ctx, nonce, MBEDTLS_CHACHAPOLY_ENCRYPT ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, aad, aad_len ) + == 0 ); + TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, mac ) + == 0 ); + +exit: + mbedtls_chachapoly_free( &ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void chachapoly_selftest() { From c0dfcd4bf195f3f3b547e6a19336a9d3b359473a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 11:42:07 +0200 Subject: [PATCH 0341/1100] Simplify selftest functions using macros This reduces clutter, making the functions more readable. Also, it makes lcov see each line as covered. This is not cheating, as the lines that were previously seen as not covered are not supposed to be reached anyway (failing branches of the selftests). Thanks to this and previous test suite enhancements, lcov now sees chacha20.c and poly1305.c at 100% line coverage, and for chachapoly.c only two lines are not covered (error returns from lower-level module that should never happen except perhaps if an alternative implementation returns an unexpected error). --- library/chacha20.c | 45 +++++++++++++------------------ library/chachapoly.c | 64 ++++++++++++++++---------------------------- library/poly1305.c | 45 +++++++++++++------------------ 3 files changed, 60 insertions(+), 94 deletions(-) diff --git a/library/chacha20.c b/library/chacha20.c index d89000da2c..5a753ebaa3 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -519,18 +519,29 @@ static const size_t test_lengths[2] = 375U }; +#define ASSERT( cond, args ) \ + do \ + { \ + if( ! ( cond ) ) \ + { \ + if( verbose != 0 ) \ + mbedtls_printf args; \ + \ + return( -1 ); \ + } \ + } \ + while( 0 ) + int mbedtls_chacha20_self_test( int verbose ) { unsigned char output[381]; unsigned i; int result; - for ( i = 0U; i < 2U; i++ ) + for( i = 0U; i < 2U; i++ ) { - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( " ChaCha20 test %u ", i ); - } result = mbedtls_chacha20_crypt( test_keys[i], test_nonces[i], @@ -538,36 +549,18 @@ int mbedtls_chacha20_self_test( int verbose ) test_lengths[i], test_input[i], output ); - if ( result != 0) - { - if ( verbose != 0 ) - { - mbedtls_printf( "error code: %i\n", result ); - } - return( -1 ); - } + ASSERT( 0 == result, ( "error code: %i\n", result ) ); - if ( 0 != memcmp( output, test_output[i], test_lengths[i] ) ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "failed\n" ); - } + ASSERT( 0 == memcmp( output, test_output[i], test_lengths[i] ), + ( "failed (output)\n" ) ); - return( -1 ); - } - - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( "passed\n" ); - } } if( verbose != 0 ) - { mbedtls_printf( "\n" ); - } return( 0 ); } diff --git a/library/chachapoly.c b/library/chachapoly.c index fd05886fbe..ebf25bbbbb 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -452,6 +452,19 @@ static const unsigned char test_mac[1][16] = } }; +#define ASSERT( cond, args ) \ + do \ + { \ + if( ! ( cond ) ) \ + { \ + if( verbose != 0 ) \ + mbedtls_printf args; \ + \ + return( -1 ); \ + } \ + } \ + while( 0 ) + int mbedtls_chachapoly_self_test( int verbose ) { mbedtls_chachapoly_context ctx; @@ -460,24 +473,15 @@ int mbedtls_chachapoly_self_test( int verbose ) unsigned char output[200]; unsigned char mac[16]; - for ( i = 0U; i < 1U; i++ ) + for( i = 0U; i < 1U; i++ ) { - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( " ChaCha20-Poly1305 test %u ", i ); - } mbedtls_chachapoly_init( &ctx ); result = mbedtls_chachapoly_setkey( &ctx, test_key[i] ); - if ( result != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "setkey() error code: %i\n", result ); - } - return( -1 ); - } + ASSERT( 0 == result, ( "setkey() error code: %i\n", result ) ); result = mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, @@ -488,45 +492,23 @@ int mbedtls_chachapoly_self_test( int verbose ) test_input[i], output, mac ); - if ( result != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "crypt_and_tag() error code: %i\n", result ); - } - return( -1 ); - } - if ( memcmp( output, test_output[i], test_input_len[i] ) != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "failure (wrong output)\n" ); - } - return( -1 ); - } + ASSERT( 0 == result, ( "crypt_and_tag() error code: %i\n", result ) ); - if ( memcmp( mac, test_mac[i], 16U ) != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "failure (wrong MAC)\n" ); - } - return( -1 ); - } + ASSERT( 0 == memcmp( output, test_output[i], test_input_len[i] ), + ( "failure (wrong output)\n" ) ); + + ASSERT( 0 == memcmp( mac, test_mac[i], 16U ), + ( "failure (wrong MAC)\n" ) ); mbedtls_chachapoly_free( &ctx ); - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( "passed\n" ); - } } if( verbose != 0 ) - { mbedtls_printf( "\n" ); - } return( 0 ); } diff --git a/library/poly1305.c b/library/poly1305.c index 0aa453356f..a9fff4757c 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -487,53 +487,44 @@ static const unsigned char test_mac[2][16] = } }; +#define ASSERT( cond, args ) \ + do \ + { \ + if( ! ( cond ) ) \ + { \ + if( verbose != 0 ) \ + mbedtls_printf args; \ + \ + return( -1 ); \ + } \ + } \ + while( 0 ) + int mbedtls_poly1305_self_test( int verbose ) { unsigned char mac[16]; unsigned i; int result; - for ( i = 0U; i < 2U; i++ ) + for( i = 0U; i < 2U; i++ ) { - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( " Poly1305 test %u ", i ); - } result = mbedtls_poly1305_mac( test_keys[i], test_data[i], test_data_len[i], mac ); - if ( result != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "error code: %i\n", result ); - } + ASSERT( 0 == result, ( "error code: %i\n", result ) ); - return( -1 ); - } + ASSERT( 0 == memcmp( mac, test_mac[i], 16U ), ( "failed (mac)\n" ) ); - if ( memcmp( mac, test_mac[i], 16U ) != 0 ) - { - if ( verbose != 0 ) - { - mbedtls_printf( "failed\n" ); - } - - return( -1 ); - } - - if ( verbose != 0 ) - { + if( verbose != 0 ) mbedtls_printf( "passed\n" ); - } } if( verbose != 0 ) - { mbedtls_printf( "\n" ); - } return( 0 ); } From 32902e6eae89af32a406a68f4a7c8dbf318305a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 12:30:19 +0200 Subject: [PATCH 0342/1100] cipher: handle ChaCha20 as a stream cipher That's what it is. So we shouldn't set a block size != 1. While at it, move call to chachapoly_update() closer to the one for GCM, as they are similar (AEAD). --- include/mbedtls/cipher.h | 2 +- library/cipher.c | 34 +++++++++------------------------- library/cipher_wrap.c | 21 +++++++++++++++++---- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index 591aa79aac..1ae847d207 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -193,7 +193,7 @@ enum { /** Maximum length of any IV, in Bytes. */ #define MBEDTLS_MAX_IV_LENGTH 16 /** Maximum block size of any cipher, in Bytes. */ -#define MBEDTLS_MAX_BLOCK_LENGTH 64 +#define MBEDTLS_MAX_BLOCK_LENGTH 16 /** * Base cipher information (opaque struct). diff --git a/library/cipher.c b/library/cipher.c index 2463a6148c..cf10094f66 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -367,6 +367,15 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i } #endif +#if defined(MBEDTLS_CHACHAPOLY_C) + if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305 ) + { + *olen = ilen; + return mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, + ilen, input, output ); + } +#endif + if ( 0 == block_size ) { return MBEDTLS_ERR_CIPHER_INVALID_CONTEXT; @@ -378,31 +387,6 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); } - -#if defined(MBEDTLS_CHACHA20_C) - if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20 ) - { - *olen = ilen; - return mbedtls_chacha20_update( (mbedtls_chacha20_context*) ctx->cipher_ctx, - ilen, input, output ); - } -#endif - - if( input == output && - ( ctx->unprocessed_len != 0 || ilen % mbedtls_cipher_get_block_size( ctx ) ) ) - { - return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - } - -#if defined(MBEDTLS_CHACHAPOLY_C) - if ( ctx->cipher_info->type == MBEDTLS_CIPHER_CHACHA20_POLY1305 ) - { - *olen = ilen; - return mbedtls_chachapoly_update( (mbedtls_chachapoly_context*) ctx->cipher_ctx, - ilen, input, output ); - } -#endif - #if defined(MBEDTLS_CIPHER_MODE_CBC) if( ctx->cipher_info->mode == MBEDTLS_MODE_CBC ) { diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index 5c8082850b..9110b968cd 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -1305,6 +1305,19 @@ static int chacha20_setkey_wrap( void *ctx, const unsigned char *key, return( 0 ); } +static int chacha20_stream_wrap( void *ctx, size_t length, + const unsigned char *input, + unsigned char *output ) +{ + int ret; + + ret = mbedtls_chacha20_update( ctx, length, input, output ); + if( ret == MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + return( ret ); +} + static void * chacha20_ctx_alloc( void ) { mbedtls_chacha20_context *ctx; @@ -1337,7 +1350,7 @@ static const mbedtls_cipher_base_t chacha20_base_info = { NULL, #endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) - NULL, + chacha20_stream_wrap, #endif chacha20_setkey_wrap, chacha20_setkey_wrap, @@ -1346,12 +1359,12 @@ static const mbedtls_cipher_base_t chacha20_base_info = { }; static const mbedtls_cipher_info_t chacha20_info = { MBEDTLS_CIPHER_CHACHA20, - MBEDTLS_MODE_NONE, + MBEDTLS_MODE_STREAM, 256, "CHACHA20", 12, 0, - 64, + 1, &chacha20_base_info }; #endif /* MBEDTLS_CHACHA20_C */ @@ -1417,7 +1430,7 @@ static const mbedtls_cipher_info_t chachapoly_info = { "CHACHA20-POLY1305", 12, 0, - 64, + 1, &chachapoly_base_info }; #endif /* MBEDTLS_CHACHAPOLY_C */ From 234e1cef735d12f24b569271c8af02edbad6e07c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 10 May 2018 12:54:32 +0200 Subject: [PATCH 0343/1100] cipher: add stream test vectors for chacha20(poly1305) --- tests/suites/test_suite_cipher.chacha20.data | 6 +++++- tests/suites/test_suite_cipher.chachapoly.data | 4 ++++ tests/suites/test_suite_cipher.function | 6 +++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/suites/test_suite_cipher.chacha20.data b/tests/suites/test_suite_cipher.chacha20.data index 5f3e07d0bb..c67e582e78 100644 --- a/tests/suites/test_suite_cipher.chacha20.data +++ b/tests/suites/test_suite_cipher.chacha20.data @@ -1,7 +1,11 @@ Decrypt empty buffer -depends_on:MBEDTLS_CHACHA20_C: +depends_on:MBEDTLS_CHACHA20_C dec_empty_buf: +Chacha20 RFC 7539 Test Vector #1 +depends_on:MBEDTLS_CHACHA20_C +decrypt_test_vec:MBEDTLS_CIPHER_CHACHA20:-1:"0000000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000":"76b8e0ada0f13d90405d6ae55386bd28bdd219b8a08ded1aa836efcc8b770dc7da41597c5157488d7724e03fb8d84a376a43b8f41518a11cc387b669b2ee6586":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":"":"":0:0 + ChaCha20 Encrypt and decrypt 0 bytes depends_on:MBEDTLS_CHACHA20_C enc_dec_buf:MBEDTLS_CIPHER_CHACHA20:"CHACHA20":256:0:-1 diff --git a/tests/suites/test_suite_cipher.chachapoly.data b/tests/suites/test_suite_cipher.chachapoly.data index d91dc24329..1760dc09dd 100644 --- a/tests/suites/test_suite_cipher.chachapoly.data +++ b/tests/suites/test_suite_cipher.chachapoly.data @@ -117,3 +117,7 @@ auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0 ChaCha20+Poly1305 RFC 7539 Test Vector #1 Unauthentic (1st bit flipped) depends_on:MBEDTLS_CHACHAPOLY_C auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"6ead9d67890cbb22392336fea1851f38":"FAIL" + +Chacha20+Poly1305 RFC 7539 Test Vector #1 (streaming) +depends_on:MBEDTLS_CHACHAPOLY_C +decrypt_test_vec:MBEDTLS_CIPHER_CHACHA20_POLY1305:-1:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d":"f33388860000000000004e91":"eead9d67890cbb22392336fea1851f38":0:0 diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index e4b7e43655..b7037a068e 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -479,8 +479,9 @@ void decrypt_test_vec( int cipher_id, int pad_mode, { unsigned char key[50]; unsigned char iv[50]; - unsigned char cipher[200]; - unsigned char clear[200]; + unsigned char cipher[265]; /* max length of test data so far */ + unsigned char clear[265]; + unsigned char output[265]; unsigned char ad[200]; unsigned char tag[20]; size_t key_len, iv_len, cipher_len, clear_len; @@ -488,7 +489,6 @@ void decrypt_test_vec( int cipher_id, int pad_mode, size_t ad_len, tag_len; #endif mbedtls_cipher_context_t ctx; - unsigned char output[200]; size_t outlen, total_len; mbedtls_cipher_init( &ctx ); From 3798b6be6be7a8a9b3ecd1f7e43df3a72382f365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 13:27:45 +0200 Subject: [PATCH 0344/1100] Add some error codes and merge others - need HW failure codes too - re-use relevant poly codes for chachapoly to save on limited space Values were chosen to leave 3 free slots at the end of the NET odd range. --- include/mbedtls/chacha20.h | 5 ++- include/mbedtls/chachapoly.h | 23 +++++------ include/mbedtls/error.h | 8 ++-- include/mbedtls/poly1305.h | 1 + library/chachapoly.c | 16 +++---- library/error.c | 8 ++-- tests/suites/test_suite_chachapoly.function | 46 ++++++++++----------- 7 files changed, 54 insertions(+), 53 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index 7a8cd531e5..c33aef371a 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -42,8 +42,9 @@ #include #include -#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0053 /**< Invalid input parameter(s). */ -#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0055 /**< Feature not available. For example, s part of the API is not implemented. */ +#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 /**< Invalid input parameter(s). */ +#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0053 /**< Feature not available. For example, s part of the API is not implemented. */ +#define MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED -0x0055 /**< Chacha20 hardware accelerator failed. */ #ifdef __cplusplus extern "C" { diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index a55a3eea20..ae786e045a 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -39,11 +39,11 @@ #include MBEDTLS_CONFIG_FILE #endif -#define MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA -0x0054 /**< Invalid input parameter(s). */ -#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0056 /**< The requested operation is not permitted in the current state. */ -#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0058 /**< Authenticated decryption failed: data was not authentic. */ -#define MBEDTLS_ERR_CHACHAPOLY_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, s part of the API is not implemented. */ +/* for shared error codes */ +#include "poly1305.h" +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0054 /**< The requested operation is not permitted in the current state. */ +#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0056 /**< Authenticated decryption failed: data was not authentic. */ #ifdef __cplusplus extern "C" { @@ -59,7 +59,6 @@ mbedtls_chachapoly_mode_t; #if !defined(MBEDTLS_CHACHAPOLY_ALT) #include "chacha20.h" -#include "poly1305.h" typedef struct { @@ -117,7 +116,7 @@ void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ); * \param key The 256-bit (32 bytes) key. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx or \p key are NULL. */ int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, @@ -141,7 +140,7 @@ int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, * #MBEDTLS_CHACHAPOLY_DECRYPT. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx or \p mac are NULL. */ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, @@ -177,7 +176,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, * This pointer can be NULL if aad_len == 0. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx or \p aad are NULL. * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE * if the operations has not been started or has been @@ -210,7 +209,7 @@ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, * This pointer can be NULL if len == 0. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx, \p input, or \p output are NULL. * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE * if the operation has not been started or has been @@ -229,7 +228,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, * \param mac The buffer to where the 128-bit (16 bytes) MAC is written. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx or \p mac are NULL. * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE * if the operation has not been started or has been @@ -265,7 +264,7 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, * \param tag The buffer to where the computed 128-bit (16 bytes) MAC is written. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if one or more of the required parameters are NULL. */ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, @@ -298,7 +297,7 @@ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, * This pointer can be NULL if ilen == 0. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if one or more of the required parameters are NULL. * \return #MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED * if the data was not authentic. diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 21fa9fce2b..12f045ab4a 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -62,7 +62,7 @@ * DES 2 0x0032-0x0032 0x0033-0x0033 * CTR_DBRG 4 0x0034-0x003A * ENTROPY 3 0x003C-0x0040 0x003D-0x003F - * NET 11 0x0042-0x0052 0x0043-0x0045 + * NET 13 0x0042-0x0052 0x0043-0x0049 * ASN1 7 0x0060-0x006C * CMAC 1 0x007A-0x007A * PBKDF2 1 0x007C-0x007C @@ -76,9 +76,9 @@ * SHA1 1 0x0035-0x0035 * SHA256 1 0x0037-0x0037 * SHA512 1 0x0039-0x0039 - * CHACHA20 2 0x0053-0x0055 - * POLY1305 2 0x0057-0x0059 - * CHACHAPOLY 4 0x0054-0x005A + * CHACHA20 3 0x0051-0x0055 + * POLY1305 3 0x0057-0x005B + * CHACHAPOLY 2 0x0054-0x0056 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 021a3a0de3..babbc15fa4 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -44,6 +44,7 @@ #define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0057 /**< Invalid input parameter(s). */ #define MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE -0x0059 /**< Feature not available. For example, s part of the API is not implemented. */ +#define MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED -0x005B /**< Poly1305 hardware accelerator failed. */ #ifdef __cplusplus extern "C" { diff --git a/library/chachapoly.c b/library/chachapoly.c index ebf25bbbbb..de9e66cccb 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -123,7 +123,7 @@ int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, if ( ( ctx == NULL ) || ( key == NULL ) ) { - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } result = mbedtls_chacha20_setkey( &ctx->chacha20_ctx, key ); @@ -140,7 +140,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, if ( ( ctx == NULL ) || ( nonce == NULL ) ) { - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } /* Set counter = 0, will be update to 1 when generating Poly1305 key */ @@ -180,12 +180,12 @@ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, { if ( ctx == NULL ) { - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } else if ( ( aad_len > 0U ) && ( aad == NULL ) ) { /* aad pointer is allowed to be NULL if aad_len == 0 */ - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } else if ( ctx->state != CHACHAPOLY_STATE_AAD ) { @@ -204,12 +204,12 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, { if ( ctx == NULL ) { - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } else if ( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) { /* input and output pointers are allowed to be NULL if len == 0 */ - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } else if ( ( ctx->state != CHACHAPOLY_STATE_AAD ) && ( ctx->state != CHACHAPOLY_STATE_CIPHERTEXT ) ) @@ -251,7 +251,7 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, if ( ( ctx == NULL ) || ( mac == NULL ) ) { - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } else if ( ctx->state == CHACHAPOLY_STATE_INIT ) { @@ -340,7 +340,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, int diff; if( tag == NULL ) - return( MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); if( ( ret = mbedtls_chachapoly_crypt_and_tag( ctx, MBEDTLS_CHACHAPOLY_DECRYPT, length, nonce, diff --git a/library/error.c b/library/error.c index d9c21cd3f6..512831f093 100644 --- a/library/error.c +++ b/library/error.c @@ -670,17 +670,15 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "CHACHA20 - Invalid input parameter(s)" ); if( use_ret == -(MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE) ) mbedtls_snprintf( buf, buflen, "CHACHA20 - Feature not available. For example, s part of the API is not implemented" ); + if( use_ret == -(MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED) ) + mbedtls_snprintf( buf, buflen, "CHACHA20 - Chacha20 hardware accelerator failed" ); #endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CHACHAPOLY_C) - if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA) ) - mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Invalid input parameter(s)" ); if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE) ) mbedtls_snprintf( buf, buflen, "CHACHAPOLY - The requested operation is not permitted in the current state" ); if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED) ) mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Authenticated decryption failed: data was not authentic" ); - if( use_ret == -(MBEDTLS_ERR_CHACHAPOLY_FEATURE_UNAVAILABLE) ) - mbedtls_snprintf( buf, buflen, "CHACHAPOLY - Feature not available. For example, s part of the API is not implemented" ); #endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_CMAC_C) @@ -800,6 +798,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "POLY1305 - Invalid input parameter(s)" ); if( use_ret == -(MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE) ) mbedtls_snprintf( buf, buflen, "POLY1305 - Feature not available. For example, s part of the API is not implemented" ); + if( use_ret == -(MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED) ) + mbedtls_snprintf( buf, buflen, "POLY1305 - Poly1305 hardware accelerator failed" ); #endif /* MBEDTLS_POLY1305_C */ #if defined(MBEDTLS_RIPEMD160_C) diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index e379309cdc..7baa229956 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -145,77 +145,77 @@ void chachapoly_bad_params() mbedtls_chachapoly_init( &ctx ); TEST_ASSERT( mbedtls_chachapoly_setkey( NULL, key ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, NULL ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( NULL, MBEDTLS_CHACHAPOLY_ENCRYPT, 0, nonce, aad, 0, input, output, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, 0, NULL, aad, 0, input, output, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, 0, nonce, NULL, aad_len, input, output, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, input_len, nonce, aad, 0, NULL, output, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, input_len, nonce, aad, 0, input, NULL, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, 0, nonce, aad, 0, input, output, NULL ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( NULL, 0, nonce, aad, 0, mac, input, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, 0, NULL, aad, 0, mac, input, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, 0, nonce, NULL, aad_len, mac, input, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, 0, nonce, aad, 0, NULL, input, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, input_len, nonce, aad, 0, mac, NULL, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_auth_decrypt( &ctx, input_len, nonce, aad, 0, mac, input, NULL ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, @@ -242,26 +242,26 @@ void chachapoly_bad_params() == 0 ); TEST_ASSERT( mbedtls_chachapoly_starts( NULL, nonce, MBEDTLS_CHACHAPOLY_ENCRYPT ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_starts( &ctx, NULL, MBEDTLS_CHACHAPOLY_ENCRYPT ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_update_aad( NULL, aad, aad_len ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_update_aad( &ctx, NULL, aad_len ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_update( NULL, input_len, input, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, NULL, output ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_update( &ctx, input_len, input, NULL ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_finish( NULL, mac ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); TEST_ASSERT( mbedtls_chachapoly_finish( &ctx, NULL ) - == MBEDTLS_ERR_CHACHAPOLY_BAD_INPUT_DATA ); + == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); exit: mbedtls_chachapoly_free( &ctx ); From 39f25616b3b26ee069094cf6c957c6a2d3439c2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 14:06:02 +0200 Subject: [PATCH 0345/1100] Fix edit mistake in cipher_wrap.c Error was from 08c337d058bef --- library/cipher_wrap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index b1ab8f164b..a9ef8195ca 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -841,8 +841,7 @@ static int aria_crypt_cbc_wrap( void *ctx, mbedtls_operation_t operation, size_t length, unsigned char *iv, const unsigned char *input, unsigned char *output ) { - (void) operation; - return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, length, iv, + return mbedtls_aria_crypt_cbc( (mbedtls_aria_context *) ctx, operation, length, iv, input, output ); } #endif /* MBEDTLS_CIPHER_MODE_CBC */ From fb78c901389043d37a3076a745835084c63b8d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 13:46:15 +0200 Subject: [PATCH 0346/1100] Use recently-introduced platform_util module --- library/chacha20.c | 23 ++++++++++------------- library/chachapoly.c | 11 ++++------- library/poly1305.c | 16 ++++++---------- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/library/chacha20.c b/library/chacha20.c index 5a753ebaa3..7f7603549e 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -22,7 +22,6 @@ * * This file is part of mbed TLS (https://tls.mbed.org) */ -#include "mbedtls/chacha20.h" #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" @@ -32,7 +31,8 @@ #if defined(MBEDTLS_CHACHA20_C) -#if !defined(MBEDTLS_CHACHA20_ALT) +#include "mbedtls/chacha20.h" +#include "mbedtls/platform_util.h" #include #include @@ -46,6 +46,8 @@ #endif /* MBEDTLS_PLATFORM_C */ #endif /* MBEDTLS_SELF_TEST */ +#if !defined(MBEDTLS_CHACHA20_ALT) + #define BYTES_TO_U32_LE( data, offset ) \ ( (uint32_t) data[offset] \ | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ @@ -59,11 +61,6 @@ #define CHACHA20_BLOCK_SIZE_BYTES ( 4U * 16U ) -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = v; while( n-- ) *p++ = 0; -} - /** * \brief ChaCha20 quarter round operation. * @@ -182,9 +179,9 @@ void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx->initial_state, sizeof( ctx->initial_state ) ); - mbedtls_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); - mbedtls_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); + mbedtls_platform_zeroize( ctx->initial_state, sizeof( ctx->initial_state ) ); + mbedtls_platform_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); + mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); /* Initially, there's no keystream bytes available */ ctx->keystream_bytes_used = CHACHA20_BLOCK_SIZE_BYTES; @@ -195,7 +192,7 @@ void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx, sizeof( mbedtls_chacha20_context ) ); + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_chacha20_context ) ); } } @@ -243,8 +240,8 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, ctx->initial_state[14] = BYTES_TO_U32_LE( nonce, 4 ); ctx->initial_state[15] = BYTES_TO_U32_LE( nonce, 8 ); - mbedtls_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); - mbedtls_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); + mbedtls_platform_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); + mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); /* Initially, there's no keystream bytes available */ ctx->keystream_bytes_used = CHACHA20_BLOCK_SIZE_BYTES; diff --git a/library/chachapoly.c b/library/chachapoly.c index de9e66cccb..5ce27f2103 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -29,6 +29,8 @@ #if defined(MBEDTLS_CHACHAPOLY_C) #include "mbedtls/chachapoly.h" +#include "mbedtls/platform_util.h" + #include #if defined(MBEDTLS_SELF_TEST) @@ -47,11 +49,6 @@ #define CHACHAPOLY_STATE_CIPHERTEXT ( 2 ) /* Encrypting or decrypting */ #define CHACHAPOLY_STATE_FINISHED ( 3 ) -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = v; while( n-- ) *p++ = 0; -} - /** * \brief Adds padding bytes (zeroes) to pad the AAD for Poly1305. * @@ -170,7 +167,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, } cleanup: - mbedtls_zeroize( poly1305_key, 64U ); + mbedtls_platform_zeroize( poly1305_key, 64U ); return( result ); } @@ -355,7 +352,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, if( diff != 0 ) { - mbedtls_zeroize( output, length ); + mbedtls_platform_zeroize( output, length ); return( MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED ); } diff --git a/library/poly1305.c b/library/poly1305.c index a9fff4757c..bdd6744752 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -28,9 +28,8 @@ #if defined(MBEDTLS_POLY1305_C) -#if !defined(MBEDTLS_POLY1305_ALT) - #include "mbedtls/poly1305.h" +#include "mbedtls/platform_util.h" #include @@ -43,6 +42,8 @@ #endif /* MBEDTLS_PLATFORM_C */ #endif /* MBEDTLS_SELF_TEST */ +#if !defined(MBEDTLS_POLY1305_ALT) + #define POLY1305_BLOCK_SIZE_BYTES ( 16U ) #define BYTES_TO_U32_LE( data, offset ) \ @@ -52,11 +53,6 @@ | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ ) -/* Implementation that should never be optimized out by the compiler */ -static void mbedtls_zeroize( void *v, size_t n ) { - volatile unsigned char *p = v; while( n-- ) *p++ = 0; -} - /** * \brief Process blocks with Poly1305. * @@ -244,7 +240,7 @@ void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } } @@ -252,7 +248,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) { if ( ctx != NULL ) { - mbedtls_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } } @@ -283,7 +279,7 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, ctx->acc[4] = 0U; /* Queue initially empty */ - mbedtls_zeroize( ctx->queue, sizeof( ctx->queue ) ); + mbedtls_platform_zeroize( ctx->queue, sizeof( ctx->queue ) ); ctx->queue_len = 0U; return( 0 ); From c22e61a081b0aa1309429cc7f73a22220f419d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 13:51:05 +0200 Subject: [PATCH 0347/1100] Add ifdef for selftest in header file See https://github.com/ARMmbed/mbedtls/pull/975 --- include/mbedtls/chacha20.h | 2 ++ include/mbedtls/chachapoly.h | 2 ++ include/mbedtls/poly1305.h | 2 ++ 3 files changed, 6 insertions(+) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index c33aef371a..56ee57aa65 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -196,6 +196,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], const unsigned char* input, unsigned char* output ); +#if defined(MBEDTLS_SELF_TEST) /** * \brief The ChaCha20 checkup routine. * @@ -203,6 +204,7 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], * \return \c 1 on failure. */ int mbedtls_chacha20_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ #ifdef __cplusplus } diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index ae786e045a..249dba1853 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -311,6 +311,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ); +#if defined(MBEDTLS_SELF_TEST) /** * \brief The ChaCha20-Poly1305 checkup routine. * @@ -318,6 +319,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, * \return \c 1 on failure. */ int mbedtls_chachapoly_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ #ifdef __cplusplus } diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index babbc15fa4..abe3690005 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -164,6 +164,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], size_t ilen, unsigned char mac[16] ); +#if defined(MBEDTLS_SELF_TEST) /** * \brief The Poly1305 checkup routine. * @@ -171,6 +172,7 @@ int mbedtls_poly1305_mac( const unsigned char key[32], * \return \c 1 on failure. */ int mbedtls_poly1305_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ #ifdef __cplusplus } From 9620f9b99e59a789e71154d0ca13d310f05247e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 16:52:19 +0200 Subject: [PATCH 0348/1100] Rm mbedtls_ prefix form static functions - prefix is no necessary for static ids and makes lines longer - most often omitted (even though we're not fully consistent) --- library/chacha20.c | 42 ++++++++++++++++++++---------------------- library/chachapoly.c | 10 +++++----- library/poly1305.c | 27 +++++++++++---------------- 3 files changed, 36 insertions(+), 43 deletions(-) diff --git a/library/chacha20.c b/library/chacha20.c index 7f7603549e..81bb3b7024 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -76,11 +76,11 @@ * \param c The index of 'c' in the state. * \param d The index of 'd' in the state. */ -static inline void mbedtls_chacha20_quarter_round( uint32_t state[16], - size_t a, - size_t b, - size_t c, - size_t d ) +static inline void chacha20_quarter_round( uint32_t state[16], + size_t a, + size_t b, + size_t c, + size_t d ) { /* a += b; d ^= a; d <<<= 16; */ state[a] += state[b]; @@ -111,17 +111,17 @@ static inline void mbedtls_chacha20_quarter_round( uint32_t state[16], * * \param state The ChaCha20 state to update. */ -static void mbedtls_chacha20_inner_block( uint32_t state[16] ) +static void chacha20_inner_block( uint32_t state[16] ) { - mbedtls_chacha20_quarter_round( state, 0, 4, 8, 12 ); - mbedtls_chacha20_quarter_round( state, 1, 5, 9, 13 ); - mbedtls_chacha20_quarter_round( state, 2, 6, 10, 14 ); - mbedtls_chacha20_quarter_round( state, 3, 7, 11, 15 ); + chacha20_quarter_round( state, 0, 4, 8, 12 ); + chacha20_quarter_round( state, 1, 5, 9, 13 ); + chacha20_quarter_round( state, 2, 6, 10, 14 ); + chacha20_quarter_round( state, 3, 7, 11, 15 ); - mbedtls_chacha20_quarter_round( state, 0, 5, 10, 15 ); - mbedtls_chacha20_quarter_round( state, 1, 6, 11, 12 ); - mbedtls_chacha20_quarter_round( state, 2, 7, 8, 13 ); - mbedtls_chacha20_quarter_round( state, 3, 4, 9, 14 ); + chacha20_quarter_round( state, 0, 5, 10, 15 ); + chacha20_quarter_round( state, 1, 6, 11, 12 ); + chacha20_quarter_round( state, 2, 7, 8, 13 ); + chacha20_quarter_round( state, 3, 4, 9, 14 ); } /** @@ -131,9 +131,9 @@ static void mbedtls_chacha20_inner_block( uint32_t state[16] ) * \param working_state This state is used as a temporary working area. * \param keystream Generated keystream bytes are written to this buffer. */ -static void mbedtls_chacha20_block( const uint32_t initial_state[16], - uint32_t working_state[16], - unsigned char keystream[64] ) +static void chacha20_block( const uint32_t initial_state[16], + uint32_t working_state[16], + unsigned char keystream[64] ) { size_t i; size_t offset; @@ -143,9 +143,7 @@ static void mbedtls_chacha20_block( const uint32_t initial_state[16], CHACHA20_BLOCK_SIZE_BYTES ); for ( i = 0U; i < 10U; i++ ) - { - mbedtls_chacha20_inner_block( working_state ); - } + chacha20_inner_block( working_state ); working_state[0] += initial_state[0]; working_state[1] += initial_state[1]; @@ -281,7 +279,7 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) { /* Generate new keystream block and increment counter */ - mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); + chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); ctx->initial_state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < 64U; i += 8U ) @@ -304,7 +302,7 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, if ( size > 0U ) { /* Generate new keystream block and increment counter */ - mbedtls_chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); + chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); ctx->initial_state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < size; i++) diff --git a/library/chachapoly.c b/library/chachapoly.c index 5ce27f2103..d0c35511a4 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -54,7 +54,7 @@ * * \param ctx The ChaCha20-Poly1305 context. */ -static void mbedtls_chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) +static void chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->aad_len % 16U ); unsigned char zeroes[15]; @@ -73,7 +73,7 @@ static void mbedtls_chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) * * \param ctx The ChaCha20-Poly1305 context. */ -static void mbedtls_chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) +static void chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; @@ -218,7 +218,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, { ctx->state = CHACHAPOLY_STATE_CIPHERTEXT; - mbedtls_chachapoly_pad_aad( ctx ); + chachapoly_pad_aad( ctx ); } ctx->ciphertext_len += len; @@ -257,11 +257,11 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, if ( ctx->state == CHACHAPOLY_STATE_AAD ) { - mbedtls_chachapoly_pad_aad( ctx ); + chachapoly_pad_aad( ctx ); } else if ( ctx->state == CHACHAPOLY_STATE_CIPHERTEXT ) { - mbedtls_chachapoly_pad_ciphertext( ctx ); + chachapoly_pad_ciphertext( ctx ); } ctx->state = CHACHAPOLY_STATE_FINISHED; diff --git a/library/poly1305.c b/library/poly1305.c index bdd6744752..091684e199 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -64,10 +64,10 @@ * to the input data before calling this function. * Otherwise, set this parameter to 1. */ -static void mbedtls_poly1305_process( mbedtls_poly1305_context *ctx, - size_t nblocks, - const unsigned char *input, - uint32_t needs_padding ) +static void poly1305_process( mbedtls_poly1305_context *ctx, + size_t nblocks, + const unsigned char *input, + uint32_t needs_padding ) { uint64_t d0, d1, d2, d3; uint32_t acc0, acc1, acc2, acc3, acc4; @@ -167,8 +167,8 @@ static void mbedtls_poly1305_process( mbedtls_poly1305_context *ctx, * \param mac The buffer to where the MAC is written. Must be * big enough to contain the 16-byte MAC. */ -static void mbedtls_poly1305_compute_mac( const mbedtls_poly1305_context *ctx, - unsigned char mac[16] ) +static void poly1305_compute_mac( const mbedtls_poly1305_context *ctx, + unsigned char mac[16] ) { uint64_t d; uint32_t g0, g1, g2, g3, g4; @@ -330,10 +330,7 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, ctx->queue_len = 0U; - mbedtls_poly1305_process( ctx, - 1U, - ctx->queue, - 1U ); /* add padding bit */ + poly1305_process( ctx, 1U, ctx->queue, 1U ); /* add padding bit */ offset += queue_free_len; remaining -= queue_free_len; @@ -344,7 +341,7 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, { nblocks = remaining / POLY1305_BLOCK_SIZE_BYTES; - mbedtls_poly1305_process( ctx, nblocks, &input[offset], 1U ); + poly1305_process( ctx, nblocks, &input[offset], 1U ); offset += nblocks * POLY1305_BLOCK_SIZE_BYTES; remaining %= POLY1305_BLOCK_SIZE_BYTES; @@ -380,13 +377,11 @@ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, 0, POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); - mbedtls_poly1305_process( ctx, - 1U, /* Process 1 block */ - ctx->queue, - 0U ); /* Don't add padding bit (it was just added above) */ + poly1305_process( ctx, 1U, /* Process 1 block */ + ctx->queue, 0U ); /* Don't add padding bit (it was just added above) */ } - mbedtls_poly1305_compute_mac( ctx, mac ); + poly1305_compute_mac( ctx, mac ); return( 0 ); } From 98fae6d8003f3fa1222f11fd843781fc7433874d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 17:23:41 +0200 Subject: [PATCH 0349/1100] ChaCha20: move working state from ctx to stack No need to keep it around. --- include/mbedtls/chacha20.h | 3 +-- library/chacha20.c | 52 ++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index 56ee57aa65..d7a0750c24 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -54,8 +54,7 @@ extern "C" { typedef struct { - uint32_t initial_state[16]; /*! The initial state (before round operations). */ - uint32_t working_state[16]; /*! The working state (after round operations). */ + uint32_t state[16]; /*! The state (before round operations). */ uint8_t keystream8[64]; /*! Leftover keystream bytes. */ size_t keystream_bytes_used; /*! Number of keystream bytes already used. */ } diff --git a/library/chacha20.c b/library/chacha20.c index 81bb3b7024..f782e8c39f 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -128,15 +128,13 @@ static void chacha20_inner_block( uint32_t state[16] ) * \brief Generates a keystream block. * * \param initial_state The initial ChaCha20 state (containing the key, nonce, counter). - * \param working_state This state is used as a temporary working area. * \param keystream Generated keystream bytes are written to this buffer. */ static void chacha20_block( const uint32_t initial_state[16], - uint32_t working_state[16], unsigned char keystream[64] ) { + uint32_t working_state[16]; size_t i; - size_t offset; memcpy( working_state, initial_state, @@ -164,21 +162,22 @@ static void chacha20_block( const uint32_t initial_state[16], for ( i = 0U; i < 16; i++ ) { - offset = i * 4U; + size_t offset = i * 4U; keystream[offset ] = (unsigned char) working_state[i]; keystream[offset + 1U] = (unsigned char) ( working_state[i] >> 8 ); keystream[offset + 2U] = (unsigned char) ( working_state[i] >> 16 ); keystream[offset + 3U] = (unsigned char) ( working_state[i] >> 24 ); } + + mbedtls_platform_zeroize( working_state, sizeof( working_state ) ); } void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ) { if ( ctx != NULL ) { - mbedtls_platform_zeroize( ctx->initial_state, sizeof( ctx->initial_state ) ); - mbedtls_platform_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); + mbedtls_platform_zeroize( ctx->state, sizeof( ctx->state ) ); mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); /* Initially, there's no keystream bytes available */ @@ -203,20 +202,20 @@ int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, } /* ChaCha20 constants - the string "expand 32-byte k" */ - ctx->initial_state[0] = 0x61707865; - ctx->initial_state[1] = 0x3320646e; - ctx->initial_state[2] = 0x79622d32; - ctx->initial_state[3] = 0x6b206574; + ctx->state[0] = 0x61707865; + ctx->state[1] = 0x3320646e; + ctx->state[2] = 0x79622d32; + ctx->state[3] = 0x6b206574; /* Set key */ - ctx->initial_state[4] = BYTES_TO_U32_LE( key, 0 ); - ctx->initial_state[5] = BYTES_TO_U32_LE( key, 4 ); - ctx->initial_state[6] = BYTES_TO_U32_LE( key, 8 ); - ctx->initial_state[7] = BYTES_TO_U32_LE( key, 12 ); - ctx->initial_state[8] = BYTES_TO_U32_LE( key, 16 ); - ctx->initial_state[9] = BYTES_TO_U32_LE( key, 20 ); - ctx->initial_state[10] = BYTES_TO_U32_LE( key, 24 ); - ctx->initial_state[11] = BYTES_TO_U32_LE( key, 28 ); + ctx->state[4] = BYTES_TO_U32_LE( key, 0 ); + ctx->state[5] = BYTES_TO_U32_LE( key, 4 ); + ctx->state[6] = BYTES_TO_U32_LE( key, 8 ); + ctx->state[7] = BYTES_TO_U32_LE( key, 12 ); + ctx->state[8] = BYTES_TO_U32_LE( key, 16 ); + ctx->state[9] = BYTES_TO_U32_LE( key, 20 ); + ctx->state[10] = BYTES_TO_U32_LE( key, 24 ); + ctx->state[11] = BYTES_TO_U32_LE( key, 28 ); return( 0 ); } @@ -231,14 +230,13 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, } /* Counter */ - ctx->initial_state[12] = counter; + ctx->state[12] = counter; /* Nonce */ - ctx->initial_state[13] = BYTES_TO_U32_LE( nonce, 0 ); - ctx->initial_state[14] = BYTES_TO_U32_LE( nonce, 4 ); - ctx->initial_state[15] = BYTES_TO_U32_LE( nonce, 8 ); + ctx->state[13] = BYTES_TO_U32_LE( nonce, 0 ); + ctx->state[14] = BYTES_TO_U32_LE( nonce, 4 ); + ctx->state[15] = BYTES_TO_U32_LE( nonce, 8 ); - mbedtls_platform_zeroize( ctx->working_state, sizeof( ctx->working_state ) ); mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); /* Initially, there's no keystream bytes available */ @@ -279,8 +277,8 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) { /* Generate new keystream block and increment counter */ - chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); - ctx->initial_state[CHACHA20_CTR_INDEX]++; + chacha20_block( ctx->state, ctx->keystream8 ); + ctx->state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < 64U; i += 8U ) { @@ -302,8 +300,8 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, if ( size > 0U ) { /* Generate new keystream block and increment counter */ - chacha20_block( ctx->initial_state, ctx->working_state, ctx->keystream8 ); - ctx->initial_state[CHACHA20_CTR_INDEX]++; + chacha20_block( ctx->state, ctx->keystream8 ); + ctx->state[CHACHA20_CTR_INDEX]++; for ( i = 0U; i < size; i++) { From 17297890757e6fa86a90cd172275c4f8d96dfa04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 17:53:41 +0200 Subject: [PATCH 0350/1100] Misc style adjustments - fix some whitespace - fix most overlong lines - remove some superfluous parentheses - s/result/ret/ for consistency with the rest of the library --- library/chacha20.c | 108 ++++++++++++++++--------------- library/chachapoly.c | 150 +++++++++++++++++++++---------------------- library/poly1305.c | 113 ++++++++++++++++---------------- 3 files changed, 189 insertions(+), 182 deletions(-) diff --git a/library/chacha20.c b/library/chacha20.c index f782e8c39f..903f55f3bc 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -55,7 +55,8 @@ | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ ) -#define ROTL32( value, amount ) ( (uint32_t) ( value << amount ) | ( value >> ( 32 - amount ) ) ) +#define ROTL32( value, amount ) \ + ( (uint32_t) ( value << amount ) | ( value >> ( 32 - amount ) ) ) #define CHACHA20_CTR_INDEX ( 12U ) @@ -127,7 +128,7 @@ static void chacha20_inner_block( uint32_t state[16] ) /** * \brief Generates a keystream block. * - * \param initial_state The initial ChaCha20 state (containing the key, nonce, counter). + * \param initial_state The initial ChaCha20 state (key, nonce, counter). * \param keystream Generated keystream bytes are written to this buffer. */ static void chacha20_block( const uint32_t initial_state[16], @@ -140,19 +141,19 @@ static void chacha20_block( const uint32_t initial_state[16], initial_state, CHACHA20_BLOCK_SIZE_BYTES ); - for ( i = 0U; i < 10U; i++ ) + for( i = 0U; i < 10U; i++ ) chacha20_inner_block( working_state ); - working_state[0] += initial_state[0]; - working_state[1] += initial_state[1]; - working_state[2] += initial_state[2]; - working_state[3] += initial_state[3]; - working_state[4] += initial_state[4]; - working_state[5] += initial_state[5]; - working_state[6] += initial_state[6]; - working_state[7] += initial_state[7]; - working_state[8] += initial_state[8]; - working_state[9] += initial_state[9]; + working_state[ 0] += initial_state[ 0]; + working_state[ 1] += initial_state[ 1]; + working_state[ 2] += initial_state[ 2]; + working_state[ 3] += initial_state[ 3]; + working_state[ 4] += initial_state[ 4]; + working_state[ 5] += initial_state[ 5]; + working_state[ 6] += initial_state[ 6]; + working_state[ 7] += initial_state[ 7]; + working_state[ 8] += initial_state[ 8]; + working_state[ 9] += initial_state[ 9]; working_state[10] += initial_state[10]; working_state[11] += initial_state[11]; working_state[12] += initial_state[12]; @@ -160,14 +161,14 @@ static void chacha20_block( const uint32_t initial_state[16], working_state[14] += initial_state[14]; working_state[15] += initial_state[15]; - for ( i = 0U; i < 16; i++ ) + for( i = 0U; i < 16; i++ ) { size_t offset = i * 4U; - keystream[offset ] = (unsigned char) working_state[i]; - keystream[offset + 1U] = (unsigned char) ( working_state[i] >> 8 ); - keystream[offset + 2U] = (unsigned char) ( working_state[i] >> 16 ); - keystream[offset + 3U] = (unsigned char) ( working_state[i] >> 24 ); + keystream[offset ] = (unsigned char)( working_state[i] ); + keystream[offset + 1U] = (unsigned char)( working_state[i] >> 8 ); + keystream[offset + 2U] = (unsigned char)( working_state[i] >> 16 ); + keystream[offset + 3U] = (unsigned char)( working_state[i] >> 24 ); } mbedtls_platform_zeroize( working_state, sizeof( working_state ) ); @@ -175,7 +176,7 @@ static void chacha20_block( const uint32_t initial_state[16], void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_platform_zeroize( ctx->state, sizeof( ctx->state ) ); mbedtls_platform_zeroize( ctx->keystream8, sizeof( ctx->keystream8 ) ); @@ -187,7 +188,7 @@ void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ) void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_platform_zeroize( ctx, sizeof( mbedtls_chacha20_context ) ); } @@ -196,7 +197,7 @@ void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ) int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, const unsigned char key[32] ) { - if ( ( ctx == NULL ) || ( key == NULL ) ) + if( ( ctx == NULL ) || ( key == NULL ) ) { return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); } @@ -224,7 +225,7 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, const unsigned char nonce[12], uint32_t counter ) { - if ( ( ctx == NULL ) || ( nonce == NULL ) ) + if( ( ctx == NULL ) || ( nonce == NULL ) ) { return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); } @@ -253,20 +254,21 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, size_t offset = 0U; size_t i; - if ( ctx == NULL ) + if( ctx == NULL ) { return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); } - else if ( ( size > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) + else if( ( size > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) { /* input and output pointers are allowed to be NULL only if size == 0 */ return( MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA ); } /* Use leftover keystream bytes, if available */ - while ( ( size > 0U ) && ( ctx->keystream_bytes_used < CHACHA20_BLOCK_SIZE_BYTES ) ) + while( size > 0U && ctx->keystream_bytes_used < CHACHA20_BLOCK_SIZE_BYTES ) { - output[offset] = input[offset] ^ ctx->keystream8[ctx->keystream_bytes_used]; + output[offset] = input[offset] + ^ ctx->keystream8[ctx->keystream_bytes_used]; ctx->keystream_bytes_used++; offset++; @@ -274,22 +276,22 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, } /* Process full blocks */ - while ( size >= CHACHA20_BLOCK_SIZE_BYTES ) + while( size >= CHACHA20_BLOCK_SIZE_BYTES ) { /* Generate new keystream block and increment counter */ chacha20_block( ctx->state, ctx->keystream8 ); ctx->state[CHACHA20_CTR_INDEX]++; - for ( i = 0U; i < 64U; i += 8U ) + for( i = 0U; i < 64U; i += 8U ) { - output[offset + i ] = input[offset + i ] ^ ctx->keystream8[i ]; - output[offset + i + 1U ] = input[offset + i + 1U ] ^ ctx->keystream8[i + 1U ]; - output[offset + i + 2U ] = input[offset + i + 2U ] ^ ctx->keystream8[i + 2U ]; - output[offset + i + 3U ] = input[offset + i + 3U ] ^ ctx->keystream8[i + 3U ]; - output[offset + i + 4U ] = input[offset + i + 4U ] ^ ctx->keystream8[i + 4U ]; - output[offset + i + 5U ] = input[offset + i + 5U ] ^ ctx->keystream8[i + 5U ]; - output[offset + i + 6U ] = input[offset + i + 6U ] ^ ctx->keystream8[i + 6U ]; - output[offset + i + 7U ] = input[offset + i + 7U ] ^ ctx->keystream8[i + 7U ]; + output[offset + i ] = input[offset + i ] ^ ctx->keystream8[i ]; + output[offset + i+1] = input[offset + i+1] ^ ctx->keystream8[i+1]; + output[offset + i+2] = input[offset + i+2] ^ ctx->keystream8[i+2]; + output[offset + i+3] = input[offset + i+3] ^ ctx->keystream8[i+3]; + output[offset + i+4] = input[offset + i+4] ^ ctx->keystream8[i+4]; + output[offset + i+5] = input[offset + i+5] ^ ctx->keystream8[i+5]; + output[offset + i+6] = input[offset + i+6] ^ ctx->keystream8[i+6]; + output[offset + i+7] = input[offset + i+7] ^ ctx->keystream8[i+7]; } offset += CHACHA20_BLOCK_SIZE_BYTES; @@ -297,13 +299,13 @@ int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, } /* Last (partial) block */ - if ( size > 0U ) + if( size > 0U ) { /* Generate new keystream block and increment counter */ chacha20_block( ctx->state, ctx->keystream8 ); ctx->state[CHACHA20_CTR_INDEX]++; - for ( i = 0U; i < size; i++) + for( i = 0U; i < size; i++) { output[offset + i] = input[offset + i] ^ ctx->keystream8[i]; } @@ -323,23 +325,23 @@ int mbedtls_chacha20_crypt( const unsigned char key[32], unsigned char* output ) { mbedtls_chacha20_context ctx; - int result; + int ret; mbedtls_chacha20_init( &ctx ); - result = mbedtls_chacha20_setkey( &ctx, key ); - if ( result != 0 ) + ret = mbedtls_chacha20_setkey( &ctx, key ); + if( ret != 0 ) goto cleanup; - result = mbedtls_chacha20_starts( &ctx, nonce, counter ); - if ( result != 0 ) + ret = mbedtls_chacha20_starts( &ctx, nonce, counter ); + if( ret != 0 ) goto cleanup; - result = mbedtls_chacha20_update( &ctx, data_len, input, output ); + ret = mbedtls_chacha20_update( &ctx, data_len, input, output ); cleanup: mbedtls_chacha20_free( &ctx ); - return( result ); + return( ret ); } #endif /* !MBEDTLS_CHACHA20_ALT */ @@ -529,21 +531,21 @@ int mbedtls_chacha20_self_test( int verbose ) { unsigned char output[381]; unsigned i; - int result; + int ret; for( i = 0U; i < 2U; i++ ) { if( verbose != 0 ) mbedtls_printf( " ChaCha20 test %u ", i ); - result = mbedtls_chacha20_crypt( test_keys[i], - test_nonces[i], - test_counters[i], - test_lengths[i], - test_input[i], - output ); + ret = mbedtls_chacha20_crypt( test_keys[i], + test_nonces[i], + test_counters[i], + test_lengths[i], + test_input[i], + output ); - ASSERT( 0 == result, ( "error code: %i\n", result ) ); + ASSERT( 0 == ret, ( "error code: %i\n", ret ) ); ASSERT( 0 == memcmp( output, test_output[i], test_lengths[i] ), ( "failed (output)\n" ) ); diff --git a/library/chachapoly.c b/library/chachapoly.c index d0c35511a4..12fce808f0 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -50,7 +50,7 @@ #define CHACHAPOLY_STATE_FINISHED ( 3 ) /** - * \brief Adds padding bytes (zeroes) to pad the AAD for Poly1305. + * \brief Adds nul bytes to pad the AAD for Poly1305. * * \param ctx The ChaCha20-Poly1305 context. */ @@ -59,7 +59,7 @@ static void chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) uint32_t partial_block_len = (uint32_t) ( ctx->aad_len % 16U ); unsigned char zeroes[15]; - if ( partial_block_len > 0U ) + if( partial_block_len > 0U ) { memset( zeroes, 0, sizeof( zeroes ) ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, @@ -69,7 +69,7 @@ static void chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) } /** - * \brief Adds padding bytes (zeroes) to pad the ciphertext for Poly1305. + * \brief Adds nul bytes to pad the ciphertext for Poly1305. * * \param ctx The ChaCha20-Poly1305 context. */ @@ -78,7 +78,7 @@ static void chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; - if ( partial_block_len > 0U ) + if( partial_block_len > 0U ) { memset( zeroes, 0, sizeof( zeroes ) ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, @@ -89,7 +89,7 @@ static void chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_chacha20_init( &ctx->chacha20_ctx ); mbedtls_poly1305_init( &ctx->poly1305_ctx ); @@ -102,7 +102,7 @@ void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ) void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_chacha20_free( &ctx->chacha20_ctx ); mbedtls_poly1305_free( &ctx->poly1305_ctx ); @@ -116,49 +116,49 @@ void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ) int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, const unsigned char key[32] ) { - int result; + int ret; - if ( ( ctx == NULL ) || ( key == NULL ) ) + if( ( ctx == NULL ) || ( key == NULL ) ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - result = mbedtls_chacha20_setkey( &ctx->chacha20_ctx, key ); + ret = mbedtls_chacha20_setkey( &ctx->chacha20_ctx, key ); - return( result ); + return( ret ); } int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, const unsigned char nonce[12], mbedtls_chachapoly_mode_t mode ) { - int result; + int ret; unsigned char poly1305_key[64]; - if ( ( ctx == NULL ) || ( nonce == NULL ) ) + if( ( ctx == NULL ) || ( nonce == NULL ) ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } /* Set counter = 0, will be update to 1 when generating Poly1305 key */ - result = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 0U ); - if ( result != 0 ) + ret = mbedtls_chacha20_starts( &ctx->chacha20_ctx, nonce, 0U ); + if( ret != 0 ) goto cleanup; - /* Generate the Poly1305 key by getting the ChaCha20 keystream output with counter = 0. - * This is the same as encrypting a buffer of zeroes. + /* Generate the Poly1305 key by getting the ChaCha20 keystream output with + * counter = 0. This is the same as encrypting a buffer of zeroes. * Only the first 256-bits (32 bytes) of the key is used for Poly1305. * The other 256 bits are discarded. */ memset( poly1305_key, 0, sizeof( poly1305_key ) ); - result = mbedtls_chacha20_update( &ctx->chacha20_ctx, sizeof( poly1305_key ), + ret = mbedtls_chacha20_update( &ctx->chacha20_ctx, sizeof( poly1305_key ), poly1305_key, poly1305_key ); - if ( result != 0 ) + if( ret != 0 ) goto cleanup; - result = mbedtls_poly1305_starts( &ctx->poly1305_ctx, poly1305_key ); + ret = mbedtls_poly1305_starts( &ctx->poly1305_ctx, poly1305_key ); - if ( result == 0 ) + if( ret == 0 ) { ctx->aad_len = 0U; ctx->ciphertext_len = 0U; @@ -168,23 +168,23 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, cleanup: mbedtls_platform_zeroize( poly1305_key, 64U ); - return( result ); + return( ret ); } int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, const unsigned char *aad, size_t aad_len ) { - if ( ctx == NULL ) + if( ctx == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ( aad_len > 0U ) && ( aad == NULL ) ) + else if( ( aad_len > 0U ) && ( aad == NULL ) ) { /* aad pointer is allowed to be NULL if aad_len == 0 */ return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ctx->state != CHACHAPOLY_STATE_AAD ) + else if( ctx->state != CHACHAPOLY_STATE_AAD ) { return(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } @@ -199,22 +199,22 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ) { - if ( ctx == NULL ) + if( ctx == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) + else if( ( len > 0U ) && ( ( input == NULL ) || ( output == NULL ) ) ) { /* input and output pointers are allowed to be NULL if len == 0 */ return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ( ctx->state != CHACHAPOLY_STATE_AAD ) && + else if( ( ctx->state != CHACHAPOLY_STATE_AAD ) && ( ctx->state != CHACHAPOLY_STATE_CIPHERTEXT ) ) { return( MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } - if ( ctx->state == CHACHAPOLY_STATE_AAD ) + if( ctx->state == CHACHAPOLY_STATE_AAD ) { ctx->state = CHACHAPOLY_STATE_CIPHERTEXT; @@ -223,11 +223,11 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, ctx->ciphertext_len += len; - if ( ctx->mode == MBEDTLS_CHACHAPOLY_ENCRYPT ) + if( ctx->mode == MBEDTLS_CHACHAPOLY_ENCRYPT ) { /* Note: the following functions return an error only if one or more of - * the input pointers are NULL. Since we have checked their validity - * above, we can safety ignore the return value. + * the input pointers are NULL. Since we have checked their + * validity above, we can safety ignore the return value. */ (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, output, len ); @@ -246,20 +246,20 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, { unsigned char len_block[16]; - if ( ( ctx == NULL ) || ( mac == NULL ) ) + if( ( ctx == NULL ) || ( mac == NULL ) ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ctx->state == CHACHAPOLY_STATE_INIT ) + else if( ctx->state == CHACHAPOLY_STATE_INIT ) { return( MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } - if ( ctx->state == CHACHAPOLY_STATE_AAD ) + if( ctx->state == CHACHAPOLY_STATE_AAD ) { chachapoly_pad_aad( ctx ); } - else if ( ctx->state == CHACHAPOLY_STATE_CIPHERTEXT ) + else if( ctx->state == CHACHAPOLY_STATE_CIPHERTEXT ) { chachapoly_pad_ciphertext( ctx ); } @@ -269,22 +269,22 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, /* The lengths of the AAD and ciphertext are processed by * Poly1305 as the final 128-bit block, encoded as little-endian integers. */ - len_block[0] = (unsigned char) ctx->aad_len; - len_block[1] = (unsigned char) ( ctx->aad_len >> 8 ); - len_block[2] = (unsigned char) ( ctx->aad_len >> 16 ); - len_block[3] = (unsigned char) ( ctx->aad_len >> 24 ); - len_block[4] = (unsigned char) ( ctx->aad_len >> 32 ); - len_block[5] = (unsigned char) ( ctx->aad_len >> 40 ); - len_block[6] = (unsigned char) ( ctx->aad_len >> 48 ); - len_block[7] = (unsigned char) ( ctx->aad_len >> 56 ); - len_block[8] = (unsigned char) ctx->ciphertext_len; - len_block[9] = (unsigned char) ( ctx->ciphertext_len >> 8 ); - len_block[10] = (unsigned char) ( ctx->ciphertext_len >> 16 ); - len_block[11] = (unsigned char) ( ctx->ciphertext_len >> 24 ); - len_block[12] = (unsigned char) ( ctx->ciphertext_len >> 32 ); - len_block[13] = (unsigned char) ( ctx->ciphertext_len >> 40 ); - len_block[14] = (unsigned char) ( ctx->ciphertext_len >> 48 ); - len_block[15] = (unsigned char) ( ctx->ciphertext_len >> 56 ); + len_block[ 0] = (unsigned char)( ctx->aad_len ); + len_block[ 1] = (unsigned char)( ctx->aad_len >> 8 ); + len_block[ 2] = (unsigned char)( ctx->aad_len >> 16 ); + len_block[ 3] = (unsigned char)( ctx->aad_len >> 24 ); + len_block[ 4] = (unsigned char)( ctx->aad_len >> 32 ); + len_block[ 5] = (unsigned char)( ctx->aad_len >> 40 ); + len_block[ 6] = (unsigned char)( ctx->aad_len >> 48 ); + len_block[ 7] = (unsigned char)( ctx->aad_len >> 56 ); + len_block[ 8] = (unsigned char)( ctx->ciphertext_len ); + len_block[ 9] = (unsigned char)( ctx->ciphertext_len >> 8 ); + len_block[10] = (unsigned char)( ctx->ciphertext_len >> 16 ); + len_block[11] = (unsigned char)( ctx->ciphertext_len >> 24 ); + len_block[12] = (unsigned char)( ctx->ciphertext_len >> 32 ); + len_block[13] = (unsigned char)( ctx->ciphertext_len >> 40 ); + len_block[14] = (unsigned char)( ctx->ciphertext_len >> 48 ); + len_block[15] = (unsigned char)( ctx->ciphertext_len >> 56 ); (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len_block, 16U ); (void) mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); @@ -302,24 +302,24 @@ int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, unsigned char *output, unsigned char tag[16] ) { - int result; + int ret; - result = mbedtls_chachapoly_starts( ctx, nonce, mode ); - if ( result != 0 ) + ret = mbedtls_chachapoly_starts( ctx, nonce, mode ); + if( ret != 0 ) goto cleanup; - result = mbedtls_chachapoly_update_aad( ctx, aad, aad_len ); - if ( result != 0 ) - goto cleanup; + ret = mbedtls_chachapoly_update_aad( ctx, aad, aad_len ); + if( ret != 0 ) + goto cleanup; - result = mbedtls_chachapoly_update( ctx, length, input, output ); - if ( result != 0 ) - goto cleanup; + ret = mbedtls_chachapoly_update( ctx, length, input, output ); + if( ret != 0 ) + goto cleanup; - result = mbedtls_chachapoly_finish( ctx, tag ); + ret = mbedtls_chachapoly_finish( ctx, tag ); cleanup: - return( result ); + return( ret ); } int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, @@ -466,7 +466,7 @@ int mbedtls_chachapoly_self_test( int verbose ) { mbedtls_chachapoly_context ctx; unsigned i; - int result; + int ret; unsigned char output[200]; unsigned char mac[16]; @@ -477,20 +477,20 @@ int mbedtls_chachapoly_self_test( int verbose ) mbedtls_chachapoly_init( &ctx ); - result = mbedtls_chachapoly_setkey( &ctx, test_key[i] ); - ASSERT( 0 == result, ( "setkey() error code: %i\n", result ) ); + ret = mbedtls_chachapoly_setkey( &ctx, test_key[i] ); + ASSERT( 0 == ret, ( "setkey() error code: %i\n", ret ) ); - result = mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, - test_input_len[i], - test_nonce[i], - test_aad[i], - test_aad_len[i], - test_input[i], - output, - mac ); + ret = mbedtls_chachapoly_crypt_and_tag( &ctx, + MBEDTLS_CHACHAPOLY_ENCRYPT, + test_input_len[i], + test_nonce[i], + test_aad[i], + test_aad_len[i], + test_input[i], + output, + mac ); - ASSERT( 0 == result, ( "crypt_and_tag() error code: %i\n", result ) ); + ASSERT( 0 == ret, ( "crypt_and_tag() error code: %i\n", ret ) ); ASSERT( 0 == memcmp( output, test_output[i], test_input_len[i] ), ( "failure (wrong output)\n" ) ); diff --git a/library/poly1305.c b/library/poly1305.c index 091684e199..41e83f3f35 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -57,12 +57,12 @@ * \brief Process blocks with Poly1305. * * \param ctx The Poly1305 context. - * \param nblocks Number of blocks to process. Note that this function - * only processes full blocks. + * \param nblocks Number of blocks to process. Note that this + * function only processes full blocks. * \param input Buffer containing the input block(s). - * \param needs_padding Set to 0 if the padding bit has already been applied - * to the input data before calling this function. - * Otherwise, set this parameter to 1. + * \param needs_padding Set to 0 if the padding bit has already been + * applied to the input data before calling this + * function. Otherwise, set this parameter to 1. */ static void poly1305_process( mbedtls_poly1305_context *ctx, size_t nblocks, @@ -92,14 +92,19 @@ static void poly1305_process( mbedtls_poly1305_context *ctx, acc4 = ctx->acc[4]; /* Process full blocks */ - for ( i = 0U; i < nblocks; i++ ) + for( i = 0U; i < nblocks; i++ ) { - /* Compute: acc += block */ - /* Note that the input block is treated as a 128-bit little-endian integer */ - d0 = (uint64_t) acc0 + BYTES_TO_U32_LE( input, offset + 0 ); - d1 = (uint64_t) acc1 + BYTES_TO_U32_LE( input, offset + 4 ) + ( d0 >> 32U ); - d2 = (uint64_t) acc2 + BYTES_TO_U32_LE( input, offset + 8 ) + ( d1 >> 32U ); - d3 = (uint64_t) acc3 + BYTES_TO_U32_LE( input, offset + 12 ) + ( d2 >> 32U ); + /* The input block is treated as a 128-bit little-endian integer */ + d0 = BYTES_TO_U32_LE( input, offset + 0 ); + d1 = BYTES_TO_U32_LE( input, offset + 4 ); + d2 = BYTES_TO_U32_LE( input, offset + 8 ); + d3 = BYTES_TO_U32_LE( input, offset + 12 ); + + /* Compute: acc += (padded) block as a 130-bit integer */ + d0 += (uint64_t) acc0; + d1 += (uint64_t) acc1 + ( d0 >> 32U ); + d2 += (uint64_t) acc2 + ( d1 >> 32U ); + d3 += (uint64_t) acc3 + ( d2 >> 32U ); acc0 = (uint32_t) d0; acc1 = (uint32_t) d1; acc2 = (uint32_t) d2; @@ -182,7 +187,7 @@ static void poly1305_compute_mac( const mbedtls_poly1305_context *ctx, acc3 = ctx->acc[3]; acc4 = ctx->acc[4]; - /* Before adding 's' we need to ensure that the accumulator is mod 2^130 - 5. + /* Before adding 's' we ensure that the accumulator is mod 2^130 - 5. * We do this by calculating acc - (2^130 - 5), then checking if * the 131st bit is set. If it is, then reduce: acc -= (2^130 - 5) */ @@ -218,27 +223,27 @@ static void poly1305_compute_mac( const mbedtls_poly1305_context *ctx, acc3 += ctx->s[3] + (uint32_t) ( d >> 32U ); /* Compute MAC (128 least significant bits of the accumulator) */ - mac[0] = (unsigned char) acc0; - mac[1] = (unsigned char) ( acc0 >> 8 ); - mac[2] = (unsigned char) ( acc0 >> 16 ); - mac[3] = (unsigned char) ( acc0 >> 24 ); - mac[4] = (unsigned char) acc1; - mac[5] = (unsigned char) ( acc1 >> 8 ); - mac[6] = (unsigned char) ( acc1 >> 16 ); - mac[7] = (unsigned char) ( acc1 >> 24 ); - mac[8] = (unsigned char) acc2; - mac[9] = (unsigned char) ( acc2 >> 8 ); - mac[10] = (unsigned char) ( acc2 >> 16 ); - mac[11] = (unsigned char) ( acc2 >> 24 ); - mac[12] = (unsigned char) acc3; - mac[13] = (unsigned char) ( acc3 >> 8 ); - mac[14] = (unsigned char) ( acc3 >> 16 ); - mac[15] = (unsigned char) ( acc3 >> 24 ); + mac[ 0] = (unsigned char)( acc0 ); + mac[ 1] = (unsigned char)( acc0 >> 8 ); + mac[ 2] = (unsigned char)( acc0 >> 16 ); + mac[ 3] = (unsigned char)( acc0 >> 24 ); + mac[ 4] = (unsigned char)( acc1 ); + mac[ 5] = (unsigned char)( acc1 >> 8 ); + mac[ 6] = (unsigned char)( acc1 >> 16 ); + mac[ 7] = (unsigned char)( acc1 >> 24 ); + mac[ 8] = (unsigned char)( acc2 ); + mac[ 9] = (unsigned char)( acc2 >> 8 ); + mac[10] = (unsigned char)( acc2 >> 16 ); + mac[11] = (unsigned char)( acc2 >> 24 ); + mac[12] = (unsigned char)( acc3 ); + mac[13] = (unsigned char)( acc3 >> 8 ); + mac[14] = (unsigned char)( acc3 >> 16 ); + mac[15] = (unsigned char)( acc3 >> 24 ); } void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_platform_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } @@ -246,7 +251,7 @@ void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ) void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) { - if ( ctx != NULL ) + if( ctx != NULL ) { mbedtls_platform_zeroize( ctx, sizeof( mbedtls_poly1305_context ) ); } @@ -255,7 +260,7 @@ void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ) int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ) { - if ( ctx == NULL || key == NULL ) + if( ctx == NULL || key == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } @@ -294,21 +299,21 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, size_t queue_free_len; size_t nblocks; - if ( ctx == NULL ) + if( ctx == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - else if ( ( ilen > 0U ) && ( input == NULL ) ) + else if( ( ilen > 0U ) && ( input == NULL ) ) { /* input pointer is allowed to be NULL only if ilen == 0 */ return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } - if ( ( remaining > 0U ) && ( ctx->queue_len > 0U ) ) + if( ( remaining > 0U ) && ( ctx->queue_len > 0U ) ) { queue_free_len = ( POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); - if ( ilen < queue_free_len ) + if( ilen < queue_free_len ) { /* Not enough data to complete the block. * Store this data with the other leftovers. @@ -337,7 +342,7 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, } } - if ( remaining >= POLY1305_BLOCK_SIZE_BYTES ) + if( remaining >= POLY1305_BLOCK_SIZE_BYTES ) { nblocks = remaining / POLY1305_BLOCK_SIZE_BYTES; @@ -347,7 +352,7 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, remaining %= POLY1305_BLOCK_SIZE_BYTES; } - if ( remaining > 0U ) + if( remaining > 0U ) { /* Store partial block */ ctx->queue_len = remaining; @@ -360,13 +365,13 @@ int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, unsigned char mac[16] ) { - if ( ( ctx == NULL ) || ( mac == NULL ) ) + if( ( ctx == NULL ) || ( mac == NULL ) ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); } /* Process any leftover data */ - if ( ctx->queue_len > 0U ) + if( ctx->queue_len > 0U ) { /* Add padding bit */ ctx->queue[ctx->queue_len] = 1U; @@ -378,7 +383,7 @@ int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, POLY1305_BLOCK_SIZE_BYTES - ctx->queue_len ); poly1305_process( ctx, 1U, /* Process 1 block */ - ctx->queue, 0U ); /* Don't add padding bit (it was just added above) */ + ctx->queue, 0U ); /* Already padded above */ } poly1305_compute_mac( ctx, mac ); @@ -392,23 +397,23 @@ int mbedtls_poly1305_mac( const unsigned char key[32], unsigned char mac[16] ) { mbedtls_poly1305_context ctx; - int result; + int ret; mbedtls_poly1305_init( &ctx ); - result = mbedtls_poly1305_starts( &ctx, key ); - if ( result != 0 ) + ret = mbedtls_poly1305_starts( &ctx, key ); + if( ret != 0 ) goto cleanup; - result = mbedtls_poly1305_update( &ctx, input, ilen ); - if ( result != 0 ) + ret = mbedtls_poly1305_update( &ctx, input, ilen ); + if( ret != 0 ) goto cleanup; - result = mbedtls_poly1305_finish( &ctx, mac ); + ret = mbedtls_poly1305_finish( &ctx, mac ); cleanup: mbedtls_poly1305_free( &ctx ); - return( result ); + return( ret ); } #endif /* MBEDTLS_POLY1305_ALT */ @@ -495,18 +500,18 @@ int mbedtls_poly1305_self_test( int verbose ) { unsigned char mac[16]; unsigned i; - int result; + int ret; for( i = 0U; i < 2U; i++ ) { if( verbose != 0 ) mbedtls_printf( " Poly1305 test %u ", i ); - result = mbedtls_poly1305_mac( test_keys[i], - test_data[i], - test_data_len[i], - mac ); - ASSERT( 0 == result, ( "error code: %i\n", result ) ); + ret = mbedtls_poly1305_mac( test_keys[i], + test_data[i], + test_data_len[i], + mac ); + ASSERT( 0 == ret, ( "error code: %i\n", ret ) ); ASSERT( 0 == memcmp( mac, test_mac[i], 16U ), ( "failed (mac)\n" ) ); From f4f01b6b7ad1604e8cd8f25c55b5f32da1a52d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 18:43:42 +0200 Subject: [PATCH 0351/1100] Check return values from lower modules The cast to void was motivated by the assumption that the functions only return non-zero when passed bad arguments, but that might not be true of alternative implementation, for example on hardware failure. --- library/chachapoly.c | 77 +++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/library/chachapoly.c b/library/chachapoly.c index 12fce808f0..ba3cf3c0c7 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -54,18 +54,19 @@ * * \param ctx The ChaCha20-Poly1305 context. */ -static void chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) +static int chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->aad_len % 16U ); unsigned char zeroes[15]; - if( partial_block_len > 0U ) - { - memset( zeroes, 0, sizeof( zeroes ) ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, - zeroes, - 16U - partial_block_len ); - } + if( partial_block_len == 0U ) + return( 0 ); + + memset( zeroes, 0, sizeof( zeroes ) ); + + return( mbedtls_poly1305_update( &ctx->poly1305_ctx, + zeroes, + 16U - partial_block_len ) ); } /** @@ -78,13 +79,13 @@ static void chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; - if( partial_block_len > 0U ) - { - memset( zeroes, 0, sizeof( zeroes ) ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, - zeroes, - 16U - partial_block_len ); - } + if( partial_block_len == 0U ) + return( 0 ); + + memset( zeroes, 0, sizeof( zeroes ) ); + return( mbedtls_poly1305_update( &ctx->poly1305_ctx, + zeroes, + 16U - partial_block_len ) ); } void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ) @@ -199,6 +200,8 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, const unsigned char *input, unsigned char *output ) { + int ret; + if( ctx == NULL ) { return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); @@ -218,24 +221,32 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, { ctx->state = CHACHAPOLY_STATE_CIPHERTEXT; - chachapoly_pad_aad( ctx ); + ret = chachapoly_pad_aad( ctx ); + if( ret != 0 ) + return( ret ); } ctx->ciphertext_len += len; if( ctx->mode == MBEDTLS_CHACHAPOLY_ENCRYPT ) { - /* Note: the following functions return an error only if one or more of - * the input pointers are NULL. Since we have checked their - * validity above, we can safety ignore the return value. - */ - (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, output, len ); + ret = mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + if( ret != 0 ) + return( ret ); + + ret = mbedtls_poly1305_update( &ctx->poly1305_ctx, output, len ); + if( ret != 0 ) + return( ret ); } else /* DECRYPT */ { - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, input, len ); - (void) mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + ret = mbedtls_poly1305_update( &ctx->poly1305_ctx, input, len ); + if( ret != 0 ) + return( ret ); + + ret = mbedtls_chacha20_update( &ctx->chacha20_ctx, len, input, output ); + if( ret != 0 ) + return( ret ); } return( 0 ); @@ -244,6 +255,7 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, unsigned char mac[16] ) { + int ret; unsigned char len_block[16]; if( ( ctx == NULL ) || ( mac == NULL ) ) @@ -257,11 +269,15 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, if( ctx->state == CHACHAPOLY_STATE_AAD ) { - chachapoly_pad_aad( ctx ); + ret = chachapoly_pad_aad( ctx ); + if( ret != 0 ) + return( ret ); } else if( ctx->state == CHACHAPOLY_STATE_CIPHERTEXT ) { - chachapoly_pad_ciphertext( ctx ); + ret = chachapoly_pad_ciphertext( ctx ); + if( ret != 0 ) + return( ret ); } ctx->state = CHACHAPOLY_STATE_FINISHED; @@ -286,10 +302,13 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, len_block[14] = (unsigned char)( ctx->ciphertext_len >> 48 ); len_block[15] = (unsigned char)( ctx->ciphertext_len >> 56 ); - (void) mbedtls_poly1305_update( &ctx->poly1305_ctx, len_block, 16U ); - (void) mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); + ret = mbedtls_poly1305_update( &ctx->poly1305_ctx, len_block, 16U ); + if( ret != 0 ) + return( ret ); - return( 0 ); + ret = mbedtls_poly1305_finish( &ctx->poly1305_ctx, mac ); + + return( ret ); } int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, From fa0c47d4c81e0340770c3224dca1e5c082789535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 19:02:06 +0200 Subject: [PATCH 0352/1100] Fix typo in doc and copy missing warning --- include/mbedtls/aes.h | 4 ++++ include/mbedtls/aria.h | 2 +- include/mbedtls/blowfish.h | 4 ++++ include/mbedtls/camellia.h | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 731e5685ba..104c8f535b 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -349,6 +349,10 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * Note that for both stategies, sizes are measured in blocks and * that an AES block is 16 bytes. * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * * \param ctx The AES context to use for encryption or decryption. * \param length The length of the input data. * \param nc_off The offset in the current \p stream_block, for diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index 04f9240ead..bae0621b23 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -289,7 +289,7 @@ int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, * Note that for both stategies, sizes are measured in blocks and * that an ARIA block is 16 bytes. * - * \warning Upon return, \p stream_block constains sensitive data. Its + * \warning Upon return, \p stream_block contains sensitive data. Its * content must not be written to insecure storage and should be * securely discarded as soon as it's no longer needed. * diff --git a/include/mbedtls/blowfish.h b/include/mbedtls/blowfish.h index fb16782aa8..985faa43f0 100644 --- a/include/mbedtls/blowfish.h +++ b/include/mbedtls/blowfish.h @@ -211,6 +211,10 @@ int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, * Note that for both stategies, sizes are measured in blocks and * that a Blowfish block is 8 bytes. * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * * \param ctx Blowfish context * \param length The length of the data * \param nc_off The offset in the current stream_block (for resuming diff --git a/include/mbedtls/camellia.h b/include/mbedtls/camellia.h index 1d3610fea7..7e4721af78 100644 --- a/include/mbedtls/camellia.h +++ b/include/mbedtls/camellia.h @@ -231,6 +231,10 @@ int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, * Note that for both stategies, sizes are measured in blocks and * that a CAMELLIA block is 16 bytes. * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * * \param ctx CAMELLIA context * \param length The length of the data * \param nc_off The offset in the current stream_block (for resuming From be78b07015f302a9c4897139206d5abb95fbf5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 24 May 2018 19:33:59 +0200 Subject: [PATCH 0353/1100] chachapoly: warn against piecewise decryption --- include/mbedtls/chachapoly.h | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index 249dba1853..be10cfd324 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -89,13 +89,31 @@ mbedtls_chachapoly_context; * \c mbedtls_chachapoly_crypt_and_tag() or * \c mbedtls_chachapoly_auth_decrypt(). * - * In order to encrypt or decrypt messages piecewise, for each + * In order to encrypt messages piecewise, for each * message you should make a call to * \c mbedtls_chachapoly_starts(), then 0 or more calls to * \c mbedtls_chachapoly_update_aad(), then 0 or more calls to * \c mbedtls_chachapoly_update(), then one call to * \c mbedtls_chachapoly_finish(). * + * \warning Decryption with the piecewise API is discouraged! Always + * use \c mbedtls_chachapoly_auth_decrypt() when possible! + * + * If however this is not possible because the data is too + * large to fit in memory, you need to: + * + * - call \c mbedtls_chachapoly_starts() and (if needed) + * \c mbedtls_chachapoly_update_aad() as above, + * - call \c mbedtls_chachapoly_update() multiple times and + * ensure its output (the plaintext) is NOT used in any other + * way than placing it in temporary storage at this point, + * - call \c mbedtls_chachapoly_finish() to compute the + * authentication tag and compared it in constant time to the + * tag received with the ciphertext. + * + * If the tags are not equal, you must immediately discard + * all previous outputs of \c mbedtls_chachapoly_update(), + * otherwise you can now safely use the plaintext. * * \param ctx The ChachaPoly context to initialize. */ @@ -134,10 +152,13 @@ int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, * \note If the context is being used for AAD only (no data to * encrypt or decrypt) then \p mode can be set to any value. * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * * \param ctx The ChaCha20-Poly1305 context. * \param nonce The nonce/IV to use for the message. Must be 12 bytes. * \param mode The operation to perform: #MBEDTLS_CHACHAPOLY_ENCRYPT or - * #MBEDTLS_CHACHAPOLY_DECRYPT. + * #MBEDTLS_CHACHAPOLY_DECRYPT (discouraged, see warning). * * \return \c 0 on success. * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA @@ -169,6 +190,9 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, * been processed by \c mbedtls_chachapoly_update(), * or if the context has been finished. * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * * \param ctx The ChaCha20-Poly1305 context to use. * \param aad_len The length (in bytes) of the AAD. The length has no * restrictions. @@ -200,6 +224,9 @@ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, * this function 0 times, if no data is to be encrypted * or decrypted. * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * * \param ctx The ChaCha20-Poly1305 context to use. * \param len The length (in bytes) of the data to encrypt or decrypt. * \param input The buffer containing the data to encrypt or decrypt. @@ -227,6 +254,9 @@ int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, * \param ctx The ChaCha20-Poly1305 context to use. * \param mac The buffer to where the 128-bit (16 bytes) MAC is written. * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * * \return \c 0 on success. * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if \p ctx or \p mac are NULL. From e7d3f8e2ea94b03dceb7effd300edda9fd9822b9 Mon Sep 17 00:00:00 2001 From: Zach van Rijn Date: Mon, 21 May 2018 10:52:34 -0400 Subject: [PATCH 0354/1100] Fix MicroBlaze register typo. --- include/mbedtls/bn_mul.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index 354c1cc1ab..f4b2b561d1 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -521,7 +521,7 @@ "swi r3, %2 \n\t" \ : "=m" (c), "=m" (d), "=m" (s) \ : "m" (s), "m" (d), "m" (c), "m" (b) \ - : "r3", "r4" "r5", "r6", "r7", "r8", \ + : "r3", "r4", "r5", "r6", "r7", "r8", \ "r9", "r10", "r11", "r12", "r13" \ ); From 45b79cf12b1dbf190a58b5f6af3e5717cf5cef71 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 23 May 2018 16:55:16 +0100 Subject: [PATCH 0355/1100] Treat warnings as errors for IAR Fix IAR compiler warnings Two warnings have been fixed: 1. code 'if( len <= 0xFFFFFFFF )' gave warning 'pointless integer comparison'. This was fixed by wraping the condition in '#if SIZE_MAX > 0xFFFFFFFF'. 2. code 'diff |= A[i] ^ B[i];' gave warning 'the order of volatile accesses is undefined in'. This was fixed by read the volatile data in temporary variables before the computation. Explain IAR warning on volatile access Consistent use of CMAKE_C_COMPILER_ID --- CMakeLists.txt | 25 ++++++++++++++++--------- include/mbedtls/ssl_internal.h | 8 +++++++- library/asn1write.c | 4 ++++ library/pkcs5.c | 2 ++ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2018d35c2b..bc506a82f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,8 +8,13 @@ option(ENABLE_PROGRAMS "Build mbed TLS programs." ON) option(UNSAFE_BUILD "Allow unsafe builds. These builds ARE NOT SECURE." OFF) +string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "GNU" CMAKE_COMPILER_IS_GNU "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "IAR" CMAKE_COMPILER_IS_IAR "${CMAKE_C_COMPILER_ID}") +string(REGEX MATCH "MSVC" CMAKE_COMPILER_IS_MSVC "${CMAKE_C_COMPILER_ID}") + # the test suites currently have compile errors with MSVC -if(MSVC) +if(CMAKE_COMPILER_IS_MSVC) option(ENABLE_TESTING "Build mbed TLS tests." OFF) else() option(ENABLE_TESTING "Build mbed TLS tests." ON) @@ -56,9 +61,7 @@ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build: None Debug Release Coverage ASan ASanDbg MemSan MemSanDbg Check CheckFull" FORCE) -string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}") - -if(CMAKE_COMPILER_IS_GNUCC) +if(CMAKE_COMPILER_IS_GNU) # some warnings we want are not available with old GCC versions # note: starting with CMake 2.8 we could use CMAKE_C_COMPILER_VERSION execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion @@ -77,7 +80,7 @@ if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_C_FLAGS_ASANDBG "-Werror -fsanitize=address -fno-common -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls ") set(CMAKE_C_FLAGS_CHECK "-Werror -Os") set(CMAKE_C_FLAGS_CHECKFULL "${CMAKE_C_FLAGS_CHECK} -Wcast-qual") -endif(CMAKE_COMPILER_IS_GNUCC) +endif(CMAKE_COMPILER_IS_GNU) if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -W -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow") @@ -91,16 +94,20 @@ if(CMAKE_COMPILER_IS_CLANG) set(CMAKE_C_FLAGS_CHECK "-Werror -Os") endif(CMAKE_COMPILER_IS_CLANG) -if(MSVC) +if(CMAKE_COMPILER_IS_IAR) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --warn_about_c_style_casts --warnings_are_errors -Ohz") +endif(CMAKE_COMPILER_IS_IAR) + +if(CMAKE_COMPILER_IS_MSVC) # Strictest warnings, and treat as errors set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX") -endif(MSVC) +endif(CMAKE_COMPILER_IS_MSVC) if(CMAKE_BUILD_TYPE STREQUAL "Coverage") - if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) + if(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG) set(CMAKE_SHARED_LINKER_FLAGS "--coverage") - endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) + endif(CMAKE_COMPILER_IS_GNU OR CMAKE_COMPILER_IS_CLANG) endif(CMAKE_BUILD_TYPE STREQUAL "Coverage") if(LIB_INSTALL_DIR) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 60b431a0f4..2b5a61637b 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -630,7 +630,13 @@ static inline int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t volatile unsigned char diff = 0; for( i = 0; i < n; i++ ) - diff |= A[i] ^ B[i]; + { + /* Read volatile data in order before computing diff. + * This avoids IAR compiler warning: + * 'the order of volatile accesses is undefined ..' */ + unsigned char x = A[i], y = B[i]; + diff |= x ^ y; + } return( diff ); } diff --git a/library/asn1write.c b/library/asn1write.c index c01c836550..72acdf3012 100644 --- a/library/asn1write.c +++ b/library/asn1write.c @@ -83,7 +83,9 @@ int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len return( 4 ); } +#if SIZE_MAX > 0xFFFFFFFF if( len <= 0xFFFFFFFF ) +#endif { if( *p - start < 5 ) return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); @@ -96,7 +98,9 @@ int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, size_t len return( 5 ); } +#if SIZE_MAX > 0xFFFFFFFF return( MBEDTLS_ERR_ASN1_INVALID_LENGTH ); +#endif } int mbedtls_asn1_write_tag( unsigned char **p, unsigned char *start, unsigned char tag ) diff --git a/library/pkcs5.c b/library/pkcs5.c index 440a174b5b..f04f0ab25e 100644 --- a/library/pkcs5.c +++ b/library/pkcs5.c @@ -249,8 +249,10 @@ int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *p memset( counter, 0, 4 ); counter[3] = 1; +#if UINT_MAX > 0xFFFFFFFF if( iteration_count > 0xFFFFFFFF ) return( MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA ); +#endif while( key_length ) { From 5dc8cfa8f1818aac205411dafce2db01817b990e Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Fri, 27 Apr 2018 14:45:49 +0100 Subject: [PATCH 0356/1100] CCM*: Add public API Interface for CCM* (described in IEEE Std 802.15.4.). --- include/mbedtls/ccm.h | 76 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/ccm.h b/include/mbedtls/ccm.h index 8585ce5e7c..24e13dd803 100644 --- a/include/mbedtls/ccm.h +++ b/include/mbedtls/ccm.h @@ -102,7 +102,6 @@ void mbedtls_ccm_free( mbedtls_ccm_context *ctx ); /** * \brief This function encrypts a buffer using CCM. * - * * \note The tag is written to a separate buffer. To concatenate * the \p tag with the \p output, as done in RFC-3610: * Counter with CBC-MAC (CCM), use @@ -132,6 +131,45 @@ int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, const unsigned char *input, unsigned char *output, unsigned char *tag, size_t tag_len ); +/** + * \brief This function encrypts a buffer using CCM*. + * + * \note The tag is written to a separate buffer. To concatenate + * the \p tag with the \p output, as done in RFC-3610: + * Counter with CBC-MAC (CCM), use + * \p tag = \p output + \p length, and make sure that the + * output buffer is at least \p length + \p tag_len wide. + * + * \note When using this function in a variable tag length context, + * the tag length has to be encoded into the \p iv passed to + * this function. + * + * \param ctx The CCM context to use for encryption. + * \param length The length of the input data in Bytes. + * \param iv Initialization vector (nonce). + * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param add The additional data field. + * \param add_len The length of additional data in Bytes. + * Must be less than 2^16 - 2^8. + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * Must be at least \p length Bytes wide. + * \param tag The buffer holding the tag. + * \param tag_len The length of the tag to generate in Bytes: + * 0, 4, 6, 8, 10, 12, 14 or 16. + * + * \warning Passing 0 as \p tag_len means that the message is no + * longer authenticated. + * + * \return \c 0 on success. + * \return A CCM or cipher-specific error code on failure. + */ +int mbedtls_ccm_star_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + unsigned char *tag, size_t tag_len ); + /** * \brief This function performs a CCM authenticated decryption of a * buffer. @@ -160,6 +198,42 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, const unsigned char *input, unsigned char *output, const unsigned char *tag, size_t tag_len ); +/** + * \brief This function performs a CCM* authenticated decryption of a + * buffer. + * + * \note When using this function in a variable tag length context, + * the tag length has to be decoded from \p iv and passed to + * this function as \p tag_len. (\p tag needs to be adjusted + * accordingly.) + * + * \param ctx The CCM context to use for decryption. + * \param length The length of the input data in Bytes. + * \param iv Initialization vector. + * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param add The additional data field. + * \param add_len The length of additional data in Bytes. + * Must be less than 2^16 - 2^8. + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * Must be at least \p length Bytes wide. + * \param tag The buffer holding the tag. + * \param tag_len The length of the tag in Bytes. + * 0, 4, 6, 8, 10, 12, 14 or 16. + * + * \warning Passing 0 as \p tag_len means that the message is no + * longer authenticated. + * + * \return \c 0 on success. This indicates that the message is + * authentic. + * \return #MBEDTLS_ERR_CCM_AUTH_FAILED if the tag does not match. + * \return A cipher-specific error code on calculation failure. + */ +int mbedtls_ccm_star_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + const unsigned char *tag, size_t tag_len ); #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) /** From b5734a28d9bc49e8dd6c385694f1002017f608dc Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Mon, 14 May 2018 14:31:49 +0100 Subject: [PATCH 0357/1100] CCM*: Add implementation --- library/ccm.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/library/ccm.c b/library/ccm.c index cf6520935e..b195a71655 100644 --- a/library/ccm.c +++ b/library/ccm.c @@ -154,7 +154,13 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, * 'length' checked later (when writing it to the first block) */ if( tag_len < 4 || tag_len > 16 || tag_len % 2 != 0 ) - return( MBEDTLS_ERR_CCM_BAD_INPUT ); + { + /* + * Loosen the requirements to enable support for CCM* (IEEE 802.15.4) + */ + if( tag_len != 0 ) + return( MBEDTLS_ERR_CCM_BAD_INPUT ); + } /* Also implies q is within bounds */ if( iv_len < 7 || iv_len > 13 ) @@ -302,7 +308,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, /* * Authenticated encryption */ -int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, +int mbedtls_ccm_star_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, @@ -312,10 +318,23 @@ int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, add, add_len, input, output, tag, tag_len ) ); } +int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + unsigned char *tag, size_t tag_len ) +{ + if( tag_len == 0 ) + return( MBEDTLS_ERR_CCM_BAD_INPUT ); + + return( mbedtls_ccm_star_encrypt_and_tag( ctx, length, iv, iv_len, add, + add_len, input, output, tag, tag_len ) ); +} + /* * Authenticated decryption */ -int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, +int mbedtls_ccm_star_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, const unsigned char *iv, size_t iv_len, const unsigned char *add, size_t add_len, const unsigned char *input, unsigned char *output, @@ -346,6 +365,18 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, return( 0 ); } +int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + const unsigned char *tag, size_t tag_len ) +{ + if( tag_len == 0 ) + return( MBEDTLS_ERR_CCM_BAD_INPUT ); + + return( mbedtls_ccm_star_auth_decrypt( ctx, length, iv, iv_len, add, + add_len, input, output, tag, tag_len ) ); +} #endif /* !MBEDTLS_CCM_ALT */ #if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) From 95ab93d41733d468f72ea29cecd2d73055626027 Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Mon, 14 May 2018 14:32:41 +0100 Subject: [PATCH 0358/1100] CCM*: Add minimal tests --- tests/suites/test_suite_ccm.data | 9 ++++++ tests/suites/test_suite_ccm.function | 41 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/tests/suites/test_suite_ccm.data b/tests/suites/test_suite_ccm.data index 90ba42d83c..ac66812cc4 100644 --- a/tests/suites/test_suite_ccm.data +++ b/tests/suites/test_suite_ccm.data @@ -41,6 +41,15 @@ ccm_lengths:5:10:65281:8:MBEDTLS_ERR_CCM_BAD_INPUT CCM lengths #8 msg too long for this IV length (2^16, q = 2) ccm_lengths:65536:13:5:8:MBEDTLS_ERR_CCM_BAD_INPUT +CCM lengths #9 tag length 0 +ccm_lengths:5:10:5:0:MBEDTLS_ERR_CCM_BAD_INPUT + +CCM* fixed tag lengths #1 all OK +ccm_star_lengths:5:10:5:8:0 + +CCM* fixed tag lengths #2 all OK - tag length 0 +ccm_star_lengths:5:10:5:0:0 + CCM encrypt and tag RFC 3610 #1 depends_on:MBEDTLS_AES_C mbedtls_ccm_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E":"00000003020100A0A1A2A3A4A5":"0001020304050607":"588C979A61C663D2F066D0C2C0F989806D5F6B61DAC38417E8D12CFDF926E0" diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index 2f5c77c2c7..6d685438e1 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -74,6 +74,47 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_AES_C */ +void ccm_star_lengths( int msg_len, int iv_len, int add_len, int tag_len, + int res ) +{ + mbedtls_ccm_context ctx; + unsigned char key[16]; + unsigned char msg[10]; + unsigned char iv[14]; + unsigned char add[10]; + unsigned char out[10]; + unsigned char tag[18]; + int decrypt_ret; + + mbedtls_ccm_init( &ctx ); + + memset( key, 0, sizeof( key ) ); + memset( msg, 0, sizeof( msg ) ); + memset( iv, 0, sizeof( iv ) ); + memset( add, 0, sizeof( add ) ); + memset( out, 0, sizeof( out ) ); + memset( tag, 0, sizeof( tag ) ); + + TEST_ASSERT( mbedtls_ccm_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + key, 8 * sizeof( key ) ) == 0 ); + + TEST_ASSERT( mbedtls_ccm_star_encrypt_and_tag( &ctx, msg_len, iv, iv_len, + add, add_len, msg, out, tag, tag_len ) == res ); + + decrypt_ret = mbedtls_ccm_star_auth_decrypt( &ctx, msg_len, iv, iv_len, add, + add_len, msg, out, tag, tag_len ); + + if( res == 0 && tag_len != 0 ) + TEST_ASSERT( decrypt_ret == MBEDTLS_ERR_CCM_AUTH_FAILED ); + else + TEST_ASSERT( decrypt_ret == res ); + +exit: + mbedtls_ccm_free( &ctx ); +} +/* END_CASE */ + /* BEGIN_CASE */ void mbedtls_ccm_encrypt_and_tag( int cipher_id, char *key_hex, char *msg_hex, From 6b4bd3dcc4caa2d555eb087e97e3692e7ce59bfe Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Tue, 29 May 2018 11:30:26 +0100 Subject: [PATCH 0359/1100] CCM*: Improve documentation --- include/mbedtls/ccm.h | 44 +++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/include/mbedtls/ccm.h b/include/mbedtls/ccm.h index 24e13dd803..4881db7e1d 100644 --- a/include/mbedtls/ccm.h +++ b/include/mbedtls/ccm.h @@ -14,6 +14,18 @@ *
  • Nonce - A unique value that is assigned to the payload and the * associated data.
  • * + * Definition of CCM: + * http://csrc.nist.gov/publications/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf + * RFC 3610 "Counter with CBC-MAC (CCM)" + * + * Related: + * RFC 5116 "An Interface and Algorithms for Authenticated Encryption" + * + * Definition of CCM*: + * IEEE 802.15.4 - IEEE Standard for Local and metropolitan area networks + * Integer representation is fixed most-significant-octet-first order and + * the representation of octets is most-significant-bit-first order. This is + * consistent with RFC 3610. */ /* * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved @@ -111,15 +123,17 @@ void mbedtls_ccm_free( mbedtls_ccm_context *ctx ); * \param ctx The CCM context to use for encryption. * \param length The length of the input data in Bytes. * \param iv Initialization vector (nonce). - * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. * \param add The additional data field. * \param add_len The length of additional data in Bytes. * Must be less than 2^16 - 2^8. * \param input The buffer holding the input data. * \param output The buffer holding the output data. * Must be at least \p length Bytes wide. - * \param tag The buffer holding the tag. - * \param tag_len The length of the tag to generate in Bytes: + * \param tag The buffer holding the authentication field. + * \param tag_len The length of the authentication field to generate in Bytes: * 4, 6, 8, 10, 12, 14 or 16. * * \return \c 0 on success. @@ -147,15 +161,17 @@ int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, * \param ctx The CCM context to use for encryption. * \param length The length of the input data in Bytes. * \param iv Initialization vector (nonce). - * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. * \param add The additional data field. * \param add_len The length of additional data in Bytes. * Must be less than 2^16 - 2^8. * \param input The buffer holding the input data. * \param output The buffer holding the output data. * Must be at least \p length Bytes wide. - * \param tag The buffer holding the tag. - * \param tag_len The length of the tag to generate in Bytes: + * \param tag The buffer holding the authentication field. + * \param tag_len The length of the authentication field to generate in Bytes: * 0, 4, 6, 8, 10, 12, 14 or 16. * * \warning Passing 0 as \p tag_len means that the message is no @@ -177,15 +193,17 @@ int mbedtls_ccm_star_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, * \param ctx The CCM context to use for decryption. * \param length The length of the input data in Bytes. * \param iv Initialization vector. - * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. * \param add The additional data field. * \param add_len The length of additional data in Bytes. * Must be less than 2^16 - 2^8. * \param input The buffer holding the input data. * \param output The buffer holding the output data. * Must be at least \p length Bytes wide. - * \param tag The buffer holding the tag. - * \param tag_len The length of the tag in Bytes. + * \param tag The buffer holding the authentication field. + * \param tag_len The length of the authentication field in Bytes. * 4, 6, 8, 10, 12, 14 or 16. * * \return \c 0 on success. This indicates that the message is authentic. @@ -210,15 +228,17 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, * \param ctx The CCM context to use for decryption. * \param length The length of the input data in Bytes. * \param iv Initialization vector. - * \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. * \param add The additional data field. * \param add_len The length of additional data in Bytes. * Must be less than 2^16 - 2^8. * \param input The buffer holding the input data. * \param output The buffer holding the output data. * Must be at least \p length Bytes wide. - * \param tag The buffer holding the tag. - * \param tag_len The length of the tag in Bytes. + * \param tag The buffer holding the authentication field. + * \param tag_len The length of the authentication field in Bytes. * 0, 4, 6, 8, 10, 12, 14 or 16. * * \warning Passing 0 as \p tag_len means that the message is no From 997e85c049c122357387e4c077d1045b8142e819 Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Tue, 29 May 2018 11:33:45 +0100 Subject: [PATCH 0360/1100] CCM*: Remove nested if --- library/ccm.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/library/ccm.c b/library/ccm.c index b195a71655..32f8bb098d 100644 --- a/library/ccm.c +++ b/library/ccm.c @@ -152,14 +152,12 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, * Check length requirements: SP800-38C A.1 * Additional requirement: a < 2^16 - 2^8 to simplify the code. * 'length' checked later (when writing it to the first block) + * + * Also, loosen the requirements to enable support for CCM* (IEEE 802.15.4). */ - if( tag_len < 4 || tag_len > 16 || tag_len % 2 != 0 ) + if( tag_len == 2 || tag_len > 16 || tag_len % 2 != 0 ) { - /* - * Loosen the requirements to enable support for CCM* (IEEE 802.15.4) - */ - if( tag_len != 0 ) - return( MBEDTLS_ERR_CCM_BAD_INPUT ); + return( MBEDTLS_ERR_CCM_BAD_INPUT ); } /* Also implies q is within bounds */ From 20b4408fbd4c5663f73a12d05a31722a8f4a18ab Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 29 May 2018 14:06:49 +0200 Subject: [PATCH 0361/1100] Fix Lucky13 attack protection when using HMAC-SHA-384 As a protection against the Lucky Thirteen attack, the TLS code for CBC decryption in encrypt-then-MAC mode performs extra MAC calculations to compensate for variations in message size due to padding. The amount of extra MAC calculation to perform was based on the assumption that the bulk of the time is spent in processing 64-byte blocks, which is correct for most supported hashes but not for SHA-384. Correct the amount of extra work for SHA-384 (and SHA-512 which is currently not used in TLS, and MD2 although no one should care about that). --- library/ssl_tls.c | 62 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index bc9dc77e16..6fdfb6349b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1985,20 +1985,66 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) { /* * Process MAC and always update for padlen afterwards to make - * total time independent of padlen - * - * extra_run compensates MAC check for padlen + * total time independent of padlen. * * Known timing attacks: * - Lucky Thirteen (http://www.isg.rhul.ac.uk/tls/TLStiming.pdf) * - * We use ( ( Lx + 8 ) / 64 ) to handle 'negative Lx' values - * correctly. (We round down instead of up, so -56 is the correct - * value for our calculations instead of -55) + * To compensate for different timings for the MAC calculation + * depending on how much padding was removed (which is determined + * by padlen), process extra_run more blocks through the hash + * function. + * + * The formula in the paper is + * extra_run = ceil( (L1-55) / 64 ) - ceil( (L2-55) / 64 ) + * where L1 is the size of the header plus the decrypted message + * plus CBC padding and L2 is the size of the header plus the + * decrypted message. This is for an underlying hash function + * with 64-byte blocks. + * We use ( (Lx+8) / 64 ) to handle 'negative Lx' values + * correctly. We round down instead of up, so -56 is the correct + * value for our calculations instead of -55. + * + * Repeat the formula rather than defining a block_size variable + * so that the code only uses division by a constant, not division + * by a variable. */ size_t j, extra_run = 0; - extra_run = ( 13 + ssl->in_msglen + padlen + 8 ) / 64 - - ( 13 + ssl->in_msglen + 8 ) / 64; + switch( ssl->transform_in->ciphersuite_info->mac ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + /* no size prepended, 64-byte compression blocks */ + extra_run = ( 13 + ssl->in_msglen + padlen ) / 64 - + ( 13 + ssl->in_msglen ) / 64; + break; +#endif +#if defined(MBEDTLS_MD4_C) || defined(MBEDTLS_MD5_C) || \ + defined(MBEDTLS_SHA1_C) || defined(MBEDTLS_SHA224_C) || \ + defined(MBEDTLS_SHA256_C) || defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_MD4: + case MBEDTLS_MD_MD5: + case MBEDTLS_MD_SHA1: + case MBEDTLS_MD_SHA224: + case MBEDTLS_MD_SHA256: + case MBEDTLS_MD_RIPEMD160: + /* 8 bytes of message size, 64-byte compression blocks */ + extra_run = ( 13 + ssl->in_msglen + padlen + 8 ) / 64 - + ( 13 + ssl->in_msglen + 8 ) / 64; + break; +#endif +#if defined(MBEDTLS_SHA384_C) || defined(MBEDTLS_SHA512_C) + case MBEDTLS_MD_SHA384: + case MBEDTLS_MD_SHA512: + /* 16 bytes of message size, 128-byte compression blocks */ + extra_run = ( 13 + ssl->in_msglen + padlen + 16 ) / 128 - + ( 13 + ssl->in_msglen + 16 ) / 128; + break; +#endif + default: + MBEDTLS_SSL_DEBUG_MSG( 1, ( "unsupported HMAC hash" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } extra_run &= correct * 0xFF; From 143b319773c74740b8d3a4010fabd64859168c6d Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Wed, 30 May 2018 13:57:29 +0100 Subject: [PATCH 0362/1100] CCM*: Make documentation consistent --- include/mbedtls/ccm.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ccm.h b/include/mbedtls/ccm.h index 4881db7e1d..5d727e7cca 100644 --- a/include/mbedtls/ccm.h +++ b/include/mbedtls/ccm.h @@ -192,7 +192,7 @@ int mbedtls_ccm_star_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, * * \param ctx The CCM context to use for decryption. * \param length The length of the input data in Bytes. - * \param iv Initialization vector. + * \param iv Initialization vector (nonce). * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, * or 13. The length L of the message length field is * 15 - \p iv_len. @@ -227,7 +227,7 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, * * \param ctx The CCM context to use for decryption. * \param length The length of the input data in Bytes. - * \param iv Initialization vector. + * \param iv Initialization vector (nonce). * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, * or 13. The length L of the message length field is * 15 - \p iv_len. @@ -244,8 +244,7 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, * \warning Passing 0 as \p tag_len means that the message is no * longer authenticated. * - * \return \c 0 on success. This indicates that the message is - * authentic. + * \return \c 0 on success. * \return #MBEDTLS_ERR_CCM_AUTH_FAILED if the tag does not match. * \return A cipher-specific error code on calculation failure. */ From 4c579391b14f2af25fa8987e3966375474d8301f Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Wed, 30 May 2018 13:58:38 +0100 Subject: [PATCH 0363/1100] CCM*: Remove superfluous braces --- library/ccm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/library/ccm.c b/library/ccm.c index 32f8bb098d..804eaf80f1 100644 --- a/library/ccm.c +++ b/library/ccm.c @@ -156,9 +156,7 @@ static int ccm_auth_crypt( mbedtls_ccm_context *ctx, int mode, size_t length, * Also, loosen the requirements to enable support for CCM* (IEEE 802.15.4). */ if( tag_len == 2 || tag_len > 16 || tag_len % 2 != 0 ) - { return( MBEDTLS_ERR_CCM_BAD_INPUT ); - } /* Also implies q is within bounds */ if( iv_len < 7 || iv_len > 13 ) From 0daf4caaf8ffb4fc82aa0f43a2a53a0739d40a4d Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Tue, 29 May 2018 14:12:26 +0100 Subject: [PATCH 0364/1100] Add test vectors for CCM* --- tests/suites/test_suite_ccm.data | 24 +++++ tests/suites/test_suite_ccm.function | 137 +++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/tests/suites/test_suite_ccm.data b/tests/suites/test_suite_ccm.data index ac66812cc4..cad40d59c8 100644 --- a/tests/suites/test_suite_ccm.data +++ b/tests/suites/test_suite_ccm.data @@ -50,6 +50,30 @@ ccm_star_lengths:5:10:5:8:0 CCM* fixed tag lengths #2 all OK - tag length 0 ccm_star_lengths:5:10:5:0:0 +CCM* encrypt and tag #1 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"":"ACDE480000000001":"00000005":2:"08D0842143010000000048DEAC020500000055CF000051525354":"223BC1EC841AB553":0 + +CCM* encrypt and tag #2 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"61626364":"ACDE480000000001":"00000005":4:"69DC842143020000000048DEAC010000000048DEAC0405000000":"D43E022B":0 + +CCM* encrypt and tag #3 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"CE":"ACDE480000000001":"00000005":6:"2BDC842143020000000048DEACFFFF010000000048DEAC060500000001":"D84FDE529061F9C6F1":0 + +CCM* auth decrypt tag #1 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"223BC1EC841AB553":"ACDE480000000001":"00000005":2:"08D0842143010000000048DEAC020500000055CF000051525354":"":0 + +CCM* auth decrypt tag #2 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"D43E022B":"ACDE480000000001":"00000005":4:"69DC842143020000000048DEAC010000000048DEAC0405000000":"61626364":0 + +CCM* auth decrypt tag #3 +depends_on:MBEDTLS_AES_C +mbedtls_ccm_star_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"D84FDE529061F9C6F1":"ACDE480000000001":"00000005":6:"2BDC842143020000000048DEACFFFF010000000048DEAC060500000001":"CE":0 + CCM encrypt and tag RFC 3610 #1 depends_on:MBEDTLS_AES_C mbedtls_ccm_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E":"00000003020100A0A1A2A3A4A5":"0001020304050607":"588C979A61C663D2F066D0C2C0F989806D5F6B61DAC38417E8D12CFDF926E0" diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index 6d685438e1..58c8569850 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -228,3 +228,140 @@ exit: mbedtls_ccm_free( &ctx ); } /* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_ccm_star_encrypt_and_tag( int cipher_id, + char *key_hex, char *msg_hex, + char *source_address_hex, char *frame_counter_hex, + int sec_level, char *add_hex, + char *result_hex, int output_ret ) +{ + unsigned char key[32]; + unsigned char msg[50]; + unsigned char iv[13]; + unsigned char add[32]; + unsigned char result[50]; + unsigned char source_address[8]; + unsigned char frame_counter[4]; + mbedtls_ccm_context ctx; + size_t i, key_len, msg_len, iv_len, add_len, result_len, source_address_len, frame_counter_len, tag_len; + int ret; + + mbedtls_ccm_init( &ctx ); + + memset( key, 0x00, sizeof( key ) ); + memset( msg, 0x00, sizeof( msg ) ); + memset( iv, 0x00, sizeof( iv ) ); + memset( add, 0x00, sizeof( add ) ); + memset( result, 0x00, sizeof( result ) ); + memset( source_address, 0x00, sizeof( source_address ) ); + memset( frame_counter, 0x00, sizeof( frame_counter ) ); + + key_len = unhexify( key, key_hex ); + msg_len = unhexify( msg, msg_hex ); + add_len = unhexify( add, add_hex ); + result_len = unhexify( result, result_hex ); + source_address_len = unhexify( source_address, source_address_hex ); + frame_counter_len = unhexify( frame_counter, frame_counter_hex ); + + if( sec_level % 4 == 0) + tag_len = 0; + else + tag_len = 1 << ( sec_level % 4 + 1); + + for( i = 0; i < source_address_len; i++ ) + iv[i] = source_address[i]; + + for( i = 0; i < frame_counter_len; i++ ) + iv[source_address_len + i] = frame_counter[i]; + + iv[source_address_len + frame_counter_len] = sec_level; + iv_len = sizeof( iv ); + + TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); + + ret = mbedtls_ccm_star_encrypt_and_tag( &ctx, msg_len, iv, iv_len, + add, add_len, msg, msg, msg + msg_len, tag_len ); + + TEST_ASSERT( ret == output_ret ); + + TEST_ASSERT( memcmp( msg, result, result_len ) == 0 ); + + /* Check we didn't write past the end */ + TEST_ASSERT( msg[result_len] == 0 && msg[result_len + 1] == 0 ); + +exit: + mbedtls_ccm_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_ccm_star_auth_decrypt( int cipher_id, + char *key_hex, char *msg_hex, + char *source_address_hex, char *frame_counter_hex, + int sec_level, char *add_hex, + char *result_hex, int output_ret ) +{ + unsigned char key[32]; + unsigned char msg[50]; + unsigned char iv[13]; + unsigned char add[32]; + unsigned char tag[16]; + unsigned char result[50]; + unsigned char source_address[8]; + unsigned char frame_counter[4]; + mbedtls_ccm_context ctx; + size_t i, key_len, msg_len, iv_len, add_len, tag_len, result_len, source_address_len, frame_counter_len; + int ret; + + mbedtls_ccm_init( &ctx ); + + memset( key, 0x00, sizeof( key ) ); + memset( msg, 0x00, sizeof( msg ) ); + memset( iv, 0x00, sizeof( iv ) ); + memset( add, 0x00, sizeof( add ) ); + memset( result, 0x00, sizeof( result ) ); + memset( source_address, 0x00, sizeof( source_address ) ); + memset( frame_counter, 0x00, sizeof( frame_counter ) ); + memset( tag, 0x00, sizeof( tag ) ); + + key_len = unhexify( key, key_hex ); + msg_len = unhexify( msg, msg_hex ); + add_len = unhexify( add, add_hex ); + result_len = unhexify( result, result_hex ); + source_address_len = unhexify( source_address, source_address_hex ); + frame_counter_len = unhexify( frame_counter, frame_counter_hex ); + + if( sec_level % 4 == 0) + tag_len = 0; + else + tag_len = 1 << ( sec_level % 4 + 1); + + for( i = 0; i < source_address_len; i++ ) + iv[i] = source_address[i]; + + for( i = 0; i < frame_counter_len; i++ ) + iv[source_address_len + i] = frame_counter[i]; + + iv[source_address_len + frame_counter_len] = sec_level; + iv_len = sizeof( iv ); + + msg_len -= tag_len; + memcpy( tag, msg + msg_len, tag_len ); + + TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); + + ret = mbedtls_ccm_star_auth_decrypt( &ctx, msg_len, iv, iv_len, + add, add_len, msg, msg, msg + msg_len, tag_len ); + + TEST_ASSERT( ret == output_ret ); + + TEST_ASSERT( memcmp( msg, result, result_len ) == 0 ); + + /* Check we didn't write past the end (where the original tag is) */ + TEST_ASSERT( memcmp( msg + msg_len, tag, tag_len ) == 0 ); + +exit: + mbedtls_ccm_free( &ctx ); +} +/* END_CASE */ From 02b9329f2b10c24480aedb39b843dfb1611a8190 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 1 Jun 2018 14:38:45 +0200 Subject: [PATCH 0365/1100] Fix MSan build without MBEDTLS_TIMING_C When MBEDTLS_TIMING_C was not defined in config.h, but the MemSan memory sanitizer was activated, entropy_poll.c used memset without declaring it. Fix this by including string.h unconditionally. --- library/entropy_poll.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/entropy_poll.c b/library/entropy_poll.c index a116e605d2..75e243ac8c 100644 --- a/library/entropy_poll.c +++ b/library/entropy_poll.c @@ -25,13 +25,14 @@ #include MBEDTLS_CONFIG_FILE #endif +#include + #if defined(MBEDTLS_ENTROPY_C) #include "mbedtls/entropy.h" #include "mbedtls/entropy_poll.h" #if defined(MBEDTLS_TIMING_C) -#include #include "mbedtls/timing.h" #endif #if defined(MBEDTLS_HAVEGE_C) From d72700a8ed22511d26187013a88653e199a2e7ef Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 1 Jun 2018 19:11:55 +0100 Subject: [PATCH 0366/1100] Add ChangeLog entry for PR#1651 --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 348864c0e9..093b3a80b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,10 @@ API Changes Therefore, mbedtls_platform_zeroize() is moved to the platform module to facilitate testing and maintenance. +Bugfix + * Fix an issue with MicroBlaze support in bn_mul.h which was causing the + build to fail. Found by zv-io. Fixes #1651. + = mbed TLS 2.9.0 branch released 2018-04-30 Security From 1bd9d58b21b5b19d70fd262f80351a8c48ea941b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 4 Jun 2018 11:58:44 +0200 Subject: [PATCH 0367/1100] Clarify comment about integer division by a variable --- library/ssl_tls.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 6fdfb6349b..e1b8f9c5b4 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2005,9 +2005,10 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) * correctly. We round down instead of up, so -56 is the correct * value for our calculations instead of -55. * - * Repeat the formula rather than defining a block_size variable - * so that the code only uses division by a constant, not division - * by a variable. + * Repeat the formula rather than defining a block_size variable. + * This avoids requiring division by a variable at runtime + * (which would be marginally less efficient and would require + * linking an extra division function in some builds). */ size_t j, extra_run = 0; switch( ssl->transform_in->ciphersuite_info->mac ) From a7fe25d5a53bd930a56b0980d214914cb7f6821b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 4 Jun 2018 12:01:18 +0200 Subject: [PATCH 0368/1100] Remove tests of #define's that don't exist --- library/ssl_tls.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e1b8f9c5b4..893429d78b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2021,9 +2021,9 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) break; #endif #if defined(MBEDTLS_MD4_C) || defined(MBEDTLS_MD5_C) || \ - defined(MBEDTLS_SHA1_C) || defined(MBEDTLS_SHA224_C) || \ - defined(MBEDTLS_SHA256_C) || defined(MBEDTLS_RIPEMD160_C) case MBEDTLS_MD_MD4: + defined(MBEDTLS_SHA1_C) || defined(MBEDTLS_SHA256_C) \ + defined(MBEDTLS_RIPEMD160_C) case MBEDTLS_MD_MD5: case MBEDTLS_MD_SHA1: case MBEDTLS_MD_SHA224: @@ -2034,7 +2034,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) ( 13 + ssl->in_msglen + 8 ) / 64; break; #endif -#if defined(MBEDTLS_SHA384_C) || defined(MBEDTLS_SHA512_C) +#if defined(MBEDTLS_SHA512_C) case MBEDTLS_MD_SHA384: case MBEDTLS_MD_SHA512: /* 16 bytes of message size, 128-byte compression blocks */ From 5c38984fa70bf4998bacea1251003d3dc61f915c Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 4 Jun 2018 12:02:43 +0200 Subject: [PATCH 0369/1100] Use our habitual INTERNAL_ERROR debug message --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 893429d78b..8e855a1209 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2043,7 +2043,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) break; #endif default: - MBEDTLS_SSL_DEBUG_MSG( 1, ( "unsupported HMAC hash" ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } From 26c3b0a4b18fc7c24a00499d3f5a909509ce2bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:06:23 +0200 Subject: [PATCH 0370/1100] Fix return type of internal function Fixes incomplete change in f4f01b6b7ad1 --- library/chachapoly.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/chachapoly.c b/library/chachapoly.c index ba3cf3c0c7..8f785883b9 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -74,7 +74,7 @@ static int chachapoly_pad_aad( mbedtls_chachapoly_context *ctx ) * * \param ctx The ChaCha20-Poly1305 context. */ -static void chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) +static int chachapoly_pad_ciphertext( mbedtls_chachapoly_context *ctx ) { uint32_t partial_block_len = (uint32_t) ( ctx->ciphertext_len % 16U ); unsigned char zeroes[15]; From 3dc62a0a9b6776ca1f58724c5be01c77012edf94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:18:19 +0200 Subject: [PATCH 0371/1100] chachapoly: force correct mode for integrated API Allowing DECRYPT with crypt_and_tag is a risk as people might fail to check the tag correctly (or at all). So force them to use auth_decrypt() instead. See also https://github.com/ARMmbed/mbedtls/pull/1668 --- include/mbedtls/chachapoly.h | 21 ++++----- library/chachapoly.c | 51 +++++++++++++-------- library/cipher.c | 3 +- programs/test/benchmark.c | 5 +- tests/suites/test_suite_chachapoly.function | 27 ++++------- 5 files changed, 53 insertions(+), 54 deletions(-) diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index be10cfd324..649749a015 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -269,7 +269,7 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, /** * \brief This function performs a complete ChaCha20-Poly1305 - * operation with the previously-set key. + * authenticated encryption with the previously-set key. * * \note Before using this function, you must set the key with * \c mbedtls_chachapoly_setkey(). @@ -280,8 +280,6 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, * and key. * * \param ctx The ChaCha20-Poly1305 context to use (holds the key). - * \param mode The operation to perform: #MBEDTLS_CHACHAPOLY_ENCRYPT or - * #MBEDTLS_CHACHAPOLY_DECRYPT. * \param length The length (in bytes) of the data to encrypt or decrypt. * \param nonce The 96-bit (12 bytes) nonce/IV to use. * \param aad The buffer containing the additional authenticated data (AAD). @@ -297,15 +295,14 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA * if one or more of the required parameters are NULL. */ -int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, - mbedtls_chachapoly_mode_t mode, - size_t length, - const unsigned char nonce[12], - const unsigned char *aad, - size_t aad_len, - const unsigned char *input, - unsigned char *output, - unsigned char tag[16] ); +int mbedtls_chachapoly_encrypt_and_tag( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char *input, + unsigned char *output, + unsigned char tag[16] ); /** * \brief This function performs a complete ChaCha20-Poly1305 diff --git a/library/chachapoly.c b/library/chachapoly.c index 8f785883b9..80c1ebf8f6 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -311,15 +311,15 @@ int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, return( ret ); } -int mbedtls_chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, - mbedtls_chachapoly_mode_t mode, - size_t length, - const unsigned char nonce[12], - const unsigned char *aad, - size_t aad_len, - const unsigned char *input, - unsigned char *output, - unsigned char tag[16] ) +static int chachapoly_crypt_and_tag( mbedtls_chachapoly_context *ctx, + mbedtls_chachapoly_mode_t mode, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char *input, + unsigned char *output, + unsigned char tag[16] ) { int ret; @@ -341,6 +341,20 @@ cleanup: return( ret ); } +int mbedtls_chachapoly_encrypt_and_tag( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char *input, + unsigned char *output, + unsigned char tag[16] ) +{ + return( chachapoly_crypt_and_tag( ctx, MBEDTLS_CHACHAPOLY_ENCRYPT, + length, nonce, aad, aad_len, + input, output, tag ) ); +} + int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, size_t length, const unsigned char nonce[12], @@ -358,7 +372,7 @@ int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, if( tag == NULL ) return( MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - if( ( ret = mbedtls_chachapoly_crypt_and_tag( ctx, + if( ( ret = chachapoly_crypt_and_tag( ctx, MBEDTLS_CHACHAPOLY_DECRYPT, length, nonce, aad, aad_len, input, output, check_tag ) ) != 0 ) { @@ -499,15 +513,14 @@ int mbedtls_chachapoly_self_test( int verbose ) ret = mbedtls_chachapoly_setkey( &ctx, test_key[i] ); ASSERT( 0 == ret, ( "setkey() error code: %i\n", ret ) ); - ret = mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, - test_input_len[i], - test_nonce[i], - test_aad[i], - test_aad_len[i], - test_input[i], - output, - mac ); + ret = mbedtls_chachapoly_encrypt_and_tag( &ctx, + test_input_len[i], + test_nonce[i], + test_aad[i], + test_aad_len[i], + test_input[i], + output, + mac ); ASSERT( 0 == ret, ( "crypt_and_tag() error code: %i\n", ret ) ); diff --git a/library/cipher.c b/library/cipher.c index cf10094f66..5a96e2bc71 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -992,8 +992,7 @@ int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, } *olen = ilen; - return( mbedtls_chachapoly_crypt_and_tag( ctx->cipher_ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + return( mbedtls_chachapoly_encrypt_and_tag( ctx->cipher_ctx, ilen, iv, ad, ad_len, input, output, tag ) ); } #endif /* MBEDTLS_CHACHAPOLY_C */ diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 3e9ab0a29b..f266b82f42 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -491,9 +491,8 @@ int main( int argc, char *argv[] ) mbedtls_chachapoly_setkey( &chachapoly, tmp ); TIME_AND_TSC( title, - mbedtls_chachapoly_crypt_and_tag( &chachapoly, - MBEDTLS_CHACHAPOLY_ENCRYPT, BUFSIZE, tmp, - NULL, 0, buf, buf, tmp ) ); + mbedtls_chachapoly_encrypt_and_tag( &chachapoly, + BUFSIZE, tmp, NULL, 0, buf, buf, tmp ) ); mbedtls_chachapoly_free( &chachapoly ); } diff --git a/tests/suites/test_suite_chachapoly.function b/tests/suites/test_suite_chachapoly.function index 7baa229956..95dfd8a910 100644 --- a/tests/suites/test_suite_chachapoly.function +++ b/tests/suites/test_suite_chachapoly.function @@ -48,8 +48,7 @@ void mbedtls_chachapoly_enc( char *hex_key_string, char *hex_nonce_string, char TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, key_str ) == 0 ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, input_len, nonce_str, aad_str, aad_len, input_str, output, mac ) == 0 ); @@ -149,38 +148,32 @@ void chachapoly_bad_params() TEST_ASSERT( mbedtls_chachapoly_setkey( &ctx, NULL ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( NULL, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( NULL, 0, nonce, aad, 0, input, output, mac ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, 0, NULL, aad, 0, input, output, mac ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, 0, nonce, NULL, aad_len, input, output, mac ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, input_len, nonce, aad, 0, NULL, output, mac ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, input_len, nonce, aad, 0, input, NULL, mac ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, 0, nonce, aad, 0, input, output, NULL ) @@ -217,8 +210,7 @@ void chachapoly_bad_params() mac, input, NULL ) == MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, 0, nonce, aad, aad_len, NULL, NULL, mac ) @@ -229,8 +221,7 @@ void chachapoly_bad_params() mac, NULL, NULL ) == 0 ); - TEST_ASSERT( mbedtls_chachapoly_crypt_and_tag( &ctx, - MBEDTLS_CHACHAPOLY_ENCRYPT, + TEST_ASSERT( mbedtls_chachapoly_encrypt_and_tag( &ctx, input_len, nonce, NULL, 0, input, output, mac ) From e533b221536d1307278584b65065dc1df5b6cb79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:23:19 +0200 Subject: [PATCH 0372/1100] Fix ordering and repetitions in config.h --- include/mbedtls/config.h | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 69d2b63b58..663c984175 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -269,13 +269,13 @@ * digests and ciphers instead. * */ -//#define MBEDTLS_CHACHAPOLY_ALT //#define MBEDTLS_AES_ALT //#define MBEDTLS_ARC4_ALT //#define MBEDTLS_BLOWFISH_ALT //#define MBEDTLS_CAMELLIA_ALT //#define MBEDTLS_CCM_ALT //#define MBEDTLS_CHACHA20_ALT +//#define MBEDTLS_CHACHAPOLY_ALT //#define MBEDTLS_CMAC_ALT //#define MBEDTLS_DES_ALT //#define MBEDTLS_DHM_ALT @@ -1689,17 +1689,6 @@ */ #define MBEDTLS_AES_C -/** - * \def MBEDTLS_CHACHAPOLY_C - * - * Enable the ChaCha20-Poly1305 AEAD algorithm. - * - * Module: library/chachapoly.c - * - * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C - */ -#define MBEDTLS_CHACHAPOLY_C - /** * \def MBEDTLS_ARC4_C * @@ -1849,16 +1838,6 @@ */ #define MBEDTLS_CAMELLIA_C -/** - * \def MBEDTLS_CHACHA20_C - * - * Enable the ChaCha20 block cipher. - * - * Module: library/chacha20.c - * Caller: library/chachapoly.c - */ -#define MBEDTLS_CHACHA20_C - /** * \def MBEDTLS_CCM_C * @@ -1894,6 +1873,17 @@ */ #define MBEDTLS_CHACHA20_C +/** + * \def MBEDTLS_CHACHAPOLY_C + * + * Enable the ChaCha20-Poly1305 AEAD algorithm. + * + * Module: library/chachapoly.c + * + * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C + */ +#define MBEDTLS_CHACHAPOLY_C + /** * \def MBEDTLS_CIPHER_C * From 9c82e2ce49d466ee37db2fde177a84d49c095631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:30:04 +0200 Subject: [PATCH 0373/1100] Fix some whitespace issues --- programs/test/benchmark.c | 2 +- tests/Makefile | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index f266b82f42..0b927e2b0f 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -97,7 +97,7 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish, chacha20,\n" \ - "aes_cbc, aes_gcm, aes_ccm, chachapoly,\n" \ + "aes_cbc, aes_gcm, aes_ccm, chachapoly,\n" \ "aes_cmac, des3_cmac, poly1305\n" \ "havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" diff --git a/tests/Makefile b/tests/Makefile index f9d976864b..16423193c7 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -45,7 +45,7 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ +APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_aes.cfb$(EXEXT) test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ @@ -209,7 +209,6 @@ test_suite_hmac_drbg.pr.c : suites/test_suite_hmac_drbg.function suites/test_sui echo " Gen $@" perl scripts/generate_code.pl suites $* $* - test_suite_aes.ecb$(EXEXT): test_suite_aes.ecb.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ From d2db09f435947b5dc12901390e782d68ba3baf77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:31:12 +0200 Subject: [PATCH 0374/1100] Fix typo in documentation --- include/mbedtls/poly1305.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index abe3690005..5c69a813a7 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -106,7 +106,7 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, const unsigned char key[32] ); /** - * \brief This functions feeds an input bufer into an ongoing + * \brief This functions feeds an input buffer into an ongoing * Poly1305 computation. * * It is called between \c mbedtls_cipher_cmac_starts() and From 94175a50f7ec89ecf704b92f6d90bfc9d33dbdf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Jun 2018 12:42:17 +0200 Subject: [PATCH 0375/1100] Refresh generated file --- library/version_features.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/library/version_features.c b/library/version_features.c index cce1a384ef..c0a5a3c65c 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -84,9 +84,6 @@ static const char *features[] = { #if defined(MBEDTLS_TIMING_ALT) "MBEDTLS_TIMING_ALT", #endif /* MBEDTLS_TIMING_ALT */ -#if defined(MBEDTLS_CHACHAPOLY_ALT) - "MBEDTLS_CHACHAPOLY_ALT", -#endif /* MBEDTLS_CHACHAPOLY_ALT */ #if defined(MBEDTLS_AES_ALT) "MBEDTLS_AES_ALT", #endif /* MBEDTLS_AES_ALT */ @@ -105,6 +102,9 @@ static const char *features[] = { #if defined(MBEDTLS_CHACHA20_ALT) "MBEDTLS_CHACHA20_ALT", #endif /* MBEDTLS_CHACHA20_ALT */ +#if defined(MBEDTLS_CHACHAPOLY_ALT) + "MBEDTLS_CHACHAPOLY_ALT", +#endif /* MBEDTLS_CHACHAPOLY_ALT */ #if defined(MBEDTLS_CMAC_ALT) "MBEDTLS_CMAC_ALT", #endif /* MBEDTLS_CMAC_ALT */ @@ -519,9 +519,6 @@ static const char *features[] = { #if defined(MBEDTLS_AES_C) "MBEDTLS_AES_C", #endif /* MBEDTLS_AES_C */ -#if defined(MBEDTLS_CHACHAPOLY_C) - "MBEDTLS_CHACHAPOLY_C", -#endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_ARC4_C) "MBEDTLS_ARC4_C", #endif /* MBEDTLS_ARC4_C */ @@ -543,9 +540,6 @@ static const char *features[] = { #if defined(MBEDTLS_CAMELLIA_C) "MBEDTLS_CAMELLIA_C", #endif /* MBEDTLS_CAMELLIA_C */ -#if defined(MBEDTLS_CHACHA20_C) - "MBEDTLS_CHACHA20_C", -#endif /* MBEDTLS_CHACHA20_C */ #if defined(MBEDTLS_CCM_C) "MBEDTLS_CCM_C", #endif /* MBEDTLS_CCM_C */ @@ -555,6 +549,9 @@ static const char *features[] = { #if defined(MBEDTLS_CHACHA20_C) "MBEDTLS_CHACHA20_C", #endif /* MBEDTLS_CHACHA20_C */ +#if defined(MBEDTLS_CHACHAPOLY_C) + "MBEDTLS_CHACHAPOLY_C", +#endif /* MBEDTLS_CHACHAPOLY_C */ #if defined(MBEDTLS_CIPHER_C) "MBEDTLS_CIPHER_C", #endif /* MBEDTLS_CIPHER_C */ From d0e55a465779554d354343601161aa11f69353b6 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 4 Jun 2018 12:03:30 +0200 Subject: [PATCH 0376/1100] ssl_decrypt_buf: remove code for hashes that aren't used in TLS --- library/ssl_tls.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8e855a1209..4d50497cde 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2013,22 +2013,11 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) size_t j, extra_run = 0; switch( ssl->transform_in->ciphersuite_info->mac ) { -#if defined(MBEDTLS_MD2_C) - case MBEDTLS_MD_MD2: - /* no size prepended, 64-byte compression blocks */ - extra_run = ( 13 + ssl->in_msglen + padlen ) / 64 - - ( 13 + ssl->in_msglen ) / 64; - break; -#endif -#if defined(MBEDTLS_MD4_C) || defined(MBEDTLS_MD5_C) || \ - case MBEDTLS_MD_MD4: - defined(MBEDTLS_SHA1_C) || defined(MBEDTLS_SHA256_C) \ - defined(MBEDTLS_RIPEMD160_C) +#if defined(MBEDTLS_MD5_C) || defined(MBEDTLS_SHA1_C) || \ + defined(MBEDTLS_SHA256_C) case MBEDTLS_MD_MD5: case MBEDTLS_MD_SHA1: - case MBEDTLS_MD_SHA224: case MBEDTLS_MD_SHA256: - case MBEDTLS_MD_RIPEMD160: /* 8 bytes of message size, 64-byte compression blocks */ extra_run = ( 13 + ssl->in_msglen + padlen + 8 ) / 64 - ( 13 + ssl->in_msglen + 8 ) / 64; @@ -2036,7 +2025,6 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) #endif #if defined(MBEDTLS_SHA512_C) case MBEDTLS_MD_SHA384: - case MBEDTLS_MD_SHA512: /* 16 bytes of message size, 128-byte compression blocks */ extra_run = ( 13 + ssl->in_msglen + padlen + 16 ) / 128 - ( 13 + ssl->in_msglen + 16 ) / 128; From 6e962b2762396c7bd1e810a53d0b497d4bd30c13 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 5 Jun 2018 10:25:04 +0100 Subject: [PATCH 0377/1100] Fix file permissions for ssl.h Correct the file permissions for ssl.h which were inadvertently made executable in PR#1402 --- include/mbedtls/ssl.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 include/mbedtls/ssl.h diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h old mode 100755 new mode 100644 From 747fd539380ed5d37e0927b4d2fb5326f2aca104 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Wed, 30 May 2018 09:13:21 +0200 Subject: [PATCH 0378/1100] Fixes different off by ones --- ChangeLog | 3 +++ library/ssl_cli.c | 6 +++--- library/ssl_srv.c | 43 ++++++++++++++++++++++++++++++++++++------- library/ssl_tls.c | 9 +++++++++ 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ebe9bb61e..723539c39f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,9 @@ Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. * Fix redundant declaration of mbedtls_ssl_list_ciphersuites. Raised by TrinityTonic. #1359. + * Adds of lengths checks in different functions (not a security issue as + original buffer is overgrown) thanks to Philippe Antoine from Catena + cyber. #1663. = mbed TLS 2.9.0 branch released 2018-04-30 diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 7455e99d2e..f89972a4cb 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1247,14 +1247,14 @@ static int ssl_parse_supported_point_formats_ext( mbedtls_ssl_context *ssl, size_t list_size; const unsigned char *p; - list_size = buf[0]; - if( list_size + 1 != len ) + if( len == 0 || (size_t)( buf[0] + 1 ) != len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad server hello message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO ); } + list_size = buf[0]; p = buf + 1; while( list_size > 0 ) @@ -2711,7 +2711,7 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) * therefore the buffer length at this point must be greater than that * regardless of the actual code path. */ - if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + 2 + n ) + if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + 3 + n ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate request message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 09b7a3fed3..457f9bbc08 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -91,6 +91,13 @@ static int ssl_parse_servername_ext( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 3, ( "parse ServerName extension" ) ); + if( len < 2 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } servername_list_size = ( ( buf[0] << 8 ) | ( buf[1] ) ); if( servername_list_size + 2 != len ) { @@ -101,7 +108,7 @@ static int ssl_parse_servername_ext( mbedtls_ssl_context *ssl, } p = buf + 2; - while( servername_list_size > 0 ) + while( servername_list_size > 2 ) { hostname_len = ( ( p[1] << 8 ) | p[2] ); if( hostname_len + 3 > servername_list_size ) @@ -205,6 +212,12 @@ static int ssl_parse_signature_algorithms_ext( mbedtls_ssl_context *ssl, mbedtls_md_type_t md_cur; mbedtls_pk_type_t sig_cur; + if ( len < 2 ) { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } sig_alg_list_size = ( ( buf[0] << 8 ) | ( buf[1] ) ); if( sig_alg_list_size + 2 != len || sig_alg_list_size % 2 != 0 ) @@ -273,6 +286,12 @@ static int ssl_parse_supported_elliptic_curves( mbedtls_ssl_context *ssl, const unsigned char *p; const mbedtls_ecp_curve_info *curve_info, **curves; + if ( len < 2 ) { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } list_size = ( ( buf[0] << 8 ) | ( buf[1] ) ); if( list_size + 2 != len || list_size % 2 != 0 ) @@ -332,14 +351,14 @@ static int ssl_parse_supported_point_formats( mbedtls_ssl_context *ssl, size_t list_size; const unsigned char *p; - list_size = buf[0]; - if( list_size + 1 != len ) + if( len == 0 || (size_t)( buf[0] + 1 ) != len ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); } + list_size = buf[0]; p = buf + 1; while( list_size > 0 ) @@ -1656,10 +1675,16 @@ read_record_header: while( ext_len != 0 ) { - unsigned int ext_id = ( ( ext[0] << 8 ) - | ( ext[1] ) ); - unsigned int ext_size = ( ( ext[2] << 8 ) - | ( ext[3] ) ); + unsigned int ext_id; + unsigned int ext_size; + if ( ext_len < 4 ) { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); + } + ext_id = ( ( ext[0] << 8 ) | ( ext[1] ) ); + ext_size = ( ( ext[2] << 8 ) | ( ext[3] ) ); if( ext_size + 4 > ext_len ) { @@ -3299,6 +3324,10 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver != MBEDTLS_SSL_MINOR_VERSION_0 ) { + if ( p + 2 > end ) { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client key exchange message" ) ); + return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_KEY_EXCHANGE ); + } if( *p++ != ( ( len >> 8 ) & 0xFF ) || *p++ != ( ( len ) & 0xFF ) ) { diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e8e0cd854b..b8b8df2052 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1151,6 +1151,9 @@ int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exch * other_secret already set by the ClientKeyExchange message, * and is 48 bytes long */ + if( end - p < 2 ) + return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); + *p++ = 0; *p++ = 48; p += 48; @@ -4528,6 +4531,12 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) while( i < ssl->in_hslen ) { + if ( i + 3 > ssl->in_hslen ) { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); + mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, + MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); + return( MBEDTLS_ERR_SSL_BAD_HS_CERTIFICATE ); + } if( ssl->in_msg[i] != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate message" ) ); From d08a2f7245c1e20e791c0ff3d4b8bbce5198a7d5 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 5 Jun 2018 15:53:06 +0100 Subject: [PATCH 0379/1100] Adapt the ARIA test cases for new ECB function Commit 08c337d058be "Remove useless parameter from function" removed the parameter mode from the functions mbedtls_aria_crypt_ecb() which broke their respective test suite. This commit fixes those test cases. --- tests/suites/test_suite_aria.function | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/suites/test_suite_aria.function b/tests/suites/test_suite_aria.function index a662047cd9..4e39078ff0 100644 --- a/tests/suites/test_suite_aria.function +++ b/tests/suites/test_suite_aria.function @@ -42,9 +42,8 @@ void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string, { for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { - TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT, - src_str + i, output + i ) - == 0 ); + TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str + i, output + i ) + == 0 ); } hexify( dst_str, output, data_len ); @@ -82,8 +81,7 @@ void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string, { for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE ) { - TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT, - src_str + i, output + i ) + TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str + i, output + i ) == 0 ); } hexify( dst_str, output, data_len ); From 1a8ef0772c97cee1e923015de44a2a6d0abade61 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 6 Jun 2018 03:44:03 +0100 Subject: [PATCH 0380/1100] Fix coverity defects --- programs/test/zeroize.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/test/zeroize.c b/programs/test/zeroize.c index 252438bcf0..29cc0ac3c1 100644 --- a/programs/test/zeroize.c +++ b/programs/test/zeroize.c @@ -66,7 +66,7 @@ int main( int argc, char** argv ) char buf[BUFFER_LEN]; char *p = buf; char *end = p + BUFFER_LEN; - char c; + int c; if( argc != 2 ) { @@ -83,7 +83,7 @@ int main( int argc, char** argv ) } while( ( c = fgetc( fp ) ) != EOF && p < end - 1 ) - *p++ = c; + *p++ = (char)c; *p = '\0'; if( p - buf != 0 ) From ab72727da4b72c9c4e9059fae983b817b502d639 Mon Sep 17 00:00:00 2001 From: Krzysztof Stachowiak Date: Wed, 6 Jun 2018 13:55:05 +0200 Subject: [PATCH 0381/1100] Add a disabled CMAC define in the no-entropy configuration --- configs/config-no-entropy.h | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/config-no-entropy.h b/configs/config-no-entropy.h index b4a0930b9c..7d34ad52ec 100644 --- a/configs/config-no-entropy.h +++ b/configs/config-no-entropy.h @@ -82,6 +82,7 @@ #define MBEDTLS_X509_USE_C #define MBEDTLS_X509_CRT_PARSE_C #define MBEDTLS_X509_CRL_PARSE_C +//#define MBEDTLS_CMAC_C /* Miscellaneous options */ #define MBEDTLS_AES_ROM_TABLES From b5b254300e964188d1e83ca9c43e2c043bca2240 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Fri, 11 May 2018 11:06:29 +0200 Subject: [PATCH 0382/1100] Fix undefined shifts - in x509_profile_check_pk_alg - in x509_profile_check_md_alg - in x509_profile_check_key and in ssl_cli.c : unsigned char gets promoted to signed integer --- ChangeLog | 2 ++ library/ssl_cli.c | 4 ++-- library/x509_crt.c | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ebe9bb61e..189a071a5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,8 @@ API Changes Bugfix * Fix an issue with MicroBlaze support in bn_mul.h which was causing the build to fail. Found by zv-io. Fixes #1651. + * Fix undefined shifts with negative values in certificates parsing + (found by Catena cyber using oss-fuzz) Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 7455e99d2e..6007a6e173 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -3313,8 +3313,8 @@ static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) msg = ssl->in_msg + mbedtls_ssl_hs_hdr_len( ssl ); - lifetime = ( msg[0] << 24 ) | ( msg[1] << 16 ) | - ( msg[2] << 8 ) | ( msg[3] ); + lifetime = ( ((uint32_t) msg[0]) << 24 ) | ( msg[1] << 16 ) | + ( msg[2] << 8 ) | ( msg[3] ); ticket_len = ( msg[4] << 8 ) | ( msg[5] ); diff --git a/library/x509_crt.c b/library/x509_crt.c index 290c1eb3d1..89194b320f 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -163,6 +163,9 @@ const mbedtls_x509_crt_profile mbedtls_x509_crt_profile_suiteb = static int x509_profile_check_md_alg( const mbedtls_x509_crt_profile *profile, mbedtls_md_type_t md_alg ) { + if( md_alg == MBEDTLS_MD_NONE ) + return( -1 ); + if( ( profile->allowed_mds & MBEDTLS_X509_ID_FLAG( md_alg ) ) != 0 ) return( 0 ); @@ -176,6 +179,9 @@ static int x509_profile_check_md_alg( const mbedtls_x509_crt_profile *profile, static int x509_profile_check_pk_alg( const mbedtls_x509_crt_profile *profile, mbedtls_pk_type_t pk_alg ) { + if( pk_alg == MBEDTLS_PK_NONE ) + return( -1 ); + if( ( profile->allowed_pks & MBEDTLS_X509_ID_FLAG( pk_alg ) ) != 0 ) return( 0 ); @@ -208,6 +214,9 @@ static int x509_profile_check_key( const mbedtls_x509_crt_profile *profile, { const mbedtls_ecp_group_id gid = mbedtls_pk_ec( *pk )->grp.id; + if( gid == MBEDTLS_ECP_DP_NONE ) + return( -1 ); + if( ( profile->allowed_curves & MBEDTLS_X509_ID_FLAG( gid ) ) != 0 ) return( 0 ); From d5a09f1e68a6c154a0b0ff9556c5fe1cd919c803 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 6 Jun 2018 14:47:47 +0100 Subject: [PATCH 0383/1100] Updated version number to 2.10.0 for release --- ChangeLog | 2 +- doxygen/input/doc_mainpage.h | 2 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/version.h | 8 ++++---- library/CMakeLists.txt | 6 +++--- tests/suites/test_suite_version.data | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8ebe9bb61e..4fbdb3d252 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ mbed TLS ChangeLog (Sorted per branch, date) -= mbed TLS x.x.x branch released xxxx-xx-xx += mbed TLS 2.10.0 branch released 2018-06-06 Features * Add support for ARIA cipher (RFC 5794) and associated TLS ciphersuites diff --git a/doxygen/input/doc_mainpage.h b/doxygen/input/doc_mainpage.h index e27c221bbc..9449cbbba9 100644 --- a/doxygen/input/doc_mainpage.h +++ b/doxygen/input/doc_mainpage.h @@ -24,7 +24,7 @@ */ /** - * @mainpage mbed TLS v2.9.0 source code documentation + * @mainpage mbed TLS v2.10.0 source code documentation * * This documentation describes the internal structure of mbed TLS. It was * automatically generated from specially formatted comment blocks in diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index 510fa85b0b..ddcbc2e048 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8 # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. -PROJECT_NAME = "mbed TLS v2.9.0" +PROJECT_NAME = "mbed TLS v2.10.0" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or diff --git a/include/mbedtls/version.h b/include/mbedtls/version.h index aa52ce21ec..83e3c1726b 100644 --- a/include/mbedtls/version.h +++ b/include/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 9 +#define MBEDTLS_VERSION_MINOR 10 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x02090000 -#define MBEDTLS_VERSION_STRING "2.9.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.9.0" +#define MBEDTLS_VERSION_NUMBER 0x020A0000 +#define MBEDTLS_VERSION_STRING "2.10.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.10.0" #if defined(MBEDTLS_VERSION_C) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 7ec08e7b76..6e5faa5a04 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -143,15 +143,15 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.9.0 SOVERSION 2) + set_target_properties(mbedcrypto PROPERTIES VERSION 2.10.0 SOVERSION 2) target_link_libraries(mbedcrypto ${libs}) add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.9.0 SOVERSION 0) + set_target_properties(mbedx509 PROPERTIES VERSION 2.10.0 SOVERSION 0) target_link_libraries(mbedx509 ${libs} mbedcrypto) add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.9.0 SOVERSION 10) + set_target_properties(mbedtls PROPERTIES VERSION 2.10.0 SOVERSION 10) target_link_libraries(mbedtls ${libs} mbedx509) install(TARGETS mbedtls mbedx509 mbedcrypto diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data index 0aca470237..999a93365a 100644 --- a/tests/suites/test_suite_version.data +++ b/tests/suites/test_suite_version.data @@ -1,8 +1,8 @@ Check compiletime library version -check_compiletime_version:"2.9.0" +check_compiletime_version:"2.10.0" Check runtime library version -check_runtime_version:"2.9.0" +check_runtime_version:"2.10.0" Check for MBEDTLS_VERSION_C check_feature:"MBEDTLS_VERSION_C":0 From 80f679b93864274c31e1a06fce734a4f61f9da62 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 1 Jun 2018 17:55:41 +0200 Subject: [PATCH 0384/1100] Correct and clarify the documentation of GCM whole-message functions Clarify the roles of the buffer parameter and their sizes. Remove a statement about input size restrictions that only applies to mbedtls_gcm_update, not to the whole-message functions. Document the possible error codes. Warn that mbedtls_gcm_crypt_and_tag in decrypt mode does not authenticate the data and recommend using mbedtls_gcm_auth_decrypt instead. --- include/mbedtls/gcm.h | 46 ++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/include/mbedtls/gcm.h b/include/mbedtls/gcm.h index bec5577142..a9bc441c6c 100644 --- a/include/mbedtls/gcm.h +++ b/include/mbedtls/gcm.h @@ -113,21 +113,35 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, * the same as input buffer. If the buffers overlap, the output * buffer must trail at least 8 Bytes behind the input buffer. * + * \warning When this function performs a decryption, it outputs the + * authentication tag and does not verify that the data is + * authentic. You should use this function to perform encryption + * only. For decryption, use mbedtls_gcm_auth_decrypt() instead. + * * \param ctx The GCM context to use for encryption or decryption. * \param mode The operation to perform: #MBEDTLS_GCM_ENCRYPT or - * #MBEDTLS_GCM_DECRYPT. - * \param length The length of the input data. This must be a multiple of - * 16 except in the last call before mbedtls_gcm_finish(). + * #MBEDTLS_GCM_DECRYPT. Note that during decryption, the + * tag is not verified. You should use this function only + * to encrypt data, and use mbedtls_gcm_auth_decrypt() + * to decrypt. + * \param length The length of the input data, which is equal to the length + * of the output data. * \param iv The initialization vector. * \param iv_len The length of the IV. * \param add The buffer holding the additional data. * \param add_len The length of the additional data. - * \param input The buffer holding the input data. - * \param output The buffer for holding the output data. + * \param input The buffer holding the input data. Its size is \b length. + * \param output The buffer for holding the output data. It must have room + * for \b length bytes. * \param tag_len The length of the tag to generate. * \param tag The buffer for holding the tag. * - * \return \c 0 on success. + * \return \c 0 if the encryption or decryption was performed + * successfully. Note that in #MBEDTLS_GCM_DECRYPT mode, + * this does not indicate that the data is authentic. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths are not valid. + * \return #MBEDTLS_ERR_GCM_HW_ACCEL_FAILED or a cipher-specific + * error code if the encryption or decryption failed. */ int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx, int mode, @@ -150,19 +164,23 @@ int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx, * must trail at least 8 Bytes behind the input buffer. * * \param ctx The GCM context. - * \param length The length of the input data. This must be a multiple - * of 16 except in the last call before mbedtls_gcm_finish(). + * \param length The length of the ciphertext to decrypt, which is also + * the length of the decrypted plaintext. * \param iv The initialization vector. * \param iv_len The length of the IV. * \param add The buffer holding the additional data. * \param add_len The length of the additional data. - * \param tag The buffer holding the tag. - * \param tag_len The length of the tag. - * \param input The buffer holding the input data. - * \param output The buffer for holding the output data. + * \param tag The buffer holding the tag to verify. + * \param tag_len The length of the tag to verify. + * \param input The buffer holding the ciphertext. Its size is \b length. + * \param output The buffer for holding the decrypted plaintext. It must + * have room for \b length bytes. * - * \return 0 if successful and authenticated. - * \return #MBEDTLS_ERR_GCM_AUTH_FAILED if the tag does not match. + * \return \c 0 if successful and authenticated. + * \return #MBEDTLS_ERR_GCM_AUTH_FAILED if the tag does not match. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths are not valid. + * \return #MBEDTLS_ERR_GCM_HW_ACCEL_FAILED or a cipher-specific + * error code if the decryption failed. */ int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx, size_t length, From 2adb375c50e2db5f44dd1ce8b7cb4b33b035563a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 7 Jun 2018 10:51:44 +0200 Subject: [PATCH 0385/1100] Add option to avoid 64-bit multiplication Motivation is similar to NO_UDBL_DIVISION. The alternative implementation of 64-bit mult is straightforward and aims at obvious correctness. Also, visual examination of the generate assembly show that it's quite efficient with clang, armcc5 and arm-clang. However current GCC generates fairly inefficient code for it. I tried to rework the code in order to make GCC generate more efficient code. Unfortunately the only way to do that is to get rid of 64-bit add and handle the carry manually, but this causes other compilers to generate less efficient code with branches, which is not acceptable from a side-channel point of view. So let's keep the obvious code that works for most compilers and hope future versions of GCC learn to manage registers in a sensible way in that context. See https://bugs.launchpad.net/gcc-arm-embedded/+bug/1775263 --- include/mbedtls/config.h | 22 +++++++++++++ library/poly1305.c | 66 +++++++++++++++++++++++++++----------- library/version_features.c | 3 ++ scripts/config.pl | 1 + tests/scripts/all.sh | 53 +++++++++++++++++++++++++++++- 5 files changed, 125 insertions(+), 20 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 663c984175..bde5a45816 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -84,6 +84,28 @@ */ //#define MBEDTLS_NO_UDBL_DIVISION +/** + * \def MBEDTLS_NO_64BIT_MULTIPLICATION + * + * The platform lacks support for 32x32 -> 64-bit multiplication. + * + * Used in: + * library/poly1305.c + * + * Some parts of the library may use multiplication of two unsigned 32-bit + * operands with a 64-bit result in order to speed up computations. On some + * platforms, this is not available in hardware and has to be implemented in + * software, usually in a library provided by the toolchain. + * + * Sometimes it is not desirable to have to link to that library. This option + * removes the dependency of that library on platforms that lack a hardware + * 64-bit multiplier by embedding a software implementation in Mbed TLS. + * + * Note that depending on the compiler, this may decrease performance compared + * to using the library function provided by the toolchain. + */ +//#define MBEDTLS_NO_64BIT_MULTIPLICATION + /** * \def MBEDTLS_HAVE_SSE2 * diff --git a/library/poly1305.c b/library/poly1305.c index 41e83f3f35..bafe613809 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -53,6 +53,34 @@ | (uint32_t) ( (uint32_t) data[( offset ) + 3] << 24 ) \ ) +/* + * Our implementation is tuned for 32-bit platforms with a 64-bit multiplier. + * However we provided an alternative for platforms without such a multiplier. + */ +#if defined(MBEDTLS_NO_64BIT_MULTIPLICATION) +static uint64_t mul64( uint32_t a, uint32_t b ) +{ + /* a = al + 2**16 ah, b = bl + 2**16 bh */ + const uint16_t al = (uint16_t) a; + const uint16_t bl = (uint16_t) b; + const uint16_t ah = a >> 16; + const uint16_t bh = b >> 16; + + /* ab = al*bl + 2**16 (ah*bl + bl*bh) + 2**32 ah*bh */ + const uint32_t lo = (uint32_t) al * bl; + const uint64_t me = (uint64_t)( (uint32_t) ah * bl ) + (uint32_t) al * bh; + const uint32_t hi = (uint32_t) ah * bh; + + return( lo + ( me << 16 ) + ( (uint64_t) hi << 32 ) ); +} +#else +static inline uint64_t mul64( uint32_t a, uint32_t b ) +{ + return( (uint64_t) a * b ); +} +#endif + + /** * \brief Process blocks with Poly1305. * @@ -112,25 +140,25 @@ static void poly1305_process( mbedtls_poly1305_context *ctx, acc4 += (uint32_t) ( d3 >> 32U ) + needs_padding; /* Compute: acc *= r */ - d0 = ( (uint64_t) acc0 * r0 ) + - ( (uint64_t) acc1 * rs3 ) + - ( (uint64_t) acc2 * rs2 ) + - ( (uint64_t) acc3 * rs1 ); - d1 = ( (uint64_t) acc0 * r1 ) + - ( (uint64_t) acc1 * r0 ) + - ( (uint64_t) acc2 * rs3 ) + - ( (uint64_t) acc3 * rs2 ) + - ( (uint64_t) acc4 * rs1 ); - d2 = ( (uint64_t) acc0 * r2 ) + - ( (uint64_t) acc1 * r1 ) + - ( (uint64_t) acc2 * r0 ) + - ( (uint64_t) acc3 * rs3 ) + - ( (uint64_t) acc4 * rs2 ); - d3 = ( (uint64_t) acc0 * r3 ) + - ( (uint64_t) acc1 * r2 ) + - ( (uint64_t) acc2 * r1 ) + - ( (uint64_t) acc3 * r0 ) + - ( (uint64_t) acc4 * rs3 ); + d0 = mul64( acc0, r0 ) + + mul64( acc1, rs3 ) + + mul64( acc2, rs2 ) + + mul64( acc3, rs1 ); + d1 = mul64( acc0, r1 ) + + mul64( acc1, r0 ) + + mul64( acc2, rs3 ) + + mul64( acc3, rs2 ) + + mul64( acc4, rs1 ); + d2 = mul64( acc0, r2 ) + + mul64( acc1, r1 ) + + mul64( acc2, r0 ) + + mul64( acc3, rs3 ) + + mul64( acc4, rs2 ); + d3 = mul64( acc0, r3 ) + + mul64( acc1, r2 ) + + mul64( acc2, r1 ) + + mul64( acc3, r0 ) + + mul64( acc4, rs3 ); acc4 *= r0; /* Compute: acc %= (2^130 - 5) (partial remainder) */ diff --git a/library/version_features.c b/library/version_features.c index c0a5a3c65c..21b3477b10 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -39,6 +39,9 @@ static const char *features[] = { #if defined(MBEDTLS_NO_UDBL_DIVISION) "MBEDTLS_NO_UDBL_DIVISION", #endif /* MBEDTLS_NO_UDBL_DIVISION */ +#if defined(MBEDTLS_NO_64BIT_MULTIPLICATION) + "MBEDTLS_NO_64BIT_MULTIPLICATION", +#endif /* MBEDTLS_NO_64BIT_MULTIPLICATION */ #if defined(MBEDTLS_HAVE_SSE2) "MBEDTLS_HAVE_SSE2", #endif /* MBEDTLS_HAVE_SSE2 */ diff --git a/scripts/config.pl b/scripts/config.pl index 5bf27859a8..a89787ae67 100755 --- a/scripts/config.pl +++ b/scripts/config.pl @@ -95,6 +95,7 @@ MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION MBEDTLS_ZLIB_SUPPORT MBEDTLS_PKCS11_C MBEDTLS_NO_UDBL_DIVISION +MBEDTLS_NO_64BIT_MULTIPLICATION _ALT\s*$ ); diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index e6c7549e6a..83011f5a0f 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -344,6 +344,12 @@ if_build_succeeded () { fi } +# to be used instead of ! for commands run with +# record_status or if_build_succeeded +not() { + ! "$@" +} + msg "info: $0 configuration" echo "MEMORY: $MEMORY" echo "FORCE: $FORCE" @@ -691,6 +697,31 @@ make CC=gcc CFLAGS='-Werror -Wall -Wextra -DMBEDTLS_HAVE_INT64' msg "test: gcc, force 64-bit bignum limbs" make test + +msg "build: MBEDTLS_NO_UDBL_DIVISION native" # ~ 10s +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl full +scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests +scripts/config.pl set MBEDTLS_NO_UDBL_DIVISION +make CFLAGS='-Werror -O1' + +msg "test: MBEDTLS_NO_UDBL_DIVISION native" # ~ 10s +make test + + +msg "build: MBEDTLS_NO_64BIT_MULTIPLICATION native" # ~ 10s +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl full +scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # too slow for tests +scripts/config.pl set MBEDTLS_NO_64BIT_MULTIPLICATION +make CFLAGS='-Werror -O1' + +msg "test: MBEDTLS_NO_64BIT_MULTIPLICATION native" # ~ 10s +make test + + msg "build: arm-none-eabi-gcc, make" # ~ 10s cleanup cp "$CONFIG_H" "$CONFIG_BAK" @@ -726,7 +757,27 @@ scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C # calls exit scripts/config.pl set MBEDTLS_NO_UDBL_DIVISION make CC=arm-none-eabi-gcc AR=arm-none-eabi-ar LD=arm-none-eabi-ld CFLAGS='-Werror -Wall -Wextra' lib echo "Checking that software 64-bit division is not required" -! grep __aeabi_uldiv library/*.o +if_build_succeeded not grep __aeabi_uldiv library/*.o + +msg "build: arm-none-eabi-gcc MBEDTLS_NO_64BIT_MULTIPLICATION, make" # ~ 10s +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl full +scripts/config.pl unset MBEDTLS_NET_C +scripts/config.pl unset MBEDTLS_TIMING_C +scripts/config.pl unset MBEDTLS_FS_IO +scripts/config.pl unset MBEDTLS_ENTROPY_NV_SEED +scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY +# following things are not in the default config +scripts/config.pl unset MBEDTLS_HAVEGE_C # depends on timing.c +scripts/config.pl unset MBEDTLS_THREADING_PTHREAD +scripts/config.pl unset MBEDTLS_THREADING_C +scripts/config.pl unset MBEDTLS_MEMORY_BACKTRACE # execinfo.h +scripts/config.pl unset MBEDTLS_MEMORY_BUFFER_ALLOC_C # calls exit +scripts/config.pl set MBEDTLS_NO_64BIT_MULTIPLICATION +make CC=arm-none-eabi-gcc AR=arm-none-eabi-ar LD=arm-none-eabi-ld CFLAGS='-Werror -O1 -march=armv6-m -mthumb' lib +echo "Checking that software 64-bit multiplication is not required" +if_build_succeeded not grep __aeabi_lmul library/*.o msg "build: ARM Compiler 5, make" cleanup From 21a65e00113d934da3a770d3741e319abc7c71f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 7 Jun 2018 11:54:17 +0200 Subject: [PATCH 0386/1100] Fix usage of inline with for some compilers --- library/chacha20.c | 5 +++++ library/poly1305.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/library/chacha20.c b/library/chacha20.c index 903f55f3bc..d14a51e044 100644 --- a/library/chacha20.c +++ b/library/chacha20.c @@ -48,6 +48,11 @@ #if !defined(MBEDTLS_CHACHA20_ALT) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + #define BYTES_TO_U32_LE( data, offset ) \ ( (uint32_t) data[offset] \ | (uint32_t) ( (uint32_t) data[( offset ) + 1] << 8 ) \ diff --git a/library/poly1305.c b/library/poly1305.c index bafe613809..e22d3afb68 100644 --- a/library/poly1305.c +++ b/library/poly1305.c @@ -44,6 +44,11 @@ #if !defined(MBEDTLS_POLY1305_ALT) +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + #define POLY1305_BLOCK_SIZE_BYTES ( 16U ) #define BYTES_TO_U32_LE( data, offset ) \ From d75ee64c1fba22d10e49a510e931cbe1fd6a3e00 Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Thu, 7 Jun 2018 11:55:50 +0100 Subject: [PATCH 0387/1100] Fix out-of-tree testing symlinks on Windows --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 587cfe258b..7641491825 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,7 +67,11 @@ function(link_to_source base_name) if (CMAKE_HOST_UNIX) set(command ln -s ${target} ${link}) else() - set(command cmd.exe /c mklink /j ${link} ${target}) + if (IS_DIRECTORY ${target}) + set(command cmd.exe /c mklink /j ${link} ${target}) + else() + set(command cmd.exe /c mklink ${link} ${target}) + endif() endif() execute_process(COMMAND ${command} From f30dbdcaf0fb4c06d083532334ee15c643bd2051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 7 Jun 2018 13:04:35 +0200 Subject: [PATCH 0388/1100] Update generated file --- visualc/VS2010/mbedTLS.vcxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index ad5a062e3c..446b4ba53c 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -159,8 +159,8 @@ - - + + @@ -201,7 +201,7 @@ - + @@ -236,8 +236,8 @@ - - + + @@ -275,7 +275,7 @@ - + From 0a0e08a618d5897b2544066e0d937aa710318e43 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 7 Jun 2018 14:46:02 +0200 Subject: [PATCH 0389/1100] mbedtls_gcm_crypt_and_tag: clarify what each mode does and doesn't do --- include/mbedtls/gcm.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/gcm.h b/include/mbedtls/gcm.h index a9bc441c6c..87535ab957 100644 --- a/include/mbedtls/gcm.h +++ b/include/mbedtls/gcm.h @@ -119,11 +119,17 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, * only. For decryption, use mbedtls_gcm_auth_decrypt() instead. * * \param ctx The GCM context to use for encryption or decryption. - * \param mode The operation to perform: #MBEDTLS_GCM_ENCRYPT or - * #MBEDTLS_GCM_DECRYPT. Note that during decryption, the - * tag is not verified. You should use this function only - * to encrypt data, and use mbedtls_gcm_auth_decrypt() - * to decrypt. + * \param mode The operation to perform: + * - #MBEDTLS_GCM_ENCRYPT to perform authenticated encryption. + * The ciphertext is written to \p output and the + * authentication tag is written to \p tag. + * - #MBEDTLS_GCM_DECRYPT to perform decryption. + * The plaintext is written to \p output and the + * authentication tag is written to \p tag. + * Note that this mode is not recommended, because it does + * not verify the authenticity of the data. For this reason, + * you should use mbedtls_gcm_auth_decrypt() instead of + * calling this function in decryption mode. * \param length The length of the input data, which is equal to the length * of the output data. * \param iv The initialization vector. From 2a1edacb1b49fc17729527d2bc8f829d5f03bb84 Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Fri, 8 Jun 2018 10:07:32 +0100 Subject: [PATCH 0390/1100] Change symlink to hardlink to avoid permission issues --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7641491825..b9a0ce02da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,7 +70,7 @@ function(link_to_source base_name) if (IS_DIRECTORY ${target}) set(command cmd.exe /c mklink /j ${link} ${target}) else() - set(command cmd.exe /c mklink ${link} ${target}) + set(command cmd.exe /c mklink /h ${link} ${target}) endif() endif() From 656864b3605fde3d6ac127453a9442bb9a29e5cc Mon Sep 17 00:00:00 2001 From: Thomas Fossati Date: Sun, 17 Jul 2016 08:51:22 +0100 Subject: [PATCH 0391/1100] Add an HKDF (RFC 5869) implementation --- include/mbedtls/check_config.h | 6 +- include/mbedtls/config.h | 17 ++- include/mbedtls/error.h | 3 +- include/mbedtls/hkdf.h | 125 ++++++++++++++++++ library/CMakeLists.txt | 1 + library/Makefile | 1 + library/error.c | 9 ++ library/hkdf.c | 180 ++++++++++++++++++++++++++ library/version_features.c | 3 + scripts/generate_errors.pl | 2 +- tests/CMakeLists.txt | 1 + tests/Makefile | 9 ++ tests/suites/test_suite_hkdf.data | 27 ++++ tests/suites/test_suite_hkdf.function | 39 ++++++ visualc/VS2010/mbedTLS.vcxproj | 2 + 15 files changed, 421 insertions(+), 4 deletions(-) create mode 100644 include/mbedtls/hkdf.h create mode 100644 library/hkdf.c create mode 100644 tests/suites/test_suite_hkdf.data create mode 100644 tests/suites/test_suite_hkdf.function diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h index be80332963..4689f3a4d2 100644 --- a/include/mbedtls/check_config.h +++ b/include/mbedtls/check_config.h @@ -4,7 +4,7 @@ * \brief Consistency checks for configuration options */ /* - * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -191,6 +191,10 @@ #error "MBEDTLS_HAVEGE_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_HKDF_C) && !defined(MBEDTLS_MD_C) +#error "MBEDTLS_HKDF_C defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_HMAC_DRBG_C) && !defined(MBEDTLS_MD_C) #error "MBEDTLS_HMAC_DRBG_C defined, but not all prerequisites" #endif diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 7c9acb2309..a59e9c5ca5 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -8,7 +8,7 @@ * memory footprint. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -2091,6 +2091,21 @@ */ //#define MBEDTLS_HAVEGE_C +/** + * \def MBEDTLS_HKDF_C + * + * Enable the HKDF algorithm (RFC 5869). + * + * Module: library/hkdf.c + * Caller: + * + * Requires: MBEDTLS_MD_C + * + * This module adds support for the Hashed Message Authentication Code + * (HMAC)-based key derivation function (HKDF). + */ +#define MBEDTLS_HKDF_C + /** * \def MBEDTLS_HMAC_DRBG_C * diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 8b4d3a8755..c7f6a72b0d 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -4,7 +4,7 @@ * \brief Error to string translation */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -88,6 +88,7 @@ * RSA 4 11 * ECP 4 9 (Started from top) * MD 5 5 + * HKDF 5 1 (Started from top) * CIPHER 6 8 * SSL 6 17 (Started from top) * SSL 7 31 diff --git a/include/mbedtls/hkdf.h b/include/mbedtls/hkdf.h new file mode 100644 index 0000000000..6833e7272e --- /dev/null +++ b/include/mbedtls/hkdf.h @@ -0,0 +1,125 @@ +/** + * \file hkdf.h + * + * \brief This file contains the HKDF interface. + * + * The HMAC-based Extract-and-Expand Key Derivation Function (HKDF) is + * specified by RFC 5869. + */ +/* + * Copyright (C) 2016-2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_HKDF_H +#define MBEDTLS_HKDF_H + +#include "md.h" + +/** + * \name HKDF Error codes + * \{ + */ +#define MBEDTLS_ERR_HKDF_BAD_INPUT_DATA -0x5F80 /**< Bad input parameters to function. */ +/* \} name */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief This is the HMAC-based Extract-and-Expand Key Derivation Function + * (HKDF). + * + * \param md A hash function; md.size denotes the length of the hash + * function output in bytes. + * \param salt An optional salt value (a non-secret random value); + * if the salt is not provided, a string of all zeros of + * md.size length is used as the salt. + * \param salt_len The length in bytes of the optional \p salt. + * \param ikm The input keying material. + * \param ikm_len The length in bytes of \p ikm. + * \param info An optional context and application specific information + * string. This can be a zero-length string. + * \param info_len The length of \p info in bytes. + * \param okm The output keying material of \p okm_len bytes. + * \param okm_len The length of the output keying material in bytes. This + * must be less than or equal to 255 * md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt, + size_t salt_len, const unsigned char *ikm, size_t ikm_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len ); + +/** + * \brief Take the input keying material \p ikm and extract from it a + * fixed-length pseudorandom key \p prk. + * + * \param md A hash function; md.size denotes the length of the + * hash function output in bytes. + * \param salt An optional salt value (a non-secret random value); + * if the salt is not provided, a string of all zeros + * of md.size length is used as the salt. + * \param salt_len The length in bytes of the optional \p salt. + * \param ikm The input keying material. + * \param ikm_len The length in bytes of \p ikm. + * \param[out] prk A pseudorandom key of at least md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + unsigned char *prk ); + +/** + * \brief Expand the supplied \p prk into several additional pseudorandom + * keys, which is the output of the HKDF. + * + * \param md A hash function; md.size denotes the length of the hash + * function output in bytes. + * \param prk A pseudorandom key of at least md.size bytes. \p prk is usually, + * the output from the HKDF extract step. + * \param prk_len The length in bytes of \p prk. + * \param info An optional context and application specific information + * string. This can be a zero-length string. + * \param info_len The length of \p info in bytes. + * \param okm The output keying material of \p okm_len bytes. + * \param okm_len The length of the output keying material in bytes. This + * must be less than or equal to 255 * md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, + size_t prk_len, const unsigned char *info, + size_t info_len, unsigned char *okm, size_t okm_len ); + +#ifdef __cplusplus +} +#endif + +#endif /* hkdf.h */ diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 6177ca2b4c..b730d082bf 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -29,6 +29,7 @@ set(src_crypto error.c gcm.c havege.c + hkdf.c hmac_drbg.c md.c md2.c diff --git a/library/Makefile b/library/Makefile index b155c720ea..5721d7e39f 100644 --- a/library/Makefile +++ b/library/Makefile @@ -56,6 +56,7 @@ OBJS_CRYPTO= aes.o aesni.o arc4.o \ ecjpake.o ecp.o \ ecp_curves.o entropy.o entropy_poll.o \ error.o gcm.o havege.o \ + hkdf.o \ hmac_drbg.o md.o md2.o \ md4.o md5.o md_wrap.o \ memory_buffer_alloc.o oid.o \ diff --git a/library/error.c b/library/error.c index 222d85b62e..58c5a6f350 100644 --- a/library/error.c +++ b/library/error.c @@ -101,6 +101,10 @@ #include "mbedtls/gcm.h" #endif +#if defined(MBEDTLS_HKDF_C) +#include "mbedtls/hkdf.h" +#endif + #if defined(MBEDTLS_HMAC_DRBG_C) #include "mbedtls/hmac_drbg.h" #endif @@ -698,6 +702,11 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "GCM - Bad input parameters to function" ); #endif /* MBEDTLS_GCM_C */ +#if defined(MBEDTLS_HKDF_C) + if( use_ret == -(MBEDTLS_ERR_HKDF_BAD_INPUT_DATA) ) + mbedtls_snprintf( buf, buflen, "HKDF - Bad input parameters to function" ); +#endif /* MBEDTLS_HKDF_C */ + #if defined(MBEDTLS_HMAC_DRBG_C) if( use_ret == -(MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG) ) mbedtls_snprintf( buf, buflen, "HMAC_DRBG - Too many random requested in single call" ); diff --git a/library/hkdf.c b/library/hkdf.c new file mode 100644 index 0000000000..d2e55e869b --- /dev/null +++ b/library/hkdf.c @@ -0,0 +1,180 @@ +/* + * HKDF implementation -- RFC 5869 + * + * Copyright (C) 2016-2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_HKDF_C) + +#include +#include "mbedtls/hkdf.h" +#include "mbedtls/platform_util.h" + +int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt, + size_t salt_len, const unsigned char *ikm, size_t ikm_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len ) +{ + int ret; + unsigned char prk[MBEDTLS_MD_MAX_SIZE]; + + ret = mbedtls_hkdf_extract( md, salt, salt_len, ikm, ikm_len, prk ); + + if( ret == 0 ) + { + ret = mbedtls_hkdf_expand( md, prk, mbedtls_md_get_size( md ), + info, info_len, okm, okm_len ); + } + + mbedtls_platform_zeroize( prk, sizeof( prk ) ); + + return( ret ); +} + +int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + unsigned char *prk ) +{ + unsigned char null_salt[MBEDTLS_MD_MAX_SIZE] = { '\0' }; + + if( salt == NULL ) + { + size_t hash_len; + + hash_len = mbedtls_md_get_size( md ); + + if( hash_len == 0 ) + { + return MBEDTLS_ERR_HKDF_BAD_INPUT_DATA; + } + + salt = null_salt; + salt_len = hash_len; + } + + return( mbedtls_md_hmac( md, salt, salt_len, ikm, ikm_len, prk ) ); +} + +int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, + size_t prk_len, const unsigned char *info, + size_t info_len, unsigned char *okm, size_t okm_len ) +{ + size_t hash_len; + size_t where = 0; + size_t n; + size_t t_len = 0; + size_t i; + int ret = 0; + mbedtls_md_context_t ctx; + unsigned char t[MBEDTLS_MD_MAX_SIZE]; + + if( okm == NULL ) + { + return( MBEDTLS_ERR_HKDF_BAD_INPUT_DATA ); + } + + hash_len = mbedtls_md_get_size( md ); + + if( prk_len < hash_len || hash_len == 0 ) + { + return( MBEDTLS_ERR_HKDF_BAD_INPUT_DATA ); + } + + if( info == NULL ) + { + info = (const unsigned char *) ""; + info_len = 0; + } + + n = okm_len / hash_len; + + if( (okm_len % hash_len) != 0 ) + { + n++; + } + + if( n > 255 ) + { + return( MBEDTLS_ERR_HKDF_BAD_INPUT_DATA ); + } + + mbedtls_md_init( &ctx ); + + if( (ret = mbedtls_md_setup( &ctx, md, 1) ) != 0 ) + { + goto exit; + } + + /* RFC 5869 Section 2.3. */ + for( i = 1; i <= n; i++ ) + { + size_t num_to_copy; + unsigned char c = i & 0xff; + + ret = mbedtls_md_hmac_starts( &ctx, prk, prk_len ); + if( ret != 0 ) + { + goto exit; + } + + ret = mbedtls_md_hmac_update( &ctx, t, t_len ); + if( ret != 0 ) + { + goto exit; + } + + ret = mbedtls_md_hmac_update( &ctx, info, info_len ); + if( ret != 0 ) + { + goto exit; + } + + /* The constant concatenated to the end of each t(n) is a single octet. + * */ + ret = mbedtls_md_hmac_update( &ctx, &c, 1 ); + if( ret != 0 ) + { + goto exit; + } + + ret = mbedtls_md_hmac_finish( &ctx, t ); + if( ret != 0 ) + { + goto exit; + } + + num_to_copy = i != n ? hash_len : okm_len - where; + memcpy( okm + where, t, num_to_copy ); + where += hash_len; + t_len = hash_len; + } + +exit: + mbedtls_md_free( &ctx ); + mbedtls_platform_zeroize( t, sizeof( t ) ); + + return( ret ); +} + +#endif /* MBEDTLS_HKDF_C */ diff --git a/library/version_features.c b/library/version_features.c index a452caf5e9..1b0f180ce0 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -579,6 +579,9 @@ static const char *features[] = { #if defined(MBEDTLS_HAVEGE_C) "MBEDTLS_HAVEGE_C", #endif /* MBEDTLS_HAVEGE_C */ +#if defined(MBEDTLS_HKDF_C) + "MBEDTLS_HKDF_C", +#endif /* MBEDTLS_HKDF_C */ #if defined(MBEDTLS_HMAC_DRBG_C) "MBEDTLS_HMAC_DRBG_C", #endif /* MBEDTLS_HMAC_DRBG_C */ diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index ac0fbff056..7290b87d2d 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -31,7 +31,7 @@ my $error_format_file = $data_dir.'/error.fmt'; my @low_level_modules = qw( AES ARC4 ASN1 BASE64 BIGNUM BLOWFISH CAMELLIA CCM CMAC CTR_DRBG DES - ENTROPY GCM HMAC_DRBG MD2 MD4 MD5 + ENTROPY GCM HKDF HMAC_DRBG MD2 MD4 MD5 NET OID PADLOCK PBKDF2 RIPEMD160 SHA1 SHA256 SHA512 THREADING XTEA ); my @high_level_modules = qw( CIPHER DHM ECP MD diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 16e19a9275..bcd97a05be 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -81,6 +81,7 @@ add_test_suite(gcm gcm.aes128_de) add_test_suite(gcm gcm.aes192_de) add_test_suite(gcm gcm.aes256_de) add_test_suite(gcm gcm.camellia) +add_test_suite(hkdf) add_test_suite(hmac_drbg hmac_drbg.misc) add_test_suite(hmac_drbg hmac_drbg.no_reseed) add_test_suite(hmac_drbg hmac_drbg.nopr) diff --git a/tests/Makefile b/tests/Makefile index d85617fdca..e127809046 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -70,6 +70,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_gcm.aes192_en$(EXEXT) \ test_suite_gcm.aes256_en$(EXEXT) \ test_suite_gcm.camellia$(EXEXT) \ + test_suite_hkdf$(EXEXT) \ test_suite_hmac_drbg.misc$(EXEXT) \ test_suite_hmac_drbg.no_reseed$(EXEXT) \ test_suite_hmac_drbg.nopr$(EXEXT) \ @@ -177,6 +178,10 @@ test_suite_gcm.camellia.c : suites/test_suite_gcm.function suites/test_suite_gcm echo " Gen $@" perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.camellia +test_suite_hkdf.c : suites/test_suite_hkdf.function suites/test_suite_hkdf.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_hkdf test_suite_hkdf + test_suite_hmac_drbg.misc.c : suites/test_suite_hmac_drbg.function suites/test_suite_hmac_drbg.misc.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_hmac_drbg test_suite_hmac_drbg.misc @@ -341,6 +346,10 @@ test_suite_gcm.camellia$(EXEXT): test_suite_gcm.camellia.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_hkdf$(EXEXT): test_suite_hkdf.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_hmac_drbg.misc$(EXEXT): test_suite_hmac_drbg.misc.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_hkdf.data b/tests/suites/test_suite_hkdf.data new file mode 100644 index 0000000000..b58ec93c3c --- /dev/null +++ b/tests/suites/test_suite_hkdf.data @@ -0,0 +1,27 @@ +HKDF RFC5869 Test Vector #1 +depends_on:MBEDTLS_SHA256_C +test_hkdf:6:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865" + +HKDF RFC5869 Test Vector #2 +depends_on:MBEDTLS_SHA256_C +test_hkdf:6:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf":"b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87" + +HKDF RFC5869 Test Vector #3 +depends_on:MBEDTLS_SHA256_C +test_hkdf:6:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"":"":"8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8" + +HKDF RFC5869 Test Vector #4 +depends_on:MBEDTLS_SHA1_C +test_hkdf:4:"0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":"085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896" + +HKDF RFC5869 Test Vector #5 +depends_on:MBEDTLS_SHA1_C +test_hkdf:4:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf":"b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4" + +HKDF RFC5869 Test Vector #6 +depends_on:MBEDTLS_SHA1_C +test_hkdf:4:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"":"":"0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918" + +HKDF RFC5869 Test Vector #7 +depends_on:MBEDTLS_SHA1_C +test_hkdf:4:"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c":"":"":"2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48" diff --git a/tests/suites/test_suite_hkdf.function b/tests/suites/test_suite_hkdf.function new file mode 100644 index 0000000000..c6cd870264 --- /dev/null +++ b/tests/suites/test_suite_hkdf.function @@ -0,0 +1,39 @@ +/* BEGIN_HEADER */ +#include "mbedtls/hkdf.h" +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_HKDF_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE */ +void test_hkdf( int md_alg, char *hex_ikm_string, char *hex_salt_string, + char *hex_info_string, char *hex_okm_string ) +{ + int ret; + size_t ikm_len, salt_len, info_len, okm_len; + unsigned char ikm[1024] = { '\0' }; + unsigned char salt[1024] = { '\0' }; + unsigned char info[1024] = { '\0' }; + unsigned char expected_okm[1024] = { '\0' }; + unsigned char okm[1024] = { '\0' }; + unsigned char okm_string[1000] = { '\0' }; + + const mbedtls_md_info_t *md = mbedtls_md_info_from_type( md_alg ); + TEST_ASSERT( md != NULL ); + + ikm_len = unhexify( ikm, hex_ikm_string ); + salt_len = unhexify( salt, hex_salt_string ); + info_len = unhexify( info, hex_info_string ); + okm_len = unhexify( expected_okm, hex_okm_string ); + + ret = mbedtls_hkdf( md, salt, salt_len, ikm, ikm_len, info, info_len, okm, + okm_len); + TEST_ASSERT( ret == 0 ); + + // Run hexify on it so that it looks nicer if the assertion fails + hexify( okm_string, okm, okm_len ); + TEST_ASSERT( !strcmp( (char *)okm_string, hex_okm_string ) ); +} +/* END_CASE */ diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index 802cce7191..4c5c480c3a 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -178,6 +178,7 @@ + @@ -248,6 +249,7 @@ + From 798363e4dce869850f9930bffd74eaaf1153bb8d Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 23 Mar 2018 17:39:23 +0000 Subject: [PATCH 0392/1100] Add ChangeLog entry for HKDF --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 348864c0e9..1e5d73deb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -54,6 +54,10 @@ API Changes This function is necessary to determine when it is safe to idle on the underlying transport in case event-driven IO is used. +Features + * Implement the HMAC-based extract-and-expand key derivation function + (HKDF) per RFC 5869. Contributed by Thomas Fossati. + Bugfix * Fix a spurious uninitialized variable warning in cmac.c. Fix independently contributed by Brian J Murray and David Brown. From 3618962cab9dd2ffec4783b9c143e7aea3a4ff5c Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 23 May 2018 18:55:47 +0100 Subject: [PATCH 0393/1100] hkdf: Add tests for extract and expand Add tests for mbedtls_hkdf_extract() and mbedtls_hkdf_expand() from the test vectors in Appendix A of RFC 5869. --- tests/suites/test_suite_hkdf.data | 56 +++++++++++++++++++++ tests/suites/test_suite_hkdf.function | 71 +++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) diff --git a/tests/suites/test_suite_hkdf.data b/tests/suites/test_suite_hkdf.data index b58ec93c3c..cdf602a013 100644 --- a/tests/suites/test_suite_hkdf.data +++ b/tests/suites/test_suite_hkdf.data @@ -25,3 +25,59 @@ test_hkdf:4:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"":"":"0ac1af7002b3d7 HKDF RFC5869 Test Vector #7 depends_on:MBEDTLS_SHA1_C test_hkdf:4:"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c":"":"":"2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48" + +HKDF RFC5869 Test Vector #1 Extract +depends_on:MBEDTLS_SHA256_C +test_hkdf_extract:6:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5" + +HKDF RFC5869 Test Vector #2 Extract +depends_on:MBEDTLS_SHA256_C +test_hkdf_extract:6:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf":"06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244" + +HKDF RFC5869 Test Vector #3 Extract +depends_on:MBEDTLS_SHA256_C +test_hkdf_extract:6:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"":"19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04" + +HKDF RFC5869 Test Vector #4 Extract +depends_on:MBEDTLS_SHA1_C +test_hkdf_extract:4:"0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243" + +HKDF RFC5869 Test Vector #5 Extract +depends_on:MBEDTLS_SHA1_C +test_hkdf_extract:4:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf":"8adae09a2a307059478d309b26c4115a224cfaf6" + +HKDF RFC5869 Test Vector #6 Extract +depends_on:MBEDTLS_SHA1_C +test_hkdf_extract:4:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"":"da8c8a73c7fa77288ec6f5e7c297786aa0d32d01" + +HKDF RFC5869 Test Vector #7 Extract +depends_on:MBEDTLS_SHA1_C +test_hkdf_extract:4:"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c":"":"2adccada18779e7c2077ad2eb19d3f3e731385dd" + +HKDF RFC5869 Test Vector #1 Expand +depends_on:MBEDTLS_SHA256_C +test_hkdf_expand:6:"f0f1f2f3f4f5f6f7f8f9":"077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5":"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865" + +HKDF RFC5869 Test Vector #2 Expand +depends_on:MBEDTLS_SHA256_C +test_hkdf_expand:6:"b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244":"b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87" + +HKDF RFC5869 Test Vector #3 Expand +depends_on:MBEDTLS_SHA256_C +test_hkdf_expand:6:"":"19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04":"8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8" + +HKDF RFC5869 Test Vector #4 Expand +depends_on:MBEDTLS_SHA1_C +test_hkdf_expand:4:"f0f1f2f3f4f5f6f7f8f9":"9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243":"085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896" + +HKDF RFC5869 Test Vector #5 Expand +depends_on:MBEDTLS_SHA1_C +test_hkdf_expand:4:"b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"8adae09a2a307059478d309b26c4115a224cfaf6":"0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4" + +HKDF RFC5869 Test Vector #6 Expand +depends_on:MBEDTLS_SHA1_C +test_hkdf_expand:4:"":"da8c8a73c7fa77288ec6f5e7c297786aa0d32d01":"0ac1af7002b3d761d1e55298da9d0506b9ae52057220a306e07b6b87e8df21d0ea00033de03984d34918" + +HKDF RFC5869 Test Vector #7 Expand +depends_on:MBEDTLS_SHA1_C +test_hkdf_expand:4:"":"2adccada18779e7c2077ad2eb19d3f3e731385dd":"2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48" diff --git a/tests/suites/test_suite_hkdf.function b/tests/suites/test_suite_hkdf.function index c6cd870264..f38545c6ae 100644 --- a/tests/suites/test_suite_hkdf.function +++ b/tests/suites/test_suite_hkdf.function @@ -37,3 +37,74 @@ void test_hkdf( int md_alg, char *hex_ikm_string, char *hex_salt_string, TEST_ASSERT( !strcmp( (char *)okm_string, hex_okm_string ) ); } /* END_CASE */ + +/* BEGIN_CASE */ +void test_hkdf_extract( int md_alg, char *hex_ikm_string, + char *hex_salt_string, char *hex_prk_string ) +{ + int ret; + unsigned char *ikm = NULL; + unsigned char *salt = NULL; + unsigned char *prk = NULL; + unsigned char *output_prk = NULL; + size_t ikm_len, salt_len, prk_len, output_prk_len; + + const mbedtls_md_info_t *md = mbedtls_md_info_from_type( md_alg ); + TEST_ASSERT( md != NULL ); + + output_prk_len = mbedtls_md_get_size( md ); + output_prk = mbedtls_calloc( 1, output_prk_len ); + + ikm = unhexify_alloc( hex_ikm_string, &ikm_len ); + salt = unhexify_alloc( hex_salt_string, &salt_len ); + prk = unhexify_alloc( hex_prk_string, &prk_len ); + TEST_ASSERT( prk_len == output_prk_len ); + + ret = mbedtls_hkdf_extract( md, salt, salt_len, ikm, ikm_len, output_prk ); + TEST_ASSERT( ret == 0 ); + + TEST_ASSERT( !memcmp( output_prk, prk, prk_len ) ); + +exit: + mbedtls_free(ikm); + mbedtls_free(salt); + mbedtls_free(prk); + mbedtls_free(output_prk); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void test_hkdf_expand( int md_alg, char *hex_info_string, + char *hex_prk_string, char *hex_okm_string ) +{ + enum { OKM_LEN = 1024 }; + int ret; + unsigned char *info = NULL; + unsigned char *prk = NULL; + unsigned char *okm = NULL; + unsigned char *output_okm = NULL; + size_t info_len, prk_len, okm_len; + + const mbedtls_md_info_t *md = mbedtls_md_info_from_type( md_alg ); + TEST_ASSERT( md != NULL ); + + output_okm = mbedtls_calloc( OKM_LEN, 1 ); + + prk = unhexify_alloc( hex_prk_string, &prk_len ); + info = unhexify_alloc( hex_info_string, &info_len ); + okm = unhexify_alloc( hex_okm_string, &okm_len ); + TEST_ASSERT( prk_len == mbedtls_md_get_size( md ) ); + TEST_ASSERT( okm_len < OKM_LEN ); + + ret = mbedtls_hkdf_expand( md, prk, prk_len, info, info_len, + output_okm, OKM_LEN ); + TEST_ASSERT( ret == 0 ); + TEST_ASSERT( !memcmp( output_okm, okm, okm_len ) ); + +exit: + mbedtls_free(info); + mbedtls_free(prk); + mbedtls_free(okm); + mbedtls_free(output_okm); +} +/* END_CASE */ From 10e0e4d4ff251f7c34c68a7e7c48a9405d830d9f Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 23 May 2018 19:44:26 +0100 Subject: [PATCH 0394/1100] hkdf: Add negative tests Test for the expected bad input parameter error when given specific sets of bad input parameters. --- tests/suites/test_suite_hkdf.data | 15 +++++++ tests/suites/test_suite_hkdf.function | 60 +++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/tests/suites/test_suite_hkdf.data b/tests/suites/test_suite_hkdf.data index cdf602a013..15837365fe 100644 --- a/tests/suites/test_suite_hkdf.data +++ b/tests/suites/test_suite_hkdf.data @@ -1,3 +1,18 @@ +HKDF extract fails with hash_len of 0 +test_hkdf_extract_ret:0:MBEDTLS_ERR_HKDF_BAD_INPUT_DATA + +HKDF expand fails with NULL okm +test_hkdf_expand_ret:32:32:0:MBEDTLS_ERR_HKDF_BAD_INPUT_DATA + +HKDF expand fails with hash_len of 0 +test_hkdf_expand_ret:0:32:32:MBEDTLS_ERR_HKDF_BAD_INPUT_DATA + +HKDF expand fails with prk_len < hash_len +test_hkdf_expand_ret:32:16:32:MBEDTLS_ERR_HKDF_BAD_INPUT_DATA + +HKDF expand fails with okm_len / hash_len > 255 +test_hkdf_expand_ret:32:32:8192:MBEDTLS_ERR_HKDF_BAD_INPUT_DATA + HKDF RFC5869 Test Vector #1 depends_on:MBEDTLS_SHA256_C test_hkdf:6:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"000102030405060708090a0b0c":"f0f1f2f3f4f5f6f7f8f9":"3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865" diff --git a/tests/suites/test_suite_hkdf.function b/tests/suites/test_suite_hkdf.function index f38545c6ae..c85a51a7a9 100644 --- a/tests/suites/test_suite_hkdf.function +++ b/tests/suites/test_suite_hkdf.function @@ -1,5 +1,6 @@ /* BEGIN_HEADER */ #include "mbedtls/hkdf.h" +#include "mbedtls/md_internal.h" /* END_HEADER */ /* BEGIN_DEPENDENCIES @@ -108,3 +109,62 @@ exit: mbedtls_free(output_okm); } /* END_CASE */ + +/* BEGIN_CASE */ +void test_hkdf_extract_ret( int hash_len, int ret ) +{ + int output_ret; + unsigned char *salt = NULL; + unsigned char *ikm = NULL; + unsigned char *prk = NULL; + size_t salt_len, ikm_len; + struct mbedtls_md_info_t fake_md_info; + + memset( &fake_md_info, 0, sizeof( fake_md_info ) ); + fake_md_info.type = MBEDTLS_MD_NONE; + fake_md_info.size = hash_len; + + prk = mbedtls_calloc( MBEDTLS_MD_MAX_SIZE, 1 ); + salt_len = 0; + ikm_len = 0; + + output_ret = mbedtls_hkdf_extract( &fake_md_info, salt, salt_len, + ikm, ikm_len, prk ); + TEST_ASSERT( output_ret == ret ); + +exit: + mbedtls_free(prk); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void test_hkdf_expand_ret( int hash_len, int prk_len, int okm_len, int ret ) +{ + int output_ret; + unsigned char *info = NULL; + unsigned char *prk = NULL; + unsigned char *okm = NULL; + size_t info_len; + struct mbedtls_md_info_t fake_md_info; + + memset( &fake_md_info, 0, sizeof( fake_md_info ) ); + fake_md_info.type = MBEDTLS_MD_NONE; + fake_md_info.size = hash_len; + + info_len = 0; + + if (prk_len > 0) + prk = mbedtls_calloc( prk_len, 1 ); + + if (okm_len > 0) + okm = mbedtls_calloc( okm_len, 1 ); + + output_ret = mbedtls_hkdf_expand( &fake_md_info, prk, prk_len, + info, info_len, okm, okm_len ); + TEST_ASSERT( output_ret == ret ); + +exit: + mbedtls_free(prk); + mbedtls_free(okm); +} +/* END_CASE */ From 76a5b22973471982efc69905360ce4193777dca0 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 22 Apr 2018 22:57:27 +0100 Subject: [PATCH 0395/1100] Add OFB block mode to AES-128/192/256 Adds a new configuration of MBEDTLS_CIPHER_MODE_OFB and OFB mode to AES. --- include/mbedtls/aes.h | 40 ++++++++++++++++++++++++++++++++++++++ include/mbedtls/config.h | 7 +++++++ library/aes.c | 31 ++++++++++++++++++++++++++++- library/version_features.c | 3 +++ 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index dd5c1183a5..a84d7ec030 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -296,6 +296,46 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, unsigned char *output ); #endif /*MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) +/** + * \brief This function performs an AES-OFB (Output Feedback Mode) encryption + * or decryption operation. + * + * For OFB, you must set up the context with mbedtls_aes_setkey_enc(), + * regardless of whether you are performing an encryption or decryption + * operation. This is because OFB mode uses the same key schedule for + * encryption and decryption. + * + * The OFB operation is identical for encryption or decryption, therefore + * no operation mode needs to be specified. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you must either save it manually or use the cipher + * module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * \param length The length of the input data. + * \param iv_off The offset in IV (updated after use). + * \param iv The initialization vector (updated after use). + * \param input The buffer holding the input data. + * \param output The buffer holding the output data. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) /** * \brief This function performs an AES-CTR encryption or decryption diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index ae10a4d728..af95b74405 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -501,6 +501,13 @@ */ #define MBEDTLS_CIPHER_MODE_CBC +/** + * \def MBEDTLS_CIPHER_MODE_OFB + * + * Enable Output Feedback mode (OFB) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_OFB + /** * \def MBEDTLS_CIPHER_MODE_CFB * diff --git a/library/aes.c b/library/aes.c index fea9b5383d..ef14671141 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1061,7 +1061,36 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, return( 0 ); } -#endif /*MBEDTLS_CIPHER_MODE_CFB */ +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_OFB) +/* + * AES-OFB (Output Feedback Mode) buffer encryption/decryption + */ +int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + size_t n = *iv_off; + + while( length-- ) + { + if( n == 0 ) + mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + + *output++ = *input++ ^ iv[n]; + + n = ( n + 1 ) & 0x0F; + } + + *iv_off = n; + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_OFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) /* diff --git a/library/version_features.c b/library/version_features.c index e8e448f6f8..889dd09bd0 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -249,6 +249,9 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_MODE_CBC) "MBEDTLS_CIPHER_MODE_CBC", #endif /* MBEDTLS_CIPHER_MODE_CBC */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) + "MBEDTLS_CIPHER_MODE_OFB", +#endif /* MBEDTLS_CIPHER_MODE_OFB */ #if defined(MBEDTLS_CIPHER_MODE_CFB) "MBEDTLS_CIPHER_MODE_CFB", #endif /* MBEDTLS_CIPHER_MODE_CFB */ From 0301884f007b4025f4a743e450cdd10a99f03053 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 22 Apr 2018 22:57:58 +0100 Subject: [PATCH 0396/1100] Add test cases for AES OFB block mode Adds test cases from NIST SP800-38A for OFB block mode to AES-128/192/256, for the configuration of MBEDTLS_CIPHER_MODE_OFB. --- tests/Makefile | 11 +++++- tests/suites/test_suite_aes.function | 52 ++++++++++++++++++++++++++++ tests/suites/test_suite_aes.ofb.data | 35 +++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 tests/suites/test_suite_aes.ofb.data diff --git a/tests/Makefile b/tests/Makefile index 8efecf3520..e68c1f383a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -46,7 +46,8 @@ LOCAL_LDFLAGS += -lz endif APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ - test_suite_aes.cfb$(EXEXT) test_suite_aes.rest$(EXEXT) \ + test_suite_aes.cfb$(EXEXT) test_suite_aes.ofb$(EXEXT) \ + test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ @@ -110,6 +111,10 @@ test_suite_aes.cfb.c : suites/test_suite_aes.function suites/test_suite_aes.cfb. echo " Gen $@" perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.cfb +test_suite_aes.ofb.c : suites/test_suite_aes.function suites/test_suite_aes.ofb.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.ofb + test_suite_aes.rest.c : suites/test_suite_aes.function suites/test_suite_aes.rest.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.rest @@ -210,6 +215,10 @@ test_suite_aes.cfb$(EXEXT): test_suite_aes.cfb.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_aes.ofb$(EXEXT): test_suite_aes.ofb.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_aes.rest$(EXEXT): test_suite_aes.rest.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index c5f0eaac97..e1792dd5ae 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -289,6 +289,58 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_OFB */ +void aes_encrypt_ofb( int fragment_size, char *hex_key_string, + char *hex_iv_string, char *hex_src_string, + char *hex_dst_string ) +{ + unsigned char key_str[100]; + unsigned char iv_str[100]; + unsigned char src_str[200]; + unsigned char dst_str[200]; + unsigned char output[200]; + mbedtls_aes_context ctx; + size_t iv_offset = 0; + int in_buffer_len; + unsigned char* src_str_next; + int key_len, iv_len; + + memset(key_str, 0x00, 100); + memset(iv_str, 0x00, 100); + memset(src_str, 0x00, 200); + memset(dst_str, 0x00, 200); + memset(output, 0x00, 200); + mbedtls_aes_init( &ctx ); + + key_len = unhexify( key_str, hex_key_string ); + iv_len = unhexify( iv_str, hex_iv_string ); + in_buffer_len = unhexify( src_str, hex_src_string ); + + mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); + src_str_next = src_str; + + while( in_buffer_len > 0 ) + { + TEST_ASSERT( mbedtls_aes_crypt_ofb( &ctx, fragment_size, &iv_offset, + iv_str, src_str_next, output ) == 0 ); + + hexify( dst_str, output, fragment_size ); + TEST_ASSERT( strncmp( (char *) dst_str, hex_dst_string, + ( 2 * fragment_size) ) == 0 ); + + in_buffer_len -= fragment_size; + hex_dst_string += ( fragment_size * 2 ); + src_str_next += fragment_size; + + if( in_buffer_len < fragment_size ) + fragment_size = in_buffer_len; + } + +exit: + mbedtls_aes_free( &ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ void aes_selftest() { diff --git a/tests/suites/test_suite_aes.ofb.data b/tests/suites/test_suite_aes.ofb.data new file mode 100644 index 0000000000..4b9d80e8d9 --- /dev/null +++ b/tests/suites/test_suite_aes.ofb.data @@ -0,0 +1,35 @@ +# NIST Special Publication 800-38A +# Recommendation for Block Cipher Modes of Operation +# Test Vectors - Appendix F, Section F.4 +OFB-AES128.Encrypt - Single block +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"2b7e151628aed2a6abf7158809cf4f3c":"000102030405060708090a0b0c0d0e0f":"6bc1bee22e409f96e93d7e117393172a":"3b3fd92eb72dad20333449f8e83cfb4a" + +OFB-AES128.Encrypt - Partial blocks - 7 bytes +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:5:"2b7e151628aed2a6abf7158809cf4f3c":"000102030405060708090a0b0c0d0e0f":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710":"3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e" + +OFB-AES128.Encrypt - Test NIST SP800-38A - F.4.1 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"2b7e151628aed2a6abf7158809cf4f3c":"000102030405060708090a0b0c0d0e0f":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710":"3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e" + +OFB-AES128.Decrypt - Test NIST SP800-38A - F.4.2 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"2b7e151628aed2a6abf7158809cf4f3c":"000102030405060708090a0b0c0d0e0f":"3b3fd92eb72dad20333449f8e83cfb4a7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710" + +OFB-AES192.Encrypt - Test NIST SP800-38A - F.4.3 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b":"000102030405060708090a0b0c0d0e0f":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710":"cdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a" + +OFB-AES192.Decrypt - Test NIST SP800-38A - F.4.4 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b":"000102030405060708090a0b0c0d0e0f":"cdc80d6fddf18cab34c25909c99a4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710" + +OFB-AES256.Encrypt - Test NIST SP800-38A - F.4.5 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4":"000102030405060708090a0b0c0d0e0f":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710":"dc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484" + +OFB-AES256.Decrypt - Test NIST SP800-38A - F.4.6 +depends_on:MBEDTLS_CIPHER_MODE_OFB +aes_encrypt_ofb:16:"603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4":"000102030405060708090a0b0c0d0e0f":"dc7e84bfda79164b7ecd8486985d38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484":"6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710" + From 8c0fd1e881cf052c7a0f59c1bc167b97391034b4 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 22 Apr 2018 22:58:07 +0100 Subject: [PATCH 0397/1100] Add cipher abstraction and test cases for OFB block mode Adds OFB as additional block mode in the cipher abstraction, and additional test cases for that block mode. --- ChangeLog | 2 + include/mbedtls/cipher.h | 3 + include/mbedtls/cipher_internal.h | 9 ++ library/cipher.c | 19 ++++- library/cipher_wrap.c | 82 +++++++++++++++++++ tests/suites/test_suite_cipher.aes.data | 104 ++++++++++++++++++++++++ 6 files changed, 218 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4fbdb3d252..80574f7e4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add support for ARIA cipher (RFC 5794) and associated TLS ciphersuites (RFC 6209). Disabled by default, see MBEDTLS_ARIA_C in config.h + * Add additional block mode, OFB (Output Feedback), to the AES module and + cipher abstraction module. API Changes * Extend the platform module with a util component that contains diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index 46b3bdfefa..0db8fc83f7 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -164,6 +164,9 @@ typedef enum { MBEDTLS_CIPHER_ARIA_128_CCM, /**< Aria cipher with 128-bit key and CCM mode. */ MBEDTLS_CIPHER_ARIA_192_CCM, /**< Aria cipher with 192-bit key and CCM mode. */ MBEDTLS_CIPHER_ARIA_256_CCM, /**< Aria cipher with 256-bit key and CCM mode. */ + MBEDTLS_CIPHER_AES_128_OFB, + MBEDTLS_CIPHER_AES_192_OFB, + MBEDTLS_CIPHER_AES_256_OFB } mbedtls_cipher_type_t; /** Supported cipher modes. */ diff --git a/include/mbedtls/cipher_internal.h b/include/mbedtls/cipher_internal.h index 969ff9ccb8..e761a9ea23 100644 --- a/include/mbedtls/cipher_internal.h +++ b/include/mbedtls/cipher_internal.h @@ -59,11 +59,20 @@ struct mbedtls_cipher_base_t #if defined(MBEDTLS_CIPHER_MODE_CFB) /** Encrypt using CFB (Full length) */ + int (*cfb_func)( void *ctx, mbedtls_operation_t mode, size_t length, size_t *iv_off, unsigned char *iv, const unsigned char *input, unsigned char *output ); #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + /** Encrypt using OFB (Full length) */ + int (*ofb_func)( void *ctx, size_t length, size_t *iv_off, + unsigned char *iv, + const unsigned char *input, + unsigned char *output ); +#endif + #if defined(MBEDTLS_CIPHER_MODE_CTR) /** Encrypt using CTR */ int (*ctr_func)( void *ctx, size_t length, size_t *nc_off, diff --git a/library/cipher.c b/library/cipher.c index a5cd61cdf3..2c599e5481 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -191,10 +191,11 @@ int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, const unsigned char *k ctx->operation = operation; /* - * For CFB and CTR mode always use the encryption key schedule + * For OFB, CFB and CTR mode always use the encryption key schedule */ if( MBEDTLS_ENCRYPT == operation || MBEDTLS_MODE_CFB == ctx->cipher_info->mode || + MBEDTLS_MODE_OFB == ctx->cipher_info->mode || MBEDTLS_MODE_CTR == ctx->cipher_info->mode ) { return ctx->cipher_info->base->setkey_enc_func( ctx->cipher_ctx, key, @@ -424,6 +425,21 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i } #endif /* MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) + if( ctx->cipher_info->mode == MBEDTLS_MODE_OFB ) + { + if( 0 != ( ret = ctx->cipher_info->base->ofb_func( ctx->cipher_ctx, + ilen, &ctx->unprocessed_len, ctx->iv, input, output ) ) ) + { + return( ret ); + } + + *olen = ilen; + + return( 0 ); + } +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) if( ctx->cipher_info->mode == MBEDTLS_MODE_CTR ) { @@ -639,6 +655,7 @@ int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, *olen = 0; if( MBEDTLS_MODE_CFB == ctx->cipher_info->mode || + MBEDTLS_MODE_OFB == ctx->cipher_info->mode || MBEDTLS_MODE_CTR == ctx->cipher_info->mode || MBEDTLS_MODE_GCM == ctx->cipher_info->mode || MBEDTLS_MODE_STREAM == ctx->cipher_info->mode ) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index a9ef8195ca..ef47037ee5 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -142,6 +142,15 @@ static int aes_crypt_cfb128_wrap( void *ctx, mbedtls_operation_t operation, } #endif /* MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) +static int aes_crypt_ofb_wrap( void *ctx, size_t length, size_t *iv_off, + unsigned char *iv, const unsigned char *input, unsigned char *output ) +{ + return mbedtls_aes_crypt_ofb( (mbedtls_aes_context *) ctx, length, iv_off, + iv, input, output ); +} +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) static int aes_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off, unsigned char *nonce_counter, unsigned char *stream_block, @@ -191,6 +200,9 @@ static const mbedtls_cipher_base_t aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) aes_crypt_cfb128_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + aes_crypt_ofb_wrap, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) aes_crypt_ctr_wrap, #endif @@ -306,6 +318,41 @@ static const mbedtls_cipher_info_t aes_256_cfb128_info = { }; #endif /* MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) +static const mbedtls_cipher_info_t aes_128_ofb_info = { + MBEDTLS_CIPHER_AES_128_OFB, + MBEDTLS_MODE_OFB, + 128, + "AES-128-OFB", + 16, + 0, + 16, + &aes_info +}; + +static const mbedtls_cipher_info_t aes_192_ofb_info = { + MBEDTLS_CIPHER_AES_192_OFB, + MBEDTLS_MODE_OFB, + 192, + "AES-192-OFB", + 16, + 0, + 16, + &aes_info +}; + +static const mbedtls_cipher_info_t aes_256_ofb_info = { + MBEDTLS_CIPHER_AES_256_OFB, + MBEDTLS_MODE_OFB, + 256, + "AES-256-OFB", + 16, + 0, + 16, + &aes_info +}; +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) static const mbedtls_cipher_info_t aes_128_ctr_info = { MBEDTLS_CIPHER_AES_128_CTR, @@ -358,6 +405,9 @@ static const mbedtls_cipher_base_t gcm_aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -421,6 +471,9 @@ static const mbedtls_cipher_base_t ccm_aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -548,6 +601,9 @@ static const mbedtls_cipher_base_t camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) camellia_crypt_cfb128_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) camellia_crypt_ctr_wrap, #endif @@ -715,6 +771,9 @@ static const mbedtls_cipher_base_t gcm_camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -778,6 +837,9 @@ static const mbedtls_cipher_base_t ccm_camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1312,6 +1374,9 @@ static const mbedtls_cipher_base_t des_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1357,6 +1422,9 @@ static const mbedtls_cipher_base_t des_ede_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1402,6 +1470,9 @@ static const mbedtls_cipher_base_t des_ede3_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1511,6 +1582,9 @@ static const mbedtls_cipher_base_t blowfish_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) blowfish_crypt_cfb64_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) blowfish_crypt_ctr_wrap, #endif @@ -1621,6 +1695,9 @@ static const mbedtls_cipher_base_t arc4_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1724,6 +1801,11 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_AES_192_CFB128, &aes_192_cfb128_info }, { MBEDTLS_CIPHER_AES_256_CFB128, &aes_256_cfb128_info }, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + { MBEDTLS_CIPHER_AES_128_OFB, &aes_128_ofb_info }, + { MBEDTLS_CIPHER_AES_192_OFB, &aes_192_ofb_info }, + { MBEDTLS_CIPHER_AES_256_OFB, &aes_256_ofb_info }, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) { MBEDTLS_CIPHER_AES_128_CTR, &aes_128_ctr_info }, { MBEDTLS_CIPHER_AES_192_CTR, &aes_192_ctr_info }, diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index e8e9a155c2..e34b70dc9f 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -474,6 +474,110 @@ AES-128 CFB - Encrypt and decrypt 32 bytes in multiple parts 1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_CFB128:128:16:16:-1:16:16:16:16 +AES-128 OFB - Encrypt and decrypt 0 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:0:-1 + +AES-128 OFB - Encrypt and decrypt 1 byte +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:1:-1 + +AES-128 OFB - Encrypt and decrypt 2 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:2:-1 + +AES-128 OFB - Encrypt and decrypt 7 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:7:-1 + +AES-128 OFB - Encrypt and decrypt 8 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:8:-1 + +AES-128 OFB - Encrypt and decrypt 9 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:9:-1 + +AES-128 OFB - Encrypt and decrypt 15 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:15:-1 + +AES-128 OFB - Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:16:-1 + +AES-128 OFB - Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:17:-1 + +AES-128 OFB - Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:31:-1 + +AES-128 OFB - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:32:-1 + +AES-128 OFB - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:33:-1 + +AES-128 OFB - Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:47:-1 + +AES-128 OFB - Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:48:-1 + +AES-128 OFB - Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:49:-1 + +AES-128 OFB - Encrypt and decrypt 0 bytes in multiple parts +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:0:0:-1:0:0:0:0 + +AES-128 OFB - Encrypt and decrypt 1 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:1:0:-1:1:0:1:0 + +AES-128 OFB - Encrypt and decrypt 1 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:0:1:-1:0:1:0:1 + +AES-128 OFB - Encrypt and decrypt 16 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:16:0:-1:16:0:16:0 + +AES-128 OFB - Encrypt and decrypt 16 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:0:16:-1:0:16:0:16 + +AES-128 OFB - Encrypt and decrypt 16 bytes in multiple parts 3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:1:15:-1:1:15:1:15 + +AES-128 OFB - Encrypt and decrypt 16 bytes in multiple parts 4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:15:1:-1:15:1:15:1 + +AES-128 OFB - Encrypt and decrypt 22 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:15:7:-1:15:7:15:7 + +AES-128 OFB - Encrypt and decrypt 22 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:16:6:-1:16:6:16:6 + +AES-128 OFB - Encrypt and decrypt 23 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:17:6:-1:17:6:17:6 + +AES-128 OFB - Encrypt and decrypt 32 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:16:16:-1:16:16:16:16 + AES-128 CTR - Encrypt and decrypt 0 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR enc_dec_buf:MBEDTLS_CIPHER_AES_128_CTR:"AES-128-CTR":128:0:-1 From 7487c5b2c86ebea66015c06b7fea5e64064e89d4 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 29 Apr 2018 00:24:51 +0100 Subject: [PATCH 0398/1100] Add missing OFB entry to null ciphersuite The OFB entry has been omitted from the the null cipher suite definition, null_base_info. --- library/cipher_wrap.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index ef47037ee5..33c71f1073 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -1198,6 +1198,9 @@ static const mbedtls_cipher_base_t ccm_aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif From ad4e4938d1f8ba17539cf1417ccb0a1ba40c2b04 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 29 Apr 2018 00:43:47 +0100 Subject: [PATCH 0399/1100] Fix AES-OFB support for errors, tests and self-test Adds error handling into mbedtls_aes_crypt_ofb for AES errors, a self-test for the OFB mode using NIST SP 800-38A test vectors and adds a check to potential return errors in setting the AES encryption key in the OFB test suite. --- library/aes.c | 140 ++++++++++++++++++++++++++- tests/Makefile | 2 +- tests/suites/test_suite_aes.function | 2 +- 3 files changed, 139 insertions(+), 5 deletions(-) diff --git a/library/aes.c b/library/aes.c index ef14671141..267944a952 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1074,13 +1074,17 @@ int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, const unsigned char *input, unsigned char *output ) { + int ret = 0; size_t n = *iv_off; while( length-- ) { if( n == 0 ) - mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); - + { + ret = mbedtls_aes_crypt_ecb( ctx, MBEDTLS_AES_ENCRYPT, iv, iv ); + if( ret != 0 ) + goto exit; + } *output++ = *input++ ^ iv[n]; n = ( n + 1 ) & 0x0F; @@ -1088,7 +1092,8 @@ int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, *iv_off = n; - return( 0 ); +exit: + return( ret ); } #endif /* MBEDTLS_CIPHER_MODE_OFB */ @@ -1247,6 +1252,72 @@ static const unsigned char aes_test_cfb128_ct[3][64] = }; #endif /* MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) +/* + * AES-OFB test vectors from: + * + * http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + */ +static const unsigned char aes_test_ofb_key[3][32] = +{ + { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, + 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }, + { 0x8E, 0x73, 0xB0, 0xF7, 0xDA, 0x0E, 0x64, 0x52, + 0xC8, 0x10, 0xF3, 0x2B, 0x80, 0x90, 0x79, 0xE5, + 0x62, 0xF8, 0xEA, 0xD2, 0x52, 0x2C, 0x6B, 0x7B }, + { 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, + 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, + 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, + 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 } +}; + +static const unsigned char aes_test_ofb_iv[16] = +{ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F +}; + +static const unsigned char aes_test_ofb_pt[64] = +{ + 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, + 0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A, + 0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, + 0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51, + 0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, + 0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF, + 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, + 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 +}; + +static const unsigned char aes_test_ofb_ct[3][64] = +{ + { 0x3B, 0x3F, 0xD9, 0x2E, 0xB7, 0x2D, 0xAD, 0x20, + 0x33, 0x34, 0x49, 0xF8, 0xE8, 0x3C, 0xFB, 0x4A, + 0x77, 0x89, 0x50, 0x8d, 0x16, 0x91, 0x8f, 0x03, + 0xf5, 0x3c, 0x52, 0xda, 0xc5, 0x4e, 0xd8, 0x25, + 0x97, 0x40, 0x05, 0x1e, 0x9c, 0x5f, 0xec, 0xf6, + 0x43, 0x44, 0xf7, 0xa8, 0x22, 0x60, 0xed, 0xcc, + 0x30, 0x4c, 0x65, 0x28, 0xf6, 0x59, 0xc7, 0x78, + 0x66, 0xa5, 0x10, 0xd9, 0xc1, 0xd6, 0xae, 0x5e }, + { 0xCD, 0xC8, 0x0D, 0x6F, 0xDD, 0xF1, 0x8C, 0xAB, + 0x34, 0xC2, 0x59, 0x09, 0xC9, 0x9A, 0x41, 0x74, + 0xfc, 0xc2, 0x8b, 0x8d, 0x4c, 0x63, 0x83, 0x7c, + 0x09, 0xe8, 0x17, 0x00, 0xc1, 0x10, 0x04, 0x01, + 0x8d, 0x9a, 0x9a, 0xea, 0xc0, 0xf6, 0x59, 0x6f, + 0x55, 0x9c, 0x6d, 0x4d, 0xaf, 0x59, 0xa5, 0xf2, + 0x6d, 0x9f, 0x20, 0x08, 0x57, 0xca, 0x6c, 0x3e, + 0x9c, 0xac, 0x52, 0x4b, 0xd9, 0xac, 0xc9, 0x2a }, + { 0xDC, 0x7E, 0x84, 0xBF, 0xDA, 0x79, 0x16, 0x4B, + 0x7E, 0xCD, 0x84, 0x86, 0x98, 0x5D, 0x38, 0x60, + 0x4f, 0xeb, 0xdc, 0x67, 0x40, 0xd2, 0x0b, 0x3a, + 0xc8, 0x8f, 0x6a, 0xd8, 0x2a, 0x4f, 0xb0, 0x8d, + 0x71, 0xab, 0x47, 0xa0, 0x86, 0xe8, 0x6e, 0xed, + 0xf3, 0x9d, 0x1c, 0x5b, 0xba, 0x97, 0xc4, 0x08, + 0x01, 0x26, 0x14, 0x1d, 0x67, 0xf3, 0x7b, 0xe8, + 0x53, 0x8f, 0x5a, 0x8b, 0xe7, 0x40, 0xe4, 0x84 } +}; +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) /* * AES-CTR test vectors from: @@ -1538,6 +1609,69 @@ int mbedtls_aes_self_test( int verbose ) mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CFB */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) + /* + * OFB mode + */ + for( i = 0; i < 6; i++ ) + { + u = i >> 1; + keybits = 128 + u * 64; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-OFB-%3d (%s): ", keybits, + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memcpy( iv, aes_test_ofb_iv, 16 ); + memcpy( key, aes_test_ofb_key[u], keybits / 8 ); + + offset = 0; + ret = mbedtls_aes_setkey_enc( &ctx, key, keybits ); + /* + * AES-192 is an optional feature that may be unavailable when + * there is an alternative underlying implementation i.e. when + * MBEDTLS_AES_ALT is defined. + */ + if( ret == MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE && keybits == 192 ) + { + mbedtls_printf( "skipped\n" ); + continue; + } + else if( ret != 0 ) + { + goto exit; + } + + if( mode == MBEDTLS_AES_DECRYPT ) + { + memcpy( buf, aes_test_ofb_ct[u], 64 ); + aes_tests = aes_test_ofb_pt; + } + else + { + memcpy( buf, aes_test_ofb_pt, 64 ); + aes_tests = aes_test_ofb_ct[u]; + } + + ret = mbedtls_aes_crypt_ofb( &ctx, 64, &offset, iv, buf, buf ); + if( ret != 0 ) + goto exit; + + if( memcmp( buf, aes_tests, 64 ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + #if defined(MBEDTLS_CIPHER_MODE_CTR) /* * CTR mode diff --git a/tests/Makefile b/tests/Makefile index e68c1f383a..86442c3f11 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -46,7 +46,7 @@ LOCAL_LDFLAGS += -lz endif APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ - test_suite_aes.cfb$(EXEXT) test_suite_aes.ofb$(EXEXT) \ + test_suite_aes.cfb$(EXEXT) test_suite_aes.ofb$(EXEXT) \ test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index e1792dd5ae..fc2cbacc30 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -316,7 +316,7 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, iv_len = unhexify( iv_str, hex_iv_string ); in_buffer_len = unhexify( src_str, hex_src_string ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); + TEST_ASSERT( mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ) == 0 ); src_str_next = src_str; while( in_buffer_len > 0 ) From 6873c845e843ae54635f2c6a51817f6b5c1d498f Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 29 Apr 2018 13:03:20 +0100 Subject: [PATCH 0400/1100] Update cipher.h for OFB block mode documentation Raises the doxygen comments for OFB to the same level as other block modes. --- include/mbedtls/cipher.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index 0db8fc83f7..cde2fbd58b 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -164,9 +164,9 @@ typedef enum { MBEDTLS_CIPHER_ARIA_128_CCM, /**< Aria cipher with 128-bit key and CCM mode. */ MBEDTLS_CIPHER_ARIA_192_CCM, /**< Aria cipher with 192-bit key and CCM mode. */ MBEDTLS_CIPHER_ARIA_256_CCM, /**< Aria cipher with 256-bit key and CCM mode. */ - MBEDTLS_CIPHER_AES_128_OFB, - MBEDTLS_CIPHER_AES_192_OFB, - MBEDTLS_CIPHER_AES_256_OFB + MBEDTLS_CIPHER_AES_128_OFB, /**< AES 128-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_192_OFB, /**< AES 192-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_256_OFB, /**< AES 256-bit cipher in OFB mode. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ @@ -175,7 +175,7 @@ typedef enum { MBEDTLS_MODE_ECB, /**< The ECB cipher mode. */ MBEDTLS_MODE_CBC, /**< The CBC cipher mode. */ MBEDTLS_MODE_CFB, /**< The CFB cipher mode. */ - MBEDTLS_MODE_OFB, /**< The OFB cipher mode - unsupported. */ + MBEDTLS_MODE_OFB, /**< The OFB cipher mode. */ MBEDTLS_MODE_CTR, /**< The CTR cipher mode. */ MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */ MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ From dbe7fbf391a43b2dce084891da5e05d441049cf4 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 29 Apr 2018 14:51:35 +0100 Subject: [PATCH 0401/1100] Remove unused variable in AES OFB test suite Remove iv_len, an unused variable, in AES OFB test suite function, to fix gcc compiler warning. --- tests/suites/test_suite_aes.function | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index fc2cbacc30..c45a9ed6fe 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -303,7 +303,7 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, size_t iv_offset = 0; int in_buffer_len; unsigned char* src_str_next; - int key_len, iv_len; + int key_len; memset(key_str, 0x00, 100); memset(iv_str, 0x00, 100); @@ -313,7 +313,7 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, mbedtls_aes_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); - iv_len = unhexify( iv_str, hex_iv_string ); + unhexify( iv_str, hex_iv_string ); in_buffer_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ) == 0 ); From 374bcd425568b6223e8ee7fc1f0ceb655706f14d Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 20 May 2018 23:07:34 +0100 Subject: [PATCH 0402/1100] Add to OFB cipher tests AES-192 and AES-256 OFB --- tests/suites/test_suite_cipher.aes.data | 210 +++++++++++++++++++++++- 1 file changed, 209 insertions(+), 1 deletion(-) diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index e34b70dc9f..2fd581e7dd 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -518,7 +518,7 @@ AES-128 OFB - Encrypt and decrypt 32 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:32:-1 -AES-128 OFB - Encrypt and decrypt 32 bytes +AES-128 OFB - Encrypt and decrypt 33 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB enc_dec_buf:MBEDTLS_CIPHER_AES_128_OFB:"AES-128-OFB":128:33:-1 @@ -578,6 +578,214 @@ AES-128 OFB - Encrypt and decrypt 32 bytes in multiple parts 1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_128_OFB:128:16:16:-1:16:16:16:16 +AES-192 OFB - Encrypt and decrypt 0 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:0:-1 + +AES-192 OFB - Encrypt and decrypt 1 byte +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:1:-1 + +AES-192 OFB - Encrypt and decrypt 2 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:2:-1 + +AES-192 OFB - Encrypt and decrypt 7 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:7:-1 + +AES-192 OFB - Encrypt and decrypt 8 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:8:-1 + +AES-192 OFB - Encrypt and decrypt 9 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:9:-1 + +AES-192 OFB - Encrypt and decrypt 15 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:15:-1 + +AES-192 OFB - Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:16:-1 + +AES-192 OFB - Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:17:-1 + +AES-192 OFB - Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:31:-1 + +AES-192 OFB - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:32:-1 + +AES-192 OFB - Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:33:-1 + +AES-192 OFB - Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:47:-1 + +AES-192 OFB - Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:48:-1 + +AES-192 OFB - Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_192_OFB:"AES-192-OFB":192:49:-1 + +AES-192 OFB - Encrypt and decrypt 0 bytes in multiple parts +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:0:0:-1:0:0:0:0 + +AES-192 OFB - Encrypt and decrypt 1 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:1:0:-1:1:0:1:0 + +AES-192 OFB - Encrypt and decrypt 1 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:0:1:-1:0:1:0:1 + +AES-192 OFB - Encrypt and decrypt 16 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:16:0:-1:16:0:16:0 + +AES-192 OFB - Encrypt and decrypt 16 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:0:16:-1:0:16:0:16 + +AES-192 OFB - Encrypt and decrypt 16 bytes in multiple parts 3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:1:15:-1:1:15:1:15 + +AES-192 OFB - Encrypt and decrypt 16 bytes in multiple parts 4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:15:1:-1:15:1:15:1 + +AES-192 OFB - Encrypt and decrypt 22 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:15:7:-1:15:7:15:7 + +AES-192 OFB - Encrypt and decrypt 22 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:16:6:-1:16:6:16:6 + +AES-192 OFB - Encrypt and decrypt 23 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:17:6:-1:17:6:17:6 + +AES-192 OFB - Encrypt and decrypt 32 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_192_OFB:192:16:16:-1:16:16:16:16 + +AES-256 OFB - Encrypt and decrypt 0 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:0:-1 + +AES-256 OFB - Encrypt and decrypt 1 byte +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:1:-1 + +AES-256 OFB - Encrypt and decrypt 2 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:2:-1 + +AES-256 OFB - Encrypt and decrypt 7 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:7:-1 + +AES-256 OFB - Encrypt and decrypt 8 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:8:-1 + +AES-256 OFB - Encrypt and decrypt 9 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:9:-1 + +AES-256 OFB - Encrypt and decrypt 15 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:15:-1 + +AES-256 OFB - Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:16:-1 + +AES-256 OFB - Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:17:-1 + +AES-256 OFB - Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:31:-1 + +AES-256 OFB - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:32:-1 + +AES-256 OFB - Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:33:-1 + +AES-256 OFB - Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:47:-1 + +AES-256 OFB - Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:48:-1 + +AES-256 OFB - Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf:MBEDTLS_CIPHER_AES_256_OFB:"AES-256-OFB":256:49:-1 + +AES-256 OFB - Encrypt and decrypt 0 bytes in multiple parts +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:0:0:-1:0:0:0:0 + +AES-256 OFB - Encrypt and decrypt 1 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:1:0:-1:1:0:1:0 + +AES-256 OFB - Encrypt and decrypt 1 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:0:1:-1:0:1:0:1 + +AES-256 OFB - Encrypt and decrypt 16 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:16:0:-1:16:0:16:0 + +AES-256 OFB - Encrypt and decrypt 16 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:0:16:-1:0:16:0:16 + +AES-256 OFB - Encrypt and decrypt 16 bytes in multiple parts 3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:1:15:-1:1:15:1:15 + +AES-256 OFB - Encrypt and decrypt 16 bytes in multiple parts 4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:15:1:-1:15:1:15:1 + +AES-256 OFB - Encrypt and decrypt 22 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:15:7:-1:15:7:15:7 + +AES-256 OFB - Encrypt and decrypt 22 bytes in multiple parts 2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:16:6:-1:16:6:16:6 + +AES-256 OFB - Encrypt and decrypt 23 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:17:6:-1:17:6:17:6 + +AES-256 OFB - Encrypt and decrypt 32 bytes in multiple parts 1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:16:16:-1:16:16:16:16 + AES-128 CTR - Encrypt and decrypt 0 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR enc_dec_buf:MBEDTLS_CIPHER_AES_128_CTR:"AES-128-CTR":128:0:-1 From 00131446be32d830d92f9d40b5cb949940e00160 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 22 May 2018 22:40:36 +0100 Subject: [PATCH 0403/1100] Fix style and formatting for OFB feature --- include/mbedtls/cipher_internal.h | 1 - library/aes.c | 10 +++++----- tests/suites/test_suite_aes.function | 6 +++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/cipher_internal.h b/include/mbedtls/cipher_internal.h index e761a9ea23..e02b7f1132 100644 --- a/include/mbedtls/cipher_internal.h +++ b/include/mbedtls/cipher_internal.h @@ -59,7 +59,6 @@ struct mbedtls_cipher_base_t #if defined(MBEDTLS_CIPHER_MODE_CFB) /** Encrypt using CFB (Full length) */ - int (*cfb_func)( void *ctx, mbedtls_operation_t mode, size_t length, size_t *iv_off, unsigned char *iv, const unsigned char *input, unsigned char *output ); diff --git a/library/aes.c b/library/aes.c index 267944a952..c221613b0a 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1068,11 +1068,11 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * AES-OFB (Output Feedback Mode) buffer encryption/decryption */ int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, - size_t length, - size_t *iv_off, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ) + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) { int ret = 0; size_t n = *iv_off; diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index c45a9ed6fe..9d25666e0f 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -291,8 +291,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_OFB */ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, - char *hex_iv_string, char *hex_src_string, - char *hex_dst_string ) + char *hex_iv_string, char *hex_src_string, + char *hex_dst_string ) { unsigned char key_str[100]; unsigned char iv_str[100]; @@ -326,7 +326,7 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, hexify( dst_str, output, fragment_size ); TEST_ASSERT( strncmp( (char *) dst_str, hex_dst_string, - ( 2 * fragment_size) ) == 0 ); + ( 2 * fragment_size ) ) == 0 ); in_buffer_len -= fragment_size; hex_dst_string += ( fragment_size * 2 ); From 968646c079cc831359b3f130b7046e2d2a640a80 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sat, 2 Jun 2018 18:27:04 +0100 Subject: [PATCH 0404/1100] Clarify comments on use of AES OFB block mode --- include/mbedtls/aes.h | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index a84d7ec030..1289c5aac7 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -309,13 +309,22 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * The OFB operation is identical for encryption or decryption, therefore * no operation mode needs to be specified. * - * \note Upon exit, the content of the IV is updated so that you can - * call the same function again on the next - * block(s) of data and get the same result as if it was - * encrypted in one call. This allows a "streaming" usage. - * If you need to retain the contents of the - * IV, you must either save it manually or use the cipher - * module instead. + * \note Upon exit, the content of iv, the Initialisation Vector, is updated + * so that you can call the same function again on the next block(s) of + * data and get the same result as if it was encrypted in one call. This + * allows a "streaming" usage, by initialising iv_off to 0 before the + * first call, and preserving its value between calls. + * + * For block by block usage, (or non-streaming use), the iv should be + * initialised on each call to a unique value, and iv_off set to 0 on + * each call. + * + * If you need to retain the contents of the initialisation vector, you + * must either save it manually or use the cipher module instead. + * + * For the OFB mode, the initiallisation vector must be unique and must + * be unique for every encryption operation. Reuse of an initialisation + * vector will compromise security. * * * \param ctx The AES context to use for encryption or decryption. From e416bf93d261cddbb246b80ff4b5357bab34c026 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sat, 2 Jun 2018 18:28:32 +0100 Subject: [PATCH 0405/1100] Reduce stack usage for AES OFB tests Reduced the size of allocated buffers to the minimum for OFB tests. --- tests/suites/test_suite_aes.function | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 9d25666e0f..24e8f7ab61 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -294,24 +294,29 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[200]; - unsigned char dst_str[200]; - unsigned char output[200]; + unsigned char key_str[32]; + unsigned char iv_str[16]; + unsigned char src_str[64]; + unsigned char dst_str[64]; + unsigned char output[32]; mbedtls_aes_context ctx; size_t iv_offset = 0; int in_buffer_len; unsigned char* src_str_next; int key_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 200); - memset(dst_str, 0x00, 200); - memset(output, 0x00, 200); + memset(key_str, 0x00, 32); + memset(iv_str, 0x00, 16); + memset(src_str, 0x00, 64); + memset(dst_str, 0x00, 64); + memset(output, 0x00, 32); mbedtls_aes_init( &ctx ); + TEST_ASSERT( strlen( hex_key_string ) <= ( 32 * 2 ) ); + TEST_ASSERT( strlen( hex_iv_string ) <= ( 16 * 2 ) ); + TEST_ASSERT( strlen( hex_src_string ) <= ( 64 * 2 ) ); + TEST_ASSERT( strlen( hex_dst_string ) <= ( 64 * 2 ) ); + key_len = unhexify( key_str, hex_key_string ); unhexify( iv_str, hex_iv_string ); in_buffer_len = unhexify( src_str, hex_src_string ); From b7836e1e8c71c7ffad9e6b740b89875a0493936c Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sat, 2 Jun 2018 18:36:49 +0100 Subject: [PATCH 0406/1100] Change AES OFB tests to memset sizeof buffer --- tests/suites/test_suite_aes.function | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 24e8f7ab61..f1e9033bb0 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -305,11 +305,11 @@ void aes_encrypt_ofb( int fragment_size, char *hex_key_string, unsigned char* src_str_next; int key_len; - memset(key_str, 0x00, 32); - memset(iv_str, 0x00, 16); - memset(src_str, 0x00, 64); - memset(dst_str, 0x00, 64); - memset(output, 0x00, 32); + memset( key_str, 0x00, sizeof( key_str ) ); + memset( iv_str, 0x00, sizeof( iv_str ) ); + memset( src_str, 0x00, sizeof( src_str ) ); + memset( dst_str, 0x00, sizeof( dst_str ) ); + memset( output, 0x00, sizeof( output ) ); mbedtls_aes_init( &ctx ); TEST_ASSERT( strlen( hex_key_string ) <= ( 32 * 2 ) ); From 33cb519cdad88aa6d9ba29b52de3b9d3ad32e522 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 3 Jun 2018 17:34:50 +0100 Subject: [PATCH 0407/1100] Add decrypt tests to AES OFB Cipher module Adds additional tests for AES-128, AES-192, and AES-256, for OFB block mode, for the cipher wrapper module. --- tests/suites/test_suite_cipher.aes.data | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index 2fd581e7dd..475c91ed44 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -1126,6 +1126,18 @@ AES Decrypt test vector #6 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB decrypt_test_vec:MBEDTLS_CIPHER_AES_256_CFB128:-1:"ffffffffff800000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"be66cfea2fecd6bf0ec7b4352c99bcaa":"00000000000000000000000000000000":"":"":0:0 +AES Decrypt test vector #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +decrypt_test_vec:MBEDTLS_CIPHER_AES_128_OFB:-1:"2B7E151628AED2A6ABF7158809CF4F3C":"000102030405060708090A0B0C0D0E0F":"3B3FD92EB72DAD20333449F8E83CFB4A7789508d16918f03f53c52dac54ed8259740051e9c5fecf64344f7a82260edcc304c6528f659c77866a510d9c1d6ae5e":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0: + +AES Decrypt test vector #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +decrypt_test_vec:MBEDTLS_CIPHER_AES_192_OFB:-1:"8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B":"000102030405060708090A0B0C0D0E0F":"CDC80D6FDDF18CAB34C25909C99A4174fcc28b8d4c63837c09e81700c11004018d9a9aeac0f6596f559c6d4daf59a5f26d9f200857ca6c3e9cac524bd9acc92a":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0: + +AES Decrypt test vector #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB +decrypt_test_vec:MBEDTLS_CIPHER_AES_256_OFB:-1:"603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4":"000102030405060708090A0B0C0D0E0F":"DC7E84BFDA79164B7ECD8486985D38604febdc6740d20b3ac88f6ad82a4fb08d71ab47a086e86eedf39d1c5bba97c4080126141d67f37be8538f5a8be740e484":"6BC1BEE22E409F96E93D7E117393172AAE2D8A571E03AC9C9EB76FAC45AF8E5130C81C46A35CE411E5FBC1191A0A52EFF69F2445DF4F9B17AD2B417BE66C3710":"":"":0:0: + AES-128-ECB Encrypt NIST KAT #1 depends_on:MBEDTLS_AES_C test_vec_ecb:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0 From 5db13621ec5a39af465c2d56fec5fbb46f2dc536 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 4 Jun 2018 22:11:25 +0100 Subject: [PATCH 0408/1100] Clarify documentation for AES OFB 1. Changed reference/link to NIST SP800-38A 2. Clarified language around AES-OFB usage --- include/mbedtls/aes.h | 45 ++++++++++++++++++++++--------------------- library/aes.c | 2 +- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 1289c5aac7..de5ffada1f 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -298,34 +298,35 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, #if defined(MBEDTLS_CIPHER_MODE_OFB) /** - * \brief This function performs an AES-OFB (Output Feedback Mode) encryption - * or decryption operation. + * \brief This function performs an AES-OFB (Output Feedback Mode) + * encryption or decryption operation. * - * For OFB, you must set up the context with mbedtls_aes_setkey_enc(), - * regardless of whether you are performing an encryption or decryption - * operation. This is because OFB mode uses the same key schedule for - * encryption and decryption. + * For OFB, you must set up the context with + * mbedtls_aes_setkey_enc(), regardless of whether you are + * performing an encryption or decryption operation. This is + * because OFB mode uses the same key schedule for encryption and + * decryption. * - * The OFB operation is identical for encryption or decryption, therefore - * no operation mode needs to be specified. + * The OFB operation is identical for encryption or decryption, + * therefore no operation mode needs to be specified. * - * \note Upon exit, the content of iv, the Initialisation Vector, is updated - * so that you can call the same function again on the next block(s) of - * data and get the same result as if it was encrypted in one call. This - * allows a "streaming" usage, by initialising iv_off to 0 before the - * first call, and preserving its value between calls. + * \note Upon exit, the content of iv, the Initialisation Vector, is + * updated so that you can call the same function again on the next + * block(s) of data and get the same result as if it was encrypted + * in one call. This allows a "streaming" usage, by initialising + * iv_off to 0 before the first call, and preserving its value + * between calls. * - * For block by block usage, (or non-streaming use), the iv should be - * initialised on each call to a unique value, and iv_off set to 0 on - * each call. + * For non-streaming use, the iv should be initialised on each call + * to a unique value, and iv_off set to 0 on each call. * - * If you need to retain the contents of the initialisation vector, you - * must either save it manually or use the cipher module instead. - * - * For the OFB mode, the initiallisation vector must be unique and must - * be unique for every encryption operation. Reuse of an initialisation - * vector will compromise security. + * If you need to retain the contents of the initialisation vector, + * you must either save it manually or use the cipher module + * instead. * + * \warning For the OFB mode, the initiallisation vector must be unique and + * must be unique for every encryption operation. Reuse of an + * initialisation vector will compromise security. * * \param ctx The AES context to use for encryption or decryption. * \param length The length of the input data. diff --git a/library/aes.c b/library/aes.c index c221613b0a..e27e40a86b 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1256,7 +1256,7 @@ static const unsigned char aes_test_cfb128_ct[3][64] = /* * AES-OFB test vectors from: * - * http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + * https://csrc.nist.gov/publications/detail/sp/800-38a/final */ static const unsigned char aes_test_ofb_key[3][32] = { From cb2c935a54c21290413bf5ff75ce46b7cf715809 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 8 Jun 2018 10:34:08 +0100 Subject: [PATCH 0409/1100] aes: Clarify IV requirements for OFB mode Combine the two "must be unique" phrases into one for clarity. An IV that is universally unique is also unique for each encryption operation. --- include/mbedtls/aes.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index de5ffada1f..e48981ab9d 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -324,9 +324,9 @@ int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, * you must either save it manually or use the cipher module * instead. * - * \warning For the OFB mode, the initiallisation vector must be unique and - * must be unique for every encryption operation. Reuse of an - * initialisation vector will compromise security. + * \warning For the OFB mode, the initialisation vector must be unique + * every encryption operation. Reuse of an initialisation vector + * will compromise security. * * \param ctx The AES context to use for encryption or decryption. * \param length The length of the input data. From 4844bf2b5c53047aa0c57776b697a97d2f0606b8 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 11 Jun 2018 15:21:05 +0100 Subject: [PATCH 0410/1100] Add OFB as additional block mode Following rebasing on the development branch which introduced the ARIA cipher, OFB was missing as a block mode from some cipher tables. --- library/cipher_wrap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index 33c71f1073..fd6e69cb31 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -968,6 +968,9 @@ static const mbedtls_cipher_base_t aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) aria_crypt_cfb128_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) aria_crypt_ctr_wrap, #endif @@ -1135,6 +1138,9 @@ static const mbedtls_cipher_base_t gcm_aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif @@ -1764,6 +1770,9 @@ static const mbedtls_cipher_base_t null_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif From 3cde2fca53d2f80b90739c0ec8a73fb7a25d9b69 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 12 Jun 2018 14:17:39 +0200 Subject: [PATCH 0411/1100] ssl_async_resume: free the operation context on error --- programs/ssl/ssl_server2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index ac3d1b1c7b..a7b019c7fe 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1077,6 +1077,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, { mbedtls_printf( "Async resume callback: %s done but injected error\n", op_name ); + mbedtls_free( ctx ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } From ebe23ed738997dc076760247303480488776874f Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 12 Jun 2018 16:46:45 +0100 Subject: [PATCH 0412/1100] Fix up the ChangeLog for the new version Fix the ChangeLog for the next version of Mbed TLS following merge of PR #1593. --- ChangeLog | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80574f7e4a..152706ea92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,16 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Features + * Add additional block mode, OFB (Output Feedback), to the AES module and + cipher abstraction module. + = mbed TLS 2.10.0 branch released 2018-06-06 Features * Add support for ARIA cipher (RFC 5794) and associated TLS ciphersuites (RFC 6209). Disabled by default, see MBEDTLS_ARIA_C in config.h - * Add additional block mode, OFB (Output Feedback), to the AES module and - cipher abstraction module. API Changes * Extend the platform module with a util component that contains From c7638fab2946fbbda3cbbf3fdbc79ae0b6c9dcec Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 12 Jun 2018 16:54:02 +0100 Subject: [PATCH 0413/1100] Fix ChangeLog entry after merge of HKDF Fix Changelog entry for the next version of Mbed TLS after merge of HKDF PR, --- ChangeLog | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ed35093fa..fa235f8090 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add additional block mode, OFB (Output Feedback), to the AES module and cipher abstraction module. + * Implement the HMAC-based extract-and-expand key derivation function + (HKDF) per RFC 5869. Contributed by Thomas Fossati. = mbed TLS 2.10.0 branch released 2018-06-06 @@ -73,10 +75,6 @@ API Changes This function is necessary to determine when it is safe to idle on the underlying transport in case event-driven IO is used. -Features - * Implement the HMAC-based extract-and-expand key derivation function - (HKDF) per RFC 5869. Contributed by Thomas Fossati. - Bugfix * Fix a spurious uninitialized variable warning in cmac.c. Fix independently contributed by Brian J Murray and David Brown. From b11de306c424c0206a7c4eff1031286236f901d2 Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Mon, 27 Nov 2017 17:12:14 +0000 Subject: [PATCH 0414/1100] Fix braces in mbedtls_memory_buffer_alloc_status() --- ChangeLog | 1 + library/memory_buffer_alloc.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4fbdb3d252..b2605e92aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,6 +20,7 @@ API Changes Bugfix * Fix an issue with MicroBlaze support in bn_mul.h which was causing the build to fail. Found by zv-io. Fixes #1651. + * Fix braces in mbedtls_memory_buffer_alloc_status(). Found by sbranden, #552. Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. diff --git a/library/memory_buffer_alloc.c b/library/memory_buffer_alloc.c index ceaeda1e73..51ea7c41d7 100644 --- a/library/memory_buffer_alloc.c +++ b/library/memory_buffer_alloc.c @@ -518,7 +518,9 @@ void mbedtls_memory_buffer_alloc_status( void ) heap.alloc_count, heap.free_count ); if( heap.first->next == NULL ) + { mbedtls_fprintf( stderr, "All memory de-allocated in stack buffer\n" ); + } else { mbedtls_fprintf( stderr, "Memory currently allocated:\n" ); From 601144e1999df809e682e5eabf836ae1be07213b Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 12 Jun 2018 17:04:58 +0100 Subject: [PATCH 0415/1100] Add entry to ChangeLog for PR #795 PR #795 fixes issue #777, 'check matching issuer crt and key for all algs' and needs a ChangeLog entry --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index fa235f8090..b8a3879d95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,10 @@ Features * Implement the HMAC-based extract-and-expand key derivation function (HKDF) per RFC 5869. Contributed by Thomas Fossati. +Bugfix + * Fix the cert_write example to handle certificates signed with elliptic + curves as well as RSA. Fixes #777 found by dbedev. + = mbed TLS 2.10.0 branch released 2018-06-06 Features From f3987b3b2465c48aee00424a802b71fd8b44a144 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 12 Jun 2018 17:07:43 +0100 Subject: [PATCH 0416/1100] Add ChangeLog entry for CCM* CCM* in PR #1667 is a feature and a functional enhancement and was missing a ChangeLog entry. --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index b8a3879d95..23e04669ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ Features cipher abstraction module. * Implement the HMAC-based extract-and-expand key derivation function (HKDF) per RFC 5869. Contributed by Thomas Fossati. + * Add support for the CCM* block cipher mode as defined in IEEE Std. 802.15.4. Bugfix * Fix the cert_write example to handle certificates signed with elliptic From 4ed3880a10d868ce42fe99b90f294c3d22ac8a36 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 12 Jun 2018 17:35:06 +0100 Subject: [PATCH 0417/1100] Fix ChangeLog whitespace errors and add entry for PR #1646 PR #1646 is a change to the behaviour of the CMake files therefore should be recorded in the Changelog. --- ChangeLog | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23e04669ca..8061792ae2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,15 +3,18 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Features - * Add additional block mode, OFB (Output Feedback), to the AES module and - cipher abstraction module. - * Implement the HMAC-based extract-and-expand key derivation function - (HKDF) per RFC 5869. Contributed by Thomas Fossati. - * Add support for the CCM* block cipher mode as defined in IEEE Std. 802.15.4. + * Add additional block mode, OFB (Output Feedback), to the AES module and + cipher abstraction module. + * Implement the HMAC-based extract-and-expand key derivation function + (HKDF) per RFC 5869. Contributed by Thomas Fossati. + * Add support for the CCM* block cipher mode as defined in IEEE Std. 802.15.4. Bugfix - * Fix the cert_write example to handle certificates signed with elliptic - curves as well as RSA. Fixes #777 found by dbedev. + * Fix the cert_write example to handle certificates signed with elliptic + curves as well as RSA. Fixes #777 found by dbedev. + +Changes + * Changed CMake defaults for IAR to treat all compiler warnings as errors. = mbed TLS 2.10.0 branch released 2018-06-06 From c06c9ae0885d170b416b860e4a2371a867dcb6d2 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 12 Jun 2018 18:29:28 +0100 Subject: [PATCH 0418/1100] Add alias APPLE make var of APPLE_BUILD --- library/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/Makefile b/library/Makefile index 60e9cbcc4a..9affde4177 100644 --- a/library/Makefile +++ b/library/Makefile @@ -21,6 +21,8 @@ endif # if were running on Windows build for Windows ifdef WINDOWS WINDOWS_BUILD=1 +else ifdef APPLE +APPLE_BUILD=1 endif # To compile as a shared library: From 9b04e19129bdaacc68cada54bd84e4a66e52ee52 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 12 Jun 2018 20:16:03 +0100 Subject: [PATCH 0419/1100] Use grep to detect zeroize test failures on GDB This patch uses grep to search the GDB output for errors as there is a bug in the tool that causes it to return 0 to the system even though there was a problem in the script. This patch also fixes the zeroize test to work with the --keep-going option in all.sh. --- tests/scripts/all.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 4894ad9b56..439a6bf130 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -896,12 +896,29 @@ cd "$MBEDTLS_ROOT_DIR" rm -rf "$OUT_OF_SOURCE_DIR" unset MBEDTLS_ROOT_DIR +# Test that the function mbedtls_platform_zeroize() is not optimized away by +# different combinations of compilers and optimization flags by using an +# auxiliary GDB script. Unfortunately, GDB does not return error values to the +# system in all cases that the script fails, so we must manually search the +# output to check whether the pass string is present and no failure strings +# were printed. for optimization_flag in -O2 -O3 -Ofast -Os; do for compiler in clang gcc; do msg "test: $compiler $optimization_flag, mbedtls_platform_zeroize()" cleanup - CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" make programs - gdb -x tests/scripts/test_zeroize.gdb -nw -batch -nx + make programs CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" + if_build_succeeded gdb -x tests/scripts/test_zeroize.gdb -nw -batch -nx > test_zeroize.log 2>&1 + if [ ! -s test_zeroize.log ]; then + err_msg "test_zeroize.log was not found or is empty" + record_status [ -s test_zeroize.log ] + elif ! grep "The buffer was correctly zeroized" test_zeroize.log >/dev/null 2>&1; then + err_msg "test_zeroize.log does not contain pass string" + record_status false + elif grep -i "error" test_zeroize.log >/dev/null 2>&1; then + err_msg "test_zeroize.log contains error string" + record_status false + fi + rm -f test_zeroize.log done done From 7decfe8c1ed6a5da39fffb547a1b27ef0bb04ee1 Mon Sep 17 00:00:00 2001 From: Roberto Vargas Date: Mon, 4 Jun 2018 13:54:09 +0100 Subject: [PATCH 0420/1100] Convert mbedtls_free and mbedtls_calloc into functions When MBEDTLS_PLATFORM_MEMORY is defined but MBEDTLS_PLATFORM_FREE_MACRO or MBEDTLS_PLATFORM_CALLOC_MACRO are not defined then the actual functions used to allocate and free memory are stored in function pointers. These pointers are exposed to the caller, and it means that the caller and the library have to share a data section. In TF-A, we execute in a very constrained environment, where some images are executed from ROM and other images are executed from SRAM. The images that are executed from ROM cannot be modified. The SRAM size is very small and we are moving libraries to the ROM that can be shared between the different SRAM images. These SRAM images could import all the symbols used in mbedtls, but it would create an undesirable hard binary dependency between the different images. For this reason, all the library functions in ROM are accesed using a jump table whose base address is known, allowing the images to execute with different versions of the ROM. This commit changes the function pointers to actual functions, so that the SRAM images only have to use the new exported symbols (mbedtls_calloc and mbedtls_free) using the jump table. In our scenario, mbedtls_platform_set_calloc_free is called from mbedtls_memory_buffer_alloc_init which initializes the function pointers to the internal buffer_alloc_calloc and buffer_alloc_free functions. No functional changes to mbedtls_memory_buffer_alloc_init. Signed-off-by: Roberto Vargas --- include/mbedtls/platform.h | 4 ++-- library/platform.c | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index bba770911e..9d9c5293eb 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -121,8 +121,8 @@ extern "C" { #else /* For size_t */ #include -extern void * (*mbedtls_calloc)( size_t n, size_t size ); -extern void (*mbedtls_free)( void *ptr ); +extern void *mbedtls_calloc( size_t n, size_t size ); +extern void mbedtls_free( void *ptr ); /** * \brief This function dynamically sets the memory-management diff --git a/library/platform.c b/library/platform.c index 9e992875d9..b24b2fa652 100644 --- a/library/platform.c +++ b/library/platform.c @@ -51,14 +51,24 @@ static void platform_free_uninit( void *ptr ) #define MBEDTLS_PLATFORM_STD_FREE platform_free_uninit #endif /* !MBEDTLS_PLATFORM_STD_FREE */ -void * (*mbedtls_calloc)( size_t, size_t ) = MBEDTLS_PLATFORM_STD_CALLOC; -void (*mbedtls_free)( void * ) = MBEDTLS_PLATFORM_STD_FREE; +static void * (*mbedtls_calloc_func)( size_t, size_t ) = MBEDTLS_PLATFORM_STD_CALLOC; +static void (*mbedtls_free_func)( void * ) = MBEDTLS_PLATFORM_STD_FREE; + +void * mbedtls_calloc( size_t nmemb, size_t size ) +{ + return (*mbedtls_calloc_func)( nmemb, size ); +} + +void mbedtls_free( void * ptr ) +{ + (*mbedtls_free_func)( ptr ); +} int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ), void (*free_func)( void * ) ) { - mbedtls_calloc = calloc_func; - mbedtls_free = free_func; + mbedtls_calloc_func = calloc_func; + mbedtls_free_func = free_func; return( 0 ); } #endif /* MBEDTLS_PLATFORM_MEMORY */ From c471cd7e0a68de83f4132fb48e9497f96ff8d43a Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 13 Jun 2018 09:28:04 +0100 Subject: [PATCH 0421/1100] Autodetect if running on OS X in makefile --- library/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Makefile b/library/Makefile index 9affde4177..89bc84f11c 100644 --- a/library/Makefile +++ b/library/Makefile @@ -21,7 +21,7 @@ endif # if were running on Windows build for Windows ifdef WINDOWS WINDOWS_BUILD=1 -else ifdef APPLE +else ifeq ($(shell uname -s),Darwin) APPLE_BUILD=1 endif From 1d9375919a5d78d07611379784f9a9edbeb918fa Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 13 Jun 2018 10:04:58 +0100 Subject: [PATCH 0422/1100] Conditionally assign APPLE_BUILD var in makefile --- library/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Makefile b/library/Makefile index 89bc84f11c..b1ef8d3f6c 100644 --- a/library/Makefile +++ b/library/Makefile @@ -22,7 +22,7 @@ endif ifdef WINDOWS WINDOWS_BUILD=1 else ifeq ($(shell uname -s),Darwin) -APPLE_BUILD=1 +APPLE_BUILD ?= 1 endif # To compile as a shared library: From d0a66ccde3c0e7cb99d9f67aa436cf13535b2e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Jun 2018 09:53:21 +0200 Subject: [PATCH 0423/1100] post-merge: fix ECDSA test vector testing The way we do negative tests only works if the initial test was positive. This was not immediately apparent with the set of test data at the time the code for negative testing was introduced, but it became apparent with the addition of the "0 private value" / "overlong private value" tests that happened in development while this branch was developed. --- tests/suites/test_suite_ecdsa.function | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 4e4ee6d543..d87c98e4c5 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -88,18 +88,18 @@ void ecdsa_prim_test_vectors( int id, char *d_str, char *xQ_str, char *yQ_str, TEST_ASSERT( mbedtls_mpi_cmp_mpi( &s, &s_check ) == 0 ); TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, &Q, &r_check, &s_check ) == 0 ); + + TEST_ASSERT( mbedtls_mpi_sub_int( &r, &r, 1 ) == 0 ); + TEST_ASSERT( mbedtls_mpi_add_int( &s, &s, 1 ) == 0 ); + + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &Q, &r, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &Q, &r_check, &s ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, + &grp.G, &r_check, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); } - TEST_ASSERT( mbedtls_mpi_sub_int( &r, &r, 1 ) == 0 ); - TEST_ASSERT( mbedtls_mpi_add_int( &s, &s, 1 ) == 0 ); - - TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, - &Q, &r, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); - TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, - &Q, &r_check, &s ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); - TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, - &grp.G, &r_check, &s_check ) == MBEDTLS_ERR_ECP_VERIFY_FAILED ); - exit: mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &Q ); From b5d668a7a7eef6ca5b1b2e3d152cf0ecf5cf8ca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Jun 2018 11:22:01 +0200 Subject: [PATCH 0424/1100] post-merge: adapt ssl-opt.sh to new error values The numerical value of the error code was changed when merging development into this branch; now adapt ssl-opt.sh to the new value. --- tests/ssl-opt.sh | 80 ++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index d90c12ede0..d45be5a6f5 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4076,10 +4076,10 @@ run_test "EC restart: TLS, default" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1" \ 0 \ - -C "x509_verify_cert.*4b80" \ - -C "mbedtls_pk_verify.*4b80" \ - -C "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" + -C "x509_verify_cert.*4b00" \ + -C "mbedtls_pk_verify.*4b00" \ + -C "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=0" \ @@ -4088,10 +4088,10 @@ run_test "EC restart: TLS, max_ops=0" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=0" \ 0 \ - -C "x509_verify_cert.*4b80" \ - -C "mbedtls_pk_verify.*4b80" \ - -C "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" + -C "x509_verify_cert.*4b00" \ + -C "mbedtls_pk_verify.*4b00" \ + -C "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=65535" \ @@ -4100,10 +4100,10 @@ run_test "EC restart: TLS, max_ops=65535" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=65535" \ 0 \ - -C "x509_verify_cert.*4b80" \ - -C "mbedtls_pk_verify.*4b80" \ - -C "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" + -C "x509_verify_cert.*4b00" \ + -C "mbedtls_pk_verify.*4b00" \ + -C "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=1000" \ @@ -4112,10 +4112,10 @@ run_test "EC restart: TLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000" \ 0 \ - -c "x509_verify_cert.*4b80" \ - -c "mbedtls_pk_verify.*4b80" \ - -c "mbedtls_ecdh_make_public.*4b80" \ - -c "mbedtls_pk_sign.*4b80" + -c "x509_verify_cert.*4b00" \ + -c "mbedtls_pk_verify.*4b00" \ + -c "mbedtls_ecdh_make_public.*4b00" \ + -c "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=1000, badsign" \ @@ -4126,10 +4126,10 @@ run_test "EC restart: TLS, max_ops=1000, badsign" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000" \ 1 \ - -c "x509_verify_cert.*4b80" \ - -C "mbedtls_pk_verify.*4b80" \ - -C "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" \ + -c "x509_verify_cert.*4b00" \ + -C "mbedtls_pk_verify.*4b00" \ + -C "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" \ -c "! The certificate is not correctly signed by the trusted CA" \ -c "! mbedtls_ssl_handshake returned" \ -c "X509 - Certificate verification failed" @@ -4143,10 +4143,10 @@ run_test "EC restart: TLS, max_ops=1000, auth_mode=optional badsign" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000 auth_mode=optional" \ 0 \ - -c "x509_verify_cert.*4b80" \ - -c "mbedtls_pk_verify.*4b80" \ - -c "mbedtls_ecdh_make_public.*4b80" \ - -c "mbedtls_pk_sign.*4b80" \ + -c "x509_verify_cert.*4b00" \ + -c "mbedtls_pk_verify.*4b00" \ + -c "mbedtls_ecdh_make_public.*4b00" \ + -c "mbedtls_pk_sign.*4b00" \ -c "! The certificate is not correctly signed by the trusted CA" \ -C "! mbedtls_ssl_handshake returned" \ -C "X509 - Certificate verification failed" @@ -4160,10 +4160,10 @@ run_test "EC restart: TLS, max_ops=1000, auth_mode=none badsign" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ debug_level=1 ec_max_ops=1000 auth_mode=none" \ 0 \ - -C "x509_verify_cert.*4b80" \ - -c "mbedtls_pk_verify.*4b80" \ - -c "mbedtls_ecdh_make_public.*4b80" \ - -c "mbedtls_pk_sign.*4b80" \ + -C "x509_verify_cert.*4b00" \ + -c "mbedtls_pk_verify.*4b00" \ + -c "mbedtls_ecdh_make_public.*4b00" \ + -c "mbedtls_pk_sign.*4b00" \ -C "! The certificate is not correctly signed by the trusted CA" \ -C "! mbedtls_ssl_handshake returned" \ -C "X509 - Certificate verification failed" @@ -4175,10 +4175,10 @@ run_test "EC restart: DTLS, max_ops=1000" \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ dtls=1 debug_level=1 ec_max_ops=1000" \ 0 \ - -c "x509_verify_cert.*4b80" \ - -c "mbedtls_pk_verify.*4b80" \ - -c "mbedtls_ecdh_make_public.*4b80" \ - -c "mbedtls_pk_sign.*4b80" + -c "x509_verify_cert.*4b00" \ + -c "mbedtls_pk_verify.*4b00" \ + -c "mbedtls_ecdh_make_public.*4b00" \ + -c "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=1000 no client auth" \ @@ -4186,10 +4186,10 @@ run_test "EC restart: TLS, max_ops=1000 no client auth" \ "$P_CLI force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ debug_level=1 ec_max_ops=1000" \ 0 \ - -c "x509_verify_cert.*4b80" \ - -c "mbedtls_pk_verify.*4b80" \ - -c "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" + -c "x509_verify_cert.*4b00" \ + -c "mbedtls_pk_verify.*4b00" \ + -c "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" requires_config_enabled MBEDTLS_ECP_RESTARTABLE run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \ @@ -4197,10 +4197,10 @@ run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \ "$P_CLI force_ciphersuite=TLS-ECDHE-PSK-WITH-AES-128-CBC-SHA256 \ psk=abc123 debug_level=1 ec_max_ops=1000" \ 0 \ - -C "x509_verify_cert.*4b80" \ - -C "mbedtls_pk_verify.*4b80" \ - -C "mbedtls_ecdh_make_public.*4b80" \ - -C "mbedtls_pk_sign.*4b80" + -C "x509_verify_cert.*4b00" \ + -C "mbedtls_pk_verify.*4b00" \ + -C "mbedtls_ecdh_make_public.*4b00" \ + -C "mbedtls_pk_sign.*4b00" # Tests for DTLS HelloVerifyRequest From 558da9c3feee5d4376fcb9f481af18152165a467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Jun 2018 12:02:12 +0200 Subject: [PATCH 0425/1100] Make SSL error code more generic It's undesirable to have users of the SSL layer check for an error code specific to a lower-level layer, both out of general layering principles, and also because if we later make another crypto module gain resume capabilities, we would need to change the contract again (checking for a new module-specific error code). --- include/mbedtls/error.h | 2 +- include/mbedtls/ssl.h | 1 + library/error.c | 2 ++ library/ssl_cli.c | 20 ++++++++++++++++++++ library/ssl_tls.c | 2 +- programs/ssl/ssl_client2.c | 18 +++++++++--------- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 22895e1c2f..29c1c21a93 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -90,7 +90,7 @@ * ECP 4 10 (Started from top) * MD 5 5 * CIPHER 6 8 - * SSL 6 17 (Started from top) + * SSL 6 22 (Started from top) * SSL 7 31 * * Module dependent error code (5 bits 0x.00.-0x.F8.) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 250031a6d3..def20dbec7 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -120,6 +120,7 @@ #define MBEDTLS_ERR_SSL_NON_FATAL -0x6680 /**< The alert message received indicates a non-fatal error. */ #define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 /**< Couldn't set the hash for verifying CertificateVerify */ #define MBEDTLS_ERR_SSL_CONTINUE_PROCESSING -0x6580 /**< Internal-only message signaling that further message-processing should be done */ +#define MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS -0x6500 /**< A cryptographic operation is in progress. Try again later. */ /* * Various constants diff --git a/library/error.c b/library/error.c index a2de275637..4dc13a4263 100644 --- a/library/error.c +++ b/library/error.c @@ -499,6 +499,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "SSL - Couldn't set the hash for verifying CertificateVerify" ); if( use_ret == -(MBEDTLS_ERR_SSL_CONTINUE_PROCESSING) ) mbedtls_snprintf( buf, buflen, "SSL - Internal-only message signaling that further message-processing should be done" ); + if( use_ret == -(MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) ) + mbedtls_snprintf( buf, buflen, "SSL - A cryptographic operation is in progress. Try again later" ); #endif /* MBEDTLS_SSL_TLS_C */ #if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 7a6ffe0440..1937ec519e 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2055,6 +2055,10 @@ static int ssl_parse_server_ecdh_params( mbedtls_ssl_context *ssl, (const unsigned char **) p, end ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ecdh_read_params" ), ret ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; +#endif return( ret ); } @@ -2619,6 +2623,10 @@ start_processing: mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, MBEDTLS_SSL_ALERT_MSG_DECRYPT_ERROR ); MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_verify", ret ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; +#endif return( ret ); } } @@ -2933,6 +2941,10 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) if( ret != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_make_public", ret ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; +#endif return( ret ); } @@ -2956,6 +2968,10 @@ ecdh_calc_secret: ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_calc_secret", ret ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; +#endif return( ret ); } @@ -3313,6 +3329,10 @@ sign: ssl->conf->f_rng, ssl->conf->p_rng, rs_ctx ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_pk_sign", ret ); +#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; +#endif return( ret ); } diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8364eb868a..2ebf128772 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4683,7 +4683,7 @@ crt_verify: #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - return( ret ); + return( MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ); #endif /* diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index b11bedd460..0e3e1ed07a 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -1516,7 +1516,7 @@ int main( int argc, char *argv[] ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret != MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n", -ret ); @@ -1533,7 +1533,7 @@ int main( int argc, char *argv[] ) } #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) continue; #endif @@ -1630,7 +1630,7 @@ int main( int argc, char *argv[] ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret != MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_renegotiate returned %d\n\n", ret ); @@ -1695,7 +1695,7 @@ send_request: { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret != MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_write returned -0x%x\n\n", -ret ); @@ -1721,7 +1721,7 @@ send_request: ret = mbedtls_ssl_write( &ssl, buf, len ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) continue; #endif @@ -1779,7 +1779,7 @@ send_request: ret = mbedtls_ssl_read( &ssl, buf, len ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) continue; #endif @@ -1844,7 +1844,7 @@ send_request: ret = mbedtls_ssl_read( &ssl, buf, len ); #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) continue; #endif @@ -1911,7 +1911,7 @@ send_request: { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret != MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -ret ); @@ -2010,7 +2010,7 @@ reconnect: { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret != MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) { mbedtls_printf( " failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -ret ); From 9f52aebe2e19d13d427a64ac66dbfb085b2f74da Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 2 May 2018 17:04:24 +0100 Subject: [PATCH 0426/1100] tests: Fix name of 33 byte AES cipher tests We named the tests "32 bytes", but actually tested with 33 bytes. Fix the mistake. --- tests/suites/test_suite_cipher.aes.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index 475c91ed44..4ac1cb56b6 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -414,7 +414,7 @@ AES-128 CFB - Encrypt and decrypt 32 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB enc_dec_buf:MBEDTLS_CIPHER_AES_128_CFB128:"AES-128-CFB128":128:32:-1 -AES-128 CFB - Encrypt and decrypt 32 bytes +AES-128 CFB - Encrypt and decrypt 33 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CFB enc_dec_buf:MBEDTLS_CIPHER_AES_128_CFB128:"AES-128-CFB128":128:33:-1 @@ -830,7 +830,7 @@ AES-128 CTR - Encrypt and decrypt 32 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR enc_dec_buf:MBEDTLS_CIPHER_AES_128_CTR:"AES-128-CTR":128:32:-1 -AES-128 CTR - Encrypt and decrypt 32 bytes +AES-128 CTR - Encrypt and decrypt 33 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR enc_dec_buf:MBEDTLS_CIPHER_AES_128_CTR:"AES-128-CTR":128:33:-1 From b053658f95d7bd1b40a2cffd594e81c22e4e9e06 Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 12:08:23 +0100 Subject: [PATCH 0427/1100] Add 2 files for multiplication in GF(128) Multiplication in GF(128) is required by the AES-XEX mode for computing X in the XEX formula from https://en.wikipedia.org/wiki/Disk_encryption_theory#Xor-encrypt-xor_.28XEX.29 --- include/mbedtls/gf128mul.h | 46 ++++++++++++++++++++++ library/CMakeLists.txt | 1 + library/gf128mul.c | 78 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 include/mbedtls/gf128mul.h create mode 100644 library/gf128mul.c diff --git a/include/mbedtls/gf128mul.h b/include/mbedtls/gf128mul.h new file mode 100644 index 0000000000..41de39c426 --- /dev/null +++ b/include/mbedtls/gf128mul.h @@ -0,0 +1,46 @@ +/** + * \file gf128mul.h + * + * \brief Fast multiplication in GF(128) + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_GF128MUL_H +#define MBEDTLS_GF128MUL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Big-Endian definition for 128 bits elements + */ +typedef unsigned char be128[16]; + +/** + * \brief Multiplication in GF(128): + * r = x times x^4 times x^8 in GF(2^128) + * + * \param x the 128-bits number you want to multiply + * \param r result + */ +void gf128mul_x_ble(be128 r, const be128 x); + + + +#endif /* gf128mul.h */ \ No newline at end of file diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 60fa7f8f31..03d3f6c652 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -29,6 +29,7 @@ set(src_crypto entropy_poll.c error.c gcm.c + gf128mul.c havege.c hkdf.c hmac_drbg.c diff --git a/library/gf128mul.c b/library/gf128mul.c new file mode 100644 index 0000000000..251398f477 --- /dev/null +++ b/library/gf128mul.c @@ -0,0 +1,78 @@ +/* + * GF(2^128) multiplication functions + * + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#include + +#include "mbedtls/gf128mul.h" + +/* Endianess with 64 bits values */ +#ifndef GET_UINT64_LE +#define GET_UINT64_LE(n,b,i) \ +{ \ + (n) = ( (uint64_t) (b)[(i) + 7] << 56 ) \ + | ( (uint64_t) (b)[(i) + 6] << 48 ) \ + | ( (uint64_t) (b)[(i) + 5] << 40 ) \ + | ( (uint64_t) (b)[(i) + 4] << 32 ) \ + | ( (uint64_t) (b)[(i) + 3] << 24 ) \ + | ( (uint64_t) (b)[(i) + 2] << 16 ) \ + | ( (uint64_t) (b)[(i) + 1] << 8 ) \ + | ( (uint64_t) (b)[(i) ] ); \ +} +#endif + +#ifndef PUT_UINT64_LE +#define PUT_UINT64_LE(n,b,i) \ +{ \ + (b)[(i) + 7] = (unsigned char) ( (n) >> 56 ); \ + (b)[(i) + 6] = (unsigned char) ( (n) >> 48 ); \ + (b)[(i) + 5] = (unsigned char) ( (n) >> 40 ); \ + (b)[(i) + 4] = (unsigned char) ( (n) >> 32 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) ] = (unsigned char) ( (n) ); \ +} +#endif + + +/* Jump table for not having ifs */ +static const uint16_t gf128mul_table_bbe[2] = { 0x00, 0x87 }; + + +/* + * This function multiply a field element by x, by x^4 and by x^8 + * in the polynomial field representation. It uses 64-bit word operations + * to gain speed but compensates for machine endianess and hence works + * correctly on both styles of machine. + */ +void mbedtls_gf128mul_x_ble(mbedtls_be128 r, const mbedtls_be128 x) +{ + uint64_t a, b, ra, rb; + + GET_UINT64_LE(a, x, 0); + GET_UINT64_LE(b, x, 8); + + ra = (a << 1) ^ gf128mul_table_bbe[b >> 63]; + rb = (a >> 63) | (b << 1); + + PUT_UINT64_LE(ra, r, 0); + PUT_UINT64_LE(rb, r, 8); +} + From 0089d36ae5a7ad3d25cda2c3b3524ff0ce2c408a Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 12:15:51 +0100 Subject: [PATCH 0428/1100] Implement AES-XEX mode XEX mode, known as "xor-encrypt-xor", is the simple case of the XTS mode, known as "XEX with ciphertext stealing". When the buffers to be encrypted/decrypted have a length divisible by the length of a standard AES block (16), XTS is exactly like XEX. --- include/mbedtls/aes.h | 24 ++++++++++++++++++++ library/aes.c | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index e48981ab9d..652281c7e5 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -213,6 +213,30 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ +#if defined(MBEDTLS_CIPHER_MODE_XEX) +/** + * \brief AES-XEX buffer encryption/decryption + * Length should be a multiple of the block size (16 bytes) + * + * \param crypt_ctx AES context for encrypting data + * \param tweak_ctx AES context for xor-ing with data + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param length length of the input data + * \param iv initialization vector + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + */ +int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, + mbedtls_aes_context *tweak_ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_XEX */ + #if defined(MBEDTLS_CIPHER_MODE_CFB) /** * \brief This function performs an AES-CFB128 encryption or decryption diff --git a/library/aes.c b/library/aes.c index e27e40a86b..766aa21a79 100644 --- a/library/aes.c +++ b/library/aes.c @@ -44,6 +44,10 @@ #include "mbedtls/aesni.h" #endif +#if defined(MBEDTLS_CIPHER_MODE_XEX) +#include "mbedtls/gf128mul.h" +#endif + #if defined(MBEDTLS_SELF_TEST) #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" @@ -983,6 +987,55 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, } #endif /* MBEDTLS_CIPHER_MODE_CBC */ +#if defined(MBEDTLS_CIPHER_MODE_XEX) +/* + * AES-XEX buffer encryption/decryption + */ +int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, + mbedtls_aes_context *tweak_ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + int i; + unsigned char t_buf[16]; + unsigned char scratch[16]; + + if( length % 16 ) + return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); + + + mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf ); + + goto first; + + do + { + gf128mul_x_ble( t_buf, t_buf ); + +first: + /* PP <- T xor P */ + for( i = 0; i < 16; i++ ) + scratch[i] = (unsigned char)( input[i] ^ t_buf[i] ); + + /* CC <- E(Key2,PP) */ + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch, output ); + + /* C <- T xor CC */ + for( i = 0; i < 16; i++ ) + output[i] = (unsigned char)( output[i] ^ t_buf[i] ); + + input += 16; + output += 16; + length -= 16; + } while( length > 0 ); + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_XEX */ + #if defined(MBEDTLS_CIPHER_MODE_CFB) /* * AES-CFB128 buffer encryption/decryption From 75e3661ebee78b2a1a57a5595734f88e8514f80a Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 12:27:19 +0100 Subject: [PATCH 0429/1100] Add AES-XEX mode to the default config file Adding the AES-XEX mode to the default config file permits this mode to be compiled, and tested, which may be needed for some programs in the future. --- include/mbedtls/config.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 709f6cf0fa..09379a0946 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -501,6 +501,13 @@ */ #define MBEDTLS_CIPHER_MODE_CBC +/** + * \def MBEDTLS_CIPHER_MODE_XEX + * + * Enable Xor-encrypt-xor mode (XEX) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_XEX + /** * \def MBEDTLS_CIPHER_MODE_OFB * From fb67fae83a80d62de37249cad99149eda87ee3ce Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 12:30:55 +0100 Subject: [PATCH 0430/1100] Add AES-XEX tests cases The test cases come from the XTS test vectors given by the CAVP initiative from NIST (see [1]). As mentioned in a previous commit, XEX is a simpler case of XTS. Therefore, to construct the test_suite_aes.xex.data file, extraction of the XEX-possible cases has been done on the given test vectors. All of the extracted test vectors pass the tests on a Linux x86_64 machine. [1] http://csrc.nist.gov/groups/STM/cavp/documents/aes/XTSTestVectors.zip --- tests/CMakeLists.txt | 1 + tests/suites/test_suite_aes.function | 74 + tests/suites/test_suite_aes.xex.data | 3600 ++++++++++++++++++++++++++ 3 files changed, 3675 insertions(+) create mode 100644 tests/suites/test_suite_aes.xex.data diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 653687bebf..4c938c6fa0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -48,6 +48,7 @@ add_test_suite(aes aes.ecb) add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) add_test_suite(aes aes.rest) +add_test_suite(aes aes.xex) add_test_suite(arc4) add_test_suite(aria) add_test_suite(asn1write) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index f1e9033bb0..947976a886 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -151,6 +151,80 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XEX */ +void aes_encrypt_xex( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int xex_result ) +{ + unsigned char key_str[100] = { 0, }; + unsigned char iv_str[100] = { 0, }; + unsigned char src_str[100] = { 0, }; + unsigned char dst_str[100] = { 0, }; + unsigned char output[100] = { 0, }; + mbedtls_aes_context crypt_ctx, tweak_ctx; + int key_len, data_len; + + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aes_setkey_enc( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); + mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + + TEST_ASSERT( mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == xex_result ); + if( xex_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XEX */ +void aes_decrypt_xex( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int xex_result ) +{ + unsigned char key_str[100] = { 0, }; + unsigned char iv_str[100] = { 0, }; + unsigned char src_str[100] = { 0, }; + unsigned char dst_str[100] = { 0, }; + unsigned char output[100] = { 0, }; + mbedtls_aes_context crypt_ctx, tweak_ctx; + int key_len, data_len; + + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aes_setkey_dec( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); + mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + + TEST_ASSERT( mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == xex_result ); + if( xex_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ void aes_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string ) diff --git a/tests/suites/test_suite_aes.xex.data b/tests/suites/test_suite_aes.xex.data new file mode 100644 index 0000000000..e12890d917 --- /dev/null +++ b/tests/suites/test_suite_aes.xex.data @@ -0,0 +1,3600 @@ +AES-128-XEX Encrypt NIST XTSTestVectors #1 +aes_encrypt_xex:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #2 +aes_encrypt_xex:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #3 +aes_encrypt_xex:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #4 +aes_encrypt_xex:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #5 +aes_encrypt_xex:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #6 +aes_encrypt_xex:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #7 +aes_encrypt_xex:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #8 +aes_encrypt_xex:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #9 +aes_encrypt_xex:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #10 +aes_encrypt_xex:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #11 +aes_encrypt_xex:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #12 +aes_encrypt_xex:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #13 +aes_encrypt_xex:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #14 +aes_encrypt_xex:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #15 +aes_encrypt_xex:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #16 +aes_encrypt_xex:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #17 +aes_encrypt_xex:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #18 +aes_encrypt_xex:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #19 +aes_encrypt_xex:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #20 +aes_encrypt_xex:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #21 +aes_encrypt_xex:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #22 +aes_encrypt_xex:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #23 +aes_encrypt_xex:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #24 +aes_encrypt_xex:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #25 +aes_encrypt_xex:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #26 +aes_encrypt_xex:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #27 +aes_encrypt_xex:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #28 +aes_encrypt_xex:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #29 +aes_encrypt_xex:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #30 +aes_encrypt_xex:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #31 +aes_encrypt_xex:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #32 +aes_encrypt_xex:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #33 +aes_encrypt_xex:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #34 +aes_encrypt_xex:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #35 +aes_encrypt_xex:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #36 +aes_encrypt_xex:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #37 +aes_encrypt_xex:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #38 +aes_encrypt_xex:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #39 +aes_encrypt_xex:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #40 +aes_encrypt_xex:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #41 +aes_encrypt_xex:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #42 +aes_encrypt_xex:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #43 +aes_encrypt_xex:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #44 +aes_encrypt_xex:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #45 +aes_encrypt_xex:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #46 +aes_encrypt_xex:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #47 +aes_encrypt_xex:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #48 +aes_encrypt_xex:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #49 +aes_encrypt_xex:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #50 +aes_encrypt_xex:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #51 +aes_encrypt_xex:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #52 +aes_encrypt_xex:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #53 +aes_encrypt_xex:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #54 +aes_encrypt_xex:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #55 +aes_encrypt_xex:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #56 +aes_encrypt_xex:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #57 +aes_encrypt_xex:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #58 +aes_encrypt_xex:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #59 +aes_encrypt_xex:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #60 +aes_encrypt_xex:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #61 +aes_encrypt_xex:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #62 +aes_encrypt_xex:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #63 +aes_encrypt_xex:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #64 +aes_encrypt_xex:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #65 +aes_encrypt_xex:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #66 +aes_encrypt_xex:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #67 +aes_encrypt_xex:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #68 +aes_encrypt_xex:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #69 +aes_encrypt_xex:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #70 +aes_encrypt_xex:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #71 +aes_encrypt_xex:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #72 +aes_encrypt_xex:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #73 +aes_encrypt_xex:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #74 +aes_encrypt_xex:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #75 +aes_encrypt_xex:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #76 +aes_encrypt_xex:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #77 +aes_encrypt_xex:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #78 +aes_encrypt_xex:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #79 +aes_encrypt_xex:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #80 +aes_encrypt_xex:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #81 +aes_encrypt_xex:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #82 +aes_encrypt_xex:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #83 +aes_encrypt_xex:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #84 +aes_encrypt_xex:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #85 +aes_encrypt_xex:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #86 +aes_encrypt_xex:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #87 +aes_encrypt_xex:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #88 +aes_encrypt_xex:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #89 +aes_encrypt_xex:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #90 +aes_encrypt_xex:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #91 +aes_encrypt_xex:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #92 +aes_encrypt_xex:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #93 +aes_encrypt_xex:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #94 +aes_encrypt_xex:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #95 +aes_encrypt_xex:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #96 +aes_encrypt_xex:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #97 +aes_encrypt_xex:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #98 +aes_encrypt_xex:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #99 +aes_encrypt_xex:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #100 +aes_encrypt_xex:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #101 +aes_encrypt_xex:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #102 +aes_encrypt_xex:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #103 +aes_encrypt_xex:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #104 +aes_encrypt_xex:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #105 +aes_encrypt_xex:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #106 +aes_encrypt_xex:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #107 +aes_encrypt_xex:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #108 +aes_encrypt_xex:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #109 +aes_encrypt_xex:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #110 +aes_encrypt_xex:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #111 +aes_encrypt_xex:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #112 +aes_encrypt_xex:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #113 +aes_encrypt_xex:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #114 +aes_encrypt_xex:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #115 +aes_encrypt_xex:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #116 +aes_encrypt_xex:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #117 +aes_encrypt_xex:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #118 +aes_encrypt_xex:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #119 +aes_encrypt_xex:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #120 +aes_encrypt_xex:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #121 +aes_encrypt_xex:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #122 +aes_encrypt_xex:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #123 +aes_encrypt_xex:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #124 +aes_encrypt_xex:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #125 +aes_encrypt_xex:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #126 +aes_encrypt_xex:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #127 +aes_encrypt_xex:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #128 +aes_encrypt_xex:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #129 +aes_encrypt_xex:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #130 +aes_encrypt_xex:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #131 +aes_encrypt_xex:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #132 +aes_encrypt_xex:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #133 +aes_encrypt_xex:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #134 +aes_encrypt_xex:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #135 +aes_encrypt_xex:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #136 +aes_encrypt_xex:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #137 +aes_encrypt_xex:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #138 +aes_encrypt_xex:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #139 +aes_encrypt_xex:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #140 +aes_encrypt_xex:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #141 +aes_encrypt_xex:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #142 +aes_encrypt_xex:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #143 +aes_encrypt_xex:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #144 +aes_encrypt_xex:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #145 +aes_encrypt_xex:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #146 +aes_encrypt_xex:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #147 +aes_encrypt_xex:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #148 +aes_encrypt_xex:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #149 +aes_encrypt_xex:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #150 +aes_encrypt_xex:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #151 +aes_encrypt_xex:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #152 +aes_encrypt_xex:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #153 +aes_encrypt_xex:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #154 +aes_encrypt_xex:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #155 +aes_encrypt_xex:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #156 +aes_encrypt_xex:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #157 +aes_encrypt_xex:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #158 +aes_encrypt_xex:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #159 +aes_encrypt_xex:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #160 +aes_encrypt_xex:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #161 +aes_encrypt_xex:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #162 +aes_encrypt_xex:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #163 +aes_encrypt_xex:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #164 +aes_encrypt_xex:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #165 +aes_encrypt_xex:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #166 +aes_encrypt_xex:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #167 +aes_encrypt_xex:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #168 +aes_encrypt_xex:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #169 +aes_encrypt_xex:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #170 +aes_encrypt_xex:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #171 +aes_encrypt_xex:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #172 +aes_encrypt_xex:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #173 +aes_encrypt_xex:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #174 +aes_encrypt_xex:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #175 +aes_encrypt_xex:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #176 +aes_encrypt_xex:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #177 +aes_encrypt_xex:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #178 +aes_encrypt_xex:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #179 +aes_encrypt_xex:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #180 +aes_encrypt_xex:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #181 +aes_encrypt_xex:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #182 +aes_encrypt_xex:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #183 +aes_encrypt_xex:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #184 +aes_encrypt_xex:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #185 +aes_encrypt_xex:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #186 +aes_encrypt_xex:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #187 +aes_encrypt_xex:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #188 +aes_encrypt_xex:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #189 +aes_encrypt_xex:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #190 +aes_encrypt_xex:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #191 +aes_encrypt_xex:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #192 +aes_encrypt_xex:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #193 +aes_encrypt_xex:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #194 +aes_encrypt_xex:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #195 +aes_encrypt_xex:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #196 +aes_encrypt_xex:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #197 +aes_encrypt_xex:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #198 +aes_encrypt_xex:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #199 +aes_encrypt_xex:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #200 +aes_encrypt_xex:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #201 +aes_encrypt_xex:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #202 +aes_encrypt_xex:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #203 +aes_encrypt_xex:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #204 +aes_encrypt_xex:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #205 +aes_encrypt_xex:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #206 +aes_encrypt_xex:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #207 +aes_encrypt_xex:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #208 +aes_encrypt_xex:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #209 +aes_encrypt_xex:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #210 +aes_encrypt_xex:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #211 +aes_encrypt_xex:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #212 +aes_encrypt_xex:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #213 +aes_encrypt_xex:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #214 +aes_encrypt_xex:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #215 +aes_encrypt_xex:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #216 +aes_encrypt_xex:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #217 +aes_encrypt_xex:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #218 +aes_encrypt_xex:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #219 +aes_encrypt_xex:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #220 +aes_encrypt_xex:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #221 +aes_encrypt_xex:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #222 +aes_encrypt_xex:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #223 +aes_encrypt_xex:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #224 +aes_encrypt_xex:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #225 +aes_encrypt_xex:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #226 +aes_encrypt_xex:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #227 +aes_encrypt_xex:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #228 +aes_encrypt_xex:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #229 +aes_encrypt_xex:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #230 +aes_encrypt_xex:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #231 +aes_encrypt_xex:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #232 +aes_encrypt_xex:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #233 +aes_encrypt_xex:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #234 +aes_encrypt_xex:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #235 +aes_encrypt_xex:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #236 +aes_encrypt_xex:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #237 +aes_encrypt_xex:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #238 +aes_encrypt_xex:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #239 +aes_encrypt_xex:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #240 +aes_encrypt_xex:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #241 +aes_encrypt_xex:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #242 +aes_encrypt_xex:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #243 +aes_encrypt_xex:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #244 +aes_encrypt_xex:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #245 +aes_encrypt_xex:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #246 +aes_encrypt_xex:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #247 +aes_encrypt_xex:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #248 +aes_encrypt_xex:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #249 +aes_encrypt_xex:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #250 +aes_encrypt_xex:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #251 +aes_encrypt_xex:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #252 +aes_encrypt_xex:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #253 +aes_encrypt_xex:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #254 +aes_encrypt_xex:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #255 +aes_encrypt_xex:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #256 +aes_encrypt_xex:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #257 +aes_encrypt_xex:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #258 +aes_encrypt_xex:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #259 +aes_encrypt_xex:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #260 +aes_encrypt_xex:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #261 +aes_encrypt_xex:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #262 +aes_encrypt_xex:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #263 +aes_encrypt_xex:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #264 +aes_encrypt_xex:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #265 +aes_encrypt_xex:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #266 +aes_encrypt_xex:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #267 +aes_encrypt_xex:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #268 +aes_encrypt_xex:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #269 +aes_encrypt_xex:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #270 +aes_encrypt_xex:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #271 +aes_encrypt_xex:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #272 +aes_encrypt_xex:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #273 +aes_encrypt_xex:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #274 +aes_encrypt_xex:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #275 +aes_encrypt_xex:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #276 +aes_encrypt_xex:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #277 +aes_encrypt_xex:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #278 +aes_encrypt_xex:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #279 +aes_encrypt_xex:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #280 +aes_encrypt_xex:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #281 +aes_encrypt_xex:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #282 +aes_encrypt_xex:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #283 +aes_encrypt_xex:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #284 +aes_encrypt_xex:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #285 +aes_encrypt_xex:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #286 +aes_encrypt_xex:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #287 +aes_encrypt_xex:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #288 +aes_encrypt_xex:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #289 +aes_encrypt_xex:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #290 +aes_encrypt_xex:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #291 +aes_encrypt_xex:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #292 +aes_encrypt_xex:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #293 +aes_encrypt_xex:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #294 +aes_encrypt_xex:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #295 +aes_encrypt_xex:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #296 +aes_encrypt_xex:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #297 +aes_encrypt_xex:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #298 +aes_encrypt_xex:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #299 +aes_encrypt_xex:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da":0 + +AES-128-XEX Encrypt NIST XTSTestVectors #300 +aes_encrypt_xex:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #1 +aes_decrypt_xex:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"3454f7d34c0caffa12e9d2850b037fff":"07f2c2d4e6db6e1200bc165d154e0698":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #2 +aes_decrypt_xex:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"1070b7c17d3474281ad01fc0ad89cd8b":"321475ac6aa05712554d35a0a96a9265":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #3 +aes_decrypt_xex:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"2fb97e979fb107bcc13b577f0f1ea203":"6e0a78bc0db27021f0f59756a447e313":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #4 +aes_decrypt_xex:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"cff15a809220b4067c7c0266bbcb3248":"18757efd08059ab70bde2df78f3bd6ba":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #5 +aes_decrypt_xex:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"83725eecbcdfa8ebdec2f40ba4b157ed":"7fecfc127a3762e30e14791141f65585":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #6 +aes_decrypt_xex:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"a7931ff118db06cb44097bcac1fad1af":"c5801ed8a38a78277a45516a3e12b310":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #7 +aes_decrypt_xex:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"331960c250eb4988c75c0d532e206e5c":"25162f7511b5c3b24aee339ffeb7941c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #8 +aes_decrypt_xex:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"369ad5f8fb83a0df649c899b49ef7459":"09da2fc0ed605b69d95e0b7760840a99":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #9 +aes_decrypt_xex:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"4ae7a4ac80023405ac25bc497d6541fb":"d66768542f495d5c50b8623f314085f8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #10 +aes_decrypt_xex:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"c0f6f44c03d1cbe668c034562ea3d804":"f6c53bcb07cbb44747fc19a6604e26d7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #11 +aes_decrypt_xex:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"dcff3e38dfea1d3eb78182326d7d68ab":"d2f58ae0386e9230744a2056b7fd1310":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #12 +aes_decrypt_xex:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"26339412d7ac113b319088153e13e1ac":"e1fd155647de15b9fe230baf668d23db":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #13 +aes_decrypt_xex:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"29c3616714bf8076ab195e5e0d6cc0d7":"5fc717d763a56d764a21009b5132dab4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #14 +aes_decrypt_xex:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"8850a5b5011c0b49b444daa5cbd04aba":"ec5364fa0184d8b98ec02cf996428f38":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #15 +aes_decrypt_xex:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"2fbaadd1b47f726dce3f7d4c0358fd99":"95360d08af997eb3ec62e641dd6b899a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #16 +aes_decrypt_xex:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"6df4beebbe92ec8a427336b0caec1ec6":"fde4ae887d890b8835a5fc80bfcca708":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #17 +aes_decrypt_xex:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"945864f9190ea8c11943df2510f94421":"db57d5b819129d7896e2df0958a6f9f3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #18 +aes_decrypt_xex:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"a856594179845a87855ea16dd03916be":"f36143630377d4e4efd44c5716a8bda1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #19 +aes_decrypt_xex:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"d13ab11d3834d733ea5dd6dbf79ac92b":"8aab744287bff6901441908da23f0b11":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #20 +aes_decrypt_xex:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"51b9c927ead5fadad56c3eb1a220eec7":"b9a3533b48269b56f0dbb05724272ce5":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #21 +aes_decrypt_xex:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d83ddc006deeee4cc2b4c495830dddc3":"d33777d780a04bfe625cae471d2b8169":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #22 +aes_decrypt_xex:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"6d246f57b5d692205f2b970dcf8ed6f8":"a7f7e80a068e7591ae681fe3e5e277a6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #23 +aes_decrypt_xex:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"a8b8326cc5126a926cf414b471abd1b2":"f31aff86e5759a2243bfe96f1cdad7f6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #24 +aes_decrypt_xex:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"47b751adeeccd4475163239610797d4b":"4f6707b5e65da3eea92b5353c7bd95a2":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #25 +aes_decrypt_xex:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"e8c647ee7488adc4090e08a96965cced":"d3aa65af5882d432e8afdaa0b4f42640":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #26 +aes_decrypt_xex:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"1c980fd798b916326c525632e215c4ec":"8789bb3e01c8d3e768033f2c05ffee17":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #27 +aes_decrypt_xex:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"90f3c999cb074587f875561d04160c6c":"1d72767fffb8de3a2a420ca4383087a6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #28 +aes_decrypt_xex:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"cfa1f3a9a152c4875100ad4807b3b09c":"fb8d8db9cb8639de8344238dc2c1f255":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #29 +aes_decrypt_xex:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"b04ea8cd83aea25893ac2a621879a4cd":"90c08ac785b3b5e7c1815497a451a96c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #30 +aes_decrypt_xex:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"b1ac6eca721709a527598d1dc7fa365e":"036cad62c24295b188c47cdc247eae41":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #31 +aes_decrypt_xex:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"98f21426b7148082b4ee4a8074672a10":"857679e49cd68bc648c4ab0986aa59f8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #32 +aes_decrypt_xex:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"22f8c0637327b1123067e730c3be4a01":"5c931a135b9d4a7d65c9a8d5535c1294":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #33 +aes_decrypt_xex:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"8704552b90009ec3324adbf284dbd51e":"dd155757fcf457d90bb571e8eebd4630":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #34 +aes_decrypt_xex:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"c5f6673cbceae8236fa236798261eec1":"56fdd92d70c107b7707c9aa1d33ab0ac":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #35 +aes_decrypt_xex:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"91eecd8bbd0ff7cfe4b33d8e99924368":"d49ca2b1dfc2848120dfc2b75e292a0c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #36 +aes_decrypt_xex:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"86d6bf324bcc2910816abbf55f3ba45d":"da868afeec48764091c51f5e7332338d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #37 +aes_decrypt_xex:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"5b0a85e376a636d113366ec82a2c03f8":"e8cb042a3d239771ef104b5892bd1067":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #38 +aes_decrypt_xex:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"9b3a036436a24636290c969e9d97cf8b":"df6867693d8884cca8198283bb2c3e16":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #39 +aes_decrypt_xex:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f515b3d50e991d55a3e0fcb093085a10":"f224ec19a58bbde03cb692e0e4fc19d7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #40 +aes_decrypt_xex:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"4b20fce1ffacc7553afa3a6ac94e5966":"b8fa089cca83d2c9979e642b9a248882":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #41 +aes_decrypt_xex:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"caed5c738a8dc30155522864f9289e61":"89691c5dbc84bf8e2e1454148049648f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #42 +aes_decrypt_xex:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"63a88184186fa797d264a0528f39709f":"d7f7c8bccf8968b9f118bbead353b630":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #43 +aes_decrypt_xex:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"baa495ce8309a6c88ad855f97a774113":"8b6572487318167d1babedf6a8cef7b2":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #44 +aes_decrypt_xex:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"68c529586435374cfbadb17b9b895a4d":"531d3393772d49bbd0a1b6d839de0185":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #45 +aes_decrypt_xex:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"71f0519b7a6aee116d481f31b965fc2d":"926cfa1f568b03c914b5a8283920be26":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #46 +aes_decrypt_xex:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"e9c680838484714f38c59fdbfaf49a5e":"b790368e2ab0227e5c08adc4e7057baa":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #47 +aes_decrypt_xex:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"aca43e27d8cffc6d273a90f343c9acce":"c94c62fdac550cf62f3dbec89cb8614c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #48 +aes_decrypt_xex:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"8fd86c0489944d4350b2232958016668":"16938d35e74a7ab0caddde531cbbc333":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #49 +aes_decrypt_xex:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"3f069d4997a1dd7ea4215cf1d9568395":"35d16e1d15cdad0502e7ef58e86f4d4c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #50 +aes_decrypt_xex:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"b7972c5f6a488dce95eb46a855a105a5":"6af3152f9763e39a83b94fe960e04447":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #51 +aes_decrypt_xex:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"804795bc588aa048894a184c600ac75f":"d5a4d8ec68e53c0aac094b95b8add3c9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #52 +aes_decrypt_xex:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"4dcdabefbf99b4f494fa83b91f0e97a7":"638789a303154fb364e5168aa9340882":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #53 +aes_decrypt_xex:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"a4321472fca02d869432585a4380be30":"5ff7c0249be2b694ad82e68023974533":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #54 +aes_decrypt_xex:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"625438700a4d153811dc26f688b1f82e":"4462bc469e794fd74288f3f775c02cf9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #55 +aes_decrypt_xex:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"565fa6390a7a377b90330ba09391a7d6":"3f29bfa05616507792cedc91e27e4fbc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #56 +aes_decrypt_xex:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"7d180b8ae143617369239a606c693d1f":"4479885b32ed93a05bc973d925b30a71":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #57 +aes_decrypt_xex:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"e567f6d2727622278b9310e91ece0165":"5faa528556f79049118c00852e022d96":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #58 +aes_decrypt_xex:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"5ce1562f45da9dad248bb7ac2aabe2b4":"fa58ed4b5530ecb8adb5f4c119a9edda":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #59 +aes_decrypt_xex:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"9774ebd7b08cc87fdf70c9d4f746f2f4":"83f4639b4fa54f5f657c03fe4c00983e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #60 +aes_decrypt_xex:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"e72746c743f84e32eed81b8dd51b6fea":"9c085ebe5cd42b24889be07f59f761b1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #61 +aes_decrypt_xex:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"48210df8641e31039d06f0e7dc1ad97f":"0ccaac98e1c9609f406930617f1e35ec":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #62 +aes_decrypt_xex:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"944f66bb9cb9c0da59111875bd8a83ed":"1fb8a2d4996bacf34f62caf1402ced12":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #63 +aes_decrypt_xex:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"6b6295ca7b81d5216cc251ead46c70bb":"abcae54afcbb0b0ec75884b11a9901ff":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #64 +aes_decrypt_xex:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"09bea3cca20b8f9544e62430819d90cc":"c9fed3c29cf7c2a28463684f551c11cd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #65 +aes_decrypt_xex:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"ae58fbd41058bd60b546379c836ada28":"55ddb8bc2ba156bcd66483ab6a2cfe5c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #66 +aes_decrypt_xex:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"2c11e9973068abcff0b75cb1b0022521":"7d8858efdf678473d11389acee8ded16":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #67 +aes_decrypt_xex:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"6ffdbb7b11bc41a68bb43980b4d5045a":"cb1e8732f3a2dcd45f4d057409eb4d06":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #68 +aes_decrypt_xex:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"55bc2096219a930b9a12e2214c5147ef":"44729a7975c22a89c615d0f48bcbad63":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #69 +aes_decrypt_xex:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eb68e475bff2bdf3a151b07e38860d03":"eedc77726be43017fb49bc4031429e46":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #70 +aes_decrypt_xex:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"d4475da48f24ba759531bf30a5bcd430":"98900bbe2e1141b594c05c93bda68c50":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #71 +aes_decrypt_xex:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"d14d7b026273dff33b09e70db45d3140":"8c9c9231732b49baa07f994ac90cbb74":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #72 +aes_decrypt_xex:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"93f3952656b43f663e0228ed74cbab0f":"b438d11e4af51107a4212f4844d8c670":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #73 +aes_decrypt_xex:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"987d38afcfbc37b254ef41b6283813e5":"83eee45aba638bcf7126242177193563":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #74 +aes_decrypt_xex:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"bc0bbd16a21bafca60588e3f670fffb9":"e7e4dff4b36ee969fd6d80e8baec55c1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #75 +aes_decrypt_xex:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"60698b823beb2d9d083dbe2e7d1ad243":"c3990409706eb8a1adcfe3baea3b421a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #76 +aes_decrypt_xex:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"a3ed3b9052e763b74913cbdf1f71fafd":"47fe4c3759758ebec50f370d483ebbb8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #77 +aes_decrypt_xex:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5d8b27da95b073b93fb155edd2c88fea":"5c709d120204ee3e32a57b8ea278e584":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #78 +aes_decrypt_xex:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"b5458afa6268d1474a936ddf84b63b05":"fa81d0c1f617257b43a70136aeb55168":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #79 +aes_decrypt_xex:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"b0404586c6313ef77e24650fa48da131":"2becd50a3beb5ba41aefd89588413c49":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #80 +aes_decrypt_xex:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"61ebad87df8c35e459eb315e27bc47f3":"7cf6c02693cbb1f3fc825e4a5cdb7faf":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #81 +aes_decrypt_xex:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"f113016f74698d5f1e680788ddcb56d0":"0d59b40ba3d9174b58da3eb82ae30de3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #82 +aes_decrypt_xex:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"fd8f5fa162820585f77b250efbb50f1c":"4a88021a53af9389e3abc19ab6c229a1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #83 +aes_decrypt_xex:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"6551d6910ae9e2977f09bd2964d0fa2b":"a84dfd53492ec2e80bda1878929d2952":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #84 +aes_decrypt_xex:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"caf96f61fa32ef7c5df66103afac8495":"a601c169ee059b8e1d0dce77cf2862f3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #85 +aes_decrypt_xex:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"3518778706a0a0b1baac40dfd818161d":"85c93edc4ec4d33d6c4efd2558184025":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #86 +aes_decrypt_xex:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"6920c0c3a8e23bbeb85b52588abd97b6":"3f715273efe1954565669a208504a763":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #87 +aes_decrypt_xex:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"69cc1f1d1ccb57df6ade5302959b1746":"9dad8e385c806d90f88bfcbb5a7a9686":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #88 +aes_decrypt_xex:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"7030b6122c3229afc6d12d8eb2c29b99":"a593e87bca06f1ba529317a718883abc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #89 +aes_decrypt_xex:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"c9ac91095dbcea52d5fcb58b57871441":"89c0bb8f0fc63987cfd35c7292ddc50e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #90 +aes_decrypt_xex:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"ee286b71484a9d0556e1c042d8866d8f":"db8d019ab12c98765edb0a7ca2589248":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #91 +aes_decrypt_xex:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"fe89ccbb3997f475e47d55248288a324":"f8560d7995e848fd0afc518b6c7b6278":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #92 +aes_decrypt_xex:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"c3c7d49f3c42a84e283ecbd8b2be81d2":"bbfeeba2077e7d29c67daf70a1ef1ca3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #93 +aes_decrypt_xex:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"7a70fd4ded65cd2cfcf15ec38b2e879b":"0770f640b1013a31480c3250883b0bc7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #94 +aes_decrypt_xex:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"975ea366ab8ec3cd35fdda91dfb1afd6":"d161e08ecf9cf27324ffa84aadf16941":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #95 +aes_decrypt_xex:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"460c046e6e3b97e23565bce7b9224e97":"a138f2a16033e8c2245243da3adc1498":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #96 +aes_decrypt_xex:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"efccaaae45817cbc6125c62084c705ec":"6ab5f2be0fca76bcd895bf9d46de01c9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #97 +aes_decrypt_xex:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"b0238d6d1f37953e70d3dcf3cdd328a1":"70330558f8288b74e8768cde827137c8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #98 +aes_decrypt_xex:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"7ed0d25f0d1d1b7e62facfe36e468c5d":"a220ba8c184a68262b455e73c13e6ffc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #99 +aes_decrypt_xex:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"00e8406307b798d43fdff7772565d5f9":"66235974ce1e718c12f7b8fd729defe0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #100 +aes_decrypt_xex:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"ecc038125fdb267662a57dc9acc06439":"c333dcc0149fac9f23374f9023fe92d0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #101 +aes_decrypt_xex:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #102 +aes_decrypt_xex:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #103 +aes_decrypt_xex:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #104 +aes_decrypt_xex:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #105 +aes_decrypt_xex:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #106 +aes_decrypt_xex:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #107 +aes_decrypt_xex:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #108 +aes_decrypt_xex:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #109 +aes_decrypt_xex:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #110 +aes_decrypt_xex:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #111 +aes_decrypt_xex:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #112 +aes_decrypt_xex:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #113 +aes_decrypt_xex:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #114 +aes_decrypt_xex:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #115 +aes_decrypt_xex:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #116 +aes_decrypt_xex:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #117 +aes_decrypt_xex:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #118 +aes_decrypt_xex:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #119 +aes_decrypt_xex:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #120 +aes_decrypt_xex:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #121 +aes_decrypt_xex:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #122 +aes_decrypt_xex:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #123 +aes_decrypt_xex:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #124 +aes_decrypt_xex:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #125 +aes_decrypt_xex:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #126 +aes_decrypt_xex:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #127 +aes_decrypt_xex:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #128 +aes_decrypt_xex:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #129 +aes_decrypt_xex:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #130 +aes_decrypt_xex:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #131 +aes_decrypt_xex:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #132 +aes_decrypt_xex:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #133 +aes_decrypt_xex:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #134 +aes_decrypt_xex:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #135 +aes_decrypt_xex:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #136 +aes_decrypt_xex:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #137 +aes_decrypt_xex:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #138 +aes_decrypt_xex:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #139 +aes_decrypt_xex:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #140 +aes_decrypt_xex:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #141 +aes_decrypt_xex:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #142 +aes_decrypt_xex:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #143 +aes_decrypt_xex:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #144 +aes_decrypt_xex:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #145 +aes_decrypt_xex:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #146 +aes_decrypt_xex:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #147 +aes_decrypt_xex:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #148 +aes_decrypt_xex:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #149 +aes_decrypt_xex:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #150 +aes_decrypt_xex:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #151 +aes_decrypt_xex:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #152 +aes_decrypt_xex:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #153 +aes_decrypt_xex:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #154 +aes_decrypt_xex:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #155 +aes_decrypt_xex:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #156 +aes_decrypt_xex:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #157 +aes_decrypt_xex:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #158 +aes_decrypt_xex:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #159 +aes_decrypt_xex:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #160 +aes_decrypt_xex:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #161 +aes_decrypt_xex:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #162 +aes_decrypt_xex:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #163 +aes_decrypt_xex:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #164 +aes_decrypt_xex:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #165 +aes_decrypt_xex:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #166 +aes_decrypt_xex:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #167 +aes_decrypt_xex:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #168 +aes_decrypt_xex:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #169 +aes_decrypt_xex:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #170 +aes_decrypt_xex:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #171 +aes_decrypt_xex:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #172 +aes_decrypt_xex:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #173 +aes_decrypt_xex:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #174 +aes_decrypt_xex:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #175 +aes_decrypt_xex:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #176 +aes_decrypt_xex:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #177 +aes_decrypt_xex:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #178 +aes_decrypt_xex:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #179 +aes_decrypt_xex:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #180 +aes_decrypt_xex:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #181 +aes_decrypt_xex:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #182 +aes_decrypt_xex:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #183 +aes_decrypt_xex:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #184 +aes_decrypt_xex:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #185 +aes_decrypt_xex:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #186 +aes_decrypt_xex:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #187 +aes_decrypt_xex:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #188 +aes_decrypt_xex:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #189 +aes_decrypt_xex:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #190 +aes_decrypt_xex:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #191 +aes_decrypt_xex:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #192 +aes_decrypt_xex:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #193 +aes_decrypt_xex:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #194 +aes_decrypt_xex:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #195 +aes_decrypt_xex:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #196 +aes_decrypt_xex:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #197 +aes_decrypt_xex:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #198 +aes_decrypt_xex:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #199 +aes_decrypt_xex:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #200 +aes_decrypt_xex:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #201 +aes_decrypt_xex:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #202 +aes_decrypt_xex:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #203 +aes_decrypt_xex:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #204 +aes_decrypt_xex:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #205 +aes_decrypt_xex:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #206 +aes_decrypt_xex:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #207 +aes_decrypt_xex:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #208 +aes_decrypt_xex:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #209 +aes_decrypt_xex:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #210 +aes_decrypt_xex:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #211 +aes_decrypt_xex:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #212 +aes_decrypt_xex:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #213 +aes_decrypt_xex:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #214 +aes_decrypt_xex:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #215 +aes_decrypt_xex:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #216 +aes_decrypt_xex:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #217 +aes_decrypt_xex:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #218 +aes_decrypt_xex:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #219 +aes_decrypt_xex:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #220 +aes_decrypt_xex:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #221 +aes_decrypt_xex:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #222 +aes_decrypt_xex:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #223 +aes_decrypt_xex:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #224 +aes_decrypt_xex:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #225 +aes_decrypt_xex:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #226 +aes_decrypt_xex:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #227 +aes_decrypt_xex:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #228 +aes_decrypt_xex:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #229 +aes_decrypt_xex:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #230 +aes_decrypt_xex:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #231 +aes_decrypt_xex:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #232 +aes_decrypt_xex:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #233 +aes_decrypt_xex:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #234 +aes_decrypt_xex:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #235 +aes_decrypt_xex:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #236 +aes_decrypt_xex:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #237 +aes_decrypt_xex:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #238 +aes_decrypt_xex:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #239 +aes_decrypt_xex:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #240 +aes_decrypt_xex:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #241 +aes_decrypt_xex:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #242 +aes_decrypt_xex:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #243 +aes_decrypt_xex:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #244 +aes_decrypt_xex:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #245 +aes_decrypt_xex:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #246 +aes_decrypt_xex:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #247 +aes_decrypt_xex:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #248 +aes_decrypt_xex:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #249 +aes_decrypt_xex:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #250 +aes_decrypt_xex:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #251 +aes_decrypt_xex:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #252 +aes_decrypt_xex:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #253 +aes_decrypt_xex:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #254 +aes_decrypt_xex:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #255 +aes_decrypt_xex:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #256 +aes_decrypt_xex:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #257 +aes_decrypt_xex:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #258 +aes_decrypt_xex:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #259 +aes_decrypt_xex:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #260 +aes_decrypt_xex:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #261 +aes_decrypt_xex:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #262 +aes_decrypt_xex:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #263 +aes_decrypt_xex:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #264 +aes_decrypt_xex:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #265 +aes_decrypt_xex:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #266 +aes_decrypt_xex:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #267 +aes_decrypt_xex:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #268 +aes_decrypt_xex:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #269 +aes_decrypt_xex:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #270 +aes_decrypt_xex:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #271 +aes_decrypt_xex:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #272 +aes_decrypt_xex:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #273 +aes_decrypt_xex:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #274 +aes_decrypt_xex:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #275 +aes_decrypt_xex:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #276 +aes_decrypt_xex:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #277 +aes_decrypt_xex:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #278 +aes_decrypt_xex:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #279 +aes_decrypt_xex:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #280 +aes_decrypt_xex:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #281 +aes_decrypt_xex:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #282 +aes_decrypt_xex:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #283 +aes_decrypt_xex:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #284 +aes_decrypt_xex:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #285 +aes_decrypt_xex:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #286 +aes_decrypt_xex:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #287 +aes_decrypt_xex:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #288 +aes_decrypt_xex:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #289 +aes_decrypt_xex:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #290 +aes_decrypt_xex:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #291 +aes_decrypt_xex:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #292 +aes_decrypt_xex:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #293 +aes_decrypt_xex:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #294 +aes_decrypt_xex:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #295 +aes_decrypt_xex:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #296 +aes_decrypt_xex:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #297 +aes_decrypt_xex:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #298 +aes_decrypt_xex:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #299 +aes_decrypt_xex:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":0 + +AES-128-XEX Decrypt NIST XTSTestVectors #300 +aes_decrypt_xex:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #1 +aes_encrypt_xex:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #2 +aes_encrypt_xex:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #3 +aes_encrypt_xex:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #4 +aes_encrypt_xex:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #5 +aes_encrypt_xex:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #6 +aes_encrypt_xex:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #7 +aes_encrypt_xex:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #8 +aes_encrypt_xex:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #9 +aes_encrypt_xex:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #10 +aes_encrypt_xex:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #11 +aes_encrypt_xex:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #12 +aes_encrypt_xex:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #13 +aes_encrypt_xex:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #14 +aes_encrypt_xex:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #15 +aes_encrypt_xex:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #16 +aes_encrypt_xex:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #17 +aes_encrypt_xex:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #18 +aes_encrypt_xex:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #19 +aes_encrypt_xex:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #20 +aes_encrypt_xex:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #21 +aes_encrypt_xex:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #22 +aes_encrypt_xex:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #23 +aes_encrypt_xex:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #24 +aes_encrypt_xex:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #25 +aes_encrypt_xex:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #26 +aes_encrypt_xex:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #27 +aes_encrypt_xex:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #28 +aes_encrypt_xex:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #29 +aes_encrypt_xex:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #30 +aes_encrypt_xex:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #31 +aes_encrypt_xex:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #32 +aes_encrypt_xex:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #33 +aes_encrypt_xex:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #34 +aes_encrypt_xex:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #35 +aes_encrypt_xex:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #36 +aes_encrypt_xex:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #37 +aes_encrypt_xex:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #38 +aes_encrypt_xex:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #39 +aes_encrypt_xex:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #40 +aes_encrypt_xex:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #41 +aes_encrypt_xex:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #42 +aes_encrypt_xex:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #43 +aes_encrypt_xex:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #44 +aes_encrypt_xex:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #45 +aes_encrypt_xex:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #46 +aes_encrypt_xex:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #47 +aes_encrypt_xex:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #48 +aes_encrypt_xex:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #49 +aes_encrypt_xex:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #50 +aes_encrypt_xex:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #51 +aes_encrypt_xex:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #52 +aes_encrypt_xex:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #53 +aes_encrypt_xex:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #54 +aes_encrypt_xex:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #55 +aes_encrypt_xex:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #56 +aes_encrypt_xex:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #57 +aes_encrypt_xex:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #58 +aes_encrypt_xex:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #59 +aes_encrypt_xex:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #60 +aes_encrypt_xex:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #61 +aes_encrypt_xex:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #62 +aes_encrypt_xex:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #63 +aes_encrypt_xex:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #64 +aes_encrypt_xex:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #65 +aes_encrypt_xex:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #66 +aes_encrypt_xex:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #67 +aes_encrypt_xex:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #68 +aes_encrypt_xex:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #69 +aes_encrypt_xex:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #70 +aes_encrypt_xex:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #71 +aes_encrypt_xex:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #72 +aes_encrypt_xex:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #73 +aes_encrypt_xex:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #74 +aes_encrypt_xex:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #75 +aes_encrypt_xex:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #76 +aes_encrypt_xex:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #77 +aes_encrypt_xex:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #78 +aes_encrypt_xex:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #79 +aes_encrypt_xex:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #80 +aes_encrypt_xex:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #81 +aes_encrypt_xex:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #82 +aes_encrypt_xex:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #83 +aes_encrypt_xex:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #84 +aes_encrypt_xex:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #85 +aes_encrypt_xex:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #86 +aes_encrypt_xex:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #87 +aes_encrypt_xex:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #88 +aes_encrypt_xex:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #89 +aes_encrypt_xex:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #90 +aes_encrypt_xex:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #91 +aes_encrypt_xex:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #92 +aes_encrypt_xex:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #93 +aes_encrypt_xex:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #94 +aes_encrypt_xex:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #95 +aes_encrypt_xex:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #96 +aes_encrypt_xex:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #97 +aes_encrypt_xex:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #98 +aes_encrypt_xex:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #99 +aes_encrypt_xex:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #100 +aes_encrypt_xex:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #101 +aes_encrypt_xex:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #102 +aes_encrypt_xex:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #103 +aes_encrypt_xex:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #104 +aes_encrypt_xex:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #105 +aes_encrypt_xex:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #106 +aes_encrypt_xex:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #107 +aes_encrypt_xex:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #108 +aes_encrypt_xex:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #109 +aes_encrypt_xex:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #110 +aes_encrypt_xex:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #111 +aes_encrypt_xex:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #112 +aes_encrypt_xex:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #113 +aes_encrypt_xex:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #114 +aes_encrypt_xex:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #115 +aes_encrypt_xex:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #116 +aes_encrypt_xex:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #117 +aes_encrypt_xex:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #118 +aes_encrypt_xex:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #119 +aes_encrypt_xex:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #120 +aes_encrypt_xex:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #121 +aes_encrypt_xex:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #122 +aes_encrypt_xex:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #123 +aes_encrypt_xex:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #124 +aes_encrypt_xex:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #125 +aes_encrypt_xex:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #126 +aes_encrypt_xex:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #127 +aes_encrypt_xex:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #128 +aes_encrypt_xex:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #129 +aes_encrypt_xex:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #130 +aes_encrypt_xex:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #131 +aes_encrypt_xex:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #132 +aes_encrypt_xex:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #133 +aes_encrypt_xex:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #134 +aes_encrypt_xex:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #135 +aes_encrypt_xex:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #136 +aes_encrypt_xex:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #137 +aes_encrypt_xex:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #138 +aes_encrypt_xex:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #139 +aes_encrypt_xex:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #140 +aes_encrypt_xex:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #141 +aes_encrypt_xex:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #142 +aes_encrypt_xex:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #143 +aes_encrypt_xex:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #144 +aes_encrypt_xex:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #145 +aes_encrypt_xex:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #146 +aes_encrypt_xex:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #147 +aes_encrypt_xex:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #148 +aes_encrypt_xex:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #149 +aes_encrypt_xex:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #150 +aes_encrypt_xex:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #151 +aes_encrypt_xex:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #152 +aes_encrypt_xex:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #153 +aes_encrypt_xex:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #154 +aes_encrypt_xex:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #155 +aes_encrypt_xex:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #156 +aes_encrypt_xex:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #157 +aes_encrypt_xex:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #158 +aes_encrypt_xex:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #159 +aes_encrypt_xex:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #160 +aes_encrypt_xex:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #161 +aes_encrypt_xex:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #162 +aes_encrypt_xex:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #163 +aes_encrypt_xex:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #164 +aes_encrypt_xex:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #165 +aes_encrypt_xex:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #166 +aes_encrypt_xex:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #167 +aes_encrypt_xex:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #168 +aes_encrypt_xex:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #169 +aes_encrypt_xex:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #170 +aes_encrypt_xex:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #171 +aes_encrypt_xex:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #172 +aes_encrypt_xex:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #173 +aes_encrypt_xex:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #174 +aes_encrypt_xex:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #175 +aes_encrypt_xex:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #176 +aes_encrypt_xex:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #177 +aes_encrypt_xex:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #178 +aes_encrypt_xex:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #179 +aes_encrypt_xex:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #180 +aes_encrypt_xex:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #181 +aes_encrypt_xex:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #182 +aes_encrypt_xex:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #183 +aes_encrypt_xex:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #184 +aes_encrypt_xex:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #185 +aes_encrypt_xex:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #186 +aes_encrypt_xex:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #187 +aes_encrypt_xex:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #188 +aes_encrypt_xex:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #189 +aes_encrypt_xex:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #190 +aes_encrypt_xex:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #191 +aes_encrypt_xex:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #192 +aes_encrypt_xex:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #193 +aes_encrypt_xex:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #194 +aes_encrypt_xex:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #195 +aes_encrypt_xex:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #196 +aes_encrypt_xex:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #197 +aes_encrypt_xex:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #198 +aes_encrypt_xex:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #199 +aes_encrypt_xex:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #200 +aes_encrypt_xex:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #201 +aes_encrypt_xex:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #202 +aes_encrypt_xex:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #203 +aes_encrypt_xex:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #204 +aes_encrypt_xex:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #205 +aes_encrypt_xex:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #206 +aes_encrypt_xex:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #207 +aes_encrypt_xex:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #208 +aes_encrypt_xex:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #209 +aes_encrypt_xex:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #210 +aes_encrypt_xex:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #211 +aes_encrypt_xex:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #212 +aes_encrypt_xex:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #213 +aes_encrypt_xex:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #214 +aes_encrypt_xex:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #215 +aes_encrypt_xex:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #216 +aes_encrypt_xex:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #217 +aes_encrypt_xex:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #218 +aes_encrypt_xex:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #219 +aes_encrypt_xex:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #220 +aes_encrypt_xex:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #221 +aes_encrypt_xex:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #222 +aes_encrypt_xex:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #223 +aes_encrypt_xex:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #224 +aes_encrypt_xex:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #225 +aes_encrypt_xex:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #226 +aes_encrypt_xex:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #227 +aes_encrypt_xex:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #228 +aes_encrypt_xex:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #229 +aes_encrypt_xex:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #230 +aes_encrypt_xex:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #231 +aes_encrypt_xex:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #232 +aes_encrypt_xex:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #233 +aes_encrypt_xex:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #234 +aes_encrypt_xex:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #235 +aes_encrypt_xex:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #236 +aes_encrypt_xex:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #237 +aes_encrypt_xex:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #238 +aes_encrypt_xex:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #239 +aes_encrypt_xex:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #240 +aes_encrypt_xex:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #241 +aes_encrypt_xex:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #242 +aes_encrypt_xex:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #243 +aes_encrypt_xex:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #244 +aes_encrypt_xex:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #245 +aes_encrypt_xex:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #246 +aes_encrypt_xex:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #247 +aes_encrypt_xex:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #248 +aes_encrypt_xex:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #249 +aes_encrypt_xex:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #250 +aes_encrypt_xex:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #251 +aes_encrypt_xex:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #252 +aes_encrypt_xex:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #253 +aes_encrypt_xex:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #254 +aes_encrypt_xex:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #255 +aes_encrypt_xex:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #256 +aes_encrypt_xex:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #257 +aes_encrypt_xex:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #258 +aes_encrypt_xex:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #259 +aes_encrypt_xex:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #260 +aes_encrypt_xex:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #261 +aes_encrypt_xex:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #262 +aes_encrypt_xex:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #263 +aes_encrypt_xex:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #264 +aes_encrypt_xex:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #265 +aes_encrypt_xex:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #266 +aes_encrypt_xex:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #267 +aes_encrypt_xex:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #268 +aes_encrypt_xex:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #269 +aes_encrypt_xex:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #270 +aes_encrypt_xex:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #271 +aes_encrypt_xex:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #272 +aes_encrypt_xex:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #273 +aes_encrypt_xex:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #274 +aes_encrypt_xex:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #275 +aes_encrypt_xex:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #276 +aes_encrypt_xex:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #277 +aes_encrypt_xex:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #278 +aes_encrypt_xex:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #279 +aes_encrypt_xex:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #280 +aes_encrypt_xex:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #281 +aes_encrypt_xex:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #282 +aes_encrypt_xex:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #283 +aes_encrypt_xex:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #284 +aes_encrypt_xex:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #285 +aes_encrypt_xex:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #286 +aes_encrypt_xex:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #287 +aes_encrypt_xex:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #288 +aes_encrypt_xex:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #289 +aes_encrypt_xex:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #290 +aes_encrypt_xex:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #291 +aes_encrypt_xex:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #292 +aes_encrypt_xex:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #293 +aes_encrypt_xex:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #294 +aes_encrypt_xex:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #295 +aes_encrypt_xex:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #296 +aes_encrypt_xex:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #297 +aes_encrypt_xex:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #298 +aes_encrypt_xex:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #299 +aes_encrypt_xex:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3":0 + +AES-256-XEX Encrypt NIST XTSTestVectors #300 +aes_encrypt_xex:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #1 +aes_decrypt_xex:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #2 +aes_decrypt_xex:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #3 +aes_decrypt_xex:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #4 +aes_decrypt_xex:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #5 +aes_decrypt_xex:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #6 +aes_decrypt_xex:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #7 +aes_decrypt_xex:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #8 +aes_decrypt_xex:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #9 +aes_decrypt_xex:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #10 +aes_decrypt_xex:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #11 +aes_decrypt_xex:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #12 +aes_decrypt_xex:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #13 +aes_decrypt_xex:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #14 +aes_decrypt_xex:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #15 +aes_decrypt_xex:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #16 +aes_decrypt_xex:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #17 +aes_decrypt_xex:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #18 +aes_decrypt_xex:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #19 +aes_decrypt_xex:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #20 +aes_decrypt_xex:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #21 +aes_decrypt_xex:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #22 +aes_decrypt_xex:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #23 +aes_decrypt_xex:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #24 +aes_decrypt_xex:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #25 +aes_decrypt_xex:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #26 +aes_decrypt_xex:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #27 +aes_decrypt_xex:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #28 +aes_decrypt_xex:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #29 +aes_decrypt_xex:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #30 +aes_decrypt_xex:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #31 +aes_decrypt_xex:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #32 +aes_decrypt_xex:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #33 +aes_decrypt_xex:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #34 +aes_decrypt_xex:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #35 +aes_decrypt_xex:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #36 +aes_decrypt_xex:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #37 +aes_decrypt_xex:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #38 +aes_decrypt_xex:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #39 +aes_decrypt_xex:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #40 +aes_decrypt_xex:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #41 +aes_decrypt_xex:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #42 +aes_decrypt_xex:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #43 +aes_decrypt_xex:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #44 +aes_decrypt_xex:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #45 +aes_decrypt_xex:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #46 +aes_decrypt_xex:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #47 +aes_decrypt_xex:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #48 +aes_decrypt_xex:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #49 +aes_decrypt_xex:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #50 +aes_decrypt_xex:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #51 +aes_decrypt_xex:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #52 +aes_decrypt_xex:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #53 +aes_decrypt_xex:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #54 +aes_decrypt_xex:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #55 +aes_decrypt_xex:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #56 +aes_decrypt_xex:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #57 +aes_decrypt_xex:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #58 +aes_decrypt_xex:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #59 +aes_decrypt_xex:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #60 +aes_decrypt_xex:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #61 +aes_decrypt_xex:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #62 +aes_decrypt_xex:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #63 +aes_decrypt_xex:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #64 +aes_decrypt_xex:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #65 +aes_decrypt_xex:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #66 +aes_decrypt_xex:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #67 +aes_decrypt_xex:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #68 +aes_decrypt_xex:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #69 +aes_decrypt_xex:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #70 +aes_decrypt_xex:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #71 +aes_decrypt_xex:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #72 +aes_decrypt_xex:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #73 +aes_decrypt_xex:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #74 +aes_decrypt_xex:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #75 +aes_decrypt_xex:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #76 +aes_decrypt_xex:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #77 +aes_decrypt_xex:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #78 +aes_decrypt_xex:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #79 +aes_decrypt_xex:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #80 +aes_decrypt_xex:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #81 +aes_decrypt_xex:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #82 +aes_decrypt_xex:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #83 +aes_decrypt_xex:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #84 +aes_decrypt_xex:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #85 +aes_decrypt_xex:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #86 +aes_decrypt_xex:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #87 +aes_decrypt_xex:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #88 +aes_decrypt_xex:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #89 +aes_decrypt_xex:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #90 +aes_decrypt_xex:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #91 +aes_decrypt_xex:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #92 +aes_decrypt_xex:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #93 +aes_decrypt_xex:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #94 +aes_decrypt_xex:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #95 +aes_decrypt_xex:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #96 +aes_decrypt_xex:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #97 +aes_decrypt_xex:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #98 +aes_decrypt_xex:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #99 +aes_decrypt_xex:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #100 +aes_decrypt_xex:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #101 +aes_decrypt_xex:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #102 +aes_decrypt_xex:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #103 +aes_decrypt_xex:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #104 +aes_decrypt_xex:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #105 +aes_decrypt_xex:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #106 +aes_decrypt_xex:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #107 +aes_decrypt_xex:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #108 +aes_decrypt_xex:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #109 +aes_decrypt_xex:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #110 +aes_decrypt_xex:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #111 +aes_decrypt_xex:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #112 +aes_decrypt_xex:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #113 +aes_decrypt_xex:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #114 +aes_decrypt_xex:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #115 +aes_decrypt_xex:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #116 +aes_decrypt_xex:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #117 +aes_decrypt_xex:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #118 +aes_decrypt_xex:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #119 +aes_decrypt_xex:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #120 +aes_decrypt_xex:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #121 +aes_decrypt_xex:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #122 +aes_decrypt_xex:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #123 +aes_decrypt_xex:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #124 +aes_decrypt_xex:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #125 +aes_decrypt_xex:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #126 +aes_decrypt_xex:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #127 +aes_decrypt_xex:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #128 +aes_decrypt_xex:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #129 +aes_decrypt_xex:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #130 +aes_decrypt_xex:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #131 +aes_decrypt_xex:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #132 +aes_decrypt_xex:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #133 +aes_decrypt_xex:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #134 +aes_decrypt_xex:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #135 +aes_decrypt_xex:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #136 +aes_decrypt_xex:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #137 +aes_decrypt_xex:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #138 +aes_decrypt_xex:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #139 +aes_decrypt_xex:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #140 +aes_decrypt_xex:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #141 +aes_decrypt_xex:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #142 +aes_decrypt_xex:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #143 +aes_decrypt_xex:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #144 +aes_decrypt_xex:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #145 +aes_decrypt_xex:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #146 +aes_decrypt_xex:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #147 +aes_decrypt_xex:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #148 +aes_decrypt_xex:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #149 +aes_decrypt_xex:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #150 +aes_decrypt_xex:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #151 +aes_decrypt_xex:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #152 +aes_decrypt_xex:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #153 +aes_decrypt_xex:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #154 +aes_decrypt_xex:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #155 +aes_decrypt_xex:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #156 +aes_decrypt_xex:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #157 +aes_decrypt_xex:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #158 +aes_decrypt_xex:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #159 +aes_decrypt_xex:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #160 +aes_decrypt_xex:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #161 +aes_decrypt_xex:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #162 +aes_decrypt_xex:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #163 +aes_decrypt_xex:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #164 +aes_decrypt_xex:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #165 +aes_decrypt_xex:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #166 +aes_decrypt_xex:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #167 +aes_decrypt_xex:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #168 +aes_decrypt_xex:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #169 +aes_decrypt_xex:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #170 +aes_decrypt_xex:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #171 +aes_decrypt_xex:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #172 +aes_decrypt_xex:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #173 +aes_decrypt_xex:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #174 +aes_decrypt_xex:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #175 +aes_decrypt_xex:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #176 +aes_decrypt_xex:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #177 +aes_decrypt_xex:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #178 +aes_decrypt_xex:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #179 +aes_decrypt_xex:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #180 +aes_decrypt_xex:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #181 +aes_decrypt_xex:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #182 +aes_decrypt_xex:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #183 +aes_decrypt_xex:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #184 +aes_decrypt_xex:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #185 +aes_decrypt_xex:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #186 +aes_decrypt_xex:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #187 +aes_decrypt_xex:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #188 +aes_decrypt_xex:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #189 +aes_decrypt_xex:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #190 +aes_decrypt_xex:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #191 +aes_decrypt_xex:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #192 +aes_decrypt_xex:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #193 +aes_decrypt_xex:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #194 +aes_decrypt_xex:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #195 +aes_decrypt_xex:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #196 +aes_decrypt_xex:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #197 +aes_decrypt_xex:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #198 +aes_decrypt_xex:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #199 +aes_decrypt_xex:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #200 +aes_decrypt_xex:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #201 +aes_decrypt_xex:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #202 +aes_decrypt_xex:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #203 +aes_decrypt_xex:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #204 +aes_decrypt_xex:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #205 +aes_decrypt_xex:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #206 +aes_decrypt_xex:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #207 +aes_decrypt_xex:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #208 +aes_decrypt_xex:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #209 +aes_decrypt_xex:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #210 +aes_decrypt_xex:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #211 +aes_decrypt_xex:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #212 +aes_decrypt_xex:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #213 +aes_decrypt_xex:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #214 +aes_decrypt_xex:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #215 +aes_decrypt_xex:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #216 +aes_decrypt_xex:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #217 +aes_decrypt_xex:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #218 +aes_decrypt_xex:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #219 +aes_decrypt_xex:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #220 +aes_decrypt_xex:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #221 +aes_decrypt_xex:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #222 +aes_decrypt_xex:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #223 +aes_decrypt_xex:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #224 +aes_decrypt_xex:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #225 +aes_decrypt_xex:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #226 +aes_decrypt_xex:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #227 +aes_decrypt_xex:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #228 +aes_decrypt_xex:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #229 +aes_decrypt_xex:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #230 +aes_decrypt_xex:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #231 +aes_decrypt_xex:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #232 +aes_decrypt_xex:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #233 +aes_decrypt_xex:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #234 +aes_decrypt_xex:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #235 +aes_decrypt_xex:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #236 +aes_decrypt_xex:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #237 +aes_decrypt_xex:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #238 +aes_decrypt_xex:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #239 +aes_decrypt_xex:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #240 +aes_decrypt_xex:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #241 +aes_decrypt_xex:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #242 +aes_decrypt_xex:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #243 +aes_decrypt_xex:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #244 +aes_decrypt_xex:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #245 +aes_decrypt_xex:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #246 +aes_decrypt_xex:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #247 +aes_decrypt_xex:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #248 +aes_decrypt_xex:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #249 +aes_decrypt_xex:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #250 +aes_decrypt_xex:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #251 +aes_decrypt_xex:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #252 +aes_decrypt_xex:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #253 +aes_decrypt_xex:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #254 +aes_decrypt_xex:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #255 +aes_decrypt_xex:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #256 +aes_decrypt_xex:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #257 +aes_decrypt_xex:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #258 +aes_decrypt_xex:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #259 +aes_decrypt_xex:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #260 +aes_decrypt_xex:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #261 +aes_decrypt_xex:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #262 +aes_decrypt_xex:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #263 +aes_decrypt_xex:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #264 +aes_decrypt_xex:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #265 +aes_decrypt_xex:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #266 +aes_decrypt_xex:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #267 +aes_decrypt_xex:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #268 +aes_decrypt_xex:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #269 +aes_decrypt_xex:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #270 +aes_decrypt_xex:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #271 +aes_decrypt_xex:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #272 +aes_decrypt_xex:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #273 +aes_decrypt_xex:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #274 +aes_decrypt_xex:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #275 +aes_decrypt_xex:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #276 +aes_decrypt_xex:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #277 +aes_decrypt_xex:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #278 +aes_decrypt_xex:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #279 +aes_decrypt_xex:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #280 +aes_decrypt_xex:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #281 +aes_decrypt_xex:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #282 +aes_decrypt_xex:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #283 +aes_decrypt_xex:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #284 +aes_decrypt_xex:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #285 +aes_decrypt_xex:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #286 +aes_decrypt_xex:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #287 +aes_decrypt_xex:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #288 +aes_decrypt_xex:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #289 +aes_decrypt_xex:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #290 +aes_decrypt_xex:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #291 +aes_decrypt_xex:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #292 +aes_decrypt_xex:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #293 +aes_decrypt_xex:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #294 +aes_decrypt_xex:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #295 +aes_decrypt_xex:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #296 +aes_decrypt_xex:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #297 +aes_decrypt_xex:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #298 +aes_decrypt_xex:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #299 +aes_decrypt_xex:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":0 + +AES-256-XEX Decrypt NIST XTSTestVectors #300 +aes_decrypt_xex:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":0 + From 9bbe3632e405a126c6766fdf8ac77cd87d792709 Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 13:16:30 +0100 Subject: [PATCH 0431/1100] Rename exported symbols to please check-names.sh Exported symbols seem to need the "mbedtls_" prefix, which has been added to be128 and gf128mul_x_ble. --- include/mbedtls/gf128mul.h | 4 ++-- library/aes.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/gf128mul.h b/include/mbedtls/gf128mul.h index 41de39c426..33d06eaaa0 100644 --- a/include/mbedtls/gf128mul.h +++ b/include/mbedtls/gf128mul.h @@ -30,7 +30,7 @@ extern "C" { /** * \brief Big-Endian definition for 128 bits elements */ -typedef unsigned char be128[16]; +typedef unsigned char mbedtls_be128[16]; /** * \brief Multiplication in GF(128): @@ -39,7 +39,7 @@ typedef unsigned char be128[16]; * \param x the 128-bits number you want to multiply * \param r result */ -void gf128mul_x_ble(be128 r, const be128 x); +void mbedtls_gf128mul_x_ble(mbedtls_be128 r, const mbedtls_be128 x); diff --git a/library/aes.c b/library/aes.c index 766aa21a79..1f21587b67 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1013,7 +1013,7 @@ int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, do { - gf128mul_x_ble( t_buf, t_buf ); + mbedtls_gf128mul_x_ble( t_buf, t_buf ); first: /* PP <- T xor P */ From 8bb817a4c195990c7c712038da3bd63f6b7c5780 Mon Sep 17 00:00:00 2001 From: Aorimn Date: Sun, 31 Jan 2016 13:23:43 +0100 Subject: [PATCH 0432/1100] Add AES-XEX to the version features --- library/version_features.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/version_features.c b/library/version_features.c index fa37119246..0b7c0af6d7 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -249,6 +249,9 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_MODE_CBC) "MBEDTLS_CIPHER_MODE_CBC", #endif /* MBEDTLS_CIPHER_MODE_CBC */ +#if defined(MBEDTLS_CIPHER_MODE_XEX) + "MBEDTLS_CIPHER_MODE_XEX", +#endif /* MBEDTLS_CIPHER_MODE_XEX */ #if defined(MBEDTLS_CIPHER_MODE_OFB) "MBEDTLS_CIPHER_MODE_OFB", #endif /* MBEDTLS_CIPHER_MODE_OFB */ From daf70453723af98b063f5360437fd0e0e64b65d8 Mon Sep 17 00:00:00 2001 From: Aorimn Date: Tue, 2 Feb 2016 22:52:40 +0100 Subject: [PATCH 0433/1100] Add benchmark for AES-XEX This commit adds benchmark based on what has already been done with AES-CBC mode. --- programs/test/benchmark.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 07298c1c46..ec5794ec7d 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -99,7 +99,7 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish,\n" \ - "aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac,\n" \ + "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, des3_cmac,\n" \ "havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" @@ -233,7 +233,7 @@ unsigned char buf[BUFSIZE]; typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, - aes_cbc, aes_gcm, aes_ccm, aes_cmac, des3_cmac, + aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, des3_cmac, aria, camellia, blowfish, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; @@ -279,6 +279,8 @@ int main( int argc, char *argv[] ) todo.des = 1; else if( strcmp( argv[i], "aes_cbc" ) == 0 ) todo.aes_cbc = 1; + else if( strcmp( argv[i], "aes_xex" ) == 0 ) + todo.aes_xex = 1; else if( strcmp( argv[i], "aes_gcm" ) == 0 ) todo.aes_gcm = 1; else if( strcmp( argv[i], "aes_ccm" ) == 0 ) @@ -426,6 +428,29 @@ int main( int argc, char *argv[] ) mbedtls_aes_free( &aes ); } #endif +#if defined(MBEDTLS_CIPHER_MODE_XEX) + if( todo.aes_xex ) + { + int keysize; + mbedtls_aes_context crypt_ctx, tweak_ctx; + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + for( keysize = 128; keysize <= 256; keysize += 64 ) + { + mbedtls_snprintf( title, sizeof( title ), "AES-XEX-%d", keysize ); + + memset( buf, 0, sizeof( buf ) ); + memset( tmp, 0, sizeof( tmp ) ); + mbedtls_aes_setkey_enc( &crypt_ctx, tmp, keysize ); + mbedtls_aes_setkey_enc( &tweak_ctx, tmp, keysize ); + + TIME_AND_TSC( title, + mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, BUFSIZE, tmp, buf, buf ) ); + } + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); + } +#endif #if defined(MBEDTLS_GCM_C) if( todo.aes_gcm ) { From 380162c34c7a43818968b718a151717350ae7bef Mon Sep 17 00:00:00 2001 From: Aorimn Date: Tue, 2 Feb 2016 23:01:09 +0100 Subject: [PATCH 0434/1100] Double perf for AES-XEX As seen from the first benchmark run, AES-XEX was running pourly (even slower than AES-CBC). This commit doubles the performances of the current implementation. --- library/aes.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/library/aes.c b/library/aes.c index 1f21587b67..1c69c974e9 100644 --- a/library/aes.c +++ b/library/aes.c @@ -999,36 +999,45 @@ int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, const unsigned char *input, unsigned char *output ) { - int i; - unsigned char t_buf[16]; - unsigned char scratch[16]; + union xex_buf128 { + uint8_t u8[16]; + uint64_t u64[2]; + }; + + union xex_buf128 scratch; + union xex_buf128 t_buf; + union xex_buf128 *inbuf; + union xex_buf128 *outbuf; + + inbuf = (union xex_buf128*)input; + outbuf = (union xex_buf128*)output; if( length % 16 ) return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); - mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf ); + mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); goto first; do { - mbedtls_gf128mul_x_ble( t_buf, t_buf ); + mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); first: /* PP <- T xor P */ - for( i = 0; i < 16; i++ ) - scratch[i] = (unsigned char)( input[i] ^ t_buf[i] ); + scratch.u64[0] = (uint64_t)( inbuf->u64[0] ^ t_buf.u64[0] ); + scratch.u64[1] = (uint64_t)( inbuf->u64[1] ^ t_buf.u64[1] ); /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch, output ); + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, outbuf->u8 ); /* C <- T xor CC */ - for( i = 0; i < 16; i++ ) - output[i] = (unsigned char)( output[i] ^ t_buf[i] ); + outbuf->u64[0] = (uint64_t)( outbuf->u64[0] ^ t_buf.u64[0] ); + outbuf->u64[1] = (uint64_t)( outbuf->u64[1] ^ t_buf.u64[1] ); - input += 16; - output += 16; + inbuf += 1; + outbuf += 1; length -= 16; } while( length > 0 ); From 5f77801ac3f6212f66547df93c11d8add3261878 Mon Sep 17 00:00:00 2001 From: Aorimn Date: Thu, 9 Jun 2016 23:22:58 +0200 Subject: [PATCH 0435/1100] Implement AES-XTS mode XTS mode is fully known as "xor-encrypt-xor with ciphertext-stealing". This is the generalization of the XEX mode. This implementation is limited to an 8-bits (1 byte) boundary, which doesn't seem to be what was thought considering some test vectors [1]. This commit comes with tests, extracted from [1], and benchmarks. Although, benchmarks aren't really nice here, as they work with a buffer of a multiple of 16 bytes, which isn't a challenge for XTS compared to XEX. [1] http://csrc.nist.gov/groups/STM/cavp/documents/aes/XTSTestVectors.zip --- include/mbedtls/aes.h | 28 + include/mbedtls/config.h | 8 + library/aes.c | 141 +- library/version_features.c | 3 + programs/test/benchmark.c | 33 +- tests/CMakeLists.txt | 1 + tests/suites/test_suite_aes.function | 74 + tests/suites/test_suite_aes.xts.data | 4200 ++++++++++++++++++++++++++ 8 files changed, 4483 insertions(+), 5 deletions(-) create mode 100644 tests/suites/test_suite_aes.xts.data diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 652281c7e5..c42ca7ac86 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -237,6 +237,34 @@ int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_XEX */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief AES-XTS buffer encryption/decryption + * Length should be greater or equal than the block size (16 + * bytes, 128 bits) + * + * Warning: The bits_length parameter must given be in bits, not bytes like the + * other modes + * + * \param crypt_ctx AES context for encrypting data + * \param tweak_ctx AES context for xor-ing with data + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param bits_length length of the input data (in bits) + * \param iv initialization vector + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + */ +int mbedtls_aes_crypt_xts( mbedtls_aes_context *crypt_ctx, + mbedtls_aes_context *tweak_ctx, + int mode, + size_t bits_length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #if defined(MBEDTLS_CIPHER_MODE_CFB) /** * \brief This function performs an AES-CFB128 encryption or decryption diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 09379a0946..3a7c15962d 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -508,6 +508,14 @@ */ #define MBEDTLS_CIPHER_MODE_XEX +/** + * \def MBEDTLS_CIPHER_MODE_XTS + * + * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for symmetric + * ciphers. + */ +#define MBEDTLS_CIPHER_MODE_XTS + /** * \def MBEDTLS_CIPHER_MODE_OFB * diff --git a/library/aes.c b/library/aes.c index 1c69c974e9..95386dfb23 100644 --- a/library/aes.c +++ b/library/aes.c @@ -44,7 +44,7 @@ #include "mbedtls/aesni.h" #endif -#if defined(MBEDTLS_CIPHER_MODE_XEX) +#if defined(MBEDTLS_CIPHER_MODE_XEX) || defined(MBEDTLS_CIPHER_MODE_XTS) #include "mbedtls/gf128mul.h" #endif @@ -1045,6 +1045,145 @@ first: } #endif /* MBEDTLS_CIPHER_MODE_XEX */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/* + * AES-XTS buffer encryption/decryption + */ +int mbedtls_aes_crypt_xts( mbedtls_aes_context *crypt_ctx, + mbedtls_aes_context *tweak_ctx, + int mode, + size_t bits_length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) +{ + union xts_buf128 { + uint8_t u8[16]; + uint64_t u64[2]; + }; + + union xts_buf128 scratch; + union xts_buf128 cts_scratch; + union xts_buf128 t_buf; + union xts_buf128 cts_t_buf; + union xts_buf128 *inbuf; + union xts_buf128 *outbuf; + + size_t length = bits_length / 8; + size_t nblk = length / 16; + size_t remn = length % 16; + + inbuf = (union xts_buf128*)input; + outbuf = (union xts_buf128*)output; + + /* For performing the ciphertext-stealing operation, we have to get at least + * one complete block */ + if( length < 16 ) + return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); + + + mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); + + if( mode == MBEDTLS_AES_DECRYPT && remn ) + { + if( nblk == 1 ) + goto decrypt_only_one_full_block; + nblk--; + } + + goto first; + + do + { + mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + +first: + /* PP <- T xor P */ + scratch.u64[0] = (uint64_t)( inbuf->u64[0] ^ t_buf.u64[0] ); + scratch.u64[1] = (uint64_t)( inbuf->u64[1] ^ t_buf.u64[1] ); + + /* CC <- E(Key2,PP) */ + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, outbuf->u8 ); + + /* C <- T xor CC */ + outbuf->u64[0] = (uint64_t)( outbuf->u64[0] ^ t_buf.u64[0] ); + outbuf->u64[1] = (uint64_t)( outbuf->u64[1] ^ t_buf.u64[1] ); + + inbuf += 1; + outbuf += 1; + nblk -= 1; + } while( nblk > 0 ); + + /* Ciphertext stealing, if necessary */ + if( remn != 0 ) + { + outbuf = (union xts_buf128*)output; + inbuf = (union xts_buf128*)input; + nblk = length / 16; + + if( mode == MBEDTLS_AES_ENCRYPT ) + { + memcpy( cts_scratch.u8, (uint8_t*)&inbuf[nblk], remn ); + memcpy( cts_scratch.u8 + remn, ((uint8_t*)&outbuf[nblk - 1]) + remn, 16 - remn ); + memcpy( (uint8_t*)&outbuf[nblk], (uint8_t*)&outbuf[nblk - 1], remn ); + + mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + + /* PP <- T xor P */ + scratch.u64[0] = (uint64_t)( cts_scratch.u64[0] ^ t_buf.u64[0] ); + scratch.u64[1] = (uint64_t)( cts_scratch.u64[1] ^ t_buf.u64[1] ); + + /* CC <- E(Key2,PP) */ + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + + /* C <- T xor CC */ + outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); + outbuf[nblk - 1].u64[1] = (uint64_t)( scratch.u64[1] ^ t_buf.u64[1] ); + } + else /* AES_DECRYPT */ + { + mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + +decrypt_only_one_full_block: + cts_t_buf.u64[0] = t_buf.u64[0]; + cts_t_buf.u64[1] = t_buf.u64[1]; + + mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + + /* PP <- T xor P */ + scratch.u64[0] = (uint64_t)( inbuf[nblk - 1].u64[0] ^ t_buf.u64[0] ); + scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ t_buf.u64[1] ); + + /* CC <- E(Key2,PP) */ + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + + /* C <- T xor CC */ + cts_scratch.u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); + cts_scratch.u64[1] = (uint64_t)( scratch.u64[1] ^ t_buf.u64[1] ); + + + memcpy( (uint8_t*)&inbuf[nblk - 1], (uint8_t*)&inbuf[nblk], remn ); + memcpy( (uint8_t*)&inbuf[nblk - 1] + remn, cts_scratch.u8 + remn, 16 - remn ); + memcpy( (uint8_t*)&outbuf[nblk], cts_scratch.u8, remn ); + + + /* PP <- T xor P */ + scratch.u64[0] = (uint64_t)( inbuf[nblk - 1].u64[0] ^ cts_t_buf.u64[0] ); + scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ cts_t_buf.u64[1] ); + + /* CC <- E(Key2,PP) */ + mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + + /* C <- T xor CC */ + outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ cts_t_buf.u64[0] ); + outbuf[nblk - 1].u64[1] = (uint64_t)( scratch.u64[1] ^ cts_t_buf.u64[1] ); + } + } + + return( 0 ); +} +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #if defined(MBEDTLS_CIPHER_MODE_CFB) /* * AES-CFB128 buffer encryption/decryption diff --git a/library/version_features.c b/library/version_features.c index 0b7c0af6d7..fd932f1335 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -252,6 +252,9 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_MODE_XEX) "MBEDTLS_CIPHER_MODE_XEX", #endif /* MBEDTLS_CIPHER_MODE_XEX */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) + "MBEDTLS_CIPHER_MODE_XTS", +#endif /* MBEDTLS_CIPHER_MODE_XTS */ #if defined(MBEDTLS_CIPHER_MODE_OFB) "MBEDTLS_CIPHER_MODE_OFB", #endif /* MBEDTLS_CIPHER_MODE_OFB */ diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index ec5794ec7d..c9241cb2f3 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -99,8 +99,8 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish,\n" \ - "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, des3_cmac,\n" \ - "havege, ctr_drbg, hmac_drbg\n" \ + "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, aes_xts,\n" \ + "des3_cmac, havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" #if defined(MBEDTLS_ERROR_C) @@ -233,8 +233,8 @@ unsigned char buf[BUFSIZE]; typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, - aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, des3_cmac, - aria, camellia, blowfish, + aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, aes_xts, + des3_cmac, aria, camellia, blowfish, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; } todo_list; @@ -281,6 +281,8 @@ int main( int argc, char *argv[] ) todo.aes_cbc = 1; else if( strcmp( argv[i], "aes_xex" ) == 0 ) todo.aes_xex = 1; + else if( strcmp( argv[i], "aes_xts" ) == 0 ) + todo.aes_xts = 1; else if( strcmp( argv[i], "aes_gcm" ) == 0 ) todo.aes_gcm = 1; else if( strcmp( argv[i], "aes_ccm" ) == 0 ) @@ -451,6 +453,29 @@ int main( int argc, char *argv[] ) mbedtls_aes_free( &tweak_ctx ); } #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + if( todo.aes_xts ) + { + int keysize; + mbedtls_aes_context crypt_ctx, tweak_ctx; + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + for( keysize = 128; keysize <= 256; keysize += 64 ) + { + mbedtls_snprintf( title, sizeof( title ), "AES-XTS-%d", keysize ); + + memset( buf, 0, sizeof( buf ) ); + memset( tmp, 0, sizeof( tmp ) ); + mbedtls_aes_setkey_enc( &crypt_ctx, tmp, keysize ); + mbedtls_aes_setkey_enc( &tweak_ctx, tmp, keysize ); + + TIME_AND_TSC( title, + mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, BUFSIZE * 8, tmp, buf, buf ) ); + } + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); + } +#endif #if defined(MBEDTLS_GCM_C) if( todo.aes_gcm ) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4c938c6fa0..b22f1437de 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -49,6 +49,7 @@ add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) add_test_suite(aes aes.rest) add_test_suite(aes aes.xex) +add_test_suite(aes aes.xts) add_test_suite(arc4) add_test_suite(aria) add_test_suite(asn1write) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 947976a886..71633dd8f7 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -225,6 +225,80 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ +void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int data_unit_len, int xts_result ) +{ + unsigned char key_str[100] = { 0, }; + unsigned char iv_str[100] = { 0, }; + unsigned char src_str[100] = { 0, }; + unsigned char dst_str[100] = { 0, }; + unsigned char output[100] = { 0, }; + mbedtls_aes_context crypt_ctx, tweak_ctx; + int key_len, data_len; + + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aes_setkey_enc( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); + mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + + TEST_ASSERT( mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + if( xts_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ +void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, + char *hex_src_string, char *hex_dst_string, + int data_unit_len, int xts_result ) +{ + unsigned char key_str[100] = { 0, }; + unsigned char iv_str[100] = { 0, }; + unsigned char src_str[100] = { 0, }; + unsigned char dst_str[100] = { 0, }; + unsigned char output[100] = { 0, }; + mbedtls_aes_context crypt_ctx, tweak_ctx; + int key_len, data_len; + + mbedtls_aes_init( &crypt_ctx ); + mbedtls_aes_init( &tweak_ctx ); + + key_len = unhexify( key_str, hex_key_string ); + unhexify( iv_str, hex_iv_string ); + data_len = unhexify( src_str, hex_src_string ); + + mbedtls_aes_setkey_dec( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); + mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + + TEST_ASSERT( mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_DECRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + if( xts_result == 0 ) + { + hexify( dst_str, output, data_len ); + + TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + } + +exit: + mbedtls_aes_free( &crypt_ctx ); + mbedtls_aes_free( &tweak_ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ void aes_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string ) diff --git a/tests/suites/test_suite_aes.xts.data b/tests/suites/test_suite_aes.xts.data new file mode 100644 index 0000000000..baac1a7766 --- /dev/null +++ b/tests/suites/test_suite_aes.xts.data @@ -0,0 +1,4200 @@ +AES-128-XTS Encrypt NIST XTSTestVectors #1 +aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #2 +aes_encrypt_xts:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #3 +aes_encrypt_xts:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #4 +aes_encrypt_xts:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #5 +aes_encrypt_xts:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #6 +aes_encrypt_xts:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #7 +aes_encrypt_xts:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #8 +aes_encrypt_xts:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #9 +aes_encrypt_xts:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #10 +aes_encrypt_xts:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #11 +aes_encrypt_xts:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #12 +aes_encrypt_xts:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #13 +aes_encrypt_xts:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #14 +aes_encrypt_xts:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #15 +aes_encrypt_xts:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #16 +aes_encrypt_xts:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #17 +aes_encrypt_xts:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #18 +aes_encrypt_xts:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #19 +aes_encrypt_xts:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #20 +aes_encrypt_xts:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #21 +aes_encrypt_xts:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #22 +aes_encrypt_xts:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #23 +aes_encrypt_xts:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #24 +aes_encrypt_xts:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #25 +aes_encrypt_xts:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #26 +aes_encrypt_xts:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #27 +aes_encrypt_xts:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #28 +aes_encrypt_xts:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #29 +aes_encrypt_xts:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #30 +aes_encrypt_xts:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #31 +aes_encrypt_xts:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #32 +aes_encrypt_xts:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #33 +aes_encrypt_xts:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #34 +aes_encrypt_xts:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #35 +aes_encrypt_xts:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #36 +aes_encrypt_xts:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #37 +aes_encrypt_xts:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #38 +aes_encrypt_xts:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #39 +aes_encrypt_xts:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #40 +aes_encrypt_xts:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #41 +aes_encrypt_xts:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #42 +aes_encrypt_xts:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #43 +aes_encrypt_xts:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #44 +aes_encrypt_xts:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #45 +aes_encrypt_xts:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #46 +aes_encrypt_xts:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #47 +aes_encrypt_xts:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #48 +aes_encrypt_xts:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #49 +aes_encrypt_xts:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #50 +aes_encrypt_xts:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #51 +aes_encrypt_xts:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #52 +aes_encrypt_xts:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #53 +aes_encrypt_xts:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #54 +aes_encrypt_xts:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #55 +aes_encrypt_xts:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #56 +aes_encrypt_xts:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #57 +aes_encrypt_xts:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #58 +aes_encrypt_xts:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #59 +aes_encrypt_xts:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #60 +aes_encrypt_xts:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #61 +aes_encrypt_xts:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #62 +aes_encrypt_xts:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #63 +aes_encrypt_xts:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #64 +aes_encrypt_xts:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #65 +aes_encrypt_xts:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #66 +aes_encrypt_xts:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #67 +aes_encrypt_xts:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #68 +aes_encrypt_xts:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #69 +aes_encrypt_xts:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #70 +aes_encrypt_xts:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #71 +aes_encrypt_xts:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #72 +aes_encrypt_xts:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #73 +aes_encrypt_xts:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #74 +aes_encrypt_xts:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #75 +aes_encrypt_xts:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #76 +aes_encrypt_xts:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #77 +aes_encrypt_xts:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #78 +aes_encrypt_xts:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #79 +aes_encrypt_xts:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #80 +aes_encrypt_xts:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #81 +aes_encrypt_xts:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #82 +aes_encrypt_xts:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #83 +aes_encrypt_xts:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #84 +aes_encrypt_xts:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #85 +aes_encrypt_xts:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #86 +aes_encrypt_xts:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #87 +aes_encrypt_xts:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #88 +aes_encrypt_xts:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #89 +aes_encrypt_xts:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #90 +aes_encrypt_xts:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #91 +aes_encrypt_xts:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #92 +aes_encrypt_xts:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #93 +aes_encrypt_xts:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #94 +aes_encrypt_xts:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #95 +aes_encrypt_xts:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #96 +aes_encrypt_xts:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #97 +aes_encrypt_xts:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #98 +aes_encrypt_xts:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #99 +aes_encrypt_xts:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #100 +aes_encrypt_xts:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc":128:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #101 +aes_encrypt_xts:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #102 +aes_encrypt_xts:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #103 +aes_encrypt_xts:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #104 +aes_encrypt_xts:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #105 +aes_encrypt_xts:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #106 +aes_encrypt_xts:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #107 +aes_encrypt_xts:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #108 +aes_encrypt_xts:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #109 +aes_encrypt_xts:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #110 +aes_encrypt_xts:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #111 +aes_encrypt_xts:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #112 +aes_encrypt_xts:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #113 +aes_encrypt_xts:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #114 +aes_encrypt_xts:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #115 +aes_encrypt_xts:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #116 +aes_encrypt_xts:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #117 +aes_encrypt_xts:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #118 +aes_encrypt_xts:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #119 +aes_encrypt_xts:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #120 +aes_encrypt_xts:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #121 +aes_encrypt_xts:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #122 +aes_encrypt_xts:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #123 +aes_encrypt_xts:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #124 +aes_encrypt_xts:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #125 +aes_encrypt_xts:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #126 +aes_encrypt_xts:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #127 +aes_encrypt_xts:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #128 +aes_encrypt_xts:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #129 +aes_encrypt_xts:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #130 +aes_encrypt_xts:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #131 +aes_encrypt_xts:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #132 +aes_encrypt_xts:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #133 +aes_encrypt_xts:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #134 +aes_encrypt_xts:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #135 +aes_encrypt_xts:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #136 +aes_encrypt_xts:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #137 +aes_encrypt_xts:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #138 +aes_encrypt_xts:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #139 +aes_encrypt_xts:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #140 +aes_encrypt_xts:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #141 +aes_encrypt_xts:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #142 +aes_encrypt_xts:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #143 +aes_encrypt_xts:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #144 +aes_encrypt_xts:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #145 +aes_encrypt_xts:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #146 +aes_encrypt_xts:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #147 +aes_encrypt_xts:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #148 +aes_encrypt_xts:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #149 +aes_encrypt_xts:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #150 +aes_encrypt_xts:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #151 +aes_encrypt_xts:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #152 +aes_encrypt_xts:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #153 +aes_encrypt_xts:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #154 +aes_encrypt_xts:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #155 +aes_encrypt_xts:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #156 +aes_encrypt_xts:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #157 +aes_encrypt_xts:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #158 +aes_encrypt_xts:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #159 +aes_encrypt_xts:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #160 +aes_encrypt_xts:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #161 +aes_encrypt_xts:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #162 +aes_encrypt_xts:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #163 +aes_encrypt_xts:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #164 +aes_encrypt_xts:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #165 +aes_encrypt_xts:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #166 +aes_encrypt_xts:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #167 +aes_encrypt_xts:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #168 +aes_encrypt_xts:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #169 +aes_encrypt_xts:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #170 +aes_encrypt_xts:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #171 +aes_encrypt_xts:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #172 +aes_encrypt_xts:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #173 +aes_encrypt_xts:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #174 +aes_encrypt_xts:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #175 +aes_encrypt_xts:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #176 +aes_encrypt_xts:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #177 +aes_encrypt_xts:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #178 +aes_encrypt_xts:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #179 +aes_encrypt_xts:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #180 +aes_encrypt_xts:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #181 +aes_encrypt_xts:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #182 +aes_encrypt_xts:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #183 +aes_encrypt_xts:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #184 +aes_encrypt_xts:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #185 +aes_encrypt_xts:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #186 +aes_encrypt_xts:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #187 +aes_encrypt_xts:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #188 +aes_encrypt_xts:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #189 +aes_encrypt_xts:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #190 +aes_encrypt_xts:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #191 +aes_encrypt_xts:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #192 +aes_encrypt_xts:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #193 +aes_encrypt_xts:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #194 +aes_encrypt_xts:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #195 +aes_encrypt_xts:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #196 +aes_encrypt_xts:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #197 +aes_encrypt_xts:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #198 +aes_encrypt_xts:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #199 +aes_encrypt_xts:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #200 +aes_encrypt_xts:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #201 +aes_encrypt_xts:"394c97881abd989d29c703e48a72b397a7acf51b59649eeea9b33274d8541df4":"4b15c684a152d485fe9937d39b168c29":"2f3b9dcfbae729583b1d1ffdd16bb6fe2757329435662a78f0":"f3473802e38a3ffef4d4fb8e6aa266ebde553a64528a06463e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #202 +aes_encrypt_xts:"8afb90c2ec924c4b0b0bd840fb1efc842c9385a14d1ca95bd4d12cbf9ab588ed":"b2f8c6374eb275c1744e85aa21f8ea6b":"d9d8f00683bcd489154882290f24624726e093390783d4959a":"f4bbaa8ebd480d2a2a371beab3d8b387c02282678c6000227b":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #203 +aes_encrypt_xts:"6052a415b42d1df06d4283186ef363c9e59aa0eafa92ffe0aa1ce617fa1ed39a":"b29b1a4388673fec4c1dbd786a491c62":"eb61da2b2159b9ca0099cbb82af6cf26a645ad954811aa703c":"2c404c9b9c71dde43012a5abe879fa66d4c94fbebbdbfc01fa":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #204 +aes_encrypt_xts:"74f6073c3c4e9bf8186e5497b56d653bd6e158170a0b59c6f64db1ca60f1baa4":"8dca1120c79a077a842a9b9d7723460a":"408ac25080340d1f59e7abd879bcb2132779025ba3207fe4c5":"036c53b929980fc9f042cc4926e125331fb3e21290a052bf7d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #205 +aes_encrypt_xts:"210130cf1586c24e4f072fad1f39aa3da371cbf73af43f49efe7db5d48aaac4a":"c3ff2bb1af53e80231ad244b3bbe1dff":"463f9c120f974a5096acef4b315262ddeafb3dca8380896314":"bfc77723445cccd0e30ef333b721ef07edad579ed78561859f":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #206 +aes_encrypt_xts:"00f867841e6cc8bcea32e5ce2b1398a08730d6c567412bffb1e0e971a418c388":"f09170358ddaaec8139a9aaae8cb2cce":"ea03b308b39728940ba9e84faf4c5c54a1238996f694932a12":"97f039021aa175e3837b7d4fd79948e8500d40fb7fdfb27c79":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #207 +aes_encrypt_xts:"abbebd60a3002bfbb5842d8bfdafaa39168b61cc5592f3eee76dd06b5117c219":"aa60fa8533ced539c0ba0019ae5e99a0":"20e44bdbe4316ae7677b4d78316c5a47ae26c3248b06e779c7":"20b1fd404143f39ce1a5d64dbbc137e5d8717aa5b28471d72d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #208 +aes_encrypt_xts:"7992df46c0f31a963227fd5c4c227c756ae0b4afd3356db4823e561a75d6519a":"18c2815051d9a2c16eb006467853f723":"ea9027e5016713fa1956ef5672c1e194fd619af89a873ea9e1":"adaf45d262fbd59bd887f639f820bc1409da4a0896ad677713":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #209 +aes_encrypt_xts:"88a6ded6454dc8b660e735b95de9b96a4547238f6da36a19fa39fc457b95e03a":"33b924a99d989ae8835e9b28044493b1":"7e7ce9aa3ae4c86c210f1aa1f279c6948d2a43dd0f3febd3d4":"298282d3c794f3c3126a2c0ba1a2c8d9c47b6f2dadcaa64248":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #210 +aes_encrypt_xts:"6cc01f3db0f5f629d5c9ba91b437bbdb60ed23c035a7090446d6322e407e3abc":"af6e3a4923037e4ac052aaf823aeafea":"d1cea3010fcd675aeb9af9a4a1a2ca3190714767da0dc3aeab":"214cdd03c0f0c49d32e8b341ea60a2db076eb4d6e4d06c50e3":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #211 +aes_encrypt_xts:"f6875e62c5a26a448fb631a8893bed7a276d2c9b27c17862b004f1637dc0b0ec":"b1ac3ddb2252420f21903ffdd925cc75":"8c02a37d22c7db9e26738047c0d2272e2f4d19ba08e7010981":"2153abac32e4b527c640106cc572119b279dc79a9b61e5775e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #212 +aes_encrypt_xts:"fd527d189f3f2928df313a9629765d2c2d68ae4eede5e116a46e506abf719946":"2d1bf18678dc3e58cf0242d0cd6ea350":"95195e104502be51e909c62c861aab3ef134572dab637f94af":"879a8dde4415fd0fe17602d3565efb3d07e8cc6e73c79e92f3":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #213 +aes_encrypt_xts:"e42534721c057c6440e756d6e65f90548c3f5c0efb3708d0e3fec2099da6f54f":"3ba5b7afec9c73817ece2bde8781cecd":"0736cc39393dbfd41b179a8d6fb36d4ba26428c32d106dbbb7":"1ef24efa1b755a9475d7decb7727d391e1b9e0742966369b4d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #214 +aes_encrypt_xts:"935668ea1764559c0c172646d27545a7b4e8427f8cd3e8eb2f13ca88c8befb73":"81098e82199c910d09dead25217beb0e":"8d5c532f2e3be41f333da1eb0ec1a992bd693711ed857c1dab":"ff32c690c16217c8d37812242e18970d8690934678d24fa895":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #215 +aes_encrypt_xts:"07f19291810afe5cbf2794091307d0ceb0ee40a84b60eb3dade5994cfc4308cd":"a461f6c8dea6ce1b0bb1448949a0f457":"e37955490db3df6147ea414187db5427dbe6ec8e28c1f08036":"cc151c98f0a770134509fbd3e176ba97f53a89f8b87cf4c1f1":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #216 +aes_encrypt_xts:"06f23047f2b67ab05585be6d84ecffb67bf1afb8a7d2c991e4d92eb7018e7296":"cd2d834683418b3c99b177cb887845cf":"be9318de73b3a83590e9fe457f8e43a8b91c54bdba2d91ae40":"57ce6a3d6ef979ccd2991b2a7e99dc52269c048c8734e19ec3":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #217 +aes_encrypt_xts:"61f51917fe4c4a6176d5d157a555118da3668bc7cdda89f65b71466ad4462b29":"09530973916984418ef9e9c9e3f333fc":"541011ea4f071eb1073a542002a26ff68f5008d41b3c1a6a3f":"c5620250d6d5c90366baadd667e2e938eb1faa81345be9d493":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #218 +aes_encrypt_xts:"99dd1a65a9437f8a6cb15b7504be84475b43028680d481c0ec2c33f105f4fe37":"1d6a6528e8bc0d9f15f28cbde9dbbbfb":"91108381030c7df63e65f35bbd591f7fecb9d1038ece29d3e4":"8e675302665e5f53cea616e1689e80ef7a67f463c5de2c4113":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #219 +aes_encrypt_xts:"7ea10c70328d9984166ddc2e923937e65469b9f980686c3722d507c0647f72f9":"9c814fe58dc8f63e064394d85c64bff8":"b7b6840563a0677ab35062bcfc31944eed4ab4f0fd360b8e31":"8770255e47e3e319bd32ff0d249e0bf4843ae62e724339569a":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #220 +aes_encrypt_xts:"c3ef8390b1d9264d1daa652e210871c98680a450cefe30f418b7c8fbda75c49c":"035bb337c94f4a14ca15103e89b47413":"547f2dccf98871153d5b5483c3e02ed6b729ced86636a0ffbf":"173a1b4b09522cd1866deed0f47da469c798b29daa449972c0":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #221 +aes_encrypt_xts:"5bb35fb381c55315902d5185379a2b1609e998404b37f79e7f1187dbf8eb48e1":"6e4b057c0438c33b60a30e21b14a7d48":"d1167f61f0c9ba43d1510965a3d1981d87aa59a118a119cdd7":"ef9643acd4e886f0a793bf5a2803545d095e27b57870277a2f":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #222 +aes_encrypt_xts:"8334258820cdd938d89f6238e2562ff138b5c622cdb3d8665f2ba866c9064f9c":"f803bbbb08f2602f3cd9953625e5bbbd":"1f6639b1fc46d7515b67fd689f1e26211b9f0c08da40a067e7":"2ae630af91ce83adbecdcdc71636f688527e141fb63a6c1867":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #223 +aes_encrypt_xts:"8ce4f0d2d06a5ca0930ede520fda57804cf48d6e44c957997d8f4c00dad78013":"9ae179c73dc59514c077372c4bc52484":"82d23241cba5789da826aadbbcb7b08c06b6454e9cf6721fab":"68af115227c41990d9bc1a0c95e40d45fc9a277331666197b9":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #224 +aes_encrypt_xts:"614038df17f7d8c72c512dde15dc748be6f054e574a5f395ce488303c8b0af77":"a44bc4fa2f56dbe6c2d2f9663ed64144":"15b57091569393b05f5d49077c9d3e084e061077e929a74a4e":"a027ed474e8e8d856fe5d956f83a101910733f84c34f92fc73":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #225 +aes_encrypt_xts:"13f36a1169f07b03b8a1b096b3783abf921acc0df08f86f7356cc71209d03378":"5f6e0532d4454315781c77215f7f95d9":"4873b4c0fad95ff43c18cec8cf8d20e379819394a7192beb2d":"4c6986699bebc8de4ef1761264cae27b4b851ea2bd0531d303":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #226 +aes_encrypt_xts:"a3a739144df9d7f1db448c1c07fa899912ded87441b97b46f8207ff257422d17":"13eddbb266a7f9969b23c42947670dbf":"011ed8e077c4360422189b97ad0b06b9bd94a627e912af700b":"cdb7d40efa547e1c4c09b471a7442a382323c6e81245e3d6cf":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #227 +aes_encrypt_xts:"c384af65fa8da0d2746c9b7dc5996e28953a6bd8c75cf4c4ec4e609f239f8a59":"6ce9761b07bbdb6b8b8fd51f0ea61b84":"db59fdefaa83e896d0d400abe0f829eede6d3d4603ab370f23":"7823c42f128e3e4309591bb92267545710fa323a911ba7c3ce":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #228 +aes_encrypt_xts:"1c134f80758315cab936c24974ecc60e1f5bbc24eaebd031db70a6beeaefaab1":"e5e4d359a0a110ad39fef374c4a8e10a":"1bbcedd6dc143048476166e4e507193478eb5a73c27f465cf2":"ed3eb03768fb347d8f78f0b889ba3246d9028a20f91d856e2e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #229 +aes_encrypt_xts:"5fe96e240f72596e3ce402133b7e0cad2078de90c9ada25c3c63b4de22ed4214":"7b3b95cf9b24d136817bfb3481fc3ecc":"a7c2799c0c6237f53d1758587b4c55760127ed8bf2aa8e06ce":"a58d3740942ee757576f5702ae0143aaf09e0d4eba5cb5676b":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #230 +aes_encrypt_xts:"40f0f2f18c4c77b71002658d66955b129066fe9ef164608e3a06452c180c884e":"65133652438f1b0ad14752e500408e39":"78150268b20c8661b073657b1e4f3f7e11bb51bd95c14f2165":"bd3258080df1df07cb21633264eae50f3c6cd4c6b409c8c02e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #231 +aes_encrypt_xts:"390ace7df8d9892010652a8862b171a7d058dea4965f2ce695e1491156e8d6fc":"ea297b9462b8fa94fb3391669c61ecfa":"991f23936a4eec5e7ba83044ba842cef061eaeaf8e799228a4":"a67772f97982680e75e74e4a38f2ba0b8392e183d277d1a25e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #232 +aes_encrypt_xts:"25ba7f7fd6a6a73dab8e10b650a9760d54eee4c2ac329a93213cbb1cd85bdf82":"0a88554a4c8a6161a87f6e6d34716697":"258fb3ec75e89725ce871adc4c492dba868d62bcdbf3786932":"ecae91b32ba90a35d01e7499d09c136357fef2926d046d4c6e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #233 +aes_encrypt_xts:"17c11527b98a80e5368005fcf05173c5121cee6107c716b54a9e2aeec4ff2c79":"27f00b6624d4f10444c85c95b1f6a7e5":"a8acdc65502df6a6fd0dd2e0fc0593b5bf98f820f5468e3595":"f39239affedfd427901e58094b93ab8016b74f88a91c03f05a":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #234 +aes_encrypt_xts:"5a09c86603053ee166d97b8b656eddceec74be955a22ac9d530b87c5d18e2ef7":"5832369a401fd6e4ed57932dfdba85ae":"bb8411818a8be2285615a5c1f5e1a64d328f98f379e1644239":"48ccd45842d2790c34ff5c66b501debf569e797573beaa00ac":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #235 +aes_encrypt_xts:"ca36f1f6934b300e5c975f648fbf6a0ae3e7c29c76b30fcd5f49592a2394b1a5":"a656913d21adc644c72fec61ed050c3f":"4f484497dc3cdbb3816047195c04ec2cc5faf97b228c1839fd":"52a0ebbc5391d438110f7277966136c880c43fe1f2f0d70aa7":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #236 +aes_encrypt_xts:"93035c14d384a781dc92d29f446ba709c5d32351a908c1a56d7c4447050786ce":"2b628a380440823f22ebdfa50934ba23":"b4ac378eadf90f8f53f64bda7dedb2b6286ac19848d11b896a":"a0acb3739ffd5008bf57b3e292b70e33e8b71a68a8a12f0b75":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #237 +aes_encrypt_xts:"4486838e62524e1c6e05cc1fd3363ebb50dbd59ba6147b0c13da6beb98f2388e":"d70f77fcd9529efda9930f0b2921ab17":"bf0db2891f20b54cc7d7c32c467ddee126c7912c861b69bba1":"78c9bb3fe16d7c5e11e7f69a12da5d0a9decfa070277c9b709":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #238 +aes_encrypt_xts:"9884700b29e65a7ce78d59d16471019eeda7f8f9f054a57cb89a19d7b3eb6c52":"0562e1568b2264be65067a6a4e767924":"b65a91f6aa728b64282bb2c245e232bc3aa8030e78eb44aca8":"c4c87711919613f8d2bee324f07d6220e0c07f20206b611d50":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #239 +aes_encrypt_xts:"37b793ff51cd83f01ba5d0c2186ed2ac81637fd759022e434d9dc4491fb218a0":"656489f2473a021fbdca7465d95bc6e6":"8408a1a7514eb81c9be042316963e7ea9687b3bde92b285d9e":"a62ccf9d5b31b6d1e428a93c3efd04f6bcf08c7746542062e8":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #240 +aes_encrypt_xts:"6a4f963102476f03c1961da63f100a12185586342971131e7363c031721dac39":"9476741f581a3d58ceb586dc1a1b9990":"4f8afe09801e8ab585e3f02fefdd1c157d1064fb31bf52ea15":"73b03d51cb3d7b6062c6aafc842971281417709034a99905f7":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #241 +aes_encrypt_xts:"1fc997593a1e96ae1896d2ccee36a2d977bae2039a1f266e57e07b0f3aab8dff":"324dbc298eb9fda397227016eb28be9f":"60dd3b2c4dcbbd62c7afea77b82c96a9d7c8cd124125787323":"b233384a9ae646210b6191656212cb28339679ad801e54a58e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #242 +aes_encrypt_xts:"501d8b1e26db47dca3f3b8a5d82031e11785c35947b4add20128f0fd7413e61f":"65aac528e07922190c825e59962bee46":"d570ab4468efdc2afd13a7524f1e74f89a150df75aa6ba1d2b":"db41a8f6c57e3391097035b5d40bc2625213f1c6bb78f50aa9":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #243 +aes_encrypt_xts:"ad1aa2aa6d67b2ee4d2b2bb63116c4422b87a3f537889a9f6e19ce526f8a76da":"daf6877ddc2930804422b2a25bd83cea":"d4648b3e737082177ed6ccc1caf48500cfdbeec2f052522fbe":"42f89e670adbb6484ca15d9326a411dfa5042507fd549960d5":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #244 +aes_encrypt_xts:"90b0e0ad653e1b0784c3ab33a95a08819eee61cb46f866b5fec5e8cf9e47fc70":"0e631c6f1e4026fe38e7867e26a39295":"aaff25cd8502ddade1f0f0b50882f6d1741f44405ba7a9222a":"fdd741e15a8e53cef1a78bbf9f068150fb6c91a89b57212aad":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #245 +aes_encrypt_xts:"12920ae695dd07425a1002ab1d3eed2dc5065022500379e32bde42cd5fb849c8":"418a3273dfa013d76c17aa02b76192af":"8ed2bebaa5f42279af74a2c0cad26f152fabdad23bc07948a6":"f6e692f23c0917e638a80031bc57b403299a797b7986a3e514":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #246 +aes_encrypt_xts:"18e9fc45cdf3a24732c63763ba4b065d189ad201d45ddcd77f45aadea9cae18f":"fa4d09b5264e180b666c48eda198404c":"afbe16568bd1900c1cf60e43d295187cac1abfb26ac55a896e":"3d1af03817d694a492796a0661980a80acee3147c83e171cda":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #247 +aes_encrypt_xts:"9e4a0c44dee66b7f10c90159391e63cca7b6cf476a217cd29c3375a4ee84ce09":"1636eb2a5f8133d68cbc8781f34201fa":"1f6ce4e0e8545e7d4a96ea2e886986c53aa78dc32b2c6d8d64":"cd09e978f6cc8e85d66b6ce2a07b712aaf4af448488cef38dd":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #248 +aes_encrypt_xts:"9094d67639a33c185d6fba5139a874bbc647de93995ff0f2527a38876954ae64":"eac4c96f67898f4a828fe775300dda69":"f44fc9c7c06697f3d67ad70e2e456e58ec183a8546a95d8a1a":"57c341b4129b8b116485e33baafca44864959b6fcd75996f4a":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #249 +aes_encrypt_xts:"42f87222102586c14f2a609cebbe96aa8374efbb38b15a66cdf69db0710dd776":"042fd8940b15e78b285528c6804a55cf":"16ee2ef9fc7dff88575683e2c2965ace93ef2cc0fe880b8cd9":"e326d372cfee988286f6d0ee8167578e2c0a0fd06df913d355":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #250 +aes_encrypt_xts:"fc5fac80b69e7780adf841c49936d221d0da385ed4e4d384ae61c0018ceea102":"6a7c2ff7b1cae2a359b96c1606b10679":"e3d2dc05f30541bc7976ef482322e3ac32f8c1cf63f00f8ed1":"25932ca1dedefcdec569d1305f8abc1d25ab21728bd5d5ac5c":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #251 +aes_encrypt_xts:"e764d4a43c23500302f3cce9f4d78a922f31e822e68c41be20efd3c981eb4e9b":"11ce717ef2e553c32f0cc16cb0d4b0e6":"14962b52355600e138d3bebe594ae85c96c5027a6d65887c01":"41f829f09977f4724d4c1fe387b7ea0135918d61d6c24aaa81":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #252 +aes_encrypt_xts:"4977ab40842fee15b0d6dc0a4efc322024271836c6643631b5b7e0291051446d":"cae105ceba1f16c9882534e5bfdfe604":"6fe36fb5e07663cb712f009052a606efef3c1e0b45f967d9ae":"5753b4417ed0ffe081f7cd2a23fe14beb9126c2b1bbf1b8175":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #253 +aes_encrypt_xts:"451c1ffff9a02867453a5f2389319c9e1f9eae7a95338be76ed7bae53513b6ee":"e6bc99a1a2c4d5e1d3107471bfcb0599":"5f901756506ce784edcc45320a081497476fe0a5e946c32798":"0dd88dd144165dc85984b134e2e9d9c3bd471768ea6984266f":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #254 +aes_encrypt_xts:"8a1d702fccd2215212ef3d82497025bc73cc171bc53b406b3bbd415b5189df3f":"bceee9fd3dc69ecaeb7c7f8260a1029c":"ee3bcd52a4c80435404705fd2c5b2193fa425fdc78171c0e20":"95a6736bbf7ad45517ea25b623a8de1dbd13b358c24cf4ee30":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #255 +aes_encrypt_xts:"675753a16ecf9b40c66fd1f6c3973b061d76bdd02a0e9c7a0ac5c09630b947ad":"1d987500e5bed8f6736549bb45f8cf5b":"a6e9d9c2e87eba4e6fa2f1ab37d0fb5c46e809ef5f044ab61f":"a43341fe59c1f3bb9a8cbf5c71c8c4c02172392df716890733":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #256 +aes_encrypt_xts:"3e72c4e778e339f254fa2dc5a7998e9c5677a509e1960302314cda964db7924b":"d5bdd52d82dd3fe5d8900ee817571012":"72be49ccdfb8328cb2bbb6f10eac20cba9d1176b8e04ac467d":"d4da53e7ef94fb114fe81c349ae469a0eb2b968871cdf7c9d5":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #257 +aes_encrypt_xts:"ebee2706f8fe0b6c4363fd678037b926b2df1a0e79d4f5ac293b6a7ebda63e16":"92651101fad79d68bba6aee4647e2a7d":"2bbb8f7902366bcd95ead90d14517e46c15d28be47e97923fd":"79d75b0f0f963732640ef039d8d662db11037737779a050390":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #258 +aes_encrypt_xts:"ef279cb5100ec77546f36ad5fedcc776666cbc087d2280a7507de679a8347952":"7e10c655b1118baa83ad903128863d3f":"4b84652f951e21461c50947ae64913d16110f7419bf7e9c3f1":"ff14d1097efd5146efa1c3b9ceb6d57a650ecd24f19523daee":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #259 +aes_encrypt_xts:"049e2338ed7b9cb2ce6942e7417f768bd05767f1310f0142c1760f9bf6fc34b2":"a224decdd41c72d63a5bf078c4e03129":"db3d252e3b9a3153547f24df015f5e12a94c94e29e2cd14096":"ab3462a486f8bad95f0ee099fcdafadbcaaff73cb28f6dae62":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #260 +aes_encrypt_xts:"c784ccf72ce67db21fac9b2db649b7f0b2d319b734dfd7d8f37457e8c4ea8b9f":"c57c6f940224ea7e24fdbb3688337721":"ce5fb89b2c313070fcd85a310d90348bb103af093c38633a93":"3d8809d6f5d4fbaa893f4832657ec3fa8d2c31bec15107624f":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #261 +aes_encrypt_xts:"0da2ef2b3e42652567a9d7e00d78072a4c528b8a1c444cb2dbf725997876f13b":"fdbb92831b9b2f3758295bd405a1b9fd":"fa914a5d45afb654e82a33a52b4ab2c4e92f1b0ca39d75654b":"e4ae621ce3ba1f2423532e186ed3ce78e93c1bee82cd92c32e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #262 +aes_encrypt_xts:"b17254f48188c2f7602323e5a8da39f31a9585725b204067f49057e03be1ff3f":"94b401bbc4b9f73810e88438bbb0d1fb":"306d05045dbc4ad0c7d8459001fb5cc1537f8e77aee2e446a6":"4fed11ea08dccdddc6f97c8039959218636e224069fe25b06e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #263 +aes_encrypt_xts:"3c05a555da1595e9c151c8a55b149f6caef6eb3326e5de58c4f902e53f0dcf00":"1fae8f3e5607ed4d89ca4e8d21f849a4":"916687ddaa519303e38207bd1748d19727c347af8e7c5c4b34":"74d2320508f2b60ce3ed6ed6fbc12908f14c5dcaf2d890b37e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #264 +aes_encrypt_xts:"edc7ddf1af418fe0ec30c142526fb970f3e70c4183a722246eea6f32fe26e4fb":"903243958e525f03a1774754ccee5cd2":"efe22bf3eac0aff0a8f798b8dc2bd967a740cb2afd018df1a7":"0e9ec45e968e1103aa6f78a5b23706189e8f61fcc8758f99f2":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #265 +aes_encrypt_xts:"3644b6e1ddad06c36ba2a369841de978b182fe90f1767d7652568a7218fb3a9e":"da4bf695b21d606e7cd7c6dbcb64d074":"a99a87841ab828375a7177b863bcf2b9bfe1bda02dfefa0200":"feef1ded263a273989f4a16b907edfd9e9f4e2f085509ce2ba":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #266 +aes_encrypt_xts:"69debf9b3c38faae3ca9927bdeac8c3609b88b87ac269afc2bd63d221bb35d75":"1f3fb765167e0e91773ce97f102cda60":"0d374a41984b539d6bec39316473637b1c8a5b48b5734406ca":"bfb95b7fcea88899b5d57d9405c16403e68c2a42fa5a6ab450":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #267 +aes_encrypt_xts:"b6cb0e7c03eb812f701e5e562db7eef80adeda2402881013f0c00dc0d8a14274":"1e26366785b21d1487c0945cfebd1b4a":"c460940eb8afb254a5c3dc834dbb088a69af761b4884ec48a2":"b5400e6a5a0dea27214ad579229b579120e375a5ec6a0fe9e2":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #268 +aes_encrypt_xts:"d95260b97d7069dd2f30006d686f5d5fbf3141bfff295df70e9af4b7f3d7da65":"1807f95e6b00f8d843d118fe21cc54b7":"ec9026c8b1388d48b15aafe32f663f5024c1744ca8832d6e0a":"bef97fb5b326541fd1024b5513ffc54475715435fa86884bac":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #269 +aes_encrypt_xts:"c909a9f89025137670c94a35ee280324e4e69fff32bdb92da87d618c7732f6b6":"b435909e84a9bba20a81ad63e95adc5c":"216cd882630f21f53f152d81341d3bb2dc7b6a8d8918a1616a":"8170ef0326c67578753a9995bf20dc2678ba8caec54d52d25c":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #270 +aes_encrypt_xts:"2dc29601550890a4b9747ff18da7d44a977ec4cea206639702ce7580e1c5b37e":"7cf2b45cb1937a640cfc66153fc3e981":"c07c1799070c5451d9bca4424504d3cb208b2e7592ee3df086":"4ca9c280b77779c764e965e051256c94a3da4e2a81f42c01bc":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #271 +aes_encrypt_xts:"9ca7dc714099b17b71a6400bbeec2d9476dc84ac95bf855fe3e478a984ec71b3":"3797b7798f1670b9e394d6d94f9c8238":"f00ee8fce52ad07b2009122aefe5fbdde2f4357e5a4c2e1388":"d737063da8968cff0852d15a048192c3f52e9c3fbee3aaf3e6":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #272 +aes_encrypt_xts:"0ae37f5ac48d6a2d528225506f80bd9241f17135205a1a90619baaac931e46b6":"dd65ef2b931b0ca92dd354c87c9d7bed":"ce3310cf42b951ef9cfb8e7f05b36a157478f8d3c76e62752a":"bfedd3cc1566d414c1ae19262595b5208ae552ee05289b82ff":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #273 +aes_encrypt_xts:"389ecd695be62d7467bbc9e4228212d0fcc46a3ab77d760635ef61f9aea4136a":"3451416be9964e0a14757aec60705838":"b7c003c267f3c95b12664d726c6e73d93baea238d23802e98f":"ae3333b90593ddf6c0c9ed6b64bf5fb53c607b8fde8e619a52":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #274 +aes_encrypt_xts:"6171891dbf04fc163e141ffd92015e3119e74b31c1122788cb6321521f2ce6e7":"c8350b5bd076b2803b8c38408d4b7d16":"2e36bae834da6926f35cb35bf1ffa396ee876f52371a9c9aa0":"b59e938bfb8b473ae264017913257ce71d081c33e4f17023f0":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #275 +aes_encrypt_xts:"5d830cb67b77700a768ea3935335986d675a43011091ccf1777c1903dd8472c1":"b972e333fa01f5813d3f33da70882af7":"44d0b6fea1ab47edbcb69484a2de6b42b3c4ba59eaf1bd5bdc":"ef27bab834ad34ea9f026fc0deb96ce3c731b7e029b5f119f6":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #276 +aes_encrypt_xts:"fbd0b0bb3f7d415bb072e12815d1e432da5490a0a68f0f00abe47319e92ec1cd":"581b1f8a59e66a1e21547b715e86222e":"1c912851c2775e56046f61386dd8004a46d8939b9402c34640":"13819d2156d46ebeba6f8b8243ce163fe4fc93bbba047d82b2":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #277 +aes_encrypt_xts:"cc99b6059568fa44e7d30cb03fa6cc99194ae718e8907e8c5dfaefa841d14f3f":"087167e3fba4edeea98ee9530a51ecc3":"335f6292a5db8308a04b7e287ce00698716375e1430eb051d4":"f0ae2e8e4f43709f9513c7d8d54542fdefeedb92c3f3df696d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #278 +aes_encrypt_xts:"0862c0f15bcd10fe50317c4ddad84e889f90aac77cf2f3407603079bd18bf9b2":"e4db4baa2c402206d94d985511189041":"dca083db5080cb24aa0d6c719468b271f08b516d564782fac6":"fc0be49f7226f03699553ddcc306d9f11dbc10ae178f2ed969":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #279 +aes_encrypt_xts:"eaab1775215640aa69dc5215e3eebea54e1e5404b7bbfe1fac1a499ae21fcdcd":"09dadcd9c49c75198bd0bf139baa0b23":"0d868bca68497051610f715d695930ae5c654464b845144c93":"7c68dbd7a1543c1996cfc6d3d4ef3a4e3cede53de0681a74ca":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #280 +aes_encrypt_xts:"bad7ed1dc3460173247761d6dc798a2a93553f1d33ae014fb7f940a4e414c4af":"4fe879235e79cb8fb2499722652e7fee":"b3d6332dbfe3be9b20425df73ce605ca787434551a0be1a65a":"a4ed66bb18ebb2c2c09749fae3247768c0213a939070c7f032":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #281 +aes_encrypt_xts:"9d0b7247238476a25db16bb061be8ab76f7c1ce9bf9b256e0407d5016726e983":"fd5c2284e72362d369c82f86e63a8398":"1a7e102572c4795a6493857b50b3bedee0de68305aa622b432":"d1aebf0213b3aaad1a89a73e1ed0c6c494e8f4ce4559d9ca25":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #282 +aes_encrypt_xts:"dbdcfb0189bfe444c9964460e7d48bfbf90bd48c706635cbf1907b4af137f5d4":"591477dcf19302e578f569f3e81d1b28":"0dd2575a6b0757bcceee19b74db147394dcfd89a8c9953352f":"cd07e57e7f9ccd9a8328c5717e4a6cb9f82f31fa0e78239a8c":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #283 +aes_encrypt_xts:"69ec9a750e63328c09421e30174e44f048952fbd717a1f4b884544417a8e2e6d":"df94cf10396922f2c5e54943e88dc46a":"48f0f1543f644b417242dd1183dbeabf6f8e40bc820ff2da1c":"c637ba39b02669b6c8759a5694a917e11a91c46e1338b3dde3":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #284 +aes_encrypt_xts:"75cf1d4394c6b256b29b225cfa54648bb05bef1210f0932d1c64062499961108":"1958ffc6e26bcc5fd9b638bae5cafe90":"1bb523250849224278636616b50446d0e16488151d3cb4071a":"0576ac39ec2716c60ca2afce812d9f0efb75ee429d8f3455b0":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #285 +aes_encrypt_xts:"b8db0b9e63f5f0e6609798a6cb42bb5b5d7139bb955799f52a7c581f84633176":"8d46f96701167a1d77cd1e44da92f3a8":"b4644dc1b38dd598ca840a82d4d9c0656723b15801aa18e66e":"09288cf51f1eb4adb85423d0e0d6e958188706af260e24674e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #286 +aes_encrypt_xts:"41407d7bd6b7666c320f2c2a89ffa5437f78e4e5dcc81ec3df3616237ed27819":"65778665119801907c843e0598aed0d5":"371e57c294518cc7bcad10a9b3ee45d77e3dbd6d5c6e83fd99":"2f70e57d5bd098a8a019d6f60479649a8603284a27b8e2f90e":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #287 +aes_encrypt_xts:"9790040342f660b3fa7ccbe990cd0866e33ba8fc90ff3fafe45c1fdc388b548f":"9f380615149117b24eebb8d2364cc3c5":"ea069a8de1482eacfc5d7b8099fc6c331487bf4c52ef7aa5a8":"bc32729d102494ead18c7a3d273e4bf0ce16671e6b378062d3":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #288 +aes_encrypt_xts:"8b681f99ea3a7a6f954a0bfa0b7208c4af19176df8a7e51bcd9d1104b3a21bdb":"752c97876b54f33d371bbd3198675a86":"87dc736a04fdacdbec20d5987a26d2f0064385bfa11e4f6842":"fb2f15e5aae94edc8bf8b021e5dfc9f2f1155b306560dbd064":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #289 +aes_encrypt_xts:"770059053f53f24f9afe0694280e35be66a00cafee4180b5dda108761b460acf":"638289381ecd2b5043f9978f359bca6f":"ce6c188b42c2e54c5cc61d41b9c22fe1c195090603fab8d7ce":"700d63a1e0919de638c229ecdfcb6bff9f4bffddb57b43b47d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #290 +aes_encrypt_xts:"a3f53da523b7707c5a720213df5fb206a13cb381d43144a44684813af0f50cad":"8df861cca6930cf385da66d8a2645886":"a5ae456dddf7d4c69d98f07fdc3b8d2faff18ee4409758a8be":"73e56ce7c2f711e8e3cbaa7ab323711b552ef64d0e0121560d":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #291 +aes_encrypt_xts:"df57a76f69a4ed440236ef46aeed0483264c8ec2e9b926a5622c0f4d16f11c72":"6299d19cca7b488f398c82199fb0c693":"cce18dfd27b965f992ecf0f4b8712b0905e222ce3e6b0de160":"d4833a029818f02fd0b0ffda3ff055ec03c7e1ceb7d07ff046":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #292 +aes_encrypt_xts:"32d773f5a9684daf661d72b5eb176e742714096e040fb6be6299e11fc0b5a1c0":"084b52b31726092911c468d9755f8e1a":"2ace487e0d253e94f1eb873e5fd77aa99aa57467d3c483d33c":"fef06d12b502c66349faaa13cf9e111d6bfa7bc285ebcc26e8":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #293 +aes_encrypt_xts:"24135c437a1cdd551da0e7b360e50be8996bebbddfa5ab6641a410029cc62a8e":"c9da86cd08f5e50b379b7e179e81ce1c":"3837fd178932a761b7b332b1086c91db2a5fa0d4c13e4a4fbc":"6f1f0d9f45fb6323c413ec3e0253dca7c203896018ebeb7fa0":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #294 +aes_encrypt_xts:"dad5449784634bce789a5d0f7846adab8e44a92cbf206ee337fce51a479e750e":"9e956ebc04fb79ea3a545a70dcfea495":"aad3e2d07bbc090808a5470dc26621ab483b9e1083ef4b566f":"f7a55a52650510d2f9e8748190e19deff97d7ce3326dabe117":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #295 +aes_encrypt_xts:"bf450e0d06febe5e78d10c4a71a63fdb6a9c77e467fad3a6ba90d9119d62ffe8":"2230f85cf887d594107d5758de34f2eb":"6963b057c4785730144a3c682fbc22ba50af7c6f8b900714f6":"544f3bc9a39c1c56431674e7976be2c7d624b25fbb8f342db9":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #296 +aes_encrypt_xts:"e8354849e799b6dfc2f7015645c21948616afecc449a0b94786bccbc244e9bf9":"f1a789b4c76ab39da591c3b3ea9ae75c":"08fed380e9cfe583f769822adc885d439dbb4103c3c7d36e5a":"1f2136319ad84dcaa9fadabbc2433e8d854794ad50c92d9dbc":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #297 +aes_encrypt_xts:"8fad4e44ffee282a2f96c76f14adfb703b856b96c18d409171b089de1908b306":"dc00a2e2b27cb79d3e14fb505bde3842":"3e953629e42bf39b53364b73e20946dd2bee0eae6d442f1a68":"f3cd30a00768b3d8c49cf8438130096aa2cba2a1f08e8ef515":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #298 +aes_encrypt_xts:"d1cdd107e8aa980ffac39a36d3b2714715a6193a5c24791716211401885395b8":"9773afc7efeb6a9e3582544c13aad954":"e4f7487a4bc0e29a0a8b2d01f0b6ea1c58f34fba782d5b6c19":"cfe9ba9716ebdb434bafeda9615d0fc41516c2a9cd260ab45c":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #299 +aes_encrypt_xts:"7e1d8b12e7955529b902062364d3f2fb10eae877ed50ff848429e27a8a3f64c6":"e95297569ca19cc1bf9e4334c7129a07":"92a867163bd97993371e44289463b3a0d9fb6ceb95b30b8089":"b492090c2b98bbaeb0e5f8adf2fcf9d74bcb87204cdaee0fcf":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #300 +aes_encrypt_xts:"b7090e04e8a41c798aa16ef695c57aa645f8ee29742e0d98d320463a4f7ee17f":"312b646c51109e284a6cb073b83bb252":"9cb4e43f438290494448a669147f6864b16a8a45782a4fd40d":"4c33423b061d4c23e7d90030f3407523d0f8e8f7f1a442bddf":200:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #301 +aes_encrypt_xts:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #302 +aes_encrypt_xts:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #303 +aes_encrypt_xts:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #304 +aes_encrypt_xts:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #305 +aes_encrypt_xts:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #306 +aes_encrypt_xts:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #307 +aes_encrypt_xts:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #308 +aes_encrypt_xts:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #309 +aes_encrypt_xts:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #310 +aes_encrypt_xts:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #311 +aes_encrypt_xts:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #312 +aes_encrypt_xts:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #313 +aes_encrypt_xts:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #314 +aes_encrypt_xts:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #315 +aes_encrypt_xts:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #316 +aes_encrypt_xts:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #317 +aes_encrypt_xts:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #318 +aes_encrypt_xts:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #319 +aes_encrypt_xts:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #320 +aes_encrypt_xts:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #321 +aes_encrypt_xts:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #322 +aes_encrypt_xts:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #323 +aes_encrypt_xts:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #324 +aes_encrypt_xts:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #325 +aes_encrypt_xts:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #326 +aes_encrypt_xts:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #327 +aes_encrypt_xts:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #328 +aes_encrypt_xts:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #329 +aes_encrypt_xts:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #330 +aes_encrypt_xts:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #331 +aes_encrypt_xts:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #332 +aes_encrypt_xts:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #333 +aes_encrypt_xts:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #334 +aes_encrypt_xts:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #335 +aes_encrypt_xts:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #336 +aes_encrypt_xts:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #337 +aes_encrypt_xts:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #338 +aes_encrypt_xts:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #339 +aes_encrypt_xts:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #340 +aes_encrypt_xts:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #341 +aes_encrypt_xts:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #342 +aes_encrypt_xts:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #343 +aes_encrypt_xts:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #344 +aes_encrypt_xts:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #345 +aes_encrypt_xts:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #346 +aes_encrypt_xts:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #347 +aes_encrypt_xts:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #348 +aes_encrypt_xts:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #349 +aes_encrypt_xts:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #350 +aes_encrypt_xts:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #351 +aes_encrypt_xts:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #352 +aes_encrypt_xts:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #353 +aes_encrypt_xts:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #354 +aes_encrypt_xts:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #355 +aes_encrypt_xts:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #356 +aes_encrypt_xts:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #357 +aes_encrypt_xts:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #358 +aes_encrypt_xts:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #359 +aes_encrypt_xts:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #360 +aes_encrypt_xts:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #361 +aes_encrypt_xts:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #362 +aes_encrypt_xts:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #363 +aes_encrypt_xts:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #364 +aes_encrypt_xts:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #365 +aes_encrypt_xts:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #366 +aes_encrypt_xts:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #367 +aes_encrypt_xts:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #368 +aes_encrypt_xts:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #369 +aes_encrypt_xts:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #370 +aes_encrypt_xts:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #371 +aes_encrypt_xts:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #372 +aes_encrypt_xts:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #373 +aes_encrypt_xts:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #374 +aes_encrypt_xts:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #375 +aes_encrypt_xts:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #376 +aes_encrypt_xts:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #377 +aes_encrypt_xts:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #378 +aes_encrypt_xts:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #379 +aes_encrypt_xts:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #380 +aes_encrypt_xts:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #381 +aes_encrypt_xts:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #382 +aes_encrypt_xts:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #383 +aes_encrypt_xts:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #384 +aes_encrypt_xts:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #385 +aes_encrypt_xts:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #386 +aes_encrypt_xts:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #387 +aes_encrypt_xts:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #388 +aes_encrypt_xts:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #389 +aes_encrypt_xts:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #390 +aes_encrypt_xts:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #391 +aes_encrypt_xts:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #392 +aes_encrypt_xts:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #393 +aes_encrypt_xts:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #394 +aes_encrypt_xts:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #395 +aes_encrypt_xts:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #396 +aes_encrypt_xts:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #397 +aes_encrypt_xts:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #398 +aes_encrypt_xts:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #399 +aes_encrypt_xts:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da":256:0 + +AES-128-XTS Encrypt NIST XTSTestVectors #400 +aes_encrypt_xts:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #1 +aes_decrypt_xts:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"3454f7d34c0caffa12e9d2850b037fff":"07f2c2d4e6db6e1200bc165d154e0698":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #2 +aes_decrypt_xts:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"1070b7c17d3474281ad01fc0ad89cd8b":"321475ac6aa05712554d35a0a96a9265":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #3 +aes_decrypt_xts:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"2fb97e979fb107bcc13b577f0f1ea203":"6e0a78bc0db27021f0f59756a447e313":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #4 +aes_decrypt_xts:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"cff15a809220b4067c7c0266bbcb3248":"18757efd08059ab70bde2df78f3bd6ba":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #5 +aes_decrypt_xts:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"83725eecbcdfa8ebdec2f40ba4b157ed":"7fecfc127a3762e30e14791141f65585":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #6 +aes_decrypt_xts:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"a7931ff118db06cb44097bcac1fad1af":"c5801ed8a38a78277a45516a3e12b310":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #7 +aes_decrypt_xts:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"331960c250eb4988c75c0d532e206e5c":"25162f7511b5c3b24aee339ffeb7941c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #8 +aes_decrypt_xts:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"369ad5f8fb83a0df649c899b49ef7459":"09da2fc0ed605b69d95e0b7760840a99":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #9 +aes_decrypt_xts:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"4ae7a4ac80023405ac25bc497d6541fb":"d66768542f495d5c50b8623f314085f8":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #10 +aes_decrypt_xts:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"c0f6f44c03d1cbe668c034562ea3d804":"f6c53bcb07cbb44747fc19a6604e26d7":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #11 +aes_decrypt_xts:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"dcff3e38dfea1d3eb78182326d7d68ab":"d2f58ae0386e9230744a2056b7fd1310":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #12 +aes_decrypt_xts:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"26339412d7ac113b319088153e13e1ac":"e1fd155647de15b9fe230baf668d23db":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #13 +aes_decrypt_xts:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"29c3616714bf8076ab195e5e0d6cc0d7":"5fc717d763a56d764a21009b5132dab4":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #14 +aes_decrypt_xts:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"8850a5b5011c0b49b444daa5cbd04aba":"ec5364fa0184d8b98ec02cf996428f38":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #15 +aes_decrypt_xts:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"2fbaadd1b47f726dce3f7d4c0358fd99":"95360d08af997eb3ec62e641dd6b899a":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #16 +aes_decrypt_xts:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"6df4beebbe92ec8a427336b0caec1ec6":"fde4ae887d890b8835a5fc80bfcca708":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #17 +aes_decrypt_xts:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"945864f9190ea8c11943df2510f94421":"db57d5b819129d7896e2df0958a6f9f3":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #18 +aes_decrypt_xts:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"a856594179845a87855ea16dd03916be":"f36143630377d4e4efd44c5716a8bda1":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #19 +aes_decrypt_xts:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"d13ab11d3834d733ea5dd6dbf79ac92b":"8aab744287bff6901441908da23f0b11":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #20 +aes_decrypt_xts:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"51b9c927ead5fadad56c3eb1a220eec7":"b9a3533b48269b56f0dbb05724272ce5":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #21 +aes_decrypt_xts:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d83ddc006deeee4cc2b4c495830dddc3":"d33777d780a04bfe625cae471d2b8169":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #22 +aes_decrypt_xts:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"6d246f57b5d692205f2b970dcf8ed6f8":"a7f7e80a068e7591ae681fe3e5e277a6":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #23 +aes_decrypt_xts:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"a8b8326cc5126a926cf414b471abd1b2":"f31aff86e5759a2243bfe96f1cdad7f6":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #24 +aes_decrypt_xts:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"47b751adeeccd4475163239610797d4b":"4f6707b5e65da3eea92b5353c7bd95a2":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #25 +aes_decrypt_xts:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"e8c647ee7488adc4090e08a96965cced":"d3aa65af5882d432e8afdaa0b4f42640":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #26 +aes_decrypt_xts:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"1c980fd798b916326c525632e215c4ec":"8789bb3e01c8d3e768033f2c05ffee17":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #27 +aes_decrypt_xts:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"90f3c999cb074587f875561d04160c6c":"1d72767fffb8de3a2a420ca4383087a6":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #28 +aes_decrypt_xts:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"cfa1f3a9a152c4875100ad4807b3b09c":"fb8d8db9cb8639de8344238dc2c1f255":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #29 +aes_decrypt_xts:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"b04ea8cd83aea25893ac2a621879a4cd":"90c08ac785b3b5e7c1815497a451a96c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #30 +aes_decrypt_xts:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"b1ac6eca721709a527598d1dc7fa365e":"036cad62c24295b188c47cdc247eae41":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #31 +aes_decrypt_xts:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"98f21426b7148082b4ee4a8074672a10":"857679e49cd68bc648c4ab0986aa59f8":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #32 +aes_decrypt_xts:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"22f8c0637327b1123067e730c3be4a01":"5c931a135b9d4a7d65c9a8d5535c1294":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #33 +aes_decrypt_xts:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"8704552b90009ec3324adbf284dbd51e":"dd155757fcf457d90bb571e8eebd4630":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #34 +aes_decrypt_xts:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"c5f6673cbceae8236fa236798261eec1":"56fdd92d70c107b7707c9aa1d33ab0ac":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #35 +aes_decrypt_xts:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"91eecd8bbd0ff7cfe4b33d8e99924368":"d49ca2b1dfc2848120dfc2b75e292a0c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #36 +aes_decrypt_xts:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"86d6bf324bcc2910816abbf55f3ba45d":"da868afeec48764091c51f5e7332338d":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #37 +aes_decrypt_xts:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"5b0a85e376a636d113366ec82a2c03f8":"e8cb042a3d239771ef104b5892bd1067":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #38 +aes_decrypt_xts:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"9b3a036436a24636290c969e9d97cf8b":"df6867693d8884cca8198283bb2c3e16":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #39 +aes_decrypt_xts:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f515b3d50e991d55a3e0fcb093085a10":"f224ec19a58bbde03cb692e0e4fc19d7":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #40 +aes_decrypt_xts:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"4b20fce1ffacc7553afa3a6ac94e5966":"b8fa089cca83d2c9979e642b9a248882":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #41 +aes_decrypt_xts:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"caed5c738a8dc30155522864f9289e61":"89691c5dbc84bf8e2e1454148049648f":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #42 +aes_decrypt_xts:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"63a88184186fa797d264a0528f39709f":"d7f7c8bccf8968b9f118bbead353b630":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #43 +aes_decrypt_xts:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"baa495ce8309a6c88ad855f97a774113":"8b6572487318167d1babedf6a8cef7b2":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #44 +aes_decrypt_xts:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"68c529586435374cfbadb17b9b895a4d":"531d3393772d49bbd0a1b6d839de0185":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #45 +aes_decrypt_xts:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"71f0519b7a6aee116d481f31b965fc2d":"926cfa1f568b03c914b5a8283920be26":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #46 +aes_decrypt_xts:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"e9c680838484714f38c59fdbfaf49a5e":"b790368e2ab0227e5c08adc4e7057baa":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #47 +aes_decrypt_xts:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"aca43e27d8cffc6d273a90f343c9acce":"c94c62fdac550cf62f3dbec89cb8614c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #48 +aes_decrypt_xts:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"8fd86c0489944d4350b2232958016668":"16938d35e74a7ab0caddde531cbbc333":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #49 +aes_decrypt_xts:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"3f069d4997a1dd7ea4215cf1d9568395":"35d16e1d15cdad0502e7ef58e86f4d4c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #50 +aes_decrypt_xts:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"b7972c5f6a488dce95eb46a855a105a5":"6af3152f9763e39a83b94fe960e04447":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #51 +aes_decrypt_xts:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"804795bc588aa048894a184c600ac75f":"d5a4d8ec68e53c0aac094b95b8add3c9":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #52 +aes_decrypt_xts:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"4dcdabefbf99b4f494fa83b91f0e97a7":"638789a303154fb364e5168aa9340882":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #53 +aes_decrypt_xts:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"a4321472fca02d869432585a4380be30":"5ff7c0249be2b694ad82e68023974533":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #54 +aes_decrypt_xts:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"625438700a4d153811dc26f688b1f82e":"4462bc469e794fd74288f3f775c02cf9":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #55 +aes_decrypt_xts:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"565fa6390a7a377b90330ba09391a7d6":"3f29bfa05616507792cedc91e27e4fbc":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #56 +aes_decrypt_xts:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"7d180b8ae143617369239a606c693d1f":"4479885b32ed93a05bc973d925b30a71":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #57 +aes_decrypt_xts:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"e567f6d2727622278b9310e91ece0165":"5faa528556f79049118c00852e022d96":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #58 +aes_decrypt_xts:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"5ce1562f45da9dad248bb7ac2aabe2b4":"fa58ed4b5530ecb8adb5f4c119a9edda":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #59 +aes_decrypt_xts:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"9774ebd7b08cc87fdf70c9d4f746f2f4":"83f4639b4fa54f5f657c03fe4c00983e":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #60 +aes_decrypt_xts:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"e72746c743f84e32eed81b8dd51b6fea":"9c085ebe5cd42b24889be07f59f761b1":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #61 +aes_decrypt_xts:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"48210df8641e31039d06f0e7dc1ad97f":"0ccaac98e1c9609f406930617f1e35ec":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #62 +aes_decrypt_xts:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"944f66bb9cb9c0da59111875bd8a83ed":"1fb8a2d4996bacf34f62caf1402ced12":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #63 +aes_decrypt_xts:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"6b6295ca7b81d5216cc251ead46c70bb":"abcae54afcbb0b0ec75884b11a9901ff":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #64 +aes_decrypt_xts:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"09bea3cca20b8f9544e62430819d90cc":"c9fed3c29cf7c2a28463684f551c11cd":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #65 +aes_decrypt_xts:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"ae58fbd41058bd60b546379c836ada28":"55ddb8bc2ba156bcd66483ab6a2cfe5c":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #66 +aes_decrypt_xts:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"2c11e9973068abcff0b75cb1b0022521":"7d8858efdf678473d11389acee8ded16":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #67 +aes_decrypt_xts:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"6ffdbb7b11bc41a68bb43980b4d5045a":"cb1e8732f3a2dcd45f4d057409eb4d06":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #68 +aes_decrypt_xts:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"55bc2096219a930b9a12e2214c5147ef":"44729a7975c22a89c615d0f48bcbad63":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #69 +aes_decrypt_xts:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eb68e475bff2bdf3a151b07e38860d03":"eedc77726be43017fb49bc4031429e46":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #70 +aes_decrypt_xts:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"d4475da48f24ba759531bf30a5bcd430":"98900bbe2e1141b594c05c93bda68c50":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #71 +aes_decrypt_xts:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"d14d7b026273dff33b09e70db45d3140":"8c9c9231732b49baa07f994ac90cbb74":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #72 +aes_decrypt_xts:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"93f3952656b43f663e0228ed74cbab0f":"b438d11e4af51107a4212f4844d8c670":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #73 +aes_decrypt_xts:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"987d38afcfbc37b254ef41b6283813e5":"83eee45aba638bcf7126242177193563":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #74 +aes_decrypt_xts:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"bc0bbd16a21bafca60588e3f670fffb9":"e7e4dff4b36ee969fd6d80e8baec55c1":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #75 +aes_decrypt_xts:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"60698b823beb2d9d083dbe2e7d1ad243":"c3990409706eb8a1adcfe3baea3b421a":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #76 +aes_decrypt_xts:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"a3ed3b9052e763b74913cbdf1f71fafd":"47fe4c3759758ebec50f370d483ebbb8":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #77 +aes_decrypt_xts:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5d8b27da95b073b93fb155edd2c88fea":"5c709d120204ee3e32a57b8ea278e584":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #78 +aes_decrypt_xts:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"b5458afa6268d1474a936ddf84b63b05":"fa81d0c1f617257b43a70136aeb55168":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #79 +aes_decrypt_xts:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"b0404586c6313ef77e24650fa48da131":"2becd50a3beb5ba41aefd89588413c49":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #80 +aes_decrypt_xts:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"61ebad87df8c35e459eb315e27bc47f3":"7cf6c02693cbb1f3fc825e4a5cdb7faf":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #81 +aes_decrypt_xts:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"f113016f74698d5f1e680788ddcb56d0":"0d59b40ba3d9174b58da3eb82ae30de3":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #82 +aes_decrypt_xts:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"fd8f5fa162820585f77b250efbb50f1c":"4a88021a53af9389e3abc19ab6c229a1":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #83 +aes_decrypt_xts:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"6551d6910ae9e2977f09bd2964d0fa2b":"a84dfd53492ec2e80bda1878929d2952":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #84 +aes_decrypt_xts:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"caf96f61fa32ef7c5df66103afac8495":"a601c169ee059b8e1d0dce77cf2862f3":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #85 +aes_decrypt_xts:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"3518778706a0a0b1baac40dfd818161d":"85c93edc4ec4d33d6c4efd2558184025":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #86 +aes_decrypt_xts:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"6920c0c3a8e23bbeb85b52588abd97b6":"3f715273efe1954565669a208504a763":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #87 +aes_decrypt_xts:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"69cc1f1d1ccb57df6ade5302959b1746":"9dad8e385c806d90f88bfcbb5a7a9686":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #88 +aes_decrypt_xts:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"7030b6122c3229afc6d12d8eb2c29b99":"a593e87bca06f1ba529317a718883abc":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #89 +aes_decrypt_xts:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"c9ac91095dbcea52d5fcb58b57871441":"89c0bb8f0fc63987cfd35c7292ddc50e":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #90 +aes_decrypt_xts:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"ee286b71484a9d0556e1c042d8866d8f":"db8d019ab12c98765edb0a7ca2589248":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #91 +aes_decrypt_xts:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"fe89ccbb3997f475e47d55248288a324":"f8560d7995e848fd0afc518b6c7b6278":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #92 +aes_decrypt_xts:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"c3c7d49f3c42a84e283ecbd8b2be81d2":"bbfeeba2077e7d29c67daf70a1ef1ca3":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #93 +aes_decrypt_xts:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"7a70fd4ded65cd2cfcf15ec38b2e879b":"0770f640b1013a31480c3250883b0bc7":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #94 +aes_decrypt_xts:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"975ea366ab8ec3cd35fdda91dfb1afd6":"d161e08ecf9cf27324ffa84aadf16941":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #95 +aes_decrypt_xts:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"460c046e6e3b97e23565bce7b9224e97":"a138f2a16033e8c2245243da3adc1498":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #96 +aes_decrypt_xts:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"efccaaae45817cbc6125c62084c705ec":"6ab5f2be0fca76bcd895bf9d46de01c9":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #97 +aes_decrypt_xts:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"b0238d6d1f37953e70d3dcf3cdd328a1":"70330558f8288b74e8768cde827137c8":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #98 +aes_decrypt_xts:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"7ed0d25f0d1d1b7e62facfe36e468c5d":"a220ba8c184a68262b455e73c13e6ffc":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #99 +aes_decrypt_xts:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"00e8406307b798d43fdff7772565d5f9":"66235974ce1e718c12f7b8fd729defe0":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #100 +aes_decrypt_xts:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"ecc038125fdb267662a57dc9acc06439":"c333dcc0149fac9f23374f9023fe92d0":128:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #101 +aes_decrypt_xts:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #102 +aes_decrypt_xts:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #103 +aes_decrypt_xts:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #104 +aes_decrypt_xts:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #105 +aes_decrypt_xts:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #106 +aes_decrypt_xts:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #107 +aes_decrypt_xts:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #108 +aes_decrypt_xts:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #109 +aes_decrypt_xts:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #110 +aes_decrypt_xts:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #111 +aes_decrypt_xts:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #112 +aes_decrypt_xts:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #113 +aes_decrypt_xts:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #114 +aes_decrypt_xts:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #115 +aes_decrypt_xts:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #116 +aes_decrypt_xts:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #117 +aes_decrypt_xts:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #118 +aes_decrypt_xts:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #119 +aes_decrypt_xts:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #120 +aes_decrypt_xts:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #121 +aes_decrypt_xts:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #122 +aes_decrypt_xts:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #123 +aes_decrypt_xts:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #124 +aes_decrypt_xts:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #125 +aes_decrypt_xts:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #126 +aes_decrypt_xts:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #127 +aes_decrypt_xts:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #128 +aes_decrypt_xts:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #129 +aes_decrypt_xts:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #130 +aes_decrypt_xts:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #131 +aes_decrypt_xts:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #132 +aes_decrypt_xts:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #133 +aes_decrypt_xts:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #134 +aes_decrypt_xts:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #135 +aes_decrypt_xts:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #136 +aes_decrypt_xts:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #137 +aes_decrypt_xts:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #138 +aes_decrypt_xts:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #139 +aes_decrypt_xts:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #140 +aes_decrypt_xts:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #141 +aes_decrypt_xts:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #142 +aes_decrypt_xts:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #143 +aes_decrypt_xts:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #144 +aes_decrypt_xts:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #145 +aes_decrypt_xts:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #146 +aes_decrypt_xts:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #147 +aes_decrypt_xts:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #148 +aes_decrypt_xts:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #149 +aes_decrypt_xts:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #150 +aes_decrypt_xts:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #151 +aes_decrypt_xts:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #152 +aes_decrypt_xts:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #153 +aes_decrypt_xts:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #154 +aes_decrypt_xts:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #155 +aes_decrypt_xts:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #156 +aes_decrypt_xts:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #157 +aes_decrypt_xts:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #158 +aes_decrypt_xts:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #159 +aes_decrypt_xts:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #160 +aes_decrypt_xts:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #161 +aes_decrypt_xts:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #162 +aes_decrypt_xts:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #163 +aes_decrypt_xts:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #164 +aes_decrypt_xts:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #165 +aes_decrypt_xts:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #166 +aes_decrypt_xts:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #167 +aes_decrypt_xts:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #168 +aes_decrypt_xts:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #169 +aes_decrypt_xts:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #170 +aes_decrypt_xts:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #171 +aes_decrypt_xts:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #172 +aes_decrypt_xts:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #173 +aes_decrypt_xts:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #174 +aes_decrypt_xts:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #175 +aes_decrypt_xts:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #176 +aes_decrypt_xts:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #177 +aes_decrypt_xts:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #178 +aes_decrypt_xts:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #179 +aes_decrypt_xts:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #180 +aes_decrypt_xts:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #181 +aes_decrypt_xts:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #182 +aes_decrypt_xts:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #183 +aes_decrypt_xts:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #184 +aes_decrypt_xts:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #185 +aes_decrypt_xts:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #186 +aes_decrypt_xts:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #187 +aes_decrypt_xts:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #188 +aes_decrypt_xts:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #189 +aes_decrypt_xts:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #190 +aes_decrypt_xts:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #191 +aes_decrypt_xts:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #192 +aes_decrypt_xts:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #193 +aes_decrypt_xts:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #194 +aes_decrypt_xts:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #195 +aes_decrypt_xts:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #196 +aes_decrypt_xts:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #197 +aes_decrypt_xts:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #198 +aes_decrypt_xts:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #199 +aes_decrypt_xts:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #200 +aes_decrypt_xts:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #201 +aes_decrypt_xts:"fbef31bf8aa7546b52686be2a66019a15ea83833654901f6dc52603ae65579ea":"2379d5a6850ec74e7457f5a3ad43af40":"23d56c45e6ca04bc1fea4024f8f113fa3f634fc3e50d3305e4":"9475dd02153732bb6b31e29f8da5c357658c2dad55bfe960df":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #202 +aes_decrypt_xts:"d806b852edb29707f3e94ac52f43d35a23a9b4b3be8171a4690516da12b2040a":"9fa41b79ea18dcd6dd2c1d8cb0006d28":"6029618d912f8e54e5cf6baa9c347a9d7064ff195aa226ed6b":"ed350cb05ba65b5e5b1fe437a15db57c66b4c2b7481a415e6f":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #203 +aes_decrypt_xts:"e4b92fa62c5f093949d1dfd49d300e1b73415a176315b921e70fd49e6ba634e1":"9d85e0c9e1ac1eecd012d302c7da2e3d":"c7273e5bbf320c130ed8c158a075d3553a2da19db0ae3d1198":"86120e308d7e38e7bd9b437715e19e43b243fca9e4cd05c0f5":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #204 +aes_decrypt_xts:"a037ca87a644b5d30927aeff1b31f97c5f19e428e972b8c685c19e17924744f4":"efb161410b021384674ff1f50b2987c4":"07ac685baa212272068edebdd6a62bdfc2fc0d71ab5739e3b3":"92dea2ec459a91dfe84bdfcc5c08eb6a3c861241c05241c7fa":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #205 +aes_decrypt_xts:"404d270f415cfabac621470b35d87a27d41e6b40bc5f4c4c9cba13558047dc26":"38193d9ab89457e11738e940bd08f11b":"58cc332b30a2c750cc9c52b7670bb15cb7e9cbde953df73bb2":"ecbffcccdc9e1bbe602f1aa1e51bb3ad0d70c56d34405bcedd":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #206 +aes_decrypt_xts:"c33c5f6888af228af40fcc927f7ccf5480ddeac79198363ec27a06778c7e97d0":"3ace69701c340df58f49ca0ba8ca7a9a":"1645015b342b14af82eee3d49ca66ee4a54346eb13d927e736":"490c6b508d5d58fe24c5d3df81dd908cb047473757acb46113":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #207 +aes_decrypt_xts:"fcc244bb1d01e3376ce8c67837ec3926cb71ad57270ad74ee017a43e44048c68":"e58e1358203b9298998143fbfe61af7e":"2f080621a40e749206af079d6e93903d4c2d40f667fdfa9b5d":"dd743f4de3cbb9911fc6b8a049321cd1fb813a7e9152fee484":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #208 +aes_decrypt_xts:"e347aa19836fe56b333a1a3dcfcf38f9d3e6a8f65e02bc154e4c6e6ea57f1b4a":"822ee75f223be8bd7c1bb515e41c8723":"7449e37f7411d56156c45b916127fb163c2b09ea03874d8207":"f826708df391b465c39571cf6908a5f730ea6038034f25a150":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #209 +aes_decrypt_xts:"a92d85c29168738cdccc19b8343c241434d0e00553b0e14bba86c62324d43d61":"7e1b80b3b565d9b1d0b7fe9f24d52f82":"6b0b6128f7e3384008da26b1754141fdf341e86e70396f5c3a":"9243754996b00661089e35ac65423d63177da076462c7185c6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #210 +aes_decrypt_xts:"2bbf7cdc0e467166037b995101d6a4c248e385a59dc5601c64212dff72243578":"e628449b7f6317899a8f87f870ef593b":"865ac26b6ac1ed29ffb39fcabb9cba74ebedacfdb4c703193b":"9ad23cb9bd377a0502e4cc9f9df43b8b830549779e9223fef8":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #211 +aes_decrypt_xts:"e8df65c635daea1f8e16344b7cb720e596264e3863c358bfc7aa47ad998516a5":"2fcadf3615e63e8aee822b039afb198d":"863312743a006c4849b71157f1ca1083cfa1b2654ba37ea44f":"54324f39cfe3463126925ef444caf18b3bebd2956651f0e6fd":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #212 +aes_decrypt_xts:"17beb510f684f64484904b1dde68038da6b6aaee611bafb492ed1c608593b118":"07825deed3b028425df2c88ead6a330a":"370dda9447cbe265eb1c391a89a1c8aaf75d4425ab29630a7f":"d3d43653393803fd1bc2bdb4a27cad1085d8235cf875426af3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #213 +aes_decrypt_xts:"6efb572de4e6a588c43c7afa9fc4f58650bea15d713f58fc273c97d492177f2c":"9244fdf8b6f83fb425e5066d5abe3862":"253c0d5cb7268054fea1c8ffc68ec7dde3636268db54ceff2e":"2e6da9dac3d16720d0b402eaa48d585f76a3c6da6a872e94db":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #214 +aes_decrypt_xts:"2e52f59ebec33506000c2d05aa3bc8047f5798fc0736456a0d3ed09d86b9c36a":"1e3022eeb3a832909beecf9ae632a13f":"267119f919b490ec4d3bd72cec3a717f8e9ec707aabe984bd6":"6e3a0442958f6421a147b2b4ef7a8de8cf3e375af8d07d73bd":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #215 +aes_decrypt_xts:"13cbc3bbfa8216a7d956b5f7391e0a9d82cff559263d3ec7e0d1e98a5d0e3b94":"b1fedd540d12db05fca03e6971cd93b0":"fa354cbfce182ed0710d6007e944d1a8b299de9320ce775db2":"85868ec4af1df87fbc3a3cb840ea93be6098c0dcf35f18901b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #216 +aes_decrypt_xts:"93d5eb3e9b513a5a86cf7a8422a4411c164d70d1814c275cae56de0995e2c396":"0112091ca7b7754612998dda5ade4882":"d6769334e90a0faa02e2f952208aca066213db8dca050b528a":"e5a0e987448fb909b58033f8670aaa882317370f0a4427fbc3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #217 +aes_decrypt_xts:"9e291547fc0f7a31c6330a34871c49c73ebc245ddcb50c076cf57a079c845f9c":"d0ae20895052d6b6fd53508cd687c642":"3ecdefcf57f1b5a7c1d275aac331ccd2255c089e5444b16a51":"af0db7968c67f68f313708a55d1de9de87491c2c07f74cdf85":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #218 +aes_decrypt_xts:"b39208c7f52f6dbe67817d83a8b6a539bbaaea877f2ebcd18d7021b32fe7f61e":"6f381a595594fa453e953ff7b4903482":"30b06d11fe83e9a471b120589906c0a818ac3d9ff03f620f07":"d606ec4146428145db4caccb7b5b87fdc2d4d25b7a44ec993a":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #219 +aes_decrypt_xts:"041dc3f6ba6c6a2ffb554c61f0cf1452071e0d84adeba3d16cfc86564f47d05f":"6e2c3aa1dd00fa16d8831d263932aeb8":"3086460934d7a7ed6b3798c122fc8c0e1ec6a3a07605fcd327":"63db506c7ea17e5cd75dcc12f6c4a427305bb98ea6247b47b2":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #220 +aes_decrypt_xts:"ac4fc0dfc316cb268a2fada377b433a6c4c15dd25214762c7d5f4b8f30397088":"ba1a0ddc152f4919b217df3773031694":"37cd1b9b779cd4051af39754d97bcb44805d8c72645063347c":"bd2251160c6b3ea80ccc354758ee2971bdc8de9ef7e94056c4":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #221 +aes_decrypt_xts:"c8eee809910165fb5dd97b96e8f71e6957b0e52d1f733618570906d14c40ec2f":"5c224010c54f128a54530baafb5c3044":"ea6632f9d6d552b414ede1a5d2a554505f8d2e22ffea692e53":"c669d4464784eb9bcdd09f8e3aa38a3c838d1d34f8d3f55052":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #222 +aes_decrypt_xts:"088a939d9214f56b5ded3cadcb345bbf8386aab39c66d36ae749b28e0dc0244e":"82e55bdc602a52280c52190f693662ef":"8c7b4e51eb88aae271e2d1fbe4522fa9d128dd4bc2e36efdc4":"c3f459370ea04d6997b46a7ce523f63e260a2495dcb648aec7":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #223 +aes_decrypt_xts:"bfd385f0c1f82beeefda68223e8866bad2a69be66c32df1e80ee598563aa7a47":"2618b01fb8f6c823f45ab07551e5ed17":"c86539642f08cc959d906d85910321029e1484fed419daea69":"e9532da75da1a5c13b746667fb072601dd701567714adce42d":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #224 +aes_decrypt_xts:"ee74d721fb5abd7237213ffb3259e6d6d371edd6be98102e7cdf9f386b2c3ce8":"b8b6d1d6409342971d1b62d9b22c1bc9":"d768bad059b0c94ff3aa95e2742572bd44d7bf05dc9a1d3e29":"5aa11c28745d15567c774ad6185813c2280673c8f032a61c6c":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #225 +aes_decrypt_xts:"48d13c8259e99ea601b78cbbc10389985f49f1c8cf832fcbfa3985f87ba8c032":"a5d1bad7b446b97ab2a3c8baa3aabb48":"9c426465cd3d9458bf3f8e3fc2636ddcbc7fb4b57428bd6ea2":"049ee2f3b049e9303a0d4bf47f0c5b76e6f6d1431158b2d23a":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #226 +aes_decrypt_xts:"4eeccad57d350ec0e70465a1cd7d8f1cd2bd7157b1deab22675b600c99b4ccf0":"1728d62293e761d1480a01f4596b0e32":"c15d7e9d1ac579277f78f0a3ae8dd9d29ed55b90a94e8650d0":"81ab55151b51b41881e675c4d8bfb376d79c26425be1bd6a5e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #227 +aes_decrypt_xts:"e74294e1713e59822141853a5ef8e9ffdf98f4f4706464bda9b975787bb789e9":"9e1fd8b505932b268f792b83169369a5":"55b18ced640860d480f630a6b71f7f5aea2926d5b4e4fb3097":"c5981c2f99d8baf6cf7850d9f3629be0558d411bafa30657e3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #228 +aes_decrypt_xts:"103df884b1cb8f2498de1e7f681c4455df56f719c206dd250f83dc74508c1a6a":"ac7bf83953d8fd938e12926ce1e2e788":"b5b338fd3dc8e565fb612cd5aef6af4a804d8ca0090de9b20f":"33d4c71a8c59394c8262a9209bec31484cfec27f449e223b3b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #229 +aes_decrypt_xts:"26247d33f2b7e9e06a2ee4833e814d992573a8343f4762e1454b0bbbd1525ae4":"cff4f84225d0bbaa7503a4d6617e7566":"a3cf158e19010a9b8dd8605d5cff1be2c502a1c0ad325543b0":"95ededf9fa5ca3948a849e5e3eea11642faefda4db415fab5b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #230 +aes_decrypt_xts:"75799cb6759a2eddfe9963973491102ee9653bf0320c1b3224fd4e7a308088e3":"3000f2ef64206577555a1fe486f6b609":"b143b059ff945cc28b3c1c3203ed7e7e7ebe33ad1345258963":"358e7be75e5a18a8234e536e374024c473680186d3a85f5d20":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #231 +aes_decrypt_xts:"b5ccecb554fba1092bcc546e0335a75b07bdb234c552e4172e73331588d6a314":"356a7bb2a2bd57128b2b7938bcb020cd":"8a0b4f8d6217434bfbe5cfd80c08e7066fe0c47baf6c2a3a7c":"82a05058464d90ecc67b5ad314e5795ab0a45627416632873f":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #232 +aes_decrypt_xts:"9f94a398e032c2608167ad538b7faf92d01fba0cbce9b1385736e31372389e10":"cc40c7b1c09edf0217e01e09c107ea7c":"b311ba6e522f18ca1d13f1fd426918ee83efcfa87390efc40e":"d812b764449ac957f88b3cc6349c0a74338a529dd79d6bcaab":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #233 +aes_decrypt_xts:"5d3fb468b26ea02e5ff772b9df6c6c98a7e28c5e67a9b16b8a44d2c68e436f8a":"83e6ca85fe7ec093794f902d45e0f210":"ed47719847d73e0e12707a277ec47a9cc8096791a8238daebd":"4db38763d93f334547cc760dfb6b187abe5b5a0246c58eb066":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #234 +aes_decrypt_xts:"9bde31a8f1a4a3b546bb70c8d49911f9a32b7591b551e5c9b8506c33b2152b68":"280dcfd9091f013fa54f6825229235b4":"23e79873e3269f9dc42b6d9b7120cfb1c9e45ae80ebe166cad":"d3fef015613f51d2e358837f4e0e23a105baa874c64db2531d":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #235 +aes_decrypt_xts:"1e10506557a0a1c5397d1416eb4d994c907161701fce00157aede9d5ab38158d":"2ddd0ef00f8d0c451555ca4a6fe4ad2c":"efe24078d36a8cf155dd95bdd5321c6acb26ff607b3b19bca5":"412639e306c30613476f951ec61a20321a0083886fc3c0e3a7":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #236 +aes_decrypt_xts:"5d773f413dc514f4e64441970a66ac36ddc352924236c948384dd5116ea73b0f":"25b3ae8779b8399097a3ead7c4a4b7c1":"245d2528b7e1608a186f6e8d6218ee0b7a73ed9796582419d7":"9d247eef8e3e00fccf519a7e0b61008fd73d2a5a1767721096":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #237 +aes_decrypt_xts:"49e4639310b6a2dd5ee90b69ed4dcfd768d514254eeb7ed559c864d567a6d1a9":"4b19df03740b52d37c98fedf26cf0bff":"3eb38e02e70372b2a41f27c68e4edd7b8ea196a1a38b285fa3":"aa7a0fb2193c6c57b82d3f37562f3ff8c9d8ec0e5fe7ead0d6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #238 +aes_decrypt_xts:"e7b827bcd50c71b1986a526745847281a4a7a69a8d019016412fe2ba74bcd3b7":"c0f66bf0bd3f3d3f630e15cc5ef4bcce":"1bdde74caabc38b37383b072d2aeb40cb21fb29401f110ac0c":"22901ef0f865e92d2bea19238cf5d76a802b7af47642ebd742":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #239 +aes_decrypt_xts:"ab1193e2737f282d6a0d29932600c4e408c8f194906978fe2f9f56b2cb98ea83":"fd7d921baec362239eb3cfa19164d071":"ec08afe7a0b64503e03a757ba0baa8cd285cc3fe74a69f65a5":"881e90b4c70ddbda40b7e4c465482e9854e194ba964d1f80a2":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #240 +aes_decrypt_xts:"82be68298bdea7562547e68b9fbafd4306f57d3df9cd91a9325b54097d2d7f5b":"9b6eb0c00cd6b13264c069d742d29583":"ead29b33519fa010e1b457d3a51b71452fb486b1ee3799653c":"25b2ed3546e7f174a29bf843377e9139ae428a24d4c9e62852":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #241 +aes_decrypt_xts:"b7ce957c67acc523f963d07532a9f829ef153b03462602aa9d57367c96d61941":"cb5ce7c066b894581f1136a1a00f50f8":"321d47479537f2381f5d33ece66cd17368bcabc2ea90f3bd2c":"67a37d74ef2ede7cee56fd5ea3ad418d08cf9a1dbbf11af9c3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #242 +aes_decrypt_xts:"444bd7e11ef01e890b32764311d64506c360fdf410ef8a77f26716b1d1be43e4":"41da2c52d2be94ff3592ae054e2dac3c":"34a02ae19dd39e76da256d3270aaa25725c746113bb2e5d9c4":"c4480c6e7cb194e086b98fa2ae41f662c8b6bdada29e3d394c":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #243 +aes_decrypt_xts:"5eafe05362eddd05effcb2447896e7440f38c655276b6c7fbae003a387d10c96":"219df9c3fecea911484e9b15258d76ac":"0a6aafd33750144f388bc77ccdfa40c947117c3a7e1fed53bf":"95a65a9e57c81ad3a381b0994cb719714ad6838255534d3d1b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #244 +aes_decrypt_xts:"89dae92621ba5a259c6be4c82d0eeeb11851ce00eb37dadf770f68f44a310a9c":"cce0ab6778b19dfb7f3de45d97caab65":"ced72e956ba69ffa144bf81a2a99462f3d474f62cc46a9f1dd":"29c3508fba48285f2c02eaabf75e790268a6d59e52fc2dccab":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #245 +aes_decrypt_xts:"1fb04dac75df2a616f497fdd35ce5929e612f05147dca4183e4786ffd2ae9b29":"d4fd5c7580b1068ab0dfd90f79733ff2":"659915e34274ff7f72c9fe55c3fa4ea55cb9a021ffcc9f1367":"a32d4b9355afa690525211185e19586860eab67d34308ec4a6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #246 +aes_decrypt_xts:"2ffe2866d6fa82a75d2fcf257257708336775684aace6625ace0ed4a8fd89e67":"b5429585dfcd80f8e14b48c86f11d1d9":"a3a06380056b3f155892fb0103aac666ea19205fa3fae94f78":"59631652ddbc62395784bf18cbc967cef66ea5180f3f6df5aa":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #247 +aes_decrypt_xts:"7741d5c21c34af083001dbde3922e787b3d6ed2242b876fdae6266b7d7a97c9b":"3cc1d268fe621c5d4052919bf6f307db":"40d9f9dc7ac22624c0a450d276898f622ebd0586ec2c48372b":"d42ad036521b1d84200faf86d9788679e89377280b7833e434":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #248 +aes_decrypt_xts:"a48e8b318856240f5f703a0d92a19f8b26b060d13dbd80ddda54baec71e96eab":"108b6e490624f99e92f8652fac056906":"9be5b49d8e8b87401690d2404797f0584de888d02b1f90d61d":"66317322cef8425d535eb6b29510ac9762ed077c6624c500e9":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #249 +aes_decrypt_xts:"aa13ecf099e54e89a3ac486132a41f575e4222877262aac4f1efd10055c85ef2":"127591c10b0f2a88f726132ba10f80c9":"cb833d27f1bce1a6554b15dfa0ae87402f5d9d2e0c5218c1cd":"861052fee0e744f346f113af0e81100360088faf1834bc6cc5":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #250 +aes_decrypt_xts:"e3cb682b03708d53e29203f722804789a6bb01bd0975a9679f0c7f7d8684da3c":"ecc2edf7ec7b0ff5293cf636852220f2":"954684c0b47de98bd2bdaead680a36815794d7ac6d1ede17c7":"480bfe398c1a627129d11a51c9de9b4e0abda94020dbc5d149":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #251 +aes_decrypt_xts:"1ae56806ca986fee1087ceca88fc49528abe3b14db9ac108555555c7878ee7db":"77acddd84b31aed0f90817751d023730":"6f8cb38086322161f64a2ca494738bbc0c89c8b70c4f5325c1":"30a7e3382b7778bb6fd2eec2b61e2970dcc34fe8e9b7b8bf4e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #252 +aes_decrypt_xts:"6b0e4079b7e587d78e9b0c1601ca5403ef6fff525e923813103320682e7f2751":"44b0a00519a4712aaabdf66dc133a51c":"57b9224a61e6904e5b4eb0f98183e60ec4668bd5e5356b73a1":"3d90eeed5a13680653b21e6d8e766624621e0027f8c60cd105":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #253 +aes_decrypt_xts:"6778bb3a3def8c9fcfd019ce2f840203941461f3d118911eec77c7986b441ca1":"8b097e2f871a2890785d3b6d74037516":"ead6b89e0d2d9fbbf664924b82e872f2286d5f349b83c3399f":"e171b49371f01355b86ca8f7e45a9bf535713b05ea0e1454e5":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #254 +aes_decrypt_xts:"db15ebb2c468376af9ac8cacacb7d2316920b14be74662dceaaafce0450aedca":"147a139b50eed66d774edcdfde8b1718":"c95dbdf3ba97d3c2a595c5d6eb5fcca10215c6b78dde68dae9":"54b3bfb4076e61aa952354f3c2e15babc3817fc864c2bad329":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #255 +aes_decrypt_xts:"a0d2480a7dd0c002bbfae670617a2773031de1281fffcf8e4410e4f1c6ce8738":"12161ac707eb8bd62909129983121a54":"0f88af952d2e5075baeb06d115131b190dcec38b9875f46b32":"6e172aa1523c951be8e760f50784e72b14e0b35168a3c541a3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #256 +aes_decrypt_xts:"4d395dea25b72b034bd5c2ba67425c84c1370c587275b948558d05a0c77d2e7c":"69b12f9fcf716119e4a4272e3b1742e8":"e258fc0279687f49e473caa139c88e4dd136ce4cc13781a4ee":"b136f6203b48cf1def8261fc40ab6eb827c33b7e53ccc4de95":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #257 +aes_decrypt_xts:"dc706043cc2320d22035793344ae01dd4d9367506a5d07b6f6627de613a0d224":"5350a5c69e4ff96afd98ea1462d25ed9":"56fe0a998675cc6e91b09e07c94d567819657d9c7b01b40d16":"e14371fea26ac467e14c1384b7e050a3b51d63bf9dd0d57741":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #258 +aes_decrypt_xts:"233fa776f0ab4f0bc9277c72770174d1be3ca386215823f344cc519b38468585":"dd376910b79b3e9c30b62fbf5d5ced26":"bebabb626e38700651f1f652db7f3553b0b76cd45aa8dbec28":"ad2aaaa83e52613034e071c22ed9a1acf571fc5639d96b9477":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #259 +aes_decrypt_xts:"b2587464db492eec3c33034a754fc9cbd0b8ffd4cd49d1be5024940cdbd35c40":"522e83e7aba57ee47c43cc0405d6c1ff":"03c3c304f09dcc397215ae2e0bf1900e6bb088a8d157e37478":"15a9e688a01f8a201dc7b80847ebb598a8d4d39ba0de21dfc6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #260 +aes_decrypt_xts:"55c2a6e71623e32446a2af66d13eb174359fee87dfa79f0cfd0cea89dd4b582d":"b04bdb4aabf42b0bad6aedb816528526":"ec975db73e5c47904e8c37186f69171e2ff87b176c95633d7e":"a87f0fefde2efa2720f0dfff0cf106bfe35295dc29cef8634b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #261 +aes_decrypt_xts:"6256ede67e32e223845f10b8e1a0570a9febe1016a0c5b265b3a0308207dccad":"9313fcad3d377118633cb6e4ff9c7cab":"f0ecbc774e769d3a35021a3b8b6f6231a7c21390fa953dc820":"65c5d0b8a6b2af5716bffdd8f6aea7b39e5ee202324721993e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #262 +aes_decrypt_xts:"520430ff9e70665db955216d562e788dc8b6cf6ad64d174265ea0d0fc7c4d888":"0868407108c10869f043bb01ccf537e7":"740735a817316c7f0211d31dc2e0668a4fa4e5cad10d5ab0fc":"d35916fde4f2e086cc310a17a554a60c9fc5a2272078e06742":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #263 +aes_decrypt_xts:"49404d86c6df865398eb5eeff3c55e353e7c6146bbc3f75e63e9dd96d5fdb340":"22f63a00729dd9c6436bc51b25283b1d":"67d983a4d699bd582ce060b98062d86bc0f86672175579048f":"995d9c983dd77bd682830f03c043e7c4a106b8973e02e8b2a9":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #264 +aes_decrypt_xts:"4a39d37e5cead002209e1ecb7fac5dfe20b0d5dac45052ac8f22f87e46bfe2a4":"e9aa238cb922337e4e5d168f8a797e77":"144453348fd894d8d919832fb18e6ec5cfd67afffd249cc212":"e35cb6771a7983bd990dec0dcb28ef5d5bff22253bf741ac87":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #265 +aes_decrypt_xts:"31d7de504f3bc4417a4db932231b350954a8e1ec85a799ac1b169a0edbee24c8":"e31c3dee11b9d526eba865742e825b65":"21d5ab2f2b33242f25dd4fba01677fa1fdc080773bcc17a544":"b23968074f639ff65ce55f9f0fbeb57a1095468a9864f1d616":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #266 +aes_decrypt_xts:"a783fc87e55a7fca96c2ce5aa277361565582703dfd18dc15afa98bb0b606ac6":"d255a5d7e6c95906061de654d19edc79":"04ef8bf556a2c0803e2e35e3e8db034f3accf3e3412bbfdfa6":"21e9a241c58140e0369b3677045aa4f225ca735ef9ac5e87d1":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #267 +aes_decrypt_xts:"4601aa2ba0fa7e99c93e0c9dbd448fd1d99ce5098a6d1d8c9c214db6206ed052":"555b0a0758be0b3ea2d67a86e284ee04":"df0a8a6f98dd44b2534910797feb9745e1d1ae7bc7e6cb1e72":"4c5c75f0fedc86b766eb4df59465431eb3e716007bba8dc9ec":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #268 +aes_decrypt_xts:"b23806ed16e3b3a35b3030c92fb68f2754c432cd87fb1fc2b8a09fd52b890214":"64f6dbdec3f96426af252ce1ba819fd0":"d16639eb844330a0a6ed573eb7d61f00db66b1e146117384ea":"9b7d57f9d45854a011516d93dc56ff73da2cb374562a671bef":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #269 +aes_decrypt_xts:"f43351de2b9bf93f5735b199f56b7e10eb6b7a8240f96aeb4b2134648632e28a":"65a0343583b5809cccc58876f2120016":"2a67608547b9d9d903b2d7cb2b6c654858e81aab2b1d9a72aa":"72291aea230d2b52b927d6aae5957c08a38f21b26a379908ec":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #270 +aes_decrypt_xts:"c2951a92b7be8cdaeebe9ba271bff0cccd1d5b13eca45b62cd69728adf2723f4":"ce0e30edca647a60e67bec3e236c09af":"135402857776b81a0d1eff891d583b92276a9abe7c51fa3f0a":"c110191e9e932dcb81fa86f94ff503881044dd1e129edf16e5":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #271 +aes_decrypt_xts:"7b92a21b3357bbcfa42b333388a46478cd38eff643eb5b8186db23728299e15f":"86c7440922e7620eb5ab5ce525df9b08":"d63cbd6896ae1a9dee4c93a2831beb71beec5b37b083b80e56":"b21074d11257eadfd828291ad57e1f294ff70794d333821726":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #272 +aes_decrypt_xts:"6a95d53261ca6210d4f2973d204f1862a478b919b4520e30d45f3aeab0e6e92b":"2a557c02143c00ebc92732516c5452f7":"9193a921ae6e830d9ce721e91d20ed236e7809fa09640cb0fb":"a7c8d66721a4c76d1ca9f5205d5327b52067cb6f512095b863":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #273 +aes_decrypt_xts:"9e8aae708afd148931883fbbb20360b5d44ac7a3083baa3afb53a4ac0f2f4769":"d9bc4fc7fd21773be0352aaf99e2d382":"6fab9591cd07472b81f2d906068da07189c977db6e09231c0c":"850de3082a0c7de1eeda9234b6eb6d76747de1267a2ee3e5fe":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #274 +aes_decrypt_xts:"43841bd949bb30eb9d52d13e5c34820390c669180a5fd4b30769acc646744e2b":"fdae2ff6408e095ef4f3cfafb84fa993":"b52b1448bcf6d013cc28c491e4d37807ff8e8825e1f5ffdec6":"8a9526bfd34578408bb7e89845c6e5a79c348cd1c6a95dab09":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #275 +aes_decrypt_xts:"77fa5f7b82ec32be0b3db9ecee9e674483ed370a43616f81ae199ccb2fd24c25":"9dbb74ad0a775f940ea3eee5190a26ab":"9497153d737abaf2aa1ce7bbf591ff5a764cdf95e6be9f2838":"7b3c942a7b29c0f3a3125f1473ac209ff5731265824ff2df31":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #276 +aes_decrypt_xts:"9d382f84fb275ff898311284adcdc79f2ae363d1c392fbaf9f8f286e7dd8f146":"aff121d2d85c120be9718d3034cee823":"6bb74faf0b17833a3a1a95f673675e230c518dfa26fd98a52a":"98d6dadbadb67b5b1df72794dbccecb3c1bc1de3efdb2983c3":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #277 +aes_decrypt_xts:"c7e12b520adfcd8965d4f091af25217b31fbbbcce731537215b70ba56e983d50":"b9036536b9f8bcf4f8dff5ed19406f8b":"84bb8d1772e93f00e80df5b20e5d1a5602ab9b001badec7b4a":"8a5224ebb27292c6996350b32c3b1f2ff1884c179d3b5b4abf":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #278 +aes_decrypt_xts:"14d2f712bb2aac8a77cf0711a4b64a72996d7e309a11a3d900d1658f637d40dc":"2a29b939c7b612796cca4ebc1ff03e45":"9e12e6b70d6aa1687288a6e49cd8b6d861dba0400e05aaf752":"f47db336f194e89a9e3f2afaee51b5075583a533320f9230b6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #279 +aes_decrypt_xts:"a38566d8c583d7df3b5a7a84685762e9982415fe319d1d7577d9ba0c945846bb":"e5fa939d8120784eb51faebe29b405b4":"375fbcb5a046655e2eedfa4f177a0cd8ce3a7f62c81c085188":"dcdf427f9c2be96feaaa587409924ce00bd27d4dc3d3980c61":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #280 +aes_decrypt_xts:"b312324a75bc7b24a6da68e30ee0f4463a78bcd6922e4aa0c8e74b051ae1e0eb":"b325c5378adec8ee71d1d31095669b1a":"6b4d1142679b321c0265215bced89e8cd9ff1c7321447594f1":"1ed74ff9e63551d474f5331f63b3a22d6440be1933573298fa":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #281 +aes_decrypt_xts:"944096722c2a3e5213ec709fc5aa92918f3f49c04e3c75623bb7885ff6529c56":"983ebcb9ac2b2e4e955f613a424fe80a":"dd212143569f1c9d8002224bf0149f33908fd1f711faa77d38":"5858c5e89f58dde600d30ada520c35ef68a918250727179642":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #282 +aes_decrypt_xts:"385a07651362b5364d826cd5ae1e96deb7541c67b6f4016c590823bbe42d016b":"c33411a22ac9c0d3986e9a51fc325d6b":"8e81218f0069e1002e218fee9b9530b1c229233de661aaa28e":"5679521a1ba1dac5b6e3a615e12ea8a05ce6c35ac36c80118e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #283 +aes_decrypt_xts:"cd727f71f21a5372860be9715a6990fd5b670be8ae08311195062a1239e32012":"59dc139d7bce497ce49195d16e59f4f7":"a11f8fd6a571ed601fbd52439a727d476266776bc853a3d7fa":"5fec25a3956f46b47e6607279c50ebc30436a4e6ebbfadede4":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #284 +aes_decrypt_xts:"d0ff00594281c808bbec5d1fd0ccc8b671360b953384617fadee42a9b5d9857e":"425e7c32238be5c199a155de0078463d":"520f01b9d8285be1f956df7b765d1c601c2dfd0d7a19f50fec":"4eadbeb0baceeb9c509cb91b842419b4580c45486bafe7b2b1":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #285 +aes_decrypt_xts:"5528e3d3d0585d3fee3fcde675f38c2d6d7891a9a8c48e969598dbfd717e8749":"734cdfc62fd71976edc82eb7f33d3700":"5036024990b58e017a2561f126c143ecfef343eb6b1f3f333d":"ec7bd1112c8690cf0ec320a7e6de7b898dcacf7687faf49af9":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #286 +aes_decrypt_xts:"96f1b37729d92068d7b7b663edae42bdfbc43f5829f207a9dcafe0023035cafd":"dfd6673b7af534a4cd80f55ffb577a9b":"2ba07aaf5be5550ed7b44e28070414f154aaf30ec8904e8252":"62db2c1e5879d0c9b16efe58c245c3e011b36574570446476a":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #287 +aes_decrypt_xts:"6b119a824df4e7ea2a4b8f535a46765bbbaf93fe304e784cf4b8585971a6393a":"339ce2a6fe1a6ea741c7aaed4ebad4e1":"5709fbb509ac6776797423bc64f30140d57da9f5decaede08f":"0dad6e21ac440de54284e38785db84648619017aac90f2dc37":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #288 +aes_decrypt_xts:"b4434957d3dd0b9e4f86be9382f305b5d0f5c231d9c7a9d752d0341535db3e08":"4ca5d1586450a4c500a557fa7837d5e8":"dc79b09edeaa45ff813953af1b00615124ca660abf00fc92dc":"fea71105d2d86b1bcd1ffeb0f9d0faf61b6b99f214b46ff2ce":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #289 +aes_decrypt_xts:"c2e4b8a47ebc5686246acc32bbe14c9df85d9ec4109d94a8f0697fc26b65f41e":"8d9a4e5cc92010771aaea21a08e83a52":"8d1a4199a2971481ed293b9843f0714b5e670146188c1c6506":"e8e75f23f2dd384adc245053169f25c46ad0374c41ce400f7f":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #290 +aes_decrypt_xts:"e094ef60057a3fa2385b00b41f0f6f22ff6ad8dc2f75daf16c1095d67d54e6bc":"874d2ec02b41a0388f350a078964c11f":"82331cf05a8eb9912d44723c8dda595a2fa2706c10e81379e4":"309f2c68bd7d10785fac154ef747e071f00800fd3e233a5851":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #291 +aes_decrypt_xts:"bef575e3d299927d3f0a656b29acf6412f92f8c86098bac14dca9ea53e386572":"eb12fde7d3f63382fcec95af1e3331d6":"d4a6309e5749eb506f25b57cc313ab50dc373fe709ef44114c":"6f9a99540b4670a09081e72508007d5e9813edd9809ad4795e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #292 +aes_decrypt_xts:"b0abd734d1fd91a7ec4b31f15a109420d3ddfaefd59f4cca5050c4bb8ad977b9":"49fe957634c5a5841c51496e7b6b665c":"7c928f210f983125ee6cb1217b6e55643a3263234c2192fe5f":"1b7bd09b8607a176afafaedd46c76671a4608f3d0de0993d27":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #293 +aes_decrypt_xts:"6afcf8e96518c48c7b40b15e7179beebd3cc81f4e0d36d5b977ac658744e1780":"ab3601291eacb19eff2072297d3534e2":"c2011f959c7e809c8976db6ba783034bbb2ad1589730ff0a1e":"f7fc570548b243a5f983e973f34df17e654f761c47ad951738":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #294 +aes_decrypt_xts:"d5bcc7498154125a4a12213fcd2a1a83afd5aa6f602a614cfbb8d4d0efd61d33":"0c737522da7f9e042cdc4618d50a5c40":"a6b9be98f5e1fe5459e239474dc41b34a3dccc3895ce1121d3":"4df12279fa56bbce90474ca33d879867ab087938317c53207e":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #295 +aes_decrypt_xts:"54352859c21f7611aed81870fe6a675af646643b2be3eb4cf94a195ebe24968b":"7038624c1f4ed2351d259823e3ca3fda":"5f5a7a30cf1da7e979d006d76890ddb975ae171741b903ba88":"38e04dd8507808d0740321d8be4a9fdd1961aa27f87f3366cf":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #296 +aes_decrypt_xts:"49a20f03d58263482e28c4450c85b0b23322ee47243aaafa458d1b7d3eb50baf":"9cf56907b8c47614f913b997afa60d9f":"d65a3cbbbc2a42f140e46cf4011c4e686be6f4a9804e9f631b":"8378ed1341e387ef4f27bec03a88658d112984ef888955c6d6":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #297 +aes_decrypt_xts:"53c3e20d72ae95dd7668cde4b401064b2e5cdcba84a59e5e480fc34247ebeb2d":"538376da072b5c7c1e6d662eac0ec3db":"45e1ddae35c67c99b82518bcf7e6b3d1cf5f30e48c309104cd":"656b1142f3982603c549b1aa61e9769ad7467012c03c413db8":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #298 +aes_decrypt_xts:"ea41d6e91253b0aefc476c87dcc775c140829f718fb33a67f17c293a9f8d04cc":"e1585863e755067bc2665eaf8a52f175":"b82c5c5a2160eaec989ae70266b9e346cd9daa95de127788a1":"95f4132408c7ca956c4fdc712cc993af4a8c387796a317755b":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #299 +aes_decrypt_xts:"995cb6f49a8ba57a841e0aa3c5bb04cef01bd28c3ec07f0f6a9e86ccf00e7d9f":"192bcd4da78cf5971201c06c436750ed":"2be8b0c0faeb45ad38c90b4bf703903b015a87ec6524819deb":"599f549775aa84bfe398edf89198ed26c612828e6943ce2e3f":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #300 +aes_decrypt_xts:"6bae7093486ca9c40fe063f01a665920dc13aca902986e6410d124ec01e8706a":"2fa841c562e770ade439d6ab936edaf8":"6b50db3d294c3f4aba335942a02340c7f61ea4fe670e3f0ba2":"f08e493175aac45d9b5178f565f50c2bbd3d587565ca677c78":200:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #301 +aes_decrypt_xts:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #302 +aes_decrypt_xts:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #303 +aes_decrypt_xts:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #304 +aes_decrypt_xts:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #305 +aes_decrypt_xts:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #306 +aes_decrypt_xts:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #307 +aes_decrypt_xts:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #308 +aes_decrypt_xts:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #309 +aes_decrypt_xts:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #310 +aes_decrypt_xts:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #311 +aes_decrypt_xts:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #312 +aes_decrypt_xts:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #313 +aes_decrypt_xts:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #314 +aes_decrypt_xts:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #315 +aes_decrypt_xts:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #316 +aes_decrypt_xts:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #317 +aes_decrypt_xts:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #318 +aes_decrypt_xts:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #319 +aes_decrypt_xts:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #320 +aes_decrypt_xts:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #321 +aes_decrypt_xts:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #322 +aes_decrypt_xts:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #323 +aes_decrypt_xts:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #324 +aes_decrypt_xts:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #325 +aes_decrypt_xts:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #326 +aes_decrypt_xts:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #327 +aes_decrypt_xts:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #328 +aes_decrypt_xts:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #329 +aes_decrypt_xts:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #330 +aes_decrypt_xts:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #331 +aes_decrypt_xts:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #332 +aes_decrypt_xts:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #333 +aes_decrypt_xts:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #334 +aes_decrypt_xts:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #335 +aes_decrypt_xts:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #336 +aes_decrypt_xts:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #337 +aes_decrypt_xts:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #338 +aes_decrypt_xts:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #339 +aes_decrypt_xts:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #340 +aes_decrypt_xts:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #341 +aes_decrypt_xts:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #342 +aes_decrypt_xts:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #343 +aes_decrypt_xts:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #344 +aes_decrypt_xts:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #345 +aes_decrypt_xts:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #346 +aes_decrypt_xts:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #347 +aes_decrypt_xts:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #348 +aes_decrypt_xts:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #349 +aes_decrypt_xts:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #350 +aes_decrypt_xts:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #351 +aes_decrypt_xts:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #352 +aes_decrypt_xts:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #353 +aes_decrypt_xts:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #354 +aes_decrypt_xts:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #355 +aes_decrypt_xts:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #356 +aes_decrypt_xts:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #357 +aes_decrypt_xts:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #358 +aes_decrypt_xts:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #359 +aes_decrypt_xts:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #360 +aes_decrypt_xts:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #361 +aes_decrypt_xts:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #362 +aes_decrypt_xts:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #363 +aes_decrypt_xts:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #364 +aes_decrypt_xts:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #365 +aes_decrypt_xts:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #366 +aes_decrypt_xts:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #367 +aes_decrypt_xts:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #368 +aes_decrypt_xts:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #369 +aes_decrypt_xts:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #370 +aes_decrypt_xts:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #371 +aes_decrypt_xts:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #372 +aes_decrypt_xts:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #373 +aes_decrypt_xts:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #374 +aes_decrypt_xts:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #375 +aes_decrypt_xts:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #376 +aes_decrypt_xts:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #377 +aes_decrypt_xts:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #378 +aes_decrypt_xts:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #379 +aes_decrypt_xts:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #380 +aes_decrypt_xts:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #381 +aes_decrypt_xts:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #382 +aes_decrypt_xts:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #383 +aes_decrypt_xts:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #384 +aes_decrypt_xts:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #385 +aes_decrypt_xts:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #386 +aes_decrypt_xts:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #387 +aes_decrypt_xts:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #388 +aes_decrypt_xts:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #389 +aes_decrypt_xts:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #390 +aes_decrypt_xts:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #391 +aes_decrypt_xts:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #392 +aes_decrypt_xts:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #393 +aes_decrypt_xts:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #394 +aes_decrypt_xts:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #395 +aes_decrypt_xts:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #396 +aes_decrypt_xts:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #397 +aes_decrypt_xts:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #398 +aes_decrypt_xts:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #399 +aes_decrypt_xts:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":256:0 + +AES-128-XTS Decrypt NIST XTSTestVectors #400 +aes_decrypt_xts:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #1 +aes_encrypt_xts:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #2 +aes_encrypt_xts:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #3 +aes_encrypt_xts:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #4 +aes_encrypt_xts:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #5 +aes_encrypt_xts:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #6 +aes_encrypt_xts:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #7 +aes_encrypt_xts:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #8 +aes_encrypt_xts:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #9 +aes_encrypt_xts:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #10 +aes_encrypt_xts:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #11 +aes_encrypt_xts:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #12 +aes_encrypt_xts:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #13 +aes_encrypt_xts:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #14 +aes_encrypt_xts:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #15 +aes_encrypt_xts:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #16 +aes_encrypt_xts:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #17 +aes_encrypt_xts:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #18 +aes_encrypt_xts:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #19 +aes_encrypt_xts:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #20 +aes_encrypt_xts:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #21 +aes_encrypt_xts:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #22 +aes_encrypt_xts:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #23 +aes_encrypt_xts:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #24 +aes_encrypt_xts:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #25 +aes_encrypt_xts:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #26 +aes_encrypt_xts:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #27 +aes_encrypt_xts:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #28 +aes_encrypt_xts:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #29 +aes_encrypt_xts:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #30 +aes_encrypt_xts:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #31 +aes_encrypt_xts:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #32 +aes_encrypt_xts:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #33 +aes_encrypt_xts:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #34 +aes_encrypt_xts:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #35 +aes_encrypt_xts:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #36 +aes_encrypt_xts:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #37 +aes_encrypt_xts:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #38 +aes_encrypt_xts:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #39 +aes_encrypt_xts:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #40 +aes_encrypt_xts:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #41 +aes_encrypt_xts:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #42 +aes_encrypt_xts:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #43 +aes_encrypt_xts:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #44 +aes_encrypt_xts:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #45 +aes_encrypt_xts:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #46 +aes_encrypt_xts:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #47 +aes_encrypt_xts:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #48 +aes_encrypt_xts:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #49 +aes_encrypt_xts:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #50 +aes_encrypt_xts:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #51 +aes_encrypt_xts:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #52 +aes_encrypt_xts:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #53 +aes_encrypt_xts:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #54 +aes_encrypt_xts:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #55 +aes_encrypt_xts:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #56 +aes_encrypt_xts:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #57 +aes_encrypt_xts:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #58 +aes_encrypt_xts:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #59 +aes_encrypt_xts:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #60 +aes_encrypt_xts:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #61 +aes_encrypt_xts:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #62 +aes_encrypt_xts:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #63 +aes_encrypt_xts:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #64 +aes_encrypt_xts:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #65 +aes_encrypt_xts:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #66 +aes_encrypt_xts:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #67 +aes_encrypt_xts:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #68 +aes_encrypt_xts:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #69 +aes_encrypt_xts:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #70 +aes_encrypt_xts:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #71 +aes_encrypt_xts:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #72 +aes_encrypt_xts:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #73 +aes_encrypt_xts:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #74 +aes_encrypt_xts:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #75 +aes_encrypt_xts:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #76 +aes_encrypt_xts:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #77 +aes_encrypt_xts:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #78 +aes_encrypt_xts:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #79 +aes_encrypt_xts:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #80 +aes_encrypt_xts:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #81 +aes_encrypt_xts:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #82 +aes_encrypt_xts:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #83 +aes_encrypt_xts:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #84 +aes_encrypt_xts:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #85 +aes_encrypt_xts:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #86 +aes_encrypt_xts:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #87 +aes_encrypt_xts:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #88 +aes_encrypt_xts:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #89 +aes_encrypt_xts:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #90 +aes_encrypt_xts:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #91 +aes_encrypt_xts:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #92 +aes_encrypt_xts:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #93 +aes_encrypt_xts:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #94 +aes_encrypt_xts:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #95 +aes_encrypt_xts:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #96 +aes_encrypt_xts:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #97 +aes_encrypt_xts:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #98 +aes_encrypt_xts:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #99 +aes_encrypt_xts:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #100 +aes_encrypt_xts:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2":256:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #101 +aes_encrypt_xts:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #102 +aes_encrypt_xts:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #103 +aes_encrypt_xts:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #104 +aes_encrypt_xts:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #105 +aes_encrypt_xts:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #106 +aes_encrypt_xts:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #107 +aes_encrypt_xts:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #108 +aes_encrypt_xts:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #109 +aes_encrypt_xts:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #110 +aes_encrypt_xts:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #111 +aes_encrypt_xts:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #112 +aes_encrypt_xts:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #113 +aes_encrypt_xts:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #114 +aes_encrypt_xts:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #115 +aes_encrypt_xts:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #116 +aes_encrypt_xts:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #117 +aes_encrypt_xts:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #118 +aes_encrypt_xts:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #119 +aes_encrypt_xts:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #120 +aes_encrypt_xts:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #121 +aes_encrypt_xts:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #122 +aes_encrypt_xts:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #123 +aes_encrypt_xts:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #124 +aes_encrypt_xts:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #125 +aes_encrypt_xts:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #126 +aes_encrypt_xts:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #127 +aes_encrypt_xts:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #128 +aes_encrypt_xts:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #129 +aes_encrypt_xts:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #130 +aes_encrypt_xts:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #131 +aes_encrypt_xts:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #132 +aes_encrypt_xts:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #133 +aes_encrypt_xts:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #134 +aes_encrypt_xts:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #135 +aes_encrypt_xts:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #136 +aes_encrypt_xts:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #137 +aes_encrypt_xts:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #138 +aes_encrypt_xts:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #139 +aes_encrypt_xts:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #140 +aes_encrypt_xts:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #141 +aes_encrypt_xts:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #142 +aes_encrypt_xts:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #143 +aes_encrypt_xts:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #144 +aes_encrypt_xts:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #145 +aes_encrypt_xts:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #146 +aes_encrypt_xts:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #147 +aes_encrypt_xts:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #148 +aes_encrypt_xts:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #149 +aes_encrypt_xts:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #150 +aes_encrypt_xts:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #151 +aes_encrypt_xts:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #152 +aes_encrypt_xts:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #153 +aes_encrypt_xts:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #154 +aes_encrypt_xts:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #155 +aes_encrypt_xts:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #156 +aes_encrypt_xts:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #157 +aes_encrypt_xts:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #158 +aes_encrypt_xts:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #159 +aes_encrypt_xts:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #160 +aes_encrypt_xts:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #161 +aes_encrypt_xts:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #162 +aes_encrypt_xts:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #163 +aes_encrypt_xts:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #164 +aes_encrypt_xts:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #165 +aes_encrypt_xts:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #166 +aes_encrypt_xts:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #167 +aes_encrypt_xts:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #168 +aes_encrypt_xts:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #169 +aes_encrypt_xts:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #170 +aes_encrypt_xts:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #171 +aes_encrypt_xts:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #172 +aes_encrypt_xts:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #173 +aes_encrypt_xts:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #174 +aes_encrypt_xts:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #175 +aes_encrypt_xts:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #176 +aes_encrypt_xts:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #177 +aes_encrypt_xts:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #178 +aes_encrypt_xts:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #179 +aes_encrypt_xts:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #180 +aes_encrypt_xts:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #181 +aes_encrypt_xts:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #182 +aes_encrypt_xts:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #183 +aes_encrypt_xts:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #184 +aes_encrypt_xts:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #185 +aes_encrypt_xts:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #186 +aes_encrypt_xts:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #187 +aes_encrypt_xts:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #188 +aes_encrypt_xts:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #189 +aes_encrypt_xts:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #190 +aes_encrypt_xts:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #191 +aes_encrypt_xts:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #192 +aes_encrypt_xts:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #193 +aes_encrypt_xts:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #194 +aes_encrypt_xts:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #195 +aes_encrypt_xts:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #196 +aes_encrypt_xts:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #197 +aes_encrypt_xts:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #198 +aes_encrypt_xts:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #199 +aes_encrypt_xts:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #200 +aes_encrypt_xts:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #201 +aes_encrypt_xts:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #202 +aes_encrypt_xts:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #203 +aes_encrypt_xts:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #204 +aes_encrypt_xts:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #205 +aes_encrypt_xts:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #206 +aes_encrypt_xts:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #207 +aes_encrypt_xts:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #208 +aes_encrypt_xts:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #209 +aes_encrypt_xts:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #210 +aes_encrypt_xts:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #211 +aes_encrypt_xts:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #212 +aes_encrypt_xts:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #213 +aes_encrypt_xts:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #214 +aes_encrypt_xts:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #215 +aes_encrypt_xts:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #216 +aes_encrypt_xts:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #217 +aes_encrypt_xts:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #218 +aes_encrypt_xts:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #219 +aes_encrypt_xts:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #220 +aes_encrypt_xts:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #221 +aes_encrypt_xts:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #222 +aes_encrypt_xts:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #223 +aes_encrypt_xts:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #224 +aes_encrypt_xts:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #225 +aes_encrypt_xts:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #226 +aes_encrypt_xts:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #227 +aes_encrypt_xts:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #228 +aes_encrypt_xts:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #229 +aes_encrypt_xts:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #230 +aes_encrypt_xts:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #231 +aes_encrypt_xts:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #232 +aes_encrypt_xts:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #233 +aes_encrypt_xts:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #234 +aes_encrypt_xts:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #235 +aes_encrypt_xts:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #236 +aes_encrypt_xts:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #237 +aes_encrypt_xts:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #238 +aes_encrypt_xts:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #239 +aes_encrypt_xts:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #240 +aes_encrypt_xts:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #241 +aes_encrypt_xts:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #242 +aes_encrypt_xts:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #243 +aes_encrypt_xts:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #244 +aes_encrypt_xts:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #245 +aes_encrypt_xts:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #246 +aes_encrypt_xts:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #247 +aes_encrypt_xts:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #248 +aes_encrypt_xts:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #249 +aes_encrypt_xts:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #250 +aes_encrypt_xts:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #251 +aes_encrypt_xts:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #252 +aes_encrypt_xts:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #253 +aes_encrypt_xts:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #254 +aes_encrypt_xts:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #255 +aes_encrypt_xts:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #256 +aes_encrypt_xts:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #257 +aes_encrypt_xts:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #258 +aes_encrypt_xts:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #259 +aes_encrypt_xts:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #260 +aes_encrypt_xts:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #261 +aes_encrypt_xts:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #262 +aes_encrypt_xts:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #263 +aes_encrypt_xts:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #264 +aes_encrypt_xts:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #265 +aes_encrypt_xts:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #266 +aes_encrypt_xts:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #267 +aes_encrypt_xts:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #268 +aes_encrypt_xts:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #269 +aes_encrypt_xts:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #270 +aes_encrypt_xts:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #271 +aes_encrypt_xts:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #272 +aes_encrypt_xts:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #273 +aes_encrypt_xts:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #274 +aes_encrypt_xts:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #275 +aes_encrypt_xts:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #276 +aes_encrypt_xts:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #277 +aes_encrypt_xts:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #278 +aes_encrypt_xts:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #279 +aes_encrypt_xts:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #280 +aes_encrypt_xts:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #281 +aes_encrypt_xts:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #282 +aes_encrypt_xts:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #283 +aes_encrypt_xts:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #284 +aes_encrypt_xts:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #285 +aes_encrypt_xts:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #286 +aes_encrypt_xts:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #287 +aes_encrypt_xts:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #288 +aes_encrypt_xts:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #289 +aes_encrypt_xts:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #290 +aes_encrypt_xts:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #291 +aes_encrypt_xts:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #292 +aes_encrypt_xts:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #293 +aes_encrypt_xts:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #294 +aes_encrypt_xts:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #295 +aes_encrypt_xts:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #296 +aes_encrypt_xts:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #297 +aes_encrypt_xts:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #298 +aes_encrypt_xts:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #299 +aes_encrypt_xts:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3":384:0 + +AES-256-XTS Encrypt NIST XTSTestVectors #300 +aes_encrypt_xts:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #1 +aes_decrypt_xts:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #2 +aes_decrypt_xts:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #3 +aes_decrypt_xts:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #4 +aes_decrypt_xts:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #5 +aes_decrypt_xts:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #6 +aes_decrypt_xts:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #7 +aes_decrypt_xts:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #8 +aes_decrypt_xts:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #9 +aes_decrypt_xts:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #10 +aes_decrypt_xts:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #11 +aes_decrypt_xts:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #12 +aes_decrypt_xts:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #13 +aes_decrypt_xts:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #14 +aes_decrypt_xts:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #15 +aes_decrypt_xts:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #16 +aes_decrypt_xts:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #17 +aes_decrypt_xts:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #18 +aes_decrypt_xts:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #19 +aes_decrypt_xts:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #20 +aes_decrypt_xts:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #21 +aes_decrypt_xts:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #22 +aes_decrypt_xts:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #23 +aes_decrypt_xts:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #24 +aes_decrypt_xts:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #25 +aes_decrypt_xts:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #26 +aes_decrypt_xts:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #27 +aes_decrypt_xts:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #28 +aes_decrypt_xts:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #29 +aes_decrypt_xts:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #30 +aes_decrypt_xts:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #31 +aes_decrypt_xts:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #32 +aes_decrypt_xts:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #33 +aes_decrypt_xts:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #34 +aes_decrypt_xts:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #35 +aes_decrypt_xts:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #36 +aes_decrypt_xts:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #37 +aes_decrypt_xts:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #38 +aes_decrypt_xts:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #39 +aes_decrypt_xts:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #40 +aes_decrypt_xts:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #41 +aes_decrypt_xts:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #42 +aes_decrypt_xts:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #43 +aes_decrypt_xts:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #44 +aes_decrypt_xts:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #45 +aes_decrypt_xts:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #46 +aes_decrypt_xts:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #47 +aes_decrypt_xts:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #48 +aes_decrypt_xts:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #49 +aes_decrypt_xts:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #50 +aes_decrypt_xts:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #51 +aes_decrypt_xts:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #52 +aes_decrypt_xts:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #53 +aes_decrypt_xts:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #54 +aes_decrypt_xts:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #55 +aes_decrypt_xts:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #56 +aes_decrypt_xts:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #57 +aes_decrypt_xts:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #58 +aes_decrypt_xts:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #59 +aes_decrypt_xts:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #60 +aes_decrypt_xts:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #61 +aes_decrypt_xts:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #62 +aes_decrypt_xts:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #63 +aes_decrypt_xts:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #64 +aes_decrypt_xts:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #65 +aes_decrypt_xts:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #66 +aes_decrypt_xts:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #67 +aes_decrypt_xts:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #68 +aes_decrypt_xts:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #69 +aes_decrypt_xts:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #70 +aes_decrypt_xts:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #71 +aes_decrypt_xts:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #72 +aes_decrypt_xts:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #73 +aes_decrypt_xts:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #74 +aes_decrypt_xts:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #75 +aes_decrypt_xts:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #76 +aes_decrypt_xts:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #77 +aes_decrypt_xts:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #78 +aes_decrypt_xts:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #79 +aes_decrypt_xts:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #80 +aes_decrypt_xts:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #81 +aes_decrypt_xts:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #82 +aes_decrypt_xts:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #83 +aes_decrypt_xts:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #84 +aes_decrypt_xts:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #85 +aes_decrypt_xts:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #86 +aes_decrypt_xts:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #87 +aes_decrypt_xts:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #88 +aes_decrypt_xts:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #89 +aes_decrypt_xts:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #90 +aes_decrypt_xts:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #91 +aes_decrypt_xts:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #92 +aes_decrypt_xts:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #93 +aes_decrypt_xts:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #94 +aes_decrypt_xts:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #95 +aes_decrypt_xts:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #96 +aes_decrypt_xts:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #97 +aes_decrypt_xts:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #98 +aes_decrypt_xts:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #99 +aes_decrypt_xts:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #100 +aes_decrypt_xts:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":256:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #101 +aes_decrypt_xts:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #102 +aes_decrypt_xts:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #103 +aes_decrypt_xts:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #104 +aes_decrypt_xts:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #105 +aes_decrypt_xts:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #106 +aes_decrypt_xts:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #107 +aes_decrypt_xts:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #108 +aes_decrypt_xts:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #109 +aes_decrypt_xts:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #110 +aes_decrypt_xts:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #111 +aes_decrypt_xts:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #112 +aes_decrypt_xts:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #113 +aes_decrypt_xts:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #114 +aes_decrypt_xts:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #115 +aes_decrypt_xts:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #116 +aes_decrypt_xts:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #117 +aes_decrypt_xts:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #118 +aes_decrypt_xts:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #119 +aes_decrypt_xts:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #120 +aes_decrypt_xts:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #121 +aes_decrypt_xts:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #122 +aes_decrypt_xts:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #123 +aes_decrypt_xts:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #124 +aes_decrypt_xts:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #125 +aes_decrypt_xts:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #126 +aes_decrypt_xts:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #127 +aes_decrypt_xts:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #128 +aes_decrypt_xts:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #129 +aes_decrypt_xts:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #130 +aes_decrypt_xts:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #131 +aes_decrypt_xts:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #132 +aes_decrypt_xts:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #133 +aes_decrypt_xts:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #134 +aes_decrypt_xts:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #135 +aes_decrypt_xts:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #136 +aes_decrypt_xts:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #137 +aes_decrypt_xts:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #138 +aes_decrypt_xts:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #139 +aes_decrypt_xts:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #140 +aes_decrypt_xts:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #141 +aes_decrypt_xts:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #142 +aes_decrypt_xts:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #143 +aes_decrypt_xts:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #144 +aes_decrypt_xts:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #145 +aes_decrypt_xts:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #146 +aes_decrypt_xts:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #147 +aes_decrypt_xts:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #148 +aes_decrypt_xts:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #149 +aes_decrypt_xts:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #150 +aes_decrypt_xts:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #151 +aes_decrypt_xts:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #152 +aes_decrypt_xts:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #153 +aes_decrypt_xts:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #154 +aes_decrypt_xts:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #155 +aes_decrypt_xts:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #156 +aes_decrypt_xts:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #157 +aes_decrypt_xts:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #158 +aes_decrypt_xts:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #159 +aes_decrypt_xts:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #160 +aes_decrypt_xts:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #161 +aes_decrypt_xts:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #162 +aes_decrypt_xts:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #163 +aes_decrypt_xts:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #164 +aes_decrypt_xts:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #165 +aes_decrypt_xts:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #166 +aes_decrypt_xts:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #167 +aes_decrypt_xts:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #168 +aes_decrypt_xts:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #169 +aes_decrypt_xts:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #170 +aes_decrypt_xts:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #171 +aes_decrypt_xts:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #172 +aes_decrypt_xts:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #173 +aes_decrypt_xts:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #174 +aes_decrypt_xts:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #175 +aes_decrypt_xts:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #176 +aes_decrypt_xts:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #177 +aes_decrypt_xts:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #178 +aes_decrypt_xts:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #179 +aes_decrypt_xts:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #180 +aes_decrypt_xts:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #181 +aes_decrypt_xts:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #182 +aes_decrypt_xts:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #183 +aes_decrypt_xts:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #184 +aes_decrypt_xts:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #185 +aes_decrypt_xts:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #186 +aes_decrypt_xts:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #187 +aes_decrypt_xts:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #188 +aes_decrypt_xts:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #189 +aes_decrypt_xts:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #190 +aes_decrypt_xts:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #191 +aes_decrypt_xts:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #192 +aes_decrypt_xts:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #193 +aes_decrypt_xts:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #194 +aes_decrypt_xts:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #195 +aes_decrypt_xts:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #196 +aes_decrypt_xts:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #197 +aes_decrypt_xts:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #198 +aes_decrypt_xts:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #199 +aes_decrypt_xts:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #200 +aes_decrypt_xts:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #201 +aes_decrypt_xts:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #202 +aes_decrypt_xts:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #203 +aes_decrypt_xts:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #204 +aes_decrypt_xts:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #205 +aes_decrypt_xts:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #206 +aes_decrypt_xts:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #207 +aes_decrypt_xts:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #208 +aes_decrypt_xts:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #209 +aes_decrypt_xts:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #210 +aes_decrypt_xts:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #211 +aes_decrypt_xts:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #212 +aes_decrypt_xts:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #213 +aes_decrypt_xts:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #214 +aes_decrypt_xts:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #215 +aes_decrypt_xts:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #216 +aes_decrypt_xts:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #217 +aes_decrypt_xts:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #218 +aes_decrypt_xts:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #219 +aes_decrypt_xts:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #220 +aes_decrypt_xts:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #221 +aes_decrypt_xts:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #222 +aes_decrypt_xts:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #223 +aes_decrypt_xts:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #224 +aes_decrypt_xts:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #225 +aes_decrypt_xts:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #226 +aes_decrypt_xts:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #227 +aes_decrypt_xts:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #228 +aes_decrypt_xts:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #229 +aes_decrypt_xts:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #230 +aes_decrypt_xts:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #231 +aes_decrypt_xts:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #232 +aes_decrypt_xts:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #233 +aes_decrypt_xts:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #234 +aes_decrypt_xts:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #235 +aes_decrypt_xts:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #236 +aes_decrypt_xts:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #237 +aes_decrypt_xts:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #238 +aes_decrypt_xts:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #239 +aes_decrypt_xts:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #240 +aes_decrypt_xts:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #241 +aes_decrypt_xts:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #242 +aes_decrypt_xts:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #243 +aes_decrypt_xts:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #244 +aes_decrypt_xts:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #245 +aes_decrypt_xts:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #246 +aes_decrypt_xts:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #247 +aes_decrypt_xts:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #248 +aes_decrypt_xts:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #249 +aes_decrypt_xts:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #250 +aes_decrypt_xts:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #251 +aes_decrypt_xts:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #252 +aes_decrypt_xts:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #253 +aes_decrypt_xts:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #254 +aes_decrypt_xts:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #255 +aes_decrypt_xts:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #256 +aes_decrypt_xts:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #257 +aes_decrypt_xts:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #258 +aes_decrypt_xts:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #259 +aes_decrypt_xts:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #260 +aes_decrypt_xts:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #261 +aes_decrypt_xts:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #262 +aes_decrypt_xts:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #263 +aes_decrypt_xts:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #264 +aes_decrypt_xts:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #265 +aes_decrypt_xts:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #266 +aes_decrypt_xts:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #267 +aes_decrypt_xts:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #268 +aes_decrypt_xts:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #269 +aes_decrypt_xts:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #270 +aes_decrypt_xts:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #271 +aes_decrypt_xts:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #272 +aes_decrypt_xts:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #273 +aes_decrypt_xts:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #274 +aes_decrypt_xts:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #275 +aes_decrypt_xts:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #276 +aes_decrypt_xts:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #277 +aes_decrypt_xts:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #278 +aes_decrypt_xts:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #279 +aes_decrypt_xts:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #280 +aes_decrypt_xts:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #281 +aes_decrypt_xts:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #282 +aes_decrypt_xts:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #283 +aes_decrypt_xts:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #284 +aes_decrypt_xts:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #285 +aes_decrypt_xts:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #286 +aes_decrypt_xts:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #287 +aes_decrypt_xts:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #288 +aes_decrypt_xts:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #289 +aes_decrypt_xts:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #290 +aes_decrypt_xts:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #291 +aes_decrypt_xts:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #292 +aes_decrypt_xts:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #293 +aes_decrypt_xts:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #294 +aes_decrypt_xts:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #295 +aes_decrypt_xts:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #296 +aes_decrypt_xts:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #297 +aes_decrypt_xts:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #298 +aes_decrypt_xts:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #299 +aes_decrypt_xts:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":384:0 + +AES-256-XTS Decrypt NIST XTSTestVectors #300 +aes_decrypt_xts:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":384:0 + From 97cc3b1354a9b233344064ae338423cab0d94ce1 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 29 May 2018 19:04:39 +0100 Subject: [PATCH 0436/1100] gf128mul: Remove the jump table If we're unlucky with memory placement, gf128mul_table_bbe may spread over two cache lines and this would leak b >> 63 to a cache timing attack. Instead, take an approach that is less likely to make different memory loads depending on the value of b >> 63 and is also unlikely to be compiled to a condition. --- library/gf128mul.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/library/gf128mul.c b/library/gf128mul.c index 251398f477..661d0d3cdb 100644 --- a/library/gf128mul.c +++ b/library/gf128mul.c @@ -51,11 +51,6 @@ } #endif - -/* Jump table for not having ifs */ -static const uint16_t gf128mul_table_bbe[2] = { 0x00, 0x87 }; - - /* * This function multiply a field element by x, by x^4 and by x^8 * in the polynomial field representation. It uses 64-bit word operations @@ -69,7 +64,7 @@ void mbedtls_gf128mul_x_ble(mbedtls_be128 r, const mbedtls_be128 x) GET_UINT64_LE(a, x, 0); GET_UINT64_LE(b, x, 8); - ra = (a << 1) ^ gf128mul_table_bbe[b >> 63]; + ra = (a << 1) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); rb = (a >> 63) | (b << 1); PUT_UINT64_LE(ra, r, 0); From 010c2cb45635eb7518d248366cd3ed5c5aad6876 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 29 May 2018 17:00:47 +0100 Subject: [PATCH 0437/1100] gf128mul: Inline instead of making a new module --- include/mbedtls/gf128mul.h | 46 ------------------------ library/CMakeLists.txt | 1 - library/aes.c | 59 +++++++++++++++++++++++++++--- library/gf128mul.c | 73 -------------------------------------- 4 files changed, 55 insertions(+), 124 deletions(-) delete mode 100644 include/mbedtls/gf128mul.h delete mode 100644 library/gf128mul.c diff --git a/include/mbedtls/gf128mul.h b/include/mbedtls/gf128mul.h deleted file mode 100644 index 33d06eaaa0..0000000000 --- a/include/mbedtls/gf128mul.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * \file gf128mul.h - * - * \brief Fast multiplication in GF(128) - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ -#ifndef MBEDTLS_GF128MUL_H -#define MBEDTLS_GF128MUL_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Big-Endian definition for 128 bits elements - */ -typedef unsigned char mbedtls_be128[16]; - -/** - * \brief Multiplication in GF(128): - * r = x times x^4 times x^8 in GF(2^128) - * - * \param x the 128-bits number you want to multiply - * \param r result - */ -void mbedtls_gf128mul_x_ble(mbedtls_be128 r, const mbedtls_be128 x); - - - -#endif /* gf128mul.h */ \ No newline at end of file diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 03d3f6c652..60fa7f8f31 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -29,7 +29,6 @@ set(src_crypto entropy_poll.c error.c gcm.c - gf128mul.c havege.c hkdf.c hmac_drbg.c diff --git a/library/aes.c b/library/aes.c index 95386dfb23..c7af22ad8a 100644 --- a/library/aes.c +++ b/library/aes.c @@ -44,10 +44,6 @@ #include "mbedtls/aesni.h" #endif -#if defined(MBEDTLS_CIPHER_MODE_XEX) || defined(MBEDTLS_CIPHER_MODE_XTS) -#include "mbedtls/gf128mul.h" -#endif - #if defined(MBEDTLS_SELF_TEST) #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" @@ -1046,6 +1042,61 @@ first: #endif /* MBEDTLS_CIPHER_MODE_XEX */ #if defined(MBEDTLS_CIPHER_MODE_XTS) + +/* Endianess with 64 bits values */ +#ifndef GET_UINT64_LE +#define GET_UINT64_LE(n,b,i) \ +{ \ + (n) = ( (uint64_t) (b)[(i) + 7] << 56 ) \ + | ( (uint64_t) (b)[(i) + 6] << 48 ) \ + | ( (uint64_t) (b)[(i) + 5] << 40 ) \ + | ( (uint64_t) (b)[(i) + 4] << 32 ) \ + | ( (uint64_t) (b)[(i) + 3] << 24 ) \ + | ( (uint64_t) (b)[(i) + 2] << 16 ) \ + | ( (uint64_t) (b)[(i) + 1] << 8 ) \ + | ( (uint64_t) (b)[(i) ] ); \ +} +#endif + +#ifndef PUT_UINT64_LE +#define PUT_UINT64_LE(n,b,i) \ +{ \ + (b)[(i) + 7] = (unsigned char) ( (n) >> 56 ); \ + (b)[(i) + 6] = (unsigned char) ( (n) >> 48 ); \ + (b)[(i) + 5] = (unsigned char) ( (n) >> 40 ); \ + (b)[(i) + 4] = (unsigned char) ( (n) >> 32 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) ] = (unsigned char) ( (n) ); \ +} +#endif + +typedef unsigned char mbedtls_be128[16]; + +/* + * GF(2^128) multiplication function + * + * This function multiplies a field element by x, by x^4 and by x^8 in the + * polynomial field representation. It uses 64-bit word operations to gain + * speed but compensates for machine endianess and hence works correctly on + * both big and little endian machines. + */ +static void mbedtls_gf128mul_x_ble( unsigned char r[16], + const unsigned char x[16]) +{ + uint64_t a, b, ra, rb; + + GET_UINT64_LE(a, x, 0); + GET_UINT64_LE(b, x, 8); + + ra = (a << 1) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); + rb = (a >> 63) | (b << 1); + + PUT_UINT64_LE(ra, r, 0); + PUT_UINT64_LE(rb, r, 8); +} + /* * AES-XTS buffer encryption/decryption */ diff --git a/library/gf128mul.c b/library/gf128mul.c deleted file mode 100644 index 661d0d3cdb..0000000000 --- a/library/gf128mul.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * GF(2^128) multiplication functions - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ -#include - -#include "mbedtls/gf128mul.h" - -/* Endianess with 64 bits values */ -#ifndef GET_UINT64_LE -#define GET_UINT64_LE(n,b,i) \ -{ \ - (n) = ( (uint64_t) (b)[(i) + 7] << 56 ) \ - | ( (uint64_t) (b)[(i) + 6] << 48 ) \ - | ( (uint64_t) (b)[(i) + 5] << 40 ) \ - | ( (uint64_t) (b)[(i) + 4] << 32 ) \ - | ( (uint64_t) (b)[(i) + 3] << 24 ) \ - | ( (uint64_t) (b)[(i) + 2] << 16 ) \ - | ( (uint64_t) (b)[(i) + 1] << 8 ) \ - | ( (uint64_t) (b)[(i) ] ); \ -} -#endif - -#ifndef PUT_UINT64_LE -#define PUT_UINT64_LE(n,b,i) \ -{ \ - (b)[(i) + 7] = (unsigned char) ( (n) >> 56 ); \ - (b)[(i) + 6] = (unsigned char) ( (n) >> 48 ); \ - (b)[(i) + 5] = (unsigned char) ( (n) >> 40 ); \ - (b)[(i) + 4] = (unsigned char) ( (n) >> 32 ); \ - (b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \ - (b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \ - (b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \ - (b)[(i) ] = (unsigned char) ( (n) ); \ -} -#endif - -/* - * This function multiply a field element by x, by x^4 and by x^8 - * in the polynomial field representation. It uses 64-bit word operations - * to gain speed but compensates for machine endianess and hence works - * correctly on both styles of machine. - */ -void mbedtls_gf128mul_x_ble(mbedtls_be128 r, const mbedtls_be128 x) -{ - uint64_t a, b, ra, rb; - - GET_UINT64_LE(a, x, 0); - GET_UINT64_LE(b, x, 8); - - ra = (a << 1) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); - rb = (a >> 63) | (b << 1); - - PUT_UINT64_LE(ra, r, 0); - PUT_UINT64_LE(rb, r, 8); -} - From e9ecf00007bd97a80aff554d0c3fbd60fc48cd27 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 17 May 2018 16:42:08 +0100 Subject: [PATCH 0438/1100] aes: Remove AES-XEX AES-XEX is a building block for other cryptographic standards and not yet a standard in and of itself. We'll just provide the standardized AES-XTS algorithm, and not AES-XEX. The AES-XTS algorithm and interface provided can be used to perform the AES-XEX algorithm when the length of the input is a multiple of the AES block size. --- include/mbedtls/aes.h | 24 - include/mbedtls/config.h | 7 - library/aes.c | 58 - library/version_features.c | 3 - programs/test/benchmark.c | 29 +- tests/CMakeLists.txt | 1 - tests/suites/test_suite_aes.function | 74 - tests/suites/test_suite_aes.xex.data | 3600 -------------------------- 8 files changed, 2 insertions(+), 3794 deletions(-) delete mode 100644 tests/suites/test_suite_aes.xex.data diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index c42ca7ac86..33667d67a4 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -213,30 +213,6 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(MBEDTLS_CIPHER_MODE_XEX) -/** - * \brief AES-XEX buffer encryption/decryption - * Length should be a multiple of the block size (16 bytes) - * - * \param crypt_ctx AES context for encrypting data - * \param tweak_ctx AES context for xor-ing with data - * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT - * \param length length of the input data - * \param iv initialization vector - * \param input buffer holding the input data - * \param output buffer holding the output data - * - * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH - */ -int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, - mbedtls_aes_context *tweak_ctx, - int mode, - size_t length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ); -#endif /* MBEDTLS_CIPHER_MODE_XEX */ - #if defined(MBEDTLS_CIPHER_MODE_XTS) /** * \brief AES-XTS buffer encryption/decryption diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 3a7c15962d..c7cf57a523 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -501,13 +501,6 @@ */ #define MBEDTLS_CIPHER_MODE_CBC -/** - * \def MBEDTLS_CIPHER_MODE_XEX - * - * Enable Xor-encrypt-xor mode (XEX) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_XEX - /** * \def MBEDTLS_CIPHER_MODE_XTS * diff --git a/library/aes.c b/library/aes.c index c7af22ad8a..9e7b24853c 100644 --- a/library/aes.c +++ b/library/aes.c @@ -983,64 +983,6 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, } #endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(MBEDTLS_CIPHER_MODE_XEX) -/* - * AES-XEX buffer encryption/decryption - */ -int mbedtls_aes_crypt_xex( mbedtls_aes_context *crypt_ctx, - mbedtls_aes_context *tweak_ctx, - int mode, - size_t length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ) -{ - union xex_buf128 { - uint8_t u8[16]; - uint64_t u64[2]; - }; - - union xex_buf128 scratch; - union xex_buf128 t_buf; - union xex_buf128 *inbuf; - union xex_buf128 *outbuf; - - inbuf = (union xex_buf128*)input; - outbuf = (union xex_buf128*)output; - - if( length % 16 ) - return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); - - - mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); - - goto first; - - do - { - mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); - -first: - /* PP <- T xor P */ - scratch.u64[0] = (uint64_t)( inbuf->u64[0] ^ t_buf.u64[0] ); - scratch.u64[1] = (uint64_t)( inbuf->u64[1] ^ t_buf.u64[1] ); - - /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, outbuf->u8 ); - - /* C <- T xor CC */ - outbuf->u64[0] = (uint64_t)( outbuf->u64[0] ^ t_buf.u64[0] ); - outbuf->u64[1] = (uint64_t)( outbuf->u64[1] ^ t_buf.u64[1] ); - - inbuf += 1; - outbuf += 1; - length -= 16; - } while( length > 0 ); - - return( 0 ); -} -#endif /* MBEDTLS_CIPHER_MODE_XEX */ - #if defined(MBEDTLS_CIPHER_MODE_XTS) /* Endianess with 64 bits values */ diff --git a/library/version_features.c b/library/version_features.c index fd932f1335..99fb1fe181 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -249,9 +249,6 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_MODE_CBC) "MBEDTLS_CIPHER_MODE_CBC", #endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(MBEDTLS_CIPHER_MODE_XEX) - "MBEDTLS_CIPHER_MODE_XEX", -#endif /* MBEDTLS_CIPHER_MODE_XEX */ #if defined(MBEDTLS_CIPHER_MODE_XTS) "MBEDTLS_CIPHER_MODE_XTS", #endif /* MBEDTLS_CIPHER_MODE_XTS */ diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index c9241cb2f3..47d36ff808 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -99,7 +99,7 @@ int main( void ) #define OPTIONS \ "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish,\n" \ - "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, aes_xts,\n" \ + "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xts,\n" \ "des3_cmac, havege, ctr_drbg, hmac_drbg\n" \ "rsa, dhm, ecdsa, ecdh.\n" @@ -233,7 +233,7 @@ unsigned char buf[BUFSIZE]; typedef struct { char md4, md5, ripemd160, sha1, sha256, sha512, arc4, des3, des, - aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xex, aes_xts, + aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xts, des3_cmac, aria, camellia, blowfish, havege, ctr_drbg, hmac_drbg, rsa, dhm, ecdsa, ecdh; @@ -279,8 +279,6 @@ int main( int argc, char *argv[] ) todo.des = 1; else if( strcmp( argv[i], "aes_cbc" ) == 0 ) todo.aes_cbc = 1; - else if( strcmp( argv[i], "aes_xex" ) == 0 ) - todo.aes_xex = 1; else if( strcmp( argv[i], "aes_xts" ) == 0 ) todo.aes_xts = 1; else if( strcmp( argv[i], "aes_gcm" ) == 0 ) @@ -430,29 +428,6 @@ int main( int argc, char *argv[] ) mbedtls_aes_free( &aes ); } #endif -#if defined(MBEDTLS_CIPHER_MODE_XEX) - if( todo.aes_xex ) - { - int keysize; - mbedtls_aes_context crypt_ctx, tweak_ctx; - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "AES-XEX-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_aes_setkey_enc( &crypt_ctx, tmp, keysize ); - mbedtls_aes_setkey_enc( &tweak_ctx, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, BUFSIZE, tmp, buf, buf ) ); - } - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); - } -#endif #if defined(MBEDTLS_CIPHER_MODE_XTS) if( todo.aes_xts ) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b22f1437de..f630edb838 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -48,7 +48,6 @@ add_test_suite(aes aes.ecb) add_test_suite(aes aes.cbc) add_test_suite(aes aes.cfb) add_test_suite(aes aes.rest) -add_test_suite(aes aes.xex) add_test_suite(aes aes.xts) add_test_suite(arc4) add_test_suite(aria) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 71633dd8f7..91f5fa2ded 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -151,80 +151,6 @@ exit: } /* END_CASE */ -/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XEX */ -void aes_encrypt_xex( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int xex_result ) -{ - unsigned char key_str[100] = { 0, }; - unsigned char iv_str[100] = { 0, }; - unsigned char src_str[100] = { 0, }; - unsigned char dst_str[100] = { 0, }; - unsigned char output[100] = { 0, }; - mbedtls_aes_context crypt_ctx, tweak_ctx; - int key_len, data_len; - - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); - - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); - - mbedtls_aes_setkey_enc( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); - mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); - - TEST_ASSERT( mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == xex_result ); - if( xex_result == 0 ) - { - hexify( dst_str, output, data_len ); - - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); - } - -exit: - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); -} -/* END_CASE */ - -/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XEX */ -void aes_decrypt_xex( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int xex_result ) -{ - unsigned char key_str[100] = { 0, }; - unsigned char iv_str[100] = { 0, }; - unsigned char src_str[100] = { 0, }; - unsigned char dst_str[100] = { 0, }; - unsigned char output[100] = { 0, }; - mbedtls_aes_context crypt_ctx, tweak_ctx; - int key_len, data_len; - - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); - - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); - - mbedtls_aes_setkey_dec( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); - mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); - - TEST_ASSERT( mbedtls_aes_crypt_xex( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == xex_result ); - if( xex_result == 0 ) - { - hexify( dst_str, output, data_len ); - - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); - } - -exit: - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); -} -/* END_CASE */ - /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string, diff --git a/tests/suites/test_suite_aes.xex.data b/tests/suites/test_suite_aes.xex.data deleted file mode 100644 index e12890d917..0000000000 --- a/tests/suites/test_suite_aes.xex.data +++ /dev/null @@ -1,3600 +0,0 @@ -AES-128-XEX Encrypt NIST XTSTestVectors #1 -aes_encrypt_xex:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #2 -aes_encrypt_xex:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #3 -aes_encrypt_xex:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #4 -aes_encrypt_xex:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #5 -aes_encrypt_xex:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #6 -aes_encrypt_xex:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #7 -aes_encrypt_xex:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #8 -aes_encrypt_xex:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #9 -aes_encrypt_xex:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #10 -aes_encrypt_xex:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #11 -aes_encrypt_xex:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #12 -aes_encrypt_xex:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #13 -aes_encrypt_xex:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #14 -aes_encrypt_xex:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #15 -aes_encrypt_xex:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #16 -aes_encrypt_xex:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #17 -aes_encrypt_xex:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #18 -aes_encrypt_xex:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #19 -aes_encrypt_xex:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #20 -aes_encrypt_xex:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #21 -aes_encrypt_xex:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #22 -aes_encrypt_xex:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #23 -aes_encrypt_xex:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #24 -aes_encrypt_xex:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #25 -aes_encrypt_xex:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #26 -aes_encrypt_xex:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #27 -aes_encrypt_xex:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #28 -aes_encrypt_xex:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #29 -aes_encrypt_xex:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #30 -aes_encrypt_xex:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #31 -aes_encrypt_xex:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #32 -aes_encrypt_xex:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #33 -aes_encrypt_xex:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #34 -aes_encrypt_xex:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #35 -aes_encrypt_xex:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #36 -aes_encrypt_xex:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #37 -aes_encrypt_xex:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #38 -aes_encrypt_xex:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #39 -aes_encrypt_xex:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #40 -aes_encrypt_xex:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #41 -aes_encrypt_xex:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #42 -aes_encrypt_xex:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #43 -aes_encrypt_xex:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #44 -aes_encrypt_xex:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #45 -aes_encrypt_xex:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #46 -aes_encrypt_xex:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #47 -aes_encrypt_xex:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #48 -aes_encrypt_xex:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #49 -aes_encrypt_xex:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #50 -aes_encrypt_xex:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #51 -aes_encrypt_xex:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #52 -aes_encrypt_xex:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #53 -aes_encrypt_xex:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #54 -aes_encrypt_xex:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #55 -aes_encrypt_xex:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #56 -aes_encrypt_xex:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #57 -aes_encrypt_xex:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #58 -aes_encrypt_xex:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #59 -aes_encrypt_xex:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #60 -aes_encrypt_xex:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #61 -aes_encrypt_xex:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #62 -aes_encrypt_xex:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #63 -aes_encrypt_xex:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #64 -aes_encrypt_xex:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #65 -aes_encrypt_xex:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #66 -aes_encrypt_xex:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #67 -aes_encrypt_xex:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #68 -aes_encrypt_xex:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #69 -aes_encrypt_xex:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #70 -aes_encrypt_xex:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #71 -aes_encrypt_xex:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #72 -aes_encrypt_xex:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #73 -aes_encrypt_xex:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #74 -aes_encrypt_xex:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #75 -aes_encrypt_xex:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #76 -aes_encrypt_xex:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #77 -aes_encrypt_xex:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #78 -aes_encrypt_xex:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #79 -aes_encrypt_xex:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #80 -aes_encrypt_xex:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #81 -aes_encrypt_xex:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #82 -aes_encrypt_xex:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #83 -aes_encrypt_xex:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #84 -aes_encrypt_xex:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #85 -aes_encrypt_xex:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #86 -aes_encrypt_xex:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #87 -aes_encrypt_xex:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #88 -aes_encrypt_xex:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #89 -aes_encrypt_xex:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #90 -aes_encrypt_xex:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #91 -aes_encrypt_xex:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #92 -aes_encrypt_xex:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #93 -aes_encrypt_xex:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #94 -aes_encrypt_xex:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #95 -aes_encrypt_xex:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #96 -aes_encrypt_xex:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #97 -aes_encrypt_xex:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #98 -aes_encrypt_xex:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #99 -aes_encrypt_xex:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #100 -aes_encrypt_xex:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #101 -aes_encrypt_xex:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #102 -aes_encrypt_xex:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #103 -aes_encrypt_xex:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #104 -aes_encrypt_xex:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #105 -aes_encrypt_xex:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #106 -aes_encrypt_xex:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #107 -aes_encrypt_xex:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #108 -aes_encrypt_xex:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #109 -aes_encrypt_xex:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #110 -aes_encrypt_xex:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #111 -aes_encrypt_xex:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #112 -aes_encrypt_xex:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #113 -aes_encrypt_xex:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #114 -aes_encrypt_xex:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #115 -aes_encrypt_xex:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #116 -aes_encrypt_xex:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #117 -aes_encrypt_xex:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #118 -aes_encrypt_xex:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #119 -aes_encrypt_xex:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #120 -aes_encrypt_xex:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #121 -aes_encrypt_xex:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #122 -aes_encrypt_xex:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #123 -aes_encrypt_xex:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #124 -aes_encrypt_xex:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #125 -aes_encrypt_xex:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #126 -aes_encrypt_xex:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #127 -aes_encrypt_xex:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #128 -aes_encrypt_xex:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #129 -aes_encrypt_xex:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #130 -aes_encrypt_xex:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #131 -aes_encrypt_xex:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #132 -aes_encrypt_xex:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #133 -aes_encrypt_xex:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #134 -aes_encrypt_xex:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #135 -aes_encrypt_xex:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #136 -aes_encrypt_xex:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #137 -aes_encrypt_xex:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #138 -aes_encrypt_xex:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #139 -aes_encrypt_xex:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #140 -aes_encrypt_xex:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #141 -aes_encrypt_xex:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #142 -aes_encrypt_xex:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #143 -aes_encrypt_xex:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #144 -aes_encrypt_xex:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #145 -aes_encrypt_xex:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #146 -aes_encrypt_xex:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #147 -aes_encrypt_xex:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #148 -aes_encrypt_xex:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #149 -aes_encrypt_xex:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #150 -aes_encrypt_xex:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #151 -aes_encrypt_xex:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #152 -aes_encrypt_xex:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #153 -aes_encrypt_xex:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #154 -aes_encrypt_xex:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #155 -aes_encrypt_xex:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #156 -aes_encrypt_xex:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #157 -aes_encrypt_xex:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #158 -aes_encrypt_xex:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #159 -aes_encrypt_xex:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #160 -aes_encrypt_xex:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #161 -aes_encrypt_xex:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #162 -aes_encrypt_xex:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #163 -aes_encrypt_xex:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #164 -aes_encrypt_xex:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #165 -aes_encrypt_xex:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #166 -aes_encrypt_xex:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #167 -aes_encrypt_xex:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #168 -aes_encrypt_xex:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #169 -aes_encrypt_xex:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #170 -aes_encrypt_xex:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #171 -aes_encrypt_xex:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #172 -aes_encrypt_xex:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #173 -aes_encrypt_xex:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #174 -aes_encrypt_xex:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #175 -aes_encrypt_xex:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #176 -aes_encrypt_xex:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #177 -aes_encrypt_xex:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #178 -aes_encrypt_xex:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #179 -aes_encrypt_xex:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #180 -aes_encrypt_xex:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #181 -aes_encrypt_xex:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #182 -aes_encrypt_xex:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #183 -aes_encrypt_xex:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #184 -aes_encrypt_xex:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #185 -aes_encrypt_xex:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #186 -aes_encrypt_xex:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #187 -aes_encrypt_xex:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #188 -aes_encrypt_xex:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #189 -aes_encrypt_xex:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #190 -aes_encrypt_xex:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #191 -aes_encrypt_xex:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #192 -aes_encrypt_xex:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #193 -aes_encrypt_xex:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #194 -aes_encrypt_xex:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #195 -aes_encrypt_xex:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #196 -aes_encrypt_xex:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #197 -aes_encrypt_xex:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #198 -aes_encrypt_xex:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #199 -aes_encrypt_xex:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #200 -aes_encrypt_xex:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #201 -aes_encrypt_xex:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #202 -aes_encrypt_xex:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #203 -aes_encrypt_xex:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #204 -aes_encrypt_xex:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #205 -aes_encrypt_xex:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #206 -aes_encrypt_xex:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #207 -aes_encrypt_xex:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #208 -aes_encrypt_xex:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #209 -aes_encrypt_xex:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #210 -aes_encrypt_xex:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #211 -aes_encrypt_xex:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #212 -aes_encrypt_xex:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #213 -aes_encrypt_xex:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #214 -aes_encrypt_xex:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #215 -aes_encrypt_xex:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #216 -aes_encrypt_xex:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #217 -aes_encrypt_xex:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #218 -aes_encrypt_xex:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #219 -aes_encrypt_xex:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #220 -aes_encrypt_xex:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #221 -aes_encrypt_xex:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #222 -aes_encrypt_xex:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #223 -aes_encrypt_xex:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #224 -aes_encrypt_xex:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #225 -aes_encrypt_xex:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #226 -aes_encrypt_xex:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #227 -aes_encrypt_xex:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #228 -aes_encrypt_xex:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #229 -aes_encrypt_xex:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #230 -aes_encrypt_xex:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #231 -aes_encrypt_xex:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #232 -aes_encrypt_xex:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #233 -aes_encrypt_xex:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #234 -aes_encrypt_xex:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #235 -aes_encrypt_xex:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #236 -aes_encrypt_xex:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #237 -aes_encrypt_xex:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #238 -aes_encrypt_xex:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #239 -aes_encrypt_xex:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #240 -aes_encrypt_xex:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #241 -aes_encrypt_xex:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #242 -aes_encrypt_xex:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #243 -aes_encrypt_xex:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #244 -aes_encrypt_xex:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #245 -aes_encrypt_xex:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #246 -aes_encrypt_xex:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #247 -aes_encrypt_xex:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #248 -aes_encrypt_xex:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #249 -aes_encrypt_xex:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #250 -aes_encrypt_xex:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #251 -aes_encrypt_xex:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #252 -aes_encrypt_xex:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #253 -aes_encrypt_xex:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #254 -aes_encrypt_xex:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #255 -aes_encrypt_xex:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #256 -aes_encrypt_xex:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #257 -aes_encrypt_xex:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #258 -aes_encrypt_xex:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #259 -aes_encrypt_xex:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #260 -aes_encrypt_xex:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #261 -aes_encrypt_xex:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #262 -aes_encrypt_xex:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #263 -aes_encrypt_xex:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #264 -aes_encrypt_xex:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #265 -aes_encrypt_xex:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #266 -aes_encrypt_xex:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #267 -aes_encrypt_xex:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #268 -aes_encrypt_xex:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #269 -aes_encrypt_xex:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #270 -aes_encrypt_xex:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #271 -aes_encrypt_xex:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #272 -aes_encrypt_xex:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #273 -aes_encrypt_xex:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #274 -aes_encrypt_xex:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #275 -aes_encrypt_xex:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #276 -aes_encrypt_xex:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #277 -aes_encrypt_xex:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #278 -aes_encrypt_xex:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #279 -aes_encrypt_xex:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #280 -aes_encrypt_xex:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #281 -aes_encrypt_xex:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #282 -aes_encrypt_xex:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #283 -aes_encrypt_xex:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #284 -aes_encrypt_xex:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #285 -aes_encrypt_xex:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #286 -aes_encrypt_xex:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #287 -aes_encrypt_xex:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #288 -aes_encrypt_xex:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #289 -aes_encrypt_xex:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #290 -aes_encrypt_xex:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #291 -aes_encrypt_xex:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #292 -aes_encrypt_xex:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #293 -aes_encrypt_xex:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #294 -aes_encrypt_xex:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #295 -aes_encrypt_xex:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #296 -aes_encrypt_xex:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #297 -aes_encrypt_xex:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #298 -aes_encrypt_xex:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #299 -aes_encrypt_xex:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da":0 - -AES-128-XEX Encrypt NIST XTSTestVectors #300 -aes_encrypt_xex:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #1 -aes_decrypt_xex:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"3454f7d34c0caffa12e9d2850b037fff":"07f2c2d4e6db6e1200bc165d154e0698":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #2 -aes_decrypt_xex:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"1070b7c17d3474281ad01fc0ad89cd8b":"321475ac6aa05712554d35a0a96a9265":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #3 -aes_decrypt_xex:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"2fb97e979fb107bcc13b577f0f1ea203":"6e0a78bc0db27021f0f59756a447e313":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #4 -aes_decrypt_xex:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"cff15a809220b4067c7c0266bbcb3248":"18757efd08059ab70bde2df78f3bd6ba":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #5 -aes_decrypt_xex:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"83725eecbcdfa8ebdec2f40ba4b157ed":"7fecfc127a3762e30e14791141f65585":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #6 -aes_decrypt_xex:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"a7931ff118db06cb44097bcac1fad1af":"c5801ed8a38a78277a45516a3e12b310":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #7 -aes_decrypt_xex:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"331960c250eb4988c75c0d532e206e5c":"25162f7511b5c3b24aee339ffeb7941c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #8 -aes_decrypt_xex:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"369ad5f8fb83a0df649c899b49ef7459":"09da2fc0ed605b69d95e0b7760840a99":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #9 -aes_decrypt_xex:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"4ae7a4ac80023405ac25bc497d6541fb":"d66768542f495d5c50b8623f314085f8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #10 -aes_decrypt_xex:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"c0f6f44c03d1cbe668c034562ea3d804":"f6c53bcb07cbb44747fc19a6604e26d7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #11 -aes_decrypt_xex:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"dcff3e38dfea1d3eb78182326d7d68ab":"d2f58ae0386e9230744a2056b7fd1310":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #12 -aes_decrypt_xex:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"26339412d7ac113b319088153e13e1ac":"e1fd155647de15b9fe230baf668d23db":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #13 -aes_decrypt_xex:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"29c3616714bf8076ab195e5e0d6cc0d7":"5fc717d763a56d764a21009b5132dab4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #14 -aes_decrypt_xex:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"8850a5b5011c0b49b444daa5cbd04aba":"ec5364fa0184d8b98ec02cf996428f38":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #15 -aes_decrypt_xex:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"2fbaadd1b47f726dce3f7d4c0358fd99":"95360d08af997eb3ec62e641dd6b899a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #16 -aes_decrypt_xex:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"6df4beebbe92ec8a427336b0caec1ec6":"fde4ae887d890b8835a5fc80bfcca708":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #17 -aes_decrypt_xex:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"945864f9190ea8c11943df2510f94421":"db57d5b819129d7896e2df0958a6f9f3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #18 -aes_decrypt_xex:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"a856594179845a87855ea16dd03916be":"f36143630377d4e4efd44c5716a8bda1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #19 -aes_decrypt_xex:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"d13ab11d3834d733ea5dd6dbf79ac92b":"8aab744287bff6901441908da23f0b11":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #20 -aes_decrypt_xex:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"51b9c927ead5fadad56c3eb1a220eec7":"b9a3533b48269b56f0dbb05724272ce5":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #21 -aes_decrypt_xex:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d83ddc006deeee4cc2b4c495830dddc3":"d33777d780a04bfe625cae471d2b8169":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #22 -aes_decrypt_xex:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"6d246f57b5d692205f2b970dcf8ed6f8":"a7f7e80a068e7591ae681fe3e5e277a6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #23 -aes_decrypt_xex:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"a8b8326cc5126a926cf414b471abd1b2":"f31aff86e5759a2243bfe96f1cdad7f6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #24 -aes_decrypt_xex:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"47b751adeeccd4475163239610797d4b":"4f6707b5e65da3eea92b5353c7bd95a2":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #25 -aes_decrypt_xex:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"e8c647ee7488adc4090e08a96965cced":"d3aa65af5882d432e8afdaa0b4f42640":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #26 -aes_decrypt_xex:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"1c980fd798b916326c525632e215c4ec":"8789bb3e01c8d3e768033f2c05ffee17":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #27 -aes_decrypt_xex:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"90f3c999cb074587f875561d04160c6c":"1d72767fffb8de3a2a420ca4383087a6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #28 -aes_decrypt_xex:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"cfa1f3a9a152c4875100ad4807b3b09c":"fb8d8db9cb8639de8344238dc2c1f255":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #29 -aes_decrypt_xex:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"b04ea8cd83aea25893ac2a621879a4cd":"90c08ac785b3b5e7c1815497a451a96c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #30 -aes_decrypt_xex:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"b1ac6eca721709a527598d1dc7fa365e":"036cad62c24295b188c47cdc247eae41":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #31 -aes_decrypt_xex:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"98f21426b7148082b4ee4a8074672a10":"857679e49cd68bc648c4ab0986aa59f8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #32 -aes_decrypt_xex:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"22f8c0637327b1123067e730c3be4a01":"5c931a135b9d4a7d65c9a8d5535c1294":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #33 -aes_decrypt_xex:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"8704552b90009ec3324adbf284dbd51e":"dd155757fcf457d90bb571e8eebd4630":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #34 -aes_decrypt_xex:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"c5f6673cbceae8236fa236798261eec1":"56fdd92d70c107b7707c9aa1d33ab0ac":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #35 -aes_decrypt_xex:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"91eecd8bbd0ff7cfe4b33d8e99924368":"d49ca2b1dfc2848120dfc2b75e292a0c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #36 -aes_decrypt_xex:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"86d6bf324bcc2910816abbf55f3ba45d":"da868afeec48764091c51f5e7332338d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #37 -aes_decrypt_xex:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"5b0a85e376a636d113366ec82a2c03f8":"e8cb042a3d239771ef104b5892bd1067":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #38 -aes_decrypt_xex:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"9b3a036436a24636290c969e9d97cf8b":"df6867693d8884cca8198283bb2c3e16":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #39 -aes_decrypt_xex:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f515b3d50e991d55a3e0fcb093085a10":"f224ec19a58bbde03cb692e0e4fc19d7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #40 -aes_decrypt_xex:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"4b20fce1ffacc7553afa3a6ac94e5966":"b8fa089cca83d2c9979e642b9a248882":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #41 -aes_decrypt_xex:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"caed5c738a8dc30155522864f9289e61":"89691c5dbc84bf8e2e1454148049648f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #42 -aes_decrypt_xex:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"63a88184186fa797d264a0528f39709f":"d7f7c8bccf8968b9f118bbead353b630":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #43 -aes_decrypt_xex:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"baa495ce8309a6c88ad855f97a774113":"8b6572487318167d1babedf6a8cef7b2":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #44 -aes_decrypt_xex:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"68c529586435374cfbadb17b9b895a4d":"531d3393772d49bbd0a1b6d839de0185":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #45 -aes_decrypt_xex:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"71f0519b7a6aee116d481f31b965fc2d":"926cfa1f568b03c914b5a8283920be26":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #46 -aes_decrypt_xex:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"e9c680838484714f38c59fdbfaf49a5e":"b790368e2ab0227e5c08adc4e7057baa":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #47 -aes_decrypt_xex:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"aca43e27d8cffc6d273a90f343c9acce":"c94c62fdac550cf62f3dbec89cb8614c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #48 -aes_decrypt_xex:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"8fd86c0489944d4350b2232958016668":"16938d35e74a7ab0caddde531cbbc333":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #49 -aes_decrypt_xex:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"3f069d4997a1dd7ea4215cf1d9568395":"35d16e1d15cdad0502e7ef58e86f4d4c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #50 -aes_decrypt_xex:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"b7972c5f6a488dce95eb46a855a105a5":"6af3152f9763e39a83b94fe960e04447":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #51 -aes_decrypt_xex:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"804795bc588aa048894a184c600ac75f":"d5a4d8ec68e53c0aac094b95b8add3c9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #52 -aes_decrypt_xex:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"4dcdabefbf99b4f494fa83b91f0e97a7":"638789a303154fb364e5168aa9340882":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #53 -aes_decrypt_xex:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"a4321472fca02d869432585a4380be30":"5ff7c0249be2b694ad82e68023974533":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #54 -aes_decrypt_xex:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"625438700a4d153811dc26f688b1f82e":"4462bc469e794fd74288f3f775c02cf9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #55 -aes_decrypt_xex:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"565fa6390a7a377b90330ba09391a7d6":"3f29bfa05616507792cedc91e27e4fbc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #56 -aes_decrypt_xex:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"7d180b8ae143617369239a606c693d1f":"4479885b32ed93a05bc973d925b30a71":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #57 -aes_decrypt_xex:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"e567f6d2727622278b9310e91ece0165":"5faa528556f79049118c00852e022d96":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #58 -aes_decrypt_xex:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"5ce1562f45da9dad248bb7ac2aabe2b4":"fa58ed4b5530ecb8adb5f4c119a9edda":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #59 -aes_decrypt_xex:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"9774ebd7b08cc87fdf70c9d4f746f2f4":"83f4639b4fa54f5f657c03fe4c00983e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #60 -aes_decrypt_xex:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"e72746c743f84e32eed81b8dd51b6fea":"9c085ebe5cd42b24889be07f59f761b1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #61 -aes_decrypt_xex:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"48210df8641e31039d06f0e7dc1ad97f":"0ccaac98e1c9609f406930617f1e35ec":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #62 -aes_decrypt_xex:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"944f66bb9cb9c0da59111875bd8a83ed":"1fb8a2d4996bacf34f62caf1402ced12":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #63 -aes_decrypt_xex:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"6b6295ca7b81d5216cc251ead46c70bb":"abcae54afcbb0b0ec75884b11a9901ff":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #64 -aes_decrypt_xex:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"09bea3cca20b8f9544e62430819d90cc":"c9fed3c29cf7c2a28463684f551c11cd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #65 -aes_decrypt_xex:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"ae58fbd41058bd60b546379c836ada28":"55ddb8bc2ba156bcd66483ab6a2cfe5c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #66 -aes_decrypt_xex:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"2c11e9973068abcff0b75cb1b0022521":"7d8858efdf678473d11389acee8ded16":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #67 -aes_decrypt_xex:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"6ffdbb7b11bc41a68bb43980b4d5045a":"cb1e8732f3a2dcd45f4d057409eb4d06":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #68 -aes_decrypt_xex:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"55bc2096219a930b9a12e2214c5147ef":"44729a7975c22a89c615d0f48bcbad63":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #69 -aes_decrypt_xex:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eb68e475bff2bdf3a151b07e38860d03":"eedc77726be43017fb49bc4031429e46":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #70 -aes_decrypt_xex:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"d4475da48f24ba759531bf30a5bcd430":"98900bbe2e1141b594c05c93bda68c50":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #71 -aes_decrypt_xex:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"d14d7b026273dff33b09e70db45d3140":"8c9c9231732b49baa07f994ac90cbb74":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #72 -aes_decrypt_xex:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"93f3952656b43f663e0228ed74cbab0f":"b438d11e4af51107a4212f4844d8c670":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #73 -aes_decrypt_xex:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"987d38afcfbc37b254ef41b6283813e5":"83eee45aba638bcf7126242177193563":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #74 -aes_decrypt_xex:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"bc0bbd16a21bafca60588e3f670fffb9":"e7e4dff4b36ee969fd6d80e8baec55c1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #75 -aes_decrypt_xex:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"60698b823beb2d9d083dbe2e7d1ad243":"c3990409706eb8a1adcfe3baea3b421a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #76 -aes_decrypt_xex:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"a3ed3b9052e763b74913cbdf1f71fafd":"47fe4c3759758ebec50f370d483ebbb8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #77 -aes_decrypt_xex:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5d8b27da95b073b93fb155edd2c88fea":"5c709d120204ee3e32a57b8ea278e584":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #78 -aes_decrypt_xex:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"b5458afa6268d1474a936ddf84b63b05":"fa81d0c1f617257b43a70136aeb55168":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #79 -aes_decrypt_xex:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"b0404586c6313ef77e24650fa48da131":"2becd50a3beb5ba41aefd89588413c49":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #80 -aes_decrypt_xex:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"61ebad87df8c35e459eb315e27bc47f3":"7cf6c02693cbb1f3fc825e4a5cdb7faf":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #81 -aes_decrypt_xex:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"f113016f74698d5f1e680788ddcb56d0":"0d59b40ba3d9174b58da3eb82ae30de3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #82 -aes_decrypt_xex:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"fd8f5fa162820585f77b250efbb50f1c":"4a88021a53af9389e3abc19ab6c229a1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #83 -aes_decrypt_xex:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"6551d6910ae9e2977f09bd2964d0fa2b":"a84dfd53492ec2e80bda1878929d2952":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #84 -aes_decrypt_xex:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"caf96f61fa32ef7c5df66103afac8495":"a601c169ee059b8e1d0dce77cf2862f3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #85 -aes_decrypt_xex:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"3518778706a0a0b1baac40dfd818161d":"85c93edc4ec4d33d6c4efd2558184025":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #86 -aes_decrypt_xex:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"6920c0c3a8e23bbeb85b52588abd97b6":"3f715273efe1954565669a208504a763":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #87 -aes_decrypt_xex:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"69cc1f1d1ccb57df6ade5302959b1746":"9dad8e385c806d90f88bfcbb5a7a9686":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #88 -aes_decrypt_xex:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"7030b6122c3229afc6d12d8eb2c29b99":"a593e87bca06f1ba529317a718883abc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #89 -aes_decrypt_xex:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"c9ac91095dbcea52d5fcb58b57871441":"89c0bb8f0fc63987cfd35c7292ddc50e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #90 -aes_decrypt_xex:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"ee286b71484a9d0556e1c042d8866d8f":"db8d019ab12c98765edb0a7ca2589248":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #91 -aes_decrypt_xex:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"fe89ccbb3997f475e47d55248288a324":"f8560d7995e848fd0afc518b6c7b6278":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #92 -aes_decrypt_xex:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"c3c7d49f3c42a84e283ecbd8b2be81d2":"bbfeeba2077e7d29c67daf70a1ef1ca3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #93 -aes_decrypt_xex:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"7a70fd4ded65cd2cfcf15ec38b2e879b":"0770f640b1013a31480c3250883b0bc7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #94 -aes_decrypt_xex:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"975ea366ab8ec3cd35fdda91dfb1afd6":"d161e08ecf9cf27324ffa84aadf16941":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #95 -aes_decrypt_xex:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"460c046e6e3b97e23565bce7b9224e97":"a138f2a16033e8c2245243da3adc1498":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #96 -aes_decrypt_xex:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"efccaaae45817cbc6125c62084c705ec":"6ab5f2be0fca76bcd895bf9d46de01c9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #97 -aes_decrypt_xex:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"b0238d6d1f37953e70d3dcf3cdd328a1":"70330558f8288b74e8768cde827137c8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #98 -aes_decrypt_xex:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"7ed0d25f0d1d1b7e62facfe36e468c5d":"a220ba8c184a68262b455e73c13e6ffc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #99 -aes_decrypt_xex:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"00e8406307b798d43fdff7772565d5f9":"66235974ce1e718c12f7b8fd729defe0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #100 -aes_decrypt_xex:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"ecc038125fdb267662a57dc9acc06439":"c333dcc0149fac9f23374f9023fe92d0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #101 -aes_decrypt_xex:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #102 -aes_decrypt_xex:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #103 -aes_decrypt_xex:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #104 -aes_decrypt_xex:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #105 -aes_decrypt_xex:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #106 -aes_decrypt_xex:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #107 -aes_decrypt_xex:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #108 -aes_decrypt_xex:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #109 -aes_decrypt_xex:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #110 -aes_decrypt_xex:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #111 -aes_decrypt_xex:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #112 -aes_decrypt_xex:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #113 -aes_decrypt_xex:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #114 -aes_decrypt_xex:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #115 -aes_decrypt_xex:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #116 -aes_decrypt_xex:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #117 -aes_decrypt_xex:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #118 -aes_decrypt_xex:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #119 -aes_decrypt_xex:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #120 -aes_decrypt_xex:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #121 -aes_decrypt_xex:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #122 -aes_decrypt_xex:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #123 -aes_decrypt_xex:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #124 -aes_decrypt_xex:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #125 -aes_decrypt_xex:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #126 -aes_decrypt_xex:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #127 -aes_decrypt_xex:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #128 -aes_decrypt_xex:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #129 -aes_decrypt_xex:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #130 -aes_decrypt_xex:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #131 -aes_decrypt_xex:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #132 -aes_decrypt_xex:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #133 -aes_decrypt_xex:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #134 -aes_decrypt_xex:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #135 -aes_decrypt_xex:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #136 -aes_decrypt_xex:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #137 -aes_decrypt_xex:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #138 -aes_decrypt_xex:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #139 -aes_decrypt_xex:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #140 -aes_decrypt_xex:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #141 -aes_decrypt_xex:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #142 -aes_decrypt_xex:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #143 -aes_decrypt_xex:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #144 -aes_decrypt_xex:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #145 -aes_decrypt_xex:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #146 -aes_decrypt_xex:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #147 -aes_decrypt_xex:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #148 -aes_decrypt_xex:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #149 -aes_decrypt_xex:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #150 -aes_decrypt_xex:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #151 -aes_decrypt_xex:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #152 -aes_decrypt_xex:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #153 -aes_decrypt_xex:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #154 -aes_decrypt_xex:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #155 -aes_decrypt_xex:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #156 -aes_decrypt_xex:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #157 -aes_decrypt_xex:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #158 -aes_decrypt_xex:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #159 -aes_decrypt_xex:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #160 -aes_decrypt_xex:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #161 -aes_decrypt_xex:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #162 -aes_decrypt_xex:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #163 -aes_decrypt_xex:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #164 -aes_decrypt_xex:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #165 -aes_decrypt_xex:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #166 -aes_decrypt_xex:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #167 -aes_decrypt_xex:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #168 -aes_decrypt_xex:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #169 -aes_decrypt_xex:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #170 -aes_decrypt_xex:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #171 -aes_decrypt_xex:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #172 -aes_decrypt_xex:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #173 -aes_decrypt_xex:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #174 -aes_decrypt_xex:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #175 -aes_decrypt_xex:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #176 -aes_decrypt_xex:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #177 -aes_decrypt_xex:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #178 -aes_decrypt_xex:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #179 -aes_decrypt_xex:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #180 -aes_decrypt_xex:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #181 -aes_decrypt_xex:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #182 -aes_decrypt_xex:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #183 -aes_decrypt_xex:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #184 -aes_decrypt_xex:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #185 -aes_decrypt_xex:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #186 -aes_decrypt_xex:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #187 -aes_decrypt_xex:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #188 -aes_decrypt_xex:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #189 -aes_decrypt_xex:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #190 -aes_decrypt_xex:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #191 -aes_decrypt_xex:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #192 -aes_decrypt_xex:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #193 -aes_decrypt_xex:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #194 -aes_decrypt_xex:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #195 -aes_decrypt_xex:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #196 -aes_decrypt_xex:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #197 -aes_decrypt_xex:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #198 -aes_decrypt_xex:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #199 -aes_decrypt_xex:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #200 -aes_decrypt_xex:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #201 -aes_decrypt_xex:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #202 -aes_decrypt_xex:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #203 -aes_decrypt_xex:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #204 -aes_decrypt_xex:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #205 -aes_decrypt_xex:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #206 -aes_decrypt_xex:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #207 -aes_decrypt_xex:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #208 -aes_decrypt_xex:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #209 -aes_decrypt_xex:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #210 -aes_decrypt_xex:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #211 -aes_decrypt_xex:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #212 -aes_decrypt_xex:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #213 -aes_decrypt_xex:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #214 -aes_decrypt_xex:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #215 -aes_decrypt_xex:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #216 -aes_decrypt_xex:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #217 -aes_decrypt_xex:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #218 -aes_decrypt_xex:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #219 -aes_decrypt_xex:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #220 -aes_decrypt_xex:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #221 -aes_decrypt_xex:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #222 -aes_decrypt_xex:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #223 -aes_decrypt_xex:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #224 -aes_decrypt_xex:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #225 -aes_decrypt_xex:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #226 -aes_decrypt_xex:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #227 -aes_decrypt_xex:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #228 -aes_decrypt_xex:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #229 -aes_decrypt_xex:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #230 -aes_decrypt_xex:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #231 -aes_decrypt_xex:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #232 -aes_decrypt_xex:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #233 -aes_decrypt_xex:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #234 -aes_decrypt_xex:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #235 -aes_decrypt_xex:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #236 -aes_decrypt_xex:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #237 -aes_decrypt_xex:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #238 -aes_decrypt_xex:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #239 -aes_decrypt_xex:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #240 -aes_decrypt_xex:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #241 -aes_decrypt_xex:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #242 -aes_decrypt_xex:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #243 -aes_decrypt_xex:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #244 -aes_decrypt_xex:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #245 -aes_decrypt_xex:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #246 -aes_decrypt_xex:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #247 -aes_decrypt_xex:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #248 -aes_decrypt_xex:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #249 -aes_decrypt_xex:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #250 -aes_decrypt_xex:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #251 -aes_decrypt_xex:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #252 -aes_decrypt_xex:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #253 -aes_decrypt_xex:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #254 -aes_decrypt_xex:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #255 -aes_decrypt_xex:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #256 -aes_decrypt_xex:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #257 -aes_decrypt_xex:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #258 -aes_decrypt_xex:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #259 -aes_decrypt_xex:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #260 -aes_decrypt_xex:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #261 -aes_decrypt_xex:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #262 -aes_decrypt_xex:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #263 -aes_decrypt_xex:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #264 -aes_decrypt_xex:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #265 -aes_decrypt_xex:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #266 -aes_decrypt_xex:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #267 -aes_decrypt_xex:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #268 -aes_decrypt_xex:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #269 -aes_decrypt_xex:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #270 -aes_decrypt_xex:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #271 -aes_decrypt_xex:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #272 -aes_decrypt_xex:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #273 -aes_decrypt_xex:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #274 -aes_decrypt_xex:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #275 -aes_decrypt_xex:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #276 -aes_decrypt_xex:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #277 -aes_decrypt_xex:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #278 -aes_decrypt_xex:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #279 -aes_decrypt_xex:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #280 -aes_decrypt_xex:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #281 -aes_decrypt_xex:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #282 -aes_decrypt_xex:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #283 -aes_decrypt_xex:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #284 -aes_decrypt_xex:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #285 -aes_decrypt_xex:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #286 -aes_decrypt_xex:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #287 -aes_decrypt_xex:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #288 -aes_decrypt_xex:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #289 -aes_decrypt_xex:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #290 -aes_decrypt_xex:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #291 -aes_decrypt_xex:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #292 -aes_decrypt_xex:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #293 -aes_decrypt_xex:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #294 -aes_decrypt_xex:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #295 -aes_decrypt_xex:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #296 -aes_decrypt_xex:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #297 -aes_decrypt_xex:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #298 -aes_decrypt_xex:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #299 -aes_decrypt_xex:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":0 - -AES-128-XEX Decrypt NIST XTSTestVectors #300 -aes_decrypt_xex:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #1 -aes_encrypt_xex:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #2 -aes_encrypt_xex:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #3 -aes_encrypt_xex:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #4 -aes_encrypt_xex:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #5 -aes_encrypt_xex:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #6 -aes_encrypt_xex:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #7 -aes_encrypt_xex:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #8 -aes_encrypt_xex:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #9 -aes_encrypt_xex:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #10 -aes_encrypt_xex:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #11 -aes_encrypt_xex:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #12 -aes_encrypt_xex:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #13 -aes_encrypt_xex:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #14 -aes_encrypt_xex:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #15 -aes_encrypt_xex:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #16 -aes_encrypt_xex:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #17 -aes_encrypt_xex:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #18 -aes_encrypt_xex:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #19 -aes_encrypt_xex:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #20 -aes_encrypt_xex:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #21 -aes_encrypt_xex:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #22 -aes_encrypt_xex:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #23 -aes_encrypt_xex:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #24 -aes_encrypt_xex:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #25 -aes_encrypt_xex:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #26 -aes_encrypt_xex:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #27 -aes_encrypt_xex:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #28 -aes_encrypt_xex:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #29 -aes_encrypt_xex:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #30 -aes_encrypt_xex:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #31 -aes_encrypt_xex:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #32 -aes_encrypt_xex:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #33 -aes_encrypt_xex:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #34 -aes_encrypt_xex:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #35 -aes_encrypt_xex:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #36 -aes_encrypt_xex:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #37 -aes_encrypt_xex:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #38 -aes_encrypt_xex:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #39 -aes_encrypt_xex:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #40 -aes_encrypt_xex:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #41 -aes_encrypt_xex:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #42 -aes_encrypt_xex:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #43 -aes_encrypt_xex:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #44 -aes_encrypt_xex:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #45 -aes_encrypt_xex:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #46 -aes_encrypt_xex:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #47 -aes_encrypt_xex:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #48 -aes_encrypt_xex:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #49 -aes_encrypt_xex:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #50 -aes_encrypt_xex:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #51 -aes_encrypt_xex:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #52 -aes_encrypt_xex:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #53 -aes_encrypt_xex:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #54 -aes_encrypt_xex:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #55 -aes_encrypt_xex:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #56 -aes_encrypt_xex:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #57 -aes_encrypt_xex:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #58 -aes_encrypt_xex:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #59 -aes_encrypt_xex:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #60 -aes_encrypt_xex:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #61 -aes_encrypt_xex:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #62 -aes_encrypt_xex:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #63 -aes_encrypt_xex:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #64 -aes_encrypt_xex:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #65 -aes_encrypt_xex:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #66 -aes_encrypt_xex:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #67 -aes_encrypt_xex:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #68 -aes_encrypt_xex:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #69 -aes_encrypt_xex:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #70 -aes_encrypt_xex:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #71 -aes_encrypt_xex:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #72 -aes_encrypt_xex:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #73 -aes_encrypt_xex:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #74 -aes_encrypt_xex:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #75 -aes_encrypt_xex:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #76 -aes_encrypt_xex:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #77 -aes_encrypt_xex:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #78 -aes_encrypt_xex:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #79 -aes_encrypt_xex:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #80 -aes_encrypt_xex:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #81 -aes_encrypt_xex:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #82 -aes_encrypt_xex:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #83 -aes_encrypt_xex:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #84 -aes_encrypt_xex:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #85 -aes_encrypt_xex:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #86 -aes_encrypt_xex:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #87 -aes_encrypt_xex:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #88 -aes_encrypt_xex:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #89 -aes_encrypt_xex:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #90 -aes_encrypt_xex:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #91 -aes_encrypt_xex:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #92 -aes_encrypt_xex:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #93 -aes_encrypt_xex:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #94 -aes_encrypt_xex:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #95 -aes_encrypt_xex:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #96 -aes_encrypt_xex:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #97 -aes_encrypt_xex:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #98 -aes_encrypt_xex:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #99 -aes_encrypt_xex:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #100 -aes_encrypt_xex:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #101 -aes_encrypt_xex:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #102 -aes_encrypt_xex:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #103 -aes_encrypt_xex:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #104 -aes_encrypt_xex:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #105 -aes_encrypt_xex:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #106 -aes_encrypt_xex:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #107 -aes_encrypt_xex:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #108 -aes_encrypt_xex:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #109 -aes_encrypt_xex:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #110 -aes_encrypt_xex:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #111 -aes_encrypt_xex:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #112 -aes_encrypt_xex:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #113 -aes_encrypt_xex:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #114 -aes_encrypt_xex:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #115 -aes_encrypt_xex:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #116 -aes_encrypt_xex:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #117 -aes_encrypt_xex:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #118 -aes_encrypt_xex:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #119 -aes_encrypt_xex:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #120 -aes_encrypt_xex:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #121 -aes_encrypt_xex:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #122 -aes_encrypt_xex:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #123 -aes_encrypt_xex:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #124 -aes_encrypt_xex:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #125 -aes_encrypt_xex:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #126 -aes_encrypt_xex:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #127 -aes_encrypt_xex:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #128 -aes_encrypt_xex:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #129 -aes_encrypt_xex:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #130 -aes_encrypt_xex:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #131 -aes_encrypt_xex:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #132 -aes_encrypt_xex:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #133 -aes_encrypt_xex:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #134 -aes_encrypt_xex:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #135 -aes_encrypt_xex:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #136 -aes_encrypt_xex:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #137 -aes_encrypt_xex:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #138 -aes_encrypt_xex:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #139 -aes_encrypt_xex:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #140 -aes_encrypt_xex:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #141 -aes_encrypt_xex:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #142 -aes_encrypt_xex:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #143 -aes_encrypt_xex:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #144 -aes_encrypt_xex:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #145 -aes_encrypt_xex:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #146 -aes_encrypt_xex:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #147 -aes_encrypt_xex:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #148 -aes_encrypt_xex:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #149 -aes_encrypt_xex:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #150 -aes_encrypt_xex:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #151 -aes_encrypt_xex:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #152 -aes_encrypt_xex:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #153 -aes_encrypt_xex:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #154 -aes_encrypt_xex:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #155 -aes_encrypt_xex:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #156 -aes_encrypt_xex:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #157 -aes_encrypt_xex:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #158 -aes_encrypt_xex:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #159 -aes_encrypt_xex:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #160 -aes_encrypt_xex:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #161 -aes_encrypt_xex:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #162 -aes_encrypt_xex:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #163 -aes_encrypt_xex:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #164 -aes_encrypt_xex:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #165 -aes_encrypt_xex:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #166 -aes_encrypt_xex:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #167 -aes_encrypt_xex:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #168 -aes_encrypt_xex:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #169 -aes_encrypt_xex:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #170 -aes_encrypt_xex:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #171 -aes_encrypt_xex:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #172 -aes_encrypt_xex:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #173 -aes_encrypt_xex:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #174 -aes_encrypt_xex:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #175 -aes_encrypt_xex:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #176 -aes_encrypt_xex:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #177 -aes_encrypt_xex:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #178 -aes_encrypt_xex:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #179 -aes_encrypt_xex:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #180 -aes_encrypt_xex:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #181 -aes_encrypt_xex:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #182 -aes_encrypt_xex:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #183 -aes_encrypt_xex:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #184 -aes_encrypt_xex:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #185 -aes_encrypt_xex:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #186 -aes_encrypt_xex:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #187 -aes_encrypt_xex:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #188 -aes_encrypt_xex:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #189 -aes_encrypt_xex:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #190 -aes_encrypt_xex:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #191 -aes_encrypt_xex:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #192 -aes_encrypt_xex:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #193 -aes_encrypt_xex:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #194 -aes_encrypt_xex:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #195 -aes_encrypt_xex:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #196 -aes_encrypt_xex:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #197 -aes_encrypt_xex:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #198 -aes_encrypt_xex:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #199 -aes_encrypt_xex:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #200 -aes_encrypt_xex:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #201 -aes_encrypt_xex:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #202 -aes_encrypt_xex:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #203 -aes_encrypt_xex:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #204 -aes_encrypt_xex:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #205 -aes_encrypt_xex:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #206 -aes_encrypt_xex:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #207 -aes_encrypt_xex:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #208 -aes_encrypt_xex:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #209 -aes_encrypt_xex:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #210 -aes_encrypt_xex:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #211 -aes_encrypt_xex:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #212 -aes_encrypt_xex:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #213 -aes_encrypt_xex:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #214 -aes_encrypt_xex:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #215 -aes_encrypt_xex:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #216 -aes_encrypt_xex:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #217 -aes_encrypt_xex:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #218 -aes_encrypt_xex:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #219 -aes_encrypt_xex:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #220 -aes_encrypt_xex:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #221 -aes_encrypt_xex:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #222 -aes_encrypt_xex:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #223 -aes_encrypt_xex:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #224 -aes_encrypt_xex:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #225 -aes_encrypt_xex:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #226 -aes_encrypt_xex:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #227 -aes_encrypt_xex:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #228 -aes_encrypt_xex:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #229 -aes_encrypt_xex:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #230 -aes_encrypt_xex:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #231 -aes_encrypt_xex:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #232 -aes_encrypt_xex:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #233 -aes_encrypt_xex:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #234 -aes_encrypt_xex:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #235 -aes_encrypt_xex:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #236 -aes_encrypt_xex:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #237 -aes_encrypt_xex:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #238 -aes_encrypt_xex:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #239 -aes_encrypt_xex:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #240 -aes_encrypt_xex:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #241 -aes_encrypt_xex:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #242 -aes_encrypt_xex:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #243 -aes_encrypt_xex:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #244 -aes_encrypt_xex:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #245 -aes_encrypt_xex:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #246 -aes_encrypt_xex:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #247 -aes_encrypt_xex:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #248 -aes_encrypt_xex:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #249 -aes_encrypt_xex:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #250 -aes_encrypt_xex:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #251 -aes_encrypt_xex:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #252 -aes_encrypt_xex:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #253 -aes_encrypt_xex:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #254 -aes_encrypt_xex:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #255 -aes_encrypt_xex:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #256 -aes_encrypt_xex:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #257 -aes_encrypt_xex:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #258 -aes_encrypt_xex:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #259 -aes_encrypt_xex:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #260 -aes_encrypt_xex:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #261 -aes_encrypt_xex:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #262 -aes_encrypt_xex:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #263 -aes_encrypt_xex:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #264 -aes_encrypt_xex:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #265 -aes_encrypt_xex:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #266 -aes_encrypt_xex:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #267 -aes_encrypt_xex:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #268 -aes_encrypt_xex:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #269 -aes_encrypt_xex:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #270 -aes_encrypt_xex:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #271 -aes_encrypt_xex:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #272 -aes_encrypt_xex:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #273 -aes_encrypt_xex:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #274 -aes_encrypt_xex:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #275 -aes_encrypt_xex:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #276 -aes_encrypt_xex:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #277 -aes_encrypt_xex:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #278 -aes_encrypt_xex:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #279 -aes_encrypt_xex:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #280 -aes_encrypt_xex:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #281 -aes_encrypt_xex:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #282 -aes_encrypt_xex:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #283 -aes_encrypt_xex:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #284 -aes_encrypt_xex:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #285 -aes_encrypt_xex:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #286 -aes_encrypt_xex:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #287 -aes_encrypt_xex:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #288 -aes_encrypt_xex:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #289 -aes_encrypt_xex:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #290 -aes_encrypt_xex:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #291 -aes_encrypt_xex:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #292 -aes_encrypt_xex:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #293 -aes_encrypt_xex:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #294 -aes_encrypt_xex:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #295 -aes_encrypt_xex:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #296 -aes_encrypt_xex:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #297 -aes_encrypt_xex:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #298 -aes_encrypt_xex:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #299 -aes_encrypt_xex:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3":0 - -AES-256-XEX Encrypt NIST XTSTestVectors #300 -aes_encrypt_xex:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #1 -aes_decrypt_xex:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #2 -aes_decrypt_xex:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #3 -aes_decrypt_xex:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #4 -aes_decrypt_xex:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #5 -aes_decrypt_xex:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #6 -aes_decrypt_xex:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #7 -aes_decrypt_xex:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #8 -aes_decrypt_xex:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #9 -aes_decrypt_xex:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #10 -aes_decrypt_xex:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #11 -aes_decrypt_xex:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #12 -aes_decrypt_xex:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #13 -aes_decrypt_xex:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #14 -aes_decrypt_xex:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #15 -aes_decrypt_xex:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #16 -aes_decrypt_xex:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #17 -aes_decrypt_xex:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #18 -aes_decrypt_xex:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #19 -aes_decrypt_xex:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #20 -aes_decrypt_xex:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #21 -aes_decrypt_xex:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #22 -aes_decrypt_xex:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #23 -aes_decrypt_xex:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #24 -aes_decrypt_xex:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #25 -aes_decrypt_xex:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #26 -aes_decrypt_xex:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #27 -aes_decrypt_xex:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #28 -aes_decrypt_xex:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #29 -aes_decrypt_xex:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #30 -aes_decrypt_xex:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #31 -aes_decrypt_xex:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #32 -aes_decrypt_xex:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #33 -aes_decrypt_xex:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #34 -aes_decrypt_xex:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #35 -aes_decrypt_xex:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #36 -aes_decrypt_xex:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #37 -aes_decrypt_xex:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #38 -aes_decrypt_xex:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #39 -aes_decrypt_xex:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #40 -aes_decrypt_xex:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #41 -aes_decrypt_xex:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #42 -aes_decrypt_xex:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #43 -aes_decrypt_xex:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #44 -aes_decrypt_xex:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #45 -aes_decrypt_xex:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #46 -aes_decrypt_xex:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #47 -aes_decrypt_xex:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #48 -aes_decrypt_xex:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #49 -aes_decrypt_xex:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #50 -aes_decrypt_xex:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #51 -aes_decrypt_xex:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #52 -aes_decrypt_xex:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #53 -aes_decrypt_xex:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #54 -aes_decrypt_xex:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #55 -aes_decrypt_xex:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #56 -aes_decrypt_xex:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #57 -aes_decrypt_xex:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #58 -aes_decrypt_xex:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #59 -aes_decrypt_xex:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #60 -aes_decrypt_xex:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #61 -aes_decrypt_xex:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #62 -aes_decrypt_xex:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #63 -aes_decrypt_xex:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #64 -aes_decrypt_xex:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #65 -aes_decrypt_xex:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #66 -aes_decrypt_xex:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #67 -aes_decrypt_xex:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #68 -aes_decrypt_xex:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #69 -aes_decrypt_xex:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #70 -aes_decrypt_xex:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #71 -aes_decrypt_xex:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #72 -aes_decrypt_xex:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #73 -aes_decrypt_xex:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #74 -aes_decrypt_xex:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #75 -aes_decrypt_xex:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #76 -aes_decrypt_xex:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #77 -aes_decrypt_xex:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #78 -aes_decrypt_xex:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #79 -aes_decrypt_xex:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #80 -aes_decrypt_xex:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #81 -aes_decrypt_xex:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #82 -aes_decrypt_xex:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #83 -aes_decrypt_xex:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #84 -aes_decrypt_xex:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #85 -aes_decrypt_xex:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #86 -aes_decrypt_xex:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #87 -aes_decrypt_xex:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #88 -aes_decrypt_xex:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #89 -aes_decrypt_xex:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #90 -aes_decrypt_xex:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #91 -aes_decrypt_xex:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #92 -aes_decrypt_xex:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #93 -aes_decrypt_xex:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #94 -aes_decrypt_xex:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #95 -aes_decrypt_xex:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #96 -aes_decrypt_xex:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #97 -aes_decrypt_xex:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #98 -aes_decrypt_xex:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #99 -aes_decrypt_xex:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #100 -aes_decrypt_xex:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #101 -aes_decrypt_xex:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #102 -aes_decrypt_xex:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #103 -aes_decrypt_xex:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #104 -aes_decrypt_xex:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #105 -aes_decrypt_xex:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #106 -aes_decrypt_xex:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #107 -aes_decrypt_xex:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #108 -aes_decrypt_xex:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #109 -aes_decrypt_xex:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #110 -aes_decrypt_xex:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #111 -aes_decrypt_xex:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #112 -aes_decrypt_xex:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #113 -aes_decrypt_xex:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #114 -aes_decrypt_xex:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #115 -aes_decrypt_xex:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #116 -aes_decrypt_xex:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #117 -aes_decrypt_xex:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #118 -aes_decrypt_xex:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #119 -aes_decrypt_xex:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #120 -aes_decrypt_xex:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #121 -aes_decrypt_xex:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #122 -aes_decrypt_xex:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #123 -aes_decrypt_xex:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #124 -aes_decrypt_xex:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #125 -aes_decrypt_xex:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #126 -aes_decrypt_xex:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #127 -aes_decrypt_xex:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #128 -aes_decrypt_xex:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #129 -aes_decrypt_xex:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #130 -aes_decrypt_xex:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #131 -aes_decrypt_xex:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #132 -aes_decrypt_xex:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #133 -aes_decrypt_xex:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #134 -aes_decrypt_xex:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #135 -aes_decrypt_xex:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #136 -aes_decrypt_xex:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #137 -aes_decrypt_xex:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #138 -aes_decrypt_xex:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #139 -aes_decrypt_xex:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #140 -aes_decrypt_xex:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #141 -aes_decrypt_xex:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #142 -aes_decrypt_xex:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #143 -aes_decrypt_xex:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #144 -aes_decrypt_xex:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #145 -aes_decrypt_xex:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #146 -aes_decrypt_xex:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #147 -aes_decrypt_xex:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #148 -aes_decrypt_xex:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #149 -aes_decrypt_xex:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #150 -aes_decrypt_xex:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #151 -aes_decrypt_xex:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #152 -aes_decrypt_xex:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #153 -aes_decrypt_xex:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #154 -aes_decrypt_xex:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #155 -aes_decrypt_xex:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #156 -aes_decrypt_xex:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #157 -aes_decrypt_xex:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #158 -aes_decrypt_xex:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #159 -aes_decrypt_xex:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #160 -aes_decrypt_xex:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #161 -aes_decrypt_xex:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #162 -aes_decrypt_xex:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #163 -aes_decrypt_xex:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #164 -aes_decrypt_xex:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #165 -aes_decrypt_xex:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #166 -aes_decrypt_xex:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #167 -aes_decrypt_xex:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #168 -aes_decrypt_xex:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #169 -aes_decrypt_xex:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #170 -aes_decrypt_xex:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #171 -aes_decrypt_xex:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #172 -aes_decrypt_xex:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #173 -aes_decrypt_xex:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #174 -aes_decrypt_xex:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #175 -aes_decrypt_xex:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #176 -aes_decrypt_xex:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #177 -aes_decrypt_xex:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #178 -aes_decrypt_xex:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #179 -aes_decrypt_xex:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #180 -aes_decrypt_xex:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #181 -aes_decrypt_xex:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #182 -aes_decrypt_xex:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #183 -aes_decrypt_xex:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #184 -aes_decrypt_xex:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #185 -aes_decrypt_xex:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #186 -aes_decrypt_xex:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #187 -aes_decrypt_xex:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #188 -aes_decrypt_xex:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #189 -aes_decrypt_xex:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #190 -aes_decrypt_xex:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #191 -aes_decrypt_xex:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #192 -aes_decrypt_xex:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #193 -aes_decrypt_xex:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #194 -aes_decrypt_xex:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #195 -aes_decrypt_xex:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #196 -aes_decrypt_xex:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #197 -aes_decrypt_xex:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #198 -aes_decrypt_xex:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #199 -aes_decrypt_xex:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #200 -aes_decrypt_xex:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #201 -aes_decrypt_xex:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #202 -aes_decrypt_xex:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #203 -aes_decrypt_xex:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #204 -aes_decrypt_xex:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #205 -aes_decrypt_xex:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #206 -aes_decrypt_xex:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #207 -aes_decrypt_xex:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #208 -aes_decrypt_xex:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #209 -aes_decrypt_xex:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #210 -aes_decrypt_xex:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #211 -aes_decrypt_xex:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #212 -aes_decrypt_xex:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #213 -aes_decrypt_xex:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #214 -aes_decrypt_xex:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #215 -aes_decrypt_xex:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #216 -aes_decrypt_xex:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #217 -aes_decrypt_xex:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #218 -aes_decrypt_xex:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #219 -aes_decrypt_xex:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #220 -aes_decrypt_xex:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #221 -aes_decrypt_xex:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #222 -aes_decrypt_xex:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #223 -aes_decrypt_xex:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #224 -aes_decrypt_xex:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #225 -aes_decrypt_xex:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #226 -aes_decrypt_xex:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #227 -aes_decrypt_xex:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #228 -aes_decrypt_xex:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #229 -aes_decrypt_xex:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #230 -aes_decrypt_xex:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #231 -aes_decrypt_xex:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #232 -aes_decrypt_xex:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #233 -aes_decrypt_xex:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #234 -aes_decrypt_xex:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #235 -aes_decrypt_xex:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #236 -aes_decrypt_xex:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #237 -aes_decrypt_xex:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #238 -aes_decrypt_xex:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #239 -aes_decrypt_xex:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #240 -aes_decrypt_xex:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #241 -aes_decrypt_xex:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #242 -aes_decrypt_xex:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #243 -aes_decrypt_xex:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #244 -aes_decrypt_xex:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #245 -aes_decrypt_xex:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #246 -aes_decrypt_xex:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #247 -aes_decrypt_xex:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #248 -aes_decrypt_xex:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #249 -aes_decrypt_xex:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #250 -aes_decrypt_xex:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #251 -aes_decrypt_xex:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #252 -aes_decrypt_xex:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #253 -aes_decrypt_xex:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #254 -aes_decrypt_xex:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #255 -aes_decrypt_xex:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #256 -aes_decrypt_xex:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #257 -aes_decrypt_xex:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #258 -aes_decrypt_xex:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #259 -aes_decrypt_xex:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #260 -aes_decrypt_xex:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #261 -aes_decrypt_xex:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #262 -aes_decrypt_xex:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #263 -aes_decrypt_xex:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #264 -aes_decrypt_xex:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #265 -aes_decrypt_xex:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #266 -aes_decrypt_xex:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #267 -aes_decrypt_xex:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #268 -aes_decrypt_xex:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #269 -aes_decrypt_xex:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #270 -aes_decrypt_xex:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #271 -aes_decrypt_xex:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #272 -aes_decrypt_xex:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #273 -aes_decrypt_xex:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #274 -aes_decrypt_xex:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #275 -aes_decrypt_xex:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #276 -aes_decrypt_xex:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #277 -aes_decrypt_xex:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #278 -aes_decrypt_xex:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #279 -aes_decrypt_xex:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #280 -aes_decrypt_xex:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #281 -aes_decrypt_xex:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #282 -aes_decrypt_xex:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #283 -aes_decrypt_xex:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #284 -aes_decrypt_xex:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #285 -aes_decrypt_xex:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #286 -aes_decrypt_xex:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #287 -aes_decrypt_xex:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #288 -aes_decrypt_xex:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #289 -aes_decrypt_xex:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #290 -aes_decrypt_xex:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #291 -aes_decrypt_xex:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #292 -aes_decrypt_xex:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #293 -aes_decrypt_xex:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #294 -aes_decrypt_xex:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #295 -aes_decrypt_xex:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #296 -aes_decrypt_xex:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #297 -aes_decrypt_xex:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #298 -aes_decrypt_xex:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #299 -aes_decrypt_xex:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":0 - -AES-256-XEX Decrypt NIST XTSTestVectors #300 -aes_decrypt_xex:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":0 - From e22ba80e7b2accf0025dd43458496a75cdae013a Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 8 May 2018 17:23:40 +0100 Subject: [PATCH 0439/1100] Add XTS test suites to the Makefile --- tests/Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/Makefile b/tests/Makefile index caacb12c5f..d65cd93a25 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -47,6 +47,7 @@ endif APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_aes.cfb$(EXEXT) test_suite_aes.ofb$(EXEXT) \ + test_suite_aes.xts$(EXEXT) \ test_suite_aes.rest$(EXEXT) \ test_suite_arc4$(EXEXT) test_suite_asn1write$(EXEXT) \ test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ @@ -120,6 +121,10 @@ test_suite_aes.rest.c : suites/test_suite_aes.function suites/test_suite_aes.res echo " Gen $@" perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.rest +test_suite_aes.xts.c : suites/test_suite_aes.function suites/test_suite_aes.xts.data scripts/generate_code.pl suites/helpers.function suites/main_test.function + echo " Gen $@" + perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.xts + test_suite_cipher.aes.c : suites/test_suite_cipher.function suites/test_suite_cipher.aes.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aes @@ -228,6 +233,10 @@ test_suite_aes.rest$(EXEXT): test_suite_aes.rest.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_aes.xts$(EXEXT): test_suite_aes.xts.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_arc4$(EXEXT): test_suite_arc4.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ From 9366feb504d8af1992f72532d060bc949cb7fc52 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 29 May 2018 18:55:17 +0100 Subject: [PATCH 0440/1100] aes: xts: Add new context structure Add a new context structure for XTS. Adjust the API for XTS to use the new context structure, including tests suites and the benchmark program. Update Doxgen documentation accordingly. --- include/mbedtls/aes.h | 118 ++++++++++++++++++++++----- library/aes.c | 109 ++++++++++++++++++++++--- programs/test/benchmark.c | 18 ++-- tests/suites/test_suite_aes.function | 26 +++--- 4 files changed, 214 insertions(+), 57 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 33667d67a4..e166e9c6ea 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -89,6 +89,19 @@ typedef struct } mbedtls_aes_context; +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief The AES XTS context-type definition. + */ +typedef struct +{ + mbedtls_aes_context crypt; /*!< The AES context to use for AES block + encryption or decryption. */ + mbedtls_aes_context tweak; /*!< The AES context used for tweak + computation. */ +} mbedtls_aes_xts_context; +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #else /* MBEDTLS_AES_ALT */ #include "aes_alt.h" #endif /* MBEDTLS_AES_ALT */ @@ -110,6 +123,25 @@ void mbedtls_aes_init( mbedtls_aes_context *ctx ); */ void mbedtls_aes_free( mbedtls_aes_context *ctx ); +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief This function initializes the specified AES XTS context. + * + * It must be the first API called before using + * the context. + * + * \param ctx The AES XTS context to initialize. + */ +void mbedtls_aes_xts_init( mbedtls_aes_xts_context *ctx ); + +/** + * \brief This function releases and clears the specified AES XTS context. + * + * \param ctx The AES XTS context to clear. + */ +void mbedtls_aes_xts_free( mbedtls_aes_xts_context *ctx ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + /** * \brief This function sets the encryption key. * @@ -142,6 +174,44 @@ int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits ); +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief This function prepares an XTS context for encryption and + * sets the encryption key. + * + * \param ctx The AES XTS context to which the key should be bound. + * \param key The encryption key. This is comprised of the XTS key1 + * concatenated with the XTS key2. + * \param keybits The size of \p key passed in bits. Valid options are: + *
    • 256 bits (each of key1 and key2 is a 128-bit key)
    • + *
    • 512 bits (each of key1 and key2 is a 256-bit key)
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function prepares an XTS context for decryption and + * sets the decryption key. + * + * \param ctx The AES XTS context to which the key should be bound. + * \param key The decryption key. This is comprised of the XTS key1 + * concatenated with the XTS key2. + * \param keybits The size of \p key passed in bits. Valid options are: + *
    • 256 bits (each of key1 and key2 is a 128-bit key)
    • + *
    • 512 bits (each of key1 and key2 is a 256-bit key)
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + /** * \brief This function performs an AES single-block encryption or * decryption operation. @@ -215,30 +285,38 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, #if defined(MBEDTLS_CIPHER_MODE_XTS) /** - * \brief AES-XTS buffer encryption/decryption - * Length should be greater or equal than the block size (16 - * bytes, 128 bits) + * \brief This function performs an AES-XTS encryption or decryption + * operation for an entire XTS data unit. * - * Warning: The bits_length parameter must given be in bits, not bytes like the - * other modes + * AES-XTS encrypts or decrypts blocks based on their location as + * defined by a data unit number. The data unit number must be + * provided by \p iv. * - * \param crypt_ctx AES context for encrypting data - * \param tweak_ctx AES context for xor-ing with data - * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT - * \param bits_length length of the input data (in bits) - * \param iv initialization vector - * \param input buffer holding the input data - * \param output buffer holding the output data + * \param ctx The AES XTS context to use for AES XTS operations. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param bits_length The length of a data unit in bits. + * \param iv The address of the data unit encoded as an array of 16 + * bytes in little-endian format. For disk encryption, this + * is typically the index of the block device sector that + * contains the data. + * \param input The buffer holding the input data (which is an entire + * data unit). This function reads \p length bytes from \p + * input. + * \param output The buffer holding the output data (which is an entire + * data unit). This function writes \p length bytes to \p + * output. * - * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH if \p length is + * smaller than an AES block in size (16 bytes). */ -int mbedtls_aes_crypt_xts( mbedtls_aes_context *crypt_ctx, - mbedtls_aes_context *tweak_ctx, - int mode, - size_t bits_length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ); +int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, + int mode, + size_t bits_length, + const unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_XTS */ #if defined(MBEDTLS_CIPHER_MODE_CFB) diff --git a/library/aes.c b/library/aes.c index 9e7b24853c..ed260a99b0 100644 --- a/library/aes.c +++ b/library/aes.c @@ -521,6 +521,20 @@ void mbedtls_aes_free( mbedtls_aes_context *ctx ) mbedtls_platform_zeroize( ctx, sizeof( mbedtls_aes_context ) ); } +#if defined(MBEDTLS_CIPHER_MODE_XTS) +void mbedtls_aes_xts_init( mbedtls_aes_xts_context *ctx ) +{ + mbedtls_aes_init( &ctx->crypt ); + mbedtls_aes_init( &ctx->tweak ); +} + +void mbedtls_aes_xts_free( mbedtls_aes_xts_context *ctx ) +{ + mbedtls_aes_free( &ctx->crypt ); + mbedtls_aes_free( &ctx->tweak ); +} +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + /* * AES key schedule (encryption) */ @@ -702,6 +716,78 @@ exit: return( ret ); } + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +static int mbedtls_aes_xts_decode_keys( const unsigned char *key, + unsigned int keybits, + const unsigned char **key1, + unsigned int *key1bits, + const unsigned char **key2, + unsigned int *key2bits ) +{ + const unsigned int half_keybits = keybits / 2; + const unsigned int half_keybytes = half_keybits / 8; + + switch( keybits ) + { + case 256: break; + case 512: break; + default : return( MBEDTLS_ERR_AES_INVALID_KEY_LENGTH ); + } + + *key1bits = half_keybits; + *key2bits = half_keybits; + *key1 = &key[0]; + *key2 = &key[half_keybytes]; + + return 0; +} + +int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits) +{ + int ret; + const unsigned char *key1, *key2; + unsigned int key1bits, key2bits; + + ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits, + &key2, &key2bits ); + if( ret != 0 ) + return( ret ); + + /* Set the tweak key. Always set tweak key for the encryption mode. */ + ret = mbedtls_aes_setkey_enc( &ctx->tweak, key2, key2bits ); + if( ret != 0 ) + return( ret ); + + /* Set crypt key for encryption. */ + return mbedtls_aes_setkey_enc( &ctx->crypt, key1, key1bits ); +} + +int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits) +{ + int ret; + const unsigned char *key1, *key2; + unsigned int key1bits, key2bits; + + ret = mbedtls_aes_xts_decode_keys( key, keybits, &key1, &key1bits, + &key2, &key2bits ); + if( ret != 0 ) + return( ret ); + + /* Set the tweak key. Always set tweak key for encryption. */ + ret = mbedtls_aes_setkey_enc( &ctx->tweak, key2, key2bits ); + if( ret != 0 ) + return( ret ); + + /* Set crypt key for decryption. */ + return mbedtls_aes_setkey_dec( &ctx->crypt, key1, key1bits ); +} +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #endif /* !MBEDTLS_AES_SETKEY_DEC_ALT */ #define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \ @@ -1042,13 +1128,12 @@ static void mbedtls_gf128mul_x_ble( unsigned char r[16], /* * AES-XTS buffer encryption/decryption */ -int mbedtls_aes_crypt_xts( mbedtls_aes_context *crypt_ctx, - mbedtls_aes_context *tweak_ctx, - int mode, - size_t bits_length, - unsigned char iv[16], - const unsigned char *input, - unsigned char *output ) +int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, + int mode, + size_t bits_length, + const unsigned char iv[16], + const unsigned char *input, + unsigned char *output ) { union xts_buf128 { uint8_t u8[16]; @@ -1075,7 +1160,7 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_context *crypt_ctx, return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); - mbedtls_aes_crypt_ecb( tweak_ctx, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); + mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); if( mode == MBEDTLS_AES_DECRYPT && remn ) { @@ -1096,7 +1181,7 @@ first: scratch.u64[1] = (uint64_t)( inbuf->u64[1] ^ t_buf.u64[1] ); /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, outbuf->u8 ); + mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, outbuf->u8 ); /* C <- T xor CC */ outbuf->u64[0] = (uint64_t)( outbuf->u64[0] ^ t_buf.u64[0] ); @@ -1127,7 +1212,7 @@ first: scratch.u64[1] = (uint64_t)( cts_scratch.u64[1] ^ t_buf.u64[1] ); /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); /* C <- T xor CC */ outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); @@ -1148,7 +1233,7 @@ decrypt_only_one_full_block: scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ t_buf.u64[1] ); /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); /* C <- T xor CC */ cts_scratch.u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); @@ -1165,7 +1250,7 @@ decrypt_only_one_full_block: scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ cts_t_buf.u64[1] ); /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( crypt_ctx, mode, scratch.u8, scratch.u8 ); + mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); /* C <- T xor CC */ outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ cts_t_buf.u64[0] ); diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 47d36ff808..ef83dc1d8c 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -432,23 +432,23 @@ int main( int argc, char *argv[] ) if( todo.aes_xts ) { int keysize; - mbedtls_aes_context crypt_ctx, tweak_ctx; - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); - for( keysize = 128; keysize <= 256; keysize += 64 ) + mbedtls_aes_xts_context ctx; + + mbedtls_aes_xts_init( &ctx ); + for( keysize = 128; keysize <= 256; keysize += 128 ) { mbedtls_snprintf( title, sizeof( title ), "AES-XTS-%d", keysize ); memset( buf, 0, sizeof( buf ) ); memset( tmp, 0, sizeof( tmp ) ); - mbedtls_aes_setkey_enc( &crypt_ctx, tmp, keysize ); - mbedtls_aes_setkey_enc( &tweak_ctx, tmp, keysize ); + mbedtls_aes_xts_setkey_enc( &ctx, tmp, keysize * 2 ); TIME_AND_TSC( title, - mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, BUFSIZE * 8, tmp, buf, buf ) ); + mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, BUFSIZE, + tmp, buf, buf ) ); + + mbedtls_aes_xts_free( &ctx ); } - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); } #endif #if defined(MBEDTLS_GCM_C) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 91f5fa2ded..e998795da4 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -161,20 +161,18 @@ void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, unsigned char src_str[100] = { 0, }; unsigned char dst_str[100] = { 0, }; unsigned char output[100] = { 0, }; - mbedtls_aes_context crypt_ctx, tweak_ctx; + mbedtls_aes_xts_context ctx; int key_len, data_len; - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); + mbedtls_aes_xts_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); unhexify( iv_str, hex_iv_string ); data_len = unhexify( src_str, hex_src_string ); - mbedtls_aes_setkey_enc( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); - mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + mbedtls_aes_xts_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_ENCRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); @@ -183,8 +181,7 @@ void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, } exit: - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); + mbedtls_aes_xts_free( &ctx ); } /* END_CASE */ @@ -198,20 +195,18 @@ void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, unsigned char src_str[100] = { 0, }; unsigned char dst_str[100] = { 0, }; unsigned char output[100] = { 0, }; - mbedtls_aes_context crypt_ctx, tweak_ctx; + mbedtls_aes_xts_context ctx; int key_len, data_len; - mbedtls_aes_init( &crypt_ctx ); - mbedtls_aes_init( &tweak_ctx ); + mbedtls_aes_xts_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); unhexify( iv_str, hex_iv_string ); data_len = unhexify( src_str, hex_src_string ); - mbedtls_aes_setkey_dec( &crypt_ctx, key_str, ( key_len * 8 ) / 2 ); - mbedtls_aes_setkey_enc( &tweak_ctx, key_str + key_len / 2, ( key_len * 8 ) / 2 ); + mbedtls_aes_xts_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &crypt_ctx, &tweak_ctx, MBEDTLS_AES_DECRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); @@ -220,8 +215,7 @@ void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, } exit: - mbedtls_aes_free( &crypt_ctx ); - mbedtls_aes_free( &tweak_ctx ); + mbedtls_aes_xts_free( &ctx ); } /* END_CASE */ From 5162b932a2c60100a772be806aa1f866bcf96f4d Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 29 May 2018 12:55:24 +0100 Subject: [PATCH 0441/1100] aes: Use length instead of bits_length in XTS mbedtls_aes_crypt_xts() currently takes a `bits_length` parameter, unlike the other block modes. Change the parameter to accept a bytes length instead, as the `bits_length` parameter is not actually ever used in the current implementation. --- include/mbedtls/aes.h | 4 ++-- library/aes.c | 3 +-- tests/suites/test_suite_aes.function | 6 ++++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index e166e9c6ea..67cab25e0f 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -295,7 +295,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * \param ctx The AES XTS context to use for AES XTS operations. * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or * #MBEDTLS_AES_DECRYPT. - * \param bits_length The length of a data unit in bits. + * \param length The length of a data unit in bytes. * \param iv The address of the data unit encoded as an array of 16 * bytes in little-endian format. For disk encryption, this * is typically the index of the block device sector that @@ -313,7 +313,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, */ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, - size_t bits_length, + size_t length, const unsigned char iv[16], const unsigned char *input, unsigned char *output ); diff --git a/library/aes.c b/library/aes.c index ed260a99b0..2dc600cf84 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1130,7 +1130,7 @@ static void mbedtls_gf128mul_x_ble( unsigned char r[16], */ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, - size_t bits_length, + size_t length, const unsigned char iv[16], const unsigned char *input, unsigned char *output ) @@ -1147,7 +1147,6 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, union xts_buf128 *inbuf; union xts_buf128 *outbuf; - size_t length = bits_length / 8; size_t nblk = length / 16; size_t remn = length % 16; diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index e998795da4..d781d2eaa3 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -169,10 +169,11 @@ void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, key_len = unhexify( key_str, hex_key_string ); unhexify( iv_str, hex_iv_string ); data_len = unhexify( src_str, hex_src_string ); + TEST_ASSERT( data_len == data_unit_len / 8 ); mbedtls_aes_xts_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); @@ -203,10 +204,11 @@ void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, key_len = unhexify( key_str, hex_key_string ); unhexify( iv_str, hex_iv_string ); data_len = unhexify( src_str, hex_src_string ); + TEST_ASSERT( data_len == data_unit_len / 8 ); mbedtls_aes_xts_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_unit_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); From 0a8b02087a2b082af6cf014b72eaca51e8360c18 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 30 May 2018 15:36:06 +0100 Subject: [PATCH 0442/1100] aes: xts: Enforce NIST SP 800-38E data unit size NIST SP 800-38E requites the data unit size be limited to at most 2^20 AES blocks in size. Enforce this restriction. --- include/mbedtls/aes.h | 11 +++++++++-- library/aes.c | 3 +++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 67cab25e0f..60b9857b10 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -292,10 +292,16 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * defined by a data unit number. The data unit number must be * provided by \p iv. * + * NIST SP 800-38E limits the maximum size of a data unit to 2^20 + * AES blocks. If the data unit is larger than this, this function + * returns #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH. + * * \param ctx The AES XTS context to use for AES XTS operations. * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or * #MBEDTLS_AES_DECRYPT. - * \param length The length of a data unit in bytes. + * \param length The length of a data unit in bytes. This can be any + * length between 16 bytes and 2^24 bytes inclusive + * (between 1 and 2^20 block cipher blocks). * \param iv The address of the data unit encoded as an array of 16 * bytes in little-endian format. For disk encryption, this * is typically the index of the block device sector that @@ -309,7 +315,8 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * * \return \c 0 on success. * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH if \p length is - * smaller than an AES block in size (16 bytes). + * smaller than an AES block in size (16 bytes) or if \p + * length is larger than 2^20 blocks (16 MiB). */ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, diff --git a/library/aes.c b/library/aes.c index 2dc600cf84..2b64387a92 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1158,6 +1158,9 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, if( length < 16 ) return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); + /* NIST SP 80-38E disallows data units larger than 2**20 blocks. */ + if( length > ( 1 << 20 ) * 16 ) + return MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH; mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); From d82cd860b2e9a25603b89ffeea8e107ba36cc9aa Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Sat, 28 Apr 2018 15:02:45 +0100 Subject: [PATCH 0443/1100] aes: xts: Rewrite to avoid use of goto The flow was a bit hard to follow with the `goto` everywhere. Rewrite the XTS implementation to avoid the use of `goto`. --- library/aes.c | 171 ++++++++++++++++++++------------------------------ 1 file changed, 67 insertions(+), 104 deletions(-) diff --git a/library/aes.c b/library/aes.c index 2b64387a92..80447b7a30 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1135,129 +1135,92 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, const unsigned char *input, unsigned char *output ) { - union xts_buf128 { - uint8_t u8[16]; - uint64_t u64[2]; - }; + int ret; + size_t blocks = length / 16; + size_t leftover = length % 16; + unsigned char tweak[16]; + unsigned char prev_tweak[16]; + unsigned char tmp[16]; - union xts_buf128 scratch; - union xts_buf128 cts_scratch; - union xts_buf128 t_buf; - union xts_buf128 cts_t_buf; - union xts_buf128 *inbuf; - union xts_buf128 *outbuf; - - size_t nblk = length / 16; - size_t remn = length % 16; - - inbuf = (union xts_buf128*)input; - outbuf = (union xts_buf128*)output; - - /* For performing the ciphertext-stealing operation, we have to get at least - * one complete block */ + /* Sectors must be at least 16 bytes. */ if( length < 16 ) - return( MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH ); + return MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH; /* NIST SP 80-38E disallows data units larger than 2**20 blocks. */ if( length > ( 1 << 20 ) * 16 ) return MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH; - mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, iv, t_buf.u8 ); + /* Compute the tweak. */ + ret = mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, iv, tweak ); + if( ret != 0 ) + return( ret ); - if( mode == MBEDTLS_AES_DECRYPT && remn ) + while( blocks-- ) { - if( nblk == 1 ) - goto decrypt_only_one_full_block; - nblk--; + size_t i; + + if( leftover && ( mode == MBEDTLS_AES_DECRYPT ) && blocks == 0 ) + { + /* We are on the last block in a decrypt operation that has + * leftover bytes, so we need to use the next tweak for this block, + * and this tweak for the lefover bytes. Save the current tweak for + * the leftovers and then update the current tweak for use on this, + * the last full block. */ + memcpy( prev_tweak, tweak, sizeof( tweak ) ); + mbedtls_gf128mul_x_ble( tweak, tweak ); + } + + for( i = 0; i < 16; i++ ) + tmp[i] = input[i] ^ tweak[i]; + + ret = mbedtls_aes_crypt_ecb( &ctx->crypt, mode, tmp, tmp ); + if( ret != 0 ) + return( ret ); + + for( i = 0; i < 16; i++ ) + output[i] = tmp[i] ^ tweak[i]; + + /* Update the tweak for the next block. */ + mbedtls_gf128mul_x_ble( tweak, tweak ); + + output += 16; + input += 16; } - goto first; - - do + if( leftover ) { - mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + /* If we are on the leftover bytes in a decrypt operation, we need to + * use the previous tweak for these bytes (as saved in prev_tweak). */ + unsigned char *t = mode == MBEDTLS_AES_DECRYPT ? prev_tweak : tweak; -first: - /* PP <- T xor P */ - scratch.u64[0] = (uint64_t)( inbuf->u64[0] ^ t_buf.u64[0] ); - scratch.u64[1] = (uint64_t)( inbuf->u64[1] ^ t_buf.u64[1] ); + /* We are now on the final part of the data unit, which doesn't divide + * evenly by 16. It's time for ciphertext stealing. */ + size_t i; + unsigned char *prev_output = output - 16; - /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, outbuf->u8 ); - - /* C <- T xor CC */ - outbuf->u64[0] = (uint64_t)( outbuf->u64[0] ^ t_buf.u64[0] ); - outbuf->u64[1] = (uint64_t)( outbuf->u64[1] ^ t_buf.u64[1] ); - - inbuf += 1; - outbuf += 1; - nblk -= 1; - } while( nblk > 0 ); - - /* Ciphertext stealing, if necessary */ - if( remn != 0 ) - { - outbuf = (union xts_buf128*)output; - inbuf = (union xts_buf128*)input; - nblk = length / 16; - - if( mode == MBEDTLS_AES_ENCRYPT ) + /* Copy ciphertext bytes from the previous block to our output for each + * byte of cyphertext we won't steal. At the same time, copy the + * remainder of the input for this final round (since the loop bounds + * are the same). */ + for( i = 0; i < leftover; i++ ) { - memcpy( cts_scratch.u8, (uint8_t*)&inbuf[nblk], remn ); - memcpy( cts_scratch.u8 + remn, ((uint8_t*)&outbuf[nblk - 1]) + remn, 16 - remn ); - memcpy( (uint8_t*)&outbuf[nblk], (uint8_t*)&outbuf[nblk - 1], remn ); - - mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); - - /* PP <- T xor P */ - scratch.u64[0] = (uint64_t)( cts_scratch.u64[0] ^ t_buf.u64[0] ); - scratch.u64[1] = (uint64_t)( cts_scratch.u64[1] ^ t_buf.u64[1] ); - - /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); - - /* C <- T xor CC */ - outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); - outbuf[nblk - 1].u64[1] = (uint64_t)( scratch.u64[1] ^ t_buf.u64[1] ); + output[i] = prev_output[i]; + tmp[i] = input[i] ^ t[i]; } - else /* AES_DECRYPT */ - { - mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); -decrypt_only_one_full_block: - cts_t_buf.u64[0] = t_buf.u64[0]; - cts_t_buf.u64[1] = t_buf.u64[1]; + /* Copy ciphertext bytes from the previous block for input in this + * round. */ + for( ; i < 16; i++ ) + tmp[i] = prev_output[i] ^ t[i]; - mbedtls_gf128mul_x_ble( t_buf.u8, t_buf.u8 ); + ret = mbedtls_aes_crypt_ecb( &ctx->crypt, mode, tmp, tmp ); + if( ret != 0 ) + return ret; - /* PP <- T xor P */ - scratch.u64[0] = (uint64_t)( inbuf[nblk - 1].u64[0] ^ t_buf.u64[0] ); - scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ t_buf.u64[1] ); - - /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); - - /* C <- T xor CC */ - cts_scratch.u64[0] = (uint64_t)( scratch.u64[0] ^ t_buf.u64[0] ); - cts_scratch.u64[1] = (uint64_t)( scratch.u64[1] ^ t_buf.u64[1] ); - - - memcpy( (uint8_t*)&inbuf[nblk - 1], (uint8_t*)&inbuf[nblk], remn ); - memcpy( (uint8_t*)&inbuf[nblk - 1] + remn, cts_scratch.u8 + remn, 16 - remn ); - memcpy( (uint8_t*)&outbuf[nblk], cts_scratch.u8, remn ); - - - /* PP <- T xor P */ - scratch.u64[0] = (uint64_t)( inbuf[nblk - 1].u64[0] ^ cts_t_buf.u64[0] ); - scratch.u64[1] = (uint64_t)( inbuf[nblk - 1].u64[1] ^ cts_t_buf.u64[1] ); - - /* CC <- E(Key2,PP) */ - mbedtls_aes_crypt_ecb( &ctx->crypt, mode, scratch.u8, scratch.u8 ); - - /* C <- T xor CC */ - outbuf[nblk - 1].u64[0] = (uint64_t)( scratch.u64[0] ^ cts_t_buf.u64[0] ); - outbuf[nblk - 1].u64[1] = (uint64_t)( scratch.u64[1] ^ cts_t_buf.u64[1] ); - } + /* Write the result back to the previous block, overriding the previous + * output we copied. */ + for( i = 0; i < 16; i++ ) + prev_output[i] = tmp[i] ^ t[i]; } return( 0 ); From cd9fc5e54161b8be647ed5b2b295db6835ba4e3e Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 30 May 2018 15:23:24 +0100 Subject: [PATCH 0444/1100] aes: xts: Rename iv to data_unit XTS doesn't have an IV, it has a "Data Unit". Rename iv for parity with the XTS standard. --- include/mbedtls/aes.h | 6 +++--- library/aes.c | 5 +++-- tests/suites/test_suite_aes.function | 16 ++++++++-------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 60b9857b10..74c528fb62 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -290,7 +290,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * * AES-XTS encrypts or decrypts blocks based on their location as * defined by a data unit number. The data unit number must be - * provided by \p iv. + * provided by \p data_unit. * * NIST SP 800-38E limits the maximum size of a data unit to 2^20 * AES blocks. If the data unit is larger than this, this function @@ -302,7 +302,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, * \param length The length of a data unit in bytes. This can be any * length between 16 bytes and 2^24 bytes inclusive * (between 1 and 2^20 block cipher blocks). - * \param iv The address of the data unit encoded as an array of 16 + * \param data_unit The address of the data unit encoded as an array of 16 * bytes in little-endian format. For disk encryption, this * is typically the index of the block device sector that * contains the data. @@ -321,7 +321,7 @@ int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, size_t length, - const unsigned char iv[16], + const unsigned char data_unit[16], const unsigned char *input, unsigned char *output ); #endif /* MBEDTLS_CIPHER_MODE_XTS */ diff --git a/library/aes.c b/library/aes.c index 80447b7a30..a2d1b6dd1c 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1131,7 +1131,7 @@ static void mbedtls_gf128mul_x_ble( unsigned char r[16], int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, int mode, size_t length, - const unsigned char iv[16], + const unsigned char data_unit[16], const unsigned char *input, unsigned char *output ) { @@ -1151,7 +1151,8 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, return MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH; /* Compute the tweak. */ - ret = mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, iv, tweak ); + ret = mbedtls_aes_crypt_ecb( &ctx->tweak, MBEDTLS_AES_ENCRYPT, + data_unit, tweak ); if( ret != 0 ) return( ret ); diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index d781d2eaa3..165f702e60 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -152,12 +152,12 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ -void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, +void aes_encrypt_xts( char *hex_key_string, char *hex_data_unit_string, char *hex_src_string, char *hex_dst_string, int data_unit_len, int xts_result ) { unsigned char key_str[100] = { 0, }; - unsigned char iv_str[100] = { 0, }; + unsigned char data_unit_str[100] = { 0, }; unsigned char src_str[100] = { 0, }; unsigned char dst_str[100] = { 0, }; unsigned char output[100] = { 0, }; @@ -167,13 +167,13 @@ void aes_encrypt_xts( char *hex_key_string, char *hex_iv_string, mbedtls_aes_xts_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); + unhexify( data_unit_str, hex_data_unit_string ); data_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( data_len == data_unit_len / 8 ); mbedtls_aes_xts_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_len, data_unit_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); @@ -187,12 +187,12 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ -void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, +void aes_decrypt_xts( char *hex_key_string, char *hex_data_unit_string, char *hex_src_string, char *hex_dst_string, int data_unit_len, int xts_result ) { unsigned char key_str[100] = { 0, }; - unsigned char iv_str[100] = { 0, }; + unsigned char data_unit_str[100] = { 0, }; unsigned char src_str[100] = { 0, }; unsigned char dst_str[100] = { 0, }; unsigned char output[100] = { 0, }; @@ -202,13 +202,13 @@ void aes_decrypt_xts( char *hex_key_string, char *hex_iv_string, mbedtls_aes_xts_init( &ctx ); key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); + unhexify( data_unit_str, hex_data_unit_string ); data_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( data_len == data_unit_len / 8 ); mbedtls_aes_xts_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == xts_result ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_len, data_unit_str, src_str, output ) == xts_result ); if( xts_result == 0 ) { hexify( dst_str, output, data_len ); From 21d79cf9479b9ea2a217e9110033bc42844c899d Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 23 May 2018 10:30:18 +0100 Subject: [PATCH 0445/1100] aes: Add self test for AES-XTS --- library/aes.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/library/aes.c b/library/aes.c index a2d1b6dd1c..9c7d3d0c45 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1626,6 +1626,74 @@ static const int aes_test_ctr_len[3] = { 16, 32, 36 }; #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/* + * AES-XTS test vectors from: + * + * IEEE P1619/D16 Annex B + * https://web.archive.org/web/20150629024421/http://grouper.ieee.org/groups/1619/email/pdf00086.pdf + * (Archived from original at http://grouper.ieee.org/groups/1619/email/pdf00086.pdf) + */ +static const unsigned char aes_test_xts_key[][32] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, + { 0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, + 0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 }, +}; + +static const unsigned char aes_test_xts_pt32[][32] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, + { 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, + 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 }, +}; + +static const unsigned char aes_test_xts_ct32[][32] = +{ + { 0x91, 0x7c, 0xf6, 0x9e, 0xbd, 0x68, 0xb2, 0xec, + 0x9b, 0x9f, 0xe9, 0xa3, 0xea, 0xdd, 0xa6, 0x92, + 0xcd, 0x43, 0xd2, 0xf5, 0x95, 0x98, 0xed, 0x85, + 0x8c, 0x02, 0xc2, 0x65, 0x2f, 0xbf, 0x92, 0x2e }, + { 0xc4, 0x54, 0x18, 0x5e, 0x6a, 0x16, 0x93, 0x6e, + 0x39, 0x33, 0x40, 0x38, 0xac, 0xef, 0x83, 0x8b, + 0xfb, 0x18, 0x6f, 0xff, 0x74, 0x80, 0xad, 0xc4, + 0x28, 0x93, 0x82, 0xec, 0xd6, 0xd3, 0x94, 0xf0 }, + { 0xaf, 0x85, 0x33, 0x6b, 0x59, 0x7a, 0xfc, 0x1a, + 0x90, 0x0b, 0x2e, 0xb2, 0x1e, 0xc9, 0x49, 0xd2, + 0x92, 0xdf, 0x4c, 0x04, 0x7e, 0x0b, 0x21, 0x53, + 0x21, 0x86, 0xa5, 0x97, 0x1a, 0x22, 0x7a, 0x89 }, +}; + +static const unsigned char aes_test_xts_data_unit[][16] = +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x33, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +}; + +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + /* * Checkup routine */ @@ -1969,6 +2037,73 @@ int mbedtls_aes_self_test( int verbose ) mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) + { + static const int num_tests = + sizeof(aes_test_xts_key) / sizeof(*aes_test_xts_key); + mbedtls_aes_xts_context ctx_xts; + + /* + * XTS mode + */ + mbedtls_aes_xts_init( &ctx_xts ); + + for( i = 0; i < num_tests << 1; i++ ) + { + const unsigned char *data_unit; + u = i >> 1; + mode = i & 1; + + if( verbose != 0 ) + mbedtls_printf( " AES-XTS-128 (%s): ", + ( mode == MBEDTLS_AES_DECRYPT ) ? "dec" : "enc" ); + + memset( key, 0, sizeof( key ) ); + memcpy( key, aes_test_xts_key[u], 32 ); + data_unit = aes_test_xts_data_unit[u]; + + len = sizeof( *aes_test_xts_ct32 ); + + if( mode == MBEDTLS_AES_DECRYPT ) + { + ret = mbedtls_aes_xts_setkey_dec( &ctx_xts, key, 256 ); + if( ret != 0) + goto exit; + memcpy( buf, aes_test_xts_ct32[u], len ); + aes_tests = aes_test_xts_pt32[u]; + } + else + { + ret = mbedtls_aes_xts_setkey_enc( &ctx_xts, key, 256 ); + if( ret != 0) + goto exit; + memcpy( buf, aes_test_xts_pt32[u], len ); + aes_tests = aes_test_xts_ct32[u]; + } + + + ret = mbedtls_aes_crypt_xts( &ctx_xts, mode, len, data_unit, + buf, buf ); + if( ret != 0 ) + goto exit; + + if( memcmp( buf, aes_tests, len ) != 0 ) + { + ret = 1; + goto exit; + } + + if( verbose != 0 ) + mbedtls_printf( "passed\n" ); + } + + if( verbose != 0 ) + mbedtls_printf( "\n" ); + + mbedtls_aes_xts_free( &ctx_xts ); + } +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + ret = 0; exit: From e5c4b07b92ac4152b83c3ccdb5ccbf72f5657b45 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Sat, 28 Apr 2018 17:26:25 +0100 Subject: [PATCH 0446/1100] tests: Make AES-XTS suite more stack friendly Remove stack-allocated buffers from the AES-XTS test suites. --- tests/suites/test_suite_aes.function | 92 +- tests/suites/test_suite_aes.xts.data | 2800 +++++++++++++------------- 2 files changed, 1454 insertions(+), 1438 deletions(-) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index 165f702e60..a7da0ac7c0 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -153,71 +153,87 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ void aes_encrypt_xts( char *hex_key_string, char *hex_data_unit_string, - char *hex_src_string, char *hex_dst_string, - int data_unit_len, int xts_result ) + char *hex_src_string, char *hex_dst_string ) { - unsigned char key_str[100] = { 0, }; - unsigned char data_unit_str[100] = { 0, }; - unsigned char src_str[100] = { 0, }; - unsigned char dst_str[100] = { 0, }; - unsigned char output[100] = { 0, }; + enum { AES_BLOCK_SIZE = 16 }; + unsigned char *data_unit = NULL; + unsigned char *key = NULL; + unsigned char *src = NULL; + unsigned char *dst = NULL; + unsigned char *output = NULL; mbedtls_aes_xts_context ctx; - int key_len, data_len; + size_t key_len, src_len, dst_len, data_unit_len; mbedtls_aes_xts_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( data_unit_str, hex_data_unit_string ); - data_len = unhexify( src_str, hex_src_string ); - TEST_ASSERT( data_len == data_unit_len / 8 ); + data_unit = unhexify_alloc( hex_data_unit_string, &data_unit_len ); + TEST_ASSERT( data_unit_len == AES_BLOCK_SIZE ); - mbedtls_aes_xts_setkey_enc( &ctx, key_str, key_len * 8 ); + key = unhexify_alloc( hex_key_string, &key_len ); + TEST_ASSERT( key_len % 2 == 0 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, data_len, data_unit_str, src_str, output ) == xts_result ); - if( xts_result == 0 ) - { - hexify( dst_str, output, data_len ); + src = unhexify_alloc( hex_src_string, &src_len ); + dst = unhexify_alloc( hex_dst_string, &dst_len ); + TEST_ASSERT( src_len == dst_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); - } + output = zero_alloc( dst_len ); + + TEST_ASSERT( mbedtls_aes_xts_setkey_enc( &ctx, key, key_len * 8 ) == 0 ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, src_len, + data_unit, src, output ) == 0 ); + + TEST_ASSERT( memcmp( output, dst, dst_len ) == 0 ); exit: mbedtls_aes_xts_free( &ctx ); + mbedtls_free( data_unit ); + mbedtls_free( key ); + mbedtls_free( src ); + mbedtls_free( dst ); + mbedtls_free( output ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ void aes_decrypt_xts( char *hex_key_string, char *hex_data_unit_string, - char *hex_src_string, char *hex_dst_string, - int data_unit_len, int xts_result ) + char *hex_dst_string, char *hex_src_string ) { - unsigned char key_str[100] = { 0, }; - unsigned char data_unit_str[100] = { 0, }; - unsigned char src_str[100] = { 0, }; - unsigned char dst_str[100] = { 0, }; - unsigned char output[100] = { 0, }; + enum { AES_BLOCK_SIZE = 16 }; + unsigned char *data_unit = NULL; + unsigned char *key = NULL; + unsigned char *src = NULL; + unsigned char *dst = NULL; + unsigned char *output = NULL; mbedtls_aes_xts_context ctx; - int key_len, data_len; + size_t key_len, src_len, dst_len, data_unit_len; mbedtls_aes_xts_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( data_unit_str, hex_data_unit_string ); - data_len = unhexify( src_str, hex_src_string ); - TEST_ASSERT( data_len == data_unit_len / 8 ); + data_unit = unhexify_alloc( hex_data_unit_string, &data_unit_len ); + TEST_ASSERT( data_unit_len == AES_BLOCK_SIZE ); - mbedtls_aes_xts_setkey_dec( &ctx, key_str, key_len * 8 ); + key = unhexify_alloc( hex_key_string, &key_len ); + TEST_ASSERT( key_len % 2 == 0 ); - TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, data_len, data_unit_str, src_str, output ) == xts_result ); - if( xts_result == 0 ) - { - hexify( dst_str, output, data_len ); + src = unhexify_alloc( hex_src_string, &src_len ); + dst = unhexify_alloc( hex_dst_string, &dst_len ); + TEST_ASSERT( src_len == dst_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); - } + output = zero_alloc( dst_len ); + + TEST_ASSERT( mbedtls_aes_xts_setkey_dec( &ctx, key, key_len * 8 ) == 0 ); + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_DECRYPT, src_len, + data_unit, src, output ) == 0 ); + + TEST_ASSERT( memcmp( output, dst, dst_len ) == 0 ); exit: mbedtls_aes_xts_free( &ctx ); + mbedtls_free( data_unit ); + mbedtls_free( key ); + mbedtls_free( src ); + mbedtls_free( dst ); + mbedtls_free( output ); } /* END_CASE */ diff --git a/tests/suites/test_suite_aes.xts.data b/tests/suites/test_suite_aes.xts.data index baac1a7766..60aa0d3d01 100644 --- a/tests/suites/test_suite_aes.xts.data +++ b/tests/suites/test_suite_aes.xts.data @@ -1,4200 +1,4200 @@ AES-128-XTS Encrypt NIST XTSTestVectors #1 -aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63":128:0 +aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63" AES-128-XTS Encrypt NIST XTSTestVectors #2 -aes_encrypt_xts:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767":128:0 +aes_encrypt_xts:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767" AES-128-XTS Encrypt NIST XTSTestVectors #3 -aes_encrypt_xts:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56":128:0 +aes_encrypt_xts:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56" AES-128-XTS Encrypt NIST XTSTestVectors #4 -aes_encrypt_xts:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04":128:0 +aes_encrypt_xts:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04" AES-128-XTS Encrypt NIST XTSTestVectors #5 -aes_encrypt_xts:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4":128:0 +aes_encrypt_xts:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4" AES-128-XTS Encrypt NIST XTSTestVectors #6 -aes_encrypt_xts:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a":128:0 +aes_encrypt_xts:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a" AES-128-XTS Encrypt NIST XTSTestVectors #7 -aes_encrypt_xts:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327":128:0 +aes_encrypt_xts:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327" AES-128-XTS Encrypt NIST XTSTestVectors #8 -aes_encrypt_xts:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779":128:0 +aes_encrypt_xts:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779" AES-128-XTS Encrypt NIST XTSTestVectors #9 -aes_encrypt_xts:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564":128:0 +aes_encrypt_xts:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564" AES-128-XTS Encrypt NIST XTSTestVectors #10 -aes_encrypt_xts:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74":128:0 +aes_encrypt_xts:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74" AES-128-XTS Encrypt NIST XTSTestVectors #11 -aes_encrypt_xts:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c":128:0 +aes_encrypt_xts:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c" AES-128-XTS Encrypt NIST XTSTestVectors #12 -aes_encrypt_xts:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5":128:0 +aes_encrypt_xts:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5" AES-128-XTS Encrypt NIST XTSTestVectors #13 -aes_encrypt_xts:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b":128:0 +aes_encrypt_xts:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b" AES-128-XTS Encrypt NIST XTSTestVectors #14 -aes_encrypt_xts:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c":128:0 +aes_encrypt_xts:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c" AES-128-XTS Encrypt NIST XTSTestVectors #15 -aes_encrypt_xts:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a":128:0 +aes_encrypt_xts:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a" AES-128-XTS Encrypt NIST XTSTestVectors #16 -aes_encrypt_xts:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15":128:0 +aes_encrypt_xts:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15" AES-128-XTS Encrypt NIST XTSTestVectors #17 -aes_encrypt_xts:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c":128:0 +aes_encrypt_xts:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c" AES-128-XTS Encrypt NIST XTSTestVectors #18 -aes_encrypt_xts:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b":128:0 +aes_encrypt_xts:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b" AES-128-XTS Encrypt NIST XTSTestVectors #19 -aes_encrypt_xts:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be":128:0 +aes_encrypt_xts:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be" AES-128-XTS Encrypt NIST XTSTestVectors #20 -aes_encrypt_xts:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8":128:0 +aes_encrypt_xts:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8" AES-128-XTS Encrypt NIST XTSTestVectors #21 -aes_encrypt_xts:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7":128:0 +aes_encrypt_xts:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7" AES-128-XTS Encrypt NIST XTSTestVectors #22 -aes_encrypt_xts:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0":128:0 +aes_encrypt_xts:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0" AES-128-XTS Encrypt NIST XTSTestVectors #23 -aes_encrypt_xts:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea":128:0 +aes_encrypt_xts:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea" AES-128-XTS Encrypt NIST XTSTestVectors #24 -aes_encrypt_xts:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0":128:0 +aes_encrypt_xts:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0" AES-128-XTS Encrypt NIST XTSTestVectors #25 -aes_encrypt_xts:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b":128:0 +aes_encrypt_xts:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b" AES-128-XTS Encrypt NIST XTSTestVectors #26 -aes_encrypt_xts:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc":128:0 +aes_encrypt_xts:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc" AES-128-XTS Encrypt NIST XTSTestVectors #27 -aes_encrypt_xts:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6":128:0 +aes_encrypt_xts:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6" AES-128-XTS Encrypt NIST XTSTestVectors #28 -aes_encrypt_xts:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee":128:0 +aes_encrypt_xts:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee" AES-128-XTS Encrypt NIST XTSTestVectors #29 -aes_encrypt_xts:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40":128:0 +aes_encrypt_xts:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40" AES-128-XTS Encrypt NIST XTSTestVectors #30 -aes_encrypt_xts:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e":128:0 +aes_encrypt_xts:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e" AES-128-XTS Encrypt NIST XTSTestVectors #31 -aes_encrypt_xts:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2":128:0 +aes_encrypt_xts:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2" AES-128-XTS Encrypt NIST XTSTestVectors #32 -aes_encrypt_xts:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db":128:0 +aes_encrypt_xts:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db" AES-128-XTS Encrypt NIST XTSTestVectors #33 -aes_encrypt_xts:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e":128:0 +aes_encrypt_xts:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e" AES-128-XTS Encrypt NIST XTSTestVectors #34 -aes_encrypt_xts:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110":128:0 +aes_encrypt_xts:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110" AES-128-XTS Encrypt NIST XTSTestVectors #35 -aes_encrypt_xts:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a":128:0 +aes_encrypt_xts:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a" AES-128-XTS Encrypt NIST XTSTestVectors #36 -aes_encrypt_xts:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99":128:0 +aes_encrypt_xts:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99" AES-128-XTS Encrypt NIST XTSTestVectors #37 -aes_encrypt_xts:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e":128:0 +aes_encrypt_xts:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e" AES-128-XTS Encrypt NIST XTSTestVectors #38 -aes_encrypt_xts:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237":128:0 +aes_encrypt_xts:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237" AES-128-XTS Encrypt NIST XTSTestVectors #39 -aes_encrypt_xts:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2":128:0 +aes_encrypt_xts:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2" AES-128-XTS Encrypt NIST XTSTestVectors #40 -aes_encrypt_xts:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c":128:0 +aes_encrypt_xts:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c" AES-128-XTS Encrypt NIST XTSTestVectors #41 -aes_encrypt_xts:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b":128:0 +aes_encrypt_xts:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b" AES-128-XTS Encrypt NIST XTSTestVectors #42 -aes_encrypt_xts:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a":128:0 +aes_encrypt_xts:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a" AES-128-XTS Encrypt NIST XTSTestVectors #43 -aes_encrypt_xts:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432":128:0 +aes_encrypt_xts:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432" AES-128-XTS Encrypt NIST XTSTestVectors #44 -aes_encrypt_xts:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548":128:0 +aes_encrypt_xts:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548" AES-128-XTS Encrypt NIST XTSTestVectors #45 -aes_encrypt_xts:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66":128:0 +aes_encrypt_xts:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66" AES-128-XTS Encrypt NIST XTSTestVectors #46 -aes_encrypt_xts:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721":128:0 +aes_encrypt_xts:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721" AES-128-XTS Encrypt NIST XTSTestVectors #47 -aes_encrypt_xts:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397":128:0 +aes_encrypt_xts:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397" AES-128-XTS Encrypt NIST XTSTestVectors #48 -aes_encrypt_xts:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236":128:0 +aes_encrypt_xts:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236" AES-128-XTS Encrypt NIST XTSTestVectors #49 -aes_encrypt_xts:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708":128:0 +aes_encrypt_xts:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708" AES-128-XTS Encrypt NIST XTSTestVectors #50 -aes_encrypt_xts:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e":128:0 +aes_encrypt_xts:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e" AES-128-XTS Encrypt NIST XTSTestVectors #51 -aes_encrypt_xts:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9":128:0 +aes_encrypt_xts:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9" AES-128-XTS Encrypt NIST XTSTestVectors #52 -aes_encrypt_xts:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8":128:0 +aes_encrypt_xts:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8" AES-128-XTS Encrypt NIST XTSTestVectors #53 -aes_encrypt_xts:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d":128:0 +aes_encrypt_xts:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d" AES-128-XTS Encrypt NIST XTSTestVectors #54 -aes_encrypt_xts:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed":128:0 +aes_encrypt_xts:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed" AES-128-XTS Encrypt NIST XTSTestVectors #55 -aes_encrypt_xts:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645":128:0 +aes_encrypt_xts:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645" AES-128-XTS Encrypt NIST XTSTestVectors #56 -aes_encrypt_xts:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13":128:0 +aes_encrypt_xts:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13" AES-128-XTS Encrypt NIST XTSTestVectors #57 -aes_encrypt_xts:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42":128:0 +aes_encrypt_xts:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42" AES-128-XTS Encrypt NIST XTSTestVectors #58 -aes_encrypt_xts:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0":128:0 +aes_encrypt_xts:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0" AES-128-XTS Encrypt NIST XTSTestVectors #59 -aes_encrypt_xts:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89":128:0 +aes_encrypt_xts:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89" AES-128-XTS Encrypt NIST XTSTestVectors #60 -aes_encrypt_xts:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759":128:0 +aes_encrypt_xts:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759" AES-128-XTS Encrypt NIST XTSTestVectors #61 -aes_encrypt_xts:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914":128:0 +aes_encrypt_xts:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914" AES-128-XTS Encrypt NIST XTSTestVectors #62 -aes_encrypt_xts:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91":128:0 +aes_encrypt_xts:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91" AES-128-XTS Encrypt NIST XTSTestVectors #63 -aes_encrypt_xts:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e":128:0 +aes_encrypt_xts:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e" AES-128-XTS Encrypt NIST XTSTestVectors #64 -aes_encrypt_xts:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe":128:0 +aes_encrypt_xts:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe" AES-128-XTS Encrypt NIST XTSTestVectors #65 -aes_encrypt_xts:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724":128:0 +aes_encrypt_xts:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724" AES-128-XTS Encrypt NIST XTSTestVectors #66 -aes_encrypt_xts:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a":128:0 +aes_encrypt_xts:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a" AES-128-XTS Encrypt NIST XTSTestVectors #67 -aes_encrypt_xts:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82":128:0 +aes_encrypt_xts:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82" AES-128-XTS Encrypt NIST XTSTestVectors #68 -aes_encrypt_xts:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a":128:0 +aes_encrypt_xts:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a" AES-128-XTS Encrypt NIST XTSTestVectors #69 -aes_encrypt_xts:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219":128:0 +aes_encrypt_xts:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219" AES-128-XTS Encrypt NIST XTSTestVectors #70 -aes_encrypt_xts:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9":128:0 +aes_encrypt_xts:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9" AES-128-XTS Encrypt NIST XTSTestVectors #71 -aes_encrypt_xts:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd":128:0 +aes_encrypt_xts:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd" AES-128-XTS Encrypt NIST XTSTestVectors #72 -aes_encrypt_xts:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed":128:0 +aes_encrypt_xts:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed" AES-128-XTS Encrypt NIST XTSTestVectors #73 -aes_encrypt_xts:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3":128:0 +aes_encrypt_xts:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3" AES-128-XTS Encrypt NIST XTSTestVectors #74 -aes_encrypt_xts:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406":128:0 +aes_encrypt_xts:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406" AES-128-XTS Encrypt NIST XTSTestVectors #75 -aes_encrypt_xts:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267":128:0 +aes_encrypt_xts:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267" AES-128-XTS Encrypt NIST XTSTestVectors #76 -aes_encrypt_xts:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283":128:0 +aes_encrypt_xts:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283" AES-128-XTS Encrypt NIST XTSTestVectors #77 -aes_encrypt_xts:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f":128:0 +aes_encrypt_xts:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f" AES-128-XTS Encrypt NIST XTSTestVectors #78 -aes_encrypt_xts:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5":128:0 +aes_encrypt_xts:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5" AES-128-XTS Encrypt NIST XTSTestVectors #79 -aes_encrypt_xts:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863":128:0 +aes_encrypt_xts:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863" AES-128-XTS Encrypt NIST XTSTestVectors #80 -aes_encrypt_xts:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392":128:0 +aes_encrypt_xts:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392" AES-128-XTS Encrypt NIST XTSTestVectors #81 -aes_encrypt_xts:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62":128:0 +aes_encrypt_xts:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62" AES-128-XTS Encrypt NIST XTSTestVectors #82 -aes_encrypt_xts:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4":128:0 +aes_encrypt_xts:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4" AES-128-XTS Encrypt NIST XTSTestVectors #83 -aes_encrypt_xts:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f":128:0 +aes_encrypt_xts:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f" AES-128-XTS Encrypt NIST XTSTestVectors #84 -aes_encrypt_xts:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688":128:0 +aes_encrypt_xts:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688" AES-128-XTS Encrypt NIST XTSTestVectors #85 -aes_encrypt_xts:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d":128:0 +aes_encrypt_xts:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d" AES-128-XTS Encrypt NIST XTSTestVectors #86 -aes_encrypt_xts:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840":128:0 +aes_encrypt_xts:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840" AES-128-XTS Encrypt NIST XTSTestVectors #87 -aes_encrypt_xts:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e":128:0 +aes_encrypt_xts:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e" AES-128-XTS Encrypt NIST XTSTestVectors #88 -aes_encrypt_xts:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2":128:0 +aes_encrypt_xts:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2" AES-128-XTS Encrypt NIST XTSTestVectors #89 -aes_encrypt_xts:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376":128:0 +aes_encrypt_xts:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376" AES-128-XTS Encrypt NIST XTSTestVectors #90 -aes_encrypt_xts:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb":128:0 +aes_encrypt_xts:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb" AES-128-XTS Encrypt NIST XTSTestVectors #91 -aes_encrypt_xts:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908":128:0 +aes_encrypt_xts:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908" AES-128-XTS Encrypt NIST XTSTestVectors #92 -aes_encrypt_xts:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81":128:0 +aes_encrypt_xts:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81" AES-128-XTS Encrypt NIST XTSTestVectors #93 -aes_encrypt_xts:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb":128:0 +aes_encrypt_xts:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb" AES-128-XTS Encrypt NIST XTSTestVectors #94 -aes_encrypt_xts:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac":128:0 +aes_encrypt_xts:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac" AES-128-XTS Encrypt NIST XTSTestVectors #95 -aes_encrypt_xts:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7":128:0 +aes_encrypt_xts:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7" AES-128-XTS Encrypt NIST XTSTestVectors #96 -aes_encrypt_xts:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f":128:0 +aes_encrypt_xts:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f" AES-128-XTS Encrypt NIST XTSTestVectors #97 -aes_encrypt_xts:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84":128:0 +aes_encrypt_xts:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84" AES-128-XTS Encrypt NIST XTSTestVectors #98 -aes_encrypt_xts:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c":128:0 +aes_encrypt_xts:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c" AES-128-XTS Encrypt NIST XTSTestVectors #99 -aes_encrypt_xts:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3":128:0 +aes_encrypt_xts:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3" AES-128-XTS Encrypt NIST XTSTestVectors #100 -aes_encrypt_xts:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc":128:0 +aes_encrypt_xts:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc" AES-128-XTS Encrypt NIST XTSTestVectors #101 -aes_encrypt_xts:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19":256:0 +aes_encrypt_xts:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19" AES-128-XTS Encrypt NIST XTSTestVectors #102 -aes_encrypt_xts:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491":256:0 +aes_encrypt_xts:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491" AES-128-XTS Encrypt NIST XTSTestVectors #103 -aes_encrypt_xts:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3":256:0 +aes_encrypt_xts:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3" AES-128-XTS Encrypt NIST XTSTestVectors #104 -aes_encrypt_xts:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863":256:0 +aes_encrypt_xts:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863" AES-128-XTS Encrypt NIST XTSTestVectors #105 -aes_encrypt_xts:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b":256:0 +aes_encrypt_xts:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b" AES-128-XTS Encrypt NIST XTSTestVectors #106 -aes_encrypt_xts:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13":256:0 +aes_encrypt_xts:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13" AES-128-XTS Encrypt NIST XTSTestVectors #107 -aes_encrypt_xts:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae":256:0 +aes_encrypt_xts:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae" AES-128-XTS Encrypt NIST XTSTestVectors #108 -aes_encrypt_xts:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6":256:0 +aes_encrypt_xts:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6" AES-128-XTS Encrypt NIST XTSTestVectors #109 -aes_encrypt_xts:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189":256:0 +aes_encrypt_xts:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189" AES-128-XTS Encrypt NIST XTSTestVectors #110 -aes_encrypt_xts:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9":256:0 +aes_encrypt_xts:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9" AES-128-XTS Encrypt NIST XTSTestVectors #111 -aes_encrypt_xts:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b":256:0 +aes_encrypt_xts:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b" AES-128-XTS Encrypt NIST XTSTestVectors #112 -aes_encrypt_xts:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca":256:0 +aes_encrypt_xts:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca" AES-128-XTS Encrypt NIST XTSTestVectors #113 -aes_encrypt_xts:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b":256:0 +aes_encrypt_xts:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b" AES-128-XTS Encrypt NIST XTSTestVectors #114 -aes_encrypt_xts:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e":256:0 +aes_encrypt_xts:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e" AES-128-XTS Encrypt NIST XTSTestVectors #115 -aes_encrypt_xts:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500":256:0 +aes_encrypt_xts:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500" AES-128-XTS Encrypt NIST XTSTestVectors #116 -aes_encrypt_xts:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667":256:0 +aes_encrypt_xts:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667" AES-128-XTS Encrypt NIST XTSTestVectors #117 -aes_encrypt_xts:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4":256:0 +aes_encrypt_xts:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4" AES-128-XTS Encrypt NIST XTSTestVectors #118 -aes_encrypt_xts:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18":256:0 +aes_encrypt_xts:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18" AES-128-XTS Encrypt NIST XTSTestVectors #119 -aes_encrypt_xts:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00":256:0 +aes_encrypt_xts:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00" AES-128-XTS Encrypt NIST XTSTestVectors #120 -aes_encrypt_xts:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c":256:0 +aes_encrypt_xts:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c" AES-128-XTS Encrypt NIST XTSTestVectors #121 -aes_encrypt_xts:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f":256:0 +aes_encrypt_xts:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f" AES-128-XTS Encrypt NIST XTSTestVectors #122 -aes_encrypt_xts:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10":256:0 +aes_encrypt_xts:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10" AES-128-XTS Encrypt NIST XTSTestVectors #123 -aes_encrypt_xts:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5":256:0 +aes_encrypt_xts:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5" AES-128-XTS Encrypt NIST XTSTestVectors #124 -aes_encrypt_xts:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf":256:0 +aes_encrypt_xts:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf" AES-128-XTS Encrypt NIST XTSTestVectors #125 -aes_encrypt_xts:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197":256:0 +aes_encrypt_xts:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197" AES-128-XTS Encrypt NIST XTSTestVectors #126 -aes_encrypt_xts:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f":256:0 +aes_encrypt_xts:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f" AES-128-XTS Encrypt NIST XTSTestVectors #127 -aes_encrypt_xts:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea":256:0 +aes_encrypt_xts:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea" AES-128-XTS Encrypt NIST XTSTestVectors #128 -aes_encrypt_xts:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089":256:0 +aes_encrypt_xts:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089" AES-128-XTS Encrypt NIST XTSTestVectors #129 -aes_encrypt_xts:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c":256:0 +aes_encrypt_xts:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c" AES-128-XTS Encrypt NIST XTSTestVectors #130 -aes_encrypt_xts:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f":256:0 +aes_encrypt_xts:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f" AES-128-XTS Encrypt NIST XTSTestVectors #131 -aes_encrypt_xts:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873":256:0 +aes_encrypt_xts:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873" AES-128-XTS Encrypt NIST XTSTestVectors #132 -aes_encrypt_xts:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc":256:0 +aes_encrypt_xts:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc" AES-128-XTS Encrypt NIST XTSTestVectors #133 -aes_encrypt_xts:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349":256:0 +aes_encrypt_xts:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349" AES-128-XTS Encrypt NIST XTSTestVectors #134 -aes_encrypt_xts:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d":256:0 +aes_encrypt_xts:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d" AES-128-XTS Encrypt NIST XTSTestVectors #135 -aes_encrypt_xts:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2":256:0 +aes_encrypt_xts:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2" AES-128-XTS Encrypt NIST XTSTestVectors #136 -aes_encrypt_xts:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe":256:0 +aes_encrypt_xts:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe" AES-128-XTS Encrypt NIST XTSTestVectors #137 -aes_encrypt_xts:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473":256:0 +aes_encrypt_xts:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473" AES-128-XTS Encrypt NIST XTSTestVectors #138 -aes_encrypt_xts:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7":256:0 +aes_encrypt_xts:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7" AES-128-XTS Encrypt NIST XTSTestVectors #139 -aes_encrypt_xts:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4":256:0 +aes_encrypt_xts:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4" AES-128-XTS Encrypt NIST XTSTestVectors #140 -aes_encrypt_xts:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31":256:0 +aes_encrypt_xts:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31" AES-128-XTS Encrypt NIST XTSTestVectors #141 -aes_encrypt_xts:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851":256:0 +aes_encrypt_xts:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851" AES-128-XTS Encrypt NIST XTSTestVectors #142 -aes_encrypt_xts:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53":256:0 +aes_encrypt_xts:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53" AES-128-XTS Encrypt NIST XTSTestVectors #143 -aes_encrypt_xts:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b":256:0 +aes_encrypt_xts:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b" AES-128-XTS Encrypt NIST XTSTestVectors #144 -aes_encrypt_xts:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab":256:0 +aes_encrypt_xts:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab" AES-128-XTS Encrypt NIST XTSTestVectors #145 -aes_encrypt_xts:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb":256:0 +aes_encrypt_xts:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb" AES-128-XTS Encrypt NIST XTSTestVectors #146 -aes_encrypt_xts:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254":256:0 +aes_encrypt_xts:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254" AES-128-XTS Encrypt NIST XTSTestVectors #147 -aes_encrypt_xts:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2":256:0 +aes_encrypt_xts:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2" AES-128-XTS Encrypt NIST XTSTestVectors #148 -aes_encrypt_xts:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700":256:0 +aes_encrypt_xts:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700" AES-128-XTS Encrypt NIST XTSTestVectors #149 -aes_encrypt_xts:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b":256:0 +aes_encrypt_xts:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b" AES-128-XTS Encrypt NIST XTSTestVectors #150 -aes_encrypt_xts:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b":256:0 +aes_encrypt_xts:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b" AES-128-XTS Encrypt NIST XTSTestVectors #151 -aes_encrypt_xts:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb":256:0 +aes_encrypt_xts:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb" AES-128-XTS Encrypt NIST XTSTestVectors #152 -aes_encrypt_xts:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b":256:0 +aes_encrypt_xts:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b" AES-128-XTS Encrypt NIST XTSTestVectors #153 -aes_encrypt_xts:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8":256:0 +aes_encrypt_xts:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8" AES-128-XTS Encrypt NIST XTSTestVectors #154 -aes_encrypt_xts:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af":256:0 +aes_encrypt_xts:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af" AES-128-XTS Encrypt NIST XTSTestVectors #155 -aes_encrypt_xts:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5":256:0 +aes_encrypt_xts:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5" AES-128-XTS Encrypt NIST XTSTestVectors #156 -aes_encrypt_xts:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755":256:0 +aes_encrypt_xts:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755" AES-128-XTS Encrypt NIST XTSTestVectors #157 -aes_encrypt_xts:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f":256:0 +aes_encrypt_xts:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f" AES-128-XTS Encrypt NIST XTSTestVectors #158 -aes_encrypt_xts:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662":256:0 +aes_encrypt_xts:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662" AES-128-XTS Encrypt NIST XTSTestVectors #159 -aes_encrypt_xts:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec":256:0 +aes_encrypt_xts:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec" AES-128-XTS Encrypt NIST XTSTestVectors #160 -aes_encrypt_xts:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4":256:0 +aes_encrypt_xts:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4" AES-128-XTS Encrypt NIST XTSTestVectors #161 -aes_encrypt_xts:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4":256:0 +aes_encrypt_xts:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4" AES-128-XTS Encrypt NIST XTSTestVectors #162 -aes_encrypt_xts:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27":256:0 +aes_encrypt_xts:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27" AES-128-XTS Encrypt NIST XTSTestVectors #163 -aes_encrypt_xts:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b":256:0 +aes_encrypt_xts:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b" AES-128-XTS Encrypt NIST XTSTestVectors #164 -aes_encrypt_xts:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9":256:0 +aes_encrypt_xts:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9" AES-128-XTS Encrypt NIST XTSTestVectors #165 -aes_encrypt_xts:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756":256:0 +aes_encrypt_xts:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756" AES-128-XTS Encrypt NIST XTSTestVectors #166 -aes_encrypt_xts:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6":256:0 +aes_encrypt_xts:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6" AES-128-XTS Encrypt NIST XTSTestVectors #167 -aes_encrypt_xts:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe":256:0 +aes_encrypt_xts:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe" AES-128-XTS Encrypt NIST XTSTestVectors #168 -aes_encrypt_xts:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc":256:0 +aes_encrypt_xts:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc" AES-128-XTS Encrypt NIST XTSTestVectors #169 -aes_encrypt_xts:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d":256:0 +aes_encrypt_xts:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d" AES-128-XTS Encrypt NIST XTSTestVectors #170 -aes_encrypt_xts:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad":256:0 +aes_encrypt_xts:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad" AES-128-XTS Encrypt NIST XTSTestVectors #171 -aes_encrypt_xts:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a":256:0 +aes_encrypt_xts:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a" AES-128-XTS Encrypt NIST XTSTestVectors #172 -aes_encrypt_xts:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d":256:0 +aes_encrypt_xts:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d" AES-128-XTS Encrypt NIST XTSTestVectors #173 -aes_encrypt_xts:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4":256:0 +aes_encrypt_xts:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4" AES-128-XTS Encrypt NIST XTSTestVectors #174 -aes_encrypt_xts:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62":256:0 +aes_encrypt_xts:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62" AES-128-XTS Encrypt NIST XTSTestVectors #175 -aes_encrypt_xts:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba":256:0 +aes_encrypt_xts:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba" AES-128-XTS Encrypt NIST XTSTestVectors #176 -aes_encrypt_xts:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57":256:0 +aes_encrypt_xts:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57" AES-128-XTS Encrypt NIST XTSTestVectors #177 -aes_encrypt_xts:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f":256:0 +aes_encrypt_xts:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f" AES-128-XTS Encrypt NIST XTSTestVectors #178 -aes_encrypt_xts:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474":256:0 +aes_encrypt_xts:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474" AES-128-XTS Encrypt NIST XTSTestVectors #179 -aes_encrypt_xts:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1":256:0 +aes_encrypt_xts:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1" AES-128-XTS Encrypt NIST XTSTestVectors #180 -aes_encrypt_xts:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c":256:0 +aes_encrypt_xts:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c" AES-128-XTS Encrypt NIST XTSTestVectors #181 -aes_encrypt_xts:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b":256:0 +aes_encrypt_xts:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b" AES-128-XTS Encrypt NIST XTSTestVectors #182 -aes_encrypt_xts:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677":256:0 +aes_encrypt_xts:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677" AES-128-XTS Encrypt NIST XTSTestVectors #183 -aes_encrypt_xts:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d":256:0 +aes_encrypt_xts:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d" AES-128-XTS Encrypt NIST XTSTestVectors #184 -aes_encrypt_xts:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a":256:0 +aes_encrypt_xts:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a" AES-128-XTS Encrypt NIST XTSTestVectors #185 -aes_encrypt_xts:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284":256:0 +aes_encrypt_xts:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284" AES-128-XTS Encrypt NIST XTSTestVectors #186 -aes_encrypt_xts:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0":256:0 +aes_encrypt_xts:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0" AES-128-XTS Encrypt NIST XTSTestVectors #187 -aes_encrypt_xts:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f":256:0 +aes_encrypt_xts:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f" AES-128-XTS Encrypt NIST XTSTestVectors #188 -aes_encrypt_xts:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6":256:0 +aes_encrypt_xts:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6" AES-128-XTS Encrypt NIST XTSTestVectors #189 -aes_encrypt_xts:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c":256:0 +aes_encrypt_xts:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c" AES-128-XTS Encrypt NIST XTSTestVectors #190 -aes_encrypt_xts:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578":256:0 +aes_encrypt_xts:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578" AES-128-XTS Encrypt NIST XTSTestVectors #191 -aes_encrypt_xts:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8":256:0 +aes_encrypt_xts:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8" AES-128-XTS Encrypt NIST XTSTestVectors #192 -aes_encrypt_xts:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1":256:0 +aes_encrypt_xts:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1" AES-128-XTS Encrypt NIST XTSTestVectors #193 -aes_encrypt_xts:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5":256:0 +aes_encrypt_xts:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5" AES-128-XTS Encrypt NIST XTSTestVectors #194 -aes_encrypt_xts:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a":256:0 +aes_encrypt_xts:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a" AES-128-XTS Encrypt NIST XTSTestVectors #195 -aes_encrypt_xts:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8":256:0 +aes_encrypt_xts:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8" AES-128-XTS Encrypt NIST XTSTestVectors #196 -aes_encrypt_xts:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868":256:0 +aes_encrypt_xts:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868" AES-128-XTS Encrypt NIST XTSTestVectors #197 -aes_encrypt_xts:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85":256:0 +aes_encrypt_xts:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85" AES-128-XTS Encrypt NIST XTSTestVectors #198 -aes_encrypt_xts:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09":256:0 +aes_encrypt_xts:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09" AES-128-XTS Encrypt NIST XTSTestVectors #199 -aes_encrypt_xts:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d":256:0 +aes_encrypt_xts:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d" AES-128-XTS Encrypt NIST XTSTestVectors #200 -aes_encrypt_xts:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79":256:0 +aes_encrypt_xts:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79" AES-128-XTS Encrypt NIST XTSTestVectors #201 -aes_encrypt_xts:"394c97881abd989d29c703e48a72b397a7acf51b59649eeea9b33274d8541df4":"4b15c684a152d485fe9937d39b168c29":"2f3b9dcfbae729583b1d1ffdd16bb6fe2757329435662a78f0":"f3473802e38a3ffef4d4fb8e6aa266ebde553a64528a06463e":200:0 +aes_encrypt_xts:"394c97881abd989d29c703e48a72b397a7acf51b59649eeea9b33274d8541df4":"4b15c684a152d485fe9937d39b168c29":"2f3b9dcfbae729583b1d1ffdd16bb6fe2757329435662a78f0":"f3473802e38a3ffef4d4fb8e6aa266ebde553a64528a06463e" AES-128-XTS Encrypt NIST XTSTestVectors #202 -aes_encrypt_xts:"8afb90c2ec924c4b0b0bd840fb1efc842c9385a14d1ca95bd4d12cbf9ab588ed":"b2f8c6374eb275c1744e85aa21f8ea6b":"d9d8f00683bcd489154882290f24624726e093390783d4959a":"f4bbaa8ebd480d2a2a371beab3d8b387c02282678c6000227b":200:0 +aes_encrypt_xts:"8afb90c2ec924c4b0b0bd840fb1efc842c9385a14d1ca95bd4d12cbf9ab588ed":"b2f8c6374eb275c1744e85aa21f8ea6b":"d9d8f00683bcd489154882290f24624726e093390783d4959a":"f4bbaa8ebd480d2a2a371beab3d8b387c02282678c6000227b" AES-128-XTS Encrypt NIST XTSTestVectors #203 -aes_encrypt_xts:"6052a415b42d1df06d4283186ef363c9e59aa0eafa92ffe0aa1ce617fa1ed39a":"b29b1a4388673fec4c1dbd786a491c62":"eb61da2b2159b9ca0099cbb82af6cf26a645ad954811aa703c":"2c404c9b9c71dde43012a5abe879fa66d4c94fbebbdbfc01fa":200:0 +aes_encrypt_xts:"6052a415b42d1df06d4283186ef363c9e59aa0eafa92ffe0aa1ce617fa1ed39a":"b29b1a4388673fec4c1dbd786a491c62":"eb61da2b2159b9ca0099cbb82af6cf26a645ad954811aa703c":"2c404c9b9c71dde43012a5abe879fa66d4c94fbebbdbfc01fa" AES-128-XTS Encrypt NIST XTSTestVectors #204 -aes_encrypt_xts:"74f6073c3c4e9bf8186e5497b56d653bd6e158170a0b59c6f64db1ca60f1baa4":"8dca1120c79a077a842a9b9d7723460a":"408ac25080340d1f59e7abd879bcb2132779025ba3207fe4c5":"036c53b929980fc9f042cc4926e125331fb3e21290a052bf7d":200:0 +aes_encrypt_xts:"74f6073c3c4e9bf8186e5497b56d653bd6e158170a0b59c6f64db1ca60f1baa4":"8dca1120c79a077a842a9b9d7723460a":"408ac25080340d1f59e7abd879bcb2132779025ba3207fe4c5":"036c53b929980fc9f042cc4926e125331fb3e21290a052bf7d" AES-128-XTS Encrypt NIST XTSTestVectors #205 -aes_encrypt_xts:"210130cf1586c24e4f072fad1f39aa3da371cbf73af43f49efe7db5d48aaac4a":"c3ff2bb1af53e80231ad244b3bbe1dff":"463f9c120f974a5096acef4b315262ddeafb3dca8380896314":"bfc77723445cccd0e30ef333b721ef07edad579ed78561859f":200:0 +aes_encrypt_xts:"210130cf1586c24e4f072fad1f39aa3da371cbf73af43f49efe7db5d48aaac4a":"c3ff2bb1af53e80231ad244b3bbe1dff":"463f9c120f974a5096acef4b315262ddeafb3dca8380896314":"bfc77723445cccd0e30ef333b721ef07edad579ed78561859f" AES-128-XTS Encrypt NIST XTSTestVectors #206 -aes_encrypt_xts:"00f867841e6cc8bcea32e5ce2b1398a08730d6c567412bffb1e0e971a418c388":"f09170358ddaaec8139a9aaae8cb2cce":"ea03b308b39728940ba9e84faf4c5c54a1238996f694932a12":"97f039021aa175e3837b7d4fd79948e8500d40fb7fdfb27c79":200:0 +aes_encrypt_xts:"00f867841e6cc8bcea32e5ce2b1398a08730d6c567412bffb1e0e971a418c388":"f09170358ddaaec8139a9aaae8cb2cce":"ea03b308b39728940ba9e84faf4c5c54a1238996f694932a12":"97f039021aa175e3837b7d4fd79948e8500d40fb7fdfb27c79" AES-128-XTS Encrypt NIST XTSTestVectors #207 -aes_encrypt_xts:"abbebd60a3002bfbb5842d8bfdafaa39168b61cc5592f3eee76dd06b5117c219":"aa60fa8533ced539c0ba0019ae5e99a0":"20e44bdbe4316ae7677b4d78316c5a47ae26c3248b06e779c7":"20b1fd404143f39ce1a5d64dbbc137e5d8717aa5b28471d72d":200:0 +aes_encrypt_xts:"abbebd60a3002bfbb5842d8bfdafaa39168b61cc5592f3eee76dd06b5117c219":"aa60fa8533ced539c0ba0019ae5e99a0":"20e44bdbe4316ae7677b4d78316c5a47ae26c3248b06e779c7":"20b1fd404143f39ce1a5d64dbbc137e5d8717aa5b28471d72d" AES-128-XTS Encrypt NIST XTSTestVectors #208 -aes_encrypt_xts:"7992df46c0f31a963227fd5c4c227c756ae0b4afd3356db4823e561a75d6519a":"18c2815051d9a2c16eb006467853f723":"ea9027e5016713fa1956ef5672c1e194fd619af89a873ea9e1":"adaf45d262fbd59bd887f639f820bc1409da4a0896ad677713":200:0 +aes_encrypt_xts:"7992df46c0f31a963227fd5c4c227c756ae0b4afd3356db4823e561a75d6519a":"18c2815051d9a2c16eb006467853f723":"ea9027e5016713fa1956ef5672c1e194fd619af89a873ea9e1":"adaf45d262fbd59bd887f639f820bc1409da4a0896ad677713" AES-128-XTS Encrypt NIST XTSTestVectors #209 -aes_encrypt_xts:"88a6ded6454dc8b660e735b95de9b96a4547238f6da36a19fa39fc457b95e03a":"33b924a99d989ae8835e9b28044493b1":"7e7ce9aa3ae4c86c210f1aa1f279c6948d2a43dd0f3febd3d4":"298282d3c794f3c3126a2c0ba1a2c8d9c47b6f2dadcaa64248":200:0 +aes_encrypt_xts:"88a6ded6454dc8b660e735b95de9b96a4547238f6da36a19fa39fc457b95e03a":"33b924a99d989ae8835e9b28044493b1":"7e7ce9aa3ae4c86c210f1aa1f279c6948d2a43dd0f3febd3d4":"298282d3c794f3c3126a2c0ba1a2c8d9c47b6f2dadcaa64248" AES-128-XTS Encrypt NIST XTSTestVectors #210 -aes_encrypt_xts:"6cc01f3db0f5f629d5c9ba91b437bbdb60ed23c035a7090446d6322e407e3abc":"af6e3a4923037e4ac052aaf823aeafea":"d1cea3010fcd675aeb9af9a4a1a2ca3190714767da0dc3aeab":"214cdd03c0f0c49d32e8b341ea60a2db076eb4d6e4d06c50e3":200:0 +aes_encrypt_xts:"6cc01f3db0f5f629d5c9ba91b437bbdb60ed23c035a7090446d6322e407e3abc":"af6e3a4923037e4ac052aaf823aeafea":"d1cea3010fcd675aeb9af9a4a1a2ca3190714767da0dc3aeab":"214cdd03c0f0c49d32e8b341ea60a2db076eb4d6e4d06c50e3" AES-128-XTS Encrypt NIST XTSTestVectors #211 -aes_encrypt_xts:"f6875e62c5a26a448fb631a8893bed7a276d2c9b27c17862b004f1637dc0b0ec":"b1ac3ddb2252420f21903ffdd925cc75":"8c02a37d22c7db9e26738047c0d2272e2f4d19ba08e7010981":"2153abac32e4b527c640106cc572119b279dc79a9b61e5775e":200:0 +aes_encrypt_xts:"f6875e62c5a26a448fb631a8893bed7a276d2c9b27c17862b004f1637dc0b0ec":"b1ac3ddb2252420f21903ffdd925cc75":"8c02a37d22c7db9e26738047c0d2272e2f4d19ba08e7010981":"2153abac32e4b527c640106cc572119b279dc79a9b61e5775e" AES-128-XTS Encrypt NIST XTSTestVectors #212 -aes_encrypt_xts:"fd527d189f3f2928df313a9629765d2c2d68ae4eede5e116a46e506abf719946":"2d1bf18678dc3e58cf0242d0cd6ea350":"95195e104502be51e909c62c861aab3ef134572dab637f94af":"879a8dde4415fd0fe17602d3565efb3d07e8cc6e73c79e92f3":200:0 +aes_encrypt_xts:"fd527d189f3f2928df313a9629765d2c2d68ae4eede5e116a46e506abf719946":"2d1bf18678dc3e58cf0242d0cd6ea350":"95195e104502be51e909c62c861aab3ef134572dab637f94af":"879a8dde4415fd0fe17602d3565efb3d07e8cc6e73c79e92f3" AES-128-XTS Encrypt NIST XTSTestVectors #213 -aes_encrypt_xts:"e42534721c057c6440e756d6e65f90548c3f5c0efb3708d0e3fec2099da6f54f":"3ba5b7afec9c73817ece2bde8781cecd":"0736cc39393dbfd41b179a8d6fb36d4ba26428c32d106dbbb7":"1ef24efa1b755a9475d7decb7727d391e1b9e0742966369b4d":200:0 +aes_encrypt_xts:"e42534721c057c6440e756d6e65f90548c3f5c0efb3708d0e3fec2099da6f54f":"3ba5b7afec9c73817ece2bde8781cecd":"0736cc39393dbfd41b179a8d6fb36d4ba26428c32d106dbbb7":"1ef24efa1b755a9475d7decb7727d391e1b9e0742966369b4d" AES-128-XTS Encrypt NIST XTSTestVectors #214 -aes_encrypt_xts:"935668ea1764559c0c172646d27545a7b4e8427f8cd3e8eb2f13ca88c8befb73":"81098e82199c910d09dead25217beb0e":"8d5c532f2e3be41f333da1eb0ec1a992bd693711ed857c1dab":"ff32c690c16217c8d37812242e18970d8690934678d24fa895":200:0 +aes_encrypt_xts:"935668ea1764559c0c172646d27545a7b4e8427f8cd3e8eb2f13ca88c8befb73":"81098e82199c910d09dead25217beb0e":"8d5c532f2e3be41f333da1eb0ec1a992bd693711ed857c1dab":"ff32c690c16217c8d37812242e18970d8690934678d24fa895" AES-128-XTS Encrypt NIST XTSTestVectors #215 -aes_encrypt_xts:"07f19291810afe5cbf2794091307d0ceb0ee40a84b60eb3dade5994cfc4308cd":"a461f6c8dea6ce1b0bb1448949a0f457":"e37955490db3df6147ea414187db5427dbe6ec8e28c1f08036":"cc151c98f0a770134509fbd3e176ba97f53a89f8b87cf4c1f1":200:0 +aes_encrypt_xts:"07f19291810afe5cbf2794091307d0ceb0ee40a84b60eb3dade5994cfc4308cd":"a461f6c8dea6ce1b0bb1448949a0f457":"e37955490db3df6147ea414187db5427dbe6ec8e28c1f08036":"cc151c98f0a770134509fbd3e176ba97f53a89f8b87cf4c1f1" AES-128-XTS Encrypt NIST XTSTestVectors #216 -aes_encrypt_xts:"06f23047f2b67ab05585be6d84ecffb67bf1afb8a7d2c991e4d92eb7018e7296":"cd2d834683418b3c99b177cb887845cf":"be9318de73b3a83590e9fe457f8e43a8b91c54bdba2d91ae40":"57ce6a3d6ef979ccd2991b2a7e99dc52269c048c8734e19ec3":200:0 +aes_encrypt_xts:"06f23047f2b67ab05585be6d84ecffb67bf1afb8a7d2c991e4d92eb7018e7296":"cd2d834683418b3c99b177cb887845cf":"be9318de73b3a83590e9fe457f8e43a8b91c54bdba2d91ae40":"57ce6a3d6ef979ccd2991b2a7e99dc52269c048c8734e19ec3" AES-128-XTS Encrypt NIST XTSTestVectors #217 -aes_encrypt_xts:"61f51917fe4c4a6176d5d157a555118da3668bc7cdda89f65b71466ad4462b29":"09530973916984418ef9e9c9e3f333fc":"541011ea4f071eb1073a542002a26ff68f5008d41b3c1a6a3f":"c5620250d6d5c90366baadd667e2e938eb1faa81345be9d493":200:0 +aes_encrypt_xts:"61f51917fe4c4a6176d5d157a555118da3668bc7cdda89f65b71466ad4462b29":"09530973916984418ef9e9c9e3f333fc":"541011ea4f071eb1073a542002a26ff68f5008d41b3c1a6a3f":"c5620250d6d5c90366baadd667e2e938eb1faa81345be9d493" AES-128-XTS Encrypt NIST XTSTestVectors #218 -aes_encrypt_xts:"99dd1a65a9437f8a6cb15b7504be84475b43028680d481c0ec2c33f105f4fe37":"1d6a6528e8bc0d9f15f28cbde9dbbbfb":"91108381030c7df63e65f35bbd591f7fecb9d1038ece29d3e4":"8e675302665e5f53cea616e1689e80ef7a67f463c5de2c4113":200:0 +aes_encrypt_xts:"99dd1a65a9437f8a6cb15b7504be84475b43028680d481c0ec2c33f105f4fe37":"1d6a6528e8bc0d9f15f28cbde9dbbbfb":"91108381030c7df63e65f35bbd591f7fecb9d1038ece29d3e4":"8e675302665e5f53cea616e1689e80ef7a67f463c5de2c4113" AES-128-XTS Encrypt NIST XTSTestVectors #219 -aes_encrypt_xts:"7ea10c70328d9984166ddc2e923937e65469b9f980686c3722d507c0647f72f9":"9c814fe58dc8f63e064394d85c64bff8":"b7b6840563a0677ab35062bcfc31944eed4ab4f0fd360b8e31":"8770255e47e3e319bd32ff0d249e0bf4843ae62e724339569a":200:0 +aes_encrypt_xts:"7ea10c70328d9984166ddc2e923937e65469b9f980686c3722d507c0647f72f9":"9c814fe58dc8f63e064394d85c64bff8":"b7b6840563a0677ab35062bcfc31944eed4ab4f0fd360b8e31":"8770255e47e3e319bd32ff0d249e0bf4843ae62e724339569a" AES-128-XTS Encrypt NIST XTSTestVectors #220 -aes_encrypt_xts:"c3ef8390b1d9264d1daa652e210871c98680a450cefe30f418b7c8fbda75c49c":"035bb337c94f4a14ca15103e89b47413":"547f2dccf98871153d5b5483c3e02ed6b729ced86636a0ffbf":"173a1b4b09522cd1866deed0f47da469c798b29daa449972c0":200:0 +aes_encrypt_xts:"c3ef8390b1d9264d1daa652e210871c98680a450cefe30f418b7c8fbda75c49c":"035bb337c94f4a14ca15103e89b47413":"547f2dccf98871153d5b5483c3e02ed6b729ced86636a0ffbf":"173a1b4b09522cd1866deed0f47da469c798b29daa449972c0" AES-128-XTS Encrypt NIST XTSTestVectors #221 -aes_encrypt_xts:"5bb35fb381c55315902d5185379a2b1609e998404b37f79e7f1187dbf8eb48e1":"6e4b057c0438c33b60a30e21b14a7d48":"d1167f61f0c9ba43d1510965a3d1981d87aa59a118a119cdd7":"ef9643acd4e886f0a793bf5a2803545d095e27b57870277a2f":200:0 +aes_encrypt_xts:"5bb35fb381c55315902d5185379a2b1609e998404b37f79e7f1187dbf8eb48e1":"6e4b057c0438c33b60a30e21b14a7d48":"d1167f61f0c9ba43d1510965a3d1981d87aa59a118a119cdd7":"ef9643acd4e886f0a793bf5a2803545d095e27b57870277a2f" AES-128-XTS Encrypt NIST XTSTestVectors #222 -aes_encrypt_xts:"8334258820cdd938d89f6238e2562ff138b5c622cdb3d8665f2ba866c9064f9c":"f803bbbb08f2602f3cd9953625e5bbbd":"1f6639b1fc46d7515b67fd689f1e26211b9f0c08da40a067e7":"2ae630af91ce83adbecdcdc71636f688527e141fb63a6c1867":200:0 +aes_encrypt_xts:"8334258820cdd938d89f6238e2562ff138b5c622cdb3d8665f2ba866c9064f9c":"f803bbbb08f2602f3cd9953625e5bbbd":"1f6639b1fc46d7515b67fd689f1e26211b9f0c08da40a067e7":"2ae630af91ce83adbecdcdc71636f688527e141fb63a6c1867" AES-128-XTS Encrypt NIST XTSTestVectors #223 -aes_encrypt_xts:"8ce4f0d2d06a5ca0930ede520fda57804cf48d6e44c957997d8f4c00dad78013":"9ae179c73dc59514c077372c4bc52484":"82d23241cba5789da826aadbbcb7b08c06b6454e9cf6721fab":"68af115227c41990d9bc1a0c95e40d45fc9a277331666197b9":200:0 +aes_encrypt_xts:"8ce4f0d2d06a5ca0930ede520fda57804cf48d6e44c957997d8f4c00dad78013":"9ae179c73dc59514c077372c4bc52484":"82d23241cba5789da826aadbbcb7b08c06b6454e9cf6721fab":"68af115227c41990d9bc1a0c95e40d45fc9a277331666197b9" AES-128-XTS Encrypt NIST XTSTestVectors #224 -aes_encrypt_xts:"614038df17f7d8c72c512dde15dc748be6f054e574a5f395ce488303c8b0af77":"a44bc4fa2f56dbe6c2d2f9663ed64144":"15b57091569393b05f5d49077c9d3e084e061077e929a74a4e":"a027ed474e8e8d856fe5d956f83a101910733f84c34f92fc73":200:0 +aes_encrypt_xts:"614038df17f7d8c72c512dde15dc748be6f054e574a5f395ce488303c8b0af77":"a44bc4fa2f56dbe6c2d2f9663ed64144":"15b57091569393b05f5d49077c9d3e084e061077e929a74a4e":"a027ed474e8e8d856fe5d956f83a101910733f84c34f92fc73" AES-128-XTS Encrypt NIST XTSTestVectors #225 -aes_encrypt_xts:"13f36a1169f07b03b8a1b096b3783abf921acc0df08f86f7356cc71209d03378":"5f6e0532d4454315781c77215f7f95d9":"4873b4c0fad95ff43c18cec8cf8d20e379819394a7192beb2d":"4c6986699bebc8de4ef1761264cae27b4b851ea2bd0531d303":200:0 +aes_encrypt_xts:"13f36a1169f07b03b8a1b096b3783abf921acc0df08f86f7356cc71209d03378":"5f6e0532d4454315781c77215f7f95d9":"4873b4c0fad95ff43c18cec8cf8d20e379819394a7192beb2d":"4c6986699bebc8de4ef1761264cae27b4b851ea2bd0531d303" AES-128-XTS Encrypt NIST XTSTestVectors #226 -aes_encrypt_xts:"a3a739144df9d7f1db448c1c07fa899912ded87441b97b46f8207ff257422d17":"13eddbb266a7f9969b23c42947670dbf":"011ed8e077c4360422189b97ad0b06b9bd94a627e912af700b":"cdb7d40efa547e1c4c09b471a7442a382323c6e81245e3d6cf":200:0 +aes_encrypt_xts:"a3a739144df9d7f1db448c1c07fa899912ded87441b97b46f8207ff257422d17":"13eddbb266a7f9969b23c42947670dbf":"011ed8e077c4360422189b97ad0b06b9bd94a627e912af700b":"cdb7d40efa547e1c4c09b471a7442a382323c6e81245e3d6cf" AES-128-XTS Encrypt NIST XTSTestVectors #227 -aes_encrypt_xts:"c384af65fa8da0d2746c9b7dc5996e28953a6bd8c75cf4c4ec4e609f239f8a59":"6ce9761b07bbdb6b8b8fd51f0ea61b84":"db59fdefaa83e896d0d400abe0f829eede6d3d4603ab370f23":"7823c42f128e3e4309591bb92267545710fa323a911ba7c3ce":200:0 +aes_encrypt_xts:"c384af65fa8da0d2746c9b7dc5996e28953a6bd8c75cf4c4ec4e609f239f8a59":"6ce9761b07bbdb6b8b8fd51f0ea61b84":"db59fdefaa83e896d0d400abe0f829eede6d3d4603ab370f23":"7823c42f128e3e4309591bb92267545710fa323a911ba7c3ce" AES-128-XTS Encrypt NIST XTSTestVectors #228 -aes_encrypt_xts:"1c134f80758315cab936c24974ecc60e1f5bbc24eaebd031db70a6beeaefaab1":"e5e4d359a0a110ad39fef374c4a8e10a":"1bbcedd6dc143048476166e4e507193478eb5a73c27f465cf2":"ed3eb03768fb347d8f78f0b889ba3246d9028a20f91d856e2e":200:0 +aes_encrypt_xts:"1c134f80758315cab936c24974ecc60e1f5bbc24eaebd031db70a6beeaefaab1":"e5e4d359a0a110ad39fef374c4a8e10a":"1bbcedd6dc143048476166e4e507193478eb5a73c27f465cf2":"ed3eb03768fb347d8f78f0b889ba3246d9028a20f91d856e2e" AES-128-XTS Encrypt NIST XTSTestVectors #229 -aes_encrypt_xts:"5fe96e240f72596e3ce402133b7e0cad2078de90c9ada25c3c63b4de22ed4214":"7b3b95cf9b24d136817bfb3481fc3ecc":"a7c2799c0c6237f53d1758587b4c55760127ed8bf2aa8e06ce":"a58d3740942ee757576f5702ae0143aaf09e0d4eba5cb5676b":200:0 +aes_encrypt_xts:"5fe96e240f72596e3ce402133b7e0cad2078de90c9ada25c3c63b4de22ed4214":"7b3b95cf9b24d136817bfb3481fc3ecc":"a7c2799c0c6237f53d1758587b4c55760127ed8bf2aa8e06ce":"a58d3740942ee757576f5702ae0143aaf09e0d4eba5cb5676b" AES-128-XTS Encrypt NIST XTSTestVectors #230 -aes_encrypt_xts:"40f0f2f18c4c77b71002658d66955b129066fe9ef164608e3a06452c180c884e":"65133652438f1b0ad14752e500408e39":"78150268b20c8661b073657b1e4f3f7e11bb51bd95c14f2165":"bd3258080df1df07cb21633264eae50f3c6cd4c6b409c8c02e":200:0 +aes_encrypt_xts:"40f0f2f18c4c77b71002658d66955b129066fe9ef164608e3a06452c180c884e":"65133652438f1b0ad14752e500408e39":"78150268b20c8661b073657b1e4f3f7e11bb51bd95c14f2165":"bd3258080df1df07cb21633264eae50f3c6cd4c6b409c8c02e" AES-128-XTS Encrypt NIST XTSTestVectors #231 -aes_encrypt_xts:"390ace7df8d9892010652a8862b171a7d058dea4965f2ce695e1491156e8d6fc":"ea297b9462b8fa94fb3391669c61ecfa":"991f23936a4eec5e7ba83044ba842cef061eaeaf8e799228a4":"a67772f97982680e75e74e4a38f2ba0b8392e183d277d1a25e":200:0 +aes_encrypt_xts:"390ace7df8d9892010652a8862b171a7d058dea4965f2ce695e1491156e8d6fc":"ea297b9462b8fa94fb3391669c61ecfa":"991f23936a4eec5e7ba83044ba842cef061eaeaf8e799228a4":"a67772f97982680e75e74e4a38f2ba0b8392e183d277d1a25e" AES-128-XTS Encrypt NIST XTSTestVectors #232 -aes_encrypt_xts:"25ba7f7fd6a6a73dab8e10b650a9760d54eee4c2ac329a93213cbb1cd85bdf82":"0a88554a4c8a6161a87f6e6d34716697":"258fb3ec75e89725ce871adc4c492dba868d62bcdbf3786932":"ecae91b32ba90a35d01e7499d09c136357fef2926d046d4c6e":200:0 +aes_encrypt_xts:"25ba7f7fd6a6a73dab8e10b650a9760d54eee4c2ac329a93213cbb1cd85bdf82":"0a88554a4c8a6161a87f6e6d34716697":"258fb3ec75e89725ce871adc4c492dba868d62bcdbf3786932":"ecae91b32ba90a35d01e7499d09c136357fef2926d046d4c6e" AES-128-XTS Encrypt NIST XTSTestVectors #233 -aes_encrypt_xts:"17c11527b98a80e5368005fcf05173c5121cee6107c716b54a9e2aeec4ff2c79":"27f00b6624d4f10444c85c95b1f6a7e5":"a8acdc65502df6a6fd0dd2e0fc0593b5bf98f820f5468e3595":"f39239affedfd427901e58094b93ab8016b74f88a91c03f05a":200:0 +aes_encrypt_xts:"17c11527b98a80e5368005fcf05173c5121cee6107c716b54a9e2aeec4ff2c79":"27f00b6624d4f10444c85c95b1f6a7e5":"a8acdc65502df6a6fd0dd2e0fc0593b5bf98f820f5468e3595":"f39239affedfd427901e58094b93ab8016b74f88a91c03f05a" AES-128-XTS Encrypt NIST XTSTestVectors #234 -aes_encrypt_xts:"5a09c86603053ee166d97b8b656eddceec74be955a22ac9d530b87c5d18e2ef7":"5832369a401fd6e4ed57932dfdba85ae":"bb8411818a8be2285615a5c1f5e1a64d328f98f379e1644239":"48ccd45842d2790c34ff5c66b501debf569e797573beaa00ac":200:0 +aes_encrypt_xts:"5a09c86603053ee166d97b8b656eddceec74be955a22ac9d530b87c5d18e2ef7":"5832369a401fd6e4ed57932dfdba85ae":"bb8411818a8be2285615a5c1f5e1a64d328f98f379e1644239":"48ccd45842d2790c34ff5c66b501debf569e797573beaa00ac" AES-128-XTS Encrypt NIST XTSTestVectors #235 -aes_encrypt_xts:"ca36f1f6934b300e5c975f648fbf6a0ae3e7c29c76b30fcd5f49592a2394b1a5":"a656913d21adc644c72fec61ed050c3f":"4f484497dc3cdbb3816047195c04ec2cc5faf97b228c1839fd":"52a0ebbc5391d438110f7277966136c880c43fe1f2f0d70aa7":200:0 +aes_encrypt_xts:"ca36f1f6934b300e5c975f648fbf6a0ae3e7c29c76b30fcd5f49592a2394b1a5":"a656913d21adc644c72fec61ed050c3f":"4f484497dc3cdbb3816047195c04ec2cc5faf97b228c1839fd":"52a0ebbc5391d438110f7277966136c880c43fe1f2f0d70aa7" AES-128-XTS Encrypt NIST XTSTestVectors #236 -aes_encrypt_xts:"93035c14d384a781dc92d29f446ba709c5d32351a908c1a56d7c4447050786ce":"2b628a380440823f22ebdfa50934ba23":"b4ac378eadf90f8f53f64bda7dedb2b6286ac19848d11b896a":"a0acb3739ffd5008bf57b3e292b70e33e8b71a68a8a12f0b75":200:0 +aes_encrypt_xts:"93035c14d384a781dc92d29f446ba709c5d32351a908c1a56d7c4447050786ce":"2b628a380440823f22ebdfa50934ba23":"b4ac378eadf90f8f53f64bda7dedb2b6286ac19848d11b896a":"a0acb3739ffd5008bf57b3e292b70e33e8b71a68a8a12f0b75" AES-128-XTS Encrypt NIST XTSTestVectors #237 -aes_encrypt_xts:"4486838e62524e1c6e05cc1fd3363ebb50dbd59ba6147b0c13da6beb98f2388e":"d70f77fcd9529efda9930f0b2921ab17":"bf0db2891f20b54cc7d7c32c467ddee126c7912c861b69bba1":"78c9bb3fe16d7c5e11e7f69a12da5d0a9decfa070277c9b709":200:0 +aes_encrypt_xts:"4486838e62524e1c6e05cc1fd3363ebb50dbd59ba6147b0c13da6beb98f2388e":"d70f77fcd9529efda9930f0b2921ab17":"bf0db2891f20b54cc7d7c32c467ddee126c7912c861b69bba1":"78c9bb3fe16d7c5e11e7f69a12da5d0a9decfa070277c9b709" AES-128-XTS Encrypt NIST XTSTestVectors #238 -aes_encrypt_xts:"9884700b29e65a7ce78d59d16471019eeda7f8f9f054a57cb89a19d7b3eb6c52":"0562e1568b2264be65067a6a4e767924":"b65a91f6aa728b64282bb2c245e232bc3aa8030e78eb44aca8":"c4c87711919613f8d2bee324f07d6220e0c07f20206b611d50":200:0 +aes_encrypt_xts:"9884700b29e65a7ce78d59d16471019eeda7f8f9f054a57cb89a19d7b3eb6c52":"0562e1568b2264be65067a6a4e767924":"b65a91f6aa728b64282bb2c245e232bc3aa8030e78eb44aca8":"c4c87711919613f8d2bee324f07d6220e0c07f20206b611d50" AES-128-XTS Encrypt NIST XTSTestVectors #239 -aes_encrypt_xts:"37b793ff51cd83f01ba5d0c2186ed2ac81637fd759022e434d9dc4491fb218a0":"656489f2473a021fbdca7465d95bc6e6":"8408a1a7514eb81c9be042316963e7ea9687b3bde92b285d9e":"a62ccf9d5b31b6d1e428a93c3efd04f6bcf08c7746542062e8":200:0 +aes_encrypt_xts:"37b793ff51cd83f01ba5d0c2186ed2ac81637fd759022e434d9dc4491fb218a0":"656489f2473a021fbdca7465d95bc6e6":"8408a1a7514eb81c9be042316963e7ea9687b3bde92b285d9e":"a62ccf9d5b31b6d1e428a93c3efd04f6bcf08c7746542062e8" AES-128-XTS Encrypt NIST XTSTestVectors #240 -aes_encrypt_xts:"6a4f963102476f03c1961da63f100a12185586342971131e7363c031721dac39":"9476741f581a3d58ceb586dc1a1b9990":"4f8afe09801e8ab585e3f02fefdd1c157d1064fb31bf52ea15":"73b03d51cb3d7b6062c6aafc842971281417709034a99905f7":200:0 +aes_encrypt_xts:"6a4f963102476f03c1961da63f100a12185586342971131e7363c031721dac39":"9476741f581a3d58ceb586dc1a1b9990":"4f8afe09801e8ab585e3f02fefdd1c157d1064fb31bf52ea15":"73b03d51cb3d7b6062c6aafc842971281417709034a99905f7" AES-128-XTS Encrypt NIST XTSTestVectors #241 -aes_encrypt_xts:"1fc997593a1e96ae1896d2ccee36a2d977bae2039a1f266e57e07b0f3aab8dff":"324dbc298eb9fda397227016eb28be9f":"60dd3b2c4dcbbd62c7afea77b82c96a9d7c8cd124125787323":"b233384a9ae646210b6191656212cb28339679ad801e54a58e":200:0 +aes_encrypt_xts:"1fc997593a1e96ae1896d2ccee36a2d977bae2039a1f266e57e07b0f3aab8dff":"324dbc298eb9fda397227016eb28be9f":"60dd3b2c4dcbbd62c7afea77b82c96a9d7c8cd124125787323":"b233384a9ae646210b6191656212cb28339679ad801e54a58e" AES-128-XTS Encrypt NIST XTSTestVectors #242 -aes_encrypt_xts:"501d8b1e26db47dca3f3b8a5d82031e11785c35947b4add20128f0fd7413e61f":"65aac528e07922190c825e59962bee46":"d570ab4468efdc2afd13a7524f1e74f89a150df75aa6ba1d2b":"db41a8f6c57e3391097035b5d40bc2625213f1c6bb78f50aa9":200:0 +aes_encrypt_xts:"501d8b1e26db47dca3f3b8a5d82031e11785c35947b4add20128f0fd7413e61f":"65aac528e07922190c825e59962bee46":"d570ab4468efdc2afd13a7524f1e74f89a150df75aa6ba1d2b":"db41a8f6c57e3391097035b5d40bc2625213f1c6bb78f50aa9" AES-128-XTS Encrypt NIST XTSTestVectors #243 -aes_encrypt_xts:"ad1aa2aa6d67b2ee4d2b2bb63116c4422b87a3f537889a9f6e19ce526f8a76da":"daf6877ddc2930804422b2a25bd83cea":"d4648b3e737082177ed6ccc1caf48500cfdbeec2f052522fbe":"42f89e670adbb6484ca15d9326a411dfa5042507fd549960d5":200:0 +aes_encrypt_xts:"ad1aa2aa6d67b2ee4d2b2bb63116c4422b87a3f537889a9f6e19ce526f8a76da":"daf6877ddc2930804422b2a25bd83cea":"d4648b3e737082177ed6ccc1caf48500cfdbeec2f052522fbe":"42f89e670adbb6484ca15d9326a411dfa5042507fd549960d5" AES-128-XTS Encrypt NIST XTSTestVectors #244 -aes_encrypt_xts:"90b0e0ad653e1b0784c3ab33a95a08819eee61cb46f866b5fec5e8cf9e47fc70":"0e631c6f1e4026fe38e7867e26a39295":"aaff25cd8502ddade1f0f0b50882f6d1741f44405ba7a9222a":"fdd741e15a8e53cef1a78bbf9f068150fb6c91a89b57212aad":200:0 +aes_encrypt_xts:"90b0e0ad653e1b0784c3ab33a95a08819eee61cb46f866b5fec5e8cf9e47fc70":"0e631c6f1e4026fe38e7867e26a39295":"aaff25cd8502ddade1f0f0b50882f6d1741f44405ba7a9222a":"fdd741e15a8e53cef1a78bbf9f068150fb6c91a89b57212aad" AES-128-XTS Encrypt NIST XTSTestVectors #245 -aes_encrypt_xts:"12920ae695dd07425a1002ab1d3eed2dc5065022500379e32bde42cd5fb849c8":"418a3273dfa013d76c17aa02b76192af":"8ed2bebaa5f42279af74a2c0cad26f152fabdad23bc07948a6":"f6e692f23c0917e638a80031bc57b403299a797b7986a3e514":200:0 +aes_encrypt_xts:"12920ae695dd07425a1002ab1d3eed2dc5065022500379e32bde42cd5fb849c8":"418a3273dfa013d76c17aa02b76192af":"8ed2bebaa5f42279af74a2c0cad26f152fabdad23bc07948a6":"f6e692f23c0917e638a80031bc57b403299a797b7986a3e514" AES-128-XTS Encrypt NIST XTSTestVectors #246 -aes_encrypt_xts:"18e9fc45cdf3a24732c63763ba4b065d189ad201d45ddcd77f45aadea9cae18f":"fa4d09b5264e180b666c48eda198404c":"afbe16568bd1900c1cf60e43d295187cac1abfb26ac55a896e":"3d1af03817d694a492796a0661980a80acee3147c83e171cda":200:0 +aes_encrypt_xts:"18e9fc45cdf3a24732c63763ba4b065d189ad201d45ddcd77f45aadea9cae18f":"fa4d09b5264e180b666c48eda198404c":"afbe16568bd1900c1cf60e43d295187cac1abfb26ac55a896e":"3d1af03817d694a492796a0661980a80acee3147c83e171cda" AES-128-XTS Encrypt NIST XTSTestVectors #247 -aes_encrypt_xts:"9e4a0c44dee66b7f10c90159391e63cca7b6cf476a217cd29c3375a4ee84ce09":"1636eb2a5f8133d68cbc8781f34201fa":"1f6ce4e0e8545e7d4a96ea2e886986c53aa78dc32b2c6d8d64":"cd09e978f6cc8e85d66b6ce2a07b712aaf4af448488cef38dd":200:0 +aes_encrypt_xts:"9e4a0c44dee66b7f10c90159391e63cca7b6cf476a217cd29c3375a4ee84ce09":"1636eb2a5f8133d68cbc8781f34201fa":"1f6ce4e0e8545e7d4a96ea2e886986c53aa78dc32b2c6d8d64":"cd09e978f6cc8e85d66b6ce2a07b712aaf4af448488cef38dd" AES-128-XTS Encrypt NIST XTSTestVectors #248 -aes_encrypt_xts:"9094d67639a33c185d6fba5139a874bbc647de93995ff0f2527a38876954ae64":"eac4c96f67898f4a828fe775300dda69":"f44fc9c7c06697f3d67ad70e2e456e58ec183a8546a95d8a1a":"57c341b4129b8b116485e33baafca44864959b6fcd75996f4a":200:0 +aes_encrypt_xts:"9094d67639a33c185d6fba5139a874bbc647de93995ff0f2527a38876954ae64":"eac4c96f67898f4a828fe775300dda69":"f44fc9c7c06697f3d67ad70e2e456e58ec183a8546a95d8a1a":"57c341b4129b8b116485e33baafca44864959b6fcd75996f4a" AES-128-XTS Encrypt NIST XTSTestVectors #249 -aes_encrypt_xts:"42f87222102586c14f2a609cebbe96aa8374efbb38b15a66cdf69db0710dd776":"042fd8940b15e78b285528c6804a55cf":"16ee2ef9fc7dff88575683e2c2965ace93ef2cc0fe880b8cd9":"e326d372cfee988286f6d0ee8167578e2c0a0fd06df913d355":200:0 +aes_encrypt_xts:"42f87222102586c14f2a609cebbe96aa8374efbb38b15a66cdf69db0710dd776":"042fd8940b15e78b285528c6804a55cf":"16ee2ef9fc7dff88575683e2c2965ace93ef2cc0fe880b8cd9":"e326d372cfee988286f6d0ee8167578e2c0a0fd06df913d355" AES-128-XTS Encrypt NIST XTSTestVectors #250 -aes_encrypt_xts:"fc5fac80b69e7780adf841c49936d221d0da385ed4e4d384ae61c0018ceea102":"6a7c2ff7b1cae2a359b96c1606b10679":"e3d2dc05f30541bc7976ef482322e3ac32f8c1cf63f00f8ed1":"25932ca1dedefcdec569d1305f8abc1d25ab21728bd5d5ac5c":200:0 +aes_encrypt_xts:"fc5fac80b69e7780adf841c49936d221d0da385ed4e4d384ae61c0018ceea102":"6a7c2ff7b1cae2a359b96c1606b10679":"e3d2dc05f30541bc7976ef482322e3ac32f8c1cf63f00f8ed1":"25932ca1dedefcdec569d1305f8abc1d25ab21728bd5d5ac5c" AES-128-XTS Encrypt NIST XTSTestVectors #251 -aes_encrypt_xts:"e764d4a43c23500302f3cce9f4d78a922f31e822e68c41be20efd3c981eb4e9b":"11ce717ef2e553c32f0cc16cb0d4b0e6":"14962b52355600e138d3bebe594ae85c96c5027a6d65887c01":"41f829f09977f4724d4c1fe387b7ea0135918d61d6c24aaa81":200:0 +aes_encrypt_xts:"e764d4a43c23500302f3cce9f4d78a922f31e822e68c41be20efd3c981eb4e9b":"11ce717ef2e553c32f0cc16cb0d4b0e6":"14962b52355600e138d3bebe594ae85c96c5027a6d65887c01":"41f829f09977f4724d4c1fe387b7ea0135918d61d6c24aaa81" AES-128-XTS Encrypt NIST XTSTestVectors #252 -aes_encrypt_xts:"4977ab40842fee15b0d6dc0a4efc322024271836c6643631b5b7e0291051446d":"cae105ceba1f16c9882534e5bfdfe604":"6fe36fb5e07663cb712f009052a606efef3c1e0b45f967d9ae":"5753b4417ed0ffe081f7cd2a23fe14beb9126c2b1bbf1b8175":200:0 +aes_encrypt_xts:"4977ab40842fee15b0d6dc0a4efc322024271836c6643631b5b7e0291051446d":"cae105ceba1f16c9882534e5bfdfe604":"6fe36fb5e07663cb712f009052a606efef3c1e0b45f967d9ae":"5753b4417ed0ffe081f7cd2a23fe14beb9126c2b1bbf1b8175" AES-128-XTS Encrypt NIST XTSTestVectors #253 -aes_encrypt_xts:"451c1ffff9a02867453a5f2389319c9e1f9eae7a95338be76ed7bae53513b6ee":"e6bc99a1a2c4d5e1d3107471bfcb0599":"5f901756506ce784edcc45320a081497476fe0a5e946c32798":"0dd88dd144165dc85984b134e2e9d9c3bd471768ea6984266f":200:0 +aes_encrypt_xts:"451c1ffff9a02867453a5f2389319c9e1f9eae7a95338be76ed7bae53513b6ee":"e6bc99a1a2c4d5e1d3107471bfcb0599":"5f901756506ce784edcc45320a081497476fe0a5e946c32798":"0dd88dd144165dc85984b134e2e9d9c3bd471768ea6984266f" AES-128-XTS Encrypt NIST XTSTestVectors #254 -aes_encrypt_xts:"8a1d702fccd2215212ef3d82497025bc73cc171bc53b406b3bbd415b5189df3f":"bceee9fd3dc69ecaeb7c7f8260a1029c":"ee3bcd52a4c80435404705fd2c5b2193fa425fdc78171c0e20":"95a6736bbf7ad45517ea25b623a8de1dbd13b358c24cf4ee30":200:0 +aes_encrypt_xts:"8a1d702fccd2215212ef3d82497025bc73cc171bc53b406b3bbd415b5189df3f":"bceee9fd3dc69ecaeb7c7f8260a1029c":"ee3bcd52a4c80435404705fd2c5b2193fa425fdc78171c0e20":"95a6736bbf7ad45517ea25b623a8de1dbd13b358c24cf4ee30" AES-128-XTS Encrypt NIST XTSTestVectors #255 -aes_encrypt_xts:"675753a16ecf9b40c66fd1f6c3973b061d76bdd02a0e9c7a0ac5c09630b947ad":"1d987500e5bed8f6736549bb45f8cf5b":"a6e9d9c2e87eba4e6fa2f1ab37d0fb5c46e809ef5f044ab61f":"a43341fe59c1f3bb9a8cbf5c71c8c4c02172392df716890733":200:0 +aes_encrypt_xts:"675753a16ecf9b40c66fd1f6c3973b061d76bdd02a0e9c7a0ac5c09630b947ad":"1d987500e5bed8f6736549bb45f8cf5b":"a6e9d9c2e87eba4e6fa2f1ab37d0fb5c46e809ef5f044ab61f":"a43341fe59c1f3bb9a8cbf5c71c8c4c02172392df716890733" AES-128-XTS Encrypt NIST XTSTestVectors #256 -aes_encrypt_xts:"3e72c4e778e339f254fa2dc5a7998e9c5677a509e1960302314cda964db7924b":"d5bdd52d82dd3fe5d8900ee817571012":"72be49ccdfb8328cb2bbb6f10eac20cba9d1176b8e04ac467d":"d4da53e7ef94fb114fe81c349ae469a0eb2b968871cdf7c9d5":200:0 +aes_encrypt_xts:"3e72c4e778e339f254fa2dc5a7998e9c5677a509e1960302314cda964db7924b":"d5bdd52d82dd3fe5d8900ee817571012":"72be49ccdfb8328cb2bbb6f10eac20cba9d1176b8e04ac467d":"d4da53e7ef94fb114fe81c349ae469a0eb2b968871cdf7c9d5" AES-128-XTS Encrypt NIST XTSTestVectors #257 -aes_encrypt_xts:"ebee2706f8fe0b6c4363fd678037b926b2df1a0e79d4f5ac293b6a7ebda63e16":"92651101fad79d68bba6aee4647e2a7d":"2bbb8f7902366bcd95ead90d14517e46c15d28be47e97923fd":"79d75b0f0f963732640ef039d8d662db11037737779a050390":200:0 +aes_encrypt_xts:"ebee2706f8fe0b6c4363fd678037b926b2df1a0e79d4f5ac293b6a7ebda63e16":"92651101fad79d68bba6aee4647e2a7d":"2bbb8f7902366bcd95ead90d14517e46c15d28be47e97923fd":"79d75b0f0f963732640ef039d8d662db11037737779a050390" AES-128-XTS Encrypt NIST XTSTestVectors #258 -aes_encrypt_xts:"ef279cb5100ec77546f36ad5fedcc776666cbc087d2280a7507de679a8347952":"7e10c655b1118baa83ad903128863d3f":"4b84652f951e21461c50947ae64913d16110f7419bf7e9c3f1":"ff14d1097efd5146efa1c3b9ceb6d57a650ecd24f19523daee":200:0 +aes_encrypt_xts:"ef279cb5100ec77546f36ad5fedcc776666cbc087d2280a7507de679a8347952":"7e10c655b1118baa83ad903128863d3f":"4b84652f951e21461c50947ae64913d16110f7419bf7e9c3f1":"ff14d1097efd5146efa1c3b9ceb6d57a650ecd24f19523daee" AES-128-XTS Encrypt NIST XTSTestVectors #259 -aes_encrypt_xts:"049e2338ed7b9cb2ce6942e7417f768bd05767f1310f0142c1760f9bf6fc34b2":"a224decdd41c72d63a5bf078c4e03129":"db3d252e3b9a3153547f24df015f5e12a94c94e29e2cd14096":"ab3462a486f8bad95f0ee099fcdafadbcaaff73cb28f6dae62":200:0 +aes_encrypt_xts:"049e2338ed7b9cb2ce6942e7417f768bd05767f1310f0142c1760f9bf6fc34b2":"a224decdd41c72d63a5bf078c4e03129":"db3d252e3b9a3153547f24df015f5e12a94c94e29e2cd14096":"ab3462a486f8bad95f0ee099fcdafadbcaaff73cb28f6dae62" AES-128-XTS Encrypt NIST XTSTestVectors #260 -aes_encrypt_xts:"c784ccf72ce67db21fac9b2db649b7f0b2d319b734dfd7d8f37457e8c4ea8b9f":"c57c6f940224ea7e24fdbb3688337721":"ce5fb89b2c313070fcd85a310d90348bb103af093c38633a93":"3d8809d6f5d4fbaa893f4832657ec3fa8d2c31bec15107624f":200:0 +aes_encrypt_xts:"c784ccf72ce67db21fac9b2db649b7f0b2d319b734dfd7d8f37457e8c4ea8b9f":"c57c6f940224ea7e24fdbb3688337721":"ce5fb89b2c313070fcd85a310d90348bb103af093c38633a93":"3d8809d6f5d4fbaa893f4832657ec3fa8d2c31bec15107624f" AES-128-XTS Encrypt NIST XTSTestVectors #261 -aes_encrypt_xts:"0da2ef2b3e42652567a9d7e00d78072a4c528b8a1c444cb2dbf725997876f13b":"fdbb92831b9b2f3758295bd405a1b9fd":"fa914a5d45afb654e82a33a52b4ab2c4e92f1b0ca39d75654b":"e4ae621ce3ba1f2423532e186ed3ce78e93c1bee82cd92c32e":200:0 +aes_encrypt_xts:"0da2ef2b3e42652567a9d7e00d78072a4c528b8a1c444cb2dbf725997876f13b":"fdbb92831b9b2f3758295bd405a1b9fd":"fa914a5d45afb654e82a33a52b4ab2c4e92f1b0ca39d75654b":"e4ae621ce3ba1f2423532e186ed3ce78e93c1bee82cd92c32e" AES-128-XTS Encrypt NIST XTSTestVectors #262 -aes_encrypt_xts:"b17254f48188c2f7602323e5a8da39f31a9585725b204067f49057e03be1ff3f":"94b401bbc4b9f73810e88438bbb0d1fb":"306d05045dbc4ad0c7d8459001fb5cc1537f8e77aee2e446a6":"4fed11ea08dccdddc6f97c8039959218636e224069fe25b06e":200:0 +aes_encrypt_xts:"b17254f48188c2f7602323e5a8da39f31a9585725b204067f49057e03be1ff3f":"94b401bbc4b9f73810e88438bbb0d1fb":"306d05045dbc4ad0c7d8459001fb5cc1537f8e77aee2e446a6":"4fed11ea08dccdddc6f97c8039959218636e224069fe25b06e" AES-128-XTS Encrypt NIST XTSTestVectors #263 -aes_encrypt_xts:"3c05a555da1595e9c151c8a55b149f6caef6eb3326e5de58c4f902e53f0dcf00":"1fae8f3e5607ed4d89ca4e8d21f849a4":"916687ddaa519303e38207bd1748d19727c347af8e7c5c4b34":"74d2320508f2b60ce3ed6ed6fbc12908f14c5dcaf2d890b37e":200:0 +aes_encrypt_xts:"3c05a555da1595e9c151c8a55b149f6caef6eb3326e5de58c4f902e53f0dcf00":"1fae8f3e5607ed4d89ca4e8d21f849a4":"916687ddaa519303e38207bd1748d19727c347af8e7c5c4b34":"74d2320508f2b60ce3ed6ed6fbc12908f14c5dcaf2d890b37e" AES-128-XTS Encrypt NIST XTSTestVectors #264 -aes_encrypt_xts:"edc7ddf1af418fe0ec30c142526fb970f3e70c4183a722246eea6f32fe26e4fb":"903243958e525f03a1774754ccee5cd2":"efe22bf3eac0aff0a8f798b8dc2bd967a740cb2afd018df1a7":"0e9ec45e968e1103aa6f78a5b23706189e8f61fcc8758f99f2":200:0 +aes_encrypt_xts:"edc7ddf1af418fe0ec30c142526fb970f3e70c4183a722246eea6f32fe26e4fb":"903243958e525f03a1774754ccee5cd2":"efe22bf3eac0aff0a8f798b8dc2bd967a740cb2afd018df1a7":"0e9ec45e968e1103aa6f78a5b23706189e8f61fcc8758f99f2" AES-128-XTS Encrypt NIST XTSTestVectors #265 -aes_encrypt_xts:"3644b6e1ddad06c36ba2a369841de978b182fe90f1767d7652568a7218fb3a9e":"da4bf695b21d606e7cd7c6dbcb64d074":"a99a87841ab828375a7177b863bcf2b9bfe1bda02dfefa0200":"feef1ded263a273989f4a16b907edfd9e9f4e2f085509ce2ba":200:0 +aes_encrypt_xts:"3644b6e1ddad06c36ba2a369841de978b182fe90f1767d7652568a7218fb3a9e":"da4bf695b21d606e7cd7c6dbcb64d074":"a99a87841ab828375a7177b863bcf2b9bfe1bda02dfefa0200":"feef1ded263a273989f4a16b907edfd9e9f4e2f085509ce2ba" AES-128-XTS Encrypt NIST XTSTestVectors #266 -aes_encrypt_xts:"69debf9b3c38faae3ca9927bdeac8c3609b88b87ac269afc2bd63d221bb35d75":"1f3fb765167e0e91773ce97f102cda60":"0d374a41984b539d6bec39316473637b1c8a5b48b5734406ca":"bfb95b7fcea88899b5d57d9405c16403e68c2a42fa5a6ab450":200:0 +aes_encrypt_xts:"69debf9b3c38faae3ca9927bdeac8c3609b88b87ac269afc2bd63d221bb35d75":"1f3fb765167e0e91773ce97f102cda60":"0d374a41984b539d6bec39316473637b1c8a5b48b5734406ca":"bfb95b7fcea88899b5d57d9405c16403e68c2a42fa5a6ab450" AES-128-XTS Encrypt NIST XTSTestVectors #267 -aes_encrypt_xts:"b6cb0e7c03eb812f701e5e562db7eef80adeda2402881013f0c00dc0d8a14274":"1e26366785b21d1487c0945cfebd1b4a":"c460940eb8afb254a5c3dc834dbb088a69af761b4884ec48a2":"b5400e6a5a0dea27214ad579229b579120e375a5ec6a0fe9e2":200:0 +aes_encrypt_xts:"b6cb0e7c03eb812f701e5e562db7eef80adeda2402881013f0c00dc0d8a14274":"1e26366785b21d1487c0945cfebd1b4a":"c460940eb8afb254a5c3dc834dbb088a69af761b4884ec48a2":"b5400e6a5a0dea27214ad579229b579120e375a5ec6a0fe9e2" AES-128-XTS Encrypt NIST XTSTestVectors #268 -aes_encrypt_xts:"d95260b97d7069dd2f30006d686f5d5fbf3141bfff295df70e9af4b7f3d7da65":"1807f95e6b00f8d843d118fe21cc54b7":"ec9026c8b1388d48b15aafe32f663f5024c1744ca8832d6e0a":"bef97fb5b326541fd1024b5513ffc54475715435fa86884bac":200:0 +aes_encrypt_xts:"d95260b97d7069dd2f30006d686f5d5fbf3141bfff295df70e9af4b7f3d7da65":"1807f95e6b00f8d843d118fe21cc54b7":"ec9026c8b1388d48b15aafe32f663f5024c1744ca8832d6e0a":"bef97fb5b326541fd1024b5513ffc54475715435fa86884bac" AES-128-XTS Encrypt NIST XTSTestVectors #269 -aes_encrypt_xts:"c909a9f89025137670c94a35ee280324e4e69fff32bdb92da87d618c7732f6b6":"b435909e84a9bba20a81ad63e95adc5c":"216cd882630f21f53f152d81341d3bb2dc7b6a8d8918a1616a":"8170ef0326c67578753a9995bf20dc2678ba8caec54d52d25c":200:0 +aes_encrypt_xts:"c909a9f89025137670c94a35ee280324e4e69fff32bdb92da87d618c7732f6b6":"b435909e84a9bba20a81ad63e95adc5c":"216cd882630f21f53f152d81341d3bb2dc7b6a8d8918a1616a":"8170ef0326c67578753a9995bf20dc2678ba8caec54d52d25c" AES-128-XTS Encrypt NIST XTSTestVectors #270 -aes_encrypt_xts:"2dc29601550890a4b9747ff18da7d44a977ec4cea206639702ce7580e1c5b37e":"7cf2b45cb1937a640cfc66153fc3e981":"c07c1799070c5451d9bca4424504d3cb208b2e7592ee3df086":"4ca9c280b77779c764e965e051256c94a3da4e2a81f42c01bc":200:0 +aes_encrypt_xts:"2dc29601550890a4b9747ff18da7d44a977ec4cea206639702ce7580e1c5b37e":"7cf2b45cb1937a640cfc66153fc3e981":"c07c1799070c5451d9bca4424504d3cb208b2e7592ee3df086":"4ca9c280b77779c764e965e051256c94a3da4e2a81f42c01bc" AES-128-XTS Encrypt NIST XTSTestVectors #271 -aes_encrypt_xts:"9ca7dc714099b17b71a6400bbeec2d9476dc84ac95bf855fe3e478a984ec71b3":"3797b7798f1670b9e394d6d94f9c8238":"f00ee8fce52ad07b2009122aefe5fbdde2f4357e5a4c2e1388":"d737063da8968cff0852d15a048192c3f52e9c3fbee3aaf3e6":200:0 +aes_encrypt_xts:"9ca7dc714099b17b71a6400bbeec2d9476dc84ac95bf855fe3e478a984ec71b3":"3797b7798f1670b9e394d6d94f9c8238":"f00ee8fce52ad07b2009122aefe5fbdde2f4357e5a4c2e1388":"d737063da8968cff0852d15a048192c3f52e9c3fbee3aaf3e6" AES-128-XTS Encrypt NIST XTSTestVectors #272 -aes_encrypt_xts:"0ae37f5ac48d6a2d528225506f80bd9241f17135205a1a90619baaac931e46b6":"dd65ef2b931b0ca92dd354c87c9d7bed":"ce3310cf42b951ef9cfb8e7f05b36a157478f8d3c76e62752a":"bfedd3cc1566d414c1ae19262595b5208ae552ee05289b82ff":200:0 +aes_encrypt_xts:"0ae37f5ac48d6a2d528225506f80bd9241f17135205a1a90619baaac931e46b6":"dd65ef2b931b0ca92dd354c87c9d7bed":"ce3310cf42b951ef9cfb8e7f05b36a157478f8d3c76e62752a":"bfedd3cc1566d414c1ae19262595b5208ae552ee05289b82ff" AES-128-XTS Encrypt NIST XTSTestVectors #273 -aes_encrypt_xts:"389ecd695be62d7467bbc9e4228212d0fcc46a3ab77d760635ef61f9aea4136a":"3451416be9964e0a14757aec60705838":"b7c003c267f3c95b12664d726c6e73d93baea238d23802e98f":"ae3333b90593ddf6c0c9ed6b64bf5fb53c607b8fde8e619a52":200:0 +aes_encrypt_xts:"389ecd695be62d7467bbc9e4228212d0fcc46a3ab77d760635ef61f9aea4136a":"3451416be9964e0a14757aec60705838":"b7c003c267f3c95b12664d726c6e73d93baea238d23802e98f":"ae3333b90593ddf6c0c9ed6b64bf5fb53c607b8fde8e619a52" AES-128-XTS Encrypt NIST XTSTestVectors #274 -aes_encrypt_xts:"6171891dbf04fc163e141ffd92015e3119e74b31c1122788cb6321521f2ce6e7":"c8350b5bd076b2803b8c38408d4b7d16":"2e36bae834da6926f35cb35bf1ffa396ee876f52371a9c9aa0":"b59e938bfb8b473ae264017913257ce71d081c33e4f17023f0":200:0 +aes_encrypt_xts:"6171891dbf04fc163e141ffd92015e3119e74b31c1122788cb6321521f2ce6e7":"c8350b5bd076b2803b8c38408d4b7d16":"2e36bae834da6926f35cb35bf1ffa396ee876f52371a9c9aa0":"b59e938bfb8b473ae264017913257ce71d081c33e4f17023f0" AES-128-XTS Encrypt NIST XTSTestVectors #275 -aes_encrypt_xts:"5d830cb67b77700a768ea3935335986d675a43011091ccf1777c1903dd8472c1":"b972e333fa01f5813d3f33da70882af7":"44d0b6fea1ab47edbcb69484a2de6b42b3c4ba59eaf1bd5bdc":"ef27bab834ad34ea9f026fc0deb96ce3c731b7e029b5f119f6":200:0 +aes_encrypt_xts:"5d830cb67b77700a768ea3935335986d675a43011091ccf1777c1903dd8472c1":"b972e333fa01f5813d3f33da70882af7":"44d0b6fea1ab47edbcb69484a2de6b42b3c4ba59eaf1bd5bdc":"ef27bab834ad34ea9f026fc0deb96ce3c731b7e029b5f119f6" AES-128-XTS Encrypt NIST XTSTestVectors #276 -aes_encrypt_xts:"fbd0b0bb3f7d415bb072e12815d1e432da5490a0a68f0f00abe47319e92ec1cd":"581b1f8a59e66a1e21547b715e86222e":"1c912851c2775e56046f61386dd8004a46d8939b9402c34640":"13819d2156d46ebeba6f8b8243ce163fe4fc93bbba047d82b2":200:0 +aes_encrypt_xts:"fbd0b0bb3f7d415bb072e12815d1e432da5490a0a68f0f00abe47319e92ec1cd":"581b1f8a59e66a1e21547b715e86222e":"1c912851c2775e56046f61386dd8004a46d8939b9402c34640":"13819d2156d46ebeba6f8b8243ce163fe4fc93bbba047d82b2" AES-128-XTS Encrypt NIST XTSTestVectors #277 -aes_encrypt_xts:"cc99b6059568fa44e7d30cb03fa6cc99194ae718e8907e8c5dfaefa841d14f3f":"087167e3fba4edeea98ee9530a51ecc3":"335f6292a5db8308a04b7e287ce00698716375e1430eb051d4":"f0ae2e8e4f43709f9513c7d8d54542fdefeedb92c3f3df696d":200:0 +aes_encrypt_xts:"cc99b6059568fa44e7d30cb03fa6cc99194ae718e8907e8c5dfaefa841d14f3f":"087167e3fba4edeea98ee9530a51ecc3":"335f6292a5db8308a04b7e287ce00698716375e1430eb051d4":"f0ae2e8e4f43709f9513c7d8d54542fdefeedb92c3f3df696d" AES-128-XTS Encrypt NIST XTSTestVectors #278 -aes_encrypt_xts:"0862c0f15bcd10fe50317c4ddad84e889f90aac77cf2f3407603079bd18bf9b2":"e4db4baa2c402206d94d985511189041":"dca083db5080cb24aa0d6c719468b271f08b516d564782fac6":"fc0be49f7226f03699553ddcc306d9f11dbc10ae178f2ed969":200:0 +aes_encrypt_xts:"0862c0f15bcd10fe50317c4ddad84e889f90aac77cf2f3407603079bd18bf9b2":"e4db4baa2c402206d94d985511189041":"dca083db5080cb24aa0d6c719468b271f08b516d564782fac6":"fc0be49f7226f03699553ddcc306d9f11dbc10ae178f2ed969" AES-128-XTS Encrypt NIST XTSTestVectors #279 -aes_encrypt_xts:"eaab1775215640aa69dc5215e3eebea54e1e5404b7bbfe1fac1a499ae21fcdcd":"09dadcd9c49c75198bd0bf139baa0b23":"0d868bca68497051610f715d695930ae5c654464b845144c93":"7c68dbd7a1543c1996cfc6d3d4ef3a4e3cede53de0681a74ca":200:0 +aes_encrypt_xts:"eaab1775215640aa69dc5215e3eebea54e1e5404b7bbfe1fac1a499ae21fcdcd":"09dadcd9c49c75198bd0bf139baa0b23":"0d868bca68497051610f715d695930ae5c654464b845144c93":"7c68dbd7a1543c1996cfc6d3d4ef3a4e3cede53de0681a74ca" AES-128-XTS Encrypt NIST XTSTestVectors #280 -aes_encrypt_xts:"bad7ed1dc3460173247761d6dc798a2a93553f1d33ae014fb7f940a4e414c4af":"4fe879235e79cb8fb2499722652e7fee":"b3d6332dbfe3be9b20425df73ce605ca787434551a0be1a65a":"a4ed66bb18ebb2c2c09749fae3247768c0213a939070c7f032":200:0 +aes_encrypt_xts:"bad7ed1dc3460173247761d6dc798a2a93553f1d33ae014fb7f940a4e414c4af":"4fe879235e79cb8fb2499722652e7fee":"b3d6332dbfe3be9b20425df73ce605ca787434551a0be1a65a":"a4ed66bb18ebb2c2c09749fae3247768c0213a939070c7f032" AES-128-XTS Encrypt NIST XTSTestVectors #281 -aes_encrypt_xts:"9d0b7247238476a25db16bb061be8ab76f7c1ce9bf9b256e0407d5016726e983":"fd5c2284e72362d369c82f86e63a8398":"1a7e102572c4795a6493857b50b3bedee0de68305aa622b432":"d1aebf0213b3aaad1a89a73e1ed0c6c494e8f4ce4559d9ca25":200:0 +aes_encrypt_xts:"9d0b7247238476a25db16bb061be8ab76f7c1ce9bf9b256e0407d5016726e983":"fd5c2284e72362d369c82f86e63a8398":"1a7e102572c4795a6493857b50b3bedee0de68305aa622b432":"d1aebf0213b3aaad1a89a73e1ed0c6c494e8f4ce4559d9ca25" AES-128-XTS Encrypt NIST XTSTestVectors #282 -aes_encrypt_xts:"dbdcfb0189bfe444c9964460e7d48bfbf90bd48c706635cbf1907b4af137f5d4":"591477dcf19302e578f569f3e81d1b28":"0dd2575a6b0757bcceee19b74db147394dcfd89a8c9953352f":"cd07e57e7f9ccd9a8328c5717e4a6cb9f82f31fa0e78239a8c":200:0 +aes_encrypt_xts:"dbdcfb0189bfe444c9964460e7d48bfbf90bd48c706635cbf1907b4af137f5d4":"591477dcf19302e578f569f3e81d1b28":"0dd2575a6b0757bcceee19b74db147394dcfd89a8c9953352f":"cd07e57e7f9ccd9a8328c5717e4a6cb9f82f31fa0e78239a8c" AES-128-XTS Encrypt NIST XTSTestVectors #283 -aes_encrypt_xts:"69ec9a750e63328c09421e30174e44f048952fbd717a1f4b884544417a8e2e6d":"df94cf10396922f2c5e54943e88dc46a":"48f0f1543f644b417242dd1183dbeabf6f8e40bc820ff2da1c":"c637ba39b02669b6c8759a5694a917e11a91c46e1338b3dde3":200:0 +aes_encrypt_xts:"69ec9a750e63328c09421e30174e44f048952fbd717a1f4b884544417a8e2e6d":"df94cf10396922f2c5e54943e88dc46a":"48f0f1543f644b417242dd1183dbeabf6f8e40bc820ff2da1c":"c637ba39b02669b6c8759a5694a917e11a91c46e1338b3dde3" AES-128-XTS Encrypt NIST XTSTestVectors #284 -aes_encrypt_xts:"75cf1d4394c6b256b29b225cfa54648bb05bef1210f0932d1c64062499961108":"1958ffc6e26bcc5fd9b638bae5cafe90":"1bb523250849224278636616b50446d0e16488151d3cb4071a":"0576ac39ec2716c60ca2afce812d9f0efb75ee429d8f3455b0":200:0 +aes_encrypt_xts:"75cf1d4394c6b256b29b225cfa54648bb05bef1210f0932d1c64062499961108":"1958ffc6e26bcc5fd9b638bae5cafe90":"1bb523250849224278636616b50446d0e16488151d3cb4071a":"0576ac39ec2716c60ca2afce812d9f0efb75ee429d8f3455b0" AES-128-XTS Encrypt NIST XTSTestVectors #285 -aes_encrypt_xts:"b8db0b9e63f5f0e6609798a6cb42bb5b5d7139bb955799f52a7c581f84633176":"8d46f96701167a1d77cd1e44da92f3a8":"b4644dc1b38dd598ca840a82d4d9c0656723b15801aa18e66e":"09288cf51f1eb4adb85423d0e0d6e958188706af260e24674e":200:0 +aes_encrypt_xts:"b8db0b9e63f5f0e6609798a6cb42bb5b5d7139bb955799f52a7c581f84633176":"8d46f96701167a1d77cd1e44da92f3a8":"b4644dc1b38dd598ca840a82d4d9c0656723b15801aa18e66e":"09288cf51f1eb4adb85423d0e0d6e958188706af260e24674e" AES-128-XTS Encrypt NIST XTSTestVectors #286 -aes_encrypt_xts:"41407d7bd6b7666c320f2c2a89ffa5437f78e4e5dcc81ec3df3616237ed27819":"65778665119801907c843e0598aed0d5":"371e57c294518cc7bcad10a9b3ee45d77e3dbd6d5c6e83fd99":"2f70e57d5bd098a8a019d6f60479649a8603284a27b8e2f90e":200:0 +aes_encrypt_xts:"41407d7bd6b7666c320f2c2a89ffa5437f78e4e5dcc81ec3df3616237ed27819":"65778665119801907c843e0598aed0d5":"371e57c294518cc7bcad10a9b3ee45d77e3dbd6d5c6e83fd99":"2f70e57d5bd098a8a019d6f60479649a8603284a27b8e2f90e" AES-128-XTS Encrypt NIST XTSTestVectors #287 -aes_encrypt_xts:"9790040342f660b3fa7ccbe990cd0866e33ba8fc90ff3fafe45c1fdc388b548f":"9f380615149117b24eebb8d2364cc3c5":"ea069a8de1482eacfc5d7b8099fc6c331487bf4c52ef7aa5a8":"bc32729d102494ead18c7a3d273e4bf0ce16671e6b378062d3":200:0 +aes_encrypt_xts:"9790040342f660b3fa7ccbe990cd0866e33ba8fc90ff3fafe45c1fdc388b548f":"9f380615149117b24eebb8d2364cc3c5":"ea069a8de1482eacfc5d7b8099fc6c331487bf4c52ef7aa5a8":"bc32729d102494ead18c7a3d273e4bf0ce16671e6b378062d3" AES-128-XTS Encrypt NIST XTSTestVectors #288 -aes_encrypt_xts:"8b681f99ea3a7a6f954a0bfa0b7208c4af19176df8a7e51bcd9d1104b3a21bdb":"752c97876b54f33d371bbd3198675a86":"87dc736a04fdacdbec20d5987a26d2f0064385bfa11e4f6842":"fb2f15e5aae94edc8bf8b021e5dfc9f2f1155b306560dbd064":200:0 +aes_encrypt_xts:"8b681f99ea3a7a6f954a0bfa0b7208c4af19176df8a7e51bcd9d1104b3a21bdb":"752c97876b54f33d371bbd3198675a86":"87dc736a04fdacdbec20d5987a26d2f0064385bfa11e4f6842":"fb2f15e5aae94edc8bf8b021e5dfc9f2f1155b306560dbd064" AES-128-XTS Encrypt NIST XTSTestVectors #289 -aes_encrypt_xts:"770059053f53f24f9afe0694280e35be66a00cafee4180b5dda108761b460acf":"638289381ecd2b5043f9978f359bca6f":"ce6c188b42c2e54c5cc61d41b9c22fe1c195090603fab8d7ce":"700d63a1e0919de638c229ecdfcb6bff9f4bffddb57b43b47d":200:0 +aes_encrypt_xts:"770059053f53f24f9afe0694280e35be66a00cafee4180b5dda108761b460acf":"638289381ecd2b5043f9978f359bca6f":"ce6c188b42c2e54c5cc61d41b9c22fe1c195090603fab8d7ce":"700d63a1e0919de638c229ecdfcb6bff9f4bffddb57b43b47d" AES-128-XTS Encrypt NIST XTSTestVectors #290 -aes_encrypt_xts:"a3f53da523b7707c5a720213df5fb206a13cb381d43144a44684813af0f50cad":"8df861cca6930cf385da66d8a2645886":"a5ae456dddf7d4c69d98f07fdc3b8d2faff18ee4409758a8be":"73e56ce7c2f711e8e3cbaa7ab323711b552ef64d0e0121560d":200:0 +aes_encrypt_xts:"a3f53da523b7707c5a720213df5fb206a13cb381d43144a44684813af0f50cad":"8df861cca6930cf385da66d8a2645886":"a5ae456dddf7d4c69d98f07fdc3b8d2faff18ee4409758a8be":"73e56ce7c2f711e8e3cbaa7ab323711b552ef64d0e0121560d" AES-128-XTS Encrypt NIST XTSTestVectors #291 -aes_encrypt_xts:"df57a76f69a4ed440236ef46aeed0483264c8ec2e9b926a5622c0f4d16f11c72":"6299d19cca7b488f398c82199fb0c693":"cce18dfd27b965f992ecf0f4b8712b0905e222ce3e6b0de160":"d4833a029818f02fd0b0ffda3ff055ec03c7e1ceb7d07ff046":200:0 +aes_encrypt_xts:"df57a76f69a4ed440236ef46aeed0483264c8ec2e9b926a5622c0f4d16f11c72":"6299d19cca7b488f398c82199fb0c693":"cce18dfd27b965f992ecf0f4b8712b0905e222ce3e6b0de160":"d4833a029818f02fd0b0ffda3ff055ec03c7e1ceb7d07ff046" AES-128-XTS Encrypt NIST XTSTestVectors #292 -aes_encrypt_xts:"32d773f5a9684daf661d72b5eb176e742714096e040fb6be6299e11fc0b5a1c0":"084b52b31726092911c468d9755f8e1a":"2ace487e0d253e94f1eb873e5fd77aa99aa57467d3c483d33c":"fef06d12b502c66349faaa13cf9e111d6bfa7bc285ebcc26e8":200:0 +aes_encrypt_xts:"32d773f5a9684daf661d72b5eb176e742714096e040fb6be6299e11fc0b5a1c0":"084b52b31726092911c468d9755f8e1a":"2ace487e0d253e94f1eb873e5fd77aa99aa57467d3c483d33c":"fef06d12b502c66349faaa13cf9e111d6bfa7bc285ebcc26e8" AES-128-XTS Encrypt NIST XTSTestVectors #293 -aes_encrypt_xts:"24135c437a1cdd551da0e7b360e50be8996bebbddfa5ab6641a410029cc62a8e":"c9da86cd08f5e50b379b7e179e81ce1c":"3837fd178932a761b7b332b1086c91db2a5fa0d4c13e4a4fbc":"6f1f0d9f45fb6323c413ec3e0253dca7c203896018ebeb7fa0":200:0 +aes_encrypt_xts:"24135c437a1cdd551da0e7b360e50be8996bebbddfa5ab6641a410029cc62a8e":"c9da86cd08f5e50b379b7e179e81ce1c":"3837fd178932a761b7b332b1086c91db2a5fa0d4c13e4a4fbc":"6f1f0d9f45fb6323c413ec3e0253dca7c203896018ebeb7fa0" AES-128-XTS Encrypt NIST XTSTestVectors #294 -aes_encrypt_xts:"dad5449784634bce789a5d0f7846adab8e44a92cbf206ee337fce51a479e750e":"9e956ebc04fb79ea3a545a70dcfea495":"aad3e2d07bbc090808a5470dc26621ab483b9e1083ef4b566f":"f7a55a52650510d2f9e8748190e19deff97d7ce3326dabe117":200:0 +aes_encrypt_xts:"dad5449784634bce789a5d0f7846adab8e44a92cbf206ee337fce51a479e750e":"9e956ebc04fb79ea3a545a70dcfea495":"aad3e2d07bbc090808a5470dc26621ab483b9e1083ef4b566f":"f7a55a52650510d2f9e8748190e19deff97d7ce3326dabe117" AES-128-XTS Encrypt NIST XTSTestVectors #295 -aes_encrypt_xts:"bf450e0d06febe5e78d10c4a71a63fdb6a9c77e467fad3a6ba90d9119d62ffe8":"2230f85cf887d594107d5758de34f2eb":"6963b057c4785730144a3c682fbc22ba50af7c6f8b900714f6":"544f3bc9a39c1c56431674e7976be2c7d624b25fbb8f342db9":200:0 +aes_encrypt_xts:"bf450e0d06febe5e78d10c4a71a63fdb6a9c77e467fad3a6ba90d9119d62ffe8":"2230f85cf887d594107d5758de34f2eb":"6963b057c4785730144a3c682fbc22ba50af7c6f8b900714f6":"544f3bc9a39c1c56431674e7976be2c7d624b25fbb8f342db9" AES-128-XTS Encrypt NIST XTSTestVectors #296 -aes_encrypt_xts:"e8354849e799b6dfc2f7015645c21948616afecc449a0b94786bccbc244e9bf9":"f1a789b4c76ab39da591c3b3ea9ae75c":"08fed380e9cfe583f769822adc885d439dbb4103c3c7d36e5a":"1f2136319ad84dcaa9fadabbc2433e8d854794ad50c92d9dbc":200:0 +aes_encrypt_xts:"e8354849e799b6dfc2f7015645c21948616afecc449a0b94786bccbc244e9bf9":"f1a789b4c76ab39da591c3b3ea9ae75c":"08fed380e9cfe583f769822adc885d439dbb4103c3c7d36e5a":"1f2136319ad84dcaa9fadabbc2433e8d854794ad50c92d9dbc" AES-128-XTS Encrypt NIST XTSTestVectors #297 -aes_encrypt_xts:"8fad4e44ffee282a2f96c76f14adfb703b856b96c18d409171b089de1908b306":"dc00a2e2b27cb79d3e14fb505bde3842":"3e953629e42bf39b53364b73e20946dd2bee0eae6d442f1a68":"f3cd30a00768b3d8c49cf8438130096aa2cba2a1f08e8ef515":200:0 +aes_encrypt_xts:"8fad4e44ffee282a2f96c76f14adfb703b856b96c18d409171b089de1908b306":"dc00a2e2b27cb79d3e14fb505bde3842":"3e953629e42bf39b53364b73e20946dd2bee0eae6d442f1a68":"f3cd30a00768b3d8c49cf8438130096aa2cba2a1f08e8ef515" AES-128-XTS Encrypt NIST XTSTestVectors #298 -aes_encrypt_xts:"d1cdd107e8aa980ffac39a36d3b2714715a6193a5c24791716211401885395b8":"9773afc7efeb6a9e3582544c13aad954":"e4f7487a4bc0e29a0a8b2d01f0b6ea1c58f34fba782d5b6c19":"cfe9ba9716ebdb434bafeda9615d0fc41516c2a9cd260ab45c":200:0 +aes_encrypt_xts:"d1cdd107e8aa980ffac39a36d3b2714715a6193a5c24791716211401885395b8":"9773afc7efeb6a9e3582544c13aad954":"e4f7487a4bc0e29a0a8b2d01f0b6ea1c58f34fba782d5b6c19":"cfe9ba9716ebdb434bafeda9615d0fc41516c2a9cd260ab45c" AES-128-XTS Encrypt NIST XTSTestVectors #299 -aes_encrypt_xts:"7e1d8b12e7955529b902062364d3f2fb10eae877ed50ff848429e27a8a3f64c6":"e95297569ca19cc1bf9e4334c7129a07":"92a867163bd97993371e44289463b3a0d9fb6ceb95b30b8089":"b492090c2b98bbaeb0e5f8adf2fcf9d74bcb87204cdaee0fcf":200:0 +aes_encrypt_xts:"7e1d8b12e7955529b902062364d3f2fb10eae877ed50ff848429e27a8a3f64c6":"e95297569ca19cc1bf9e4334c7129a07":"92a867163bd97993371e44289463b3a0d9fb6ceb95b30b8089":"b492090c2b98bbaeb0e5f8adf2fcf9d74bcb87204cdaee0fcf" AES-128-XTS Encrypt NIST XTSTestVectors #300 -aes_encrypt_xts:"b7090e04e8a41c798aa16ef695c57aa645f8ee29742e0d98d320463a4f7ee17f":"312b646c51109e284a6cb073b83bb252":"9cb4e43f438290494448a669147f6864b16a8a45782a4fd40d":"4c33423b061d4c23e7d90030f3407523d0f8e8f7f1a442bddf":200:0 +aes_encrypt_xts:"b7090e04e8a41c798aa16ef695c57aa645f8ee29742e0d98d320463a4f7ee17f":"312b646c51109e284a6cb073b83bb252":"9cb4e43f438290494448a669147f6864b16a8a45782a4fd40d":"4c33423b061d4c23e7d90030f3407523d0f8e8f7f1a442bddf" AES-128-XTS Encrypt NIST XTSTestVectors #301 -aes_encrypt_xts:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8":256:0 +aes_encrypt_xts:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8" AES-128-XTS Encrypt NIST XTSTestVectors #302 -aes_encrypt_xts:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725":256:0 +aes_encrypt_xts:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725" AES-128-XTS Encrypt NIST XTSTestVectors #303 -aes_encrypt_xts:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac":256:0 +aes_encrypt_xts:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac" AES-128-XTS Encrypt NIST XTSTestVectors #304 -aes_encrypt_xts:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645":256:0 +aes_encrypt_xts:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645" AES-128-XTS Encrypt NIST XTSTestVectors #305 -aes_encrypt_xts:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c":256:0 +aes_encrypt_xts:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c" AES-128-XTS Encrypt NIST XTSTestVectors #306 -aes_encrypt_xts:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472":256:0 +aes_encrypt_xts:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472" AES-128-XTS Encrypt NIST XTSTestVectors #307 -aes_encrypt_xts:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f":256:0 +aes_encrypt_xts:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f" AES-128-XTS Encrypt NIST XTSTestVectors #308 -aes_encrypt_xts:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317":256:0 +aes_encrypt_xts:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317" AES-128-XTS Encrypt NIST XTSTestVectors #309 -aes_encrypt_xts:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0":256:0 +aes_encrypt_xts:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0" AES-128-XTS Encrypt NIST XTSTestVectors #310 -aes_encrypt_xts:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c":256:0 +aes_encrypt_xts:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c" AES-128-XTS Encrypt NIST XTSTestVectors #311 -aes_encrypt_xts:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a":256:0 +aes_encrypt_xts:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a" AES-128-XTS Encrypt NIST XTSTestVectors #312 -aes_encrypt_xts:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6":256:0 +aes_encrypt_xts:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6" AES-128-XTS Encrypt NIST XTSTestVectors #313 -aes_encrypt_xts:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6":256:0 +aes_encrypt_xts:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6" AES-128-XTS Encrypt NIST XTSTestVectors #314 -aes_encrypt_xts:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8":256:0 +aes_encrypt_xts:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8" AES-128-XTS Encrypt NIST XTSTestVectors #315 -aes_encrypt_xts:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc":256:0 +aes_encrypt_xts:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc" AES-128-XTS Encrypt NIST XTSTestVectors #316 -aes_encrypt_xts:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82":256:0 +aes_encrypt_xts:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82" AES-128-XTS Encrypt NIST XTSTestVectors #317 -aes_encrypt_xts:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634":256:0 +aes_encrypt_xts:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634" AES-128-XTS Encrypt NIST XTSTestVectors #318 -aes_encrypt_xts:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f":256:0 +aes_encrypt_xts:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f" AES-128-XTS Encrypt NIST XTSTestVectors #319 -aes_encrypt_xts:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8":256:0 +aes_encrypt_xts:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8" AES-128-XTS Encrypt NIST XTSTestVectors #320 -aes_encrypt_xts:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767":256:0 +aes_encrypt_xts:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767" AES-128-XTS Encrypt NIST XTSTestVectors #321 -aes_encrypt_xts:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff":256:0 +aes_encrypt_xts:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff" AES-128-XTS Encrypt NIST XTSTestVectors #322 -aes_encrypt_xts:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5":256:0 +aes_encrypt_xts:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5" AES-128-XTS Encrypt NIST XTSTestVectors #323 -aes_encrypt_xts:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43":256:0 +aes_encrypt_xts:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43" AES-128-XTS Encrypt NIST XTSTestVectors #324 -aes_encrypt_xts:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214":256:0 +aes_encrypt_xts:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214" AES-128-XTS Encrypt NIST XTSTestVectors #325 -aes_encrypt_xts:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf":256:0 +aes_encrypt_xts:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf" AES-128-XTS Encrypt NIST XTSTestVectors #326 -aes_encrypt_xts:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf":256:0 +aes_encrypt_xts:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf" AES-128-XTS Encrypt NIST XTSTestVectors #327 -aes_encrypt_xts:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55":256:0 +aes_encrypt_xts:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55" AES-128-XTS Encrypt NIST XTSTestVectors #328 -aes_encrypt_xts:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367":256:0 +aes_encrypt_xts:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367" AES-128-XTS Encrypt NIST XTSTestVectors #329 -aes_encrypt_xts:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87":256:0 +aes_encrypt_xts:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87" AES-128-XTS Encrypt NIST XTSTestVectors #330 -aes_encrypt_xts:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944":256:0 +aes_encrypt_xts:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944" AES-128-XTS Encrypt NIST XTSTestVectors #331 -aes_encrypt_xts:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887":256:0 +aes_encrypt_xts:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887" AES-128-XTS Encrypt NIST XTSTestVectors #332 -aes_encrypt_xts:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1":256:0 +aes_encrypt_xts:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1" AES-128-XTS Encrypt NIST XTSTestVectors #333 -aes_encrypt_xts:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa":256:0 +aes_encrypt_xts:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa" AES-128-XTS Encrypt NIST XTSTestVectors #334 -aes_encrypt_xts:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac":256:0 +aes_encrypt_xts:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac" AES-128-XTS Encrypt NIST XTSTestVectors #335 -aes_encrypt_xts:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c":256:0 +aes_encrypt_xts:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c" AES-128-XTS Encrypt NIST XTSTestVectors #336 -aes_encrypt_xts:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739":256:0 +aes_encrypt_xts:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739" AES-128-XTS Encrypt NIST XTSTestVectors #337 -aes_encrypt_xts:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a":256:0 +aes_encrypt_xts:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a" AES-128-XTS Encrypt NIST XTSTestVectors #338 -aes_encrypt_xts:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d":256:0 +aes_encrypt_xts:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d" AES-128-XTS Encrypt NIST XTSTestVectors #339 -aes_encrypt_xts:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898":256:0 +aes_encrypt_xts:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898" AES-128-XTS Encrypt NIST XTSTestVectors #340 -aes_encrypt_xts:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a":256:0 +aes_encrypt_xts:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a" AES-128-XTS Encrypt NIST XTSTestVectors #341 -aes_encrypt_xts:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54":256:0 +aes_encrypt_xts:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54" AES-128-XTS Encrypt NIST XTSTestVectors #342 -aes_encrypt_xts:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86":256:0 +aes_encrypt_xts:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86" AES-128-XTS Encrypt NIST XTSTestVectors #343 -aes_encrypt_xts:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff":256:0 +aes_encrypt_xts:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff" AES-128-XTS Encrypt NIST XTSTestVectors #344 -aes_encrypt_xts:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72":256:0 +aes_encrypt_xts:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72" AES-128-XTS Encrypt NIST XTSTestVectors #345 -aes_encrypt_xts:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f":256:0 +aes_encrypt_xts:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f" AES-128-XTS Encrypt NIST XTSTestVectors #346 -aes_encrypt_xts:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4":256:0 +aes_encrypt_xts:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4" AES-128-XTS Encrypt NIST XTSTestVectors #347 -aes_encrypt_xts:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250":256:0 +aes_encrypt_xts:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250" AES-128-XTS Encrypt NIST XTSTestVectors #348 -aes_encrypt_xts:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1":256:0 +aes_encrypt_xts:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1" AES-128-XTS Encrypt NIST XTSTestVectors #349 -aes_encrypt_xts:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53":256:0 +aes_encrypt_xts:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53" AES-128-XTS Encrypt NIST XTSTestVectors #350 -aes_encrypt_xts:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3":256:0 +aes_encrypt_xts:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3" AES-128-XTS Encrypt NIST XTSTestVectors #351 -aes_encrypt_xts:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71":256:0 +aes_encrypt_xts:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71" AES-128-XTS Encrypt NIST XTSTestVectors #352 -aes_encrypt_xts:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563":256:0 +aes_encrypt_xts:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563" AES-128-XTS Encrypt NIST XTSTestVectors #353 -aes_encrypt_xts:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d":256:0 +aes_encrypt_xts:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d" AES-128-XTS Encrypt NIST XTSTestVectors #354 -aes_encrypt_xts:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5":256:0 +aes_encrypt_xts:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5" AES-128-XTS Encrypt NIST XTSTestVectors #355 -aes_encrypt_xts:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e":256:0 +aes_encrypt_xts:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e" AES-128-XTS Encrypt NIST XTSTestVectors #356 -aes_encrypt_xts:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc":256:0 +aes_encrypt_xts:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc" AES-128-XTS Encrypt NIST XTSTestVectors #357 -aes_encrypt_xts:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c":256:0 +aes_encrypt_xts:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c" AES-128-XTS Encrypt NIST XTSTestVectors #358 -aes_encrypt_xts:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039":256:0 +aes_encrypt_xts:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039" AES-128-XTS Encrypt NIST XTSTestVectors #359 -aes_encrypt_xts:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df":256:0 +aes_encrypt_xts:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df" AES-128-XTS Encrypt NIST XTSTestVectors #360 -aes_encrypt_xts:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd":256:0 +aes_encrypt_xts:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd" AES-128-XTS Encrypt NIST XTSTestVectors #361 -aes_encrypt_xts:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635":256:0 +aes_encrypt_xts:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635" AES-128-XTS Encrypt NIST XTSTestVectors #362 -aes_encrypt_xts:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc":256:0 +aes_encrypt_xts:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc" AES-128-XTS Encrypt NIST XTSTestVectors #363 -aes_encrypt_xts:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde":256:0 +aes_encrypt_xts:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde" AES-128-XTS Encrypt NIST XTSTestVectors #364 -aes_encrypt_xts:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f":256:0 +aes_encrypt_xts:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f" AES-128-XTS Encrypt NIST XTSTestVectors #365 -aes_encrypt_xts:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81":256:0 +aes_encrypt_xts:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81" AES-128-XTS Encrypt NIST XTSTestVectors #366 -aes_encrypt_xts:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f":256:0 +aes_encrypt_xts:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f" AES-128-XTS Encrypt NIST XTSTestVectors #367 -aes_encrypt_xts:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994":256:0 +aes_encrypt_xts:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994" AES-128-XTS Encrypt NIST XTSTestVectors #368 -aes_encrypt_xts:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77":256:0 +aes_encrypt_xts:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77" AES-128-XTS Encrypt NIST XTSTestVectors #369 -aes_encrypt_xts:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1":256:0 +aes_encrypt_xts:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1" AES-128-XTS Encrypt NIST XTSTestVectors #370 -aes_encrypt_xts:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b":256:0 +aes_encrypt_xts:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b" AES-128-XTS Encrypt NIST XTSTestVectors #371 -aes_encrypt_xts:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3":256:0 +aes_encrypt_xts:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3" AES-128-XTS Encrypt NIST XTSTestVectors #372 -aes_encrypt_xts:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4":256:0 +aes_encrypt_xts:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4" AES-128-XTS Encrypt NIST XTSTestVectors #373 -aes_encrypt_xts:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4":256:0 +aes_encrypt_xts:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4" AES-128-XTS Encrypt NIST XTSTestVectors #374 -aes_encrypt_xts:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037":256:0 +aes_encrypt_xts:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037" AES-128-XTS Encrypt NIST XTSTestVectors #375 -aes_encrypt_xts:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568":256:0 +aes_encrypt_xts:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568" AES-128-XTS Encrypt NIST XTSTestVectors #376 -aes_encrypt_xts:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1":256:0 +aes_encrypt_xts:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1" AES-128-XTS Encrypt NIST XTSTestVectors #377 -aes_encrypt_xts:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10":256:0 +aes_encrypt_xts:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10" AES-128-XTS Encrypt NIST XTSTestVectors #378 -aes_encrypt_xts:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217":256:0 +aes_encrypt_xts:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217" AES-128-XTS Encrypt NIST XTSTestVectors #379 -aes_encrypt_xts:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d":256:0 +aes_encrypt_xts:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d" AES-128-XTS Encrypt NIST XTSTestVectors #380 -aes_encrypt_xts:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f":256:0 +aes_encrypt_xts:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f" AES-128-XTS Encrypt NIST XTSTestVectors #381 -aes_encrypt_xts:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b":256:0 +aes_encrypt_xts:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b" AES-128-XTS Encrypt NIST XTSTestVectors #382 -aes_encrypt_xts:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8":256:0 +aes_encrypt_xts:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8" AES-128-XTS Encrypt NIST XTSTestVectors #383 -aes_encrypt_xts:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686":256:0 +aes_encrypt_xts:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686" AES-128-XTS Encrypt NIST XTSTestVectors #384 -aes_encrypt_xts:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab":256:0 +aes_encrypt_xts:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab" AES-128-XTS Encrypt NIST XTSTestVectors #385 -aes_encrypt_xts:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380":256:0 +aes_encrypt_xts:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380" AES-128-XTS Encrypt NIST XTSTestVectors #386 -aes_encrypt_xts:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0":256:0 +aes_encrypt_xts:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0" AES-128-XTS Encrypt NIST XTSTestVectors #387 -aes_encrypt_xts:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544":256:0 +aes_encrypt_xts:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544" AES-128-XTS Encrypt NIST XTSTestVectors #388 -aes_encrypt_xts:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec":256:0 +aes_encrypt_xts:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec" AES-128-XTS Encrypt NIST XTSTestVectors #389 -aes_encrypt_xts:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522":256:0 +aes_encrypt_xts:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522" AES-128-XTS Encrypt NIST XTSTestVectors #390 -aes_encrypt_xts:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f":256:0 +aes_encrypt_xts:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f" AES-128-XTS Encrypt NIST XTSTestVectors #391 -aes_encrypt_xts:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581":256:0 +aes_encrypt_xts:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581" AES-128-XTS Encrypt NIST XTSTestVectors #392 -aes_encrypt_xts:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51":256:0 +aes_encrypt_xts:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51" AES-128-XTS Encrypt NIST XTSTestVectors #393 -aes_encrypt_xts:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3":256:0 +aes_encrypt_xts:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3" AES-128-XTS Encrypt NIST XTSTestVectors #394 -aes_encrypt_xts:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f":256:0 +aes_encrypt_xts:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f" AES-128-XTS Encrypt NIST XTSTestVectors #395 -aes_encrypt_xts:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349":256:0 +aes_encrypt_xts:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349" AES-128-XTS Encrypt NIST XTSTestVectors #396 -aes_encrypt_xts:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2":256:0 +aes_encrypt_xts:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2" AES-128-XTS Encrypt NIST XTSTestVectors #397 -aes_encrypt_xts:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041":256:0 +aes_encrypt_xts:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041" AES-128-XTS Encrypt NIST XTSTestVectors #398 -aes_encrypt_xts:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909":256:0 +aes_encrypt_xts:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909" AES-128-XTS Encrypt NIST XTSTestVectors #399 -aes_encrypt_xts:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da":256:0 +aes_encrypt_xts:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da" AES-128-XTS Encrypt NIST XTSTestVectors #400 -aes_encrypt_xts:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820":256:0 +aes_encrypt_xts:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820" AES-128-XTS Decrypt NIST XTSTestVectors #1 -aes_decrypt_xts:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"3454f7d34c0caffa12e9d2850b037fff":"07f2c2d4e6db6e1200bc165d154e0698":128:0 +aes_decrypt_xts:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"07f2c2d4e6db6e1200bc165d154e0698":"3454f7d34c0caffa12e9d2850b037fff" AES-128-XTS Decrypt NIST XTSTestVectors #2 -aes_decrypt_xts:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"1070b7c17d3474281ad01fc0ad89cd8b":"321475ac6aa05712554d35a0a96a9265":128:0 +aes_decrypt_xts:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"321475ac6aa05712554d35a0a96a9265":"1070b7c17d3474281ad01fc0ad89cd8b" AES-128-XTS Decrypt NIST XTSTestVectors #3 -aes_decrypt_xts:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"2fb97e979fb107bcc13b577f0f1ea203":"6e0a78bc0db27021f0f59756a447e313":128:0 +aes_decrypt_xts:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"6e0a78bc0db27021f0f59756a447e313":"2fb97e979fb107bcc13b577f0f1ea203" AES-128-XTS Decrypt NIST XTSTestVectors #4 -aes_decrypt_xts:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"cff15a809220b4067c7c0266bbcb3248":"18757efd08059ab70bde2df78f3bd6ba":128:0 +aes_decrypt_xts:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"18757efd08059ab70bde2df78f3bd6ba":"cff15a809220b4067c7c0266bbcb3248" AES-128-XTS Decrypt NIST XTSTestVectors #5 -aes_decrypt_xts:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"83725eecbcdfa8ebdec2f40ba4b157ed":"7fecfc127a3762e30e14791141f65585":128:0 +aes_decrypt_xts:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"7fecfc127a3762e30e14791141f65585":"83725eecbcdfa8ebdec2f40ba4b157ed" AES-128-XTS Decrypt NIST XTSTestVectors #6 -aes_decrypt_xts:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"a7931ff118db06cb44097bcac1fad1af":"c5801ed8a38a78277a45516a3e12b310":128:0 +aes_decrypt_xts:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"c5801ed8a38a78277a45516a3e12b310":"a7931ff118db06cb44097bcac1fad1af" AES-128-XTS Decrypt NIST XTSTestVectors #7 -aes_decrypt_xts:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"331960c250eb4988c75c0d532e206e5c":"25162f7511b5c3b24aee339ffeb7941c":128:0 +aes_decrypt_xts:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"25162f7511b5c3b24aee339ffeb7941c":"331960c250eb4988c75c0d532e206e5c" AES-128-XTS Decrypt NIST XTSTestVectors #8 -aes_decrypt_xts:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"369ad5f8fb83a0df649c899b49ef7459":"09da2fc0ed605b69d95e0b7760840a99":128:0 +aes_decrypt_xts:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"09da2fc0ed605b69d95e0b7760840a99":"369ad5f8fb83a0df649c899b49ef7459" AES-128-XTS Decrypt NIST XTSTestVectors #9 -aes_decrypt_xts:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"4ae7a4ac80023405ac25bc497d6541fb":"d66768542f495d5c50b8623f314085f8":128:0 +aes_decrypt_xts:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"d66768542f495d5c50b8623f314085f8":"4ae7a4ac80023405ac25bc497d6541fb" AES-128-XTS Decrypt NIST XTSTestVectors #10 -aes_decrypt_xts:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"c0f6f44c03d1cbe668c034562ea3d804":"f6c53bcb07cbb44747fc19a6604e26d7":128:0 +aes_decrypt_xts:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"f6c53bcb07cbb44747fc19a6604e26d7":"c0f6f44c03d1cbe668c034562ea3d804" AES-128-XTS Decrypt NIST XTSTestVectors #11 -aes_decrypt_xts:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"dcff3e38dfea1d3eb78182326d7d68ab":"d2f58ae0386e9230744a2056b7fd1310":128:0 +aes_decrypt_xts:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"d2f58ae0386e9230744a2056b7fd1310":"dcff3e38dfea1d3eb78182326d7d68ab" AES-128-XTS Decrypt NIST XTSTestVectors #12 -aes_decrypt_xts:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"26339412d7ac113b319088153e13e1ac":"e1fd155647de15b9fe230baf668d23db":128:0 +aes_decrypt_xts:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"e1fd155647de15b9fe230baf668d23db":"26339412d7ac113b319088153e13e1ac" AES-128-XTS Decrypt NIST XTSTestVectors #13 -aes_decrypt_xts:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"29c3616714bf8076ab195e5e0d6cc0d7":"5fc717d763a56d764a21009b5132dab4":128:0 +aes_decrypt_xts:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"5fc717d763a56d764a21009b5132dab4":"29c3616714bf8076ab195e5e0d6cc0d7" AES-128-XTS Decrypt NIST XTSTestVectors #14 -aes_decrypt_xts:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"8850a5b5011c0b49b444daa5cbd04aba":"ec5364fa0184d8b98ec02cf996428f38":128:0 +aes_decrypt_xts:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"ec5364fa0184d8b98ec02cf996428f38":"8850a5b5011c0b49b444daa5cbd04aba" AES-128-XTS Decrypt NIST XTSTestVectors #15 -aes_decrypt_xts:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"2fbaadd1b47f726dce3f7d4c0358fd99":"95360d08af997eb3ec62e641dd6b899a":128:0 +aes_decrypt_xts:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"95360d08af997eb3ec62e641dd6b899a":"2fbaadd1b47f726dce3f7d4c0358fd99" AES-128-XTS Decrypt NIST XTSTestVectors #16 -aes_decrypt_xts:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"6df4beebbe92ec8a427336b0caec1ec6":"fde4ae887d890b8835a5fc80bfcca708":128:0 +aes_decrypt_xts:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"fde4ae887d890b8835a5fc80bfcca708":"6df4beebbe92ec8a427336b0caec1ec6" AES-128-XTS Decrypt NIST XTSTestVectors #17 -aes_decrypt_xts:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"945864f9190ea8c11943df2510f94421":"db57d5b819129d7896e2df0958a6f9f3":128:0 +aes_decrypt_xts:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"db57d5b819129d7896e2df0958a6f9f3":"945864f9190ea8c11943df2510f94421" AES-128-XTS Decrypt NIST XTSTestVectors #18 -aes_decrypt_xts:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"a856594179845a87855ea16dd03916be":"f36143630377d4e4efd44c5716a8bda1":128:0 +aes_decrypt_xts:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"f36143630377d4e4efd44c5716a8bda1":"a856594179845a87855ea16dd03916be" AES-128-XTS Decrypt NIST XTSTestVectors #19 -aes_decrypt_xts:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"d13ab11d3834d733ea5dd6dbf79ac92b":"8aab744287bff6901441908da23f0b11":128:0 +aes_decrypt_xts:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"8aab744287bff6901441908da23f0b11":"d13ab11d3834d733ea5dd6dbf79ac92b" AES-128-XTS Decrypt NIST XTSTestVectors #20 -aes_decrypt_xts:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"51b9c927ead5fadad56c3eb1a220eec7":"b9a3533b48269b56f0dbb05724272ce5":128:0 +aes_decrypt_xts:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"b9a3533b48269b56f0dbb05724272ce5":"51b9c927ead5fadad56c3eb1a220eec7" AES-128-XTS Decrypt NIST XTSTestVectors #21 -aes_decrypt_xts:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d83ddc006deeee4cc2b4c495830dddc3":"d33777d780a04bfe625cae471d2b8169":128:0 +aes_decrypt_xts:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d33777d780a04bfe625cae471d2b8169":"d83ddc006deeee4cc2b4c495830dddc3" AES-128-XTS Decrypt NIST XTSTestVectors #22 -aes_decrypt_xts:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"6d246f57b5d692205f2b970dcf8ed6f8":"a7f7e80a068e7591ae681fe3e5e277a6":128:0 +aes_decrypt_xts:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"a7f7e80a068e7591ae681fe3e5e277a6":"6d246f57b5d692205f2b970dcf8ed6f8" AES-128-XTS Decrypt NIST XTSTestVectors #23 -aes_decrypt_xts:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"a8b8326cc5126a926cf414b471abd1b2":"f31aff86e5759a2243bfe96f1cdad7f6":128:0 +aes_decrypt_xts:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"f31aff86e5759a2243bfe96f1cdad7f6":"a8b8326cc5126a926cf414b471abd1b2" AES-128-XTS Decrypt NIST XTSTestVectors #24 -aes_decrypt_xts:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"47b751adeeccd4475163239610797d4b":"4f6707b5e65da3eea92b5353c7bd95a2":128:0 +aes_decrypt_xts:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"4f6707b5e65da3eea92b5353c7bd95a2":"47b751adeeccd4475163239610797d4b" AES-128-XTS Decrypt NIST XTSTestVectors #25 -aes_decrypt_xts:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"e8c647ee7488adc4090e08a96965cced":"d3aa65af5882d432e8afdaa0b4f42640":128:0 +aes_decrypt_xts:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"d3aa65af5882d432e8afdaa0b4f42640":"e8c647ee7488adc4090e08a96965cced" AES-128-XTS Decrypt NIST XTSTestVectors #26 -aes_decrypt_xts:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"1c980fd798b916326c525632e215c4ec":"8789bb3e01c8d3e768033f2c05ffee17":128:0 +aes_decrypt_xts:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"8789bb3e01c8d3e768033f2c05ffee17":"1c980fd798b916326c525632e215c4ec" AES-128-XTS Decrypt NIST XTSTestVectors #27 -aes_decrypt_xts:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"90f3c999cb074587f875561d04160c6c":"1d72767fffb8de3a2a420ca4383087a6":128:0 +aes_decrypt_xts:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"1d72767fffb8de3a2a420ca4383087a6":"90f3c999cb074587f875561d04160c6c" AES-128-XTS Decrypt NIST XTSTestVectors #28 -aes_decrypt_xts:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"cfa1f3a9a152c4875100ad4807b3b09c":"fb8d8db9cb8639de8344238dc2c1f255":128:0 +aes_decrypt_xts:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"fb8d8db9cb8639de8344238dc2c1f255":"cfa1f3a9a152c4875100ad4807b3b09c" AES-128-XTS Decrypt NIST XTSTestVectors #29 -aes_decrypt_xts:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"b04ea8cd83aea25893ac2a621879a4cd":"90c08ac785b3b5e7c1815497a451a96c":128:0 +aes_decrypt_xts:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"90c08ac785b3b5e7c1815497a451a96c":"b04ea8cd83aea25893ac2a621879a4cd" AES-128-XTS Decrypt NIST XTSTestVectors #30 -aes_decrypt_xts:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"b1ac6eca721709a527598d1dc7fa365e":"036cad62c24295b188c47cdc247eae41":128:0 +aes_decrypt_xts:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"036cad62c24295b188c47cdc247eae41":"b1ac6eca721709a527598d1dc7fa365e" AES-128-XTS Decrypt NIST XTSTestVectors #31 -aes_decrypt_xts:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"98f21426b7148082b4ee4a8074672a10":"857679e49cd68bc648c4ab0986aa59f8":128:0 +aes_decrypt_xts:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"857679e49cd68bc648c4ab0986aa59f8":"98f21426b7148082b4ee4a8074672a10" AES-128-XTS Decrypt NIST XTSTestVectors #32 -aes_decrypt_xts:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"22f8c0637327b1123067e730c3be4a01":"5c931a135b9d4a7d65c9a8d5535c1294":128:0 +aes_decrypt_xts:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"5c931a135b9d4a7d65c9a8d5535c1294":"22f8c0637327b1123067e730c3be4a01" AES-128-XTS Decrypt NIST XTSTestVectors #33 -aes_decrypt_xts:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"8704552b90009ec3324adbf284dbd51e":"dd155757fcf457d90bb571e8eebd4630":128:0 +aes_decrypt_xts:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"dd155757fcf457d90bb571e8eebd4630":"8704552b90009ec3324adbf284dbd51e" AES-128-XTS Decrypt NIST XTSTestVectors #34 -aes_decrypt_xts:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"c5f6673cbceae8236fa236798261eec1":"56fdd92d70c107b7707c9aa1d33ab0ac":128:0 +aes_decrypt_xts:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"56fdd92d70c107b7707c9aa1d33ab0ac":"c5f6673cbceae8236fa236798261eec1" AES-128-XTS Decrypt NIST XTSTestVectors #35 -aes_decrypt_xts:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"91eecd8bbd0ff7cfe4b33d8e99924368":"d49ca2b1dfc2848120dfc2b75e292a0c":128:0 +aes_decrypt_xts:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"d49ca2b1dfc2848120dfc2b75e292a0c":"91eecd8bbd0ff7cfe4b33d8e99924368" AES-128-XTS Decrypt NIST XTSTestVectors #36 -aes_decrypt_xts:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"86d6bf324bcc2910816abbf55f3ba45d":"da868afeec48764091c51f5e7332338d":128:0 +aes_decrypt_xts:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"da868afeec48764091c51f5e7332338d":"86d6bf324bcc2910816abbf55f3ba45d" AES-128-XTS Decrypt NIST XTSTestVectors #37 -aes_decrypt_xts:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"5b0a85e376a636d113366ec82a2c03f8":"e8cb042a3d239771ef104b5892bd1067":128:0 +aes_decrypt_xts:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"e8cb042a3d239771ef104b5892bd1067":"5b0a85e376a636d113366ec82a2c03f8" AES-128-XTS Decrypt NIST XTSTestVectors #38 -aes_decrypt_xts:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"9b3a036436a24636290c969e9d97cf8b":"df6867693d8884cca8198283bb2c3e16":128:0 +aes_decrypt_xts:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"df6867693d8884cca8198283bb2c3e16":"9b3a036436a24636290c969e9d97cf8b" AES-128-XTS Decrypt NIST XTSTestVectors #39 -aes_decrypt_xts:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f515b3d50e991d55a3e0fcb093085a10":"f224ec19a58bbde03cb692e0e4fc19d7":128:0 +aes_decrypt_xts:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f224ec19a58bbde03cb692e0e4fc19d7":"f515b3d50e991d55a3e0fcb093085a10" AES-128-XTS Decrypt NIST XTSTestVectors #40 -aes_decrypt_xts:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"4b20fce1ffacc7553afa3a6ac94e5966":"b8fa089cca83d2c9979e642b9a248882":128:0 +aes_decrypt_xts:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"b8fa089cca83d2c9979e642b9a248882":"4b20fce1ffacc7553afa3a6ac94e5966" AES-128-XTS Decrypt NIST XTSTestVectors #41 -aes_decrypt_xts:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"caed5c738a8dc30155522864f9289e61":"89691c5dbc84bf8e2e1454148049648f":128:0 +aes_decrypt_xts:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"89691c5dbc84bf8e2e1454148049648f":"caed5c738a8dc30155522864f9289e61" AES-128-XTS Decrypt NIST XTSTestVectors #42 -aes_decrypt_xts:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"63a88184186fa797d264a0528f39709f":"d7f7c8bccf8968b9f118bbead353b630":128:0 +aes_decrypt_xts:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"d7f7c8bccf8968b9f118bbead353b630":"63a88184186fa797d264a0528f39709f" AES-128-XTS Decrypt NIST XTSTestVectors #43 -aes_decrypt_xts:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"baa495ce8309a6c88ad855f97a774113":"8b6572487318167d1babedf6a8cef7b2":128:0 +aes_decrypt_xts:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"8b6572487318167d1babedf6a8cef7b2":"baa495ce8309a6c88ad855f97a774113" AES-128-XTS Decrypt NIST XTSTestVectors #44 -aes_decrypt_xts:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"68c529586435374cfbadb17b9b895a4d":"531d3393772d49bbd0a1b6d839de0185":128:0 +aes_decrypt_xts:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"531d3393772d49bbd0a1b6d839de0185":"68c529586435374cfbadb17b9b895a4d" AES-128-XTS Decrypt NIST XTSTestVectors #45 -aes_decrypt_xts:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"71f0519b7a6aee116d481f31b965fc2d":"926cfa1f568b03c914b5a8283920be26":128:0 +aes_decrypt_xts:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"926cfa1f568b03c914b5a8283920be26":"71f0519b7a6aee116d481f31b965fc2d" AES-128-XTS Decrypt NIST XTSTestVectors #46 -aes_decrypt_xts:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"e9c680838484714f38c59fdbfaf49a5e":"b790368e2ab0227e5c08adc4e7057baa":128:0 +aes_decrypt_xts:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"b790368e2ab0227e5c08adc4e7057baa":"e9c680838484714f38c59fdbfaf49a5e" AES-128-XTS Decrypt NIST XTSTestVectors #47 -aes_decrypt_xts:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"aca43e27d8cffc6d273a90f343c9acce":"c94c62fdac550cf62f3dbec89cb8614c":128:0 +aes_decrypt_xts:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"c94c62fdac550cf62f3dbec89cb8614c":"aca43e27d8cffc6d273a90f343c9acce" AES-128-XTS Decrypt NIST XTSTestVectors #48 -aes_decrypt_xts:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"8fd86c0489944d4350b2232958016668":"16938d35e74a7ab0caddde531cbbc333":128:0 +aes_decrypt_xts:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"16938d35e74a7ab0caddde531cbbc333":"8fd86c0489944d4350b2232958016668" AES-128-XTS Decrypt NIST XTSTestVectors #49 -aes_decrypt_xts:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"3f069d4997a1dd7ea4215cf1d9568395":"35d16e1d15cdad0502e7ef58e86f4d4c":128:0 +aes_decrypt_xts:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"35d16e1d15cdad0502e7ef58e86f4d4c":"3f069d4997a1dd7ea4215cf1d9568395" AES-128-XTS Decrypt NIST XTSTestVectors #50 -aes_decrypt_xts:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"b7972c5f6a488dce95eb46a855a105a5":"6af3152f9763e39a83b94fe960e04447":128:0 +aes_decrypt_xts:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"6af3152f9763e39a83b94fe960e04447":"b7972c5f6a488dce95eb46a855a105a5" AES-128-XTS Decrypt NIST XTSTestVectors #51 -aes_decrypt_xts:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"804795bc588aa048894a184c600ac75f":"d5a4d8ec68e53c0aac094b95b8add3c9":128:0 +aes_decrypt_xts:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"d5a4d8ec68e53c0aac094b95b8add3c9":"804795bc588aa048894a184c600ac75f" AES-128-XTS Decrypt NIST XTSTestVectors #52 -aes_decrypt_xts:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"4dcdabefbf99b4f494fa83b91f0e97a7":"638789a303154fb364e5168aa9340882":128:0 +aes_decrypt_xts:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"638789a303154fb364e5168aa9340882":"4dcdabefbf99b4f494fa83b91f0e97a7" AES-128-XTS Decrypt NIST XTSTestVectors #53 -aes_decrypt_xts:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"a4321472fca02d869432585a4380be30":"5ff7c0249be2b694ad82e68023974533":128:0 +aes_decrypt_xts:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"5ff7c0249be2b694ad82e68023974533":"a4321472fca02d869432585a4380be30" AES-128-XTS Decrypt NIST XTSTestVectors #54 -aes_decrypt_xts:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"625438700a4d153811dc26f688b1f82e":"4462bc469e794fd74288f3f775c02cf9":128:0 +aes_decrypt_xts:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"4462bc469e794fd74288f3f775c02cf9":"625438700a4d153811dc26f688b1f82e" AES-128-XTS Decrypt NIST XTSTestVectors #55 -aes_decrypt_xts:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"565fa6390a7a377b90330ba09391a7d6":"3f29bfa05616507792cedc91e27e4fbc":128:0 +aes_decrypt_xts:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"3f29bfa05616507792cedc91e27e4fbc":"565fa6390a7a377b90330ba09391a7d6" AES-128-XTS Decrypt NIST XTSTestVectors #56 -aes_decrypt_xts:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"7d180b8ae143617369239a606c693d1f":"4479885b32ed93a05bc973d925b30a71":128:0 +aes_decrypt_xts:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"4479885b32ed93a05bc973d925b30a71":"7d180b8ae143617369239a606c693d1f" AES-128-XTS Decrypt NIST XTSTestVectors #57 -aes_decrypt_xts:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"e567f6d2727622278b9310e91ece0165":"5faa528556f79049118c00852e022d96":128:0 +aes_decrypt_xts:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"5faa528556f79049118c00852e022d96":"e567f6d2727622278b9310e91ece0165" AES-128-XTS Decrypt NIST XTSTestVectors #58 -aes_decrypt_xts:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"5ce1562f45da9dad248bb7ac2aabe2b4":"fa58ed4b5530ecb8adb5f4c119a9edda":128:0 +aes_decrypt_xts:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"fa58ed4b5530ecb8adb5f4c119a9edda":"5ce1562f45da9dad248bb7ac2aabe2b4" AES-128-XTS Decrypt NIST XTSTestVectors #59 -aes_decrypt_xts:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"9774ebd7b08cc87fdf70c9d4f746f2f4":"83f4639b4fa54f5f657c03fe4c00983e":128:0 +aes_decrypt_xts:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"83f4639b4fa54f5f657c03fe4c00983e":"9774ebd7b08cc87fdf70c9d4f746f2f4" AES-128-XTS Decrypt NIST XTSTestVectors #60 -aes_decrypt_xts:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"e72746c743f84e32eed81b8dd51b6fea":"9c085ebe5cd42b24889be07f59f761b1":128:0 +aes_decrypt_xts:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"9c085ebe5cd42b24889be07f59f761b1":"e72746c743f84e32eed81b8dd51b6fea" AES-128-XTS Decrypt NIST XTSTestVectors #61 -aes_decrypt_xts:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"48210df8641e31039d06f0e7dc1ad97f":"0ccaac98e1c9609f406930617f1e35ec":128:0 +aes_decrypt_xts:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"0ccaac98e1c9609f406930617f1e35ec":"48210df8641e31039d06f0e7dc1ad97f" AES-128-XTS Decrypt NIST XTSTestVectors #62 -aes_decrypt_xts:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"944f66bb9cb9c0da59111875bd8a83ed":"1fb8a2d4996bacf34f62caf1402ced12":128:0 +aes_decrypt_xts:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"1fb8a2d4996bacf34f62caf1402ced12":"944f66bb9cb9c0da59111875bd8a83ed" AES-128-XTS Decrypt NIST XTSTestVectors #63 -aes_decrypt_xts:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"6b6295ca7b81d5216cc251ead46c70bb":"abcae54afcbb0b0ec75884b11a9901ff":128:0 +aes_decrypt_xts:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"abcae54afcbb0b0ec75884b11a9901ff":"6b6295ca7b81d5216cc251ead46c70bb" AES-128-XTS Decrypt NIST XTSTestVectors #64 -aes_decrypt_xts:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"09bea3cca20b8f9544e62430819d90cc":"c9fed3c29cf7c2a28463684f551c11cd":128:0 +aes_decrypt_xts:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"c9fed3c29cf7c2a28463684f551c11cd":"09bea3cca20b8f9544e62430819d90cc" AES-128-XTS Decrypt NIST XTSTestVectors #65 -aes_decrypt_xts:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"ae58fbd41058bd60b546379c836ada28":"55ddb8bc2ba156bcd66483ab6a2cfe5c":128:0 +aes_decrypt_xts:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"55ddb8bc2ba156bcd66483ab6a2cfe5c":"ae58fbd41058bd60b546379c836ada28" AES-128-XTS Decrypt NIST XTSTestVectors #66 -aes_decrypt_xts:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"2c11e9973068abcff0b75cb1b0022521":"7d8858efdf678473d11389acee8ded16":128:0 +aes_decrypt_xts:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"7d8858efdf678473d11389acee8ded16":"2c11e9973068abcff0b75cb1b0022521" AES-128-XTS Decrypt NIST XTSTestVectors #67 -aes_decrypt_xts:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"6ffdbb7b11bc41a68bb43980b4d5045a":"cb1e8732f3a2dcd45f4d057409eb4d06":128:0 +aes_decrypt_xts:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"cb1e8732f3a2dcd45f4d057409eb4d06":"6ffdbb7b11bc41a68bb43980b4d5045a" AES-128-XTS Decrypt NIST XTSTestVectors #68 -aes_decrypt_xts:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"55bc2096219a930b9a12e2214c5147ef":"44729a7975c22a89c615d0f48bcbad63":128:0 +aes_decrypt_xts:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"44729a7975c22a89c615d0f48bcbad63":"55bc2096219a930b9a12e2214c5147ef" AES-128-XTS Decrypt NIST XTSTestVectors #69 -aes_decrypt_xts:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eb68e475bff2bdf3a151b07e38860d03":"eedc77726be43017fb49bc4031429e46":128:0 +aes_decrypt_xts:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eedc77726be43017fb49bc4031429e46":"eb68e475bff2bdf3a151b07e38860d03" AES-128-XTS Decrypt NIST XTSTestVectors #70 -aes_decrypt_xts:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"d4475da48f24ba759531bf30a5bcd430":"98900bbe2e1141b594c05c93bda68c50":128:0 +aes_decrypt_xts:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"98900bbe2e1141b594c05c93bda68c50":"d4475da48f24ba759531bf30a5bcd430" AES-128-XTS Decrypt NIST XTSTestVectors #71 -aes_decrypt_xts:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"d14d7b026273dff33b09e70db45d3140":"8c9c9231732b49baa07f994ac90cbb74":128:0 +aes_decrypt_xts:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"8c9c9231732b49baa07f994ac90cbb74":"d14d7b026273dff33b09e70db45d3140" AES-128-XTS Decrypt NIST XTSTestVectors #72 -aes_decrypt_xts:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"93f3952656b43f663e0228ed74cbab0f":"b438d11e4af51107a4212f4844d8c670":128:0 +aes_decrypt_xts:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"b438d11e4af51107a4212f4844d8c670":"93f3952656b43f663e0228ed74cbab0f" AES-128-XTS Decrypt NIST XTSTestVectors #73 -aes_decrypt_xts:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"987d38afcfbc37b254ef41b6283813e5":"83eee45aba638bcf7126242177193563":128:0 +aes_decrypt_xts:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"83eee45aba638bcf7126242177193563":"987d38afcfbc37b254ef41b6283813e5" AES-128-XTS Decrypt NIST XTSTestVectors #74 -aes_decrypt_xts:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"bc0bbd16a21bafca60588e3f670fffb9":"e7e4dff4b36ee969fd6d80e8baec55c1":128:0 +aes_decrypt_xts:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"e7e4dff4b36ee969fd6d80e8baec55c1":"bc0bbd16a21bafca60588e3f670fffb9" AES-128-XTS Decrypt NIST XTSTestVectors #75 -aes_decrypt_xts:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"60698b823beb2d9d083dbe2e7d1ad243":"c3990409706eb8a1adcfe3baea3b421a":128:0 +aes_decrypt_xts:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"c3990409706eb8a1adcfe3baea3b421a":"60698b823beb2d9d083dbe2e7d1ad243" AES-128-XTS Decrypt NIST XTSTestVectors #76 -aes_decrypt_xts:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"a3ed3b9052e763b74913cbdf1f71fafd":"47fe4c3759758ebec50f370d483ebbb8":128:0 +aes_decrypt_xts:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"47fe4c3759758ebec50f370d483ebbb8":"a3ed3b9052e763b74913cbdf1f71fafd" AES-128-XTS Decrypt NIST XTSTestVectors #77 -aes_decrypt_xts:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5d8b27da95b073b93fb155edd2c88fea":"5c709d120204ee3e32a57b8ea278e584":128:0 +aes_decrypt_xts:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5c709d120204ee3e32a57b8ea278e584":"5d8b27da95b073b93fb155edd2c88fea" AES-128-XTS Decrypt NIST XTSTestVectors #78 -aes_decrypt_xts:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"b5458afa6268d1474a936ddf84b63b05":"fa81d0c1f617257b43a70136aeb55168":128:0 +aes_decrypt_xts:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"fa81d0c1f617257b43a70136aeb55168":"b5458afa6268d1474a936ddf84b63b05" AES-128-XTS Decrypt NIST XTSTestVectors #79 -aes_decrypt_xts:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"b0404586c6313ef77e24650fa48da131":"2becd50a3beb5ba41aefd89588413c49":128:0 +aes_decrypt_xts:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"2becd50a3beb5ba41aefd89588413c49":"b0404586c6313ef77e24650fa48da131" AES-128-XTS Decrypt NIST XTSTestVectors #80 -aes_decrypt_xts:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"61ebad87df8c35e459eb315e27bc47f3":"7cf6c02693cbb1f3fc825e4a5cdb7faf":128:0 +aes_decrypt_xts:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"7cf6c02693cbb1f3fc825e4a5cdb7faf":"61ebad87df8c35e459eb315e27bc47f3" AES-128-XTS Decrypt NIST XTSTestVectors #81 -aes_decrypt_xts:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"f113016f74698d5f1e680788ddcb56d0":"0d59b40ba3d9174b58da3eb82ae30de3":128:0 +aes_decrypt_xts:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"0d59b40ba3d9174b58da3eb82ae30de3":"f113016f74698d5f1e680788ddcb56d0" AES-128-XTS Decrypt NIST XTSTestVectors #82 -aes_decrypt_xts:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"fd8f5fa162820585f77b250efbb50f1c":"4a88021a53af9389e3abc19ab6c229a1":128:0 +aes_decrypt_xts:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"4a88021a53af9389e3abc19ab6c229a1":"fd8f5fa162820585f77b250efbb50f1c" AES-128-XTS Decrypt NIST XTSTestVectors #83 -aes_decrypt_xts:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"6551d6910ae9e2977f09bd2964d0fa2b":"a84dfd53492ec2e80bda1878929d2952":128:0 +aes_decrypt_xts:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"a84dfd53492ec2e80bda1878929d2952":"6551d6910ae9e2977f09bd2964d0fa2b" AES-128-XTS Decrypt NIST XTSTestVectors #84 -aes_decrypt_xts:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"caf96f61fa32ef7c5df66103afac8495":"a601c169ee059b8e1d0dce77cf2862f3":128:0 +aes_decrypt_xts:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"a601c169ee059b8e1d0dce77cf2862f3":"caf96f61fa32ef7c5df66103afac8495" AES-128-XTS Decrypt NIST XTSTestVectors #85 -aes_decrypt_xts:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"3518778706a0a0b1baac40dfd818161d":"85c93edc4ec4d33d6c4efd2558184025":128:0 +aes_decrypt_xts:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"85c93edc4ec4d33d6c4efd2558184025":"3518778706a0a0b1baac40dfd818161d" AES-128-XTS Decrypt NIST XTSTestVectors #86 -aes_decrypt_xts:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"6920c0c3a8e23bbeb85b52588abd97b6":"3f715273efe1954565669a208504a763":128:0 +aes_decrypt_xts:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"3f715273efe1954565669a208504a763":"6920c0c3a8e23bbeb85b52588abd97b6" AES-128-XTS Decrypt NIST XTSTestVectors #87 -aes_decrypt_xts:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"69cc1f1d1ccb57df6ade5302959b1746":"9dad8e385c806d90f88bfcbb5a7a9686":128:0 +aes_decrypt_xts:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"9dad8e385c806d90f88bfcbb5a7a9686":"69cc1f1d1ccb57df6ade5302959b1746" AES-128-XTS Decrypt NIST XTSTestVectors #88 -aes_decrypt_xts:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"7030b6122c3229afc6d12d8eb2c29b99":"a593e87bca06f1ba529317a718883abc":128:0 +aes_decrypt_xts:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"a593e87bca06f1ba529317a718883abc":"7030b6122c3229afc6d12d8eb2c29b99" AES-128-XTS Decrypt NIST XTSTestVectors #89 -aes_decrypt_xts:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"c9ac91095dbcea52d5fcb58b57871441":"89c0bb8f0fc63987cfd35c7292ddc50e":128:0 +aes_decrypt_xts:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"89c0bb8f0fc63987cfd35c7292ddc50e":"c9ac91095dbcea52d5fcb58b57871441" AES-128-XTS Decrypt NIST XTSTestVectors #90 -aes_decrypt_xts:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"ee286b71484a9d0556e1c042d8866d8f":"db8d019ab12c98765edb0a7ca2589248":128:0 +aes_decrypt_xts:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"db8d019ab12c98765edb0a7ca2589248":"ee286b71484a9d0556e1c042d8866d8f" AES-128-XTS Decrypt NIST XTSTestVectors #91 -aes_decrypt_xts:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"fe89ccbb3997f475e47d55248288a324":"f8560d7995e848fd0afc518b6c7b6278":128:0 +aes_decrypt_xts:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"f8560d7995e848fd0afc518b6c7b6278":"fe89ccbb3997f475e47d55248288a324" AES-128-XTS Decrypt NIST XTSTestVectors #92 -aes_decrypt_xts:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"c3c7d49f3c42a84e283ecbd8b2be81d2":"bbfeeba2077e7d29c67daf70a1ef1ca3":128:0 +aes_decrypt_xts:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"bbfeeba2077e7d29c67daf70a1ef1ca3":"c3c7d49f3c42a84e283ecbd8b2be81d2" AES-128-XTS Decrypt NIST XTSTestVectors #93 -aes_decrypt_xts:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"7a70fd4ded65cd2cfcf15ec38b2e879b":"0770f640b1013a31480c3250883b0bc7":128:0 +aes_decrypt_xts:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"0770f640b1013a31480c3250883b0bc7":"7a70fd4ded65cd2cfcf15ec38b2e879b" AES-128-XTS Decrypt NIST XTSTestVectors #94 -aes_decrypt_xts:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"975ea366ab8ec3cd35fdda91dfb1afd6":"d161e08ecf9cf27324ffa84aadf16941":128:0 +aes_decrypt_xts:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"d161e08ecf9cf27324ffa84aadf16941":"975ea366ab8ec3cd35fdda91dfb1afd6" AES-128-XTS Decrypt NIST XTSTestVectors #95 -aes_decrypt_xts:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"460c046e6e3b97e23565bce7b9224e97":"a138f2a16033e8c2245243da3adc1498":128:0 +aes_decrypt_xts:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"a138f2a16033e8c2245243da3adc1498":"460c046e6e3b97e23565bce7b9224e97" AES-128-XTS Decrypt NIST XTSTestVectors #96 -aes_decrypt_xts:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"efccaaae45817cbc6125c62084c705ec":"6ab5f2be0fca76bcd895bf9d46de01c9":128:0 +aes_decrypt_xts:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"6ab5f2be0fca76bcd895bf9d46de01c9":"efccaaae45817cbc6125c62084c705ec" AES-128-XTS Decrypt NIST XTSTestVectors #97 -aes_decrypt_xts:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"b0238d6d1f37953e70d3dcf3cdd328a1":"70330558f8288b74e8768cde827137c8":128:0 +aes_decrypt_xts:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"70330558f8288b74e8768cde827137c8":"b0238d6d1f37953e70d3dcf3cdd328a1" AES-128-XTS Decrypt NIST XTSTestVectors #98 -aes_decrypt_xts:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"7ed0d25f0d1d1b7e62facfe36e468c5d":"a220ba8c184a68262b455e73c13e6ffc":128:0 +aes_decrypt_xts:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"a220ba8c184a68262b455e73c13e6ffc":"7ed0d25f0d1d1b7e62facfe36e468c5d" AES-128-XTS Decrypt NIST XTSTestVectors #99 -aes_decrypt_xts:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"00e8406307b798d43fdff7772565d5f9":"66235974ce1e718c12f7b8fd729defe0":128:0 +aes_decrypt_xts:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"66235974ce1e718c12f7b8fd729defe0":"00e8406307b798d43fdff7772565d5f9" AES-128-XTS Decrypt NIST XTSTestVectors #100 -aes_decrypt_xts:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"ecc038125fdb267662a57dc9acc06439":"c333dcc0149fac9f23374f9023fe92d0":128:0 +aes_decrypt_xts:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"c333dcc0149fac9f23374f9023fe92d0":"ecc038125fdb267662a57dc9acc06439" AES-128-XTS Decrypt NIST XTSTestVectors #101 -aes_decrypt_xts:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":256:0 +aes_decrypt_xts:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1" AES-128-XTS Decrypt NIST XTSTestVectors #102 -aes_decrypt_xts:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":256:0 +aes_decrypt_xts:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5" AES-128-XTS Decrypt NIST XTSTestVectors #103 -aes_decrypt_xts:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":256:0 +aes_decrypt_xts:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76" AES-128-XTS Decrypt NIST XTSTestVectors #104 -aes_decrypt_xts:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":256:0 +aes_decrypt_xts:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5" AES-128-XTS Decrypt NIST XTSTestVectors #105 -aes_decrypt_xts:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":256:0 +aes_decrypt_xts:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d" AES-128-XTS Decrypt NIST XTSTestVectors #106 -aes_decrypt_xts:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":256:0 +aes_decrypt_xts:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3" AES-128-XTS Decrypt NIST XTSTestVectors #107 -aes_decrypt_xts:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":256:0 +aes_decrypt_xts:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5" AES-128-XTS Decrypt NIST XTSTestVectors #108 -aes_decrypt_xts:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":256:0 +aes_decrypt_xts:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594" AES-128-XTS Decrypt NIST XTSTestVectors #109 -aes_decrypt_xts:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":256:0 +aes_decrypt_xts:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533" AES-128-XTS Decrypt NIST XTSTestVectors #110 -aes_decrypt_xts:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":256:0 +aes_decrypt_xts:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872" AES-128-XTS Decrypt NIST XTSTestVectors #111 -aes_decrypt_xts:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":256:0 +aes_decrypt_xts:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5" AES-128-XTS Decrypt NIST XTSTestVectors #112 -aes_decrypt_xts:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":256:0 +aes_decrypt_xts:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7" AES-128-XTS Decrypt NIST XTSTestVectors #113 -aes_decrypt_xts:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":256:0 +aes_decrypt_xts:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950" AES-128-XTS Decrypt NIST XTSTestVectors #114 -aes_decrypt_xts:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":256:0 +aes_decrypt_xts:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03" AES-128-XTS Decrypt NIST XTSTestVectors #115 -aes_decrypt_xts:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":256:0 +aes_decrypt_xts:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de" AES-128-XTS Decrypt NIST XTSTestVectors #116 -aes_decrypt_xts:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":256:0 +aes_decrypt_xts:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4" AES-128-XTS Decrypt NIST XTSTestVectors #117 -aes_decrypt_xts:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":256:0 +aes_decrypt_xts:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb" AES-128-XTS Decrypt NIST XTSTestVectors #118 -aes_decrypt_xts:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":256:0 +aes_decrypt_xts:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1" AES-128-XTS Decrypt NIST XTSTestVectors #119 -aes_decrypt_xts:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":256:0 +aes_decrypt_xts:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d" AES-128-XTS Decrypt NIST XTSTestVectors #120 -aes_decrypt_xts:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":256:0 +aes_decrypt_xts:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26" AES-128-XTS Decrypt NIST XTSTestVectors #121 -aes_decrypt_xts:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":256:0 +aes_decrypt_xts:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6" AES-128-XTS Decrypt NIST XTSTestVectors #122 -aes_decrypt_xts:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":256:0 +aes_decrypt_xts:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683" AES-128-XTS Decrypt NIST XTSTestVectors #123 -aes_decrypt_xts:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":256:0 +aes_decrypt_xts:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419" AES-128-XTS Decrypt NIST XTSTestVectors #124 -aes_decrypt_xts:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":256:0 +aes_decrypt_xts:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241" AES-128-XTS Decrypt NIST XTSTestVectors #125 -aes_decrypt_xts:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":256:0 +aes_decrypt_xts:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e" AES-128-XTS Decrypt NIST XTSTestVectors #126 -aes_decrypt_xts:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":256:0 +aes_decrypt_xts:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822" AES-128-XTS Decrypt NIST XTSTestVectors #127 -aes_decrypt_xts:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":256:0 +aes_decrypt_xts:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222" AES-128-XTS Decrypt NIST XTSTestVectors #128 -aes_decrypt_xts:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":256:0 +aes_decrypt_xts:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905" AES-128-XTS Decrypt NIST XTSTestVectors #129 -aes_decrypt_xts:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":256:0 +aes_decrypt_xts:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e" AES-128-XTS Decrypt NIST XTSTestVectors #130 -aes_decrypt_xts:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":256:0 +aes_decrypt_xts:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a" AES-128-XTS Decrypt NIST XTSTestVectors #131 -aes_decrypt_xts:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":256:0 +aes_decrypt_xts:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549" AES-128-XTS Decrypt NIST XTSTestVectors #132 -aes_decrypt_xts:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":256:0 +aes_decrypt_xts:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9" AES-128-XTS Decrypt NIST XTSTestVectors #133 -aes_decrypt_xts:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":256:0 +aes_decrypt_xts:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615" AES-128-XTS Decrypt NIST XTSTestVectors #134 -aes_decrypt_xts:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":256:0 +aes_decrypt_xts:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8" AES-128-XTS Decrypt NIST XTSTestVectors #135 -aes_decrypt_xts:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":256:0 +aes_decrypt_xts:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942" AES-128-XTS Decrypt NIST XTSTestVectors #136 -aes_decrypt_xts:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":256:0 +aes_decrypt_xts:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab" AES-128-XTS Decrypt NIST XTSTestVectors #137 -aes_decrypt_xts:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":256:0 +aes_decrypt_xts:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4" AES-128-XTS Decrypt NIST XTSTestVectors #138 -aes_decrypt_xts:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":256:0 +aes_decrypt_xts:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde" AES-128-XTS Decrypt NIST XTSTestVectors #139 -aes_decrypt_xts:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":256:0 +aes_decrypt_xts:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f" AES-128-XTS Decrypt NIST XTSTestVectors #140 -aes_decrypt_xts:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":256:0 +aes_decrypt_xts:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8" AES-128-XTS Decrypt NIST XTSTestVectors #141 -aes_decrypt_xts:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":256:0 +aes_decrypt_xts:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0" AES-128-XTS Decrypt NIST XTSTestVectors #142 -aes_decrypt_xts:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":256:0 +aes_decrypt_xts:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78" AES-128-XTS Decrypt NIST XTSTestVectors #143 -aes_decrypt_xts:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":256:0 +aes_decrypt_xts:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f" AES-128-XTS Decrypt NIST XTSTestVectors #144 -aes_decrypt_xts:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":256:0 +aes_decrypt_xts:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a" AES-128-XTS Decrypt NIST XTSTestVectors #145 -aes_decrypt_xts:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":256:0 +aes_decrypt_xts:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab" AES-128-XTS Decrypt NIST XTSTestVectors #146 -aes_decrypt_xts:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":256:0 +aes_decrypt_xts:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb" AES-128-XTS Decrypt NIST XTSTestVectors #147 -aes_decrypt_xts:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":256:0 +aes_decrypt_xts:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944" AES-128-XTS Decrypt NIST XTSTestVectors #148 -aes_decrypt_xts:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":256:0 +aes_decrypt_xts:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8" AES-128-XTS Decrypt NIST XTSTestVectors #149 -aes_decrypt_xts:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":256:0 +aes_decrypt_xts:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b" AES-128-XTS Decrypt NIST XTSTestVectors #150 -aes_decrypt_xts:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":256:0 +aes_decrypt_xts:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6" AES-128-XTS Decrypt NIST XTSTestVectors #151 -aes_decrypt_xts:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":256:0 +aes_decrypt_xts:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd" AES-128-XTS Decrypt NIST XTSTestVectors #152 -aes_decrypt_xts:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":256:0 +aes_decrypt_xts:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370" AES-128-XTS Decrypt NIST XTSTestVectors #153 -aes_decrypt_xts:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":256:0 +aes_decrypt_xts:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a" AES-128-XTS Decrypt NIST XTSTestVectors #154 -aes_decrypt_xts:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":256:0 +aes_decrypt_xts:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c" AES-128-XTS Decrypt NIST XTSTestVectors #155 -aes_decrypt_xts:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":256:0 +aes_decrypt_xts:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09" AES-128-XTS Decrypt NIST XTSTestVectors #156 -aes_decrypt_xts:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":256:0 +aes_decrypt_xts:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f" AES-128-XTS Decrypt NIST XTSTestVectors #157 -aes_decrypt_xts:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":256:0 +aes_decrypt_xts:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916" AES-128-XTS Decrypt NIST XTSTestVectors #158 -aes_decrypt_xts:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":256:0 +aes_decrypt_xts:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa" AES-128-XTS Decrypt NIST XTSTestVectors #159 -aes_decrypt_xts:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":256:0 +aes_decrypt_xts:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12" AES-128-XTS Decrypt NIST XTSTestVectors #160 -aes_decrypt_xts:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":256:0 +aes_decrypt_xts:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d" AES-128-XTS Decrypt NIST XTSTestVectors #161 -aes_decrypt_xts:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":256:0 +aes_decrypt_xts:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b" AES-128-XTS Decrypt NIST XTSTestVectors #162 -aes_decrypt_xts:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":256:0 +aes_decrypt_xts:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8" AES-128-XTS Decrypt NIST XTSTestVectors #163 -aes_decrypt_xts:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":256:0 +aes_decrypt_xts:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769" AES-128-XTS Decrypt NIST XTSTestVectors #164 -aes_decrypt_xts:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":256:0 +aes_decrypt_xts:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a" AES-128-XTS Decrypt NIST XTSTestVectors #165 -aes_decrypt_xts:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":256:0 +aes_decrypt_xts:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b" AES-128-XTS Decrypt NIST XTSTestVectors #166 -aes_decrypt_xts:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":256:0 +aes_decrypt_xts:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093" AES-128-XTS Decrypt NIST XTSTestVectors #167 -aes_decrypt_xts:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":256:0 +aes_decrypt_xts:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c" AES-128-XTS Decrypt NIST XTSTestVectors #168 -aes_decrypt_xts:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":256:0 +aes_decrypt_xts:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5" AES-128-XTS Decrypt NIST XTSTestVectors #169 -aes_decrypt_xts:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":256:0 +aes_decrypt_xts:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96" AES-128-XTS Decrypt NIST XTSTestVectors #170 -aes_decrypt_xts:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":256:0 +aes_decrypt_xts:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb" AES-128-XTS Decrypt NIST XTSTestVectors #171 -aes_decrypt_xts:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":256:0 +aes_decrypt_xts:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70" AES-128-XTS Decrypt NIST XTSTestVectors #172 -aes_decrypt_xts:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":256:0 +aes_decrypt_xts:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5" AES-128-XTS Decrypt NIST XTSTestVectors #173 -aes_decrypt_xts:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":256:0 +aes_decrypt_xts:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a" AES-128-XTS Decrypt NIST XTSTestVectors #174 -aes_decrypt_xts:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":256:0 +aes_decrypt_xts:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9" AES-128-XTS Decrypt NIST XTSTestVectors #175 -aes_decrypt_xts:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":256:0 +aes_decrypt_xts:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de" AES-128-XTS Decrypt NIST XTSTestVectors #176 -aes_decrypt_xts:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":256:0 +aes_decrypt_xts:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568" AES-128-XTS Decrypt NIST XTSTestVectors #177 -aes_decrypt_xts:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":256:0 +aes_decrypt_xts:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2" AES-128-XTS Decrypt NIST XTSTestVectors #178 -aes_decrypt_xts:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":256:0 +aes_decrypt_xts:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926" AES-128-XTS Decrypt NIST XTSTestVectors #179 -aes_decrypt_xts:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":256:0 +aes_decrypt_xts:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b" AES-128-XTS Decrypt NIST XTSTestVectors #180 -aes_decrypt_xts:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":256:0 +aes_decrypt_xts:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b" AES-128-XTS Decrypt NIST XTSTestVectors #181 -aes_decrypt_xts:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":256:0 +aes_decrypt_xts:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e" AES-128-XTS Decrypt NIST XTSTestVectors #182 -aes_decrypt_xts:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":256:0 +aes_decrypt_xts:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55" AES-128-XTS Decrypt NIST XTSTestVectors #183 -aes_decrypt_xts:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":256:0 +aes_decrypt_xts:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05" AES-128-XTS Decrypt NIST XTSTestVectors #184 -aes_decrypt_xts:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":256:0 +aes_decrypt_xts:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad" AES-128-XTS Decrypt NIST XTSTestVectors #185 -aes_decrypt_xts:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":256:0 +aes_decrypt_xts:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf" AES-128-XTS Decrypt NIST XTSTestVectors #186 -aes_decrypt_xts:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":256:0 +aes_decrypt_xts:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938" AES-128-XTS Decrypt NIST XTSTestVectors #187 -aes_decrypt_xts:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":256:0 +aes_decrypt_xts:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4" AES-128-XTS Decrypt NIST XTSTestVectors #188 -aes_decrypt_xts:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":256:0 +aes_decrypt_xts:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884" AES-128-XTS Decrypt NIST XTSTestVectors #189 -aes_decrypt_xts:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":256:0 +aes_decrypt_xts:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698" AES-128-XTS Decrypt NIST XTSTestVectors #190 -aes_decrypt_xts:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":256:0 +aes_decrypt_xts:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19" AES-128-XTS Decrypt NIST XTSTestVectors #191 -aes_decrypt_xts:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":256:0 +aes_decrypt_xts:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7" AES-128-XTS Decrypt NIST XTSTestVectors #192 -aes_decrypt_xts:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":256:0 +aes_decrypt_xts:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f" AES-128-XTS Decrypt NIST XTSTestVectors #193 -aes_decrypt_xts:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":256:0 +aes_decrypt_xts:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892" AES-128-XTS Decrypt NIST XTSTestVectors #194 -aes_decrypt_xts:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":256:0 +aes_decrypt_xts:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595" AES-128-XTS Decrypt NIST XTSTestVectors #195 -aes_decrypt_xts:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":256:0 +aes_decrypt_xts:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479" AES-128-XTS Decrypt NIST XTSTestVectors #196 -aes_decrypt_xts:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":256:0 +aes_decrypt_xts:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860" AES-128-XTS Decrypt NIST XTSTestVectors #197 -aes_decrypt_xts:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":256:0 +aes_decrypt_xts:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172" AES-128-XTS Decrypt NIST XTSTestVectors #198 -aes_decrypt_xts:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":256:0 +aes_decrypt_xts:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e" AES-128-XTS Decrypt NIST XTSTestVectors #199 -aes_decrypt_xts:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":256:0 +aes_decrypt_xts:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab" AES-128-XTS Decrypt NIST XTSTestVectors #200 -aes_decrypt_xts:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":256:0 +aes_decrypt_xts:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c" AES-128-XTS Decrypt NIST XTSTestVectors #201 -aes_decrypt_xts:"fbef31bf8aa7546b52686be2a66019a15ea83833654901f6dc52603ae65579ea":"2379d5a6850ec74e7457f5a3ad43af40":"23d56c45e6ca04bc1fea4024f8f113fa3f634fc3e50d3305e4":"9475dd02153732bb6b31e29f8da5c357658c2dad55bfe960df":200:0 +aes_decrypt_xts:"fbef31bf8aa7546b52686be2a66019a15ea83833654901f6dc52603ae65579ea":"2379d5a6850ec74e7457f5a3ad43af40":"9475dd02153732bb6b31e29f8da5c357658c2dad55bfe960df":"23d56c45e6ca04bc1fea4024f8f113fa3f634fc3e50d3305e4" AES-128-XTS Decrypt NIST XTSTestVectors #202 -aes_decrypt_xts:"d806b852edb29707f3e94ac52f43d35a23a9b4b3be8171a4690516da12b2040a":"9fa41b79ea18dcd6dd2c1d8cb0006d28":"6029618d912f8e54e5cf6baa9c347a9d7064ff195aa226ed6b":"ed350cb05ba65b5e5b1fe437a15db57c66b4c2b7481a415e6f":200:0 +aes_decrypt_xts:"d806b852edb29707f3e94ac52f43d35a23a9b4b3be8171a4690516da12b2040a":"9fa41b79ea18dcd6dd2c1d8cb0006d28":"ed350cb05ba65b5e5b1fe437a15db57c66b4c2b7481a415e6f":"6029618d912f8e54e5cf6baa9c347a9d7064ff195aa226ed6b" AES-128-XTS Decrypt NIST XTSTestVectors #203 -aes_decrypt_xts:"e4b92fa62c5f093949d1dfd49d300e1b73415a176315b921e70fd49e6ba634e1":"9d85e0c9e1ac1eecd012d302c7da2e3d":"c7273e5bbf320c130ed8c158a075d3553a2da19db0ae3d1198":"86120e308d7e38e7bd9b437715e19e43b243fca9e4cd05c0f5":200:0 +aes_decrypt_xts:"e4b92fa62c5f093949d1dfd49d300e1b73415a176315b921e70fd49e6ba634e1":"9d85e0c9e1ac1eecd012d302c7da2e3d":"86120e308d7e38e7bd9b437715e19e43b243fca9e4cd05c0f5":"c7273e5bbf320c130ed8c158a075d3553a2da19db0ae3d1198" AES-128-XTS Decrypt NIST XTSTestVectors #204 -aes_decrypt_xts:"a037ca87a644b5d30927aeff1b31f97c5f19e428e972b8c685c19e17924744f4":"efb161410b021384674ff1f50b2987c4":"07ac685baa212272068edebdd6a62bdfc2fc0d71ab5739e3b3":"92dea2ec459a91dfe84bdfcc5c08eb6a3c861241c05241c7fa":200:0 +aes_decrypt_xts:"a037ca87a644b5d30927aeff1b31f97c5f19e428e972b8c685c19e17924744f4":"efb161410b021384674ff1f50b2987c4":"92dea2ec459a91dfe84bdfcc5c08eb6a3c861241c05241c7fa":"07ac685baa212272068edebdd6a62bdfc2fc0d71ab5739e3b3" AES-128-XTS Decrypt NIST XTSTestVectors #205 -aes_decrypt_xts:"404d270f415cfabac621470b35d87a27d41e6b40bc5f4c4c9cba13558047dc26":"38193d9ab89457e11738e940bd08f11b":"58cc332b30a2c750cc9c52b7670bb15cb7e9cbde953df73bb2":"ecbffcccdc9e1bbe602f1aa1e51bb3ad0d70c56d34405bcedd":200:0 +aes_decrypt_xts:"404d270f415cfabac621470b35d87a27d41e6b40bc5f4c4c9cba13558047dc26":"38193d9ab89457e11738e940bd08f11b":"ecbffcccdc9e1bbe602f1aa1e51bb3ad0d70c56d34405bcedd":"58cc332b30a2c750cc9c52b7670bb15cb7e9cbde953df73bb2" AES-128-XTS Decrypt NIST XTSTestVectors #206 -aes_decrypt_xts:"c33c5f6888af228af40fcc927f7ccf5480ddeac79198363ec27a06778c7e97d0":"3ace69701c340df58f49ca0ba8ca7a9a":"1645015b342b14af82eee3d49ca66ee4a54346eb13d927e736":"490c6b508d5d58fe24c5d3df81dd908cb047473757acb46113":200:0 +aes_decrypt_xts:"c33c5f6888af228af40fcc927f7ccf5480ddeac79198363ec27a06778c7e97d0":"3ace69701c340df58f49ca0ba8ca7a9a":"490c6b508d5d58fe24c5d3df81dd908cb047473757acb46113":"1645015b342b14af82eee3d49ca66ee4a54346eb13d927e736" AES-128-XTS Decrypt NIST XTSTestVectors #207 -aes_decrypt_xts:"fcc244bb1d01e3376ce8c67837ec3926cb71ad57270ad74ee017a43e44048c68":"e58e1358203b9298998143fbfe61af7e":"2f080621a40e749206af079d6e93903d4c2d40f667fdfa9b5d":"dd743f4de3cbb9911fc6b8a049321cd1fb813a7e9152fee484":200:0 +aes_decrypt_xts:"fcc244bb1d01e3376ce8c67837ec3926cb71ad57270ad74ee017a43e44048c68":"e58e1358203b9298998143fbfe61af7e":"dd743f4de3cbb9911fc6b8a049321cd1fb813a7e9152fee484":"2f080621a40e749206af079d6e93903d4c2d40f667fdfa9b5d" AES-128-XTS Decrypt NIST XTSTestVectors #208 -aes_decrypt_xts:"e347aa19836fe56b333a1a3dcfcf38f9d3e6a8f65e02bc154e4c6e6ea57f1b4a":"822ee75f223be8bd7c1bb515e41c8723":"7449e37f7411d56156c45b916127fb163c2b09ea03874d8207":"f826708df391b465c39571cf6908a5f730ea6038034f25a150":200:0 +aes_decrypt_xts:"e347aa19836fe56b333a1a3dcfcf38f9d3e6a8f65e02bc154e4c6e6ea57f1b4a":"822ee75f223be8bd7c1bb515e41c8723":"f826708df391b465c39571cf6908a5f730ea6038034f25a150":"7449e37f7411d56156c45b916127fb163c2b09ea03874d8207" AES-128-XTS Decrypt NIST XTSTestVectors #209 -aes_decrypt_xts:"a92d85c29168738cdccc19b8343c241434d0e00553b0e14bba86c62324d43d61":"7e1b80b3b565d9b1d0b7fe9f24d52f82":"6b0b6128f7e3384008da26b1754141fdf341e86e70396f5c3a":"9243754996b00661089e35ac65423d63177da076462c7185c6":200:0 +aes_decrypt_xts:"a92d85c29168738cdccc19b8343c241434d0e00553b0e14bba86c62324d43d61":"7e1b80b3b565d9b1d0b7fe9f24d52f82":"9243754996b00661089e35ac65423d63177da076462c7185c6":"6b0b6128f7e3384008da26b1754141fdf341e86e70396f5c3a" AES-128-XTS Decrypt NIST XTSTestVectors #210 -aes_decrypt_xts:"2bbf7cdc0e467166037b995101d6a4c248e385a59dc5601c64212dff72243578":"e628449b7f6317899a8f87f870ef593b":"865ac26b6ac1ed29ffb39fcabb9cba74ebedacfdb4c703193b":"9ad23cb9bd377a0502e4cc9f9df43b8b830549779e9223fef8":200:0 +aes_decrypt_xts:"2bbf7cdc0e467166037b995101d6a4c248e385a59dc5601c64212dff72243578":"e628449b7f6317899a8f87f870ef593b":"9ad23cb9bd377a0502e4cc9f9df43b8b830549779e9223fef8":"865ac26b6ac1ed29ffb39fcabb9cba74ebedacfdb4c703193b" AES-128-XTS Decrypt NIST XTSTestVectors #211 -aes_decrypt_xts:"e8df65c635daea1f8e16344b7cb720e596264e3863c358bfc7aa47ad998516a5":"2fcadf3615e63e8aee822b039afb198d":"863312743a006c4849b71157f1ca1083cfa1b2654ba37ea44f":"54324f39cfe3463126925ef444caf18b3bebd2956651f0e6fd":200:0 +aes_decrypt_xts:"e8df65c635daea1f8e16344b7cb720e596264e3863c358bfc7aa47ad998516a5":"2fcadf3615e63e8aee822b039afb198d":"54324f39cfe3463126925ef444caf18b3bebd2956651f0e6fd":"863312743a006c4849b71157f1ca1083cfa1b2654ba37ea44f" AES-128-XTS Decrypt NIST XTSTestVectors #212 -aes_decrypt_xts:"17beb510f684f64484904b1dde68038da6b6aaee611bafb492ed1c608593b118":"07825deed3b028425df2c88ead6a330a":"370dda9447cbe265eb1c391a89a1c8aaf75d4425ab29630a7f":"d3d43653393803fd1bc2bdb4a27cad1085d8235cf875426af3":200:0 +aes_decrypt_xts:"17beb510f684f64484904b1dde68038da6b6aaee611bafb492ed1c608593b118":"07825deed3b028425df2c88ead6a330a":"d3d43653393803fd1bc2bdb4a27cad1085d8235cf875426af3":"370dda9447cbe265eb1c391a89a1c8aaf75d4425ab29630a7f" AES-128-XTS Decrypt NIST XTSTestVectors #213 -aes_decrypt_xts:"6efb572de4e6a588c43c7afa9fc4f58650bea15d713f58fc273c97d492177f2c":"9244fdf8b6f83fb425e5066d5abe3862":"253c0d5cb7268054fea1c8ffc68ec7dde3636268db54ceff2e":"2e6da9dac3d16720d0b402eaa48d585f76a3c6da6a872e94db":200:0 +aes_decrypt_xts:"6efb572de4e6a588c43c7afa9fc4f58650bea15d713f58fc273c97d492177f2c":"9244fdf8b6f83fb425e5066d5abe3862":"2e6da9dac3d16720d0b402eaa48d585f76a3c6da6a872e94db":"253c0d5cb7268054fea1c8ffc68ec7dde3636268db54ceff2e" AES-128-XTS Decrypt NIST XTSTestVectors #214 -aes_decrypt_xts:"2e52f59ebec33506000c2d05aa3bc8047f5798fc0736456a0d3ed09d86b9c36a":"1e3022eeb3a832909beecf9ae632a13f":"267119f919b490ec4d3bd72cec3a717f8e9ec707aabe984bd6":"6e3a0442958f6421a147b2b4ef7a8de8cf3e375af8d07d73bd":200:0 +aes_decrypt_xts:"2e52f59ebec33506000c2d05aa3bc8047f5798fc0736456a0d3ed09d86b9c36a":"1e3022eeb3a832909beecf9ae632a13f":"6e3a0442958f6421a147b2b4ef7a8de8cf3e375af8d07d73bd":"267119f919b490ec4d3bd72cec3a717f8e9ec707aabe984bd6" AES-128-XTS Decrypt NIST XTSTestVectors #215 -aes_decrypt_xts:"13cbc3bbfa8216a7d956b5f7391e0a9d82cff559263d3ec7e0d1e98a5d0e3b94":"b1fedd540d12db05fca03e6971cd93b0":"fa354cbfce182ed0710d6007e944d1a8b299de9320ce775db2":"85868ec4af1df87fbc3a3cb840ea93be6098c0dcf35f18901b":200:0 +aes_decrypt_xts:"13cbc3bbfa8216a7d956b5f7391e0a9d82cff559263d3ec7e0d1e98a5d0e3b94":"b1fedd540d12db05fca03e6971cd93b0":"85868ec4af1df87fbc3a3cb840ea93be6098c0dcf35f18901b":"fa354cbfce182ed0710d6007e944d1a8b299de9320ce775db2" AES-128-XTS Decrypt NIST XTSTestVectors #216 -aes_decrypt_xts:"93d5eb3e9b513a5a86cf7a8422a4411c164d70d1814c275cae56de0995e2c396":"0112091ca7b7754612998dda5ade4882":"d6769334e90a0faa02e2f952208aca066213db8dca050b528a":"e5a0e987448fb909b58033f8670aaa882317370f0a4427fbc3":200:0 +aes_decrypt_xts:"93d5eb3e9b513a5a86cf7a8422a4411c164d70d1814c275cae56de0995e2c396":"0112091ca7b7754612998dda5ade4882":"e5a0e987448fb909b58033f8670aaa882317370f0a4427fbc3":"d6769334e90a0faa02e2f952208aca066213db8dca050b528a" AES-128-XTS Decrypt NIST XTSTestVectors #217 -aes_decrypt_xts:"9e291547fc0f7a31c6330a34871c49c73ebc245ddcb50c076cf57a079c845f9c":"d0ae20895052d6b6fd53508cd687c642":"3ecdefcf57f1b5a7c1d275aac331ccd2255c089e5444b16a51":"af0db7968c67f68f313708a55d1de9de87491c2c07f74cdf85":200:0 +aes_decrypt_xts:"9e291547fc0f7a31c6330a34871c49c73ebc245ddcb50c076cf57a079c845f9c":"d0ae20895052d6b6fd53508cd687c642":"af0db7968c67f68f313708a55d1de9de87491c2c07f74cdf85":"3ecdefcf57f1b5a7c1d275aac331ccd2255c089e5444b16a51" AES-128-XTS Decrypt NIST XTSTestVectors #218 -aes_decrypt_xts:"b39208c7f52f6dbe67817d83a8b6a539bbaaea877f2ebcd18d7021b32fe7f61e":"6f381a595594fa453e953ff7b4903482":"30b06d11fe83e9a471b120589906c0a818ac3d9ff03f620f07":"d606ec4146428145db4caccb7b5b87fdc2d4d25b7a44ec993a":200:0 +aes_decrypt_xts:"b39208c7f52f6dbe67817d83a8b6a539bbaaea877f2ebcd18d7021b32fe7f61e":"6f381a595594fa453e953ff7b4903482":"d606ec4146428145db4caccb7b5b87fdc2d4d25b7a44ec993a":"30b06d11fe83e9a471b120589906c0a818ac3d9ff03f620f07" AES-128-XTS Decrypt NIST XTSTestVectors #219 -aes_decrypt_xts:"041dc3f6ba6c6a2ffb554c61f0cf1452071e0d84adeba3d16cfc86564f47d05f":"6e2c3aa1dd00fa16d8831d263932aeb8":"3086460934d7a7ed6b3798c122fc8c0e1ec6a3a07605fcd327":"63db506c7ea17e5cd75dcc12f6c4a427305bb98ea6247b47b2":200:0 +aes_decrypt_xts:"041dc3f6ba6c6a2ffb554c61f0cf1452071e0d84adeba3d16cfc86564f47d05f":"6e2c3aa1dd00fa16d8831d263932aeb8":"63db506c7ea17e5cd75dcc12f6c4a427305bb98ea6247b47b2":"3086460934d7a7ed6b3798c122fc8c0e1ec6a3a07605fcd327" AES-128-XTS Decrypt NIST XTSTestVectors #220 -aes_decrypt_xts:"ac4fc0dfc316cb268a2fada377b433a6c4c15dd25214762c7d5f4b8f30397088":"ba1a0ddc152f4919b217df3773031694":"37cd1b9b779cd4051af39754d97bcb44805d8c72645063347c":"bd2251160c6b3ea80ccc354758ee2971bdc8de9ef7e94056c4":200:0 +aes_decrypt_xts:"ac4fc0dfc316cb268a2fada377b433a6c4c15dd25214762c7d5f4b8f30397088":"ba1a0ddc152f4919b217df3773031694":"bd2251160c6b3ea80ccc354758ee2971bdc8de9ef7e94056c4":"37cd1b9b779cd4051af39754d97bcb44805d8c72645063347c" AES-128-XTS Decrypt NIST XTSTestVectors #221 -aes_decrypt_xts:"c8eee809910165fb5dd97b96e8f71e6957b0e52d1f733618570906d14c40ec2f":"5c224010c54f128a54530baafb5c3044":"ea6632f9d6d552b414ede1a5d2a554505f8d2e22ffea692e53":"c669d4464784eb9bcdd09f8e3aa38a3c838d1d34f8d3f55052":200:0 +aes_decrypt_xts:"c8eee809910165fb5dd97b96e8f71e6957b0e52d1f733618570906d14c40ec2f":"5c224010c54f128a54530baafb5c3044":"c669d4464784eb9bcdd09f8e3aa38a3c838d1d34f8d3f55052":"ea6632f9d6d552b414ede1a5d2a554505f8d2e22ffea692e53" AES-128-XTS Decrypt NIST XTSTestVectors #222 -aes_decrypt_xts:"088a939d9214f56b5ded3cadcb345bbf8386aab39c66d36ae749b28e0dc0244e":"82e55bdc602a52280c52190f693662ef":"8c7b4e51eb88aae271e2d1fbe4522fa9d128dd4bc2e36efdc4":"c3f459370ea04d6997b46a7ce523f63e260a2495dcb648aec7":200:0 +aes_decrypt_xts:"088a939d9214f56b5ded3cadcb345bbf8386aab39c66d36ae749b28e0dc0244e":"82e55bdc602a52280c52190f693662ef":"c3f459370ea04d6997b46a7ce523f63e260a2495dcb648aec7":"8c7b4e51eb88aae271e2d1fbe4522fa9d128dd4bc2e36efdc4" AES-128-XTS Decrypt NIST XTSTestVectors #223 -aes_decrypt_xts:"bfd385f0c1f82beeefda68223e8866bad2a69be66c32df1e80ee598563aa7a47":"2618b01fb8f6c823f45ab07551e5ed17":"c86539642f08cc959d906d85910321029e1484fed419daea69":"e9532da75da1a5c13b746667fb072601dd701567714adce42d":200:0 +aes_decrypt_xts:"bfd385f0c1f82beeefda68223e8866bad2a69be66c32df1e80ee598563aa7a47":"2618b01fb8f6c823f45ab07551e5ed17":"e9532da75da1a5c13b746667fb072601dd701567714adce42d":"c86539642f08cc959d906d85910321029e1484fed419daea69" AES-128-XTS Decrypt NIST XTSTestVectors #224 -aes_decrypt_xts:"ee74d721fb5abd7237213ffb3259e6d6d371edd6be98102e7cdf9f386b2c3ce8":"b8b6d1d6409342971d1b62d9b22c1bc9":"d768bad059b0c94ff3aa95e2742572bd44d7bf05dc9a1d3e29":"5aa11c28745d15567c774ad6185813c2280673c8f032a61c6c":200:0 +aes_decrypt_xts:"ee74d721fb5abd7237213ffb3259e6d6d371edd6be98102e7cdf9f386b2c3ce8":"b8b6d1d6409342971d1b62d9b22c1bc9":"5aa11c28745d15567c774ad6185813c2280673c8f032a61c6c":"d768bad059b0c94ff3aa95e2742572bd44d7bf05dc9a1d3e29" AES-128-XTS Decrypt NIST XTSTestVectors #225 -aes_decrypt_xts:"48d13c8259e99ea601b78cbbc10389985f49f1c8cf832fcbfa3985f87ba8c032":"a5d1bad7b446b97ab2a3c8baa3aabb48":"9c426465cd3d9458bf3f8e3fc2636ddcbc7fb4b57428bd6ea2":"049ee2f3b049e9303a0d4bf47f0c5b76e6f6d1431158b2d23a":200:0 +aes_decrypt_xts:"48d13c8259e99ea601b78cbbc10389985f49f1c8cf832fcbfa3985f87ba8c032":"a5d1bad7b446b97ab2a3c8baa3aabb48":"049ee2f3b049e9303a0d4bf47f0c5b76e6f6d1431158b2d23a":"9c426465cd3d9458bf3f8e3fc2636ddcbc7fb4b57428bd6ea2" AES-128-XTS Decrypt NIST XTSTestVectors #226 -aes_decrypt_xts:"4eeccad57d350ec0e70465a1cd7d8f1cd2bd7157b1deab22675b600c99b4ccf0":"1728d62293e761d1480a01f4596b0e32":"c15d7e9d1ac579277f78f0a3ae8dd9d29ed55b90a94e8650d0":"81ab55151b51b41881e675c4d8bfb376d79c26425be1bd6a5e":200:0 +aes_decrypt_xts:"4eeccad57d350ec0e70465a1cd7d8f1cd2bd7157b1deab22675b600c99b4ccf0":"1728d62293e761d1480a01f4596b0e32":"81ab55151b51b41881e675c4d8bfb376d79c26425be1bd6a5e":"c15d7e9d1ac579277f78f0a3ae8dd9d29ed55b90a94e8650d0" AES-128-XTS Decrypt NIST XTSTestVectors #227 -aes_decrypt_xts:"e74294e1713e59822141853a5ef8e9ffdf98f4f4706464bda9b975787bb789e9":"9e1fd8b505932b268f792b83169369a5":"55b18ced640860d480f630a6b71f7f5aea2926d5b4e4fb3097":"c5981c2f99d8baf6cf7850d9f3629be0558d411bafa30657e3":200:0 +aes_decrypt_xts:"e74294e1713e59822141853a5ef8e9ffdf98f4f4706464bda9b975787bb789e9":"9e1fd8b505932b268f792b83169369a5":"c5981c2f99d8baf6cf7850d9f3629be0558d411bafa30657e3":"55b18ced640860d480f630a6b71f7f5aea2926d5b4e4fb3097" AES-128-XTS Decrypt NIST XTSTestVectors #228 -aes_decrypt_xts:"103df884b1cb8f2498de1e7f681c4455df56f719c206dd250f83dc74508c1a6a":"ac7bf83953d8fd938e12926ce1e2e788":"b5b338fd3dc8e565fb612cd5aef6af4a804d8ca0090de9b20f":"33d4c71a8c59394c8262a9209bec31484cfec27f449e223b3b":200:0 +aes_decrypt_xts:"103df884b1cb8f2498de1e7f681c4455df56f719c206dd250f83dc74508c1a6a":"ac7bf83953d8fd938e12926ce1e2e788":"33d4c71a8c59394c8262a9209bec31484cfec27f449e223b3b":"b5b338fd3dc8e565fb612cd5aef6af4a804d8ca0090de9b20f" AES-128-XTS Decrypt NIST XTSTestVectors #229 -aes_decrypt_xts:"26247d33f2b7e9e06a2ee4833e814d992573a8343f4762e1454b0bbbd1525ae4":"cff4f84225d0bbaa7503a4d6617e7566":"a3cf158e19010a9b8dd8605d5cff1be2c502a1c0ad325543b0":"95ededf9fa5ca3948a849e5e3eea11642faefda4db415fab5b":200:0 +aes_decrypt_xts:"26247d33f2b7e9e06a2ee4833e814d992573a8343f4762e1454b0bbbd1525ae4":"cff4f84225d0bbaa7503a4d6617e7566":"95ededf9fa5ca3948a849e5e3eea11642faefda4db415fab5b":"a3cf158e19010a9b8dd8605d5cff1be2c502a1c0ad325543b0" AES-128-XTS Decrypt NIST XTSTestVectors #230 -aes_decrypt_xts:"75799cb6759a2eddfe9963973491102ee9653bf0320c1b3224fd4e7a308088e3":"3000f2ef64206577555a1fe486f6b609":"b143b059ff945cc28b3c1c3203ed7e7e7ebe33ad1345258963":"358e7be75e5a18a8234e536e374024c473680186d3a85f5d20":200:0 +aes_decrypt_xts:"75799cb6759a2eddfe9963973491102ee9653bf0320c1b3224fd4e7a308088e3":"3000f2ef64206577555a1fe486f6b609":"358e7be75e5a18a8234e536e374024c473680186d3a85f5d20":"b143b059ff945cc28b3c1c3203ed7e7e7ebe33ad1345258963" AES-128-XTS Decrypt NIST XTSTestVectors #231 -aes_decrypt_xts:"b5ccecb554fba1092bcc546e0335a75b07bdb234c552e4172e73331588d6a314":"356a7bb2a2bd57128b2b7938bcb020cd":"8a0b4f8d6217434bfbe5cfd80c08e7066fe0c47baf6c2a3a7c":"82a05058464d90ecc67b5ad314e5795ab0a45627416632873f":200:0 +aes_decrypt_xts:"b5ccecb554fba1092bcc546e0335a75b07bdb234c552e4172e73331588d6a314":"356a7bb2a2bd57128b2b7938bcb020cd":"82a05058464d90ecc67b5ad314e5795ab0a45627416632873f":"8a0b4f8d6217434bfbe5cfd80c08e7066fe0c47baf6c2a3a7c" AES-128-XTS Decrypt NIST XTSTestVectors #232 -aes_decrypt_xts:"9f94a398e032c2608167ad538b7faf92d01fba0cbce9b1385736e31372389e10":"cc40c7b1c09edf0217e01e09c107ea7c":"b311ba6e522f18ca1d13f1fd426918ee83efcfa87390efc40e":"d812b764449ac957f88b3cc6349c0a74338a529dd79d6bcaab":200:0 +aes_decrypt_xts:"9f94a398e032c2608167ad538b7faf92d01fba0cbce9b1385736e31372389e10":"cc40c7b1c09edf0217e01e09c107ea7c":"d812b764449ac957f88b3cc6349c0a74338a529dd79d6bcaab":"b311ba6e522f18ca1d13f1fd426918ee83efcfa87390efc40e" AES-128-XTS Decrypt NIST XTSTestVectors #233 -aes_decrypt_xts:"5d3fb468b26ea02e5ff772b9df6c6c98a7e28c5e67a9b16b8a44d2c68e436f8a":"83e6ca85fe7ec093794f902d45e0f210":"ed47719847d73e0e12707a277ec47a9cc8096791a8238daebd":"4db38763d93f334547cc760dfb6b187abe5b5a0246c58eb066":200:0 +aes_decrypt_xts:"5d3fb468b26ea02e5ff772b9df6c6c98a7e28c5e67a9b16b8a44d2c68e436f8a":"83e6ca85fe7ec093794f902d45e0f210":"4db38763d93f334547cc760dfb6b187abe5b5a0246c58eb066":"ed47719847d73e0e12707a277ec47a9cc8096791a8238daebd" AES-128-XTS Decrypt NIST XTSTestVectors #234 -aes_decrypt_xts:"9bde31a8f1a4a3b546bb70c8d49911f9a32b7591b551e5c9b8506c33b2152b68":"280dcfd9091f013fa54f6825229235b4":"23e79873e3269f9dc42b6d9b7120cfb1c9e45ae80ebe166cad":"d3fef015613f51d2e358837f4e0e23a105baa874c64db2531d":200:0 +aes_decrypt_xts:"9bde31a8f1a4a3b546bb70c8d49911f9a32b7591b551e5c9b8506c33b2152b68":"280dcfd9091f013fa54f6825229235b4":"d3fef015613f51d2e358837f4e0e23a105baa874c64db2531d":"23e79873e3269f9dc42b6d9b7120cfb1c9e45ae80ebe166cad" AES-128-XTS Decrypt NIST XTSTestVectors #235 -aes_decrypt_xts:"1e10506557a0a1c5397d1416eb4d994c907161701fce00157aede9d5ab38158d":"2ddd0ef00f8d0c451555ca4a6fe4ad2c":"efe24078d36a8cf155dd95bdd5321c6acb26ff607b3b19bca5":"412639e306c30613476f951ec61a20321a0083886fc3c0e3a7":200:0 +aes_decrypt_xts:"1e10506557a0a1c5397d1416eb4d994c907161701fce00157aede9d5ab38158d":"2ddd0ef00f8d0c451555ca4a6fe4ad2c":"412639e306c30613476f951ec61a20321a0083886fc3c0e3a7":"efe24078d36a8cf155dd95bdd5321c6acb26ff607b3b19bca5" AES-128-XTS Decrypt NIST XTSTestVectors #236 -aes_decrypt_xts:"5d773f413dc514f4e64441970a66ac36ddc352924236c948384dd5116ea73b0f":"25b3ae8779b8399097a3ead7c4a4b7c1":"245d2528b7e1608a186f6e8d6218ee0b7a73ed9796582419d7":"9d247eef8e3e00fccf519a7e0b61008fd73d2a5a1767721096":200:0 +aes_decrypt_xts:"5d773f413dc514f4e64441970a66ac36ddc352924236c948384dd5116ea73b0f":"25b3ae8779b8399097a3ead7c4a4b7c1":"9d247eef8e3e00fccf519a7e0b61008fd73d2a5a1767721096":"245d2528b7e1608a186f6e8d6218ee0b7a73ed9796582419d7" AES-128-XTS Decrypt NIST XTSTestVectors #237 -aes_decrypt_xts:"49e4639310b6a2dd5ee90b69ed4dcfd768d514254eeb7ed559c864d567a6d1a9":"4b19df03740b52d37c98fedf26cf0bff":"3eb38e02e70372b2a41f27c68e4edd7b8ea196a1a38b285fa3":"aa7a0fb2193c6c57b82d3f37562f3ff8c9d8ec0e5fe7ead0d6":200:0 +aes_decrypt_xts:"49e4639310b6a2dd5ee90b69ed4dcfd768d514254eeb7ed559c864d567a6d1a9":"4b19df03740b52d37c98fedf26cf0bff":"aa7a0fb2193c6c57b82d3f37562f3ff8c9d8ec0e5fe7ead0d6":"3eb38e02e70372b2a41f27c68e4edd7b8ea196a1a38b285fa3" AES-128-XTS Decrypt NIST XTSTestVectors #238 -aes_decrypt_xts:"e7b827bcd50c71b1986a526745847281a4a7a69a8d019016412fe2ba74bcd3b7":"c0f66bf0bd3f3d3f630e15cc5ef4bcce":"1bdde74caabc38b37383b072d2aeb40cb21fb29401f110ac0c":"22901ef0f865e92d2bea19238cf5d76a802b7af47642ebd742":200:0 +aes_decrypt_xts:"e7b827bcd50c71b1986a526745847281a4a7a69a8d019016412fe2ba74bcd3b7":"c0f66bf0bd3f3d3f630e15cc5ef4bcce":"22901ef0f865e92d2bea19238cf5d76a802b7af47642ebd742":"1bdde74caabc38b37383b072d2aeb40cb21fb29401f110ac0c" AES-128-XTS Decrypt NIST XTSTestVectors #239 -aes_decrypt_xts:"ab1193e2737f282d6a0d29932600c4e408c8f194906978fe2f9f56b2cb98ea83":"fd7d921baec362239eb3cfa19164d071":"ec08afe7a0b64503e03a757ba0baa8cd285cc3fe74a69f65a5":"881e90b4c70ddbda40b7e4c465482e9854e194ba964d1f80a2":200:0 +aes_decrypt_xts:"ab1193e2737f282d6a0d29932600c4e408c8f194906978fe2f9f56b2cb98ea83":"fd7d921baec362239eb3cfa19164d071":"881e90b4c70ddbda40b7e4c465482e9854e194ba964d1f80a2":"ec08afe7a0b64503e03a757ba0baa8cd285cc3fe74a69f65a5" AES-128-XTS Decrypt NIST XTSTestVectors #240 -aes_decrypt_xts:"82be68298bdea7562547e68b9fbafd4306f57d3df9cd91a9325b54097d2d7f5b":"9b6eb0c00cd6b13264c069d742d29583":"ead29b33519fa010e1b457d3a51b71452fb486b1ee3799653c":"25b2ed3546e7f174a29bf843377e9139ae428a24d4c9e62852":200:0 +aes_decrypt_xts:"82be68298bdea7562547e68b9fbafd4306f57d3df9cd91a9325b54097d2d7f5b":"9b6eb0c00cd6b13264c069d742d29583":"25b2ed3546e7f174a29bf843377e9139ae428a24d4c9e62852":"ead29b33519fa010e1b457d3a51b71452fb486b1ee3799653c" AES-128-XTS Decrypt NIST XTSTestVectors #241 -aes_decrypt_xts:"b7ce957c67acc523f963d07532a9f829ef153b03462602aa9d57367c96d61941":"cb5ce7c066b894581f1136a1a00f50f8":"321d47479537f2381f5d33ece66cd17368bcabc2ea90f3bd2c":"67a37d74ef2ede7cee56fd5ea3ad418d08cf9a1dbbf11af9c3":200:0 +aes_decrypt_xts:"b7ce957c67acc523f963d07532a9f829ef153b03462602aa9d57367c96d61941":"cb5ce7c066b894581f1136a1a00f50f8":"67a37d74ef2ede7cee56fd5ea3ad418d08cf9a1dbbf11af9c3":"321d47479537f2381f5d33ece66cd17368bcabc2ea90f3bd2c" AES-128-XTS Decrypt NIST XTSTestVectors #242 -aes_decrypt_xts:"444bd7e11ef01e890b32764311d64506c360fdf410ef8a77f26716b1d1be43e4":"41da2c52d2be94ff3592ae054e2dac3c":"34a02ae19dd39e76da256d3270aaa25725c746113bb2e5d9c4":"c4480c6e7cb194e086b98fa2ae41f662c8b6bdada29e3d394c":200:0 +aes_decrypt_xts:"444bd7e11ef01e890b32764311d64506c360fdf410ef8a77f26716b1d1be43e4":"41da2c52d2be94ff3592ae054e2dac3c":"c4480c6e7cb194e086b98fa2ae41f662c8b6bdada29e3d394c":"34a02ae19dd39e76da256d3270aaa25725c746113bb2e5d9c4" AES-128-XTS Decrypt NIST XTSTestVectors #243 -aes_decrypt_xts:"5eafe05362eddd05effcb2447896e7440f38c655276b6c7fbae003a387d10c96":"219df9c3fecea911484e9b15258d76ac":"0a6aafd33750144f388bc77ccdfa40c947117c3a7e1fed53bf":"95a65a9e57c81ad3a381b0994cb719714ad6838255534d3d1b":200:0 +aes_decrypt_xts:"5eafe05362eddd05effcb2447896e7440f38c655276b6c7fbae003a387d10c96":"219df9c3fecea911484e9b15258d76ac":"95a65a9e57c81ad3a381b0994cb719714ad6838255534d3d1b":"0a6aafd33750144f388bc77ccdfa40c947117c3a7e1fed53bf" AES-128-XTS Decrypt NIST XTSTestVectors #244 -aes_decrypt_xts:"89dae92621ba5a259c6be4c82d0eeeb11851ce00eb37dadf770f68f44a310a9c":"cce0ab6778b19dfb7f3de45d97caab65":"ced72e956ba69ffa144bf81a2a99462f3d474f62cc46a9f1dd":"29c3508fba48285f2c02eaabf75e790268a6d59e52fc2dccab":200:0 +aes_decrypt_xts:"89dae92621ba5a259c6be4c82d0eeeb11851ce00eb37dadf770f68f44a310a9c":"cce0ab6778b19dfb7f3de45d97caab65":"29c3508fba48285f2c02eaabf75e790268a6d59e52fc2dccab":"ced72e956ba69ffa144bf81a2a99462f3d474f62cc46a9f1dd" AES-128-XTS Decrypt NIST XTSTestVectors #245 -aes_decrypt_xts:"1fb04dac75df2a616f497fdd35ce5929e612f05147dca4183e4786ffd2ae9b29":"d4fd5c7580b1068ab0dfd90f79733ff2":"659915e34274ff7f72c9fe55c3fa4ea55cb9a021ffcc9f1367":"a32d4b9355afa690525211185e19586860eab67d34308ec4a6":200:0 +aes_decrypt_xts:"1fb04dac75df2a616f497fdd35ce5929e612f05147dca4183e4786ffd2ae9b29":"d4fd5c7580b1068ab0dfd90f79733ff2":"a32d4b9355afa690525211185e19586860eab67d34308ec4a6":"659915e34274ff7f72c9fe55c3fa4ea55cb9a021ffcc9f1367" AES-128-XTS Decrypt NIST XTSTestVectors #246 -aes_decrypt_xts:"2ffe2866d6fa82a75d2fcf257257708336775684aace6625ace0ed4a8fd89e67":"b5429585dfcd80f8e14b48c86f11d1d9":"a3a06380056b3f155892fb0103aac666ea19205fa3fae94f78":"59631652ddbc62395784bf18cbc967cef66ea5180f3f6df5aa":200:0 +aes_decrypt_xts:"2ffe2866d6fa82a75d2fcf257257708336775684aace6625ace0ed4a8fd89e67":"b5429585dfcd80f8e14b48c86f11d1d9":"59631652ddbc62395784bf18cbc967cef66ea5180f3f6df5aa":"a3a06380056b3f155892fb0103aac666ea19205fa3fae94f78" AES-128-XTS Decrypt NIST XTSTestVectors #247 -aes_decrypt_xts:"7741d5c21c34af083001dbde3922e787b3d6ed2242b876fdae6266b7d7a97c9b":"3cc1d268fe621c5d4052919bf6f307db":"40d9f9dc7ac22624c0a450d276898f622ebd0586ec2c48372b":"d42ad036521b1d84200faf86d9788679e89377280b7833e434":200:0 +aes_decrypt_xts:"7741d5c21c34af083001dbde3922e787b3d6ed2242b876fdae6266b7d7a97c9b":"3cc1d268fe621c5d4052919bf6f307db":"d42ad036521b1d84200faf86d9788679e89377280b7833e434":"40d9f9dc7ac22624c0a450d276898f622ebd0586ec2c48372b" AES-128-XTS Decrypt NIST XTSTestVectors #248 -aes_decrypt_xts:"a48e8b318856240f5f703a0d92a19f8b26b060d13dbd80ddda54baec71e96eab":"108b6e490624f99e92f8652fac056906":"9be5b49d8e8b87401690d2404797f0584de888d02b1f90d61d":"66317322cef8425d535eb6b29510ac9762ed077c6624c500e9":200:0 +aes_decrypt_xts:"a48e8b318856240f5f703a0d92a19f8b26b060d13dbd80ddda54baec71e96eab":"108b6e490624f99e92f8652fac056906":"66317322cef8425d535eb6b29510ac9762ed077c6624c500e9":"9be5b49d8e8b87401690d2404797f0584de888d02b1f90d61d" AES-128-XTS Decrypt NIST XTSTestVectors #249 -aes_decrypt_xts:"aa13ecf099e54e89a3ac486132a41f575e4222877262aac4f1efd10055c85ef2":"127591c10b0f2a88f726132ba10f80c9":"cb833d27f1bce1a6554b15dfa0ae87402f5d9d2e0c5218c1cd":"861052fee0e744f346f113af0e81100360088faf1834bc6cc5":200:0 +aes_decrypt_xts:"aa13ecf099e54e89a3ac486132a41f575e4222877262aac4f1efd10055c85ef2":"127591c10b0f2a88f726132ba10f80c9":"861052fee0e744f346f113af0e81100360088faf1834bc6cc5":"cb833d27f1bce1a6554b15dfa0ae87402f5d9d2e0c5218c1cd" AES-128-XTS Decrypt NIST XTSTestVectors #250 -aes_decrypt_xts:"e3cb682b03708d53e29203f722804789a6bb01bd0975a9679f0c7f7d8684da3c":"ecc2edf7ec7b0ff5293cf636852220f2":"954684c0b47de98bd2bdaead680a36815794d7ac6d1ede17c7":"480bfe398c1a627129d11a51c9de9b4e0abda94020dbc5d149":200:0 +aes_decrypt_xts:"e3cb682b03708d53e29203f722804789a6bb01bd0975a9679f0c7f7d8684da3c":"ecc2edf7ec7b0ff5293cf636852220f2":"480bfe398c1a627129d11a51c9de9b4e0abda94020dbc5d149":"954684c0b47de98bd2bdaead680a36815794d7ac6d1ede17c7" AES-128-XTS Decrypt NIST XTSTestVectors #251 -aes_decrypt_xts:"1ae56806ca986fee1087ceca88fc49528abe3b14db9ac108555555c7878ee7db":"77acddd84b31aed0f90817751d023730":"6f8cb38086322161f64a2ca494738bbc0c89c8b70c4f5325c1":"30a7e3382b7778bb6fd2eec2b61e2970dcc34fe8e9b7b8bf4e":200:0 +aes_decrypt_xts:"1ae56806ca986fee1087ceca88fc49528abe3b14db9ac108555555c7878ee7db":"77acddd84b31aed0f90817751d023730":"30a7e3382b7778bb6fd2eec2b61e2970dcc34fe8e9b7b8bf4e":"6f8cb38086322161f64a2ca494738bbc0c89c8b70c4f5325c1" AES-128-XTS Decrypt NIST XTSTestVectors #252 -aes_decrypt_xts:"6b0e4079b7e587d78e9b0c1601ca5403ef6fff525e923813103320682e7f2751":"44b0a00519a4712aaabdf66dc133a51c":"57b9224a61e6904e5b4eb0f98183e60ec4668bd5e5356b73a1":"3d90eeed5a13680653b21e6d8e766624621e0027f8c60cd105":200:0 +aes_decrypt_xts:"6b0e4079b7e587d78e9b0c1601ca5403ef6fff525e923813103320682e7f2751":"44b0a00519a4712aaabdf66dc133a51c":"3d90eeed5a13680653b21e6d8e766624621e0027f8c60cd105":"57b9224a61e6904e5b4eb0f98183e60ec4668bd5e5356b73a1" AES-128-XTS Decrypt NIST XTSTestVectors #253 -aes_decrypt_xts:"6778bb3a3def8c9fcfd019ce2f840203941461f3d118911eec77c7986b441ca1":"8b097e2f871a2890785d3b6d74037516":"ead6b89e0d2d9fbbf664924b82e872f2286d5f349b83c3399f":"e171b49371f01355b86ca8f7e45a9bf535713b05ea0e1454e5":200:0 +aes_decrypt_xts:"6778bb3a3def8c9fcfd019ce2f840203941461f3d118911eec77c7986b441ca1":"8b097e2f871a2890785d3b6d74037516":"e171b49371f01355b86ca8f7e45a9bf535713b05ea0e1454e5":"ead6b89e0d2d9fbbf664924b82e872f2286d5f349b83c3399f" AES-128-XTS Decrypt NIST XTSTestVectors #254 -aes_decrypt_xts:"db15ebb2c468376af9ac8cacacb7d2316920b14be74662dceaaafce0450aedca":"147a139b50eed66d774edcdfde8b1718":"c95dbdf3ba97d3c2a595c5d6eb5fcca10215c6b78dde68dae9":"54b3bfb4076e61aa952354f3c2e15babc3817fc864c2bad329":200:0 +aes_decrypt_xts:"db15ebb2c468376af9ac8cacacb7d2316920b14be74662dceaaafce0450aedca":"147a139b50eed66d774edcdfde8b1718":"54b3bfb4076e61aa952354f3c2e15babc3817fc864c2bad329":"c95dbdf3ba97d3c2a595c5d6eb5fcca10215c6b78dde68dae9" AES-128-XTS Decrypt NIST XTSTestVectors #255 -aes_decrypt_xts:"a0d2480a7dd0c002bbfae670617a2773031de1281fffcf8e4410e4f1c6ce8738":"12161ac707eb8bd62909129983121a54":"0f88af952d2e5075baeb06d115131b190dcec38b9875f46b32":"6e172aa1523c951be8e760f50784e72b14e0b35168a3c541a3":200:0 +aes_decrypt_xts:"a0d2480a7dd0c002bbfae670617a2773031de1281fffcf8e4410e4f1c6ce8738":"12161ac707eb8bd62909129983121a54":"6e172aa1523c951be8e760f50784e72b14e0b35168a3c541a3":"0f88af952d2e5075baeb06d115131b190dcec38b9875f46b32" AES-128-XTS Decrypt NIST XTSTestVectors #256 -aes_decrypt_xts:"4d395dea25b72b034bd5c2ba67425c84c1370c587275b948558d05a0c77d2e7c":"69b12f9fcf716119e4a4272e3b1742e8":"e258fc0279687f49e473caa139c88e4dd136ce4cc13781a4ee":"b136f6203b48cf1def8261fc40ab6eb827c33b7e53ccc4de95":200:0 +aes_decrypt_xts:"4d395dea25b72b034bd5c2ba67425c84c1370c587275b948558d05a0c77d2e7c":"69b12f9fcf716119e4a4272e3b1742e8":"b136f6203b48cf1def8261fc40ab6eb827c33b7e53ccc4de95":"e258fc0279687f49e473caa139c88e4dd136ce4cc13781a4ee" AES-128-XTS Decrypt NIST XTSTestVectors #257 -aes_decrypt_xts:"dc706043cc2320d22035793344ae01dd4d9367506a5d07b6f6627de613a0d224":"5350a5c69e4ff96afd98ea1462d25ed9":"56fe0a998675cc6e91b09e07c94d567819657d9c7b01b40d16":"e14371fea26ac467e14c1384b7e050a3b51d63bf9dd0d57741":200:0 +aes_decrypt_xts:"dc706043cc2320d22035793344ae01dd4d9367506a5d07b6f6627de613a0d224":"5350a5c69e4ff96afd98ea1462d25ed9":"e14371fea26ac467e14c1384b7e050a3b51d63bf9dd0d57741":"56fe0a998675cc6e91b09e07c94d567819657d9c7b01b40d16" AES-128-XTS Decrypt NIST XTSTestVectors #258 -aes_decrypt_xts:"233fa776f0ab4f0bc9277c72770174d1be3ca386215823f344cc519b38468585":"dd376910b79b3e9c30b62fbf5d5ced26":"bebabb626e38700651f1f652db7f3553b0b76cd45aa8dbec28":"ad2aaaa83e52613034e071c22ed9a1acf571fc5639d96b9477":200:0 +aes_decrypt_xts:"233fa776f0ab4f0bc9277c72770174d1be3ca386215823f344cc519b38468585":"dd376910b79b3e9c30b62fbf5d5ced26":"ad2aaaa83e52613034e071c22ed9a1acf571fc5639d96b9477":"bebabb626e38700651f1f652db7f3553b0b76cd45aa8dbec28" AES-128-XTS Decrypt NIST XTSTestVectors #259 -aes_decrypt_xts:"b2587464db492eec3c33034a754fc9cbd0b8ffd4cd49d1be5024940cdbd35c40":"522e83e7aba57ee47c43cc0405d6c1ff":"03c3c304f09dcc397215ae2e0bf1900e6bb088a8d157e37478":"15a9e688a01f8a201dc7b80847ebb598a8d4d39ba0de21dfc6":200:0 +aes_decrypt_xts:"b2587464db492eec3c33034a754fc9cbd0b8ffd4cd49d1be5024940cdbd35c40":"522e83e7aba57ee47c43cc0405d6c1ff":"15a9e688a01f8a201dc7b80847ebb598a8d4d39ba0de21dfc6":"03c3c304f09dcc397215ae2e0bf1900e6bb088a8d157e37478" AES-128-XTS Decrypt NIST XTSTestVectors #260 -aes_decrypt_xts:"55c2a6e71623e32446a2af66d13eb174359fee87dfa79f0cfd0cea89dd4b582d":"b04bdb4aabf42b0bad6aedb816528526":"ec975db73e5c47904e8c37186f69171e2ff87b176c95633d7e":"a87f0fefde2efa2720f0dfff0cf106bfe35295dc29cef8634b":200:0 +aes_decrypt_xts:"55c2a6e71623e32446a2af66d13eb174359fee87dfa79f0cfd0cea89dd4b582d":"b04bdb4aabf42b0bad6aedb816528526":"a87f0fefde2efa2720f0dfff0cf106bfe35295dc29cef8634b":"ec975db73e5c47904e8c37186f69171e2ff87b176c95633d7e" AES-128-XTS Decrypt NIST XTSTestVectors #261 -aes_decrypt_xts:"6256ede67e32e223845f10b8e1a0570a9febe1016a0c5b265b3a0308207dccad":"9313fcad3d377118633cb6e4ff9c7cab":"f0ecbc774e769d3a35021a3b8b6f6231a7c21390fa953dc820":"65c5d0b8a6b2af5716bffdd8f6aea7b39e5ee202324721993e":200:0 +aes_decrypt_xts:"6256ede67e32e223845f10b8e1a0570a9febe1016a0c5b265b3a0308207dccad":"9313fcad3d377118633cb6e4ff9c7cab":"65c5d0b8a6b2af5716bffdd8f6aea7b39e5ee202324721993e":"f0ecbc774e769d3a35021a3b8b6f6231a7c21390fa953dc820" AES-128-XTS Decrypt NIST XTSTestVectors #262 -aes_decrypt_xts:"520430ff9e70665db955216d562e788dc8b6cf6ad64d174265ea0d0fc7c4d888":"0868407108c10869f043bb01ccf537e7":"740735a817316c7f0211d31dc2e0668a4fa4e5cad10d5ab0fc":"d35916fde4f2e086cc310a17a554a60c9fc5a2272078e06742":200:0 +aes_decrypt_xts:"520430ff9e70665db955216d562e788dc8b6cf6ad64d174265ea0d0fc7c4d888":"0868407108c10869f043bb01ccf537e7":"d35916fde4f2e086cc310a17a554a60c9fc5a2272078e06742":"740735a817316c7f0211d31dc2e0668a4fa4e5cad10d5ab0fc" AES-128-XTS Decrypt NIST XTSTestVectors #263 -aes_decrypt_xts:"49404d86c6df865398eb5eeff3c55e353e7c6146bbc3f75e63e9dd96d5fdb340":"22f63a00729dd9c6436bc51b25283b1d":"67d983a4d699bd582ce060b98062d86bc0f86672175579048f":"995d9c983dd77bd682830f03c043e7c4a106b8973e02e8b2a9":200:0 +aes_decrypt_xts:"49404d86c6df865398eb5eeff3c55e353e7c6146bbc3f75e63e9dd96d5fdb340":"22f63a00729dd9c6436bc51b25283b1d":"995d9c983dd77bd682830f03c043e7c4a106b8973e02e8b2a9":"67d983a4d699bd582ce060b98062d86bc0f86672175579048f" AES-128-XTS Decrypt NIST XTSTestVectors #264 -aes_decrypt_xts:"4a39d37e5cead002209e1ecb7fac5dfe20b0d5dac45052ac8f22f87e46bfe2a4":"e9aa238cb922337e4e5d168f8a797e77":"144453348fd894d8d919832fb18e6ec5cfd67afffd249cc212":"e35cb6771a7983bd990dec0dcb28ef5d5bff22253bf741ac87":200:0 +aes_decrypt_xts:"4a39d37e5cead002209e1ecb7fac5dfe20b0d5dac45052ac8f22f87e46bfe2a4":"e9aa238cb922337e4e5d168f8a797e77":"e35cb6771a7983bd990dec0dcb28ef5d5bff22253bf741ac87":"144453348fd894d8d919832fb18e6ec5cfd67afffd249cc212" AES-128-XTS Decrypt NIST XTSTestVectors #265 -aes_decrypt_xts:"31d7de504f3bc4417a4db932231b350954a8e1ec85a799ac1b169a0edbee24c8":"e31c3dee11b9d526eba865742e825b65":"21d5ab2f2b33242f25dd4fba01677fa1fdc080773bcc17a544":"b23968074f639ff65ce55f9f0fbeb57a1095468a9864f1d616":200:0 +aes_decrypt_xts:"31d7de504f3bc4417a4db932231b350954a8e1ec85a799ac1b169a0edbee24c8":"e31c3dee11b9d526eba865742e825b65":"b23968074f639ff65ce55f9f0fbeb57a1095468a9864f1d616":"21d5ab2f2b33242f25dd4fba01677fa1fdc080773bcc17a544" AES-128-XTS Decrypt NIST XTSTestVectors #266 -aes_decrypt_xts:"a783fc87e55a7fca96c2ce5aa277361565582703dfd18dc15afa98bb0b606ac6":"d255a5d7e6c95906061de654d19edc79":"04ef8bf556a2c0803e2e35e3e8db034f3accf3e3412bbfdfa6":"21e9a241c58140e0369b3677045aa4f225ca735ef9ac5e87d1":200:0 +aes_decrypt_xts:"a783fc87e55a7fca96c2ce5aa277361565582703dfd18dc15afa98bb0b606ac6":"d255a5d7e6c95906061de654d19edc79":"21e9a241c58140e0369b3677045aa4f225ca735ef9ac5e87d1":"04ef8bf556a2c0803e2e35e3e8db034f3accf3e3412bbfdfa6" AES-128-XTS Decrypt NIST XTSTestVectors #267 -aes_decrypt_xts:"4601aa2ba0fa7e99c93e0c9dbd448fd1d99ce5098a6d1d8c9c214db6206ed052":"555b0a0758be0b3ea2d67a86e284ee04":"df0a8a6f98dd44b2534910797feb9745e1d1ae7bc7e6cb1e72":"4c5c75f0fedc86b766eb4df59465431eb3e716007bba8dc9ec":200:0 +aes_decrypt_xts:"4601aa2ba0fa7e99c93e0c9dbd448fd1d99ce5098a6d1d8c9c214db6206ed052":"555b0a0758be0b3ea2d67a86e284ee04":"4c5c75f0fedc86b766eb4df59465431eb3e716007bba8dc9ec":"df0a8a6f98dd44b2534910797feb9745e1d1ae7bc7e6cb1e72" AES-128-XTS Decrypt NIST XTSTestVectors #268 -aes_decrypt_xts:"b23806ed16e3b3a35b3030c92fb68f2754c432cd87fb1fc2b8a09fd52b890214":"64f6dbdec3f96426af252ce1ba819fd0":"d16639eb844330a0a6ed573eb7d61f00db66b1e146117384ea":"9b7d57f9d45854a011516d93dc56ff73da2cb374562a671bef":200:0 +aes_decrypt_xts:"b23806ed16e3b3a35b3030c92fb68f2754c432cd87fb1fc2b8a09fd52b890214":"64f6dbdec3f96426af252ce1ba819fd0":"9b7d57f9d45854a011516d93dc56ff73da2cb374562a671bef":"d16639eb844330a0a6ed573eb7d61f00db66b1e146117384ea" AES-128-XTS Decrypt NIST XTSTestVectors #269 -aes_decrypt_xts:"f43351de2b9bf93f5735b199f56b7e10eb6b7a8240f96aeb4b2134648632e28a":"65a0343583b5809cccc58876f2120016":"2a67608547b9d9d903b2d7cb2b6c654858e81aab2b1d9a72aa":"72291aea230d2b52b927d6aae5957c08a38f21b26a379908ec":200:0 +aes_decrypt_xts:"f43351de2b9bf93f5735b199f56b7e10eb6b7a8240f96aeb4b2134648632e28a":"65a0343583b5809cccc58876f2120016":"72291aea230d2b52b927d6aae5957c08a38f21b26a379908ec":"2a67608547b9d9d903b2d7cb2b6c654858e81aab2b1d9a72aa" AES-128-XTS Decrypt NIST XTSTestVectors #270 -aes_decrypt_xts:"c2951a92b7be8cdaeebe9ba271bff0cccd1d5b13eca45b62cd69728adf2723f4":"ce0e30edca647a60e67bec3e236c09af":"135402857776b81a0d1eff891d583b92276a9abe7c51fa3f0a":"c110191e9e932dcb81fa86f94ff503881044dd1e129edf16e5":200:0 +aes_decrypt_xts:"c2951a92b7be8cdaeebe9ba271bff0cccd1d5b13eca45b62cd69728adf2723f4":"ce0e30edca647a60e67bec3e236c09af":"c110191e9e932dcb81fa86f94ff503881044dd1e129edf16e5":"135402857776b81a0d1eff891d583b92276a9abe7c51fa3f0a" AES-128-XTS Decrypt NIST XTSTestVectors #271 -aes_decrypt_xts:"7b92a21b3357bbcfa42b333388a46478cd38eff643eb5b8186db23728299e15f":"86c7440922e7620eb5ab5ce525df9b08":"d63cbd6896ae1a9dee4c93a2831beb71beec5b37b083b80e56":"b21074d11257eadfd828291ad57e1f294ff70794d333821726":200:0 +aes_decrypt_xts:"7b92a21b3357bbcfa42b333388a46478cd38eff643eb5b8186db23728299e15f":"86c7440922e7620eb5ab5ce525df9b08":"b21074d11257eadfd828291ad57e1f294ff70794d333821726":"d63cbd6896ae1a9dee4c93a2831beb71beec5b37b083b80e56" AES-128-XTS Decrypt NIST XTSTestVectors #272 -aes_decrypt_xts:"6a95d53261ca6210d4f2973d204f1862a478b919b4520e30d45f3aeab0e6e92b":"2a557c02143c00ebc92732516c5452f7":"9193a921ae6e830d9ce721e91d20ed236e7809fa09640cb0fb":"a7c8d66721a4c76d1ca9f5205d5327b52067cb6f512095b863":200:0 +aes_decrypt_xts:"6a95d53261ca6210d4f2973d204f1862a478b919b4520e30d45f3aeab0e6e92b":"2a557c02143c00ebc92732516c5452f7":"a7c8d66721a4c76d1ca9f5205d5327b52067cb6f512095b863":"9193a921ae6e830d9ce721e91d20ed236e7809fa09640cb0fb" AES-128-XTS Decrypt NIST XTSTestVectors #273 -aes_decrypt_xts:"9e8aae708afd148931883fbbb20360b5d44ac7a3083baa3afb53a4ac0f2f4769":"d9bc4fc7fd21773be0352aaf99e2d382":"6fab9591cd07472b81f2d906068da07189c977db6e09231c0c":"850de3082a0c7de1eeda9234b6eb6d76747de1267a2ee3e5fe":200:0 +aes_decrypt_xts:"9e8aae708afd148931883fbbb20360b5d44ac7a3083baa3afb53a4ac0f2f4769":"d9bc4fc7fd21773be0352aaf99e2d382":"850de3082a0c7de1eeda9234b6eb6d76747de1267a2ee3e5fe":"6fab9591cd07472b81f2d906068da07189c977db6e09231c0c" AES-128-XTS Decrypt NIST XTSTestVectors #274 -aes_decrypt_xts:"43841bd949bb30eb9d52d13e5c34820390c669180a5fd4b30769acc646744e2b":"fdae2ff6408e095ef4f3cfafb84fa993":"b52b1448bcf6d013cc28c491e4d37807ff8e8825e1f5ffdec6":"8a9526bfd34578408bb7e89845c6e5a79c348cd1c6a95dab09":200:0 +aes_decrypt_xts:"43841bd949bb30eb9d52d13e5c34820390c669180a5fd4b30769acc646744e2b":"fdae2ff6408e095ef4f3cfafb84fa993":"8a9526bfd34578408bb7e89845c6e5a79c348cd1c6a95dab09":"b52b1448bcf6d013cc28c491e4d37807ff8e8825e1f5ffdec6" AES-128-XTS Decrypt NIST XTSTestVectors #275 -aes_decrypt_xts:"77fa5f7b82ec32be0b3db9ecee9e674483ed370a43616f81ae199ccb2fd24c25":"9dbb74ad0a775f940ea3eee5190a26ab":"9497153d737abaf2aa1ce7bbf591ff5a764cdf95e6be9f2838":"7b3c942a7b29c0f3a3125f1473ac209ff5731265824ff2df31":200:0 +aes_decrypt_xts:"77fa5f7b82ec32be0b3db9ecee9e674483ed370a43616f81ae199ccb2fd24c25":"9dbb74ad0a775f940ea3eee5190a26ab":"7b3c942a7b29c0f3a3125f1473ac209ff5731265824ff2df31":"9497153d737abaf2aa1ce7bbf591ff5a764cdf95e6be9f2838" AES-128-XTS Decrypt NIST XTSTestVectors #276 -aes_decrypt_xts:"9d382f84fb275ff898311284adcdc79f2ae363d1c392fbaf9f8f286e7dd8f146":"aff121d2d85c120be9718d3034cee823":"6bb74faf0b17833a3a1a95f673675e230c518dfa26fd98a52a":"98d6dadbadb67b5b1df72794dbccecb3c1bc1de3efdb2983c3":200:0 +aes_decrypt_xts:"9d382f84fb275ff898311284adcdc79f2ae363d1c392fbaf9f8f286e7dd8f146":"aff121d2d85c120be9718d3034cee823":"98d6dadbadb67b5b1df72794dbccecb3c1bc1de3efdb2983c3":"6bb74faf0b17833a3a1a95f673675e230c518dfa26fd98a52a" AES-128-XTS Decrypt NIST XTSTestVectors #277 -aes_decrypt_xts:"c7e12b520adfcd8965d4f091af25217b31fbbbcce731537215b70ba56e983d50":"b9036536b9f8bcf4f8dff5ed19406f8b":"84bb8d1772e93f00e80df5b20e5d1a5602ab9b001badec7b4a":"8a5224ebb27292c6996350b32c3b1f2ff1884c179d3b5b4abf":200:0 +aes_decrypt_xts:"c7e12b520adfcd8965d4f091af25217b31fbbbcce731537215b70ba56e983d50":"b9036536b9f8bcf4f8dff5ed19406f8b":"8a5224ebb27292c6996350b32c3b1f2ff1884c179d3b5b4abf":"84bb8d1772e93f00e80df5b20e5d1a5602ab9b001badec7b4a" AES-128-XTS Decrypt NIST XTSTestVectors #278 -aes_decrypt_xts:"14d2f712bb2aac8a77cf0711a4b64a72996d7e309a11a3d900d1658f637d40dc":"2a29b939c7b612796cca4ebc1ff03e45":"9e12e6b70d6aa1687288a6e49cd8b6d861dba0400e05aaf752":"f47db336f194e89a9e3f2afaee51b5075583a533320f9230b6":200:0 +aes_decrypt_xts:"14d2f712bb2aac8a77cf0711a4b64a72996d7e309a11a3d900d1658f637d40dc":"2a29b939c7b612796cca4ebc1ff03e45":"f47db336f194e89a9e3f2afaee51b5075583a533320f9230b6":"9e12e6b70d6aa1687288a6e49cd8b6d861dba0400e05aaf752" AES-128-XTS Decrypt NIST XTSTestVectors #279 -aes_decrypt_xts:"a38566d8c583d7df3b5a7a84685762e9982415fe319d1d7577d9ba0c945846bb":"e5fa939d8120784eb51faebe29b405b4":"375fbcb5a046655e2eedfa4f177a0cd8ce3a7f62c81c085188":"dcdf427f9c2be96feaaa587409924ce00bd27d4dc3d3980c61":200:0 +aes_decrypt_xts:"a38566d8c583d7df3b5a7a84685762e9982415fe319d1d7577d9ba0c945846bb":"e5fa939d8120784eb51faebe29b405b4":"dcdf427f9c2be96feaaa587409924ce00bd27d4dc3d3980c61":"375fbcb5a046655e2eedfa4f177a0cd8ce3a7f62c81c085188" AES-128-XTS Decrypt NIST XTSTestVectors #280 -aes_decrypt_xts:"b312324a75bc7b24a6da68e30ee0f4463a78bcd6922e4aa0c8e74b051ae1e0eb":"b325c5378adec8ee71d1d31095669b1a":"6b4d1142679b321c0265215bced89e8cd9ff1c7321447594f1":"1ed74ff9e63551d474f5331f63b3a22d6440be1933573298fa":200:0 +aes_decrypt_xts:"b312324a75bc7b24a6da68e30ee0f4463a78bcd6922e4aa0c8e74b051ae1e0eb":"b325c5378adec8ee71d1d31095669b1a":"1ed74ff9e63551d474f5331f63b3a22d6440be1933573298fa":"6b4d1142679b321c0265215bced89e8cd9ff1c7321447594f1" AES-128-XTS Decrypt NIST XTSTestVectors #281 -aes_decrypt_xts:"944096722c2a3e5213ec709fc5aa92918f3f49c04e3c75623bb7885ff6529c56":"983ebcb9ac2b2e4e955f613a424fe80a":"dd212143569f1c9d8002224bf0149f33908fd1f711faa77d38":"5858c5e89f58dde600d30ada520c35ef68a918250727179642":200:0 +aes_decrypt_xts:"944096722c2a3e5213ec709fc5aa92918f3f49c04e3c75623bb7885ff6529c56":"983ebcb9ac2b2e4e955f613a424fe80a":"5858c5e89f58dde600d30ada520c35ef68a918250727179642":"dd212143569f1c9d8002224bf0149f33908fd1f711faa77d38" AES-128-XTS Decrypt NIST XTSTestVectors #282 -aes_decrypt_xts:"385a07651362b5364d826cd5ae1e96deb7541c67b6f4016c590823bbe42d016b":"c33411a22ac9c0d3986e9a51fc325d6b":"8e81218f0069e1002e218fee9b9530b1c229233de661aaa28e":"5679521a1ba1dac5b6e3a615e12ea8a05ce6c35ac36c80118e":200:0 +aes_decrypt_xts:"385a07651362b5364d826cd5ae1e96deb7541c67b6f4016c590823bbe42d016b":"c33411a22ac9c0d3986e9a51fc325d6b":"5679521a1ba1dac5b6e3a615e12ea8a05ce6c35ac36c80118e":"8e81218f0069e1002e218fee9b9530b1c229233de661aaa28e" AES-128-XTS Decrypt NIST XTSTestVectors #283 -aes_decrypt_xts:"cd727f71f21a5372860be9715a6990fd5b670be8ae08311195062a1239e32012":"59dc139d7bce497ce49195d16e59f4f7":"a11f8fd6a571ed601fbd52439a727d476266776bc853a3d7fa":"5fec25a3956f46b47e6607279c50ebc30436a4e6ebbfadede4":200:0 +aes_decrypt_xts:"cd727f71f21a5372860be9715a6990fd5b670be8ae08311195062a1239e32012":"59dc139d7bce497ce49195d16e59f4f7":"5fec25a3956f46b47e6607279c50ebc30436a4e6ebbfadede4":"a11f8fd6a571ed601fbd52439a727d476266776bc853a3d7fa" AES-128-XTS Decrypt NIST XTSTestVectors #284 -aes_decrypt_xts:"d0ff00594281c808bbec5d1fd0ccc8b671360b953384617fadee42a9b5d9857e":"425e7c32238be5c199a155de0078463d":"520f01b9d8285be1f956df7b765d1c601c2dfd0d7a19f50fec":"4eadbeb0baceeb9c509cb91b842419b4580c45486bafe7b2b1":200:0 +aes_decrypt_xts:"d0ff00594281c808bbec5d1fd0ccc8b671360b953384617fadee42a9b5d9857e":"425e7c32238be5c199a155de0078463d":"4eadbeb0baceeb9c509cb91b842419b4580c45486bafe7b2b1":"520f01b9d8285be1f956df7b765d1c601c2dfd0d7a19f50fec" AES-128-XTS Decrypt NIST XTSTestVectors #285 -aes_decrypt_xts:"5528e3d3d0585d3fee3fcde675f38c2d6d7891a9a8c48e969598dbfd717e8749":"734cdfc62fd71976edc82eb7f33d3700":"5036024990b58e017a2561f126c143ecfef343eb6b1f3f333d":"ec7bd1112c8690cf0ec320a7e6de7b898dcacf7687faf49af9":200:0 +aes_decrypt_xts:"5528e3d3d0585d3fee3fcde675f38c2d6d7891a9a8c48e969598dbfd717e8749":"734cdfc62fd71976edc82eb7f33d3700":"ec7bd1112c8690cf0ec320a7e6de7b898dcacf7687faf49af9":"5036024990b58e017a2561f126c143ecfef343eb6b1f3f333d" AES-128-XTS Decrypt NIST XTSTestVectors #286 -aes_decrypt_xts:"96f1b37729d92068d7b7b663edae42bdfbc43f5829f207a9dcafe0023035cafd":"dfd6673b7af534a4cd80f55ffb577a9b":"2ba07aaf5be5550ed7b44e28070414f154aaf30ec8904e8252":"62db2c1e5879d0c9b16efe58c245c3e011b36574570446476a":200:0 +aes_decrypt_xts:"96f1b37729d92068d7b7b663edae42bdfbc43f5829f207a9dcafe0023035cafd":"dfd6673b7af534a4cd80f55ffb577a9b":"62db2c1e5879d0c9b16efe58c245c3e011b36574570446476a":"2ba07aaf5be5550ed7b44e28070414f154aaf30ec8904e8252" AES-128-XTS Decrypt NIST XTSTestVectors #287 -aes_decrypt_xts:"6b119a824df4e7ea2a4b8f535a46765bbbaf93fe304e784cf4b8585971a6393a":"339ce2a6fe1a6ea741c7aaed4ebad4e1":"5709fbb509ac6776797423bc64f30140d57da9f5decaede08f":"0dad6e21ac440de54284e38785db84648619017aac90f2dc37":200:0 +aes_decrypt_xts:"6b119a824df4e7ea2a4b8f535a46765bbbaf93fe304e784cf4b8585971a6393a":"339ce2a6fe1a6ea741c7aaed4ebad4e1":"0dad6e21ac440de54284e38785db84648619017aac90f2dc37":"5709fbb509ac6776797423bc64f30140d57da9f5decaede08f" AES-128-XTS Decrypt NIST XTSTestVectors #288 -aes_decrypt_xts:"b4434957d3dd0b9e4f86be9382f305b5d0f5c231d9c7a9d752d0341535db3e08":"4ca5d1586450a4c500a557fa7837d5e8":"dc79b09edeaa45ff813953af1b00615124ca660abf00fc92dc":"fea71105d2d86b1bcd1ffeb0f9d0faf61b6b99f214b46ff2ce":200:0 +aes_decrypt_xts:"b4434957d3dd0b9e4f86be9382f305b5d0f5c231d9c7a9d752d0341535db3e08":"4ca5d1586450a4c500a557fa7837d5e8":"fea71105d2d86b1bcd1ffeb0f9d0faf61b6b99f214b46ff2ce":"dc79b09edeaa45ff813953af1b00615124ca660abf00fc92dc" AES-128-XTS Decrypt NIST XTSTestVectors #289 -aes_decrypt_xts:"c2e4b8a47ebc5686246acc32bbe14c9df85d9ec4109d94a8f0697fc26b65f41e":"8d9a4e5cc92010771aaea21a08e83a52":"8d1a4199a2971481ed293b9843f0714b5e670146188c1c6506":"e8e75f23f2dd384adc245053169f25c46ad0374c41ce400f7f":200:0 +aes_decrypt_xts:"c2e4b8a47ebc5686246acc32bbe14c9df85d9ec4109d94a8f0697fc26b65f41e":"8d9a4e5cc92010771aaea21a08e83a52":"e8e75f23f2dd384adc245053169f25c46ad0374c41ce400f7f":"8d1a4199a2971481ed293b9843f0714b5e670146188c1c6506" AES-128-XTS Decrypt NIST XTSTestVectors #290 -aes_decrypt_xts:"e094ef60057a3fa2385b00b41f0f6f22ff6ad8dc2f75daf16c1095d67d54e6bc":"874d2ec02b41a0388f350a078964c11f":"82331cf05a8eb9912d44723c8dda595a2fa2706c10e81379e4":"309f2c68bd7d10785fac154ef747e071f00800fd3e233a5851":200:0 +aes_decrypt_xts:"e094ef60057a3fa2385b00b41f0f6f22ff6ad8dc2f75daf16c1095d67d54e6bc":"874d2ec02b41a0388f350a078964c11f":"309f2c68bd7d10785fac154ef747e071f00800fd3e233a5851":"82331cf05a8eb9912d44723c8dda595a2fa2706c10e81379e4" AES-128-XTS Decrypt NIST XTSTestVectors #291 -aes_decrypt_xts:"bef575e3d299927d3f0a656b29acf6412f92f8c86098bac14dca9ea53e386572":"eb12fde7d3f63382fcec95af1e3331d6":"d4a6309e5749eb506f25b57cc313ab50dc373fe709ef44114c":"6f9a99540b4670a09081e72508007d5e9813edd9809ad4795e":200:0 +aes_decrypt_xts:"bef575e3d299927d3f0a656b29acf6412f92f8c86098bac14dca9ea53e386572":"eb12fde7d3f63382fcec95af1e3331d6":"6f9a99540b4670a09081e72508007d5e9813edd9809ad4795e":"d4a6309e5749eb506f25b57cc313ab50dc373fe709ef44114c" AES-128-XTS Decrypt NIST XTSTestVectors #292 -aes_decrypt_xts:"b0abd734d1fd91a7ec4b31f15a109420d3ddfaefd59f4cca5050c4bb8ad977b9":"49fe957634c5a5841c51496e7b6b665c":"7c928f210f983125ee6cb1217b6e55643a3263234c2192fe5f":"1b7bd09b8607a176afafaedd46c76671a4608f3d0de0993d27":200:0 +aes_decrypt_xts:"b0abd734d1fd91a7ec4b31f15a109420d3ddfaefd59f4cca5050c4bb8ad977b9":"49fe957634c5a5841c51496e7b6b665c":"1b7bd09b8607a176afafaedd46c76671a4608f3d0de0993d27":"7c928f210f983125ee6cb1217b6e55643a3263234c2192fe5f" AES-128-XTS Decrypt NIST XTSTestVectors #293 -aes_decrypt_xts:"6afcf8e96518c48c7b40b15e7179beebd3cc81f4e0d36d5b977ac658744e1780":"ab3601291eacb19eff2072297d3534e2":"c2011f959c7e809c8976db6ba783034bbb2ad1589730ff0a1e":"f7fc570548b243a5f983e973f34df17e654f761c47ad951738":200:0 +aes_decrypt_xts:"6afcf8e96518c48c7b40b15e7179beebd3cc81f4e0d36d5b977ac658744e1780":"ab3601291eacb19eff2072297d3534e2":"f7fc570548b243a5f983e973f34df17e654f761c47ad951738":"c2011f959c7e809c8976db6ba783034bbb2ad1589730ff0a1e" AES-128-XTS Decrypt NIST XTSTestVectors #294 -aes_decrypt_xts:"d5bcc7498154125a4a12213fcd2a1a83afd5aa6f602a614cfbb8d4d0efd61d33":"0c737522da7f9e042cdc4618d50a5c40":"a6b9be98f5e1fe5459e239474dc41b34a3dccc3895ce1121d3":"4df12279fa56bbce90474ca33d879867ab087938317c53207e":200:0 +aes_decrypt_xts:"d5bcc7498154125a4a12213fcd2a1a83afd5aa6f602a614cfbb8d4d0efd61d33":"0c737522da7f9e042cdc4618d50a5c40":"4df12279fa56bbce90474ca33d879867ab087938317c53207e":"a6b9be98f5e1fe5459e239474dc41b34a3dccc3895ce1121d3" AES-128-XTS Decrypt NIST XTSTestVectors #295 -aes_decrypt_xts:"54352859c21f7611aed81870fe6a675af646643b2be3eb4cf94a195ebe24968b":"7038624c1f4ed2351d259823e3ca3fda":"5f5a7a30cf1da7e979d006d76890ddb975ae171741b903ba88":"38e04dd8507808d0740321d8be4a9fdd1961aa27f87f3366cf":200:0 +aes_decrypt_xts:"54352859c21f7611aed81870fe6a675af646643b2be3eb4cf94a195ebe24968b":"7038624c1f4ed2351d259823e3ca3fda":"38e04dd8507808d0740321d8be4a9fdd1961aa27f87f3366cf":"5f5a7a30cf1da7e979d006d76890ddb975ae171741b903ba88" AES-128-XTS Decrypt NIST XTSTestVectors #296 -aes_decrypt_xts:"49a20f03d58263482e28c4450c85b0b23322ee47243aaafa458d1b7d3eb50baf":"9cf56907b8c47614f913b997afa60d9f":"d65a3cbbbc2a42f140e46cf4011c4e686be6f4a9804e9f631b":"8378ed1341e387ef4f27bec03a88658d112984ef888955c6d6":200:0 +aes_decrypt_xts:"49a20f03d58263482e28c4450c85b0b23322ee47243aaafa458d1b7d3eb50baf":"9cf56907b8c47614f913b997afa60d9f":"8378ed1341e387ef4f27bec03a88658d112984ef888955c6d6":"d65a3cbbbc2a42f140e46cf4011c4e686be6f4a9804e9f631b" AES-128-XTS Decrypt NIST XTSTestVectors #297 -aes_decrypt_xts:"53c3e20d72ae95dd7668cde4b401064b2e5cdcba84a59e5e480fc34247ebeb2d":"538376da072b5c7c1e6d662eac0ec3db":"45e1ddae35c67c99b82518bcf7e6b3d1cf5f30e48c309104cd":"656b1142f3982603c549b1aa61e9769ad7467012c03c413db8":200:0 +aes_decrypt_xts:"53c3e20d72ae95dd7668cde4b401064b2e5cdcba84a59e5e480fc34247ebeb2d":"538376da072b5c7c1e6d662eac0ec3db":"656b1142f3982603c549b1aa61e9769ad7467012c03c413db8":"45e1ddae35c67c99b82518bcf7e6b3d1cf5f30e48c309104cd" AES-128-XTS Decrypt NIST XTSTestVectors #298 -aes_decrypt_xts:"ea41d6e91253b0aefc476c87dcc775c140829f718fb33a67f17c293a9f8d04cc":"e1585863e755067bc2665eaf8a52f175":"b82c5c5a2160eaec989ae70266b9e346cd9daa95de127788a1":"95f4132408c7ca956c4fdc712cc993af4a8c387796a317755b":200:0 +aes_decrypt_xts:"ea41d6e91253b0aefc476c87dcc775c140829f718fb33a67f17c293a9f8d04cc":"e1585863e755067bc2665eaf8a52f175":"95f4132408c7ca956c4fdc712cc993af4a8c387796a317755b":"b82c5c5a2160eaec989ae70266b9e346cd9daa95de127788a1" AES-128-XTS Decrypt NIST XTSTestVectors #299 -aes_decrypt_xts:"995cb6f49a8ba57a841e0aa3c5bb04cef01bd28c3ec07f0f6a9e86ccf00e7d9f":"192bcd4da78cf5971201c06c436750ed":"2be8b0c0faeb45ad38c90b4bf703903b015a87ec6524819deb":"599f549775aa84bfe398edf89198ed26c612828e6943ce2e3f":200:0 +aes_decrypt_xts:"995cb6f49a8ba57a841e0aa3c5bb04cef01bd28c3ec07f0f6a9e86ccf00e7d9f":"192bcd4da78cf5971201c06c436750ed":"599f549775aa84bfe398edf89198ed26c612828e6943ce2e3f":"2be8b0c0faeb45ad38c90b4bf703903b015a87ec6524819deb" AES-128-XTS Decrypt NIST XTSTestVectors #300 -aes_decrypt_xts:"6bae7093486ca9c40fe063f01a665920dc13aca902986e6410d124ec01e8706a":"2fa841c562e770ade439d6ab936edaf8":"6b50db3d294c3f4aba335942a02340c7f61ea4fe670e3f0ba2":"f08e493175aac45d9b5178f565f50c2bbd3d587565ca677c78":200:0 +aes_decrypt_xts:"6bae7093486ca9c40fe063f01a665920dc13aca902986e6410d124ec01e8706a":"2fa841c562e770ade439d6ab936edaf8":"f08e493175aac45d9b5178f565f50c2bbd3d587565ca677c78":"6b50db3d294c3f4aba335942a02340c7f61ea4fe670e3f0ba2" AES-128-XTS Decrypt NIST XTSTestVectors #301 -aes_decrypt_xts:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":256:0 +aes_decrypt_xts:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671" AES-128-XTS Decrypt NIST XTSTestVectors #302 -aes_decrypt_xts:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":256:0 +aes_decrypt_xts:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef" AES-128-XTS Decrypt NIST XTSTestVectors #303 -aes_decrypt_xts:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":256:0 +aes_decrypt_xts:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa" AES-128-XTS Decrypt NIST XTSTestVectors #304 -aes_decrypt_xts:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":256:0 +aes_decrypt_xts:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5" AES-128-XTS Decrypt NIST XTSTestVectors #305 -aes_decrypt_xts:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":256:0 +aes_decrypt_xts:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76" AES-128-XTS Decrypt NIST XTSTestVectors #306 -aes_decrypt_xts:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":256:0 +aes_decrypt_xts:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0" AES-128-XTS Decrypt NIST XTSTestVectors #307 -aes_decrypt_xts:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":256:0 +aes_decrypt_xts:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5" AES-128-XTS Decrypt NIST XTSTestVectors #308 -aes_decrypt_xts:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":256:0 +aes_decrypt_xts:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed" AES-128-XTS Decrypt NIST XTSTestVectors #309 -aes_decrypt_xts:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":256:0 +aes_decrypt_xts:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5" AES-128-XTS Decrypt NIST XTSTestVectors #310 -aes_decrypt_xts:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":256:0 +aes_decrypt_xts:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a" AES-128-XTS Decrypt NIST XTSTestVectors #311 -aes_decrypt_xts:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":256:0 +aes_decrypt_xts:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef" AES-128-XTS Decrypt NIST XTSTestVectors #312 -aes_decrypt_xts:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":256:0 +aes_decrypt_xts:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755" AES-128-XTS Decrypt NIST XTSTestVectors #313 -aes_decrypt_xts:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":256:0 +aes_decrypt_xts:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c" AES-128-XTS Decrypt NIST XTSTestVectors #314 -aes_decrypt_xts:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":256:0 +aes_decrypt_xts:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532" AES-128-XTS Decrypt NIST XTSTestVectors #315 -aes_decrypt_xts:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":256:0 +aes_decrypt_xts:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e" AES-128-XTS Decrypt NIST XTSTestVectors #316 -aes_decrypt_xts:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":256:0 +aes_decrypt_xts:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d" AES-128-XTS Decrypt NIST XTSTestVectors #317 -aes_decrypt_xts:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":256:0 +aes_decrypt_xts:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866" AES-128-XTS Decrypt NIST XTSTestVectors #318 -aes_decrypt_xts:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":256:0 +aes_decrypt_xts:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f" AES-128-XTS Decrypt NIST XTSTestVectors #319 -aes_decrypt_xts:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":256:0 +aes_decrypt_xts:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903" AES-128-XTS Decrypt NIST XTSTestVectors #320 -aes_decrypt_xts:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":256:0 +aes_decrypt_xts:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0" AES-128-XTS Decrypt NIST XTSTestVectors #321 -aes_decrypt_xts:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":256:0 +aes_decrypt_xts:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961" AES-128-XTS Decrypt NIST XTSTestVectors #322 -aes_decrypt_xts:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":256:0 +aes_decrypt_xts:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9" AES-128-XTS Decrypt NIST XTSTestVectors #323 -aes_decrypt_xts:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":256:0 +aes_decrypt_xts:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01" AES-128-XTS Decrypt NIST XTSTestVectors #324 -aes_decrypt_xts:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":256:0 +aes_decrypt_xts:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68" AES-128-XTS Decrypt NIST XTSTestVectors #325 -aes_decrypt_xts:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":256:0 +aes_decrypt_xts:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50" AES-128-XTS Decrypt NIST XTSTestVectors #326 -aes_decrypt_xts:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":256:0 +aes_decrypt_xts:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e" AES-128-XTS Decrypt NIST XTSTestVectors #327 -aes_decrypt_xts:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":256:0 +aes_decrypt_xts:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c" AES-128-XTS Decrypt NIST XTSTestVectors #328 -aes_decrypt_xts:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":256:0 +aes_decrypt_xts:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67" AES-128-XTS Decrypt NIST XTSTestVectors #329 -aes_decrypt_xts:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":256:0 +aes_decrypt_xts:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1" AES-128-XTS Decrypt NIST XTSTestVectors #330 -aes_decrypt_xts:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":256:0 +aes_decrypt_xts:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c" AES-128-XTS Decrypt NIST XTSTestVectors #331 -aes_decrypt_xts:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":256:0 +aes_decrypt_xts:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6" AES-128-XTS Decrypt NIST XTSTestVectors #332 -aes_decrypt_xts:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":256:0 +aes_decrypt_xts:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d" AES-128-XTS Decrypt NIST XTSTestVectors #333 -aes_decrypt_xts:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":256:0 +aes_decrypt_xts:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4" AES-128-XTS Decrypt NIST XTSTestVectors #334 -aes_decrypt_xts:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":256:0 +aes_decrypt_xts:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5" AES-128-XTS Decrypt NIST XTSTestVectors #335 -aes_decrypt_xts:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":256:0 +aes_decrypt_xts:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059" AES-128-XTS Decrypt NIST XTSTestVectors #336 -aes_decrypt_xts:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":256:0 +aes_decrypt_xts:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5" AES-128-XTS Decrypt NIST XTSTestVectors #337 -aes_decrypt_xts:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":256:0 +aes_decrypt_xts:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf" AES-128-XTS Decrypt NIST XTSTestVectors #338 -aes_decrypt_xts:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":256:0 +aes_decrypt_xts:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395" AES-128-XTS Decrypt NIST XTSTestVectors #339 -aes_decrypt_xts:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":256:0 +aes_decrypt_xts:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7" AES-128-XTS Decrypt NIST XTSTestVectors #340 -aes_decrypt_xts:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":256:0 +aes_decrypt_xts:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed" AES-128-XTS Decrypt NIST XTSTestVectors #341 -aes_decrypt_xts:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":256:0 +aes_decrypt_xts:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9" AES-128-XTS Decrypt NIST XTSTestVectors #342 -aes_decrypt_xts:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":256:0 +aes_decrypt_xts:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c" AES-128-XTS Decrypt NIST XTSTestVectors #343 -aes_decrypt_xts:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":256:0 +aes_decrypt_xts:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695" AES-128-XTS Decrypt NIST XTSTestVectors #344 -aes_decrypt_xts:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":256:0 +aes_decrypt_xts:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc" AES-128-XTS Decrypt NIST XTSTestVectors #345 -aes_decrypt_xts:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":256:0 +aes_decrypt_xts:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e" AES-128-XTS Decrypt NIST XTSTestVectors #346 -aes_decrypt_xts:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":256:0 +aes_decrypt_xts:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d" AES-128-XTS Decrypt NIST XTSTestVectors #347 -aes_decrypt_xts:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":256:0 +aes_decrypt_xts:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430" AES-128-XTS Decrypt NIST XTSTestVectors #348 -aes_decrypt_xts:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":256:0 +aes_decrypt_xts:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4" AES-128-XTS Decrypt NIST XTSTestVectors #349 -aes_decrypt_xts:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":256:0 +aes_decrypt_xts:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d" AES-128-XTS Decrypt NIST XTSTestVectors #350 -aes_decrypt_xts:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":256:0 +aes_decrypt_xts:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246" AES-128-XTS Decrypt NIST XTSTestVectors #351 -aes_decrypt_xts:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":256:0 +aes_decrypt_xts:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e" AES-128-XTS Decrypt NIST XTSTestVectors #352 -aes_decrypt_xts:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":256:0 +aes_decrypt_xts:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b" AES-128-XTS Decrypt NIST XTSTestVectors #353 -aes_decrypt_xts:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":256:0 +aes_decrypt_xts:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd" AES-128-XTS Decrypt NIST XTSTestVectors #354 -aes_decrypt_xts:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":256:0 +aes_decrypt_xts:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff" AES-128-XTS Decrypt NIST XTSTestVectors #355 -aes_decrypt_xts:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":256:0 +aes_decrypt_xts:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e" AES-128-XTS Decrypt NIST XTSTestVectors #356 -aes_decrypt_xts:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":256:0 +aes_decrypt_xts:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444" AES-128-XTS Decrypt NIST XTSTestVectors #357 -aes_decrypt_xts:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":256:0 +aes_decrypt_xts:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9" AES-128-XTS Decrypt NIST XTSTestVectors #358 -aes_decrypt_xts:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":256:0 +aes_decrypt_xts:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475" AES-128-XTS Decrypt NIST XTSTestVectors #359 -aes_decrypt_xts:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":256:0 +aes_decrypt_xts:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc" AES-128-XTS Decrypt NIST XTSTestVectors #360 -aes_decrypt_xts:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":256:0 +aes_decrypt_xts:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815" AES-128-XTS Decrypt NIST XTSTestVectors #361 -aes_decrypt_xts:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":256:0 +aes_decrypt_xts:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5" AES-128-XTS Decrypt NIST XTSTestVectors #362 -aes_decrypt_xts:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":256:0 +aes_decrypt_xts:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac" AES-128-XTS Decrypt NIST XTSTestVectors #363 -aes_decrypt_xts:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":256:0 +aes_decrypt_xts:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944" AES-128-XTS Decrypt NIST XTSTestVectors #364 -aes_decrypt_xts:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":256:0 +aes_decrypt_xts:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a" AES-128-XTS Decrypt NIST XTSTestVectors #365 -aes_decrypt_xts:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":256:0 +aes_decrypt_xts:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1" AES-128-XTS Decrypt NIST XTSTestVectors #366 -aes_decrypt_xts:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":256:0 +aes_decrypt_xts:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed" AES-128-XTS Decrypt NIST XTSTestVectors #367 -aes_decrypt_xts:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":256:0 +aes_decrypt_xts:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f" AES-128-XTS Decrypt NIST XTSTestVectors #368 -aes_decrypt_xts:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":256:0 +aes_decrypt_xts:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320" AES-128-XTS Decrypt NIST XTSTestVectors #369 -aes_decrypt_xts:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":256:0 +aes_decrypt_xts:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22" AES-128-XTS Decrypt NIST XTSTestVectors #370 -aes_decrypt_xts:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":256:0 +aes_decrypt_xts:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34" AES-128-XTS Decrypt NIST XTSTestVectors #371 -aes_decrypt_xts:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":256:0 +aes_decrypt_xts:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6" AES-128-XTS Decrypt NIST XTSTestVectors #372 -aes_decrypt_xts:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":256:0 +aes_decrypt_xts:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41" AES-128-XTS Decrypt NIST XTSTestVectors #373 -aes_decrypt_xts:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":256:0 +aes_decrypt_xts:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f" AES-128-XTS Decrypt NIST XTSTestVectors #374 -aes_decrypt_xts:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":256:0 +aes_decrypt_xts:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee" AES-128-XTS Decrypt NIST XTSTestVectors #375 -aes_decrypt_xts:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":256:0 +aes_decrypt_xts:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4" AES-128-XTS Decrypt NIST XTSTestVectors #376 -aes_decrypt_xts:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":256:0 +aes_decrypt_xts:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6" AES-128-XTS Decrypt NIST XTSTestVectors #377 -aes_decrypt_xts:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":256:0 +aes_decrypt_xts:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c" AES-128-XTS Decrypt NIST XTSTestVectors #378 -aes_decrypt_xts:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":256:0 +aes_decrypt_xts:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8" AES-128-XTS Decrypt NIST XTSTestVectors #379 -aes_decrypt_xts:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":256:0 +aes_decrypt_xts:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338" AES-128-XTS Decrypt NIST XTSTestVectors #380 -aes_decrypt_xts:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":256:0 +aes_decrypt_xts:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1" AES-128-XTS Decrypt NIST XTSTestVectors #381 -aes_decrypt_xts:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":256:0 +aes_decrypt_xts:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c" AES-128-XTS Decrypt NIST XTSTestVectors #382 -aes_decrypt_xts:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":256:0 +aes_decrypt_xts:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0" AES-128-XTS Decrypt NIST XTSTestVectors #383 -aes_decrypt_xts:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":256:0 +aes_decrypt_xts:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e" AES-128-XTS Decrypt NIST XTSTestVectors #384 -aes_decrypt_xts:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":256:0 +aes_decrypt_xts:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b" AES-128-XTS Decrypt NIST XTSTestVectors #385 -aes_decrypt_xts:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":256:0 +aes_decrypt_xts:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18" AES-128-XTS Decrypt NIST XTSTestVectors #386 -aes_decrypt_xts:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":256:0 +aes_decrypt_xts:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a" AES-128-XTS Decrypt NIST XTSTestVectors #387 -aes_decrypt_xts:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":256:0 +aes_decrypt_xts:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64" AES-128-XTS Decrypt NIST XTSTestVectors #388 -aes_decrypt_xts:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":256:0 +aes_decrypt_xts:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef" AES-128-XTS Decrypt NIST XTSTestVectors #389 -aes_decrypt_xts:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":256:0 +aes_decrypt_xts:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952" AES-128-XTS Decrypt NIST XTSTestVectors #390 -aes_decrypt_xts:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":256:0 +aes_decrypt_xts:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d" AES-128-XTS Decrypt NIST XTSTestVectors #391 -aes_decrypt_xts:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":256:0 +aes_decrypt_xts:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720" AES-128-XTS Decrypt NIST XTSTestVectors #392 -aes_decrypt_xts:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":256:0 +aes_decrypt_xts:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c" AES-128-XTS Decrypt NIST XTSTestVectors #393 -aes_decrypt_xts:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":256:0 +aes_decrypt_xts:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d" AES-128-XTS Decrypt NIST XTSTestVectors #394 -aes_decrypt_xts:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":256:0 +aes_decrypt_xts:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39" AES-128-XTS Decrypt NIST XTSTestVectors #395 -aes_decrypt_xts:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":256:0 +aes_decrypt_xts:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998" AES-128-XTS Decrypt NIST XTSTestVectors #396 -aes_decrypt_xts:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":256:0 +aes_decrypt_xts:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea" AES-128-XTS Decrypt NIST XTSTestVectors #397 -aes_decrypt_xts:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":256:0 +aes_decrypt_xts:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830" AES-128-XTS Decrypt NIST XTSTestVectors #398 -aes_decrypt_xts:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":256:0 +aes_decrypt_xts:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb" AES-128-XTS Decrypt NIST XTSTestVectors #399 -aes_decrypt_xts:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":256:0 +aes_decrypt_xts:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45" AES-128-XTS Decrypt NIST XTSTestVectors #400 -aes_decrypt_xts:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":256:0 +aes_decrypt_xts:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357" AES-256-XTS Encrypt NIST XTSTestVectors #1 -aes_encrypt_xts:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db":256:0 +aes_encrypt_xts:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db" AES-256-XTS Encrypt NIST XTSTestVectors #2 -aes_encrypt_xts:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959":256:0 +aes_encrypt_xts:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959" AES-256-XTS Encrypt NIST XTSTestVectors #3 -aes_encrypt_xts:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711":256:0 +aes_encrypt_xts:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711" AES-256-XTS Encrypt NIST XTSTestVectors #4 -aes_encrypt_xts:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726":256:0 +aes_encrypt_xts:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726" AES-256-XTS Encrypt NIST XTSTestVectors #5 -aes_encrypt_xts:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4":256:0 +aes_encrypt_xts:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4" AES-256-XTS Encrypt NIST XTSTestVectors #6 -aes_encrypt_xts:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541":256:0 +aes_encrypt_xts:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541" AES-256-XTS Encrypt NIST XTSTestVectors #7 -aes_encrypt_xts:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe":256:0 +aes_encrypt_xts:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe" AES-256-XTS Encrypt NIST XTSTestVectors #8 -aes_encrypt_xts:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99":256:0 +aes_encrypt_xts:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99" AES-256-XTS Encrypt NIST XTSTestVectors #9 -aes_encrypt_xts:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe":256:0 +aes_encrypt_xts:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe" AES-256-XTS Encrypt NIST XTSTestVectors #10 -aes_encrypt_xts:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8":256:0 +aes_encrypt_xts:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8" AES-256-XTS Encrypt NIST XTSTestVectors #11 -aes_encrypt_xts:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0":256:0 +aes_encrypt_xts:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0" AES-256-XTS Encrypt NIST XTSTestVectors #12 -aes_encrypt_xts:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e":256:0 +aes_encrypt_xts:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e" AES-256-XTS Encrypt NIST XTSTestVectors #13 -aes_encrypt_xts:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8":256:0 +aes_encrypt_xts:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8" AES-256-XTS Encrypt NIST XTSTestVectors #14 -aes_encrypt_xts:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47":256:0 +aes_encrypt_xts:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47" AES-256-XTS Encrypt NIST XTSTestVectors #15 -aes_encrypt_xts:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8":256:0 +aes_encrypt_xts:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8" AES-256-XTS Encrypt NIST XTSTestVectors #16 -aes_encrypt_xts:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758":256:0 +aes_encrypt_xts:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758" AES-256-XTS Encrypt NIST XTSTestVectors #17 -aes_encrypt_xts:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c":256:0 +aes_encrypt_xts:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c" AES-256-XTS Encrypt NIST XTSTestVectors #18 -aes_encrypt_xts:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15":256:0 +aes_encrypt_xts:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15" AES-256-XTS Encrypt NIST XTSTestVectors #19 -aes_encrypt_xts:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712":256:0 +aes_encrypt_xts:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712" AES-256-XTS Encrypt NIST XTSTestVectors #20 -aes_encrypt_xts:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662":256:0 +aes_encrypt_xts:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662" AES-256-XTS Encrypt NIST XTSTestVectors #21 -aes_encrypt_xts:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6":256:0 +aes_encrypt_xts:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6" AES-256-XTS Encrypt NIST XTSTestVectors #22 -aes_encrypt_xts:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649":256:0 +aes_encrypt_xts:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649" AES-256-XTS Encrypt NIST XTSTestVectors #23 -aes_encrypt_xts:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9":256:0 +aes_encrypt_xts:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9" AES-256-XTS Encrypt NIST XTSTestVectors #24 -aes_encrypt_xts:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef":256:0 +aes_encrypt_xts:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef" AES-256-XTS Encrypt NIST XTSTestVectors #25 -aes_encrypt_xts:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17":256:0 +aes_encrypt_xts:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17" AES-256-XTS Encrypt NIST XTSTestVectors #26 -aes_encrypt_xts:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64":256:0 +aes_encrypt_xts:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64" AES-256-XTS Encrypt NIST XTSTestVectors #27 -aes_encrypt_xts:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955":256:0 +aes_encrypt_xts:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955" AES-256-XTS Encrypt NIST XTSTestVectors #28 -aes_encrypt_xts:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19":256:0 +aes_encrypt_xts:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19" AES-256-XTS Encrypt NIST XTSTestVectors #29 -aes_encrypt_xts:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62":256:0 +aes_encrypt_xts:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62" AES-256-XTS Encrypt NIST XTSTestVectors #30 -aes_encrypt_xts:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689":256:0 +aes_encrypt_xts:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689" AES-256-XTS Encrypt NIST XTSTestVectors #31 -aes_encrypt_xts:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc":256:0 +aes_encrypt_xts:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc" AES-256-XTS Encrypt NIST XTSTestVectors #32 -aes_encrypt_xts:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d":256:0 +aes_encrypt_xts:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d" AES-256-XTS Encrypt NIST XTSTestVectors #33 -aes_encrypt_xts:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328":256:0 +aes_encrypt_xts:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328" AES-256-XTS Encrypt NIST XTSTestVectors #34 -aes_encrypt_xts:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be":256:0 +aes_encrypt_xts:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be" AES-256-XTS Encrypt NIST XTSTestVectors #35 -aes_encrypt_xts:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2":256:0 +aes_encrypt_xts:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2" AES-256-XTS Encrypt NIST XTSTestVectors #36 -aes_encrypt_xts:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c":256:0 +aes_encrypt_xts:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c" AES-256-XTS Encrypt NIST XTSTestVectors #37 -aes_encrypt_xts:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29":256:0 +aes_encrypt_xts:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29" AES-256-XTS Encrypt NIST XTSTestVectors #38 -aes_encrypt_xts:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b":256:0 +aes_encrypt_xts:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b" AES-256-XTS Encrypt NIST XTSTestVectors #39 -aes_encrypt_xts:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436":256:0 +aes_encrypt_xts:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436" AES-256-XTS Encrypt NIST XTSTestVectors #40 -aes_encrypt_xts:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319":256:0 +aes_encrypt_xts:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319" AES-256-XTS Encrypt NIST XTSTestVectors #41 -aes_encrypt_xts:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4":256:0 +aes_encrypt_xts:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4" AES-256-XTS Encrypt NIST XTSTestVectors #42 -aes_encrypt_xts:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8":256:0 +aes_encrypt_xts:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8" AES-256-XTS Encrypt NIST XTSTestVectors #43 -aes_encrypt_xts:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530":256:0 +aes_encrypt_xts:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530" AES-256-XTS Encrypt NIST XTSTestVectors #44 -aes_encrypt_xts:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98":256:0 +aes_encrypt_xts:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98" AES-256-XTS Encrypt NIST XTSTestVectors #45 -aes_encrypt_xts:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee":256:0 +aes_encrypt_xts:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee" AES-256-XTS Encrypt NIST XTSTestVectors #46 -aes_encrypt_xts:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e":256:0 +aes_encrypt_xts:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e" AES-256-XTS Encrypt NIST XTSTestVectors #47 -aes_encrypt_xts:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866":256:0 +aes_encrypt_xts:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866" AES-256-XTS Encrypt NIST XTSTestVectors #48 -aes_encrypt_xts:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f":256:0 +aes_encrypt_xts:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f" AES-256-XTS Encrypt NIST XTSTestVectors #49 -aes_encrypt_xts:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350":256:0 +aes_encrypt_xts:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350" AES-256-XTS Encrypt NIST XTSTestVectors #50 -aes_encrypt_xts:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c":256:0 +aes_encrypt_xts:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c" AES-256-XTS Encrypt NIST XTSTestVectors #51 -aes_encrypt_xts:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34":256:0 +aes_encrypt_xts:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34" AES-256-XTS Encrypt NIST XTSTestVectors #52 -aes_encrypt_xts:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683":256:0 +aes_encrypt_xts:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683" AES-256-XTS Encrypt NIST XTSTestVectors #53 -aes_encrypt_xts:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0":256:0 +aes_encrypt_xts:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0" AES-256-XTS Encrypt NIST XTSTestVectors #54 -aes_encrypt_xts:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13":256:0 +aes_encrypt_xts:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13" AES-256-XTS Encrypt NIST XTSTestVectors #55 -aes_encrypt_xts:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b":256:0 +aes_encrypt_xts:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b" AES-256-XTS Encrypt NIST XTSTestVectors #56 -aes_encrypt_xts:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1":256:0 +aes_encrypt_xts:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1" AES-256-XTS Encrypt NIST XTSTestVectors #57 -aes_encrypt_xts:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2":256:0 +aes_encrypt_xts:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2" AES-256-XTS Encrypt NIST XTSTestVectors #58 -aes_encrypt_xts:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97":256:0 +aes_encrypt_xts:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97" AES-256-XTS Encrypt NIST XTSTestVectors #59 -aes_encrypt_xts:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071":256:0 +aes_encrypt_xts:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071" AES-256-XTS Encrypt NIST XTSTestVectors #60 -aes_encrypt_xts:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643":256:0 +aes_encrypt_xts:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643" AES-256-XTS Encrypt NIST XTSTestVectors #61 -aes_encrypt_xts:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe":256:0 +aes_encrypt_xts:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe" AES-256-XTS Encrypt NIST XTSTestVectors #62 -aes_encrypt_xts:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99":256:0 +aes_encrypt_xts:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99" AES-256-XTS Encrypt NIST XTSTestVectors #63 -aes_encrypt_xts:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529":256:0 +aes_encrypt_xts:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529" AES-256-XTS Encrypt NIST XTSTestVectors #64 -aes_encrypt_xts:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc":256:0 +aes_encrypt_xts:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc" AES-256-XTS Encrypt NIST XTSTestVectors #65 -aes_encrypt_xts:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348":256:0 +aes_encrypt_xts:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348" AES-256-XTS Encrypt NIST XTSTestVectors #66 -aes_encrypt_xts:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210":256:0 +aes_encrypt_xts:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210" AES-256-XTS Encrypt NIST XTSTestVectors #67 -aes_encrypt_xts:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e":256:0 +aes_encrypt_xts:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e" AES-256-XTS Encrypt NIST XTSTestVectors #68 -aes_encrypt_xts:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561":256:0 +aes_encrypt_xts:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561" AES-256-XTS Encrypt NIST XTSTestVectors #69 -aes_encrypt_xts:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d":256:0 +aes_encrypt_xts:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d" AES-256-XTS Encrypt NIST XTSTestVectors #70 -aes_encrypt_xts:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401":256:0 +aes_encrypt_xts:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401" AES-256-XTS Encrypt NIST XTSTestVectors #71 -aes_encrypt_xts:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372":256:0 +aes_encrypt_xts:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372" AES-256-XTS Encrypt NIST XTSTestVectors #72 -aes_encrypt_xts:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0":256:0 +aes_encrypt_xts:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0" AES-256-XTS Encrypt NIST XTSTestVectors #73 -aes_encrypt_xts:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490":256:0 +aes_encrypt_xts:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490" AES-256-XTS Encrypt NIST XTSTestVectors #74 -aes_encrypt_xts:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da":256:0 +aes_encrypt_xts:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da" AES-256-XTS Encrypt NIST XTSTestVectors #75 -aes_encrypt_xts:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf":256:0 +aes_encrypt_xts:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf" AES-256-XTS Encrypt NIST XTSTestVectors #76 -aes_encrypt_xts:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07":256:0 +aes_encrypt_xts:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07" AES-256-XTS Encrypt NIST XTSTestVectors #77 -aes_encrypt_xts:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2":256:0 +aes_encrypt_xts:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2" AES-256-XTS Encrypt NIST XTSTestVectors #78 -aes_encrypt_xts:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f":256:0 +aes_encrypt_xts:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f" AES-256-XTS Encrypt NIST XTSTestVectors #79 -aes_encrypt_xts:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7":256:0 +aes_encrypt_xts:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7" AES-256-XTS Encrypt NIST XTSTestVectors #80 -aes_encrypt_xts:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3":256:0 +aes_encrypt_xts:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3" AES-256-XTS Encrypt NIST XTSTestVectors #81 -aes_encrypt_xts:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398":256:0 +aes_encrypt_xts:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398" AES-256-XTS Encrypt NIST XTSTestVectors #82 -aes_encrypt_xts:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24":256:0 +aes_encrypt_xts:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24" AES-256-XTS Encrypt NIST XTSTestVectors #83 -aes_encrypt_xts:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e":256:0 +aes_encrypt_xts:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e" AES-256-XTS Encrypt NIST XTSTestVectors #84 -aes_encrypt_xts:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f":256:0 +aes_encrypt_xts:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f" AES-256-XTS Encrypt NIST XTSTestVectors #85 -aes_encrypt_xts:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299":256:0 +aes_encrypt_xts:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299" AES-256-XTS Encrypt NIST XTSTestVectors #86 -aes_encrypt_xts:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407":256:0 +aes_encrypt_xts:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407" AES-256-XTS Encrypt NIST XTSTestVectors #87 -aes_encrypt_xts:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d":256:0 +aes_encrypt_xts:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d" AES-256-XTS Encrypt NIST XTSTestVectors #88 -aes_encrypt_xts:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e":256:0 +aes_encrypt_xts:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e" AES-256-XTS Encrypt NIST XTSTestVectors #89 -aes_encrypt_xts:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824":256:0 +aes_encrypt_xts:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824" AES-256-XTS Encrypt NIST XTSTestVectors #90 -aes_encrypt_xts:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f":256:0 +aes_encrypt_xts:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f" AES-256-XTS Encrypt NIST XTSTestVectors #91 -aes_encrypt_xts:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11":256:0 +aes_encrypt_xts:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11" AES-256-XTS Encrypt NIST XTSTestVectors #92 -aes_encrypt_xts:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2":256:0 +aes_encrypt_xts:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2" AES-256-XTS Encrypt NIST XTSTestVectors #93 -aes_encrypt_xts:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184":256:0 +aes_encrypt_xts:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184" AES-256-XTS Encrypt NIST XTSTestVectors #94 -aes_encrypt_xts:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055":256:0 +aes_encrypt_xts:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055" AES-256-XTS Encrypt NIST XTSTestVectors #95 -aes_encrypt_xts:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d":256:0 +aes_encrypt_xts:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d" AES-256-XTS Encrypt NIST XTSTestVectors #96 -aes_encrypt_xts:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87":256:0 +aes_encrypt_xts:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87" AES-256-XTS Encrypt NIST XTSTestVectors #97 -aes_encrypt_xts:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3":256:0 +aes_encrypt_xts:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3" AES-256-XTS Encrypt NIST XTSTestVectors #98 -aes_encrypt_xts:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c":256:0 +aes_encrypt_xts:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c" AES-256-XTS Encrypt NIST XTSTestVectors #99 -aes_encrypt_xts:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1":256:0 +aes_encrypt_xts:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1" AES-256-XTS Encrypt NIST XTSTestVectors #100 -aes_encrypt_xts:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2":256:0 +aes_encrypt_xts:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2" AES-256-XTS Encrypt NIST XTSTestVectors #101 -aes_encrypt_xts:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d":384:0 +aes_encrypt_xts:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d" AES-256-XTS Encrypt NIST XTSTestVectors #102 -aes_encrypt_xts:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7":384:0 +aes_encrypt_xts:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7" AES-256-XTS Encrypt NIST XTSTestVectors #103 -aes_encrypt_xts:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea":384:0 +aes_encrypt_xts:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea" AES-256-XTS Encrypt NIST XTSTestVectors #104 -aes_encrypt_xts:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa":384:0 +aes_encrypt_xts:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa" AES-256-XTS Encrypt NIST XTSTestVectors #105 -aes_encrypt_xts:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205":384:0 +aes_encrypt_xts:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205" AES-256-XTS Encrypt NIST XTSTestVectors #106 -aes_encrypt_xts:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c":384:0 +aes_encrypt_xts:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c" AES-256-XTS Encrypt NIST XTSTestVectors #107 -aes_encrypt_xts:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb":384:0 +aes_encrypt_xts:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb" AES-256-XTS Encrypt NIST XTSTestVectors #108 -aes_encrypt_xts:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838":384:0 +aes_encrypt_xts:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838" AES-256-XTS Encrypt NIST XTSTestVectors #109 -aes_encrypt_xts:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec":384:0 +aes_encrypt_xts:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec" AES-256-XTS Encrypt NIST XTSTestVectors #110 -aes_encrypt_xts:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3":384:0 +aes_encrypt_xts:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3" AES-256-XTS Encrypt NIST XTSTestVectors #111 -aes_encrypt_xts:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a":384:0 +aes_encrypt_xts:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a" AES-256-XTS Encrypt NIST XTSTestVectors #112 -aes_encrypt_xts:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f":384:0 +aes_encrypt_xts:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f" AES-256-XTS Encrypt NIST XTSTestVectors #113 -aes_encrypt_xts:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c":384:0 +aes_encrypt_xts:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c" AES-256-XTS Encrypt NIST XTSTestVectors #114 -aes_encrypt_xts:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896":384:0 +aes_encrypt_xts:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896" AES-256-XTS Encrypt NIST XTSTestVectors #115 -aes_encrypt_xts:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb":384:0 +aes_encrypt_xts:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb" AES-256-XTS Encrypt NIST XTSTestVectors #116 -aes_encrypt_xts:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92":384:0 +aes_encrypt_xts:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92" AES-256-XTS Encrypt NIST XTSTestVectors #117 -aes_encrypt_xts:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9":384:0 +aes_encrypt_xts:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9" AES-256-XTS Encrypt NIST XTSTestVectors #118 -aes_encrypt_xts:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c":384:0 +aes_encrypt_xts:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c" AES-256-XTS Encrypt NIST XTSTestVectors #119 -aes_encrypt_xts:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691":384:0 +aes_encrypt_xts:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691" AES-256-XTS Encrypt NIST XTSTestVectors #120 -aes_encrypt_xts:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a":384:0 +aes_encrypt_xts:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a" AES-256-XTS Encrypt NIST XTSTestVectors #121 -aes_encrypt_xts:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7":384:0 +aes_encrypt_xts:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7" AES-256-XTS Encrypt NIST XTSTestVectors #122 -aes_encrypt_xts:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f":384:0 +aes_encrypt_xts:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f" AES-256-XTS Encrypt NIST XTSTestVectors #123 -aes_encrypt_xts:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526":384:0 +aes_encrypt_xts:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526" AES-256-XTS Encrypt NIST XTSTestVectors #124 -aes_encrypt_xts:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f":384:0 +aes_encrypt_xts:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f" AES-256-XTS Encrypt NIST XTSTestVectors #125 -aes_encrypt_xts:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8":384:0 +aes_encrypt_xts:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8" AES-256-XTS Encrypt NIST XTSTestVectors #126 -aes_encrypt_xts:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b":384:0 +aes_encrypt_xts:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b" AES-256-XTS Encrypt NIST XTSTestVectors #127 -aes_encrypt_xts:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1":384:0 +aes_encrypt_xts:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1" AES-256-XTS Encrypt NIST XTSTestVectors #128 -aes_encrypt_xts:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe":384:0 +aes_encrypt_xts:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe" AES-256-XTS Encrypt NIST XTSTestVectors #129 -aes_encrypt_xts:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf":384:0 +aes_encrypt_xts:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf" AES-256-XTS Encrypt NIST XTSTestVectors #130 -aes_encrypt_xts:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a":384:0 +aes_encrypt_xts:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a" AES-256-XTS Encrypt NIST XTSTestVectors #131 -aes_encrypt_xts:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c":384:0 +aes_encrypt_xts:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c" AES-256-XTS Encrypt NIST XTSTestVectors #132 -aes_encrypt_xts:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f":384:0 +aes_encrypt_xts:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f" AES-256-XTS Encrypt NIST XTSTestVectors #133 -aes_encrypt_xts:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa":384:0 +aes_encrypt_xts:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa" AES-256-XTS Encrypt NIST XTSTestVectors #134 -aes_encrypt_xts:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8":384:0 +aes_encrypt_xts:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8" AES-256-XTS Encrypt NIST XTSTestVectors #135 -aes_encrypt_xts:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad":384:0 +aes_encrypt_xts:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad" AES-256-XTS Encrypt NIST XTSTestVectors #136 -aes_encrypt_xts:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3":384:0 +aes_encrypt_xts:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3" AES-256-XTS Encrypt NIST XTSTestVectors #137 -aes_encrypt_xts:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97":384:0 +aes_encrypt_xts:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97" AES-256-XTS Encrypt NIST XTSTestVectors #138 -aes_encrypt_xts:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d":384:0 +aes_encrypt_xts:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d" AES-256-XTS Encrypt NIST XTSTestVectors #139 -aes_encrypt_xts:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725":384:0 +aes_encrypt_xts:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725" AES-256-XTS Encrypt NIST XTSTestVectors #140 -aes_encrypt_xts:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4":384:0 +aes_encrypt_xts:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4" AES-256-XTS Encrypt NIST XTSTestVectors #141 -aes_encrypt_xts:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5":384:0 +aes_encrypt_xts:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5" AES-256-XTS Encrypt NIST XTSTestVectors #142 -aes_encrypt_xts:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430":384:0 +aes_encrypt_xts:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430" AES-256-XTS Encrypt NIST XTSTestVectors #143 -aes_encrypt_xts:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8":384:0 +aes_encrypt_xts:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8" AES-256-XTS Encrypt NIST XTSTestVectors #144 -aes_encrypt_xts:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6":384:0 +aes_encrypt_xts:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6" AES-256-XTS Encrypt NIST XTSTestVectors #145 -aes_encrypt_xts:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25":384:0 +aes_encrypt_xts:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25" AES-256-XTS Encrypt NIST XTSTestVectors #146 -aes_encrypt_xts:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa":384:0 +aes_encrypt_xts:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa" AES-256-XTS Encrypt NIST XTSTestVectors #147 -aes_encrypt_xts:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76":384:0 +aes_encrypt_xts:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76" AES-256-XTS Encrypt NIST XTSTestVectors #148 -aes_encrypt_xts:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553":384:0 +aes_encrypt_xts:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553" AES-256-XTS Encrypt NIST XTSTestVectors #149 -aes_encrypt_xts:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562":384:0 +aes_encrypt_xts:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562" AES-256-XTS Encrypt NIST XTSTestVectors #150 -aes_encrypt_xts:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3":384:0 +aes_encrypt_xts:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3" AES-256-XTS Encrypt NIST XTSTestVectors #151 -aes_encrypt_xts:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69":384:0 +aes_encrypt_xts:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69" AES-256-XTS Encrypt NIST XTSTestVectors #152 -aes_encrypt_xts:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9":384:0 +aes_encrypt_xts:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9" AES-256-XTS Encrypt NIST XTSTestVectors #153 -aes_encrypt_xts:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625":384:0 +aes_encrypt_xts:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625" AES-256-XTS Encrypt NIST XTSTestVectors #154 -aes_encrypt_xts:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6":384:0 +aes_encrypt_xts:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6" AES-256-XTS Encrypt NIST XTSTestVectors #155 -aes_encrypt_xts:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b":384:0 +aes_encrypt_xts:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b" AES-256-XTS Encrypt NIST XTSTestVectors #156 -aes_encrypt_xts:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33":384:0 +aes_encrypt_xts:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33" AES-256-XTS Encrypt NIST XTSTestVectors #157 -aes_encrypt_xts:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c":384:0 +aes_encrypt_xts:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c" AES-256-XTS Encrypt NIST XTSTestVectors #158 -aes_encrypt_xts:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394":384:0 +aes_encrypt_xts:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394" AES-256-XTS Encrypt NIST XTSTestVectors #159 -aes_encrypt_xts:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460":384:0 +aes_encrypt_xts:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460" AES-256-XTS Encrypt NIST XTSTestVectors #160 -aes_encrypt_xts:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481":384:0 +aes_encrypt_xts:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481" AES-256-XTS Encrypt NIST XTSTestVectors #161 -aes_encrypt_xts:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc":384:0 +aes_encrypt_xts:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc" AES-256-XTS Encrypt NIST XTSTestVectors #162 -aes_encrypt_xts:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371":384:0 +aes_encrypt_xts:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371" AES-256-XTS Encrypt NIST XTSTestVectors #163 -aes_encrypt_xts:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce":384:0 +aes_encrypt_xts:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce" AES-256-XTS Encrypt NIST XTSTestVectors #164 -aes_encrypt_xts:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed":384:0 +aes_encrypt_xts:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed" AES-256-XTS Encrypt NIST XTSTestVectors #165 -aes_encrypt_xts:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c":384:0 +aes_encrypt_xts:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c" AES-256-XTS Encrypt NIST XTSTestVectors #166 -aes_encrypt_xts:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446":384:0 +aes_encrypt_xts:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446" AES-256-XTS Encrypt NIST XTSTestVectors #167 -aes_encrypt_xts:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e":384:0 +aes_encrypt_xts:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e" AES-256-XTS Encrypt NIST XTSTestVectors #168 -aes_encrypt_xts:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a":384:0 +aes_encrypt_xts:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a" AES-256-XTS Encrypt NIST XTSTestVectors #169 -aes_encrypt_xts:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e":384:0 +aes_encrypt_xts:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e" AES-256-XTS Encrypt NIST XTSTestVectors #170 -aes_encrypt_xts:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e":384:0 +aes_encrypt_xts:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e" AES-256-XTS Encrypt NIST XTSTestVectors #171 -aes_encrypt_xts:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198":384:0 +aes_encrypt_xts:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198" AES-256-XTS Encrypt NIST XTSTestVectors #172 -aes_encrypt_xts:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92":384:0 +aes_encrypt_xts:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92" AES-256-XTS Encrypt NIST XTSTestVectors #173 -aes_encrypt_xts:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a":384:0 +aes_encrypt_xts:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a" AES-256-XTS Encrypt NIST XTSTestVectors #174 -aes_encrypt_xts:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7":384:0 +aes_encrypt_xts:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7" AES-256-XTS Encrypt NIST XTSTestVectors #175 -aes_encrypt_xts:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6":384:0 +aes_encrypt_xts:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6" AES-256-XTS Encrypt NIST XTSTestVectors #176 -aes_encrypt_xts:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3":384:0 +aes_encrypt_xts:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3" AES-256-XTS Encrypt NIST XTSTestVectors #177 -aes_encrypt_xts:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43":384:0 +aes_encrypt_xts:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43" AES-256-XTS Encrypt NIST XTSTestVectors #178 -aes_encrypt_xts:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51":384:0 +aes_encrypt_xts:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51" AES-256-XTS Encrypt NIST XTSTestVectors #179 -aes_encrypt_xts:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81":384:0 +aes_encrypt_xts:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81" AES-256-XTS Encrypt NIST XTSTestVectors #180 -aes_encrypt_xts:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16":384:0 +aes_encrypt_xts:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16" AES-256-XTS Encrypt NIST XTSTestVectors #181 -aes_encrypt_xts:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496":384:0 +aes_encrypt_xts:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496" AES-256-XTS Encrypt NIST XTSTestVectors #182 -aes_encrypt_xts:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd":384:0 +aes_encrypt_xts:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd" AES-256-XTS Encrypt NIST XTSTestVectors #183 -aes_encrypt_xts:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3":384:0 +aes_encrypt_xts:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3" AES-256-XTS Encrypt NIST XTSTestVectors #184 -aes_encrypt_xts:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289":384:0 +aes_encrypt_xts:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289" AES-256-XTS Encrypt NIST XTSTestVectors #185 -aes_encrypt_xts:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30":384:0 +aes_encrypt_xts:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30" AES-256-XTS Encrypt NIST XTSTestVectors #186 -aes_encrypt_xts:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742":384:0 +aes_encrypt_xts:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742" AES-256-XTS Encrypt NIST XTSTestVectors #187 -aes_encrypt_xts:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121":384:0 +aes_encrypt_xts:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121" AES-256-XTS Encrypt NIST XTSTestVectors #188 -aes_encrypt_xts:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5":384:0 +aes_encrypt_xts:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5" AES-256-XTS Encrypt NIST XTSTestVectors #189 -aes_encrypt_xts:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96":384:0 +aes_encrypt_xts:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96" AES-256-XTS Encrypt NIST XTSTestVectors #190 -aes_encrypt_xts:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1":384:0 +aes_encrypt_xts:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1" AES-256-XTS Encrypt NIST XTSTestVectors #191 -aes_encrypt_xts:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb":384:0 +aes_encrypt_xts:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb" AES-256-XTS Encrypt NIST XTSTestVectors #192 -aes_encrypt_xts:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0":384:0 +aes_encrypt_xts:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0" AES-256-XTS Encrypt NIST XTSTestVectors #193 -aes_encrypt_xts:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27":384:0 +aes_encrypt_xts:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27" AES-256-XTS Encrypt NIST XTSTestVectors #194 -aes_encrypt_xts:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4":384:0 +aes_encrypt_xts:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4" AES-256-XTS Encrypt NIST XTSTestVectors #195 -aes_encrypt_xts:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974":384:0 +aes_encrypt_xts:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974" AES-256-XTS Encrypt NIST XTSTestVectors #196 -aes_encrypt_xts:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67":384:0 +aes_encrypt_xts:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67" AES-256-XTS Encrypt NIST XTSTestVectors #197 -aes_encrypt_xts:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5":384:0 +aes_encrypt_xts:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5" AES-256-XTS Encrypt NIST XTSTestVectors #198 -aes_encrypt_xts:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05":384:0 +aes_encrypt_xts:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05" AES-256-XTS Encrypt NIST XTSTestVectors #199 -aes_encrypt_xts:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6":384:0 +aes_encrypt_xts:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6" AES-256-XTS Encrypt NIST XTSTestVectors #200 -aes_encrypt_xts:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06":384:0 +aes_encrypt_xts:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06" AES-256-XTS Encrypt NIST XTSTestVectors #201 -aes_encrypt_xts:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e":384:0 +aes_encrypt_xts:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e" AES-256-XTS Encrypt NIST XTSTestVectors #202 -aes_encrypt_xts:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b":384:0 +aes_encrypt_xts:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b" AES-256-XTS Encrypt NIST XTSTestVectors #203 -aes_encrypt_xts:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181":384:0 +aes_encrypt_xts:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181" AES-256-XTS Encrypt NIST XTSTestVectors #204 -aes_encrypt_xts:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc":384:0 +aes_encrypt_xts:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc" AES-256-XTS Encrypt NIST XTSTestVectors #205 -aes_encrypt_xts:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b":384:0 +aes_encrypt_xts:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b" AES-256-XTS Encrypt NIST XTSTestVectors #206 -aes_encrypt_xts:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d":384:0 +aes_encrypt_xts:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d" AES-256-XTS Encrypt NIST XTSTestVectors #207 -aes_encrypt_xts:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e":384:0 +aes_encrypt_xts:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e" AES-256-XTS Encrypt NIST XTSTestVectors #208 -aes_encrypt_xts:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5":384:0 +aes_encrypt_xts:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5" AES-256-XTS Encrypt NIST XTSTestVectors #209 -aes_encrypt_xts:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480":384:0 +aes_encrypt_xts:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480" AES-256-XTS Encrypt NIST XTSTestVectors #210 -aes_encrypt_xts:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a":384:0 +aes_encrypt_xts:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a" AES-256-XTS Encrypt NIST XTSTestVectors #211 -aes_encrypt_xts:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd":384:0 +aes_encrypt_xts:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd" AES-256-XTS Encrypt NIST XTSTestVectors #212 -aes_encrypt_xts:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d":384:0 +aes_encrypt_xts:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d" AES-256-XTS Encrypt NIST XTSTestVectors #213 -aes_encrypt_xts:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb":384:0 +aes_encrypt_xts:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb" AES-256-XTS Encrypt NIST XTSTestVectors #214 -aes_encrypt_xts:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb":384:0 +aes_encrypt_xts:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb" AES-256-XTS Encrypt NIST XTSTestVectors #215 -aes_encrypt_xts:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf":384:0 +aes_encrypt_xts:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf" AES-256-XTS Encrypt NIST XTSTestVectors #216 -aes_encrypt_xts:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081":384:0 +aes_encrypt_xts:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081" AES-256-XTS Encrypt NIST XTSTestVectors #217 -aes_encrypt_xts:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f":384:0 +aes_encrypt_xts:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f" AES-256-XTS Encrypt NIST XTSTestVectors #218 -aes_encrypt_xts:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb":384:0 +aes_encrypt_xts:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb" AES-256-XTS Encrypt NIST XTSTestVectors #219 -aes_encrypt_xts:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294":384:0 +aes_encrypt_xts:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294" AES-256-XTS Encrypt NIST XTSTestVectors #220 -aes_encrypt_xts:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0":384:0 +aes_encrypt_xts:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0" AES-256-XTS Encrypt NIST XTSTestVectors #221 -aes_encrypt_xts:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d":384:0 +aes_encrypt_xts:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d" AES-256-XTS Encrypt NIST XTSTestVectors #222 -aes_encrypt_xts:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999":384:0 +aes_encrypt_xts:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999" AES-256-XTS Encrypt NIST XTSTestVectors #223 -aes_encrypt_xts:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05":384:0 +aes_encrypt_xts:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05" AES-256-XTS Encrypt NIST XTSTestVectors #224 -aes_encrypt_xts:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f":384:0 +aes_encrypt_xts:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f" AES-256-XTS Encrypt NIST XTSTestVectors #225 -aes_encrypt_xts:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75":384:0 +aes_encrypt_xts:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75" AES-256-XTS Encrypt NIST XTSTestVectors #226 -aes_encrypt_xts:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50":384:0 +aes_encrypt_xts:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50" AES-256-XTS Encrypt NIST XTSTestVectors #227 -aes_encrypt_xts:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c":384:0 +aes_encrypt_xts:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c" AES-256-XTS Encrypt NIST XTSTestVectors #228 -aes_encrypt_xts:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b":384:0 +aes_encrypt_xts:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b" AES-256-XTS Encrypt NIST XTSTestVectors #229 -aes_encrypt_xts:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f":384:0 +aes_encrypt_xts:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f" AES-256-XTS Encrypt NIST XTSTestVectors #230 -aes_encrypt_xts:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39":384:0 +aes_encrypt_xts:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39" AES-256-XTS Encrypt NIST XTSTestVectors #231 -aes_encrypt_xts:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5":384:0 +aes_encrypt_xts:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5" AES-256-XTS Encrypt NIST XTSTestVectors #232 -aes_encrypt_xts:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646":384:0 +aes_encrypt_xts:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646" AES-256-XTS Encrypt NIST XTSTestVectors #233 -aes_encrypt_xts:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575":384:0 +aes_encrypt_xts:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575" AES-256-XTS Encrypt NIST XTSTestVectors #234 -aes_encrypt_xts:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e":384:0 +aes_encrypt_xts:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e" AES-256-XTS Encrypt NIST XTSTestVectors #235 -aes_encrypt_xts:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181":384:0 +aes_encrypt_xts:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181" AES-256-XTS Encrypt NIST XTSTestVectors #236 -aes_encrypt_xts:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac":384:0 +aes_encrypt_xts:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac" AES-256-XTS Encrypt NIST XTSTestVectors #237 -aes_encrypt_xts:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844":384:0 +aes_encrypt_xts:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844" AES-256-XTS Encrypt NIST XTSTestVectors #238 -aes_encrypt_xts:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e":384:0 +aes_encrypt_xts:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e" AES-256-XTS Encrypt NIST XTSTestVectors #239 -aes_encrypt_xts:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832":384:0 +aes_encrypt_xts:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832" AES-256-XTS Encrypt NIST XTSTestVectors #240 -aes_encrypt_xts:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4":384:0 +aes_encrypt_xts:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4" AES-256-XTS Encrypt NIST XTSTestVectors #241 -aes_encrypt_xts:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a":384:0 +aes_encrypt_xts:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a" AES-256-XTS Encrypt NIST XTSTestVectors #242 -aes_encrypt_xts:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424":384:0 +aes_encrypt_xts:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424" AES-256-XTS Encrypt NIST XTSTestVectors #243 -aes_encrypt_xts:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030":384:0 +aes_encrypt_xts:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030" AES-256-XTS Encrypt NIST XTSTestVectors #244 -aes_encrypt_xts:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8":384:0 +aes_encrypt_xts:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8" AES-256-XTS Encrypt NIST XTSTestVectors #245 -aes_encrypt_xts:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff":384:0 +aes_encrypt_xts:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff" AES-256-XTS Encrypt NIST XTSTestVectors #246 -aes_encrypt_xts:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963":384:0 +aes_encrypt_xts:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963" AES-256-XTS Encrypt NIST XTSTestVectors #247 -aes_encrypt_xts:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097":384:0 +aes_encrypt_xts:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097" AES-256-XTS Encrypt NIST XTSTestVectors #248 -aes_encrypt_xts:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9":384:0 +aes_encrypt_xts:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9" AES-256-XTS Encrypt NIST XTSTestVectors #249 -aes_encrypt_xts:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80":384:0 +aes_encrypt_xts:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80" AES-256-XTS Encrypt NIST XTSTestVectors #250 -aes_encrypt_xts:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d":384:0 +aes_encrypt_xts:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d" AES-256-XTS Encrypt NIST XTSTestVectors #251 -aes_encrypt_xts:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff":384:0 +aes_encrypt_xts:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff" AES-256-XTS Encrypt NIST XTSTestVectors #252 -aes_encrypt_xts:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11":384:0 +aes_encrypt_xts:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11" AES-256-XTS Encrypt NIST XTSTestVectors #253 -aes_encrypt_xts:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce":384:0 +aes_encrypt_xts:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce" AES-256-XTS Encrypt NIST XTSTestVectors #254 -aes_encrypt_xts:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf":384:0 +aes_encrypt_xts:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf" AES-256-XTS Encrypt NIST XTSTestVectors #255 -aes_encrypt_xts:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb":384:0 +aes_encrypt_xts:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb" AES-256-XTS Encrypt NIST XTSTestVectors #256 -aes_encrypt_xts:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3":384:0 +aes_encrypt_xts:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3" AES-256-XTS Encrypt NIST XTSTestVectors #257 -aes_encrypt_xts:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686":384:0 +aes_encrypt_xts:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686" AES-256-XTS Encrypt NIST XTSTestVectors #258 -aes_encrypt_xts:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1":384:0 +aes_encrypt_xts:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1" AES-256-XTS Encrypt NIST XTSTestVectors #259 -aes_encrypt_xts:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85":384:0 +aes_encrypt_xts:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85" AES-256-XTS Encrypt NIST XTSTestVectors #260 -aes_encrypt_xts:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77":384:0 +aes_encrypt_xts:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77" AES-256-XTS Encrypt NIST XTSTestVectors #261 -aes_encrypt_xts:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5":384:0 +aes_encrypt_xts:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5" AES-256-XTS Encrypt NIST XTSTestVectors #262 -aes_encrypt_xts:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d":384:0 +aes_encrypt_xts:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d" AES-256-XTS Encrypt NIST XTSTestVectors #263 -aes_encrypt_xts:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8":384:0 +aes_encrypt_xts:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8" AES-256-XTS Encrypt NIST XTSTestVectors #264 -aes_encrypt_xts:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e":384:0 +aes_encrypt_xts:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e" AES-256-XTS Encrypt NIST XTSTestVectors #265 -aes_encrypt_xts:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13":384:0 +aes_encrypt_xts:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13" AES-256-XTS Encrypt NIST XTSTestVectors #266 -aes_encrypt_xts:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79":384:0 +aes_encrypt_xts:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79" AES-256-XTS Encrypt NIST XTSTestVectors #267 -aes_encrypt_xts:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de":384:0 +aes_encrypt_xts:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de" AES-256-XTS Encrypt NIST XTSTestVectors #268 -aes_encrypt_xts:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c":384:0 +aes_encrypt_xts:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c" AES-256-XTS Encrypt NIST XTSTestVectors #269 -aes_encrypt_xts:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058":384:0 +aes_encrypt_xts:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058" AES-256-XTS Encrypt NIST XTSTestVectors #270 -aes_encrypt_xts:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2":384:0 +aes_encrypt_xts:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2" AES-256-XTS Encrypt NIST XTSTestVectors #271 -aes_encrypt_xts:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1":384:0 +aes_encrypt_xts:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1" AES-256-XTS Encrypt NIST XTSTestVectors #272 -aes_encrypt_xts:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3":384:0 +aes_encrypt_xts:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3" AES-256-XTS Encrypt NIST XTSTestVectors #273 -aes_encrypt_xts:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923":384:0 +aes_encrypt_xts:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923" AES-256-XTS Encrypt NIST XTSTestVectors #274 -aes_encrypt_xts:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c":384:0 +aes_encrypt_xts:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c" AES-256-XTS Encrypt NIST XTSTestVectors #275 -aes_encrypt_xts:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06":384:0 +aes_encrypt_xts:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06" AES-256-XTS Encrypt NIST XTSTestVectors #276 -aes_encrypt_xts:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b":384:0 +aes_encrypt_xts:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b" AES-256-XTS Encrypt NIST XTSTestVectors #277 -aes_encrypt_xts:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa":384:0 +aes_encrypt_xts:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa" AES-256-XTS Encrypt NIST XTSTestVectors #278 -aes_encrypt_xts:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf":384:0 +aes_encrypt_xts:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf" AES-256-XTS Encrypt NIST XTSTestVectors #279 -aes_encrypt_xts:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142":384:0 +aes_encrypt_xts:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142" AES-256-XTS Encrypt NIST XTSTestVectors #280 -aes_encrypt_xts:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e":384:0 +aes_encrypt_xts:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e" AES-256-XTS Encrypt NIST XTSTestVectors #281 -aes_encrypt_xts:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6":384:0 +aes_encrypt_xts:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6" AES-256-XTS Encrypt NIST XTSTestVectors #282 -aes_encrypt_xts:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870":384:0 +aes_encrypt_xts:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870" AES-256-XTS Encrypt NIST XTSTestVectors #283 -aes_encrypt_xts:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a":384:0 +aes_encrypt_xts:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a" AES-256-XTS Encrypt NIST XTSTestVectors #284 -aes_encrypt_xts:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788":384:0 +aes_encrypt_xts:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788" AES-256-XTS Encrypt NIST XTSTestVectors #285 -aes_encrypt_xts:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa":384:0 +aes_encrypt_xts:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa" AES-256-XTS Encrypt NIST XTSTestVectors #286 -aes_encrypt_xts:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d":384:0 +aes_encrypt_xts:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d" AES-256-XTS Encrypt NIST XTSTestVectors #287 -aes_encrypt_xts:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa":384:0 +aes_encrypt_xts:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa" AES-256-XTS Encrypt NIST XTSTestVectors #288 -aes_encrypt_xts:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af":384:0 +aes_encrypt_xts:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af" AES-256-XTS Encrypt NIST XTSTestVectors #289 -aes_encrypt_xts:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4":384:0 +aes_encrypt_xts:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4" AES-256-XTS Encrypt NIST XTSTestVectors #290 -aes_encrypt_xts:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8":384:0 +aes_encrypt_xts:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8" AES-256-XTS Encrypt NIST XTSTestVectors #291 -aes_encrypt_xts:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5":384:0 +aes_encrypt_xts:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5" AES-256-XTS Encrypt NIST XTSTestVectors #292 -aes_encrypt_xts:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c":384:0 +aes_encrypt_xts:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c" AES-256-XTS Encrypt NIST XTSTestVectors #293 -aes_encrypt_xts:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799":384:0 +aes_encrypt_xts:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799" AES-256-XTS Encrypt NIST XTSTestVectors #294 -aes_encrypt_xts:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294":384:0 +aes_encrypt_xts:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294" AES-256-XTS Encrypt NIST XTSTestVectors #295 -aes_encrypt_xts:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5":384:0 +aes_encrypt_xts:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5" AES-256-XTS Encrypt NIST XTSTestVectors #296 -aes_encrypt_xts:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79":384:0 +aes_encrypt_xts:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79" AES-256-XTS Encrypt NIST XTSTestVectors #297 -aes_encrypt_xts:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b":384:0 +aes_encrypt_xts:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b" AES-256-XTS Encrypt NIST XTSTestVectors #298 -aes_encrypt_xts:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05":384:0 +aes_encrypt_xts:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05" AES-256-XTS Encrypt NIST XTSTestVectors #299 -aes_encrypt_xts:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3":384:0 +aes_encrypt_xts:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3" AES-256-XTS Encrypt NIST XTSTestVectors #300 -aes_encrypt_xts:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa":384:0 +aes_encrypt_xts:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa" AES-256-XTS Decrypt NIST XTSTestVectors #1 -aes_decrypt_xts:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":256:0 +aes_decrypt_xts:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a" AES-256-XTS Decrypt NIST XTSTestVectors #2 -aes_decrypt_xts:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":256:0 +aes_decrypt_xts:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b" AES-256-XTS Decrypt NIST XTSTestVectors #3 -aes_decrypt_xts:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":256:0 +aes_decrypt_xts:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc" AES-256-XTS Decrypt NIST XTSTestVectors #4 -aes_decrypt_xts:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":256:0 +aes_decrypt_xts:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510" AES-256-XTS Decrypt NIST XTSTestVectors #5 -aes_decrypt_xts:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":256:0 +aes_decrypt_xts:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519" AES-256-XTS Decrypt NIST XTSTestVectors #6 -aes_decrypt_xts:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":256:0 +aes_decrypt_xts:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d" AES-256-XTS Decrypt NIST XTSTestVectors #7 -aes_decrypt_xts:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":256:0 +aes_decrypt_xts:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a" AES-256-XTS Decrypt NIST XTSTestVectors #8 -aes_decrypt_xts:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":256:0 +aes_decrypt_xts:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78" AES-256-XTS Decrypt NIST XTSTestVectors #9 -aes_decrypt_xts:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":256:0 +aes_decrypt_xts:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11" AES-256-XTS Decrypt NIST XTSTestVectors #10 -aes_decrypt_xts:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":256:0 +aes_decrypt_xts:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc" AES-256-XTS Decrypt NIST XTSTestVectors #11 -aes_decrypt_xts:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":256:0 +aes_decrypt_xts:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a" AES-256-XTS Decrypt NIST XTSTestVectors #12 -aes_decrypt_xts:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":256:0 +aes_decrypt_xts:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e" AES-256-XTS Decrypt NIST XTSTestVectors #13 -aes_decrypt_xts:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":256:0 +aes_decrypt_xts:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5" AES-256-XTS Decrypt NIST XTSTestVectors #14 -aes_decrypt_xts:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":256:0 +aes_decrypt_xts:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50" AES-256-XTS Decrypt NIST XTSTestVectors #15 -aes_decrypt_xts:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":256:0 +aes_decrypt_xts:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9" AES-256-XTS Decrypt NIST XTSTestVectors #16 -aes_decrypt_xts:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":256:0 +aes_decrypt_xts:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038" AES-256-XTS Decrypt NIST XTSTestVectors #17 -aes_decrypt_xts:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":256:0 +aes_decrypt_xts:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0" AES-256-XTS Decrypt NIST XTSTestVectors #18 -aes_decrypt_xts:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":256:0 +aes_decrypt_xts:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20" AES-256-XTS Decrypt NIST XTSTestVectors #19 -aes_decrypt_xts:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":256:0 +aes_decrypt_xts:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a" AES-256-XTS Decrypt NIST XTSTestVectors #20 -aes_decrypt_xts:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":256:0 +aes_decrypt_xts:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38" AES-256-XTS Decrypt NIST XTSTestVectors #21 -aes_decrypt_xts:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":256:0 +aes_decrypt_xts:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f" AES-256-XTS Decrypt NIST XTSTestVectors #22 -aes_decrypt_xts:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":256:0 +aes_decrypt_xts:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3" AES-256-XTS Decrypt NIST XTSTestVectors #23 -aes_decrypt_xts:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":256:0 +aes_decrypt_xts:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca" AES-256-XTS Decrypt NIST XTSTestVectors #24 -aes_decrypt_xts:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":256:0 +aes_decrypt_xts:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7" AES-256-XTS Decrypt NIST XTSTestVectors #25 -aes_decrypt_xts:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":256:0 +aes_decrypt_xts:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f" AES-256-XTS Decrypt NIST XTSTestVectors #26 -aes_decrypt_xts:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":256:0 +aes_decrypt_xts:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c" AES-256-XTS Decrypt NIST XTSTestVectors #27 -aes_decrypt_xts:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":256:0 +aes_decrypt_xts:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58" AES-256-XTS Decrypt NIST XTSTestVectors #28 -aes_decrypt_xts:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":256:0 +aes_decrypt_xts:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236" AES-256-XTS Decrypt NIST XTSTestVectors #29 -aes_decrypt_xts:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":256:0 +aes_decrypt_xts:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251" AES-256-XTS Decrypt NIST XTSTestVectors #30 -aes_decrypt_xts:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":256:0 +aes_decrypt_xts:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db" AES-256-XTS Decrypt NIST XTSTestVectors #31 -aes_decrypt_xts:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":256:0 +aes_decrypt_xts:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5" AES-256-XTS Decrypt NIST XTSTestVectors #32 -aes_decrypt_xts:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":256:0 +aes_decrypt_xts:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e" AES-256-XTS Decrypt NIST XTSTestVectors #33 -aes_decrypt_xts:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":256:0 +aes_decrypt_xts:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7" AES-256-XTS Decrypt NIST XTSTestVectors #34 -aes_decrypt_xts:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":256:0 +aes_decrypt_xts:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4" AES-256-XTS Decrypt NIST XTSTestVectors #35 -aes_decrypt_xts:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":256:0 +aes_decrypt_xts:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940" AES-256-XTS Decrypt NIST XTSTestVectors #36 -aes_decrypt_xts:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":256:0 +aes_decrypt_xts:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481" AES-256-XTS Decrypt NIST XTSTestVectors #37 -aes_decrypt_xts:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":256:0 +aes_decrypt_xts:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f" AES-256-XTS Decrypt NIST XTSTestVectors #38 -aes_decrypt_xts:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":256:0 +aes_decrypt_xts:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388" AES-256-XTS Decrypt NIST XTSTestVectors #39 -aes_decrypt_xts:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":256:0 +aes_decrypt_xts:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1" AES-256-XTS Decrypt NIST XTSTestVectors #40 -aes_decrypt_xts:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":256:0 +aes_decrypt_xts:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac" AES-256-XTS Decrypt NIST XTSTestVectors #41 -aes_decrypt_xts:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":256:0 +aes_decrypt_xts:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486" AES-256-XTS Decrypt NIST XTSTestVectors #42 -aes_decrypt_xts:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":256:0 +aes_decrypt_xts:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73" AES-256-XTS Decrypt NIST XTSTestVectors #43 -aes_decrypt_xts:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":256:0 +aes_decrypt_xts:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a" AES-256-XTS Decrypt NIST XTSTestVectors #44 -aes_decrypt_xts:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":256:0 +aes_decrypt_xts:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d" AES-256-XTS Decrypt NIST XTSTestVectors #45 -aes_decrypt_xts:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":256:0 +aes_decrypt_xts:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784" AES-256-XTS Decrypt NIST XTSTestVectors #46 -aes_decrypt_xts:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":256:0 +aes_decrypt_xts:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb" AES-256-XTS Decrypt NIST XTSTestVectors #47 -aes_decrypt_xts:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":256:0 +aes_decrypt_xts:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78" AES-256-XTS Decrypt NIST XTSTestVectors #48 -aes_decrypt_xts:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":256:0 +aes_decrypt_xts:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb" AES-256-XTS Decrypt NIST XTSTestVectors #49 -aes_decrypt_xts:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":256:0 +aes_decrypt_xts:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8" AES-256-XTS Decrypt NIST XTSTestVectors #50 -aes_decrypt_xts:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":256:0 +aes_decrypt_xts:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370" AES-256-XTS Decrypt NIST XTSTestVectors #51 -aes_decrypt_xts:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":256:0 +aes_decrypt_xts:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa" AES-256-XTS Decrypt NIST XTSTestVectors #52 -aes_decrypt_xts:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":256:0 +aes_decrypt_xts:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15" AES-256-XTS Decrypt NIST XTSTestVectors #53 -aes_decrypt_xts:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":256:0 +aes_decrypt_xts:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e" AES-256-XTS Decrypt NIST XTSTestVectors #54 -aes_decrypt_xts:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":256:0 +aes_decrypt_xts:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59" AES-256-XTS Decrypt NIST XTSTestVectors #55 -aes_decrypt_xts:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":256:0 +aes_decrypt_xts:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa" AES-256-XTS Decrypt NIST XTSTestVectors #56 -aes_decrypt_xts:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":256:0 +aes_decrypt_xts:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d" AES-256-XTS Decrypt NIST XTSTestVectors #57 -aes_decrypt_xts:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":256:0 +aes_decrypt_xts:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b" AES-256-XTS Decrypt NIST XTSTestVectors #58 -aes_decrypt_xts:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":256:0 +aes_decrypt_xts:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854" AES-256-XTS Decrypt NIST XTSTestVectors #59 -aes_decrypt_xts:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":256:0 +aes_decrypt_xts:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b" AES-256-XTS Decrypt NIST XTSTestVectors #60 -aes_decrypt_xts:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":256:0 +aes_decrypt_xts:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf" AES-256-XTS Decrypt NIST XTSTestVectors #61 -aes_decrypt_xts:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":256:0 +aes_decrypt_xts:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d" AES-256-XTS Decrypt NIST XTSTestVectors #62 -aes_decrypt_xts:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":256:0 +aes_decrypt_xts:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1" AES-256-XTS Decrypt NIST XTSTestVectors #63 -aes_decrypt_xts:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":256:0 +aes_decrypt_xts:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e" AES-256-XTS Decrypt NIST XTSTestVectors #64 -aes_decrypt_xts:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":256:0 +aes_decrypt_xts:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2" AES-256-XTS Decrypt NIST XTSTestVectors #65 -aes_decrypt_xts:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":256:0 +aes_decrypt_xts:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f" AES-256-XTS Decrypt NIST XTSTestVectors #66 -aes_decrypt_xts:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":256:0 +aes_decrypt_xts:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0" AES-256-XTS Decrypt NIST XTSTestVectors #67 -aes_decrypt_xts:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":256:0 +aes_decrypt_xts:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f" AES-256-XTS Decrypt NIST XTSTestVectors #68 -aes_decrypt_xts:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":256:0 +aes_decrypt_xts:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7" AES-256-XTS Decrypt NIST XTSTestVectors #69 -aes_decrypt_xts:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":256:0 +aes_decrypt_xts:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a" AES-256-XTS Decrypt NIST XTSTestVectors #70 -aes_decrypt_xts:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":256:0 +aes_decrypt_xts:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81" AES-256-XTS Decrypt NIST XTSTestVectors #71 -aes_decrypt_xts:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":256:0 +aes_decrypt_xts:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4" AES-256-XTS Decrypt NIST XTSTestVectors #72 -aes_decrypt_xts:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":256:0 +aes_decrypt_xts:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e" AES-256-XTS Decrypt NIST XTSTestVectors #73 -aes_decrypt_xts:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":256:0 +aes_decrypt_xts:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a" AES-256-XTS Decrypt NIST XTSTestVectors #74 -aes_decrypt_xts:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":256:0 +aes_decrypt_xts:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f" AES-256-XTS Decrypt NIST XTSTestVectors #75 -aes_decrypt_xts:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":256:0 +aes_decrypt_xts:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e" AES-256-XTS Decrypt NIST XTSTestVectors #76 -aes_decrypt_xts:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":256:0 +aes_decrypt_xts:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775" AES-256-XTS Decrypt NIST XTSTestVectors #77 -aes_decrypt_xts:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":256:0 +aes_decrypt_xts:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6" AES-256-XTS Decrypt NIST XTSTestVectors #78 -aes_decrypt_xts:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":256:0 +aes_decrypt_xts:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773" AES-256-XTS Decrypt NIST XTSTestVectors #79 -aes_decrypt_xts:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":256:0 +aes_decrypt_xts:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55" AES-256-XTS Decrypt NIST XTSTestVectors #80 -aes_decrypt_xts:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":256:0 +aes_decrypt_xts:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893" AES-256-XTS Decrypt NIST XTSTestVectors #81 -aes_decrypt_xts:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":256:0 +aes_decrypt_xts:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3" AES-256-XTS Decrypt NIST XTSTestVectors #82 -aes_decrypt_xts:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":256:0 +aes_decrypt_xts:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114" AES-256-XTS Decrypt NIST XTSTestVectors #83 -aes_decrypt_xts:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":256:0 +aes_decrypt_xts:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950" AES-256-XTS Decrypt NIST XTSTestVectors #84 -aes_decrypt_xts:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":256:0 +aes_decrypt_xts:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff" AES-256-XTS Decrypt NIST XTSTestVectors #85 -aes_decrypt_xts:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":256:0 +aes_decrypt_xts:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083" AES-256-XTS Decrypt NIST XTSTestVectors #86 -aes_decrypt_xts:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":256:0 +aes_decrypt_xts:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233" AES-256-XTS Decrypt NIST XTSTestVectors #87 -aes_decrypt_xts:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":256:0 +aes_decrypt_xts:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9" AES-256-XTS Decrypt NIST XTSTestVectors #88 -aes_decrypt_xts:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":256:0 +aes_decrypt_xts:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a" AES-256-XTS Decrypt NIST XTSTestVectors #89 -aes_decrypt_xts:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":256:0 +aes_decrypt_xts:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275" AES-256-XTS Decrypt NIST XTSTestVectors #90 -aes_decrypt_xts:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":256:0 +aes_decrypt_xts:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a" AES-256-XTS Decrypt NIST XTSTestVectors #91 -aes_decrypt_xts:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":256:0 +aes_decrypt_xts:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd" AES-256-XTS Decrypt NIST XTSTestVectors #92 -aes_decrypt_xts:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":256:0 +aes_decrypt_xts:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85" AES-256-XTS Decrypt NIST XTSTestVectors #93 -aes_decrypt_xts:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":256:0 +aes_decrypt_xts:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a" AES-256-XTS Decrypt NIST XTSTestVectors #94 -aes_decrypt_xts:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":256:0 +aes_decrypt_xts:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382" AES-256-XTS Decrypt NIST XTSTestVectors #95 -aes_decrypt_xts:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":256:0 +aes_decrypt_xts:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45" AES-256-XTS Decrypt NIST XTSTestVectors #96 -aes_decrypt_xts:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":256:0 +aes_decrypt_xts:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a" AES-256-XTS Decrypt NIST XTSTestVectors #97 -aes_decrypt_xts:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":256:0 +aes_decrypt_xts:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1" AES-256-XTS Decrypt NIST XTSTestVectors #98 -aes_decrypt_xts:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":256:0 +aes_decrypt_xts:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc" AES-256-XTS Decrypt NIST XTSTestVectors #99 -aes_decrypt_xts:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":256:0 +aes_decrypt_xts:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b" AES-256-XTS Decrypt NIST XTSTestVectors #100 -aes_decrypt_xts:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":256:0 +aes_decrypt_xts:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db" AES-256-XTS Decrypt NIST XTSTestVectors #101 -aes_decrypt_xts:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":384:0 +aes_decrypt_xts:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9" AES-256-XTS Decrypt NIST XTSTestVectors #102 -aes_decrypt_xts:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":384:0 +aes_decrypt_xts:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc" AES-256-XTS Decrypt NIST XTSTestVectors #103 -aes_decrypt_xts:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":384:0 +aes_decrypt_xts:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e" AES-256-XTS Decrypt NIST XTSTestVectors #104 -aes_decrypt_xts:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":384:0 +aes_decrypt_xts:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0" AES-256-XTS Decrypt NIST XTSTestVectors #105 -aes_decrypt_xts:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":384:0 +aes_decrypt_xts:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1" AES-256-XTS Decrypt NIST XTSTestVectors #106 -aes_decrypt_xts:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":384:0 +aes_decrypt_xts:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92" AES-256-XTS Decrypt NIST XTSTestVectors #107 -aes_decrypt_xts:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":384:0 +aes_decrypt_xts:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1" AES-256-XTS Decrypt NIST XTSTestVectors #108 -aes_decrypt_xts:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":384:0 +aes_decrypt_xts:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f" AES-256-XTS Decrypt NIST XTSTestVectors #109 -aes_decrypt_xts:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":384:0 +aes_decrypt_xts:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a" AES-256-XTS Decrypt NIST XTSTestVectors #110 -aes_decrypt_xts:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":384:0 +aes_decrypt_xts:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29" AES-256-XTS Decrypt NIST XTSTestVectors #111 -aes_decrypt_xts:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":384:0 +aes_decrypt_xts:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb" AES-256-XTS Decrypt NIST XTSTestVectors #112 -aes_decrypt_xts:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":384:0 +aes_decrypt_xts:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2" AES-256-XTS Decrypt NIST XTSTestVectors #113 -aes_decrypt_xts:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":384:0 +aes_decrypt_xts:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc" AES-256-XTS Decrypt NIST XTSTestVectors #114 -aes_decrypt_xts:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":384:0 +aes_decrypt_xts:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4" AES-256-XTS Decrypt NIST XTSTestVectors #115 -aes_decrypt_xts:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":384:0 +aes_decrypt_xts:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d" AES-256-XTS Decrypt NIST XTSTestVectors #116 -aes_decrypt_xts:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":384:0 +aes_decrypt_xts:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54" AES-256-XTS Decrypt NIST XTSTestVectors #117 -aes_decrypt_xts:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":384:0 +aes_decrypt_xts:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde" AES-256-XTS Decrypt NIST XTSTestVectors #118 -aes_decrypt_xts:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":384:0 +aes_decrypt_xts:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787" AES-256-XTS Decrypt NIST XTSTestVectors #119 -aes_decrypt_xts:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":384:0 +aes_decrypt_xts:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57" AES-256-XTS Decrypt NIST XTSTestVectors #120 -aes_decrypt_xts:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":384:0 +aes_decrypt_xts:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343" AES-256-XTS Decrypt NIST XTSTestVectors #121 -aes_decrypt_xts:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":384:0 +aes_decrypt_xts:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05" AES-256-XTS Decrypt NIST XTSTestVectors #122 -aes_decrypt_xts:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":384:0 +aes_decrypt_xts:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c" AES-256-XTS Decrypt NIST XTSTestVectors #123 -aes_decrypt_xts:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":384:0 +aes_decrypt_xts:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15" AES-256-XTS Decrypt NIST XTSTestVectors #124 -aes_decrypt_xts:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":384:0 +aes_decrypt_xts:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463" AES-256-XTS Decrypt NIST XTSTestVectors #125 -aes_decrypt_xts:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":384:0 +aes_decrypt_xts:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a" AES-256-XTS Decrypt NIST XTSTestVectors #126 -aes_decrypt_xts:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":384:0 +aes_decrypt_xts:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb" AES-256-XTS Decrypt NIST XTSTestVectors #127 -aes_decrypt_xts:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":384:0 +aes_decrypt_xts:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf" AES-256-XTS Decrypt NIST XTSTestVectors #128 -aes_decrypt_xts:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":384:0 +aes_decrypt_xts:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547" AES-256-XTS Decrypt NIST XTSTestVectors #129 -aes_decrypt_xts:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":384:0 +aes_decrypt_xts:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b" AES-256-XTS Decrypt NIST XTSTestVectors #130 -aes_decrypt_xts:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":384:0 +aes_decrypt_xts:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403" AES-256-XTS Decrypt NIST XTSTestVectors #131 -aes_decrypt_xts:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":384:0 +aes_decrypt_xts:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6" AES-256-XTS Decrypt NIST XTSTestVectors #132 -aes_decrypt_xts:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":384:0 +aes_decrypt_xts:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0" AES-256-XTS Decrypt NIST XTSTestVectors #133 -aes_decrypt_xts:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":384:0 +aes_decrypt_xts:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d" AES-256-XTS Decrypt NIST XTSTestVectors #134 -aes_decrypt_xts:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":384:0 +aes_decrypt_xts:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b" AES-256-XTS Decrypt NIST XTSTestVectors #135 -aes_decrypt_xts:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":384:0 +aes_decrypt_xts:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613" AES-256-XTS Decrypt NIST XTSTestVectors #136 -aes_decrypt_xts:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":384:0 +aes_decrypt_xts:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41" AES-256-XTS Decrypt NIST XTSTestVectors #137 -aes_decrypt_xts:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":384:0 +aes_decrypt_xts:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c" AES-256-XTS Decrypt NIST XTSTestVectors #138 -aes_decrypt_xts:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":384:0 +aes_decrypt_xts:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc" AES-256-XTS Decrypt NIST XTSTestVectors #139 -aes_decrypt_xts:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":384:0 +aes_decrypt_xts:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457" AES-256-XTS Decrypt NIST XTSTestVectors #140 -aes_decrypt_xts:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":384:0 +aes_decrypt_xts:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc" AES-256-XTS Decrypt NIST XTSTestVectors #141 -aes_decrypt_xts:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":384:0 +aes_decrypt_xts:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5" AES-256-XTS Decrypt NIST XTSTestVectors #142 -aes_decrypt_xts:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":384:0 +aes_decrypt_xts:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b" AES-256-XTS Decrypt NIST XTSTestVectors #143 -aes_decrypt_xts:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":384:0 +aes_decrypt_xts:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e" AES-256-XTS Decrypt NIST XTSTestVectors #144 -aes_decrypt_xts:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":384:0 +aes_decrypt_xts:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8" AES-256-XTS Decrypt NIST XTSTestVectors #145 -aes_decrypt_xts:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":384:0 +aes_decrypt_xts:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5" AES-256-XTS Decrypt NIST XTSTestVectors #146 -aes_decrypt_xts:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":384:0 +aes_decrypt_xts:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8" AES-256-XTS Decrypt NIST XTSTestVectors #147 -aes_decrypt_xts:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":384:0 +aes_decrypt_xts:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c" AES-256-XTS Decrypt NIST XTSTestVectors #148 -aes_decrypt_xts:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":384:0 +aes_decrypt_xts:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca" AES-256-XTS Decrypt NIST XTSTestVectors #149 -aes_decrypt_xts:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":384:0 +aes_decrypt_xts:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231" AES-256-XTS Decrypt NIST XTSTestVectors #150 -aes_decrypt_xts:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":384:0 +aes_decrypt_xts:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64" AES-256-XTS Decrypt NIST XTSTestVectors #151 -aes_decrypt_xts:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":384:0 +aes_decrypt_xts:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe" AES-256-XTS Decrypt NIST XTSTestVectors #152 -aes_decrypt_xts:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":384:0 +aes_decrypt_xts:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7" AES-256-XTS Decrypt NIST XTSTestVectors #153 -aes_decrypt_xts:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":384:0 +aes_decrypt_xts:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240" AES-256-XTS Decrypt NIST XTSTestVectors #154 -aes_decrypt_xts:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":384:0 +aes_decrypt_xts:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f" AES-256-XTS Decrypt NIST XTSTestVectors #155 -aes_decrypt_xts:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":384:0 +aes_decrypt_xts:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2" AES-256-XTS Decrypt NIST XTSTestVectors #156 -aes_decrypt_xts:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":384:0 +aes_decrypt_xts:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed" AES-256-XTS Decrypt NIST XTSTestVectors #157 -aes_decrypt_xts:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":384:0 +aes_decrypt_xts:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df" AES-256-XTS Decrypt NIST XTSTestVectors #158 -aes_decrypt_xts:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":384:0 +aes_decrypt_xts:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d" AES-256-XTS Decrypt NIST XTSTestVectors #159 -aes_decrypt_xts:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":384:0 +aes_decrypt_xts:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272" AES-256-XTS Decrypt NIST XTSTestVectors #160 -aes_decrypt_xts:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":384:0 +aes_decrypt_xts:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803" AES-256-XTS Decrypt NIST XTSTestVectors #161 -aes_decrypt_xts:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":384:0 +aes_decrypt_xts:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead" AES-256-XTS Decrypt NIST XTSTestVectors #162 -aes_decrypt_xts:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":384:0 +aes_decrypt_xts:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c" AES-256-XTS Decrypt NIST XTSTestVectors #163 -aes_decrypt_xts:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":384:0 +aes_decrypt_xts:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f" AES-256-XTS Decrypt NIST XTSTestVectors #164 -aes_decrypt_xts:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":384:0 +aes_decrypt_xts:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51" AES-256-XTS Decrypt NIST XTSTestVectors #165 -aes_decrypt_xts:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":384:0 +aes_decrypt_xts:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f" AES-256-XTS Decrypt NIST XTSTestVectors #166 -aes_decrypt_xts:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":384:0 +aes_decrypt_xts:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155" AES-256-XTS Decrypt NIST XTSTestVectors #167 -aes_decrypt_xts:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":384:0 +aes_decrypt_xts:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9" AES-256-XTS Decrypt NIST XTSTestVectors #168 -aes_decrypt_xts:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":384:0 +aes_decrypt_xts:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b" AES-256-XTS Decrypt NIST XTSTestVectors #169 -aes_decrypt_xts:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":384:0 +aes_decrypt_xts:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b" AES-256-XTS Decrypt NIST XTSTestVectors #170 -aes_decrypt_xts:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":384:0 +aes_decrypt_xts:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99" AES-256-XTS Decrypt NIST XTSTestVectors #171 -aes_decrypt_xts:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":384:0 +aes_decrypt_xts:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35" AES-256-XTS Decrypt NIST XTSTestVectors #172 -aes_decrypt_xts:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":384:0 +aes_decrypt_xts:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b" AES-256-XTS Decrypt NIST XTSTestVectors #173 -aes_decrypt_xts:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":384:0 +aes_decrypt_xts:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127" AES-256-XTS Decrypt NIST XTSTestVectors #174 -aes_decrypt_xts:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":384:0 +aes_decrypt_xts:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91" AES-256-XTS Decrypt NIST XTSTestVectors #175 -aes_decrypt_xts:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":384:0 +aes_decrypt_xts:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56" AES-256-XTS Decrypt NIST XTSTestVectors #176 -aes_decrypt_xts:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":384:0 +aes_decrypt_xts:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30" AES-256-XTS Decrypt NIST XTSTestVectors #177 -aes_decrypt_xts:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":384:0 +aes_decrypt_xts:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157" AES-256-XTS Decrypt NIST XTSTestVectors #178 -aes_decrypt_xts:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":384:0 +aes_decrypt_xts:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac" AES-256-XTS Decrypt NIST XTSTestVectors #179 -aes_decrypt_xts:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":384:0 +aes_decrypt_xts:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676" AES-256-XTS Decrypt NIST XTSTestVectors #180 -aes_decrypt_xts:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":384:0 +aes_decrypt_xts:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258" AES-256-XTS Decrypt NIST XTSTestVectors #181 -aes_decrypt_xts:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":384:0 +aes_decrypt_xts:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5" AES-256-XTS Decrypt NIST XTSTestVectors #182 -aes_decrypt_xts:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":384:0 +aes_decrypt_xts:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7" AES-256-XTS Decrypt NIST XTSTestVectors #183 -aes_decrypt_xts:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":384:0 +aes_decrypt_xts:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57" AES-256-XTS Decrypt NIST XTSTestVectors #184 -aes_decrypt_xts:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":384:0 +aes_decrypt_xts:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db" AES-256-XTS Decrypt NIST XTSTestVectors #185 -aes_decrypt_xts:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":384:0 +aes_decrypt_xts:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9" AES-256-XTS Decrypt NIST XTSTestVectors #186 -aes_decrypt_xts:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":384:0 +aes_decrypt_xts:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a" AES-256-XTS Decrypt NIST XTSTestVectors #187 -aes_decrypt_xts:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":384:0 +aes_decrypt_xts:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89" AES-256-XTS Decrypt NIST XTSTestVectors #188 -aes_decrypt_xts:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":384:0 +aes_decrypt_xts:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff" AES-256-XTS Decrypt NIST XTSTestVectors #189 -aes_decrypt_xts:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":384:0 +aes_decrypt_xts:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7" AES-256-XTS Decrypt NIST XTSTestVectors #190 -aes_decrypt_xts:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":384:0 +aes_decrypt_xts:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160" AES-256-XTS Decrypt NIST XTSTestVectors #191 -aes_decrypt_xts:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":384:0 +aes_decrypt_xts:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc" AES-256-XTS Decrypt NIST XTSTestVectors #192 -aes_decrypt_xts:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":384:0 +aes_decrypt_xts:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a" AES-256-XTS Decrypt NIST XTSTestVectors #193 -aes_decrypt_xts:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":384:0 +aes_decrypt_xts:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676" AES-256-XTS Decrypt NIST XTSTestVectors #194 -aes_decrypt_xts:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":384:0 +aes_decrypt_xts:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77" AES-256-XTS Decrypt NIST XTSTestVectors #195 -aes_decrypt_xts:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":384:0 +aes_decrypt_xts:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb" AES-256-XTS Decrypt NIST XTSTestVectors #196 -aes_decrypt_xts:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":384:0 +aes_decrypt_xts:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd" AES-256-XTS Decrypt NIST XTSTestVectors #197 -aes_decrypt_xts:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":384:0 +aes_decrypt_xts:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7" AES-256-XTS Decrypt NIST XTSTestVectors #198 -aes_decrypt_xts:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":384:0 +aes_decrypt_xts:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273" AES-256-XTS Decrypt NIST XTSTestVectors #199 -aes_decrypt_xts:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":384:0 +aes_decrypt_xts:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e" AES-256-XTS Decrypt NIST XTSTestVectors #200 -aes_decrypt_xts:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":384:0 +aes_decrypt_xts:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b" AES-256-XTS Decrypt NIST XTSTestVectors #201 -aes_decrypt_xts:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":384:0 +aes_decrypt_xts:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f" AES-256-XTS Decrypt NIST XTSTestVectors #202 -aes_decrypt_xts:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":384:0 +aes_decrypt_xts:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a" AES-256-XTS Decrypt NIST XTSTestVectors #203 -aes_decrypt_xts:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":384:0 +aes_decrypt_xts:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005" AES-256-XTS Decrypt NIST XTSTestVectors #204 -aes_decrypt_xts:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":384:0 +aes_decrypt_xts:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80" AES-256-XTS Decrypt NIST XTSTestVectors #205 -aes_decrypt_xts:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":384:0 +aes_decrypt_xts:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909" AES-256-XTS Decrypt NIST XTSTestVectors #206 -aes_decrypt_xts:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":384:0 +aes_decrypt_xts:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95" AES-256-XTS Decrypt NIST XTSTestVectors #207 -aes_decrypt_xts:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":384:0 +aes_decrypt_xts:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996" AES-256-XTS Decrypt NIST XTSTestVectors #208 -aes_decrypt_xts:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":384:0 +aes_decrypt_xts:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a" AES-256-XTS Decrypt NIST XTSTestVectors #209 -aes_decrypt_xts:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":384:0 +aes_decrypt_xts:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b" AES-256-XTS Decrypt NIST XTSTestVectors #210 -aes_decrypt_xts:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":384:0 +aes_decrypt_xts:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb" AES-256-XTS Decrypt NIST XTSTestVectors #211 -aes_decrypt_xts:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":384:0 +aes_decrypt_xts:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47" AES-256-XTS Decrypt NIST XTSTestVectors #212 -aes_decrypt_xts:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":384:0 +aes_decrypt_xts:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440" AES-256-XTS Decrypt NIST XTSTestVectors #213 -aes_decrypt_xts:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":384:0 +aes_decrypt_xts:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211" AES-256-XTS Decrypt NIST XTSTestVectors #214 -aes_decrypt_xts:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":384:0 +aes_decrypt_xts:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f" AES-256-XTS Decrypt NIST XTSTestVectors #215 -aes_decrypt_xts:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":384:0 +aes_decrypt_xts:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79" AES-256-XTS Decrypt NIST XTSTestVectors #216 -aes_decrypt_xts:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":384:0 +aes_decrypt_xts:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74" AES-256-XTS Decrypt NIST XTSTestVectors #217 -aes_decrypt_xts:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":384:0 +aes_decrypt_xts:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc" AES-256-XTS Decrypt NIST XTSTestVectors #218 -aes_decrypt_xts:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":384:0 +aes_decrypt_xts:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c" AES-256-XTS Decrypt NIST XTSTestVectors #219 -aes_decrypt_xts:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":384:0 +aes_decrypt_xts:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9" AES-256-XTS Decrypt NIST XTSTestVectors #220 -aes_decrypt_xts:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":384:0 +aes_decrypt_xts:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829" AES-256-XTS Decrypt NIST XTSTestVectors #221 -aes_decrypt_xts:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":384:0 +aes_decrypt_xts:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe" AES-256-XTS Decrypt NIST XTSTestVectors #222 -aes_decrypt_xts:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":384:0 +aes_decrypt_xts:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492" AES-256-XTS Decrypt NIST XTSTestVectors #223 -aes_decrypt_xts:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":384:0 +aes_decrypt_xts:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89" AES-256-XTS Decrypt NIST XTSTestVectors #224 -aes_decrypt_xts:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":384:0 +aes_decrypt_xts:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65" AES-256-XTS Decrypt NIST XTSTestVectors #225 -aes_decrypt_xts:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":384:0 +aes_decrypt_xts:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f" AES-256-XTS Decrypt NIST XTSTestVectors #226 -aes_decrypt_xts:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":384:0 +aes_decrypt_xts:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557" AES-256-XTS Decrypt NIST XTSTestVectors #227 -aes_decrypt_xts:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":384:0 +aes_decrypt_xts:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b" AES-256-XTS Decrypt NIST XTSTestVectors #228 -aes_decrypt_xts:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":384:0 +aes_decrypt_xts:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a" AES-256-XTS Decrypt NIST XTSTestVectors #229 -aes_decrypt_xts:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":384:0 +aes_decrypt_xts:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8" AES-256-XTS Decrypt NIST XTSTestVectors #230 -aes_decrypt_xts:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":384:0 +aes_decrypt_xts:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644" AES-256-XTS Decrypt NIST XTSTestVectors #231 -aes_decrypt_xts:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":384:0 +aes_decrypt_xts:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed" AES-256-XTS Decrypt NIST XTSTestVectors #232 -aes_decrypt_xts:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":384:0 +aes_decrypt_xts:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec" AES-256-XTS Decrypt NIST XTSTestVectors #233 -aes_decrypt_xts:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":384:0 +aes_decrypt_xts:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea" AES-256-XTS Decrypt NIST XTSTestVectors #234 -aes_decrypt_xts:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":384:0 +aes_decrypt_xts:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3" AES-256-XTS Decrypt NIST XTSTestVectors #235 -aes_decrypt_xts:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":384:0 +aes_decrypt_xts:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77" AES-256-XTS Decrypt NIST XTSTestVectors #236 -aes_decrypt_xts:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":384:0 +aes_decrypt_xts:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7" AES-256-XTS Decrypt NIST XTSTestVectors #237 -aes_decrypt_xts:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":384:0 +aes_decrypt_xts:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa" AES-256-XTS Decrypt NIST XTSTestVectors #238 -aes_decrypt_xts:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":384:0 +aes_decrypt_xts:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81" AES-256-XTS Decrypt NIST XTSTestVectors #239 -aes_decrypt_xts:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":384:0 +aes_decrypt_xts:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4" AES-256-XTS Decrypt NIST XTSTestVectors #240 -aes_decrypt_xts:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":384:0 +aes_decrypt_xts:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9" AES-256-XTS Decrypt NIST XTSTestVectors #241 -aes_decrypt_xts:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":384:0 +aes_decrypt_xts:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81" AES-256-XTS Decrypt NIST XTSTestVectors #242 -aes_decrypt_xts:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":384:0 +aes_decrypt_xts:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194" AES-256-XTS Decrypt NIST XTSTestVectors #243 -aes_decrypt_xts:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":384:0 +aes_decrypt_xts:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe" AES-256-XTS Decrypt NIST XTSTestVectors #244 -aes_decrypt_xts:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":384:0 +aes_decrypt_xts:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb" AES-256-XTS Decrypt NIST XTSTestVectors #245 -aes_decrypt_xts:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":384:0 +aes_decrypt_xts:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab" AES-256-XTS Decrypt NIST XTSTestVectors #246 -aes_decrypt_xts:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":384:0 +aes_decrypt_xts:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1" AES-256-XTS Decrypt NIST XTSTestVectors #247 -aes_decrypt_xts:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":384:0 +aes_decrypt_xts:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c" AES-256-XTS Decrypt NIST XTSTestVectors #248 -aes_decrypt_xts:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":384:0 +aes_decrypt_xts:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099" AES-256-XTS Decrypt NIST XTSTestVectors #249 -aes_decrypt_xts:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":384:0 +aes_decrypt_xts:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939" AES-256-XTS Decrypt NIST XTSTestVectors #250 -aes_decrypt_xts:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":384:0 +aes_decrypt_xts:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71" AES-256-XTS Decrypt NIST XTSTestVectors #251 -aes_decrypt_xts:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":384:0 +aes_decrypt_xts:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b" AES-256-XTS Decrypt NIST XTSTestVectors #252 -aes_decrypt_xts:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":384:0 +aes_decrypt_xts:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea" AES-256-XTS Decrypt NIST XTSTestVectors #253 -aes_decrypt_xts:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":384:0 +aes_decrypt_xts:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755" AES-256-XTS Decrypt NIST XTSTestVectors #254 -aes_decrypt_xts:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":384:0 +aes_decrypt_xts:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222" AES-256-XTS Decrypt NIST XTSTestVectors #255 -aes_decrypt_xts:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":384:0 +aes_decrypt_xts:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b" AES-256-XTS Decrypt NIST XTSTestVectors #256 -aes_decrypt_xts:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":384:0 +aes_decrypt_xts:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27" AES-256-XTS Decrypt NIST XTSTestVectors #257 -aes_decrypt_xts:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":384:0 +aes_decrypt_xts:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3" AES-256-XTS Decrypt NIST XTSTestVectors #258 -aes_decrypt_xts:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":384:0 +aes_decrypt_xts:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5" AES-256-XTS Decrypt NIST XTSTestVectors #259 -aes_decrypt_xts:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":384:0 +aes_decrypt_xts:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610" AES-256-XTS Decrypt NIST XTSTestVectors #260 -aes_decrypt_xts:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":384:0 +aes_decrypt_xts:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b" AES-256-XTS Decrypt NIST XTSTestVectors #261 -aes_decrypt_xts:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":384:0 +aes_decrypt_xts:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403" AES-256-XTS Decrypt NIST XTSTestVectors #262 -aes_decrypt_xts:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":384:0 +aes_decrypt_xts:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289" AES-256-XTS Decrypt NIST XTSTestVectors #263 -aes_decrypt_xts:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":384:0 +aes_decrypt_xts:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b" AES-256-XTS Decrypt NIST XTSTestVectors #264 -aes_decrypt_xts:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":384:0 +aes_decrypt_xts:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166" AES-256-XTS Decrypt NIST XTSTestVectors #265 -aes_decrypt_xts:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":384:0 +aes_decrypt_xts:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995" AES-256-XTS Decrypt NIST XTSTestVectors #266 -aes_decrypt_xts:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":384:0 +aes_decrypt_xts:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727" AES-256-XTS Decrypt NIST XTSTestVectors #267 -aes_decrypt_xts:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":384:0 +aes_decrypt_xts:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f" AES-256-XTS Decrypt NIST XTSTestVectors #268 -aes_decrypt_xts:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":384:0 +aes_decrypt_xts:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145" AES-256-XTS Decrypt NIST XTSTestVectors #269 -aes_decrypt_xts:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":384:0 +aes_decrypt_xts:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29" AES-256-XTS Decrypt NIST XTSTestVectors #270 -aes_decrypt_xts:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":384:0 +aes_decrypt_xts:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106" AES-256-XTS Decrypt NIST XTSTestVectors #271 -aes_decrypt_xts:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":384:0 +aes_decrypt_xts:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78" AES-256-XTS Decrypt NIST XTSTestVectors #272 -aes_decrypt_xts:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":384:0 +aes_decrypt_xts:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52" AES-256-XTS Decrypt NIST XTSTestVectors #273 -aes_decrypt_xts:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":384:0 +aes_decrypt_xts:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29" AES-256-XTS Decrypt NIST XTSTestVectors #274 -aes_decrypt_xts:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":384:0 +aes_decrypt_xts:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b" AES-256-XTS Decrypt NIST XTSTestVectors #275 -aes_decrypt_xts:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":384:0 +aes_decrypt_xts:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b" AES-256-XTS Decrypt NIST XTSTestVectors #276 -aes_decrypt_xts:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":384:0 +aes_decrypt_xts:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123" AES-256-XTS Decrypt NIST XTSTestVectors #277 -aes_decrypt_xts:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":384:0 +aes_decrypt_xts:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a" AES-256-XTS Decrypt NIST XTSTestVectors #278 -aes_decrypt_xts:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":384:0 +aes_decrypt_xts:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597" AES-256-XTS Decrypt NIST XTSTestVectors #279 -aes_decrypt_xts:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":384:0 +aes_decrypt_xts:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310" AES-256-XTS Decrypt NIST XTSTestVectors #280 -aes_decrypt_xts:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":384:0 +aes_decrypt_xts:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af" AES-256-XTS Decrypt NIST XTSTestVectors #281 -aes_decrypt_xts:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":384:0 +aes_decrypt_xts:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69" AES-256-XTS Decrypt NIST XTSTestVectors #282 -aes_decrypt_xts:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":384:0 +aes_decrypt_xts:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e" AES-256-XTS Decrypt NIST XTSTestVectors #283 -aes_decrypt_xts:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":384:0 +aes_decrypt_xts:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c" AES-256-XTS Decrypt NIST XTSTestVectors #284 -aes_decrypt_xts:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":384:0 +aes_decrypt_xts:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc" AES-256-XTS Decrypt NIST XTSTestVectors #285 -aes_decrypt_xts:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":384:0 +aes_decrypt_xts:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67" AES-256-XTS Decrypt NIST XTSTestVectors #286 -aes_decrypt_xts:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":384:0 +aes_decrypt_xts:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937" AES-256-XTS Decrypt NIST XTSTestVectors #287 -aes_decrypt_xts:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":384:0 +aes_decrypt_xts:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c" AES-256-XTS Decrypt NIST XTSTestVectors #288 -aes_decrypt_xts:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":384:0 +aes_decrypt_xts:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f" AES-256-XTS Decrypt NIST XTSTestVectors #289 -aes_decrypt_xts:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":384:0 +aes_decrypt_xts:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2" AES-256-XTS Decrypt NIST XTSTestVectors #290 -aes_decrypt_xts:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":384:0 +aes_decrypt_xts:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e" AES-256-XTS Decrypt NIST XTSTestVectors #291 -aes_decrypt_xts:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":384:0 +aes_decrypt_xts:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815" AES-256-XTS Decrypt NIST XTSTestVectors #292 -aes_decrypt_xts:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":384:0 +aes_decrypt_xts:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926" AES-256-XTS Decrypt NIST XTSTestVectors #293 -aes_decrypt_xts:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":384:0 +aes_decrypt_xts:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c" AES-256-XTS Decrypt NIST XTSTestVectors #294 -aes_decrypt_xts:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":384:0 +aes_decrypt_xts:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e" AES-256-XTS Decrypt NIST XTSTestVectors #295 -aes_decrypt_xts:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":384:0 +aes_decrypt_xts:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7" AES-256-XTS Decrypt NIST XTSTestVectors #296 -aes_decrypt_xts:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":384:0 +aes_decrypt_xts:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb" AES-256-XTS Decrypt NIST XTSTestVectors #297 -aes_decrypt_xts:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":384:0 +aes_decrypt_xts:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6" AES-256-XTS Decrypt NIST XTSTestVectors #298 -aes_decrypt_xts:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":384:0 +aes_decrypt_xts:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc" AES-256-XTS Decrypt NIST XTSTestVectors #299 -aes_decrypt_xts:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":384:0 +aes_decrypt_xts:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f" AES-256-XTS Decrypt NIST XTSTestVectors #300 -aes_decrypt_xts:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":384:0 +aes_decrypt_xts:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4" From 425382d4fbf7d62a87fe8f052678f6476d10b948 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Sat, 28 Apr 2018 17:26:25 +0100 Subject: [PATCH 0447/1100] tests: Extend AES-XTS suite Extend the existing test suite for AES-XTS with checks for error reporting and the IEEE P1619/D16 test vectors. --- tests/suites/test_suite_aes.function | 23 +++++ tests/suites/test_suite_aes.xts.data | 143 +++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index a7da0ac7c0..aec4a493d0 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -237,6 +237,29 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ +void aes_crypt_xts_size( int size, int retval ) +{ + mbedtls_aes_xts_context ctx; + const unsigned char *src = NULL; + unsigned char *output = NULL; + unsigned char data_unit[16]; + size_t length = size; + + mbedtls_aes_xts_init( &ctx ); + memset( data_unit, 0x00, sizeof( data_unit ) ); + + + /* Note that this function will most likely crash on failure, as NULL + * parameters will be used. In the passing case, the length check in + * mbedtls_aes_crypt_xts() will prevent any accesses to parameters by + * exiting the function early. */ + TEST_ASSERT( mbedtls_aes_crypt_xts( &ctx, MBEDTLS_AES_ENCRYPT, length, data_unit, src, output ) == retval ); +} +/* END_CASE */ + + + /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ void aes_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, char *hex_src_string, char *hex_dst_string ) diff --git a/tests/suites/test_suite_aes.xts.data b/tests/suites/test_suite_aes.xts.data index 60aa0d3d01..a0a6626854 100644 --- a/tests/suites/test_suite_aes.xts.data +++ b/tests/suites/test_suite_aes.xts.data @@ -1,3 +1,18 @@ +# +# Tests for expected errors (negative tests) +# +AES-128-XTS Encrypt Fail Sector Too Small (by 16 bytes) +aes_crypt_xts_size:0:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + +AES-128-XTS Encrypt Fail Sector Too Small (by 1 byte) +aes_crypt_xts_size:15:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + +AES-128-XTS Encrypt Fail Sector Too Large (by 1 byte) +aes_crypt_xts_size:16777217:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + +AES-128-XTS Encrypt Fail Sector Too Large (by 1 block) +aes_crypt_xts_size:16777232:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + AES-128-XTS Encrypt NIST XTSTestVectors #1 aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63" @@ -4198,3 +4213,131 @@ aes_decrypt_xts:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14f AES-256-XTS Decrypt NIST XTSTestVectors #300 aes_decrypt_xts:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4" +# +# IEEE P1619/D16 Annex B Test Vectors +# http://grouper.ieee.org/groups/1619/email/pdf00086.pdf +# +# 128-bit keys with 32 byte sector +# +AES-128-XTS Encrypt IEEE P1619/D16 Vector 1 +aes_encrypt_xts:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0000000000000000000000000000000000000000000000000000000000000000":"917cf69ebd68b2ec9b9fe9a3eadda692cd43d2f59598ed858c02c2652fbf922e" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 2 +aes_encrypt_xts:"1111111111111111111111111111111122222222222222222222222222222222":"33333333330000000000000000000000":"4444444444444444444444444444444444444444444444444444444444444444":"c454185e6a16936e39334038acef838bfb186fff7480adc4289382ecd6d394f0" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 3 +aes_encrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f022222222222222222222222222222222":"33333333330000000000000000000000":"4444444444444444444444444444444444444444444444444444444444444444":"af85336b597afc1a900b2eb21ec949d292df4c047e0b21532186a5971a227a89" + +# +# 128-bit keys with 512 byte sector +# +AES-128-XTS Encrypt IEEE P1619/D16 Vector 4 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"00000000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 5 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"01000000000000000000000000000000":"27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568":"264d3ca8512194fec312c8c9891f279fefdd608d0c027b60483a3fa811d65ee59d52d9e40ec5672d81532b38b6b089ce951f0f9c35590b8b978d175213f329bb1c2fd30f2f7f30492a61a532a79f51d36f5e31a7c9a12c286082ff7d2394d18f783e1a8e72c722caaaa52d8f065657d2631fd25bfd8e5baad6e527d763517501c68c5edc3cdd55435c532d7125c8614deed9adaa3acade5888b87bef641c4c994c8091b5bcd387f3963fb5bc37aa922fbfe3df4e5b915e6eb514717bdd2a74079a5073f5c4bfd46adf7d282e7a393a52579d11a028da4d9cd9c77124f9648ee383b1ac763930e7162a8d37f350b2f74b8472cf09902063c6b32e8c2d9290cefbd7346d1c779a0df50edcde4531da07b099c638e83a755944df2aef1aa31752fd323dcb710fb4bfbb9d22b925bc3577e1b8949e729a90bbafeacf7f7879e7b1147e28ba0bae940db795a61b15ecf4df8db07b824bb062802cc98a9545bb2aaeed77cb3fc6db15dcd7d80d7d5bc406c4970a3478ada8899b329198eb61c193fb6275aa8ca340344a75a862aebe92eee1ce032fd950b47d7704a3876923b4ad62844bf4a09c4dbe8b4397184b7471360c9564880aedddb9baa4af2e75394b08cd32ff479c57a07d3eab5d54de5f9738b8d27f27a9f0ab11799d7b7ffefb2704c95c6ad12c39f1e867a4b7b1d7818a4b753dfd2a89ccb45e001a03a867b187f225dd" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 6 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"02000000000000000000000000000000":"264d3ca8512194fec312c8c9891f279fefdd608d0c027b60483a3fa811d65ee59d52d9e40ec5672d81532b38b6b089ce951f0f9c35590b8b978d175213f329bb1c2fd30f2f7f30492a61a532a79f51d36f5e31a7c9a12c286082ff7d2394d18f783e1a8e72c722caaaa52d8f065657d2631fd25bfd8e5baad6e527d763517501c68c5edc3cdd55435c532d7125c8614deed9adaa3acade5888b87bef641c4c994c8091b5bcd387f3963fb5bc37aa922fbfe3df4e5b915e6eb514717bdd2a74079a5073f5c4bfd46adf7d282e7a393a52579d11a028da4d9cd9c77124f9648ee383b1ac763930e7162a8d37f350b2f74b8472cf09902063c6b32e8c2d9290cefbd7346d1c779a0df50edcde4531da07b099c638e83a755944df2aef1aa31752fd323dcb710fb4bfbb9d22b925bc3577e1b8949e729a90bbafeacf7f7879e7b1147e28ba0bae940db795a61b15ecf4df8db07b824bb062802cc98a9545bb2aaeed77cb3fc6db15dcd7d80d7d5bc406c4970a3478ada8899b329198eb61c193fb6275aa8ca340344a75a862aebe92eee1ce032fd950b47d7704a3876923b4ad62844bf4a09c4dbe8b4397184b7471360c9564880aedddb9baa4af2e75394b08cd32ff479c57a07d3eab5d54de5f9738b8d27f27a9f0ab11799d7b7ffefb2704c95c6ad12c39f1e867a4b7b1d7818a4b753dfd2a89ccb45e001a03a867b187f225dd":"fa762a3680b76007928ed4a4f49a9456031b704782e65e16cecb54ed7d017b5e18abd67b338e81078f21edb7868d901ebe9c731a7c18b5e6dec1d6a72e078ac9a4262f860beefa14f4e821018272e411a951502b6e79066e84252c3346f3aa62344351a291d4bedc7a07618bdea2af63145cc7a4b8d4070691ae890cd65733e7946e9021a1dffc4c59f159425ee6d50ca9b135fa6162cea18a939838dc000fb386fad086acce5ac07cb2ece7fd580b00cfa5e98589631dc25e8e2a3daf2ffdec26531659912c9d8f7a15e5865ea8fb5816d6207052bd7128cd743c12c8118791a4736811935eb982a532349e31dd401e0b660a568cb1a4711f552f55ded59f1f15bf7196b3ca12a91e488ef59d64f3a02bf45239499ac6176ae321c4a211ec545365971c5d3f4f09d4eb139bfdf2073d33180b21002b65cc9865e76cb24cd92c874c24c18350399a936ab3637079295d76c417776b94efce3a0ef7206b15110519655c956cbd8b2489405ee2b09a6b6eebe0c53790a12a8998378b33a5b71159625f4ba49d2a2fdba59fbf0897bc7aabd8d707dc140a80f0f309f835d3da54ab584e501dfa0ee977fec543f74186a802b9a37adb3e8291eca04d66520d229e60401e7282bef486ae059aa70696e0e305d777140a7a883ecdcb69b9ff938e8a4231864c69ca2c2043bed007ff3e605e014bcf518138dc3a25c5e236171a2d01d6" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 7 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"fd000000000000000000000000000000":"8e41b78c390b5af9d758bb214a67e9f6bf7727b09ac6124084c37611398fa45daad94868600ed391fb1acd4857a95b466e62ef9f4b377244d1c152e7b30d731aad30c716d214b707aed99eb5b5e580b3e887cf7497465651d4b60e6042051da3693c3b78c14489543be8b6ad0ba629565bba202313ba7b0d0c94a3252b676f46cc02ce0f8a7d34c0ed229129673c1f61aed579d08a9203a25aac3a77e9db60267996db38df637356d9dcd1632e369939f2a29d89345c66e05066f1a3677aef18dea4113faeb629e46721a66d0a7e785d3e29af2594eb67dfa982affe0aac058f6e15864269b135418261fc3afb089472cf68c45dd7f231c6249ba0255e1e033833fc4d00a3fe02132d7bc3873614b8aee34273581ea0325c81f0270affa13641d052d36f0757d484014354d02d6883ca15c24d8c3956b1bd027bcf41f151fd8023c5340e5606f37e90fdb87c86fb4fa634b3718a30bace06a66eaf8f63c4aa3b637826a87fe8cfa44282e92cb1615af3a28e53bc74c7cba1a0977be9065d0c1a5dec6c54ae38d37f37aa35283e048e5530a85c4e7a29d7b92ec0c3169cdf2a805c7604bce60049b9fb7b8eaac10f51ae23794ceba68bb58112e293b9b692ca721b37c662f8574ed4dba6f88e170881c82cddc1034a0ca7e284bf0962b6b26292d836fa9f73c1ac770eef0f2d3a1eaf61d3e03555fd424eedd67e18a18094f888":"d55f684f81f4426e9fde92a5ff02df2ac896af63962888a97910c1379e20b0a3b1db613fb7fe2e07004329ea5c22bfd33e3dbe4cf58cc608c2c26c19a2e2fe22f98732c2b5cb844cc6c0702d91e1d50fc4382a7eba5635cd602432a2306ac4ce82f8d70c8d9bc15f918fe71e74c622d5cf71178bf6e0b9cc9f2b41dd8dbe441c41cd0c73a6dc47a348f6702f9d0e9b1b1431e948e299b9ec2272ab2c5f0c7be86affa5dec87a0bee81d3d50007edaa2bcfccb35605155ff36ed8edd4a40dcd4b243acd11b2b987bdbfaf91a7cac27e9c5aea525ee53de7b2d3332c8644402b823e94a7db26276d2d23aa07180f76b4fd29b9c0823099c9d62c519880aee7e9697617c1497d47bf3e571950311421b6b734d38b0db91eb85331b91ea9f61530f54512a5a52a4bad589eb69781d537f23297bb459bdad2948a29e1550bf4787e0be95bb173cf5fab17dab7a13a052a63453d97ccec1a321954886b7a1299faaeecae35c6eaaca753b041b5e5f093bf83397fd21dd6b3012066fcc058cc32c3b09d7562dee29509b5839392c9ff05f51f3166aaac4ac5f238038a3045e6f72e48ef0fe8bc675e82c318a268e43970271bf119b81bf6a982746554f84e72b9f00280a320a08142923c23c883423ff949827f29bbacdc1ccdb04938ce6098c95ba6b32528f4ef78eed778b2e122ddfd1cbdd11d1c0a6783e011fc536d63d053260637" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 8 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"fe000000000000000000000000000000":"d55f684f81f4426e9fde92a5ff02df2ac896af63962888a97910c1379e20b0a3b1db613fb7fe2e07004329ea5c22bfd33e3dbe4cf58cc608c2c26c19a2e2fe22f98732c2b5cb844cc6c0702d91e1d50fc4382a7eba5635cd602432a2306ac4ce82f8d70c8d9bc15f918fe71e74c622d5cf71178bf6e0b9cc9f2b41dd8dbe441c41cd0c73a6dc47a348f6702f9d0e9b1b1431e948e299b9ec2272ab2c5f0c7be86affa5dec87a0bee81d3d50007edaa2bcfccb35605155ff36ed8edd4a40dcd4b243acd11b2b987bdbfaf91a7cac27e9c5aea525ee53de7b2d3332c8644402b823e94a7db26276d2d23aa07180f76b4fd29b9c0823099c9d62c519880aee7e9697617c1497d47bf3e571950311421b6b734d38b0db91eb85331b91ea9f61530f54512a5a52a4bad589eb69781d537f23297bb459bdad2948a29e1550bf4787e0be95bb173cf5fab17dab7a13a052a63453d97ccec1a321954886b7a1299faaeecae35c6eaaca753b041b5e5f093bf83397fd21dd6b3012066fcc058cc32c3b09d7562dee29509b5839392c9ff05f51f3166aaac4ac5f238038a3045e6f72e48ef0fe8bc675e82c318a268e43970271bf119b81bf6a982746554f84e72b9f00280a320a08142923c23c883423ff949827f29bbacdc1ccdb04938ce6098c95ba6b32528f4ef78eed778b2e122ddfd1cbdd11d1c0a6783e011fc536d63d053260637":"72efc1ebfe1ee25975a6eb3aa8589dda2b261f1c85bdab442a9e5b2dd1d7c3957a16fc08e526d4b1223f1b1232a11af274c3d70dac57f83e0983c498f1a6f1aecb021c3e70085a1e527f1ce41ee5911a82020161529cd82773762daf5459de94a0a82adae7e1703c808543c29ed6fb32d9e004327c1355180c995a07741493a09c21ba01a387882da4f62534b87bb15d60d197201c0fd3bf30c1500a3ecfecdd66d8721f90bcc4c17ee925c61b0a03727a9c0d5f5ca462fbfa0af1c2513a9d9d4b5345bd27a5f6e653f751693e6b6a2b8ead57d511e00e58c45b7b8d005af79288f5c7c22fd4f1bf7a898b03a5634c6a1ae3f9fae5de4f296a2896b23e7ed43ed14fa5a2803f4d28f0d3ffcf24757677aebdb47bb388378708948a8d4126ed1839e0da29a537a8c198b3c66ab00712dd261674bf45a73d67f76914f830ca014b65596f27e4cf62de66125a5566df9975155628b400fbfb3a29040ed50faffdbb18aece7c5c44693260aab386c0a37b11b114f1c415aebb653be468179428d43a4d8bc3ec38813eca30a13cf1bb18d524f1992d44d8b1a42ea30b22e6c95b199d8d182f8840b09d059585c31ad691fa0619ff038aca2c39a943421157361717c49d322028a74648113bd8c9d7ec77cf3c89c1ec8718ceff8516d96b34c3c614f10699c9abc4ed0411506223bea16af35c883accdbe1104eef0cfdb54e12fb230a" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 9 +aes_encrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"ff000000000000000000000000000000":"72efc1ebfe1ee25975a6eb3aa8589dda2b261f1c85bdab442a9e5b2dd1d7c3957a16fc08e526d4b1223f1b1232a11af274c3d70dac57f83e0983c498f1a6f1aecb021c3e70085a1e527f1ce41ee5911a82020161529cd82773762daf5459de94a0a82adae7e1703c808543c29ed6fb32d9e004327c1355180c995a07741493a09c21ba01a387882da4f62534b87bb15d60d197201c0fd3bf30c1500a3ecfecdd66d8721f90bcc4c17ee925c61b0a03727a9c0d5f5ca462fbfa0af1c2513a9d9d4b5345bd27a5f6e653f751693e6b6a2b8ead57d511e00e58c45b7b8d005af79288f5c7c22fd4f1bf7a898b03a5634c6a1ae3f9fae5de4f296a2896b23e7ed43ed14fa5a2803f4d28f0d3ffcf24757677aebdb47bb388378708948a8d4126ed1839e0da29a537a8c198b3c66ab00712dd261674bf45a73d67f76914f830ca014b65596f27e4cf62de66125a5566df9975155628b400fbfb3a29040ed50faffdbb18aece7c5c44693260aab386c0a37b11b114f1c415aebb653be468179428d43a4d8bc3ec38813eca30a13cf1bb18d524f1992d44d8b1a42ea30b22e6c95b199d8d182f8840b09d059585c31ad691fa0619ff038aca2c39a943421157361717c49d322028a74648113bd8c9d7ec77cf3c89c1ec8718ceff8516d96b34c3c614f10699c9abc4ed0411506223bea16af35c883accdbe1104eef0cfdb54e12fb230a":"3260ae8dad1f4a32c5cafe3ab0eb95549d461a67ceb9e5aa2d3afb62dece0553193ba50c75be251e08d1d08f1088576c7efdfaaf3f459559571e12511753b07af073f35da06af0ce0bbf6b8f5ccc5cea500ec1b211bd51f63b606bf6528796ca12173ba39b8935ee44ccce646f90a45bf9ccc567f0ace13dc2d53ebeedc81f58b2e41179dddf0d5a5c42f5d8506c1a5d2f8f59f3ea873cbcd0eec19acbf325423bd3dcb8c2b1bf1d1eaed0eba7f0698e4314fbeb2f1566d1b9253008cbccf45a2b0d9c5c9c21474f4076e02be26050b99dee4fd68a4cf890e496e4fcae7b70f94ea5a9062da0daeba1993d2ccd1dd3c244b8428801495a58b216547e7e847c46d1d756377b6242d2e5fb83bf752b54e0df71e889f3a2bb0f4c10805bf3c590376e3c24e22ff57f7fa965577375325cea5d920db94b9c336b455f6e894c01866fe9fbb8c8d3f70a2957285f6dfb5dcd8cbf54782f8fe7766d4723819913ac773421e3a31095866bad22c86a6036b2518b2059b4229d18c8c2ccbdf906c6cc6e82464ee57bddb0bebcb1dc645325bfb3e665ef7251082c88ebb1cf203bd779fdd38675713c8daadd17e1cabee432b09787b6ddf3304e38b731b45df5df51b78fcfb3d32466028d0ba36555e7e11ab0ee0666061d1645d962444bc47a38188930a84b4d561395c73c087021927ca638b7afc8a8679ccb84c26555440ec7f10445cd" + +# +# 256-bit keys with 512 byte sector +# +AES-256-XTS Encrypt IEEE P1619/D16 Vector 10 +aes_encrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ff000000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"1c3b3a102f770386e4836c99e370cf9bea00803f5e482357a4ae12d414a3e63b5d31e276f8fe4a8d66b317f9ac683f44680a86ac35adfc3345befecb4bb188fd5776926c49a3095eb108fd1098baec70aaa66999a72a82f27d848b21d4a741b0c5cd4d5fff9dac89aeba122961d03a757123e9870f8acf1000020887891429ca2a3e7a7d7df7b10355165c8b9a6d0a7de8b062c4500dc4cd120c0f7418dae3d0b5781c34803fa75421c790dfe1de1834f280d7667b327f6c8cd7557e12ac3a0f93ec05c52e0493ef31a12d3d9260f79a289d6a379bc70c50841473d1a8cc81ec583e9645e07b8d9670655ba5bbcfecc6dc3966380ad8fecb17b6ba02469a020a84e18e8f84252070c13e9f1f289be54fbc481457778f616015e1327a02b140f1505eb309326d68378f8374595c849d84f4c333ec4423885143cb47bd71c5edae9be69a2ffeceb1bec9de244fbe15992b11b77c040f12bd8f6a975a44a0f90c29a9abc3d4d893927284c58754cce294529f8614dcd2aba991925fedc4ae74ffac6e333b93eb4aff0479da9a410e4450e0dd7ae4c6e2910900575da401fc07059f645e8b7e9bfdef33943054ff84011493c27b3429eaedb4ed5376441a77ed43851ad77f16f541dfd269d50d6a5f14fb0aab1cbb4c1550be97f7ab4066193c4caa773dad38014bd2092fa755c824bb5e54c4f36ffda9fcea70b9c6e693e148c151" + +AES-256-XTS Encrypt IEEE P1619/D16 Vector 11 +aes_encrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffff0000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"77a31251618a15e6b92d1d66dffe7b50b50bad552305ba0217a610688eff7e11e1d0225438e093242d6db274fde801d4cae06f2092c728b2478559df58e837c2469ee4a4fa794e4bbc7f39bc026e3cb72c33b0888f25b4acf56a2a9804f1ce6d3d6e1dc6ca181d4b546179d55544aa7760c40d06741539c7e3cd9d2f6650b2013fd0eeb8c2b8e3d8d240ccae2d4c98320a7442e1c8d75a42d6e6cfa4c2eca1798d158c7aecdf82490f24bb9b38e108bcda12c3faf9a21141c3613b58367f922aaa26cd22f23d708dae699ad7cb40a8ad0b6e2784973dcb605684c08b8d6998c69aac049921871ebb65301a4619ca80ecb485a31d744223ce8ddc2394828d6a80470c092f5ba413c3378fa6054255c6f9df4495862bbb3287681f931b687c888abf844dfc8fc28331e579928cd12bd2390ae123cf03818d14dedde5c0c24c8ab018bfca75ca096f2d531f3d1619e785f1ada437cab92e980558b3dce1474afb75bfedbf8ff54cb2618e0244c9ac0d3c66fb51598cd2db11f9be39791abe447c63094f7c453b7ff87cb5bb36b7c79efb0872d17058b83b15ab0866ad8a58656c5a7e20dbdf308b2461d97c0ec0024a2715055249cf3b478ddd4740de654f75ca686e0d7345c69ed50cdc2a8b332b1f8824108ac937eb050585608ee734097fc09054fbff89eeaeea791f4a7ab1f9868294a4f9e27b42af8100cb9d59cef9645803" + +AES-256-XTS Encrypt IEEE P1619/D16 Vector 12 +aes_encrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffff00000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"e387aaa58ba483afa7e8eb469778317ecf4cf573aa9d4eac23f2cdf914e4e200a8b490e42ee646802dc6ee2b471b278195d60918ececb44bf79966f83faba0499298ebc699c0c8634715a320bb4f075d622e74c8c932004f25b41e361025b5a87815391f6108fc4afa6a05d9303c6ba68a128a55705d415985832fdeaae6c8e19110e84d1b1f199a2692119edc96132658f09da7c623efcec712537a3d94c0bf5d7e352ec94ae5797fdb377dc1551150721adf15bd26a8efc2fcaad56881fa9e62462c28f30ae1ceaca93c345cf243b73f542e2074a705bd2643bb9f7cc79bb6e7091ea6e232df0f9ad0d6cf502327876d82207abf2115cdacf6d5a48f6c1879a65b115f0f8b3cb3c59d15dd8c769bc014795a1837f3901b5845eb491adfefe097b1fa30a12fc1f65ba22905031539971a10f2f36c321bb51331cdefb39e3964c7ef079994f5b69b2edd83a71ef549971ee93f44eac3938fcdd61d01fa71799da3a8091c4c48aa9ed263ff0749df95d44fef6a0bb578ec69456aa5408ae32c7af08ad7ba8921287e3bbee31b767be06a0e705c864a769137df28292283ea81a2480241b44d9921cdbec1bc28dc1fda114bd8e5217ac9d8ebafa720e9da4f9ace231cc949e5b96fe76ffc21063fddc83a6b8679c00d35e09576a875305bed5f36ed242c8900dd1fa965bc950dfce09b132263a1eef52dd6888c309f5a7d712826" + +AES-256-XTS Encrypt IEEE P1619/D16 Vector 13 +aes_encrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffffff000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"bf53d2dade78e822a4d949a9bc6766b01b06a8ef70d26748c6a7fc36d80ae4c5520f7c4ab0ac8544424fa405162fef5a6b7f229498063618d39f0003cb5fb8d1c86b643497da1ff945c8d3bedeca4f479702a7a735f043ddb1d6aaade3c4a0ac7ca7f3fa5279bef56f82cd7a2f38672e824814e10700300a055e1630b8f1cb0e919f5e942010a416e2bf48cb46993d3cb6a51c19bacf864785a00bc2ecff15d350875b246ed53e68be6f55bd7e05cfc2b2ed6432198a6444b6d8c247fab941f569768b5c429366f1d3f00f0345b96123d56204c01c63b22ce78baf116e525ed90fdea39fa469494d3866c31e05f295ff21fea8d4e6e13d67e47ce722e9698a1c1048d68ebcde76b86fcf976eab8aa9790268b7068e017a8b9b749409514f1053027fd16c3786ea1bac5f15cb79711ee2abe82f5cf8b13ae73030ef5b9e4457e75d1304f988d62dd6fc4b94ed38ba831da4b7634971b6cd8ec325d9c61c00f1df73627ed3745a5e8489f3a95c69639c32cd6e1d537a85f75cc844726e8a72fc0077ad22000f1d5078f6b866318c668f1ad03d5a5fced5219f2eabbd0aa5c0f460d183f04404a0d6f469558e81fab24a167905ab4c7878502ad3e38fdbe62a41556cec37325759533ce8f25f367c87bb5578d667ae93f9e2fd99bcbc5f2fbba88cf6516139420fcff3b7361d86322c4bd84c82f335abb152c4a93411373aaa8220" + +AES-256-XTS Encrypt IEEE P1619/D16 Vector 14 +aes_encrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffffffff0000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"64497e5a831e4a932c09be3e5393376daa599548b816031d224bbf50a818ed2350eae7e96087c8a0db51ad290bd00c1ac1620857635bf246c176ab463be30b808da548081ac847b158e1264be25bb0910bbc92647108089415d45fab1b3d2604e8a8eff1ae4020cfa39936b66827b23f371b92200be90251e6d73c5f86de5fd4a950781933d79a28272b782a2ec313efdfcc0628f43d744c2dc2ff3dcb66999b50c7ca895b0c64791eeaa5f29499fb1c026f84ce5b5c72ba1083cddb5ce45434631665c333b60b11593fb253c5179a2c8db813782a004856a1653011e93fb6d876c18366dd8683f53412c0c180f9c848592d593f8609ca736317d356e13e2bff3a9f59cd9aeb19cd482593d8c46128bb32423b37a9adfb482b99453fbe25a41bf6feb4aa0bef5ed24bf73c762978025482c13115e4015aac992e5613a3b5c2f685b84795cb6e9b2656d8c88157e52c42f978d8634c43d06fea928f2822e465aa6576e9bf419384506cc3ce3c54ac1a6f67dc66f3b30191e698380bc999b05abce19dc0c6dcc2dd001ec535ba18deb2df1a101023108318c75dc98611a09dc48a0acdec676fabdf222f07e026f059b672b56e5cbc8e1d21bbd867dd927212054681d70ea737134cdfce93b6f82ae22423274e58a0821cc5502e2d0ab4585e94de6975be5e0b4efce51cd3e70c25a1fbbbd609d273ad5b0d59631c531f6a0a57b9" + +# +# 128-bit keys with sector size not evenly divisible by 16 bytes +# +AES-128-XTS Encrypt IEEE P1619/D16 Vector 15 +aes_encrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f10":"6c1625db4671522d3d7599601de7ca09ed" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 16 +aes_encrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f1011":"d069444b7a7e0cab09e24447d24deb1fedbf" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 17 +aes_encrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f101112":"e5df1351c0544ba1350b3363cd8ef4beedbf9d" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 18 +aes_encrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f10111213":"9d84c813f719aa2c7be3f66171c7c5c2edbf9dac" + +AES-128-XTS Encrypt IEEE P1619/D16 Vector 19 +aes_encrypt_xts:"e0e1e2e3e4e5e6e7e8e9eaebecedeeefc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"21436587a90000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"38b45812ef43a05bd957e545907e223b954ab4aaf088303ad910eadf14b42be68b2461149d8c8ba85f992be970bc621f1b06573f63e867bf5875acafa04e42ccbd7bd3c2a0fb1fff791ec5ec36c66ae4ac1e806d81fbf709dbe29e471fad38549c8e66f5345d7c1eb94f405d1ec785cc6f6a68f6254dd8339f9d84057e01a17741990482999516b5611a38f41bb6478e6f173f320805dd71b1932fc333cb9ee39936beea9ad96fa10fb4112b901734ddad40bc1878995f8e11aee7d141a2f5d48b7a4e1e7f0b2c04830e69a4fd1378411c2f287edf48c6c4e5c247a19680f7fe41cefbd49b582106e3616cbbe4dfb2344b2ae9519391f3e0fb4922254b1d6d2d19c6d4d537b3a26f3bcc51588b32f3eca0829b6a5ac72578fb814fb43cf80d64a233e3f997a3f02683342f2b33d25b492536b93becb2f5e1a8b82f5b883342729e8ae09d16938841a21a97fb543eea3bbff59f13c1a18449e398701c1ad51648346cbc04c27bb2da3b93a1372ccae548fb53bee476f9e9c91773b1bb19828394d55d3e1a20ed69113a860b6829ffa847224604435070221b257e8dff783615d2cae4803a93aa4334ab482a0afac9c0aeda70b45a481df5dec5df8cc0f423c77a5fd46cd312021d4b438862419a791be03bb4d97c0e59578542531ba466a83baf92cefc151b5cc1611a167893819b63fb8a6b18e86de60290fa72b797b0ce59f3" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 1 +aes_decrypt_xts:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0000000000000000000000000000000000000000000000000000000000000000":"917cf69ebd68b2ec9b9fe9a3eadda692cd43d2f59598ed858c02c2652fbf922e" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 2 +aes_decrypt_xts:"1111111111111111111111111111111122222222222222222222222222222222":"33333333330000000000000000000000":"4444444444444444444444444444444444444444444444444444444444444444":"c454185e6a16936e39334038acef838bfb186fff7480adc4289382ecd6d394f0" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 3 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"00000000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 4 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"00000000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 5 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"01000000000000000000000000000000":"27a7479befa1d476489f308cd4cfa6e2a96e4bbe3208ff25287dd3819616e89cc78cf7f5e543445f8333d8fa7f56000005279fa5d8b5e4ad40e736ddb4d35412328063fd2aab53e5ea1e0a9f332500a5df9487d07a5c92cc512c8866c7e860ce93fdf166a24912b422976146ae20ce846bb7dc9ba94a767aaef20c0d61ad02655ea92dc4c4e41a8952c651d33174be51a10c421110e6d81588ede82103a252d8a750e8768defffed9122810aaeb99f9172af82b604dc4b8e51bcb08235a6f4341332e4ca60482a4ba1a03b3e65008fc5da76b70bf1690db4eae29c5f1badd03c5ccf2a55d705ddcd86d449511ceb7ec30bf12b1fa35b913f9f747a8afd1b130e94bff94effd01a91735ca1726acd0b197c4e5b03393697e126826fb6bbde8ecc1e08298516e2c9ed03ff3c1b7860f6de76d4cecd94c8119855ef5297ca67e9f3e7ff72b1e99785ca0a7e7720c5b36dc6d72cac9574c8cbbc2f801e23e56fd344b07f22154beba0f08ce8891e643ed995c94d9a69c9f1b5f499027a78572aeebd74d20cc39881c213ee770b1010e4bea718846977ae119f7a023ab58cca0ad752afe656bb3c17256a9f6e9bf19fdd5a38fc82bbe872c5539edb609ef4f79c203ebb140f2e583cb2ad15b4aa5b655016a8449277dbd477ef2c8d6c017db738b18deb4a427d1923ce3ff262735779a418f20a282df920147beabe421ee5319d0568":"264d3ca8512194fec312c8c9891f279fefdd608d0c027b60483a3fa811d65ee59d52d9e40ec5672d81532b38b6b089ce951f0f9c35590b8b978d175213f329bb1c2fd30f2f7f30492a61a532a79f51d36f5e31a7c9a12c286082ff7d2394d18f783e1a8e72c722caaaa52d8f065657d2631fd25bfd8e5baad6e527d763517501c68c5edc3cdd55435c532d7125c8614deed9adaa3acade5888b87bef641c4c994c8091b5bcd387f3963fb5bc37aa922fbfe3df4e5b915e6eb514717bdd2a74079a5073f5c4bfd46adf7d282e7a393a52579d11a028da4d9cd9c77124f9648ee383b1ac763930e7162a8d37f350b2f74b8472cf09902063c6b32e8c2d9290cefbd7346d1c779a0df50edcde4531da07b099c638e83a755944df2aef1aa31752fd323dcb710fb4bfbb9d22b925bc3577e1b8949e729a90bbafeacf7f7879e7b1147e28ba0bae940db795a61b15ecf4df8db07b824bb062802cc98a9545bb2aaeed77cb3fc6db15dcd7d80d7d5bc406c4970a3478ada8899b329198eb61c193fb6275aa8ca340344a75a862aebe92eee1ce032fd950b47d7704a3876923b4ad62844bf4a09c4dbe8b4397184b7471360c9564880aedddb9baa4af2e75394b08cd32ff479c57a07d3eab5d54de5f9738b8d27f27a9f0ab11799d7b7ffefb2704c95c6ad12c39f1e867a4b7b1d7818a4b753dfd2a89ccb45e001a03a867b187f225dd" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 6 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"02000000000000000000000000000000":"264d3ca8512194fec312c8c9891f279fefdd608d0c027b60483a3fa811d65ee59d52d9e40ec5672d81532b38b6b089ce951f0f9c35590b8b978d175213f329bb1c2fd30f2f7f30492a61a532a79f51d36f5e31a7c9a12c286082ff7d2394d18f783e1a8e72c722caaaa52d8f065657d2631fd25bfd8e5baad6e527d763517501c68c5edc3cdd55435c532d7125c8614deed9adaa3acade5888b87bef641c4c994c8091b5bcd387f3963fb5bc37aa922fbfe3df4e5b915e6eb514717bdd2a74079a5073f5c4bfd46adf7d282e7a393a52579d11a028da4d9cd9c77124f9648ee383b1ac763930e7162a8d37f350b2f74b8472cf09902063c6b32e8c2d9290cefbd7346d1c779a0df50edcde4531da07b099c638e83a755944df2aef1aa31752fd323dcb710fb4bfbb9d22b925bc3577e1b8949e729a90bbafeacf7f7879e7b1147e28ba0bae940db795a61b15ecf4df8db07b824bb062802cc98a9545bb2aaeed77cb3fc6db15dcd7d80d7d5bc406c4970a3478ada8899b329198eb61c193fb6275aa8ca340344a75a862aebe92eee1ce032fd950b47d7704a3876923b4ad62844bf4a09c4dbe8b4397184b7471360c9564880aedddb9baa4af2e75394b08cd32ff479c57a07d3eab5d54de5f9738b8d27f27a9f0ab11799d7b7ffefb2704c95c6ad12c39f1e867a4b7b1d7818a4b753dfd2a89ccb45e001a03a867b187f225dd":"fa762a3680b76007928ed4a4f49a9456031b704782e65e16cecb54ed7d017b5e18abd67b338e81078f21edb7868d901ebe9c731a7c18b5e6dec1d6a72e078ac9a4262f860beefa14f4e821018272e411a951502b6e79066e84252c3346f3aa62344351a291d4bedc7a07618bdea2af63145cc7a4b8d4070691ae890cd65733e7946e9021a1dffc4c59f159425ee6d50ca9b135fa6162cea18a939838dc000fb386fad086acce5ac07cb2ece7fd580b00cfa5e98589631dc25e8e2a3daf2ffdec26531659912c9d8f7a15e5865ea8fb5816d6207052bd7128cd743c12c8118791a4736811935eb982a532349e31dd401e0b660a568cb1a4711f552f55ded59f1f15bf7196b3ca12a91e488ef59d64f3a02bf45239499ac6176ae321c4a211ec545365971c5d3f4f09d4eb139bfdf2073d33180b21002b65cc9865e76cb24cd92c874c24c18350399a936ab3637079295d76c417776b94efce3a0ef7206b15110519655c956cbd8b2489405ee2b09a6b6eebe0c53790a12a8998378b33a5b71159625f4ba49d2a2fdba59fbf0897bc7aabd8d707dc140a80f0f309f835d3da54ab584e501dfa0ee977fec543f74186a802b9a37adb3e8291eca04d66520d229e60401e7282bef486ae059aa70696e0e305d777140a7a883ecdcb69b9ff938e8a4231864c69ca2c2043bed007ff3e605e014bcf518138dc3a25c5e236171a2d01d6" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 7 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"fd000000000000000000000000000000":"8e41b78c390b5af9d758bb214a67e9f6bf7727b09ac6124084c37611398fa45daad94868600ed391fb1acd4857a95b466e62ef9f4b377244d1c152e7b30d731aad30c716d214b707aed99eb5b5e580b3e887cf7497465651d4b60e6042051da3693c3b78c14489543be8b6ad0ba629565bba202313ba7b0d0c94a3252b676f46cc02ce0f8a7d34c0ed229129673c1f61aed579d08a9203a25aac3a77e9db60267996db38df637356d9dcd1632e369939f2a29d89345c66e05066f1a3677aef18dea4113faeb629e46721a66d0a7e785d3e29af2594eb67dfa982affe0aac058f6e15864269b135418261fc3afb089472cf68c45dd7f231c6249ba0255e1e033833fc4d00a3fe02132d7bc3873614b8aee34273581ea0325c81f0270affa13641d052d36f0757d484014354d02d6883ca15c24d8c3956b1bd027bcf41f151fd8023c5340e5606f37e90fdb87c86fb4fa634b3718a30bace06a66eaf8f63c4aa3b637826a87fe8cfa44282e92cb1615af3a28e53bc74c7cba1a0977be9065d0c1a5dec6c54ae38d37f37aa35283e048e5530a85c4e7a29d7b92ec0c3169cdf2a805c7604bce60049b9fb7b8eaac10f51ae23794ceba68bb58112e293b9b692ca721b37c662f8574ed4dba6f88e170881c82cddc1034a0ca7e284bf0962b6b26292d836fa9f73c1ac770eef0f2d3a1eaf61d3e03555fd424eedd67e18a18094f888":"d55f684f81f4426e9fde92a5ff02df2ac896af63962888a97910c1379e20b0a3b1db613fb7fe2e07004329ea5c22bfd33e3dbe4cf58cc608c2c26c19a2e2fe22f98732c2b5cb844cc6c0702d91e1d50fc4382a7eba5635cd602432a2306ac4ce82f8d70c8d9bc15f918fe71e74c622d5cf71178bf6e0b9cc9f2b41dd8dbe441c41cd0c73a6dc47a348f6702f9d0e9b1b1431e948e299b9ec2272ab2c5f0c7be86affa5dec87a0bee81d3d50007edaa2bcfccb35605155ff36ed8edd4a40dcd4b243acd11b2b987bdbfaf91a7cac27e9c5aea525ee53de7b2d3332c8644402b823e94a7db26276d2d23aa07180f76b4fd29b9c0823099c9d62c519880aee7e9697617c1497d47bf3e571950311421b6b734d38b0db91eb85331b91ea9f61530f54512a5a52a4bad589eb69781d537f23297bb459bdad2948a29e1550bf4787e0be95bb173cf5fab17dab7a13a052a63453d97ccec1a321954886b7a1299faaeecae35c6eaaca753b041b5e5f093bf83397fd21dd6b3012066fcc058cc32c3b09d7562dee29509b5839392c9ff05f51f3166aaac4ac5f238038a3045e6f72e48ef0fe8bc675e82c318a268e43970271bf119b81bf6a982746554f84e72b9f00280a320a08142923c23c883423ff949827f29bbacdc1ccdb04938ce6098c95ba6b32528f4ef78eed778b2e122ddfd1cbdd11d1c0a6783e011fc536d63d053260637" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 8 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"fe000000000000000000000000000000":"d55f684f81f4426e9fde92a5ff02df2ac896af63962888a97910c1379e20b0a3b1db613fb7fe2e07004329ea5c22bfd33e3dbe4cf58cc608c2c26c19a2e2fe22f98732c2b5cb844cc6c0702d91e1d50fc4382a7eba5635cd602432a2306ac4ce82f8d70c8d9bc15f918fe71e74c622d5cf71178bf6e0b9cc9f2b41dd8dbe441c41cd0c73a6dc47a348f6702f9d0e9b1b1431e948e299b9ec2272ab2c5f0c7be86affa5dec87a0bee81d3d50007edaa2bcfccb35605155ff36ed8edd4a40dcd4b243acd11b2b987bdbfaf91a7cac27e9c5aea525ee53de7b2d3332c8644402b823e94a7db26276d2d23aa07180f76b4fd29b9c0823099c9d62c519880aee7e9697617c1497d47bf3e571950311421b6b734d38b0db91eb85331b91ea9f61530f54512a5a52a4bad589eb69781d537f23297bb459bdad2948a29e1550bf4787e0be95bb173cf5fab17dab7a13a052a63453d97ccec1a321954886b7a1299faaeecae35c6eaaca753b041b5e5f093bf83397fd21dd6b3012066fcc058cc32c3b09d7562dee29509b5839392c9ff05f51f3166aaac4ac5f238038a3045e6f72e48ef0fe8bc675e82c318a268e43970271bf119b81bf6a982746554f84e72b9f00280a320a08142923c23c883423ff949827f29bbacdc1ccdb04938ce6098c95ba6b32528f4ef78eed778b2e122ddfd1cbdd11d1c0a6783e011fc536d63d053260637":"72efc1ebfe1ee25975a6eb3aa8589dda2b261f1c85bdab442a9e5b2dd1d7c3957a16fc08e526d4b1223f1b1232a11af274c3d70dac57f83e0983c498f1a6f1aecb021c3e70085a1e527f1ce41ee5911a82020161529cd82773762daf5459de94a0a82adae7e1703c808543c29ed6fb32d9e004327c1355180c995a07741493a09c21ba01a387882da4f62534b87bb15d60d197201c0fd3bf30c1500a3ecfecdd66d8721f90bcc4c17ee925c61b0a03727a9c0d5f5ca462fbfa0af1c2513a9d9d4b5345bd27a5f6e653f751693e6b6a2b8ead57d511e00e58c45b7b8d005af79288f5c7c22fd4f1bf7a898b03a5634c6a1ae3f9fae5de4f296a2896b23e7ed43ed14fa5a2803f4d28f0d3ffcf24757677aebdb47bb388378708948a8d4126ed1839e0da29a537a8c198b3c66ab00712dd261674bf45a73d67f76914f830ca014b65596f27e4cf62de66125a5566df9975155628b400fbfb3a29040ed50faffdbb18aece7c5c44693260aab386c0a37b11b114f1c415aebb653be468179428d43a4d8bc3ec38813eca30a13cf1bb18d524f1992d44d8b1a42ea30b22e6c95b199d8d182f8840b09d059585c31ad691fa0619ff038aca2c39a943421157361717c49d322028a74648113bd8c9d7ec77cf3c89c1ec8718ceff8516d96b34c3c614f10699c9abc4ed0411506223bea16af35c883accdbe1104eef0cfdb54e12fb230a" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 9 +aes_decrypt_xts:"2718281828459045235360287471352631415926535897932384626433832795":"ff000000000000000000000000000000":"72efc1ebfe1ee25975a6eb3aa8589dda2b261f1c85bdab442a9e5b2dd1d7c3957a16fc08e526d4b1223f1b1232a11af274c3d70dac57f83e0983c498f1a6f1aecb021c3e70085a1e527f1ce41ee5911a82020161529cd82773762daf5459de94a0a82adae7e1703c808543c29ed6fb32d9e004327c1355180c995a07741493a09c21ba01a387882da4f62534b87bb15d60d197201c0fd3bf30c1500a3ecfecdd66d8721f90bcc4c17ee925c61b0a03727a9c0d5f5ca462fbfa0af1c2513a9d9d4b5345bd27a5f6e653f751693e6b6a2b8ead57d511e00e58c45b7b8d005af79288f5c7c22fd4f1bf7a898b03a5634c6a1ae3f9fae5de4f296a2896b23e7ed43ed14fa5a2803f4d28f0d3ffcf24757677aebdb47bb388378708948a8d4126ed1839e0da29a537a8c198b3c66ab00712dd261674bf45a73d67f76914f830ca014b65596f27e4cf62de66125a5566df9975155628b400fbfb3a29040ed50faffdbb18aece7c5c44693260aab386c0a37b11b114f1c415aebb653be468179428d43a4d8bc3ec38813eca30a13cf1bb18d524f1992d44d8b1a42ea30b22e6c95b199d8d182f8840b09d059585c31ad691fa0619ff038aca2c39a943421157361717c49d322028a74648113bd8c9d7ec77cf3c89c1ec8718ceff8516d96b34c3c614f10699c9abc4ed0411506223bea16af35c883accdbe1104eef0cfdb54e12fb230a":"3260ae8dad1f4a32c5cafe3ab0eb95549d461a67ceb9e5aa2d3afb62dece0553193ba50c75be251e08d1d08f1088576c7efdfaaf3f459559571e12511753b07af073f35da06af0ce0bbf6b8f5ccc5cea500ec1b211bd51f63b606bf6528796ca12173ba39b8935ee44ccce646f90a45bf9ccc567f0ace13dc2d53ebeedc81f58b2e41179dddf0d5a5c42f5d8506c1a5d2f8f59f3ea873cbcd0eec19acbf325423bd3dcb8c2b1bf1d1eaed0eba7f0698e4314fbeb2f1566d1b9253008cbccf45a2b0d9c5c9c21474f4076e02be26050b99dee4fd68a4cf890e496e4fcae7b70f94ea5a9062da0daeba1993d2ccd1dd3c244b8428801495a58b216547e7e847c46d1d756377b6242d2e5fb83bf752b54e0df71e889f3a2bb0f4c10805bf3c590376e3c24e22ff57f7fa965577375325cea5d920db94b9c336b455f6e894c01866fe9fbb8c8d3f70a2957285f6dfb5dcd8cbf54782f8fe7766d4723819913ac773421e3a31095866bad22c86a6036b2518b2059b4229d18c8c2ccbdf906c6cc6e82464ee57bddb0bebcb1dc645325bfb3e665ef7251082c88ebb1cf203bd779fdd38675713c8daadd17e1cabee432b09787b6ddf3304e38b731b45df5df51b78fcfb3d32466028d0ba36555e7e11ab0ee0666061d1645d962444bc47a38188930a84b4d561395c73c087021927ca638b7afc8a8679ccb84c26555440ec7f10445cd" + +AES-256-XTS Decrypt IEEE P1619/D16 Vector 10 +aes_decrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ff000000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"1c3b3a102f770386e4836c99e370cf9bea00803f5e482357a4ae12d414a3e63b5d31e276f8fe4a8d66b317f9ac683f44680a86ac35adfc3345befecb4bb188fd5776926c49a3095eb108fd1098baec70aaa66999a72a82f27d848b21d4a741b0c5cd4d5fff9dac89aeba122961d03a757123e9870f8acf1000020887891429ca2a3e7a7d7df7b10355165c8b9a6d0a7de8b062c4500dc4cd120c0f7418dae3d0b5781c34803fa75421c790dfe1de1834f280d7667b327f6c8cd7557e12ac3a0f93ec05c52e0493ef31a12d3d9260f79a289d6a379bc70c50841473d1a8cc81ec583e9645e07b8d9670655ba5bbcfecc6dc3966380ad8fecb17b6ba02469a020a84e18e8f84252070c13e9f1f289be54fbc481457778f616015e1327a02b140f1505eb309326d68378f8374595c849d84f4c333ec4423885143cb47bd71c5edae9be69a2ffeceb1bec9de244fbe15992b11b77c040f12bd8f6a975a44a0f90c29a9abc3d4d893927284c58754cce294529f8614dcd2aba991925fedc4ae74ffac6e333b93eb4aff0479da9a410e4450e0dd7ae4c6e2910900575da401fc07059f645e8b7e9bfdef33943054ff84011493c27b3429eaedb4ed5376441a77ed43851ad77f16f541dfd269d50d6a5f14fb0aab1cbb4c1550be97f7ab4066193c4caa773dad38014bd2092fa755c824bb5e54c4f36ffda9fcea70b9c6e693e148c151" + +AES-256-XTS Decrypt IEEE P1619/D16 Vector 11 +aes_decrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffff0000000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"77a31251618a15e6b92d1d66dffe7b50b50bad552305ba0217a610688eff7e11e1d0225438e093242d6db274fde801d4cae06f2092c728b2478559df58e837c2469ee4a4fa794e4bbc7f39bc026e3cb72c33b0888f25b4acf56a2a9804f1ce6d3d6e1dc6ca181d4b546179d55544aa7760c40d06741539c7e3cd9d2f6650b2013fd0eeb8c2b8e3d8d240ccae2d4c98320a7442e1c8d75a42d6e6cfa4c2eca1798d158c7aecdf82490f24bb9b38e108bcda12c3faf9a21141c3613b58367f922aaa26cd22f23d708dae699ad7cb40a8ad0b6e2784973dcb605684c08b8d6998c69aac049921871ebb65301a4619ca80ecb485a31d744223ce8ddc2394828d6a80470c092f5ba413c3378fa6054255c6f9df4495862bbb3287681f931b687c888abf844dfc8fc28331e579928cd12bd2390ae123cf03818d14dedde5c0c24c8ab018bfca75ca096f2d531f3d1619e785f1ada437cab92e980558b3dce1474afb75bfedbf8ff54cb2618e0244c9ac0d3c66fb51598cd2db11f9be39791abe447c63094f7c453b7ff87cb5bb36b7c79efb0872d17058b83b15ab0866ad8a58656c5a7e20dbdf308b2461d97c0ec0024a2715055249cf3b478ddd4740de654f75ca686e0d7345c69ed50cdc2a8b332b1f8824108ac937eb050585608ee734097fc09054fbff89eeaeea791f4a7ab1f9868294a4f9e27b42af8100cb9d59cef9645803" + +AES-256-XTS Decrypt IEEE P1619/D16 Vector 12 +aes_decrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffff00000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"e387aaa58ba483afa7e8eb469778317ecf4cf573aa9d4eac23f2cdf914e4e200a8b490e42ee646802dc6ee2b471b278195d60918ececb44bf79966f83faba0499298ebc699c0c8634715a320bb4f075d622e74c8c932004f25b41e361025b5a87815391f6108fc4afa6a05d9303c6ba68a128a55705d415985832fdeaae6c8e19110e84d1b1f199a2692119edc96132658f09da7c623efcec712537a3d94c0bf5d7e352ec94ae5797fdb377dc1551150721adf15bd26a8efc2fcaad56881fa9e62462c28f30ae1ceaca93c345cf243b73f542e2074a705bd2643bb9f7cc79bb6e7091ea6e232df0f9ad0d6cf502327876d82207abf2115cdacf6d5a48f6c1879a65b115f0f8b3cb3c59d15dd8c769bc014795a1837f3901b5845eb491adfefe097b1fa30a12fc1f65ba22905031539971a10f2f36c321bb51331cdefb39e3964c7ef079994f5b69b2edd83a71ef549971ee93f44eac3938fcdd61d01fa71799da3a8091c4c48aa9ed263ff0749df95d44fef6a0bb578ec69456aa5408ae32c7af08ad7ba8921287e3bbee31b767be06a0e705c864a769137df28292283ea81a2480241b44d9921cdbec1bc28dc1fda114bd8e5217ac9d8ebafa720e9da4f9ace231cc949e5b96fe76ffc21063fddc83a6b8679c00d35e09576a875305bed5f36ed242c8900dd1fa965bc950dfce09b132263a1eef52dd6888c309f5a7d712826" + +AES-256-XTS Decrypt IEEE P1619/D16 Vector 13 +aes_decrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffffff000000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"bf53d2dade78e822a4d949a9bc6766b01b06a8ef70d26748c6a7fc36d80ae4c5520f7c4ab0ac8544424fa405162fef5a6b7f229498063618d39f0003cb5fb8d1c86b643497da1ff945c8d3bedeca4f479702a7a735f043ddb1d6aaade3c4a0ac7ca7f3fa5279bef56f82cd7a2f38672e824814e10700300a055e1630b8f1cb0e919f5e942010a416e2bf48cb46993d3cb6a51c19bacf864785a00bc2ecff15d350875b246ed53e68be6f55bd7e05cfc2b2ed6432198a6444b6d8c247fab941f569768b5c429366f1d3f00f0345b96123d56204c01c63b22ce78baf116e525ed90fdea39fa469494d3866c31e05f295ff21fea8d4e6e13d67e47ce722e9698a1c1048d68ebcde76b86fcf976eab8aa9790268b7068e017a8b9b749409514f1053027fd16c3786ea1bac5f15cb79711ee2abe82f5cf8b13ae73030ef5b9e4457e75d1304f988d62dd6fc4b94ed38ba831da4b7634971b6cd8ec325d9c61c00f1df73627ed3745a5e8489f3a95c69639c32cd6e1d537a85f75cc844726e8a72fc0077ad22000f1d5078f6b866318c668f1ad03d5a5fced5219f2eabbd0aa5c0f460d183f04404a0d6f469558e81fab24a167905ab4c7878502ad3e38fdbe62a41556cec37325759533ce8f25f367c87bb5578d667ae93f9e2fd99bcbc5f2fbba88cf6516139420fcff3b7361d86322c4bd84c82f335abb152c4a93411373aaa8220" + +AES-256-XTS Decrypt IEEE P1619/D16 Vector 14 +aes_decrypt_xts:"27182818284590452353602874713526624977572470936999595749669676273141592653589793238462643383279502884197169399375105820974944592":"ffffffffff0000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"64497e5a831e4a932c09be3e5393376daa599548b816031d224bbf50a818ed2350eae7e96087c8a0db51ad290bd00c1ac1620857635bf246c176ab463be30b808da548081ac847b158e1264be25bb0910bbc92647108089415d45fab1b3d2604e8a8eff1ae4020cfa39936b66827b23f371b92200be90251e6d73c5f86de5fd4a950781933d79a28272b782a2ec313efdfcc0628f43d744c2dc2ff3dcb66999b50c7ca895b0c64791eeaa5f29499fb1c026f84ce5b5c72ba1083cddb5ce45434631665c333b60b11593fb253c5179a2c8db813782a004856a1653011e93fb6d876c18366dd8683f53412c0c180f9c848592d593f8609ca736317d356e13e2bff3a9f59cd9aeb19cd482593d8c46128bb32423b37a9adfb482b99453fbe25a41bf6feb4aa0bef5ed24bf73c762978025482c13115e4015aac992e5613a3b5c2f685b84795cb6e9b2656d8c88157e52c42f978d8634c43d06fea928f2822e465aa6576e9bf419384506cc3ce3c54ac1a6f67dc66f3b30191e698380bc999b05abce19dc0c6dcc2dd001ec535ba18deb2df1a101023108318c75dc98611a09dc48a0acdec676fabdf222f07e026f059b672b56e5cbc8e1d21bbd867dd927212054681d70ea737134cdfce93b6f82ae22423274e58a0821cc5502e2d0ab4585e94de6975be5e0b4efce51cd3e70c25a1fbbbd609d273ad5b0d59631c531f6a0a57b9" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 15 +aes_decrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f10":"6c1625db4671522d3d7599601de7ca09ed" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 16 +aes_decrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f1011":"d069444b7a7e0cab09e24447d24deb1fedbf" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 17 +aes_decrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f101112":"e5df1351c0544ba1350b3363cd8ef4beedbf9d" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 18 +aes_decrypt_xts:"fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0":"9a785634120000000000000000000000":"000102030405060708090a0b0c0d0e0f10111213":"9d84c813f719aa2c7be3f66171c7c5c2edbf9dac" + +AES-128-XTS Decrypt IEEE P1619/D16 Vector 19 +aes_decrypt_xts:"e0e1e2e3e4e5e6e7e8e9eaebecedeeefc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"21436587a90000000000000000000000":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff":"38b45812ef43a05bd957e545907e223b954ab4aaf088303ad910eadf14b42be68b2461149d8c8ba85f992be970bc621f1b06573f63e867bf5875acafa04e42ccbd7bd3c2a0fb1fff791ec5ec36c66ae4ac1e806d81fbf709dbe29e471fad38549c8e66f5345d7c1eb94f405d1ec785cc6f6a68f6254dd8339f9d84057e01a17741990482999516b5611a38f41bb6478e6f173f320805dd71b1932fc333cb9ee39936beea9ad96fa10fb4112b901734ddad40bc1878995f8e11aee7d141a2f5d48b7a4e1e7f0b2c04830e69a4fd1378411c2f287edf48c6c4e5c247a19680f7fe41cefbd49b582106e3616cbbe4dfb2344b2ae9519391f3e0fb4922254b1d6d2d19c6d4d537b3a26f3bcc51588b32f3eca0829b6a5ac72578fb814fb43cf80d64a233e3f997a3f02683342f2b33d25b492536b93becb2f5e1a8b82f5b883342729e8ae09d16938841a21a97fb543eea3bbff59f13c1a18449e398701c1ad51648346cbc04c27bb2da3b93a1372ccae548fb53bee476f9e9c91773b1bb19828394d55d3e1a20ed69113a860b6829ffa847224604435070221b257e8dff783615d2cae4803a93aa4334ab482a0afac9c0aeda70b45a481df5dec5df8cc0f423c77a5fd46cd312021d4b438862419a791be03bb4d97c0e59578542531ba466a83baf92cefc151b5cc1611a167893819b63fb8a6b18e86de60290fa72b797b0ce59f3" From c653990ed59714022acecb4b95230f7a29cbd27f Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Mon, 30 Apr 2018 17:17:41 +0100 Subject: [PATCH 0448/1100] cipher: Add wrappers for AES-XTS AES-XTS does not support multipart use as it can only operate on an entire sector at a time. --- include/mbedtls/cipher.h | 6 +- include/mbedtls/cipher_internal.h | 7 + library/cipher.c | 22 ++++ library/cipher_wrap.c | 162 ++++++++++++++++++++++++ tests/suites/test_suite_cipher.aes.data | 64 ++++++++++ 5 files changed, 260 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index cde2fbd58b..0a545eb3c1 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -167,6 +167,8 @@ typedef enum { MBEDTLS_CIPHER_AES_128_OFB, /**< AES 128-bit cipher in OFB mode. */ MBEDTLS_CIPHER_AES_192_OFB, /**< AES 192-bit cipher in OFB mode. */ MBEDTLS_CIPHER_AES_256_OFB, /**< AES 256-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_128_XTS, /**< AES 128-bit cipher in XTS block mode. */ + MBEDTLS_CIPHER_AES_256_XTS, /**< AES 256-bit cipher in XTS block mode. */ } mbedtls_cipher_type_t; /** Supported cipher modes. */ @@ -180,6 +182,7 @@ typedef enum { MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */ MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */ + MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */ } mbedtls_cipher_mode_t; /** Supported cipher padding types. */ @@ -295,7 +298,8 @@ typedef struct { /** Number of Bytes that have not been processed yet. */ size_t unprocessed_len; - /** Current IV or NONCE_COUNTER for CTR-mode. */ + /** Current IV or NONCE_COUNTER for CTR-mode, data unit (or sector) number + * for XTS-mode. */ unsigned char iv[MBEDTLS_MAX_IV_LENGTH]; /** IV size in Bytes, for ciphers with variable-length IVs. */ diff --git a/include/mbedtls/cipher_internal.h b/include/mbedtls/cipher_internal.h index e02b7f1132..c6def0bef7 100644 --- a/include/mbedtls/cipher_internal.h +++ b/include/mbedtls/cipher_internal.h @@ -79,6 +79,13 @@ struct mbedtls_cipher_base_t const unsigned char *input, unsigned char *output ); #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + /** Encrypt or decrypt using XTS. */ + int (*xts_func)( void *ctx, mbedtls_operation_t mode, size_t length, + const unsigned char data_unit[16], + const unsigned char *input, unsigned char *output ); +#endif + #if defined(MBEDTLS_CIPHER_MODE_STREAM) /** Encrypt using STREAM */ int (*stream_func)( void *ctx, size_t length, diff --git a/library/cipher.c b/library/cipher.c index 2c599e5481..2d85228aa5 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -456,6 +456,27 @@ int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, const unsigned char *i } #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) + if( ctx->cipher_info->mode == MBEDTLS_MODE_XTS ) + { + if( ctx->unprocessed_len > 0 ) { + /* We can only process an entire data unit at a time. */ + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + } + + ret = ctx->cipher_info->base->xts_func( ctx->cipher_ctx, + ctx->operation, ilen, ctx->iv, input, output ); + if( ret != 0 ) + { + return( ret ); + } + + *olen = ilen; + + return( 0 ); + } +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #if defined(MBEDTLS_CIPHER_MODE_STREAM) if( ctx->cipher_info->mode == MBEDTLS_MODE_STREAM ) { @@ -658,6 +679,7 @@ int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, MBEDTLS_MODE_OFB == ctx->cipher_info->mode || MBEDTLS_MODE_CTR == ctx->cipher_info->mode || MBEDTLS_MODE_GCM == ctx->cipher_info->mode || + MBEDTLS_MODE_XTS == ctx->cipher_info->mode || MBEDTLS_MODE_STREAM == ctx->cipher_info->mode ) { return( 0 ); diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index fd6e69cb31..16e0a9d9bb 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -161,6 +161,33 @@ static int aes_crypt_ctr_wrap( void *ctx, size_t length, size_t *nc_off, } #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +static int aes_crypt_xts_wrap( void *ctx, mbedtls_operation_t operation, + size_t length, + const unsigned char data_unit[16], + const unsigned char *input, + unsigned char *output ) +{ + mbedtls_aes_xts_context *xts_ctx = ctx; + int mode; + + switch( operation ) + { + case MBEDTLS_ENCRYPT: + mode = MBEDTLS_AES_ENCRYPT; + break; + case MBEDTLS_DECRYPT: + mode = MBEDTLS_AES_DECRYPT; + break; + default: + return MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA; + } + + return mbedtls_aes_crypt_xts( xts_ctx, mode, length, + data_unit, input, output ); +} +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + static int aes_setkey_dec_wrap( void *ctx, const unsigned char *key, unsigned int key_bitlen ) { @@ -206,6 +233,9 @@ static const mbedtls_cipher_base_t aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) aes_crypt_ctr_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -388,6 +418,92 @@ static const mbedtls_cipher_info_t aes_256_ctr_info = { }; #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) +static int xts_aes_setkey_enc_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + mbedtls_aes_xts_context *xts_ctx = ctx; + return( mbedtls_aes_xts_setkey_enc( xts_ctx, key, key_bitlen ) ); +} + +static int xts_aes_setkey_dec_wrap( void *ctx, const unsigned char *key, + unsigned int key_bitlen ) +{ + mbedtls_aes_xts_context *xts_ctx = ctx; + return( mbedtls_aes_xts_setkey_dec( xts_ctx, key, key_bitlen ) ); +} + +static void *xts_aes_ctx_alloc( void ) +{ + mbedtls_aes_xts_context *xts_ctx = mbedtls_calloc( 1, sizeof( *xts_ctx ) ); + + if( xts_ctx != NULL ) + mbedtls_aes_xts_init( xts_ctx ); + + return( xts_ctx ); +} + +static void xts_aes_ctx_free( void *ctx ) +{ + mbedtls_aes_xts_context *xts_ctx = ctx; + + if( xts_ctx == NULL ) + return; + + mbedtls_aes_xts_free( xts_ctx ); + mbedtls_free( xts_ctx ); +} + +static const mbedtls_cipher_base_t xts_aes_info = { + MBEDTLS_CIPHER_ID_AES, + NULL, +#if defined(MBEDTLS_CIPHER_MODE_CBC) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) + NULL, +#endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + aes_crypt_xts_wrap, +#endif +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + NULL, +#endif + xts_aes_setkey_enc_wrap, + xts_aes_setkey_dec_wrap, + xts_aes_ctx_alloc, + xts_aes_ctx_free +}; + +static const mbedtls_cipher_info_t aes_128_xts_info = { + MBEDTLS_CIPHER_AES_128_XTS, + MBEDTLS_MODE_XTS, + 256, + "AES-128-XTS", + 16, + 0, + 16, + &xts_aes_info +}; + +static const mbedtls_cipher_info_t aes_256_xts_info = { + MBEDTLS_CIPHER_AES_256_XTS, + MBEDTLS_MODE_XTS, + 512, + "AES-256-XTS", + 16, + 0, + 16, + &xts_aes_info +}; +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + #if defined(MBEDTLS_GCM_C) static int gcm_aes_setkey_wrap( void *ctx, const unsigned char *key, unsigned int key_bitlen ) @@ -411,6 +527,9 @@ static const mbedtls_cipher_base_t gcm_aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -477,6 +596,9 @@ static const mbedtls_cipher_base_t ccm_aes_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -607,6 +729,9 @@ static const mbedtls_cipher_base_t camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) camellia_crypt_ctr_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -777,6 +902,9 @@ static const mbedtls_cipher_base_t gcm_camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -843,6 +971,9 @@ static const mbedtls_cipher_base_t ccm_camellia_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -974,6 +1105,9 @@ static const mbedtls_cipher_base_t aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) aria_crypt_ctr_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1144,6 +1278,9 @@ static const mbedtls_cipher_base_t gcm_aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1210,6 +1347,9 @@ static const mbedtls_cipher_base_t ccm_aria_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1389,6 +1529,9 @@ static const mbedtls_cipher_base_t des_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1437,6 +1580,9 @@ static const mbedtls_cipher_base_t des_ede_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1485,6 +1631,9 @@ static const mbedtls_cipher_base_t des_ede3_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1597,6 +1746,9 @@ static const mbedtls_cipher_base_t blowfish_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) blowfish_crypt_ctr_wrap, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif @@ -1710,6 +1862,9 @@ static const mbedtls_cipher_base_t arc4_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) arc4_crypt_stream_wrap, #endif @@ -1776,6 +1931,9 @@ static const mbedtls_cipher_base_t null_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) null_crypt_stream, #endif @@ -1823,6 +1981,10 @@ const mbedtls_cipher_definition_t mbedtls_cipher_definitions[] = { MBEDTLS_CIPHER_AES_192_CTR, &aes_192_ctr_info }, { MBEDTLS_CIPHER_AES_256_CTR, &aes_256_ctr_info }, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + { MBEDTLS_CIPHER_AES_128_XTS, &aes_128_xts_info }, + { MBEDTLS_CIPHER_AES_256_XTS, &aes_256_xts_info }, +#endif #if defined(MBEDTLS_GCM_C) { MBEDTLS_CIPHER_AES_128_GCM, &aes_128_gcm_info }, { MBEDTLS_CIPHER_AES_192_GCM, &aes_192_gcm_info }, diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index 4ac1cb56b6..baab3586bd 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -786,6 +786,70 @@ AES-256 OFB - Encrypt and decrypt 32 bytes in multiple parts 1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_OFB enc_dec_buf_multipart:MBEDTLS_CIPHER_AES_256_OFB:256:16:16:-1:16:16:16:16 +AES-128 XTS - Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:16:-1 + +AES-128 XTS - Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:17:-1 + +AES-128 XTS - Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:31:-1 + +AES-128 XTS - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:32:-1 + +AES-128 XTS - Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:33:-1 + +AES-128 XTS - Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:47:-1 + +AES-128 XTS - Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:48:-1 + +AES-128 XTS - Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_128_XTS:"AES-128-XTS":256:49:-1 + +AES-256 XTS - Encrypt and decrypt 16 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:16:-1 + +AES-256 XTS - Encrypt and decrypt 17 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:17:-1 + +AES-256 XTS - Encrypt and decrypt 31 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:31:-1 + +AES-256 XTS - Encrypt and decrypt 32 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:32:-1 + +AES-256 XTS - Encrypt and decrypt 33 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:33:-1 + +AES-256 XTS - Encrypt and decrypt 47 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:47:-1 + +AES-256 XTS - Encrypt and decrypt 48 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:48:-1 + +AES-256 XTS - Encrypt and decrypt 49 bytes +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_XTS +enc_dec_buf:MBEDTLS_CIPHER_AES_256_XTS:"AES-256-XTS":512:49:-1 + AES-128 CTR - Encrypt and decrypt 0 bytes depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CTR enc_dec_buf:MBEDTLS_CIPHER_AES_128_CTR:"AES-128-CTR":128:0:-1 From f167deb6e0a57ed36653a3a12dd231ddc923c409 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 30 May 2018 19:20:48 +0100 Subject: [PATCH 0449/1100] aes: xts: Add a reference to the standard It's useful to add a reference to the standard one implements. Add a reference to the AES-XTS standard to the top of `aes.h`. --- include/mbedtls/aes.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index 74c528fb62..f6603d5962 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -13,6 +13,11 @@ * ISO/IEC 18033-2:2006: Information technology -- Security * techniques -- Encryption algorithms -- Part 2: Asymmetric * ciphers. + * + * The AES-XTS block mode is standardized by NIST SP 800-38E + * + * and described in detail by IEEE P1619 + * . */ /* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. From 5f0b06aedacb723b03ceb259190853ee6a116f5d Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 31 May 2018 09:23:32 +0100 Subject: [PATCH 0450/1100] aes: xts: Fix description of gf128mul THe function `mbedtls_gf128mul_x_ble()` doesn't multiply by x, x^4, and x^8. Update the function description to properly describe what the function does. --- library/aes.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/aes.c b/library/aes.c index 9c7d3d0c45..de25927098 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1105,10 +1105,10 @@ typedef unsigned char mbedtls_be128[16]; /* * GF(2^128) multiplication function * - * This function multiplies a field element by x, by x^4 and by x^8 in the - * polynomial field representation. It uses 64-bit word operations to gain - * speed but compensates for machine endianess and hence works correctly on - * both big and little endian machines. + * This function multiplies a field element by x in the polynomial field + * representation. It uses 64-bit word operations to gain speed but compensates + * for machine endianess and hence works correctly on both big and little + * endian machines. */ static void mbedtls_gf128mul_x_ble( unsigned char r[16], const unsigned char x[16]) From 8cfc75f603dd1519e9383ef88a6bda21aa431b46 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 31 May 2018 16:53:08 +0100 Subject: [PATCH 0451/1100] aes: xts: Fix style issues with gf128mul --- library/aes.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/library/aes.c b/library/aes.c index de25927098..5cd96ecf50 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1111,18 +1111,18 @@ typedef unsigned char mbedtls_be128[16]; * endian machines. */ static void mbedtls_gf128mul_x_ble( unsigned char r[16], - const unsigned char x[16]) + const unsigned char x[16] ) { uint64_t a, b, ra, rb; - GET_UINT64_LE(a, x, 0); - GET_UINT64_LE(b, x, 8); + GET_UINT64_LE( a, x, 0 ); + GET_UINT64_LE( b, x, 8 ); - ra = (a << 1) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); - rb = (a >> 63) | (b << 1); + ra = ( a << 1 ) ^ 0x0087 >> ( 8 - ( ( b >> 63 ) << 3 ) ); + rb = ( a >> 63 ) | ( b << 1 ); - PUT_UINT64_LE(ra, r, 0); - PUT_UINT64_LE(rb, r, 8); + PUT_UINT64_LE( ra, r, 0 ); + PUT_UINT64_LE( rb, r, 8 ); } /* From 142383e25b4330ad7e77f2aab2166bc7c8e6337c Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 31 May 2018 10:40:34 +0100 Subject: [PATCH 0452/1100] aes: xts: Add tests for invalid key sizes Test that we get the error we expect when using various valid and invalid keysizes with mbedtls_aes_xts_setkey_enc() and mbedtls_aes_xts_setkey_dec(). --- tests/suites/test_suite_aes.function | 15 +++++++++++++++ tests/suites/test_suite_aes.xts.data | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index aec4a493d0..e346dc7c32 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -258,6 +258,21 @@ void aes_crypt_xts_size( int size, int retval ) } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_XTS */ +void aes_crypt_xts_keysize( int size, int retval ) +{ + mbedtls_aes_xts_context ctx; + const unsigned char *key = NULL; + size_t key_len = size; + + mbedtls_aes_xts_init( &ctx ); + + TEST_ASSERT( mbedtls_aes_xts_setkey_enc( &ctx, key, key_len * 8 ) == retval ); + TEST_ASSERT( mbedtls_aes_xts_setkey_dec( &ctx, key, key_len * 8 ) == retval ); +exit: + mbedtls_aes_xts_free( &ctx ); +} +/* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ diff --git a/tests/suites/test_suite_aes.xts.data b/tests/suites/test_suite_aes.xts.data index a0a6626854..6af5227d95 100644 --- a/tests/suites/test_suite_aes.xts.data +++ b/tests/suites/test_suite_aes.xts.data @@ -13,6 +13,21 @@ aes_crypt_xts_size:16777217:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH AES-128-XTS Encrypt Fail Sector Too Large (by 1 block) aes_crypt_xts_size:16777232:MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH +AES-0-XTS Setkey Fail Invalid Key Length +aes_crypt_xts_keysize:0:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + +AES-4-XTS Setkey Fail Invalid Key Length +aes_crypt_xts_keysize:1:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + +AES-64-XTS Setkey Fail Invalid Key Length +aes_crypt_xts_keysize:16:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + +AES-192-XTS Setkey Fail Invalid Key Length +aes_crypt_xts_keysize:48:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + +AES-384-XTS Setkey Fail Invalid Key Length +aes_crypt_xts_keysize:96:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + AES-128-XTS Encrypt NIST XTSTestVectors #1 aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63" From c28012acddea4c5c67c2fc11b923d990d25d8fe6 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 31 May 2018 16:58:10 +0100 Subject: [PATCH 0453/1100] tests: Remove NIST AES-XTS test vectors The IEEE P1619 XTS test vectors should suffice. Remove the NIST test vectors. --- tests/suites/test_suite_aes.xts.data | 4200 -------------------------- 1 file changed, 4200 deletions(-) diff --git a/tests/suites/test_suite_aes.xts.data b/tests/suites/test_suite_aes.xts.data index 6af5227d95..647819e0de 100644 --- a/tests/suites/test_suite_aes.xts.data +++ b/tests/suites/test_suite_aes.xts.data @@ -28,4206 +28,6 @@ aes_crypt_xts_keysize:48:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH AES-384-XTS Setkey Fail Invalid Key Length aes_crypt_xts_keysize:96:MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -AES-128-XTS Encrypt NIST XTSTestVectors #1 -aes_encrypt_xts:"a1b90cba3f06ac353b2c343876081762090923026e91771815f29dab01932f2f":"4faef7117cda59c66e4b92013e768ad5":"ebabce95b14d3c8d6fb350390790311c":"778ae8b43cb98d5a825081d5be471c63" - -AES-128-XTS Encrypt NIST XTSTestVectors #2 -aes_encrypt_xts:"8f59462c1327fd6411cb6b02c04bf0a129f145c276a38693c745de3118c90a2f":"f2b86793b29e730e4a627b6ee161706c":"f7049f8aa312aeb1ab99ad11a1d7a720":"e59fca86c3c906f3df67418636a28767" - -AES-128-XTS Encrypt NIST XTSTestVectors #3 -aes_encrypt_xts:"e4eb402fae4395ff08e1280b0cd4d356e7a1e8c28aad13b9a6fef8b88ccd2e84":"b611ff70e6653cb68b14354f2b3cba74":"132097c5236eddea183235ba1e7b50f9":"268160fa57392906007199d45e988e56" - -AES-128-XTS Encrypt NIST XTSTestVectors #4 -aes_encrypt_xts:"b2db598ea4760696cc7005a6f0f1cb6ef3f0bfebfa7a6682c106df88e26c5d6f":"56b43dae7b5bded0dc91696d1fb0c95c":"0b616b87af8318fdf8be169ab44f83c9":"cfe684f786644260c43293ee4f358a04" - -AES-128-XTS Encrypt NIST XTSTestVectors #5 -aes_encrypt_xts:"501500d45b914aa20d032b49a077e1ea95aa7d505b1d8c01129400f22de52769":"4da9611c97b2e935834b289bdd713345":"21527547247d05a5e232d03d7d491a96":"bb85a8b5a137a44aefff702987ce4ff4" - -AES-128-XTS Encrypt NIST XTSTestVectors #6 -aes_encrypt_xts:"b2a72976af7d5f2b55f6d8b7754e5f7abf8b971271c04e2992c5a55c32d55cb1":"a1c98f71ba24a0c0f5c9b3dfe2a306c1":"1cd8214033178cd0e248534c13b695b4":"b52bfafe136052f830fe0a5838c93a0a" - -AES-128-XTS Encrypt NIST XTSTestVectors #7 -aes_encrypt_xts:"d96064034e2659279f4aff7e6899c8bb880cfc1492da01c1dd5d56025447b42c":"7769c61a7961ae3c12c7072f376ee924":"17ddb4319426ce168a4e847bb1bc7391":"6e179f65391fdff97da1f14eba143327" - -AES-128-XTS Encrypt NIST XTSTestVectors #8 -aes_encrypt_xts:"7d106040240328a719ca6e7ddc5d289e7d97d92d007ac7b9d40b6f09dc730dde":"f18bb26592462d73e7561cade98fea9f":"235b87539176cdab2f97b0a699911eff":"f923b111ce766920eeaa09727c255779" - -AES-128-XTS Encrypt NIST XTSTestVectors #9 -aes_encrypt_xts:"2c222a2f762df2b0cc2e51608fd90a08eec2b58bbd68a14e0aae1cfa9bf5b9d6":"71f9e76e47abe440da813cc813ff5b41":"5507b1e1eddce7e74465ab0fc123d134":"8e7e8d3b8aac868b0e6170d8c9837564" - -AES-128-XTS Encrypt NIST XTSTestVectors #10 -aes_encrypt_xts:"3c2dfc5427dfdec14340f8ee0e643e99d447d97241147c6384b1e682e1227e63":"90ba579d8f0a3ca94595bef9a142e736":"d0ea95d068d21e347a4a22e9ced26186":"6cef0d9c642f8650ce0313c5e8267d74" - -AES-128-XTS Encrypt NIST XTSTestVectors #11 -aes_encrypt_xts:"c00d4d331626aac76fe248f6713bff4484e6f808f516f572afa132ee2bc81427":"18e1c74ecf68e17d3c706b772566cfc1":"cacd00419f7ba7dcc5ea9441e7720c1d":"7a55c8b37922bd605eba05d60b2d8a7c" - -AES-128-XTS Encrypt NIST XTSTestVectors #12 -aes_encrypt_xts:"3ff9bfb378e4da5d2dfa747014c779b568a4ebc97fddda925b5dfab53678ef1b":"4702863fac6b7431fd367d21dad29a7a":"90bbaa1b42ce8d042a96f5410c291ecc":"4e680913b3455809786850f635439ad5" - -AES-128-XTS Encrypt NIST XTSTestVectors #13 -aes_encrypt_xts:"7a0845b0fb049e1b0b0ab08c2fbe2f3885bde1b6feb98addf0c420071d3171f0":"d844e2adf5b97f03d3192a43f099a5b7":"c2e3bf8693bec97f82d57f627a013e99":"e717e45365f6899e649c708b3b17db7b" - -AES-128-XTS Encrypt NIST XTSTestVectors #14 -aes_encrypt_xts:"e7a5d263d6acc867b9a548ff74fbc8cc2f868f9b265039b39951e0950ead932e":"28feec3286ba966d37f1a9d50d746ba2":"3bfe7bc9e9e21ce0e827afa86c61456b":"86ab0a8196a3091676a5cfb1f78dc85c" - -AES-128-XTS Encrypt NIST XTSTestVectors #15 -aes_encrypt_xts:"cd9453cdbaca253cece8cb8dbc71f4124b90a7d320563b77adb823624fb45636":"744d3a7502fc2362152d207d42d53616":"b87e309fb1c276375e40a2764ea49793":"30f91e43c6fa5addb710ce5ceb40f36a" - -AES-128-XTS Encrypt NIST XTSTestVectors #16 -aes_encrypt_xts:"3e5077857971abeb222fa5e40de2260f2ae45ebd5947af6531b9127c58fb022d":"c607b3f53631b8fe08469a50c9fa8ae6":"a90dedfa25cade38ebc1c38e18adfa99":"34974d77a8d24faa1414e17c0a8acc15" - -AES-128-XTS Encrypt NIST XTSTestVectors #17 -aes_encrypt_xts:"b654f7ff25b5e8434c3025bf74a1e0d9f861dc3bba32892ad45c4428b7af2331":"3691548fdcca36f042b2e98eda6929c3":"58a668223e640257b3010adc5067a755":"07db8cfb36b4c8952955a05455a8864c" - -AES-128-XTS Encrypt NIST XTSTestVectors #18 -aes_encrypt_xts:"4799021335944cfa8a7be3de526e7c605e08039c7ef47cf2166cd073f9bec1ba":"a12062f5f4cfe33bb192409b2c14e15b":"fd6f0265e34cf215c1e8e46c9977c249":"f28804a01de4774d44b25ab191b71e2b" - -AES-128-XTS Encrypt NIST XTSTestVectors #19 -aes_encrypt_xts:"cbc9f59509069062f81ef79d4d34c26565ad8b430f8c1ddb53ad516c04c5748e":"09c689eb25140229199a503cfdf54e99":"4dbffb9c55271e97d1448c631a04e6cb":"ac442b829a129eb6b9ce89ece942f0be" - -AES-128-XTS Encrypt NIST XTSTestVectors #20 -aes_encrypt_xts:"cbce7ea2097382967ab1e07eb3acde9afb40123c80aa4e3a87ca7a0504d1f6f5":"5f54177c9e0ebd503f4f15149e742da9":"b10fcf88e5a75c5592b5ea80f23c8f3c":"cb8f511aaa7f5d90915dae94d14c46f8" - -AES-128-XTS Encrypt NIST XTSTestVectors #21 -aes_encrypt_xts:"cc0bd44bc5fbe3e078a1ce60c763d31608beaf9306c512b6ee9b28a19f178b10":"78bcf3cb8cf17a14fe1d76fe66184850":"63bdb170eef978c7566834f46b7f769f":"5b00b861039b3a9a5ab059b3e768dbf7" - -AES-128-XTS Encrypt NIST XTSTestVectors #22 -aes_encrypt_xts:"1e4c84adeb9e091f81343286f10b2ea1eedd5e74ddaf95555bf3877339b4a0c2":"ab6a945fe164c672ed4c79bf4a198b6f":"166cc21d0fd8592222b6ea3d152ce508":"ae084ab9f42429ca04eaa2695d9a50b0" - -AES-128-XTS Encrypt NIST XTSTestVectors #23 -aes_encrypt_xts:"f374f397a7388c3ed070876f0fd69bf3130ac98ce13f077980053c6f348d7924":"09c210b0f779db4323bb534bf49fbc2d":"04cdfab6bb493ff29c076ccf7432a9c5":"70219f67e251d89dba1da356502905ea" - -AES-128-XTS Encrypt NIST XTSTestVectors #24 -aes_encrypt_xts:"d29d603fd8f9a8c23baacc9e12483b899856cbe0b7d77902d928e122f519bd9b":"90ef35315e4b381e76e0337843b15ff5":"1d0394d80721add6c4c042cc2fc0f7a4":"4bb42d45044ac0e33a0a6ccbc7a8f4d0" - -AES-128-XTS Encrypt NIST XTSTestVectors #25 -aes_encrypt_xts:"b51e2d433c25da581a7d4c2f09d75f5002f78fe127a734050a06a3e6a24b5080":"3db972caf99966cf16ff8d410f4ec56a":"d4174f40cf436775eb89fb8b942402ba":"83fab7dc2adf12d1f479af46d506d57b" - -AES-128-XTS Encrypt NIST XTSTestVectors #26 -aes_encrypt_xts:"0dbfed847c7fab67e652f7319fa95920ec6895ee0d71d5816626483d78de0b62":"5b939e9cdad3611c6c70b5bd5c4512d8":"7b6e304efaf654f7f49355b29b52c4a8":"7670ac9e54adab631da2e477d0eb3ebc" - -AES-128-XTS Encrypt NIST XTSTestVectors #27 -aes_encrypt_xts:"7370bbcb47518efb9803f855c641adf39a630f31716f364b80317cb9350ec9c6":"f8a008518b1cf4f4eb1b0f0d9d676af0":"3703ede60e3f032bc36407fbc0cf4673":"8813d07894f6edf29964ed8405b18cf6" - -AES-128-XTS Encrypt NIST XTSTestVectors #28 -aes_encrypt_xts:"e8cd5650429cd0178b55b04d5ec4a749a0cbc07abd51c6e066c4f7db84502e75":"cf6b099e6ea1e30f488e0cbdcc82b3a0":"00c8775cf78a4ae02f66bfe12a753fed":"125f8adfb1362a029e2a6825becdc7ee" - -AES-128-XTS Encrypt NIST XTSTestVectors #29 -aes_encrypt_xts:"5e2d0312332f96a34846899742e7770c56ff60a44e1228c9a8cacc9cb05420a5":"87578736c266727355833c73b93645f1":"cb30ee3f8fae0c35e4b03c9b972c38b3":"96a37488372dc9b5092fc8602c642b40" - -AES-128-XTS Encrypt NIST XTSTestVectors #30 -aes_encrypt_xts:"a21697df7b24480074610db965450cc9b8e87766bc132f0d0d7ba46b2c95f242":"cfa164a6be7f32526b47330f13cd856a":"31ea2a331ff1740402b41dca3464f97e":"af5e95c283683c09fffd0ec47dcc187e" - -AES-128-XTS Encrypt NIST XTSTestVectors #31 -aes_encrypt_xts:"10cc9cb2d3e3b776255cc97aed178a5b742dcc93b071f2b234a193428789c8bf":"3eb88aa67a28c697aa0dade6ad085654":"1e13e7336cf842be7d2beba90de3844a":"9338ee617cb30edbbf45c463b530bab2" - -AES-128-XTS Encrypt NIST XTSTestVectors #32 -aes_encrypt_xts:"cfb9b033247de7299b0ed2fdd69e8ebc75c6b9cbdabe1bb4e4cdc94e36b148c0":"3173bdda40c531502fc5fd2f93aaf68e":"5bd08ef0164a2b1e56e8a10bd5019e51":"054d725c5f4a4f95c4f9c543c86160db" - -AES-128-XTS Encrypt NIST XTSTestVectors #33 -aes_encrypt_xts:"00044e47bb017177478a5ada361fec77256246c6dc6ca3eff7a91d066c05fb09":"941cc97395f558a8063f05186b15b839":"a8285e600da846e8914d7153c3884910":"aa11b588bc3d0b809378a1f10099173e" - -AES-128-XTS Encrypt NIST XTSTestVectors #34 -aes_encrypt_xts:"b73b04a8a4769e860537bb7920395995e6aca0058854c6486a408c9ebd74eeed":"a7e17872d767bb0327c3a9359bca18f6":"d6dd35024fe2e2796d4028ec6c5af28c":"d9a5fc9817a618d43aa3ac9398c86110" - -AES-128-XTS Encrypt NIST XTSTestVectors #35 -aes_encrypt_xts:"c88ed65fcf55167b70e554ea91c8a0340988a9e91b26e307143d37cc67c34509":"923d4583b8e626233a2594fee3ac7619":"25caab978bae5ac4f1e4edc5bf40232c":"ad3f3252dab7b773faa9e14021596e6a" - -AES-128-XTS Encrypt NIST XTSTestVectors #36 -aes_encrypt_xts:"55f536b9a09d88855f36ab11ceb56e72491f02b49ce3aa2ce1d9e35da6dc2c6a":"6ee0078e34ec33567966f0084cc35273":"ef51747b1b1f4917a159eab86044df46":"b8c5a5a773c43e720d422ddd679c7b99" - -AES-128-XTS Encrypt NIST XTSTestVectors #37 -aes_encrypt_xts:"034fa188dc3e2f2d0d03909ffb6f96ea8af11e64b4f4b8a127177e41968bc0eb":"be851d479c0dfefa6bb6b7af186f3a02":"1b2b987c6a8a7a099cf40521733e4965":"31e3da9bf7f79e11c5b3204dafe1492e" - -AES-128-XTS Encrypt NIST XTSTestVectors #38 -aes_encrypt_xts:"16c50e61de6d1133001117e9721adfc6f114e59ce3a145e3bf6a8b864875c179":"b11c72a91ed6e26c2686619acd09602f":"1194829ebeaf79cabe9deeeb290bbec1":"650016d9535be2e519e1f71af8ef1237" - -AES-128-XTS Encrypt NIST XTSTestVectors #39 -aes_encrypt_xts:"527ff902a2e335a0e70072c7d30f174f71681328c41e3da793502479017a98b7":"665ba9deae73392eb8f8d363b788123a":"7baf5bb1cb9a30ae3f6d16a21e6567b6":"a8e9edc7557fb115a077fb008841d4e2" - -AES-128-XTS Encrypt NIST XTSTestVectors #40 -aes_encrypt_xts:"41bcd50ec2a1f8e6cda7ba705ec75fba7a5806525dc41a01c7132592cbc2c58d":"623ab61799128b505ef6e451cc75a686":"a10e9dcdf9583676d88e5764ff7eb649":"aebfa96533fa4ac7137f6b346795644c" - -AES-128-XTS Encrypt NIST XTSTestVectors #41 -aes_encrypt_xts:"1d149b7193498ea7afbab6e825124c138d2e3cdac280ea9da2df18f4ba409a3a":"c31bf1b5a1acc695ce16fcdd648608b8":"833eeda610a943a3e253b0677e622c53":"a3eb1c9cb10e9ba628e3b366401efb3b" - -AES-128-XTS Encrypt NIST XTSTestVectors #42 -aes_encrypt_xts:"a0dce41069c308f9fe73dadc53ee483dad21b538ce8a61da115f7889f7897741":"46400a16465bfc01f86e1842c9b99fe1":"6c347dfa2d6eb73613a792c8ec469e1c":"2f3aedd69ceb9e9df454147ca3a1568a" - -AES-128-XTS Encrypt NIST XTSTestVectors #43 -aes_encrypt_xts:"bef08b0ee81b36252494ead700c2afdd5e65dffe6f935d16458ef040e7895a7d":"5fba0f232317e18b0ec380e103b157e7":"b07d36e3d7377b39e33ff0df0d5db411":"ba73b5e4161642274be5866d7982f432" - -AES-128-XTS Encrypt NIST XTSTestVectors #44 -aes_encrypt_xts:"e556a69657dc28daf40eb45d5a7b6637d7dca9d8c63ea8cde29c9dce9c151e44":"28946548b4b0bf9add17780fbfc7a69c":"e78e668472d8f55833bc0712cefd83b2":"0e789f2207a7e3fc09b982603bcc2548" - -AES-128-XTS Encrypt NIST XTSTestVectors #45 -aes_encrypt_xts:"e9586ea5a14e0155ef32362ddb8d45a6efefb8ab201f2724f527413537d5e083":"2d9744ace19c18d0ffdaa97cf09a2f48":"0a42366832bf021c91489319bbedb097":"5abab8760848e8565422111581abbd66" - -AES-128-XTS Encrypt NIST XTSTestVectors #46 -aes_encrypt_xts:"a14739531d43c33ec0ac859222ab7ec4f7d02465f9a735d643eb99a7e239f35f":"e65d00ab94375b7ccf01e4158a4ce7cd":"c683bc22914859165c877b27251c8912":"c3eb3c54bf63d9beba86d0fb99ce7721" - -AES-128-XTS Encrypt NIST XTSTestVectors #47 -aes_encrypt_xts:"29dadd2e464226096ebf6abc3d83698e42330d34b2da0643898f05c96f8f0237":"7d2cd56d72e61ab4a8b0d03bd64474ba":"ae8c7fc4bcb43652354e9a282a1c2ef6":"29061dbffe9977678446898fbbad1397" - -AES-128-XTS Encrypt NIST XTSTestVectors #48 -aes_encrypt_xts:"5573bbccf4ffd32e1fb16811eafb77e2fd3111bf8ea182999764e46cfe43f82f":"1c567c48ae6df831f2f3fc4786d8ad65":"26650887735db9f7eedd4d82dc8da6f0":"451951af61ee0c8ae8787651737ca236" - -AES-128-XTS Encrypt NIST XTSTestVectors #49 -aes_encrypt_xts:"fc70af558db1be9f9289c0750cf94e88968b9bddd2522993934945b3515867b1":"476fbb56883cafca464958be65cbd66a":"cef2b604c43be7e2c72a51d9c82d2cd0":"404d80a6f4c04b0bcc3da32b6632d708" - -AES-128-XTS Encrypt NIST XTSTestVectors #50 -aes_encrypt_xts:"5ad0f03fbca7f0d6551d94c1faf9d329f025068ced476d72d91ab22cc3c05449":"7c9e49f219189a3fbe991fa8f83cda5b":"946dfefe5aadce492b3875ce3409b0c0":"62bc8ce1873a54c70bba35014877873e" - -AES-128-XTS Encrypt NIST XTSTestVectors #51 -aes_encrypt_xts:"5ba1bc7df65ed39efcaaaacef61e94a5f77512c3a955d3f64f36c02f108dd6ce":"b98a190562f076971fb14e1ebc676939":"dae26a674ea111a932d0727e786c19dc":"13fa1056664a0048e89cdcc87963cdb9" - -AES-128-XTS Encrypt NIST XTSTestVectors #52 -aes_encrypt_xts:"3ce3fbeb7f4a54f200b6ee1ce5dd67dee28765fe15fc523f69c8ae62dfaaa834":"0be9627b38caec6f323d02924c20f9ee":"a290714eb3fabb751dbd448f0bceb072":"8c7d58774a60944a17175353f69762e8" - -AES-128-XTS Encrypt NIST XTSTestVectors #53 -aes_encrypt_xts:"9e9d7704c959c2c6dfd6e8bd0d351986b275af8b075b88580933c3575d1c4dc7":"aadb2ff6ae53347d36c9f25508aab9d9":"f32226db430e55b5ee64ce5884957ee3":"3254a7dcae3202bd8c3d1bc5c409f30d" - -AES-128-XTS Encrypt NIST XTSTestVectors #54 -aes_encrypt_xts:"9eb58c8dbb965f8e9151a6d9d9fcd0531f2398789d134f72251388eb2c1cac26":"96e157e9cb57524d28b99612cd4fc3a3":"6cefc27ed91ada77c67569196ae52a16":"8cf86c455044d142c85c0f80ec1b0fed" - -AES-128-XTS Encrypt NIST XTSTestVectors #55 -aes_encrypt_xts:"079b221467d61667cc40f737ee80e57be60a21507699f9029e9c347b1bf0e6ed":"bc7363a67f679f58786b197814c05d87":"3ce6f7b5b83963e7d9394b6d9416f81a":"c3e40fd05d853f4f1894e4ea25159645" - -AES-128-XTS Encrypt NIST XTSTestVectors #56 -aes_encrypt_xts:"416093a41c5a9ac1180ac5e62c2d1261c83d468fa4bcc1ed2c5c52dbb01ef79d":"28abb2bc7706abd1fd5bd654d50dc7ec":"89450879c782e033c9c5bb5cdb96b2ed":"8691c6991df1c557c6ad8f3c6009ff13" - -AES-128-XTS Encrypt NIST XTSTestVectors #57 -aes_encrypt_xts:"08974139e8579332727df61462f0f6b56ea457330539484a1347491a34ed151e":"80d3c24eaef03ddcdf39ffac464d71c8":"72896d9904553aa075df25360147eee8":"4df68616734ddcc516a0ad23be75cc42" - -AES-128-XTS Encrypt NIST XTSTestVectors #58 -aes_encrypt_xts:"0626b7f6fc045e27000466387b13120bcd7ae6dd4279b32053c9a8169d3f3141":"c1db071bd814e4c0747c005a31dcb65b":"2e796f8b69f30b26e7fd0c339cadf2f6":"4f6d71db8ae377dbdfab6d7f882ad2c0" - -AES-128-XTS Encrypt NIST XTSTestVectors #59 -aes_encrypt_xts:"82cb74d7025a383e584b57c07272e2a7c5bd538448f9d22ca45464599ed46370":"bb0e36c0f43942624cf39f00aa9aba29":"79a2fdeac249e26727e8a0f54a505035":"fc0e87d6765ab6a0a05b450f3052ce89" - -AES-128-XTS Encrypt NIST XTSTestVectors #60 -aes_encrypt_xts:"a086ce7bf0c3273bc1308fa75d4c9d81ba84be3d59cc04e40588d666caaf326e":"baf2a0a20b900a61cd7a8477c1ee52e0":"dd288a3e24dd972872b8bd7b275bc751":"eda786fa68823dc559fbbb976c753759" - -AES-128-XTS Encrypt NIST XTSTestVectors #61 -aes_encrypt_xts:"f687fc3d86e089dd30b8a423c81b6e62730c49ce60a1d85f646f8d2b9c9f5a39":"3abf8a032548c5dbaa446f8e122c9be5":"06a24306f64a91e6425807ac50a20d33":"f3519331137bce03a1d2bedcee940914" - -AES-128-XTS Encrypt NIST XTSTestVectors #62 -aes_encrypt_xts:"20bf35717583c42588c7921b984e5be742a84ee337f89d47909a7c5b0169530c":"6e59ada7ffcda543696ce1eb2a80a4e6":"246ee0dfa8868f5008b94c742ca467d5":"b661a4006cdca086e98b9b18c7047a91" - -AES-128-XTS Encrypt NIST XTSTestVectors #63 -aes_encrypt_xts:"c68a04603abb698621f0467df8bf5fd074772ac8daf8907ebc3a3af59164413c":"b42d6af64f3e987f19d6c2b24e5e0dd8":"005bb8508e334f8feb331e0fb31e91ac":"0f1133e36e9a974655782ac0967f103e" - -AES-128-XTS Encrypt NIST XTSTestVectors #64 -aes_encrypt_xts:"7fd272aec689f6ce977e666ebb101d865f59910150e3ffcaae9b3cdf65319fff":"5094d473a4626aaf8738207c8e301ddf":"18086180ac43731d8146e6fc56727427":"f50531114b3fc814307462a7c0932efe" - -AES-128-XTS Encrypt NIST XTSTestVectors #65 -aes_encrypt_xts:"b9e23c089b3569b49d1078fcf5eca6ec3a30c397a9a68bfae0be8e329ac34dce":"00d42acee9010a000077f150fdd3bad9":"8cf43a655840e69adad8e40485831cf5":"b29d5029f34d08a85fe805d834396724" - -AES-128-XTS Encrypt NIST XTSTestVectors #66 -aes_encrypt_xts:"35346cc28c2d6935268644bd59f6d25bbe6bf6cb644998a2824b31230e364795":"9cfb936e1823601baf57fd693c221933":"4f2aee2974fa75d991574e9aba710689":"fea0612c7bbef5fd38584afeb9458a6a" - -AES-128-XTS Encrypt NIST XTSTestVectors #67 -aes_encrypt_xts:"fe070ac3ef7ad6db34fad98936468c510d89abafa06834629aaec5aa6a4eff36":"53d746f8614d70d3fe0b51563331787f":"a4e2d75f3ea3a292fe6907038a5143cb":"6da2c698b2ac60f155b1baf32d3aac82" - -AES-128-XTS Encrypt NIST XTSTestVectors #68 -aes_encrypt_xts:"2844d35172e0f77fea540770c50b5bc77b019a1bb93e7862bc32e1b0d99e95ad":"6950ac2dbc76cccd26a309f2bcf72cae":"165d63956001266dded19bf8b9ad8b2d":"1d0f8858e2a1e72f478f53c49541796a" - -AES-128-XTS Encrypt NIST XTSTestVectors #69 -aes_encrypt_xts:"6a95417c44bc1709d800e74e51c9dc0552f7455c43fc01e5ce9872abcc8bd147":"df40643d4e070ac2dda0c1d7e353ea91":"f4500713e081be1ab7714bb4108a2135":"3f72ac9eedac79326a7a8ea8e2717219" - -AES-128-XTS Encrypt NIST XTSTestVectors #70 -aes_encrypt_xts:"aecdc0218f226e4dcf4a038f97cc12647bb179aad4e5d41390887f6e10e8a73e":"9d297437f8d60a8d6fd8afc524acfc67":"c5a7d42640283be1e053fba2d0d79b99":"1529a1512d62cbf09ce27a4162a938f9" - -AES-128-XTS Encrypt NIST XTSTestVectors #71 -aes_encrypt_xts:"ace99d768fcb8574ee01ac9ff543eca36606c3d2477007bd4182ef70a22ee61c":"aac64d271cdfbc96b70e1ed7af1d5f71":"e7d409695337c26cc3ecb040945329b5":"4035132f78621c2d28912f18dd0c9cfd" - -AES-128-XTS Encrypt NIST XTSTestVectors #72 -aes_encrypt_xts:"be46ee80aa8d6797f3b016f2598619b7b266724d3cf8f055eac05a71a39eb20b":"25f19156dc93ded00928ea3383808454":"5f4f5c82a550285d22036294da461b78":"b496bd18eaf56e47774c7bd81ce061ed" - -AES-128-XTS Encrypt NIST XTSTestVectors #73 -aes_encrypt_xts:"2e638c8a8a0bce7d7c034271727cc1118b7c39372250ae0720001279fbf1b708":"cf3bd5c42af982212b08a5594588adb6":"40ade7a8103de77ccc19575c456c08eb":"3d797b375fd2a1102b30767582093bb3" - -AES-128-XTS Encrypt NIST XTSTestVectors #74 -aes_encrypt_xts:"86dd8e33b693f9d0347776bc99784a7b9c922a637e4fa064bc6d3e8f9529adf7":"da8716934c675c61ab4bb9a6d9d3dc95":"b298503efd9cbf4c9ccc6b0d1c8029d8":"d2bf9c802b3f52c101bfca8283400406" - -AES-128-XTS Encrypt NIST XTSTestVectors #75 -aes_encrypt_xts:"b1fb47ba5bf88ce22538f32b6731e0983d83400ef7b6eff10fce475a9285d171":"ba6d243874676d2d1609abe5738bbd23":"2386bebf0649682999f609016d5dce15":"1f9f3cf672f54ed0e91c816f2f385267" - -AES-128-XTS Encrypt NIST XTSTestVectors #76 -aes_encrypt_xts:"97e1270108a6ac27c6da05ba14d73db04529b8503c0a8fe64834277158487964":"a0e94358eeace074ffec20c2b4ef7e10":"dfb54a9453dd57349e94f4696b69cee8":"ad32135b0502843bffd1bf14f0b87283" - -AES-128-XTS Encrypt NIST XTSTestVectors #77 -aes_encrypt_xts:"9b70deb145d043a46267d275ad91c853741b52b9a30d7e035f5aa2db84711fd0":"5e74d148d8e83a322579a8a3babc5820":"c6409c0c2469deaaa50e4cd7fc0eb378":"8e3e95169d3b1b62a15ac43cd7e7f00f" - -AES-128-XTS Encrypt NIST XTSTestVectors #78 -aes_encrypt_xts:"631243558c40f4f39dc18d112f76f0e5fd099ed2dde1068db78a72279ad6b2ef":"e376b520a4b6386001c02a870c04634f":"7269ddee70695e39455282f8cf0cf476":"b452eed812d3a9dbaab75fe5a0de43c5" - -AES-128-XTS Encrypt NIST XTSTestVectors #79 -aes_encrypt_xts:"de13f79f857b62865854d520d3bb63b8da94908a3abc3c16f3b0ee48eef1b367":"c73464ab9f2d22b8476412688feee1ac":"20a3894f062bd2ff9c1124bf4144117b":"09200c24723184185414ffb0aed27863" - -AES-128-XTS Encrypt NIST XTSTestVectors #80 -aes_encrypt_xts:"5d5573a8f4ac9f53717889ad2a36c539e9ecb64f3f6bf32b5c44937237847ac9":"df93943d48dccf2530ce2bb0008f1b6f":"9d2c27cf6b8a03dcc24c5a5bf39a9dec":"90c4a48994c36676dda8c05bb3a68392" - -AES-128-XTS Encrypt NIST XTSTestVectors #81 -aes_encrypt_xts:"8a322b07f3a68e4a65dd6c77b1c5b288ef1641a6916d5a1f21e4a863fce6df1f":"392f78248ef791be191401cc3fa9789e":"1d56d64312d3ff8847e0f227b0007eb9":"b460f0be6250eb211e86f23acbdeef62" - -AES-128-XTS Encrypt NIST XTSTestVectors #82 -aes_encrypt_xts:"3b0f7a5c622c924f898425a6749f2a16922d3d762ae930e4afb6235989a4b2c7":"2062378a4befaee3247bbf2dec9c0fb9":"be0cfd7e6c9b98ee5f7c9cbd80ce3e27":"1e1660bf511caba0f9bd51b663699ed4" - -AES-128-XTS Encrypt NIST XTSTestVectors #83 -aes_encrypt_xts:"702bf6faf45de5d5d78ecbae2dc822be3aa294a408b7cc999dd9154e3c3a087e":"e2410cd296e37abacce9fb183313b7da":"83c44115c07ca3bfe17cc28b63870235":"be0b409169d17890b4a2fd23c5597c6f" - -AES-128-XTS Encrypt NIST XTSTestVectors #84 -aes_encrypt_xts:"45f718f5d179ea8799049ca733a69bfbdfbe3bd80e643bdcb63e5a3aa21d65e5":"44a2edaa79c814f219f21f8c1495a5b8":"bd7f641df9053c4455c4d70a21f42d72":"71fda8a62e9249891ae53064a5a35688" - -AES-128-XTS Encrypt NIST XTSTestVectors #85 -aes_encrypt_xts:"cd737e4e4f91f42a39cadcb6303c2056f05d6e3462ec9e26c79aaa7e5fb8439f":"8208e536ad3921cbb1d1379a2d4994cb":"e667b97ecd9ff43e4b00075d4af01542":"ae4da214eb5fcffb13c23355ac7f373d" - -AES-128-XTS Encrypt NIST XTSTestVectors #86 -aes_encrypt_xts:"65405d038341aed9a7cbec68bfd7a08b248fbcf93718dc7469f971ef1fdde1b3":"33153162cbe10263c9e26a5be641402e":"4f082c847ccbb0b6523a381c64c06ff6":"da9c68f700d7e453910030bf237b0840" - -AES-128-XTS Encrypt NIST XTSTestVectors #87 -aes_encrypt_xts:"28e156cc8f4267f97caf998a30b2465ba1c1075ecc52fce341f0c69934655e8a":"bda8cbe797d915b76fd1a7ae442fbb2b":"aba12febac804db6984bf54f9d659de1":"aaea762ea2a78d54613977b8b5e9222e" - -AES-128-XTS Encrypt NIST XTSTestVectors #88 -aes_encrypt_xts:"9ae2af2e18861e4bae6475c9414485ea4f8e1126b498e569066b9d7f63913e75":"9b5256c00518193806eb0f3ec37fca32":"37ed6cf6f7eb4f5c750fc5d713e78230":"11b0cf2360eccb99852bad4210e79aa2" - -AES-128-XTS Encrypt NIST XTSTestVectors #89 -aes_encrypt_xts:"00041bf1f7d5d684d18f3e3dbd4472044b85b87afe2969489990602cd4500978":"4b76164da4775219d741308346dd646a":"82e3aab21ebd79781596855af91a82bf":"5999d9098b813d2b6d9f0beab14f1376" - -AES-128-XTS Encrypt NIST XTSTestVectors #90 -aes_encrypt_xts:"a6e21df4ea484e84d6e9e7d81e1442837fa7ca304536e1dcd44a9dab7dd72011":"9d2f1adba8983d5b351e18e1179c9e4a":"cc74f9832f43ab6013e8b57b352fd669":"a243ddc10735b712cb44cc494a13cebb" - -AES-128-XTS Encrypt NIST XTSTestVectors #91 -aes_encrypt_xts:"d86503698dbd6892bb925806c3946eb9827711a2255cbf3e0ca86eecf6203317":"9af9f47fb2f55b4417a8d10d9e1fe231":"52f860c4eb051868993fad3ae4c5595e":"49797f7b06b5dbb9230d630186295908" - -AES-128-XTS Encrypt NIST XTSTestVectors #92 -aes_encrypt_xts:"307919d2e2610f17d364ded5af988a508a449e01fcf3d1e9772915eb2c28c189":"d2c769e7a77c37730ff0c75490980eab":"d446ba8f20cf04c755f3e006fade15b6":"43bfec146ee0311bf79e1ed929429c81" - -AES-128-XTS Encrypt NIST XTSTestVectors #93 -aes_encrypt_xts:"721997d2112e69b5c640f16ac9a61c612ea26f95f192d710edbde6a3517bf456":"07393d127eaac6aeba4f5abba6e1c997":"f22bd9af89fceadd125fd47daac05bbb":"41f14dcdfd1658934e78dc0f942f20eb" - -AES-128-XTS Encrypt NIST XTSTestVectors #94 -aes_encrypt_xts:"f5d9b48be2ae99bb9b3327cdfefa4921084eee889d824ce5cae5b7216ccfc8d3":"3f695c759571ea5f1bec05f91907f44f":"f46d9867f97abe757ea31d351da12260":"84619814d6722f86519a9e9d89080aac" - -AES-128-XTS Encrypt NIST XTSTestVectors #95 -aes_encrypt_xts:"49be5a4bc1070513f49e9e9a4369d3140f4ef16727380656a9b69bfca12a1e2d":"1e5400cb90902cf7e90f9f693ce21015":"0907ddbcc8b20dee14cc87e7ee0fe338":"d2480f80e3dc756dbe9b253794eb13d7" - -AES-128-XTS Encrypt NIST XTSTestVectors #96 -aes_encrypt_xts:"d01c1e6a51198a691334720a1186d8e748968b9d58c0594600379a122d66eaf5":"cb66808ed646a99946a9c4356e239544":"a069d1441177d7a2a8876987fcab12e4":"0e498c34c7d7a11a2076367c6c56ff1f" - -AES-128-XTS Encrypt NIST XTSTestVectors #97 -aes_encrypt_xts:"9d0615e9f92e32a08475c804085f6f6e6e7c755a83bfb91532185020cd181b0c":"bd5d378fa93a167a9f7c3f1714442227":"55336a79b05e37efc0ee884e5b89ab29":"2e35293ef25ba6776fad870834b1fc84" - -AES-128-XTS Encrypt NIST XTSTestVectors #98 -aes_encrypt_xts:"d040bb72d80c3df0af3e13eda00a30e6103a8f5aa48a431c2fe0b20135daa81e":"048dad1ade7f0909ecd9ea0e5a21382c":"3f4a6302d9aad47197c10921c1bc6ea3":"cfedf66262d6374ce3fdc6b517bcee0c" - -AES-128-XTS Encrypt NIST XTSTestVectors #99 -aes_encrypt_xts:"04016dcda256c3c4c2b418fb7c53a07362ad3de2c29b4010385dc018cdc62904":"57e05d3cd0629bce16d4e6b3e6b1b290":"baaa64653028ff2ea42d3a427e6b2235":"98b1a77617469a680caa51f0709d75e3" - -AES-128-XTS Encrypt NIST XTSTestVectors #100 -aes_encrypt_xts:"bcb6613c495de4bdad9c19f04e4b3915f9ecb379e1a575b633337e934fca1050":"64981173159d58ac355a20120c8e81f1":"189acacee06dfa7c94484c7dae59e166":"7900191d0f19a97668fdba9def84eedc" - -AES-128-XTS Encrypt NIST XTSTestVectors #101 -aes_encrypt_xts:"b7b93f516aef295eff3a29d837cf1f135347e8a21dae616ff5062b2e8d78ce5e":"873edea653b643bd8bcf51403197ed14":"236f8a5b58dd55f6194ed70c4ac1a17f1fe60ec9a6c454d087ccb77d6b638c47":"22e6a3c6379dcf7599b052b5a749c7f78ad8a11b9f1aa9430cf3aef445682e19" - -AES-128-XTS Encrypt NIST XTSTestVectors #102 -aes_encrypt_xts:"750372c3d82f63382867be6662acfa4a259be3fa9bc662a1154ffaaed8b448a5":"93a29254c47e4260669621307d4f5cd3":"d8e3a56559a436ce0d8b212c80a88b23af62b0e598f208e03c1f2e9fa563a54b":"495f7855535efd133464dc9a9abf8a0f28facbce21bd3c22178ec489b799e491" - -AES-128-XTS Encrypt NIST XTSTestVectors #103 -aes_encrypt_xts:"46187e8ad7b6326f31e71685fa92ba95f53a39c6f64c09e8d3d649e194f7ae6c":"033c759ba1dbf346eb125c8eb84e3646":"e211b2b7511a43a88df116cf6ff06a296a63089d74831569090a2fb8e31f4130":"1166257c5973d23e14dde02bf345e53b0da2e5ca765598c7e84ae3698afdf6b3" - -AES-128-XTS Encrypt NIST XTSTestVectors #104 -aes_encrypt_xts:"733147f0aaea884f089f155679256bd1c1b6c1fd8125ce09598976d1e38d04f4":"3ab2dcb01dd53bc87612be160953ff5d":"fae4473b11987843bd0446230c5a78d14dc6c13088433ff0f63c77fb64b768b6":"2863f64ca0dde3b1c3df0cc4f4a0c2ca0882ca17ca1673d3b8475576091e1863" - -AES-128-XTS Encrypt NIST XTSTestVectors #105 -aes_encrypt_xts:"c805959c6e84654cded8de7c89f735b327cccf7aa2b96563e4b4a06a400a5631":"64704fe92c7ffbb2b2618f65eb5f2977":"2ad4ce1768302eb76842741403beb103f6cfc3517acb80fc1d646e824b4cac1e":"62e4d0b8a0f07ab6595219aad7eb40fdcb18dc5c21ca7c772649ad4214767b0b" - -AES-128-XTS Encrypt NIST XTSTestVectors #106 -aes_encrypt_xts:"3082866484d4eae3f321de6622ca088a3f6bf7687038cfb8da89c74e64985fc4":"5bc9ed680495300083e77c067d252907":"ed71c4f949809c3e413195e757b0a6940d2a9a67dd399617d932ac3df62b3c75":"aa47110ea6f074010c88160f855ec4b8fdf9d1ecd4e5d1974186d5607d12ca13" - -AES-128-XTS Encrypt NIST XTSTestVectors #107 -aes_encrypt_xts:"06e41501434ca5d990fa225709bd1123b1291a8b725d6baf7dc50438774e58ba":"15fd9ffa9c744ab9aea67f292e1a1cf7":"0fabbd90c6cc9148bb96b128033671f445ff7cf7cf6a67a342d3a37c8ad2d3f3":"c8f64ff3bd748a77d3691e5a5d20b5e8bbd9cbec6016d12ed383c5d237ebb3ae" - -AES-128-XTS Encrypt NIST XTSTestVectors #108 -aes_encrypt_xts:"b5ec9c20d51985c8c458750c65a0d36814c61680d2e396e93d1d6d31ba540b6c":"f81da4a2a52005e693bd6dbdb573b333":"b970fdd6f0bb1431cb1b80915047bfcd4896f16587047621b395fe55020639b9":"1fc7c00abbaf2f83f89a26fc2a7619e20302bd31fbd63b04f87134c822e746a6" - -AES-128-XTS Encrypt NIST XTSTestVectors #109 -aes_encrypt_xts:"63432c29f28076e3646a84385b35b43ed6bb502cc7796539337a951b71aaf608":"70ab05d43087699b70833ccb109b1961":"0017373fa2d02377a431e86ecaf888647aa5def3057906d85cb122d498add55b":"0e1d51704d954531d71c46c081d09b78e3a082fb403f4f4b01162282e1a57189" - -AES-128-XTS Encrypt NIST XTSTestVectors #110 -aes_encrypt_xts:"a8bc08e258d9d6e6d453c053ddaa5635465eaf466a00c21d137ea03db63ce4e3":"5027ed5e607070a148c57e0ff8023f5d":"45ff25a157870b327193cabbd19ed9fbd27e57dda898a6a50511948890edaa3f":"d270b78085151447de74f24c3019ace4b7220415a5e7839af35a71b87d909da9" - -AES-128-XTS Encrypt NIST XTSTestVectors #111 -aes_encrypt_xts:"1f5c243e5193e6da2ea9bafc8eee81f274d8b87ea64a8a4f0f001fb774ebf7a6":"f17f1e28c793f5bfafa93ddc65d5cd90":"05e53e224f72e5fa6ba4afbbcdff75d03ddccc64088d2c731d908fb1ec55eab2":"006f8a72aed96fe880d583bdc65b60650b3710608abebb6516a37ce2dd13a22b" - -AES-128-XTS Encrypt NIST XTSTestVectors #112 -aes_encrypt_xts:"f5e2b622c38d02402b15784536cf31d8396615b68a80cd5a9d0de21b1f2b777e":"e91555e884a8bf29a7cceb8736cdb7d5":"9267cfe015e653d122df07d9c008ca9e4de5c6a9f6a8d6c9c7c7e7ed2696bc9c":"7776e9d0857cc0abd3d7379e530f9fa12a63d4cc43c7f1bf8900db923d4ab6ca" - -AES-128-XTS Encrypt NIST XTSTestVectors #113 -aes_encrypt_xts:"2beba66cfdf2b5aaf6d266231a9516d45ffa631004cea3fbefefea2ec167d52f":"a6a835a161aab125b0e7e232a2dd918b":"f1fe427d0828445c87dfb4d1ff35bc82bc774ec28676b5eb9046e926e46b800f":"d9abf64f3e1dae020c41758b091195b3c02b11647879648055a51db37174050b" - -AES-128-XTS Encrypt NIST XTSTestVectors #114 -aes_encrypt_xts:"81f3bb026efdfc9f5185d9a34dfb911c68fd3e9bdb405899c24071ab3a8fdce6":"4bbc61beb90eb9bb76ce46abbd875b5a":"c37f989757656ab86b29a86b9920344b61e9246c5c46bec08401d4d3d7979051":"771679370400b5332bb9e9c565b53ddba45185de9ad167c5be50bca0460e693e" - -AES-128-XTS Encrypt NIST XTSTestVectors #115 -aes_encrypt_xts:"54e16a893426bad3726231ed3ead1cc53ffad205db15dd23d03aadd36276229b":"19321a27f8e94d5ad76fa87d31576834":"5e1d44965ead2dbb8608d4a588c42c9d1991a751fd6496fdb487c16619c9055a":"98c1e26394417c433c05cb26699875cc39489615a38a068da38450cf31fc9500" - -AES-128-XTS Encrypt NIST XTSTestVectors #116 -aes_encrypt_xts:"45ce2dd271af151f6fd36564486a4d6e25bf20cfe686e3535adf5356a3cb127e":"7b2ad93eea4547737631d62201950432":"effe998d9e7e044a8641ade66d39f813b58a2fbe20e18eb64edfe58bc13079da":"0a1aa453a60d8c8787a41ad960d62ed49b9ceb4552da779798e3654430ac4667" - -AES-128-XTS Encrypt NIST XTSTestVectors #117 -aes_encrypt_xts:"83db168f2ff4d90a76f2c7eaa5a229990d9248bd5d055dfd72f71189ed08ed44":"837ba56702ad64ad01a02f63842320c4":"d63b8ef7c043625aae4d05075534c6632b8bb748f074bcdf040c393b42d1be8b":"386aa5f9050898319fc0caf8b121078528649c3b0c24111e7d97b24ed83cbab4" - -AES-128-XTS Encrypt NIST XTSTestVectors #118 -aes_encrypt_xts:"14c211391b9265f3ba9a47486440781082f70699ff78d289057b3b85ce8caeb6":"451abde12621658c31881a9a16c3546e":"fd84b927b8706fdebeac6a6b79a53b52ed451ae903111b7b7072d11a11ee396d":"7215e3b95ea35f4834afad832d29c0e6cd6af9fb147f93398add527d902e4c18" - -AES-128-XTS Encrypt NIST XTSTestVectors #119 -aes_encrypt_xts:"d70182c66c1f18a97a234f5c131c8d6124f007ae99204c57ccc6c041ea0c564a":"46c2af18c697eb018033c9edb938b9cf":"11f5bc342fd2e66841c1bab743c7076fce9fa39b41e067c0a7ec0bd2ec6aa8e8":"e76409fb0876f67c037877dcc05d3cfaa2419ef4e364a93c692ea68df03c4c00" - -AES-128-XTS Encrypt NIST XTSTestVectors #120 -aes_encrypt_xts:"7b6b70225fb0e3d18da8c78bd243c8ab07c5690874d38f432b552406b20cd83e":"d9b0e363c23173c59ad9cc9f0f7a330f":"9d588505f4b673487e51ae1eb9e353626c8cc6b918cc4015bf0df59b69d0806c":"36761c36553710e3662f9f4fe434acd91cd47caf716cc6021083d904178c538c" - -AES-128-XTS Encrypt NIST XTSTestVectors #121 -aes_encrypt_xts:"655ee84352b64213b92526a6b6a7a1534235c659010bcc95a731c7102a0fd622":"3f04d04261c4c5b403d5107795ac4e03":"e3bfd336e389c39dd041db5812c0fa552582ccc8b3eb413b57dd86584cce06bc":"794d5b23bea41bf73b3085993809f94f1aa9500afeb5b37ba5cd65beacad9c7f" - -AES-128-XTS Encrypt NIST XTSTestVectors #122 -aes_encrypt_xts:"47e4b858eba54168cb4afcd296299d397b964324e3f033b6415e112b0022ee5c":"f439fa16aa17830a726c8ddad313f6f3":"4dd05e5d82304519594c7fd544ddf6cf9db29976c392c129d32154973bb0c1d1":"a1f1a8e33583137bba606fbbbdb6025c12d2a1d29549a1638e75a8b22c3dfa10" - -AES-128-XTS Encrypt NIST XTSTestVectors #123 -aes_encrypt_xts:"4bf29fa38fe5e5bc2991d756a0ee2acafdc8701ac7b9be286bb1a96ba69523ca":"23e3d324d2ced65d7d9fe165d11eb7b5":"69efe307e054ec02946fe6cc35d42f50f628fc142c11f7238f14962b3d069cf6":"505a7e7aa22e76b3bc1f146d24379877d3e9bd1c2b9e5dceeecb917f182be0d5" - -AES-128-XTS Encrypt NIST XTSTestVectors #124 -aes_encrypt_xts:"38dbd4fca54479d5c3bcea401edcf3651be190aaaa533e6e63d5ee9c14c92917":"e314e1a47efd8387e69c55f0a4d86f6c":"5a3cbf307055cd97da410c3f2c959d376e99e6d6951dbaa80183e1b84bc905a2":"52cbf4fa3d0651c43d2fb7b9c61d3c9caefd7d0b7d375e7872e3fd90ddd5c2bf" - -AES-128-XTS Encrypt NIST XTSTestVectors #125 -aes_encrypt_xts:"9c46ac272e2e3d2e9d21c76df40233a8d1f1adc80c6ce90252f57d3dca2e467a":"923a710a11765bf58caa685f760434aa":"829cb5926b13a17e8929b5fc06923ebf88c72dfe04a5f280113b40f230818512":"39ccbbde3c4afde1c7863c5f72729edd0d1023405258bde3ba12ae9304d8a197" - -AES-128-XTS Encrypt NIST XTSTestVectors #126 -aes_encrypt_xts:"c9c1b2b2e65501b13c4ac5740674e38a22c5e12f12edb846564ffb7c9e2d00c5":"e4dbd34966377d208d85268f14e24ac6":"31d837771b094e5ce3a022a49a69bcfd0136d38df99a302a6649c8477c8699af":"c0e66d432ff3ff317b16f8d7600b1754ff46ff17874320ac91608ea211544c7f" - -AES-128-XTS Encrypt NIST XTSTestVectors #127 -aes_encrypt_xts:"c8b1585f40772be51108354ecac50ec5097de7be9dd71eabd4bf8e2635973aac":"9f320926a228a01b58af44fe5b834fec":"039f9ae50588805f7ec18f7871fe606a09708e85c766b49c7160e3320e39453c":"dd4675d34f6523803c7a285b4e2db3f3fbb0947e1a998819ceb44448e35f6eea" - -AES-128-XTS Encrypt NIST XTSTestVectors #128 -aes_encrypt_xts:"1d6b69e49b69d7e189a4ffbba1fb1b932f2a3cf168d34a5944ebb0d583e5b6d4":"f3a80ae300a768022ca0707996d76d1f":"72e87c33ff388caf74f59f8a92be30ece74ccfa0921e81bacb554e825f8d036b":"43fe40e1388439e23431be73c60ea1b25f7c7d2d4f9fd0337309ea0aca923089" - -AES-128-XTS Encrypt NIST XTSTestVectors #129 -aes_encrypt_xts:"b8c07257dd8463c912f819caad27ea852a8342f864a6aab043268a69bcde6398":"680bf85fa31481649720d6f4ac2097b2":"37c5948bc9b2033251ca779cab8ba3811ce8ab5520bdadafa58e72baf90a2e5e":"491bb45af3db2b05fc9a5c8cbc92e2508dee84c82c372cb6c8e4cad1ca6b164c" - -AES-128-XTS Encrypt NIST XTSTestVectors #130 -aes_encrypt_xts:"da444bc6bc33130c805c6170afe167c10c2dc82bdc233c607cb8b226388ed0fb":"a767de0ef212d28ee4a9ea7ac55b3a03":"ad9b154f597dff935fd8356a454644ac16a182ada5055cb474466b181c4cfa00":"2cf68d71ce84e552212856cada75a30e251c9b6cd0b595b06f47544a08f04b3f" - -AES-128-XTS Encrypt NIST XTSTestVectors #131 -aes_encrypt_xts:"618c127719b26fc6e06c714d0d1345d4c7471d9bf391c6aab34a60e27f6ffbf8":"96abe5fbc601096d9eae8604e0ed3fdf":"d2d4029550014ccd0836c35a62049341fba951954f0e008d8958f43484933a47":"af06ddce1648ab2ac876427fe79111da420522fc265f4132e15038dc1f174873" - -AES-128-XTS Encrypt NIST XTSTestVectors #132 -aes_encrypt_xts:"53f94ced82bf000efed35fb9fd443f5ffde73a52d8af33c78d1cfc5810bec161":"08a91c315b44f0d8af50ae85df760cac":"3749b69a0cff7f32391b429e6280d96e1926ebeaee1eada7d2cdd8f279b146cb":"561c5036b7e7894f82bc228cee7f708991f0333f7ff1bc773f621ad7db72f4dc" - -AES-128-XTS Encrypt NIST XTSTestVectors #133 -aes_encrypt_xts:"ff53e460df54d8e1db7fc7867eadcbded1622841eb3dc30b1f21f149249b06c2":"d94935d33c210165d40d35f87c3f05a7":"a32aa50112180ce4f243952bf48cf804a6e2ace35e88f4d088aea9c340722fe9":"c9d89f95763f7b05deb6da07d6bd1088948f2623ef1183ca9c73ef9b38c68349" - -AES-128-XTS Encrypt NIST XTSTestVectors #134 -aes_encrypt_xts:"de5694199739dae285604dd9a195c33b3e6e93e0fd8b46151d75d5aa124e9bc8":"d34cd8e682e3ded1e58a75dcced13a01":"1db9ac102c247ced18036e1d96d40b5f494802ccbd4a85f0f3dd14486701e7d2":"3b262318b89eb8efdd8ac3c2a5a723a10b85700bd18bda714a3839a4f46b565d" - -AES-128-XTS Encrypt NIST XTSTestVectors #135 -aes_encrypt_xts:"1e36d721035db5e0d3fd89506f14d125f7f001625113d1914ccb0d1302eb0c0e":"ca0f28f042e9ba59e3039443484f0c95":"5b9629764958afa2afd5a5a0500d4c0884980cdec39911556fc0f299b8c9e7d9":"f3ab667b4596e415f03fd7d4dcd34a52e536b084e0a3eeabcb6c6688416f16d2" - -AES-128-XTS Encrypt NIST XTSTestVectors #136 -aes_encrypt_xts:"a4e1711c727409fd6da004236a64fafdf20fb34784473f81e86abf0987a2229a":"a19946d5e913e50bdc49381878077547":"3b9bc44acab558c136d5eb72f70e6292068043e18d09e2f4a7e93c836acdcdc3":"8f13f7979b7d21489e4882183cbb818e1e3be368be5ea7b18c722e4cb0bf2dbe" - -AES-128-XTS Encrypt NIST XTSTestVectors #137 -aes_encrypt_xts:"3b3d8c299676668baa16ffa6765bb84d9ad91fcb649e63b3644113b6be46475d":"f8ee792f85d10fd7bb7b6282257b7411":"f24b543e50e7b951f7df1e2b180296c3f21db0520e872f838cb8da489f14e364":"66c75419b8a7cd0a9c21dfc2ce91efdfddfc5503f1a02eb32dd40ca9f31be473" - -AES-128-XTS Encrypt NIST XTSTestVectors #138 -aes_encrypt_xts:"97e8a0d08d83d0453bec3851459ec1cbea0085cb2b167de5428ac3674ce83179":"9f6260ba9a9c6f53973f87a6612d161e":"3971175035451b35c7a5b873b7969544d0ab7a7fa4d30f9acb172594cf94814d":"4ab22ba045871572d23949142af25645f4bf273d5eef95a1fed0e85e434eb6a7" - -AES-128-XTS Encrypt NIST XTSTestVectors #139 -aes_encrypt_xts:"bfbd74e58319a1f56c0f2f3d9fcb1299bd3f7d419036cee113f023ab40269082":"0da05d1db5b682ab6356aee1681608b6":"145824d47d324d190848009847bb535883984cf21c249d4b18b345eb37eed0e1":"0a519fdf5e8b5d8a9bffd7034c11595be1fde05a13663cb85af8d28fed52beb4" - -AES-128-XTS Encrypt NIST XTSTestVectors #140 -aes_encrypt_xts:"a77b18a4c33568d662f7fddb341e938adb3510ab0aa7a62331e27e964de051c4":"d5993938d61b74718ca5ff6b646fe85b":"9620aba1dfc9ded639bc86de7de9823b8cb9f4748792d96ab0343a2478c2cbd1":"d646a13b88c2bc715d4c73d0c75c4461a0b0e5c107ae465b7ca1afd620803d31" - -AES-128-XTS Encrypt NIST XTSTestVectors #141 -aes_encrypt_xts:"99340869a2f7a3ad1605a3946de026bd2eaec78ab405329914764019be851940":"279f86d0e3b5ede19a31c910a267b6c2":"66bceb2a933bb1db66501470e4c4966cd553a6d790828989f394d8e542aada36":"8322a1f713a69f1676e4704695b0dbac5ba1e0c4237417101e68de3181b12851" - -AES-128-XTS Encrypt NIST XTSTestVectors #142 -aes_encrypt_xts:"f849cf41316512227cb1c976966474503b6a525b1b5e09478b89f8ecdad235e6":"ac915e19c0faf5c2a3aecfbf318b6344":"2fa52e0c72a1ce78b09291890e0893a94f3ff9a4a71295fa256139dd27abce65":"6e8d62ff3435627300d2f5eb4a6a46e7216c92e45c143542c608b511261abe53" - -AES-128-XTS Encrypt NIST XTSTestVectors #143 -aes_encrypt_xts:"973270b1d9df608d501917f2d9b385ab7c6639eab4a472430d52c680ba273e41":"d564716dd21807e4eb32e183b26d5cf4":"64acc597e8e77069047c6de73a96c558dfb05b3cb52506820fb31c13c040cc94":"8f888a56705e67c7422bd09d66be0288634a55311e42dfa18c9a1a217a8f1e2b" - -AES-128-XTS Encrypt NIST XTSTestVectors #144 -aes_encrypt_xts:"02d1c357ba444947302f89c701222c24968f0d7ed621664e4b80020f509a2e3c":"e6911839d40fb5795954201393400a0d":"1a6d9ebeb278738948a31d9b1ebcfd23fe2227c4ea00720076d8f61a9d23b7a4":"896651d285c0ea36d63a5be5e393ca1fa1123797a1c6b9353503562fd9cc61ab" - -AES-128-XTS Encrypt NIST XTSTestVectors #145 -aes_encrypt_xts:"a0b3dc90e29c4298dae47838f5821483bb6ef05228b0154a98fc50db3636e6e1":"1d25fb75d1e88c3d682e59ea42c5993f":"3bcca6dcf43d4e5308d6d5b3979d861ac581fa8b1950dd488db360ba09648ad2":"33cf7d060d6deef9ca42cf94b4d79f1e3335b7ed199994aaa8de4082c53447fb" - -AES-128-XTS Encrypt NIST XTSTestVectors #146 -aes_encrypt_xts:"7594b2e1bf522fb920751cbac55a1f99fa87480a0037d31e721c66fa7acafa7c":"165c14b9db7a21e813f8b795ea30ef30":"f80b3b0ec491b77eb053a6adfac0da5afd3cd10c111f47e49c5a7ba1fcd5cedb":"252aff25110b176af3fbefe034ce72f7d86bbe38e375b3baa72814bc1e1c3254" - -AES-128-XTS Encrypt NIST XTSTestVectors #147 -aes_encrypt_xts:"48a819c9ac1ee1113591a446dbbe64f3bf255fab34880dab4f11730fc094d3e4":"b56f251b7766afa477e0b2dc39888896":"9f91e6e870382df534cc30990a955b3378fb0dfe9690a52d1cd344cb9c21ba5c":"f7e14f5f5f246b7c783ba43d2668b224ad22505a247d7a3eddc0a9d61474c8e2" - -AES-128-XTS Encrypt NIST XTSTestVectors #148 -aes_encrypt_xts:"dd49b53737a28423fe55193633660775f64b273d71f82c1812626b763881e817":"9fe422abed19a9893112b81ae71acda0":"798f481c8b349fef8739a1bab0f517e6c688a8b9a1c6c98cb83d39d9c652e7ae":"76fa8f13bb96ffe484766797d788ff6d58226603d735102763dfd16ee5143700" - -AES-128-XTS Encrypt NIST XTSTestVectors #149 -aes_encrypt_xts:"7d51929e373d3662b7dd5b19a6a1495657e03bab416532434bd8b9032f5e7226":"ec4e792e3ac04c37f85dde52f0d6b80c":"880ff17a8d32d89e910e431c0cdbd0837251b941f009df1a6ceda7c2557d7b5f":"69189fddc63e7cac9778bdbfaa12f6edb95ac93d84bbdb25a30f85d08c114b4b" - -AES-128-XTS Encrypt NIST XTSTestVectors #150 -aes_encrypt_xts:"a6140d21d9f52c2f7d3165876c581692738c79fc4cd3a2065279bc10eb59b830":"a27dfeeceb6ab60722e6be71328d1c08":"bc5b6be6a6157e78df5f77b2bbf04e1b4fe716dfc4b7dfe15a01556a54d7eb33":"62b5d116e5a218581a6785eecc1eb496553318b982d3976f5c357d5233b49c9b" - -AES-128-XTS Encrypt NIST XTSTestVectors #151 -aes_encrypt_xts:"a9e399b4568aaec4474baeceea77a8e715ae94694c30aff32be0353734f0a25d":"d52c178b397287d447874474da7f97a2":"c774446d56bbc44e376e490f55f9f00308e4df157940e590c61780638f0dd134":"810d2031aa28959210231e7b0ea4e00e0de4476ee5c7b138ecaf65a1099630cb" - -AES-128-XTS Encrypt NIST XTSTestVectors #152 -aes_encrypt_xts:"e9f8113f5d352289cd1c3b41a427cc260b09ec9a994b2f29b98a5400ef2274b4":"7d0de99651c13a53675949fb6500311d":"f6e7cc1c05fc03e0ab6b752d42d056e98f6c5108ffbdcd9007af2187c419eb9a":"a0ff4bd413a8db13c12f773195ac52e82a68c2cd92dd8d352083a1bd82a96c2b" - -AES-128-XTS Encrypt NIST XTSTestVectors #153 -aes_encrypt_xts:"1017226b37e0712b938f145f738090067ef568615962e2e7081aba94f3abfb24":"c0a0d39b02b384f94b16435c5bc32790":"7d1c73e71a567ce23ebd6fb49effbf4de204779ccf1f5e39794b10cda87249c9":"cbe3ffadce4bab8aedac813148b0a1ec92e99feb39922deea8b278b7314715d8" - -AES-128-XTS Encrypt NIST XTSTestVectors #154 -aes_encrypt_xts:"1e89067e5867c6497559a65ccc25d7c7c3508f80de7e88914748dc88d8ccd09b":"812b4e71b69f2075f1852d311753022f":"e84520fb9eac431ada9a94c9a685acdbcff29ad329ec5fde72b0ccf709e735a7":"32d78de76805a1ca0b215e6257cdd90a8cb9c499c36e8d5876045fcadb4352af" - -AES-128-XTS Encrypt NIST XTSTestVectors #155 -aes_encrypt_xts:"0de6cbfafb6d60bed08215e5f8cd94832607dacaded945e881a7465820e768f1":"1918d711d75f32206bf6b057002e18b7":"147bdfc7ad960b774a7952d5bb863f507f346b45493b2f8955c3c2df5f599e4e":"f5771399b37a97b5b209f66114105029f070c6d281da893d3f3c3d3b298266e5" - -AES-128-XTS Encrypt NIST XTSTestVectors #156 -aes_encrypt_xts:"5b4e1da38de31e21c931c05bedef3a19c31a1f99dd969bba9076cc7c2dff2a5b":"27fc7f4df95d3401da9a962424ed7522":"ad002d6dddae01946cdfbdda7d3b7a601ae23afe05cf170fc093dbe97636cdfc":"5844722c4dc0e80340588893239a8b7b1dd39a98a85b5eb97a03d9de8c599755" - -AES-128-XTS Encrypt NIST XTSTestVectors #157 -aes_encrypt_xts:"c9667c374b6a04e29697ec2b066631bc474c3123b711b4901eba02877a9dce76":"e613c2ea74906caf1166ae36be977a02":"3177a51fa0190e757bdf5686cdce1f566f7240a6e210577b039f0cf79c32cb98":"ee2285db8187b84d1e4dec525ff30bad479fb3654bc8aa1bda35d703f5b8406f" - -AES-128-XTS Encrypt NIST XTSTestVectors #158 -aes_encrypt_xts:"d9966c9724327760657411f642a7569bd56e5a7ddc251294c112eb310f130c24":"b5c743d1ffdf9c32dfe0b89078a027e8":"6d07d7572504f1d28d5334c77125ae1557495478d2edc8b23969a628c4b49ee1":"85bfcdad4e140c9e6fd8b23eafa747c80cfa7413f1d6544813ceb2085916c662" - -AES-128-XTS Encrypt NIST XTSTestVectors #159 -aes_encrypt_xts:"7b9c7207d1179dd473d7baa15e17771b9d6231dde3625ec6f99c45796e48dea2":"151de5bd1f174aaf40bd0cdac95a7f37":"474439df01f8534df90a91d0ad5f8d571e0f528f1b722c12472e1e617c5675e5":"80ea2e31cccbafa8b208c93304952f21b828f323ae82d7cbfe270c58296045ec" - -AES-128-XTS Encrypt NIST XTSTestVectors #160 -aes_encrypt_xts:"dfcec42dea99c0a5520597ea4a2935eb59a1da0d44dea9412d7459542dc613ef":"a9863d498bcf2f24e45cffde328c13f1":"12f29f80664b61630da1b86d1bf8cb2a198c6c242bd58c0986d89c78e02ce002":"d7d70f5d98f21f0b8505d7739b89600a86b105a223168671cda0316678a230c4" - -AES-128-XTS Encrypt NIST XTSTestVectors #161 -aes_encrypt_xts:"260b6d4b599c53142199bcd69f4089c0ebb9a3261c7203b816c36084e93bbb97":"f9535b013abeeef0c858d5a9faeb8d62":"f2306831e3973a7b51e1330fbdc6d8ed87cc97a9c65a934df838f5e598cc4243":"f196ca050c931a9e98b8c2e88ef7d91740ee040a945c7d4b0f7e56a211c0d1e4" - -AES-128-XTS Encrypt NIST XTSTestVectors #162 -aes_encrypt_xts:"2dad80daad387bbe63cf64c4abadf6a2ba50bbf115dfe86e354791465743eb5b":"9e7eb60f9ccab4f2ab5b46a91d250e3e":"7ca300087f4e0ba7e4d478fa3d503163fc2ad1e0ea93ede68df42956fd73e016":"4ca9f029bb0f8895d4284ffb7f578714b7ab77a2bed2dd59b368f1a770edff27" - -AES-128-XTS Encrypt NIST XTSTestVectors #163 -aes_encrypt_xts:"aef7731222d6a133e5aec773c53844cab2f084b398f19984b9ba0fbb5b37f6ba":"345da8fe78fd882910ff258c71850c79":"428ce80b9724cb2d61587fe0d3a199c092e0eb57018c8fe50f6487fe3524b975":"da91df5d71ef25ee2d883e6fe0749f8439544dfc36f8a69a9039abd03056817b" - -AES-128-XTS Encrypt NIST XTSTestVectors #164 -aes_encrypt_xts:"590ead9adc88682580e3b58171b9d0c52610b5329f551524f021a9ca1dee66dd":"ebe9ba3eb7076efd789fbb905ec49a03":"0d5d8dbbbc068bfe0e6de9889abf09283038b38ed5d2796ae738d33a0f3187cb":"aab7bfce4d6ab3579f60405a0442e17f9cf3256eef3adc30ef9646f0defff6e9" - -AES-128-XTS Encrypt NIST XTSTestVectors #165 -aes_encrypt_xts:"c0401467836ba9f1f0a7d257afe94175725827374114c5f1439c01d9467347d9":"038e2d60381c5ceb292c0ecaa898b5ac":"0e13ba3f3fec9b49b8ac7a816f68b7ea25352daa7464ad13b7850a8bd34763af":"7f063b82bbe90886879ba10358bf170d689de216c7181ddfe64af066a94ba756" - -AES-128-XTS Encrypt NIST XTSTestVectors #166 -aes_encrypt_xts:"0662cff9a410b34bdc4f2fec765dacfdcc31d7250e8615aea2862f94d2e16e6d":"f19db317a2790d7b3ff496c6266f5da2":"69e28661830f21e121a114a4659a248bca7754a21ab5fb82c39cc6dd240c9a29":"1b9d720a2f53cdf93a9b419bc7f09773cfb116237baf222686628677ec031fb6" - -AES-128-XTS Encrypt NIST XTSTestVectors #167 -aes_encrypt_xts:"69534c40034bc830c5b5e5e9c81e7f9cfef297b17957e9d7fd7906f7a942c834":"1bb869676cc4796ac56f93da5c2a21dd":"3287ec12deacb3f53cc73c247d2351916442d89c0c7807a90967f5e88d49748c":"2fe6223ec7b2da9eb40adab95ea14f5ba31a9f7c76501dbed7d7f98667cdabfe" - -AES-128-XTS Encrypt NIST XTSTestVectors #168 -aes_encrypt_xts:"031e7e61243a4f57d0ddd1693e5f617ea1597da241c95cca4c4e0a59e891eb7e":"5106330526d67ea6e9a3352d03a954b0":"e9c9ea3faa68233e698ff7bdff7a47b74da3d6bc5ef4eaa50fa6b582969bb7f5":"e124ce4b92662d1092d8478c942df3bb2a1d5082b3ece9c3ac60077bcb101bcc" - -AES-128-XTS Encrypt NIST XTSTestVectors #169 -aes_encrypt_xts:"a0513f0b74dbb9b2c96e5760f0416f1cd12f9e4044e85f3fa3742d65c94ab95f":"e9baa192a8efdd71ceb1097f30e40b50":"5e1827f087517dd2e334fc412179cbfbd1a5c5d695a08f1d16d7ed310a927961":"277c742561a1bde342b035d07e69078de6a1667e19c4c17cad3b550ecf44765d" - -AES-128-XTS Encrypt NIST XTSTestVectors #170 -aes_encrypt_xts:"2e7d7470c9afd72f811ca24b06d6ec3e37987e94741d1ddca33d0adaabb797b4":"5a5eedc1944ee5d1ec3e1d2564791de7":"811ea3aa5d4c655cc9d6ce6178b0334dd7e81cc7862f2ae15a88318a017d8727":"fda847afd92b31171f19e64764d299a4f00d969a56975591c51403117c3329ad" - -AES-128-XTS Encrypt NIST XTSTestVectors #171 -aes_encrypt_xts:"106678fc82e16a40c1e26a8811456beed97e644f4a970b4e7348deecbd11f3c6":"87e3a254f283e45738b2b1671df1fcb7":"3690fd952a2cf1297bd593282864c84ff156623f0a513fe06361a2e2e4622154":"671e99dcc432fbe6202146459b4c1ccf1bba313debdded2dcbe41f9b840d480a" - -AES-128-XTS Encrypt NIST XTSTestVectors #172 -aes_encrypt_xts:"15e1f589a6779f3915251839cb7ea8e8d9922ac894d9ced9e91b3d9643f44c40":"4a016d54644a4ea4150c91a23c3a2ae8":"ff38672b06f8d4d7764b9aac7fa16eca17d6bd5f40f4a65870de3c47d991e70d":"a8b83ba850781f3b9f802df20d1bf4c98c9b05b8cecd2324cd7d71f6fe100c4d" - -AES-128-XTS Encrypt NIST XTSTestVectors #173 -aes_encrypt_xts:"e8f729c0a215413736103f94f05b8fcae71a81bd9bf09b3f565fa01fe2c50ab0":"7f0d79ca1ce9d4db848ca02a31b3f1cd":"51706a2a4b11a288d9edb2050d3c99a6b0edbf18c8a1a9924f8b2368444a25cc":"0b3a4f241a07620b8fe02244ee7d9c490a47fea534efa9b4571a9aae18e16aa4" - -AES-128-XTS Encrypt NIST XTSTestVectors #174 -aes_encrypt_xts:"b9a348c298cc0250b8c2f06c15dd0be0b6836f8fe159ca29f970ad76d3a2d50a":"f7a29e074d94798e0a59bad061e96eaa":"47c20372b6059ab8d62fbc730ca80ffb4b332ae2decdf64702c3cec45576a9c7":"f36190c978fe130823a42b027def30fa076e5f7fa12206b5ee1543a4ac273b62" - -AES-128-XTS Encrypt NIST XTSTestVectors #175 -aes_encrypt_xts:"6076804da6dfa4eac7401b58f94f7f846d49cfcc1cecbed43123fb0b747b8ecc":"a3091f07569195b039720690c2c72ee2":"109d89b30295ff6232c9766f2776a66592daf922dc87b26d7e244f4d63fc1d53":"1eee3fc196fa028b5242dc583065137b756c185a744b22f34c0bf331d7ef2fba" - -AES-128-XTS Encrypt NIST XTSTestVectors #176 -aes_encrypt_xts:"b7987786c7f3ed5b623da204be4f70bfc5ee0f472404565826695ec69cd5e30f":"4a38a089043fb883074385865264b6a5":"d1f9803450c632c8951c2c0b50138921866880b5b4ff17c2eabcd8db572e2fd9":"c0ec8b5bf1c40af5257b750b5d3ae97c2549080c00d9168145a65c6ebf6d0a57" - -AES-128-XTS Encrypt NIST XTSTestVectors #177 -aes_encrypt_xts:"5e1cc35539c7fb019af84ceebe2cd69318a84917da3fa0f6e612a7eb62190950":"9a201df0e98b967d204ebac32f2665f2":"b3f2589d7c3a085835f2178fc4499147c49a434553a61d6a3086e3316c9219db":"b367c8de015f5493ec949f6b33637fdc5f4ab2dee86b40dce979ce31c3aace7f" - -AES-128-XTS Encrypt NIST XTSTestVectors #178 -aes_encrypt_xts:"2904db4d1c87c5d477a36c9a964bc89347f7faa7590c20d78cb6a96e750eabad":"ac214bbe1d54b43c7d892d496864ed46":"d690b7934016a76add5cec09fbc10423b0a9a4da6faeb37742a9381a13472e8f":"b484a6b10eafc8384cf7ed2077b6ffbf59065a7c6119ca58859435bb58fe5474" - -AES-128-XTS Encrypt NIST XTSTestVectors #179 -aes_encrypt_xts:"2d6eb27a61fe3db7ec51318305c70825868b93e01a2bd1c99010a7664131da46":"7dc24d44b7df86268a1515fde988a0f7":"85c8420ce4646e12bf22d4eac28de5f774a1974cfda03721e77f8ef2faf58d9d":"9182cd5c0691ecf1914eae26861d31be7a60fdc58b41d1de2499fb7c66fe0ed1" - -AES-128-XTS Encrypt NIST XTSTestVectors #180 -aes_encrypt_xts:"db192d020aa2efd0e7a4cfc7ff5ccefc693934244da6fb5647a49cd7c0125c69":"bf2ee51f87f3d67667d22fdd177b2d6e":"333ecf4fcb6fbade9a084a605b3bf545a8069e9bbb343b118634ed69e5da2814":"2d38f911c7f8985bcfe9245501703cc7cc6bd47d361d465ff009bf2ef0ef096c" - -AES-128-XTS Encrypt NIST XTSTestVectors #181 -aes_encrypt_xts:"4feaf564170ed86e245ec432fdeffa291df90a8c3846f255262f62719d04daed":"4e0eae3d8eb6d796883e98b77d4d381f":"93c74d39560a0c7d0e6916289da276a9fab405ef30f33e104330fb4443261bd2":"9e39a707b10ab820fec31ced09e75058fc2e8b08daaa700cf2670041fdd78b8b" - -AES-128-XTS Encrypt NIST XTSTestVectors #182 -aes_encrypt_xts:"7ffaee11c6fbd462651b88cae7604d04c34ca306a013de35c237a3d201f22f97":"ba763e99b42ef1b8d7f631dd634e9bb1":"0682c322334246782e8b94b3c6bf8ca7b27dbd6eaa4a4a620788c2abb69c5d03":"628a97d730ec7c1598e87c789f86f119c4fe04e81f4292dc6565efed9414b677" - -AES-128-XTS Encrypt NIST XTSTestVectors #183 -aes_encrypt_xts:"61bc711d6083037e5465a15f1555d444e8469484583fe00d77973ef3873b9fbe":"007a8bc5f7419886bfcbddd472e65bcb":"678e4d546cb604c3263a1f824d65773b7ded4b1617024dfcce23ba062855582b":"4533aa42c53eaa49960dff2d98a8359867e907f20d44ba49b02ec4864d06c62d" - -AES-128-XTS Encrypt NIST XTSTestVectors #184 -aes_encrypt_xts:"2608364f7d9ebe8cfc5080b5453cb904829606f45a4c54f28109d5bcb431d7e3":"98cb6d9ae35baeb33f2a99eb02e3a5ff":"a2244a4eb724d88cce5915ae6a5dc492e6f7b0272c1874653fa290a9ff3bef54":"f55bb7a2172dd7722c99136047e578ff685498f0cf0d4b19434afdf1c2dc995a" - -AES-128-XTS Encrypt NIST XTSTestVectors #185 -aes_encrypt_xts:"199ab553f460efdfb4138c0947a23a7f962fe33e1e25f753856197c62705164a":"a9df5b0eec470156f93258650f467940":"e52638e40bfbfa3e27613da2436fc0f40608814ba712d8a5c478cb5c20ba7254":"26a405908813c077a67fd413c2d333b8ec98f6037b96f8e05fd7c6dd344af284" - -AES-128-XTS Encrypt NIST XTSTestVectors #186 -aes_encrypt_xts:"cce9c7280f49abdb92540209eb67bd4a2c02af676442ba23bdc860bec1ffe690":"d77d6765fa475d3c296a0e9abcb1d6dd":"e522798f88760ca431eb3a09179c82933dbfb9538c37c55d3d6585c627ed76d8":"fc21c07891fe11cc2320fe00ef604a385184f71d0b0e06f89c06e47062dac7f0" - -AES-128-XTS Encrypt NIST XTSTestVectors #187 -aes_encrypt_xts:"654965bd6e76a1dfeb8e86758aad2e8f46f739e24ef9499344d52814855dba6b":"08d14be534332ace3663956ae4684d30":"6e742c2baa261c25f82551fc0bd8cd0de7970873de73a8757f7cda3d20721b21":"254cfa8b4de498bede50e9cbcaa0d626c97e62292cf1e5b7b0feb3b8b9f18e1f" - -AES-128-XTS Encrypt NIST XTSTestVectors #188 -aes_encrypt_xts:"65f4b1554f2a1c9e40e823efe4592651d9e3cd5d6dc4cb76b58eae99111827f3":"f50c3f6a2278ef514355e10e20048674":"a141e49ea2ecc3b37282cad5dc12d9b557f1d070accfa21a0deee7135158f776":"b320178497cadd2d8e0c5604bb5730502b4d18c2fc042945fcdfd697bc7ed2f6" - -AES-128-XTS Encrypt NIST XTSTestVectors #189 -aes_encrypt_xts:"f702b664ae77b739766fb0cc32b971d42af7155c05c3f28c9bb8fbc418ce2b14":"cc078ce78779ad2f3540617d1676c9a3":"80505689e8c1b93fa0442c49534d6633b45328d24a5e677840062dbe097b7d6e":"b820f220066582982407a4670c5c3cd2c882e695712eaf109ecc77fd77a1935c" - -AES-128-XTS Encrypt NIST XTSTestVectors #190 -aes_encrypt_xts:"9ac0e1005efc33eb677f47e388362f6f204fb154ae3abbb1af92a68913f2c94a":"ea39bb7575c2508fed0d0ef9b19fdfbc":"20dbdd904e8b57e03646d9b90da16164ef35d411f94cca94bc05a9ab7367d205":"7fd76a5b3d3a75946691320cf8b0891414ebea82adff2c523a2446076ce87578" - -AES-128-XTS Encrypt NIST XTSTestVectors #191 -aes_encrypt_xts:"4b5c0a78bb1c659cb433cb1ec6190eaa57a823cef6d7555cc491e4e5d2ff9716":"6678f26c95fb68d33e1c36d4536f4487":"27ed02c5925bd4dcdb1d1ee3b7e2c513870211d8e785d6fd994a487a8fe30e38":"769e6a73c1939d318ef52c9fdf18e7ac7a7829a01158c7a325f9bf9c6d9ee1c8" - -AES-128-XTS Encrypt NIST XTSTestVectors #192 -aes_encrypt_xts:"18304466731dba064694e4c789e4ddcabe223fa45c3c03c34d09b7658121b55f":"3bb00e9174f9cf365da337510fac809f":"033e653570d0062af9e5512d112b170e3112e6edfb447e491a2f27d4b74164ca":"f4dd1d66ce357002c88edc6a4e9cb348636cf61be2b18064aa2fee1da719ede1" - -AES-128-XTS Encrypt NIST XTSTestVectors #193 -aes_encrypt_xts:"03160162e4d56bad52c166a51cb0c62ca458cf3198daef972b55e7bd4d73df4c":"2604e3456a3f829bff2fbef2352630bc":"4b411f428f4f48373eade17f4e9e8323a100ebfb78f5e654e35366b114ab8e76":"1d6aff6e38bb6a655d0d25d69679dbd1f600f23ae746691e137c2260936b36b5" - -AES-128-XTS Encrypt NIST XTSTestVectors #194 -aes_encrypt_xts:"ca75fa2a46930a1f2ff72362e3161b5bebab6d5956bb7631321676703700a8f9":"1dce9a80f5b747327e62b08ea9c813b0":"e53e7e1046e2e802304f56cfbef36e957bab8b8f9c49c5830a6f552fbbbfd00d":"e47249c2ef237fd1cafe31b57bd24bcac0eb702c02cd1737202bd55f49505a8a" - -AES-128-XTS Encrypt NIST XTSTestVectors #195 -aes_encrypt_xts:"7d87e6b25220e3efeb7151c3e9732078a59128fa31ebce2213ba9d922063e039":"9b7bacf85a6c7f1dbe127079b813a26d":"38fc52ace9c2ccdb0c429a03bd1a4e1f004f95eeb14432169dcc1edda9ec7506":"5e17bfcb4f2ade60bfb2336acf8b7abe2620616cc38abffcbc8dcaa9ea496ca8" - -AES-128-XTS Encrypt NIST XTSTestVectors #196 -aes_encrypt_xts:"8b0fde9249eb89f29836f905a9bc82bbeb80cb812a1d4edbc2f4e3a0a993f862":"6762357c130cb08ef0d6082eac235471":"890db6311dec97baf7c1b159ecf4dbb139abf541e1143d67fb195f9de50307ac":"ac90a6689d411ab266fbe0ae9dad9352ab13405f533d9255915a015e3db2b868" - -AES-128-XTS Encrypt NIST XTSTestVectors #197 -aes_encrypt_xts:"01797f3f4e92bfc26a35c5bdc255ae7d15c07d0c3c81ef4aa28d6aedc47df0e5":"f339b0a9a8a728c7598da8bdd62b76a2":"24556c751eabfb62906a17370c283f80a4234118e36d3fbaaf803fea64028d12":"5973d669c180767ae33d9ed1c1850f8ceb38b190f551c63ff37846fe149b3c85" - -AES-128-XTS Encrypt NIST XTSTestVectors #198 -aes_encrypt_xts:"5ad4bbaee4060d455169ed04d10cf1f3b504581ec98296d56d46c0585275334e":"9bcfdaceae102c06770185880be37aee":"40498a33fb2ffc718795ec7990f2fc5032e60233edc4fde04b86dffcb4f27149":"6526a0ec0e11203cb282cabc581a55bd49d76acad11e8f594da587d062595e09" - -AES-128-XTS Encrypt NIST XTSTestVectors #199 -aes_encrypt_xts:"f70edafb208cf0404613bd8161f8ba9e8cae7b235c7d18029659e68860dff473":"f0ce843371376493b8606b195876447d":"5fd5f91bdcddcd44f11ecd034fefd6ebd5c9beb7aa54229fc1ad2a41633bbbbc":"67c5995bfe0d099bd5733b7b619d3043500948e444ecb5adcdfe5e96fc05545d" - -AES-128-XTS Encrypt NIST XTSTestVectors #200 -aes_encrypt_xts:"a3cd3b6e3b784c27504ace3b6b9fe04c75f743b8c1af388a5f05b61e332cd84e":"4d52316b2841abac6d146a44ec253631":"3607893d0421296a1d3e5fa379d9931f060c3ee272f29539afe1b2714036c522":"a01c987eaa58430de82e649d8d75d93c134f1fd063cfcee3545bf73e6628fa79" - -AES-128-XTS Encrypt NIST XTSTestVectors #201 -aes_encrypt_xts:"394c97881abd989d29c703e48a72b397a7acf51b59649eeea9b33274d8541df4":"4b15c684a152d485fe9937d39b168c29":"2f3b9dcfbae729583b1d1ffdd16bb6fe2757329435662a78f0":"f3473802e38a3ffef4d4fb8e6aa266ebde553a64528a06463e" - -AES-128-XTS Encrypt NIST XTSTestVectors #202 -aes_encrypt_xts:"8afb90c2ec924c4b0b0bd840fb1efc842c9385a14d1ca95bd4d12cbf9ab588ed":"b2f8c6374eb275c1744e85aa21f8ea6b":"d9d8f00683bcd489154882290f24624726e093390783d4959a":"f4bbaa8ebd480d2a2a371beab3d8b387c02282678c6000227b" - -AES-128-XTS Encrypt NIST XTSTestVectors #203 -aes_encrypt_xts:"6052a415b42d1df06d4283186ef363c9e59aa0eafa92ffe0aa1ce617fa1ed39a":"b29b1a4388673fec4c1dbd786a491c62":"eb61da2b2159b9ca0099cbb82af6cf26a645ad954811aa703c":"2c404c9b9c71dde43012a5abe879fa66d4c94fbebbdbfc01fa" - -AES-128-XTS Encrypt NIST XTSTestVectors #204 -aes_encrypt_xts:"74f6073c3c4e9bf8186e5497b56d653bd6e158170a0b59c6f64db1ca60f1baa4":"8dca1120c79a077a842a9b9d7723460a":"408ac25080340d1f59e7abd879bcb2132779025ba3207fe4c5":"036c53b929980fc9f042cc4926e125331fb3e21290a052bf7d" - -AES-128-XTS Encrypt NIST XTSTestVectors #205 -aes_encrypt_xts:"210130cf1586c24e4f072fad1f39aa3da371cbf73af43f49efe7db5d48aaac4a":"c3ff2bb1af53e80231ad244b3bbe1dff":"463f9c120f974a5096acef4b315262ddeafb3dca8380896314":"bfc77723445cccd0e30ef333b721ef07edad579ed78561859f" - -AES-128-XTS Encrypt NIST XTSTestVectors #206 -aes_encrypt_xts:"00f867841e6cc8bcea32e5ce2b1398a08730d6c567412bffb1e0e971a418c388":"f09170358ddaaec8139a9aaae8cb2cce":"ea03b308b39728940ba9e84faf4c5c54a1238996f694932a12":"97f039021aa175e3837b7d4fd79948e8500d40fb7fdfb27c79" - -AES-128-XTS Encrypt NIST XTSTestVectors #207 -aes_encrypt_xts:"abbebd60a3002bfbb5842d8bfdafaa39168b61cc5592f3eee76dd06b5117c219":"aa60fa8533ced539c0ba0019ae5e99a0":"20e44bdbe4316ae7677b4d78316c5a47ae26c3248b06e779c7":"20b1fd404143f39ce1a5d64dbbc137e5d8717aa5b28471d72d" - -AES-128-XTS Encrypt NIST XTSTestVectors #208 -aes_encrypt_xts:"7992df46c0f31a963227fd5c4c227c756ae0b4afd3356db4823e561a75d6519a":"18c2815051d9a2c16eb006467853f723":"ea9027e5016713fa1956ef5672c1e194fd619af89a873ea9e1":"adaf45d262fbd59bd887f639f820bc1409da4a0896ad677713" - -AES-128-XTS Encrypt NIST XTSTestVectors #209 -aes_encrypt_xts:"88a6ded6454dc8b660e735b95de9b96a4547238f6da36a19fa39fc457b95e03a":"33b924a99d989ae8835e9b28044493b1":"7e7ce9aa3ae4c86c210f1aa1f279c6948d2a43dd0f3febd3d4":"298282d3c794f3c3126a2c0ba1a2c8d9c47b6f2dadcaa64248" - -AES-128-XTS Encrypt NIST XTSTestVectors #210 -aes_encrypt_xts:"6cc01f3db0f5f629d5c9ba91b437bbdb60ed23c035a7090446d6322e407e3abc":"af6e3a4923037e4ac052aaf823aeafea":"d1cea3010fcd675aeb9af9a4a1a2ca3190714767da0dc3aeab":"214cdd03c0f0c49d32e8b341ea60a2db076eb4d6e4d06c50e3" - -AES-128-XTS Encrypt NIST XTSTestVectors #211 -aes_encrypt_xts:"f6875e62c5a26a448fb631a8893bed7a276d2c9b27c17862b004f1637dc0b0ec":"b1ac3ddb2252420f21903ffdd925cc75":"8c02a37d22c7db9e26738047c0d2272e2f4d19ba08e7010981":"2153abac32e4b527c640106cc572119b279dc79a9b61e5775e" - -AES-128-XTS Encrypt NIST XTSTestVectors #212 -aes_encrypt_xts:"fd527d189f3f2928df313a9629765d2c2d68ae4eede5e116a46e506abf719946":"2d1bf18678dc3e58cf0242d0cd6ea350":"95195e104502be51e909c62c861aab3ef134572dab637f94af":"879a8dde4415fd0fe17602d3565efb3d07e8cc6e73c79e92f3" - -AES-128-XTS Encrypt NIST XTSTestVectors #213 -aes_encrypt_xts:"e42534721c057c6440e756d6e65f90548c3f5c0efb3708d0e3fec2099da6f54f":"3ba5b7afec9c73817ece2bde8781cecd":"0736cc39393dbfd41b179a8d6fb36d4ba26428c32d106dbbb7":"1ef24efa1b755a9475d7decb7727d391e1b9e0742966369b4d" - -AES-128-XTS Encrypt NIST XTSTestVectors #214 -aes_encrypt_xts:"935668ea1764559c0c172646d27545a7b4e8427f8cd3e8eb2f13ca88c8befb73":"81098e82199c910d09dead25217beb0e":"8d5c532f2e3be41f333da1eb0ec1a992bd693711ed857c1dab":"ff32c690c16217c8d37812242e18970d8690934678d24fa895" - -AES-128-XTS Encrypt NIST XTSTestVectors #215 -aes_encrypt_xts:"07f19291810afe5cbf2794091307d0ceb0ee40a84b60eb3dade5994cfc4308cd":"a461f6c8dea6ce1b0bb1448949a0f457":"e37955490db3df6147ea414187db5427dbe6ec8e28c1f08036":"cc151c98f0a770134509fbd3e176ba97f53a89f8b87cf4c1f1" - -AES-128-XTS Encrypt NIST XTSTestVectors #216 -aes_encrypt_xts:"06f23047f2b67ab05585be6d84ecffb67bf1afb8a7d2c991e4d92eb7018e7296":"cd2d834683418b3c99b177cb887845cf":"be9318de73b3a83590e9fe457f8e43a8b91c54bdba2d91ae40":"57ce6a3d6ef979ccd2991b2a7e99dc52269c048c8734e19ec3" - -AES-128-XTS Encrypt NIST XTSTestVectors #217 -aes_encrypt_xts:"61f51917fe4c4a6176d5d157a555118da3668bc7cdda89f65b71466ad4462b29":"09530973916984418ef9e9c9e3f333fc":"541011ea4f071eb1073a542002a26ff68f5008d41b3c1a6a3f":"c5620250d6d5c90366baadd667e2e938eb1faa81345be9d493" - -AES-128-XTS Encrypt NIST XTSTestVectors #218 -aes_encrypt_xts:"99dd1a65a9437f8a6cb15b7504be84475b43028680d481c0ec2c33f105f4fe37":"1d6a6528e8bc0d9f15f28cbde9dbbbfb":"91108381030c7df63e65f35bbd591f7fecb9d1038ece29d3e4":"8e675302665e5f53cea616e1689e80ef7a67f463c5de2c4113" - -AES-128-XTS Encrypt NIST XTSTestVectors #219 -aes_encrypt_xts:"7ea10c70328d9984166ddc2e923937e65469b9f980686c3722d507c0647f72f9":"9c814fe58dc8f63e064394d85c64bff8":"b7b6840563a0677ab35062bcfc31944eed4ab4f0fd360b8e31":"8770255e47e3e319bd32ff0d249e0bf4843ae62e724339569a" - -AES-128-XTS Encrypt NIST XTSTestVectors #220 -aes_encrypt_xts:"c3ef8390b1d9264d1daa652e210871c98680a450cefe30f418b7c8fbda75c49c":"035bb337c94f4a14ca15103e89b47413":"547f2dccf98871153d5b5483c3e02ed6b729ced86636a0ffbf":"173a1b4b09522cd1866deed0f47da469c798b29daa449972c0" - -AES-128-XTS Encrypt NIST XTSTestVectors #221 -aes_encrypt_xts:"5bb35fb381c55315902d5185379a2b1609e998404b37f79e7f1187dbf8eb48e1":"6e4b057c0438c33b60a30e21b14a7d48":"d1167f61f0c9ba43d1510965a3d1981d87aa59a118a119cdd7":"ef9643acd4e886f0a793bf5a2803545d095e27b57870277a2f" - -AES-128-XTS Encrypt NIST XTSTestVectors #222 -aes_encrypt_xts:"8334258820cdd938d89f6238e2562ff138b5c622cdb3d8665f2ba866c9064f9c":"f803bbbb08f2602f3cd9953625e5bbbd":"1f6639b1fc46d7515b67fd689f1e26211b9f0c08da40a067e7":"2ae630af91ce83adbecdcdc71636f688527e141fb63a6c1867" - -AES-128-XTS Encrypt NIST XTSTestVectors #223 -aes_encrypt_xts:"8ce4f0d2d06a5ca0930ede520fda57804cf48d6e44c957997d8f4c00dad78013":"9ae179c73dc59514c077372c4bc52484":"82d23241cba5789da826aadbbcb7b08c06b6454e9cf6721fab":"68af115227c41990d9bc1a0c95e40d45fc9a277331666197b9" - -AES-128-XTS Encrypt NIST XTSTestVectors #224 -aes_encrypt_xts:"614038df17f7d8c72c512dde15dc748be6f054e574a5f395ce488303c8b0af77":"a44bc4fa2f56dbe6c2d2f9663ed64144":"15b57091569393b05f5d49077c9d3e084e061077e929a74a4e":"a027ed474e8e8d856fe5d956f83a101910733f84c34f92fc73" - -AES-128-XTS Encrypt NIST XTSTestVectors #225 -aes_encrypt_xts:"13f36a1169f07b03b8a1b096b3783abf921acc0df08f86f7356cc71209d03378":"5f6e0532d4454315781c77215f7f95d9":"4873b4c0fad95ff43c18cec8cf8d20e379819394a7192beb2d":"4c6986699bebc8de4ef1761264cae27b4b851ea2bd0531d303" - -AES-128-XTS Encrypt NIST XTSTestVectors #226 -aes_encrypt_xts:"a3a739144df9d7f1db448c1c07fa899912ded87441b97b46f8207ff257422d17":"13eddbb266a7f9969b23c42947670dbf":"011ed8e077c4360422189b97ad0b06b9bd94a627e912af700b":"cdb7d40efa547e1c4c09b471a7442a382323c6e81245e3d6cf" - -AES-128-XTS Encrypt NIST XTSTestVectors #227 -aes_encrypt_xts:"c384af65fa8da0d2746c9b7dc5996e28953a6bd8c75cf4c4ec4e609f239f8a59":"6ce9761b07bbdb6b8b8fd51f0ea61b84":"db59fdefaa83e896d0d400abe0f829eede6d3d4603ab370f23":"7823c42f128e3e4309591bb92267545710fa323a911ba7c3ce" - -AES-128-XTS Encrypt NIST XTSTestVectors #228 -aes_encrypt_xts:"1c134f80758315cab936c24974ecc60e1f5bbc24eaebd031db70a6beeaefaab1":"e5e4d359a0a110ad39fef374c4a8e10a":"1bbcedd6dc143048476166e4e507193478eb5a73c27f465cf2":"ed3eb03768fb347d8f78f0b889ba3246d9028a20f91d856e2e" - -AES-128-XTS Encrypt NIST XTSTestVectors #229 -aes_encrypt_xts:"5fe96e240f72596e3ce402133b7e0cad2078de90c9ada25c3c63b4de22ed4214":"7b3b95cf9b24d136817bfb3481fc3ecc":"a7c2799c0c6237f53d1758587b4c55760127ed8bf2aa8e06ce":"a58d3740942ee757576f5702ae0143aaf09e0d4eba5cb5676b" - -AES-128-XTS Encrypt NIST XTSTestVectors #230 -aes_encrypt_xts:"40f0f2f18c4c77b71002658d66955b129066fe9ef164608e3a06452c180c884e":"65133652438f1b0ad14752e500408e39":"78150268b20c8661b073657b1e4f3f7e11bb51bd95c14f2165":"bd3258080df1df07cb21633264eae50f3c6cd4c6b409c8c02e" - -AES-128-XTS Encrypt NIST XTSTestVectors #231 -aes_encrypt_xts:"390ace7df8d9892010652a8862b171a7d058dea4965f2ce695e1491156e8d6fc":"ea297b9462b8fa94fb3391669c61ecfa":"991f23936a4eec5e7ba83044ba842cef061eaeaf8e799228a4":"a67772f97982680e75e74e4a38f2ba0b8392e183d277d1a25e" - -AES-128-XTS Encrypt NIST XTSTestVectors #232 -aes_encrypt_xts:"25ba7f7fd6a6a73dab8e10b650a9760d54eee4c2ac329a93213cbb1cd85bdf82":"0a88554a4c8a6161a87f6e6d34716697":"258fb3ec75e89725ce871adc4c492dba868d62bcdbf3786932":"ecae91b32ba90a35d01e7499d09c136357fef2926d046d4c6e" - -AES-128-XTS Encrypt NIST XTSTestVectors #233 -aes_encrypt_xts:"17c11527b98a80e5368005fcf05173c5121cee6107c716b54a9e2aeec4ff2c79":"27f00b6624d4f10444c85c95b1f6a7e5":"a8acdc65502df6a6fd0dd2e0fc0593b5bf98f820f5468e3595":"f39239affedfd427901e58094b93ab8016b74f88a91c03f05a" - -AES-128-XTS Encrypt NIST XTSTestVectors #234 -aes_encrypt_xts:"5a09c86603053ee166d97b8b656eddceec74be955a22ac9d530b87c5d18e2ef7":"5832369a401fd6e4ed57932dfdba85ae":"bb8411818a8be2285615a5c1f5e1a64d328f98f379e1644239":"48ccd45842d2790c34ff5c66b501debf569e797573beaa00ac" - -AES-128-XTS Encrypt NIST XTSTestVectors #235 -aes_encrypt_xts:"ca36f1f6934b300e5c975f648fbf6a0ae3e7c29c76b30fcd5f49592a2394b1a5":"a656913d21adc644c72fec61ed050c3f":"4f484497dc3cdbb3816047195c04ec2cc5faf97b228c1839fd":"52a0ebbc5391d438110f7277966136c880c43fe1f2f0d70aa7" - -AES-128-XTS Encrypt NIST XTSTestVectors #236 -aes_encrypt_xts:"93035c14d384a781dc92d29f446ba709c5d32351a908c1a56d7c4447050786ce":"2b628a380440823f22ebdfa50934ba23":"b4ac378eadf90f8f53f64bda7dedb2b6286ac19848d11b896a":"a0acb3739ffd5008bf57b3e292b70e33e8b71a68a8a12f0b75" - -AES-128-XTS Encrypt NIST XTSTestVectors #237 -aes_encrypt_xts:"4486838e62524e1c6e05cc1fd3363ebb50dbd59ba6147b0c13da6beb98f2388e":"d70f77fcd9529efda9930f0b2921ab17":"bf0db2891f20b54cc7d7c32c467ddee126c7912c861b69bba1":"78c9bb3fe16d7c5e11e7f69a12da5d0a9decfa070277c9b709" - -AES-128-XTS Encrypt NIST XTSTestVectors #238 -aes_encrypt_xts:"9884700b29e65a7ce78d59d16471019eeda7f8f9f054a57cb89a19d7b3eb6c52":"0562e1568b2264be65067a6a4e767924":"b65a91f6aa728b64282bb2c245e232bc3aa8030e78eb44aca8":"c4c87711919613f8d2bee324f07d6220e0c07f20206b611d50" - -AES-128-XTS Encrypt NIST XTSTestVectors #239 -aes_encrypt_xts:"37b793ff51cd83f01ba5d0c2186ed2ac81637fd759022e434d9dc4491fb218a0":"656489f2473a021fbdca7465d95bc6e6":"8408a1a7514eb81c9be042316963e7ea9687b3bde92b285d9e":"a62ccf9d5b31b6d1e428a93c3efd04f6bcf08c7746542062e8" - -AES-128-XTS Encrypt NIST XTSTestVectors #240 -aes_encrypt_xts:"6a4f963102476f03c1961da63f100a12185586342971131e7363c031721dac39":"9476741f581a3d58ceb586dc1a1b9990":"4f8afe09801e8ab585e3f02fefdd1c157d1064fb31bf52ea15":"73b03d51cb3d7b6062c6aafc842971281417709034a99905f7" - -AES-128-XTS Encrypt NIST XTSTestVectors #241 -aes_encrypt_xts:"1fc997593a1e96ae1896d2ccee36a2d977bae2039a1f266e57e07b0f3aab8dff":"324dbc298eb9fda397227016eb28be9f":"60dd3b2c4dcbbd62c7afea77b82c96a9d7c8cd124125787323":"b233384a9ae646210b6191656212cb28339679ad801e54a58e" - -AES-128-XTS Encrypt NIST XTSTestVectors #242 -aes_encrypt_xts:"501d8b1e26db47dca3f3b8a5d82031e11785c35947b4add20128f0fd7413e61f":"65aac528e07922190c825e59962bee46":"d570ab4468efdc2afd13a7524f1e74f89a150df75aa6ba1d2b":"db41a8f6c57e3391097035b5d40bc2625213f1c6bb78f50aa9" - -AES-128-XTS Encrypt NIST XTSTestVectors #243 -aes_encrypt_xts:"ad1aa2aa6d67b2ee4d2b2bb63116c4422b87a3f537889a9f6e19ce526f8a76da":"daf6877ddc2930804422b2a25bd83cea":"d4648b3e737082177ed6ccc1caf48500cfdbeec2f052522fbe":"42f89e670adbb6484ca15d9326a411dfa5042507fd549960d5" - -AES-128-XTS Encrypt NIST XTSTestVectors #244 -aes_encrypt_xts:"90b0e0ad653e1b0784c3ab33a95a08819eee61cb46f866b5fec5e8cf9e47fc70":"0e631c6f1e4026fe38e7867e26a39295":"aaff25cd8502ddade1f0f0b50882f6d1741f44405ba7a9222a":"fdd741e15a8e53cef1a78bbf9f068150fb6c91a89b57212aad" - -AES-128-XTS Encrypt NIST XTSTestVectors #245 -aes_encrypt_xts:"12920ae695dd07425a1002ab1d3eed2dc5065022500379e32bde42cd5fb849c8":"418a3273dfa013d76c17aa02b76192af":"8ed2bebaa5f42279af74a2c0cad26f152fabdad23bc07948a6":"f6e692f23c0917e638a80031bc57b403299a797b7986a3e514" - -AES-128-XTS Encrypt NIST XTSTestVectors #246 -aes_encrypt_xts:"18e9fc45cdf3a24732c63763ba4b065d189ad201d45ddcd77f45aadea9cae18f":"fa4d09b5264e180b666c48eda198404c":"afbe16568bd1900c1cf60e43d295187cac1abfb26ac55a896e":"3d1af03817d694a492796a0661980a80acee3147c83e171cda" - -AES-128-XTS Encrypt NIST XTSTestVectors #247 -aes_encrypt_xts:"9e4a0c44dee66b7f10c90159391e63cca7b6cf476a217cd29c3375a4ee84ce09":"1636eb2a5f8133d68cbc8781f34201fa":"1f6ce4e0e8545e7d4a96ea2e886986c53aa78dc32b2c6d8d64":"cd09e978f6cc8e85d66b6ce2a07b712aaf4af448488cef38dd" - -AES-128-XTS Encrypt NIST XTSTestVectors #248 -aes_encrypt_xts:"9094d67639a33c185d6fba5139a874bbc647de93995ff0f2527a38876954ae64":"eac4c96f67898f4a828fe775300dda69":"f44fc9c7c06697f3d67ad70e2e456e58ec183a8546a95d8a1a":"57c341b4129b8b116485e33baafca44864959b6fcd75996f4a" - -AES-128-XTS Encrypt NIST XTSTestVectors #249 -aes_encrypt_xts:"42f87222102586c14f2a609cebbe96aa8374efbb38b15a66cdf69db0710dd776":"042fd8940b15e78b285528c6804a55cf":"16ee2ef9fc7dff88575683e2c2965ace93ef2cc0fe880b8cd9":"e326d372cfee988286f6d0ee8167578e2c0a0fd06df913d355" - -AES-128-XTS Encrypt NIST XTSTestVectors #250 -aes_encrypt_xts:"fc5fac80b69e7780adf841c49936d221d0da385ed4e4d384ae61c0018ceea102":"6a7c2ff7b1cae2a359b96c1606b10679":"e3d2dc05f30541bc7976ef482322e3ac32f8c1cf63f00f8ed1":"25932ca1dedefcdec569d1305f8abc1d25ab21728bd5d5ac5c" - -AES-128-XTS Encrypt NIST XTSTestVectors #251 -aes_encrypt_xts:"e764d4a43c23500302f3cce9f4d78a922f31e822e68c41be20efd3c981eb4e9b":"11ce717ef2e553c32f0cc16cb0d4b0e6":"14962b52355600e138d3bebe594ae85c96c5027a6d65887c01":"41f829f09977f4724d4c1fe387b7ea0135918d61d6c24aaa81" - -AES-128-XTS Encrypt NIST XTSTestVectors #252 -aes_encrypt_xts:"4977ab40842fee15b0d6dc0a4efc322024271836c6643631b5b7e0291051446d":"cae105ceba1f16c9882534e5bfdfe604":"6fe36fb5e07663cb712f009052a606efef3c1e0b45f967d9ae":"5753b4417ed0ffe081f7cd2a23fe14beb9126c2b1bbf1b8175" - -AES-128-XTS Encrypt NIST XTSTestVectors #253 -aes_encrypt_xts:"451c1ffff9a02867453a5f2389319c9e1f9eae7a95338be76ed7bae53513b6ee":"e6bc99a1a2c4d5e1d3107471bfcb0599":"5f901756506ce784edcc45320a081497476fe0a5e946c32798":"0dd88dd144165dc85984b134e2e9d9c3bd471768ea6984266f" - -AES-128-XTS Encrypt NIST XTSTestVectors #254 -aes_encrypt_xts:"8a1d702fccd2215212ef3d82497025bc73cc171bc53b406b3bbd415b5189df3f":"bceee9fd3dc69ecaeb7c7f8260a1029c":"ee3bcd52a4c80435404705fd2c5b2193fa425fdc78171c0e20":"95a6736bbf7ad45517ea25b623a8de1dbd13b358c24cf4ee30" - -AES-128-XTS Encrypt NIST XTSTestVectors #255 -aes_encrypt_xts:"675753a16ecf9b40c66fd1f6c3973b061d76bdd02a0e9c7a0ac5c09630b947ad":"1d987500e5bed8f6736549bb45f8cf5b":"a6e9d9c2e87eba4e6fa2f1ab37d0fb5c46e809ef5f044ab61f":"a43341fe59c1f3bb9a8cbf5c71c8c4c02172392df716890733" - -AES-128-XTS Encrypt NIST XTSTestVectors #256 -aes_encrypt_xts:"3e72c4e778e339f254fa2dc5a7998e9c5677a509e1960302314cda964db7924b":"d5bdd52d82dd3fe5d8900ee817571012":"72be49ccdfb8328cb2bbb6f10eac20cba9d1176b8e04ac467d":"d4da53e7ef94fb114fe81c349ae469a0eb2b968871cdf7c9d5" - -AES-128-XTS Encrypt NIST XTSTestVectors #257 -aes_encrypt_xts:"ebee2706f8fe0b6c4363fd678037b926b2df1a0e79d4f5ac293b6a7ebda63e16":"92651101fad79d68bba6aee4647e2a7d":"2bbb8f7902366bcd95ead90d14517e46c15d28be47e97923fd":"79d75b0f0f963732640ef039d8d662db11037737779a050390" - -AES-128-XTS Encrypt NIST XTSTestVectors #258 -aes_encrypt_xts:"ef279cb5100ec77546f36ad5fedcc776666cbc087d2280a7507de679a8347952":"7e10c655b1118baa83ad903128863d3f":"4b84652f951e21461c50947ae64913d16110f7419bf7e9c3f1":"ff14d1097efd5146efa1c3b9ceb6d57a650ecd24f19523daee" - -AES-128-XTS Encrypt NIST XTSTestVectors #259 -aes_encrypt_xts:"049e2338ed7b9cb2ce6942e7417f768bd05767f1310f0142c1760f9bf6fc34b2":"a224decdd41c72d63a5bf078c4e03129":"db3d252e3b9a3153547f24df015f5e12a94c94e29e2cd14096":"ab3462a486f8bad95f0ee099fcdafadbcaaff73cb28f6dae62" - -AES-128-XTS Encrypt NIST XTSTestVectors #260 -aes_encrypt_xts:"c784ccf72ce67db21fac9b2db649b7f0b2d319b734dfd7d8f37457e8c4ea8b9f":"c57c6f940224ea7e24fdbb3688337721":"ce5fb89b2c313070fcd85a310d90348bb103af093c38633a93":"3d8809d6f5d4fbaa893f4832657ec3fa8d2c31bec15107624f" - -AES-128-XTS Encrypt NIST XTSTestVectors #261 -aes_encrypt_xts:"0da2ef2b3e42652567a9d7e00d78072a4c528b8a1c444cb2dbf725997876f13b":"fdbb92831b9b2f3758295bd405a1b9fd":"fa914a5d45afb654e82a33a52b4ab2c4e92f1b0ca39d75654b":"e4ae621ce3ba1f2423532e186ed3ce78e93c1bee82cd92c32e" - -AES-128-XTS Encrypt NIST XTSTestVectors #262 -aes_encrypt_xts:"b17254f48188c2f7602323e5a8da39f31a9585725b204067f49057e03be1ff3f":"94b401bbc4b9f73810e88438bbb0d1fb":"306d05045dbc4ad0c7d8459001fb5cc1537f8e77aee2e446a6":"4fed11ea08dccdddc6f97c8039959218636e224069fe25b06e" - -AES-128-XTS Encrypt NIST XTSTestVectors #263 -aes_encrypt_xts:"3c05a555da1595e9c151c8a55b149f6caef6eb3326e5de58c4f902e53f0dcf00":"1fae8f3e5607ed4d89ca4e8d21f849a4":"916687ddaa519303e38207bd1748d19727c347af8e7c5c4b34":"74d2320508f2b60ce3ed6ed6fbc12908f14c5dcaf2d890b37e" - -AES-128-XTS Encrypt NIST XTSTestVectors #264 -aes_encrypt_xts:"edc7ddf1af418fe0ec30c142526fb970f3e70c4183a722246eea6f32fe26e4fb":"903243958e525f03a1774754ccee5cd2":"efe22bf3eac0aff0a8f798b8dc2bd967a740cb2afd018df1a7":"0e9ec45e968e1103aa6f78a5b23706189e8f61fcc8758f99f2" - -AES-128-XTS Encrypt NIST XTSTestVectors #265 -aes_encrypt_xts:"3644b6e1ddad06c36ba2a369841de978b182fe90f1767d7652568a7218fb3a9e":"da4bf695b21d606e7cd7c6dbcb64d074":"a99a87841ab828375a7177b863bcf2b9bfe1bda02dfefa0200":"feef1ded263a273989f4a16b907edfd9e9f4e2f085509ce2ba" - -AES-128-XTS Encrypt NIST XTSTestVectors #266 -aes_encrypt_xts:"69debf9b3c38faae3ca9927bdeac8c3609b88b87ac269afc2bd63d221bb35d75":"1f3fb765167e0e91773ce97f102cda60":"0d374a41984b539d6bec39316473637b1c8a5b48b5734406ca":"bfb95b7fcea88899b5d57d9405c16403e68c2a42fa5a6ab450" - -AES-128-XTS Encrypt NIST XTSTestVectors #267 -aes_encrypt_xts:"b6cb0e7c03eb812f701e5e562db7eef80adeda2402881013f0c00dc0d8a14274":"1e26366785b21d1487c0945cfebd1b4a":"c460940eb8afb254a5c3dc834dbb088a69af761b4884ec48a2":"b5400e6a5a0dea27214ad579229b579120e375a5ec6a0fe9e2" - -AES-128-XTS Encrypt NIST XTSTestVectors #268 -aes_encrypt_xts:"d95260b97d7069dd2f30006d686f5d5fbf3141bfff295df70e9af4b7f3d7da65":"1807f95e6b00f8d843d118fe21cc54b7":"ec9026c8b1388d48b15aafe32f663f5024c1744ca8832d6e0a":"bef97fb5b326541fd1024b5513ffc54475715435fa86884bac" - -AES-128-XTS Encrypt NIST XTSTestVectors #269 -aes_encrypt_xts:"c909a9f89025137670c94a35ee280324e4e69fff32bdb92da87d618c7732f6b6":"b435909e84a9bba20a81ad63e95adc5c":"216cd882630f21f53f152d81341d3bb2dc7b6a8d8918a1616a":"8170ef0326c67578753a9995bf20dc2678ba8caec54d52d25c" - -AES-128-XTS Encrypt NIST XTSTestVectors #270 -aes_encrypt_xts:"2dc29601550890a4b9747ff18da7d44a977ec4cea206639702ce7580e1c5b37e":"7cf2b45cb1937a640cfc66153fc3e981":"c07c1799070c5451d9bca4424504d3cb208b2e7592ee3df086":"4ca9c280b77779c764e965e051256c94a3da4e2a81f42c01bc" - -AES-128-XTS Encrypt NIST XTSTestVectors #271 -aes_encrypt_xts:"9ca7dc714099b17b71a6400bbeec2d9476dc84ac95bf855fe3e478a984ec71b3":"3797b7798f1670b9e394d6d94f9c8238":"f00ee8fce52ad07b2009122aefe5fbdde2f4357e5a4c2e1388":"d737063da8968cff0852d15a048192c3f52e9c3fbee3aaf3e6" - -AES-128-XTS Encrypt NIST XTSTestVectors #272 -aes_encrypt_xts:"0ae37f5ac48d6a2d528225506f80bd9241f17135205a1a90619baaac931e46b6":"dd65ef2b931b0ca92dd354c87c9d7bed":"ce3310cf42b951ef9cfb8e7f05b36a157478f8d3c76e62752a":"bfedd3cc1566d414c1ae19262595b5208ae552ee05289b82ff" - -AES-128-XTS Encrypt NIST XTSTestVectors #273 -aes_encrypt_xts:"389ecd695be62d7467bbc9e4228212d0fcc46a3ab77d760635ef61f9aea4136a":"3451416be9964e0a14757aec60705838":"b7c003c267f3c95b12664d726c6e73d93baea238d23802e98f":"ae3333b90593ddf6c0c9ed6b64bf5fb53c607b8fde8e619a52" - -AES-128-XTS Encrypt NIST XTSTestVectors #274 -aes_encrypt_xts:"6171891dbf04fc163e141ffd92015e3119e74b31c1122788cb6321521f2ce6e7":"c8350b5bd076b2803b8c38408d4b7d16":"2e36bae834da6926f35cb35bf1ffa396ee876f52371a9c9aa0":"b59e938bfb8b473ae264017913257ce71d081c33e4f17023f0" - -AES-128-XTS Encrypt NIST XTSTestVectors #275 -aes_encrypt_xts:"5d830cb67b77700a768ea3935335986d675a43011091ccf1777c1903dd8472c1":"b972e333fa01f5813d3f33da70882af7":"44d0b6fea1ab47edbcb69484a2de6b42b3c4ba59eaf1bd5bdc":"ef27bab834ad34ea9f026fc0deb96ce3c731b7e029b5f119f6" - -AES-128-XTS Encrypt NIST XTSTestVectors #276 -aes_encrypt_xts:"fbd0b0bb3f7d415bb072e12815d1e432da5490a0a68f0f00abe47319e92ec1cd":"581b1f8a59e66a1e21547b715e86222e":"1c912851c2775e56046f61386dd8004a46d8939b9402c34640":"13819d2156d46ebeba6f8b8243ce163fe4fc93bbba047d82b2" - -AES-128-XTS Encrypt NIST XTSTestVectors #277 -aes_encrypt_xts:"cc99b6059568fa44e7d30cb03fa6cc99194ae718e8907e8c5dfaefa841d14f3f":"087167e3fba4edeea98ee9530a51ecc3":"335f6292a5db8308a04b7e287ce00698716375e1430eb051d4":"f0ae2e8e4f43709f9513c7d8d54542fdefeedb92c3f3df696d" - -AES-128-XTS Encrypt NIST XTSTestVectors #278 -aes_encrypt_xts:"0862c0f15bcd10fe50317c4ddad84e889f90aac77cf2f3407603079bd18bf9b2":"e4db4baa2c402206d94d985511189041":"dca083db5080cb24aa0d6c719468b271f08b516d564782fac6":"fc0be49f7226f03699553ddcc306d9f11dbc10ae178f2ed969" - -AES-128-XTS Encrypt NIST XTSTestVectors #279 -aes_encrypt_xts:"eaab1775215640aa69dc5215e3eebea54e1e5404b7bbfe1fac1a499ae21fcdcd":"09dadcd9c49c75198bd0bf139baa0b23":"0d868bca68497051610f715d695930ae5c654464b845144c93":"7c68dbd7a1543c1996cfc6d3d4ef3a4e3cede53de0681a74ca" - -AES-128-XTS Encrypt NIST XTSTestVectors #280 -aes_encrypt_xts:"bad7ed1dc3460173247761d6dc798a2a93553f1d33ae014fb7f940a4e414c4af":"4fe879235e79cb8fb2499722652e7fee":"b3d6332dbfe3be9b20425df73ce605ca787434551a0be1a65a":"a4ed66bb18ebb2c2c09749fae3247768c0213a939070c7f032" - -AES-128-XTS Encrypt NIST XTSTestVectors #281 -aes_encrypt_xts:"9d0b7247238476a25db16bb061be8ab76f7c1ce9bf9b256e0407d5016726e983":"fd5c2284e72362d369c82f86e63a8398":"1a7e102572c4795a6493857b50b3bedee0de68305aa622b432":"d1aebf0213b3aaad1a89a73e1ed0c6c494e8f4ce4559d9ca25" - -AES-128-XTS Encrypt NIST XTSTestVectors #282 -aes_encrypt_xts:"dbdcfb0189bfe444c9964460e7d48bfbf90bd48c706635cbf1907b4af137f5d4":"591477dcf19302e578f569f3e81d1b28":"0dd2575a6b0757bcceee19b74db147394dcfd89a8c9953352f":"cd07e57e7f9ccd9a8328c5717e4a6cb9f82f31fa0e78239a8c" - -AES-128-XTS Encrypt NIST XTSTestVectors #283 -aes_encrypt_xts:"69ec9a750e63328c09421e30174e44f048952fbd717a1f4b884544417a8e2e6d":"df94cf10396922f2c5e54943e88dc46a":"48f0f1543f644b417242dd1183dbeabf6f8e40bc820ff2da1c":"c637ba39b02669b6c8759a5694a917e11a91c46e1338b3dde3" - -AES-128-XTS Encrypt NIST XTSTestVectors #284 -aes_encrypt_xts:"75cf1d4394c6b256b29b225cfa54648bb05bef1210f0932d1c64062499961108":"1958ffc6e26bcc5fd9b638bae5cafe90":"1bb523250849224278636616b50446d0e16488151d3cb4071a":"0576ac39ec2716c60ca2afce812d9f0efb75ee429d8f3455b0" - -AES-128-XTS Encrypt NIST XTSTestVectors #285 -aes_encrypt_xts:"b8db0b9e63f5f0e6609798a6cb42bb5b5d7139bb955799f52a7c581f84633176":"8d46f96701167a1d77cd1e44da92f3a8":"b4644dc1b38dd598ca840a82d4d9c0656723b15801aa18e66e":"09288cf51f1eb4adb85423d0e0d6e958188706af260e24674e" - -AES-128-XTS Encrypt NIST XTSTestVectors #286 -aes_encrypt_xts:"41407d7bd6b7666c320f2c2a89ffa5437f78e4e5dcc81ec3df3616237ed27819":"65778665119801907c843e0598aed0d5":"371e57c294518cc7bcad10a9b3ee45d77e3dbd6d5c6e83fd99":"2f70e57d5bd098a8a019d6f60479649a8603284a27b8e2f90e" - -AES-128-XTS Encrypt NIST XTSTestVectors #287 -aes_encrypt_xts:"9790040342f660b3fa7ccbe990cd0866e33ba8fc90ff3fafe45c1fdc388b548f":"9f380615149117b24eebb8d2364cc3c5":"ea069a8de1482eacfc5d7b8099fc6c331487bf4c52ef7aa5a8":"bc32729d102494ead18c7a3d273e4bf0ce16671e6b378062d3" - -AES-128-XTS Encrypt NIST XTSTestVectors #288 -aes_encrypt_xts:"8b681f99ea3a7a6f954a0bfa0b7208c4af19176df8a7e51bcd9d1104b3a21bdb":"752c97876b54f33d371bbd3198675a86":"87dc736a04fdacdbec20d5987a26d2f0064385bfa11e4f6842":"fb2f15e5aae94edc8bf8b021e5dfc9f2f1155b306560dbd064" - -AES-128-XTS Encrypt NIST XTSTestVectors #289 -aes_encrypt_xts:"770059053f53f24f9afe0694280e35be66a00cafee4180b5dda108761b460acf":"638289381ecd2b5043f9978f359bca6f":"ce6c188b42c2e54c5cc61d41b9c22fe1c195090603fab8d7ce":"700d63a1e0919de638c229ecdfcb6bff9f4bffddb57b43b47d" - -AES-128-XTS Encrypt NIST XTSTestVectors #290 -aes_encrypt_xts:"a3f53da523b7707c5a720213df5fb206a13cb381d43144a44684813af0f50cad":"8df861cca6930cf385da66d8a2645886":"a5ae456dddf7d4c69d98f07fdc3b8d2faff18ee4409758a8be":"73e56ce7c2f711e8e3cbaa7ab323711b552ef64d0e0121560d" - -AES-128-XTS Encrypt NIST XTSTestVectors #291 -aes_encrypt_xts:"df57a76f69a4ed440236ef46aeed0483264c8ec2e9b926a5622c0f4d16f11c72":"6299d19cca7b488f398c82199fb0c693":"cce18dfd27b965f992ecf0f4b8712b0905e222ce3e6b0de160":"d4833a029818f02fd0b0ffda3ff055ec03c7e1ceb7d07ff046" - -AES-128-XTS Encrypt NIST XTSTestVectors #292 -aes_encrypt_xts:"32d773f5a9684daf661d72b5eb176e742714096e040fb6be6299e11fc0b5a1c0":"084b52b31726092911c468d9755f8e1a":"2ace487e0d253e94f1eb873e5fd77aa99aa57467d3c483d33c":"fef06d12b502c66349faaa13cf9e111d6bfa7bc285ebcc26e8" - -AES-128-XTS Encrypt NIST XTSTestVectors #293 -aes_encrypt_xts:"24135c437a1cdd551da0e7b360e50be8996bebbddfa5ab6641a410029cc62a8e":"c9da86cd08f5e50b379b7e179e81ce1c":"3837fd178932a761b7b332b1086c91db2a5fa0d4c13e4a4fbc":"6f1f0d9f45fb6323c413ec3e0253dca7c203896018ebeb7fa0" - -AES-128-XTS Encrypt NIST XTSTestVectors #294 -aes_encrypt_xts:"dad5449784634bce789a5d0f7846adab8e44a92cbf206ee337fce51a479e750e":"9e956ebc04fb79ea3a545a70dcfea495":"aad3e2d07bbc090808a5470dc26621ab483b9e1083ef4b566f":"f7a55a52650510d2f9e8748190e19deff97d7ce3326dabe117" - -AES-128-XTS Encrypt NIST XTSTestVectors #295 -aes_encrypt_xts:"bf450e0d06febe5e78d10c4a71a63fdb6a9c77e467fad3a6ba90d9119d62ffe8":"2230f85cf887d594107d5758de34f2eb":"6963b057c4785730144a3c682fbc22ba50af7c6f8b900714f6":"544f3bc9a39c1c56431674e7976be2c7d624b25fbb8f342db9" - -AES-128-XTS Encrypt NIST XTSTestVectors #296 -aes_encrypt_xts:"e8354849e799b6dfc2f7015645c21948616afecc449a0b94786bccbc244e9bf9":"f1a789b4c76ab39da591c3b3ea9ae75c":"08fed380e9cfe583f769822adc885d439dbb4103c3c7d36e5a":"1f2136319ad84dcaa9fadabbc2433e8d854794ad50c92d9dbc" - -AES-128-XTS Encrypt NIST XTSTestVectors #297 -aes_encrypt_xts:"8fad4e44ffee282a2f96c76f14adfb703b856b96c18d409171b089de1908b306":"dc00a2e2b27cb79d3e14fb505bde3842":"3e953629e42bf39b53364b73e20946dd2bee0eae6d442f1a68":"f3cd30a00768b3d8c49cf8438130096aa2cba2a1f08e8ef515" - -AES-128-XTS Encrypt NIST XTSTestVectors #298 -aes_encrypt_xts:"d1cdd107e8aa980ffac39a36d3b2714715a6193a5c24791716211401885395b8":"9773afc7efeb6a9e3582544c13aad954":"e4f7487a4bc0e29a0a8b2d01f0b6ea1c58f34fba782d5b6c19":"cfe9ba9716ebdb434bafeda9615d0fc41516c2a9cd260ab45c" - -AES-128-XTS Encrypt NIST XTSTestVectors #299 -aes_encrypt_xts:"7e1d8b12e7955529b902062364d3f2fb10eae877ed50ff848429e27a8a3f64c6":"e95297569ca19cc1bf9e4334c7129a07":"92a867163bd97993371e44289463b3a0d9fb6ceb95b30b8089":"b492090c2b98bbaeb0e5f8adf2fcf9d74bcb87204cdaee0fcf" - -AES-128-XTS Encrypt NIST XTSTestVectors #300 -aes_encrypt_xts:"b7090e04e8a41c798aa16ef695c57aa645f8ee29742e0d98d320463a4f7ee17f":"312b646c51109e284a6cb073b83bb252":"9cb4e43f438290494448a669147f6864b16a8a45782a4fd40d":"4c33423b061d4c23e7d90030f3407523d0f8e8f7f1a442bddf" - -AES-128-XTS Encrypt NIST XTSTestVectors #301 -aes_encrypt_xts:"03877591c280ac961c7a934f983121053695610f32e58a936a85a0a646f54eea":"5f193c539893edcea422e1c9d01ad95e":"83280dfecb3480491ac2df2ec90953e81f1e1ebc7659ec9820acb8eb8ce030cf":"f491446e42f9ccab200ecb505f7e49bf8a2ec66d4ea9420858c04544a4221bf8" - -AES-128-XTS Encrypt NIST XTSTestVectors #302 -aes_encrypt_xts:"b4ea849b02a0cd5b6d32c5c0cbd059a2bfd517ca8f09cbdb90f23b4537e0dc9c":"4cbc59b0824f5f6913f50d1155860818":"1dd27696c9c501945533f8990c245f74b0c13faf25b349a627d808f46ac77efe":"3e80a917a0956e62c9400c0607b45504f2ed01a69271678779190adf3f651725" - -AES-128-XTS Encrypt NIST XTSTestVectors #303 -aes_encrypt_xts:"9978a4506e5486a291727c7197e5b583a3eeb3a0f5410e529fb7129a9073b972":"5b609c6abd8ef2c49d37ca13afd9d155":"aaeb480915111e302462cd223ff5234454e03dfb296b87a9cd90d19d6d3251b3":"be1b296c0df263f61af59d1761c149e58d829bab6e65b65d258661e69fc990ac" - -AES-128-XTS Encrypt NIST XTSTestVectors #304 -aes_encrypt_xts:"be5cf1f99d5159f211dbc4c147f79c556b2da5c691deed740d0157eab8c9c89a":"89248624b696cf9cb1b5779cdcbcfe1c":"3b80f822c4eee1313f79ca3db134d9ca8b09a3534d4e18e6439e1cdb86182a4f":"4b6af43a88b633ebd1e127c1ec90cc47a2f16e3bc79f8845e3bd0025da872645" - -AES-128-XTS Encrypt NIST XTSTestVectors #305 -aes_encrypt_xts:"07ad64899440e49fcda7d223799a0bae0a867f3c7202ffad8bf58b58b0570205":"c983899741711ff622c4bf5a0f3abec8":"bb69210203d49bb3fc03f8a244b32e52691ba8c8fef437e31f979a5c11c85b52":"7e0e9d664f2d06362fde224f5522fe7222f4878e0883d21ad6bc1292e27dd17c" - -AES-128-XTS Encrypt NIST XTSTestVectors #306 -aes_encrypt_xts:"bef309391268c02b98bb8808e3b6d0b02718ed4b3b9007ac9db7496d6e81dacd":"9fc461a3f0da106bb3eabf37d33f7f35":"50940690b0ecba839834b892e9b35f146e974e87750e2e57eefc39a003219b21":"080a46957a9d1bf26a6675363a0e80075c332a670f99c14e71b199c2d4205472" - -AES-128-XTS Encrypt NIST XTSTestVectors #307 -aes_encrypt_xts:"1ae48da164ea9f3229dad4c0e29665818fa093253331be78bbe0c8b9f12d7041":"5eabfb795018b073a3d0ef8b02259126":"79ad43198755c960d9df29437007ff2b0569cff37f8b38969a14faa309f76c9e":"65a0f9766a4f44b81c0ba3a3d6f95d38621709d10a286f846e420f4aeb22bb6f" - -AES-128-XTS Encrypt NIST XTSTestVectors #308 -aes_encrypt_xts:"cecdac48818cb319b56933738ac642f1920d331a5de195732bca38ec60c185c2":"db865f9334ea3d8c3eb654fc38068ef2":"d42208ba82512c6566a2b6160732746f150c73a155e78772b583d7c5338199e8":"37d438fd2000e2c2a4ed0349225a869ee521b34c78c7d16890d2000c7784a317" - -AES-128-XTS Encrypt NIST XTSTestVectors #309 -aes_encrypt_xts:"e8a9cfa12fbfed8beb97266234cc19807ab8391fc492caaab83cefc2aa5ef721":"ceefe3cfa557410766b6e291e5313105":"2105c7efa74c9106e81ae89cb665b903b666de169a79dbc7ba89775fde00fd55":"1b213817ebcddef293ed69a27118ff8bbdf846304343934077e200e9ea5f38f0" - -AES-128-XTS Encrypt NIST XTSTestVectors #310 -aes_encrypt_xts:"abd4ddba8320692c80219e4d693476bd3a052419b7b8e1c257a60f7e925a3397":"b5df87ffc38192d65f4e871daf134aaf":"c864fc5ad9a4cd6075ad0eecaada4bff3df419619fcc9f60bf264c0305d4f102":"0900c03b7d06eed42177ef3d20336391af0c1317d2bcf19697192fd66417e59c" - -AES-128-XTS Encrypt NIST XTSTestVectors #311 -aes_encrypt_xts:"d17020c55be457687659af4eb18f298e18132d633b0b150b5e1c6db290c58356":"cdb3611dcb62c902c8c80bd63173db1d":"56d8fb8adf517e007b83732eea59d3ebf8a7e5a86f54151cc15de581c6c093c2":"0b6619f282373d07afdd758f1b9359eb0688fd79d48ad80d58c44a1052b58b0a" - -AES-128-XTS Encrypt NIST XTSTestVectors #312 -aes_encrypt_xts:"c444a2b8b997454f9103dad5cc2455d240db9c23ae074ba33195b7126c019a01":"5ee51581d9c26116337ffba96f86be18":"ae4971e64101fb66532721f0662c11f5513479b0cb01780ad9f38b978f8bf17c":"84172a01d875b7c480feb379252e1480337df590101cc0b8da7076baf6fd85c6" - -AES-128-XTS Encrypt NIST XTSTestVectors #313 -aes_encrypt_xts:"5bf0a6833c7caa86d21f2e7db2462aa6dc570884e06ba31b111e26598bddc15d":"21a54fb9bd5b6ca53962083547b00cee":"5d73f3c3dc231b59bf42be456af9dd315d588693b1c5478c69f4efc2d40490e2":"f3fdae1ce86598f3f0faf8e9059a479e1c20564fb1665e1eab22cefa180c23d6" - -AES-128-XTS Encrypt NIST XTSTestVectors #314 -aes_encrypt_xts:"ada71b0ba150c95516ab067c6611d49263dda530b6805f5c67f982a74c8d796e":"4c7877bcff408e1f4c07778a81455de5":"24e8d8c470565e31d7f8efb672eac6482a02bbbee05a5f31db22b613324c101b":"37de77144f6ef49aa29519da88178dfc52f974a688d93a49e527a6ba03251ab8" - -AES-128-XTS Encrypt NIST XTSTestVectors #315 -aes_encrypt_xts:"d9070bb4493208e2421b52d31d97569d4bcfdc4e7d4dbc1dbc5afe9869eb06a0":"2eb46fcbff7bafe8db3f116fbd3054ca":"ead6ba5594db44e5d1cd2dc491d105baf11b667e8f695dbffa7dcc721ebcd45e":"0fe5be2a3d56c5d15d14eeac02d0f5a0d34b58521e94b0c0052659e316cbd8dc" - -AES-128-XTS Encrypt NIST XTSTestVectors #316 -aes_encrypt_xts:"9d8bbe5ea7681295fcea80b1ca65050235450dca58b0fa4f5b12a3cdef963b00":"20fae766e10fb4f19e3f3b8468ae9f74":"c1223f99e7b6fcb5d2fcbbdb8d5aeb003412ee393206f9e7846f45ade6578e38":"0aeaebbc613d813600df65763b548787c99ca40530a0c2f817050d8a6172ac82" - -AES-128-XTS Encrypt NIST XTSTestVectors #317 -aes_encrypt_xts:"b26426391533901831058943265bfd73f5453402b0afbb1d71857cb1653ed092":"c2dfdf831d6f703f260a9b00e85b1b82":"c30afcb4a255bcfdbec8d2b8f8f570431ca25db2ea9c4096b5d8f55653cb0eaf":"ced314063ab4c4b914224cc9504fea9fa1d4feb568398980707e277ae7d78634" - -AES-128-XTS Encrypt NIST XTSTestVectors #318 -aes_encrypt_xts:"6b24212a9e224fa2d60fa69a5010b126db9e1f035c630f234e64656c549db53e":"d5f8305bd1074d8d884be21fbb4575fa":"24e51027f9c8ec525c5e30f0b63c4d2cb510d093cc3c332c3106677551a7f46f":"813d2d3420eeaf965be28638d94cd7976ead39ccd5b615877d4fab4fe5f9e09f" - -AES-128-XTS Encrypt NIST XTSTestVectors #319 -aes_encrypt_xts:"02b21b1524f2178efd16c12d7bbb9f0a31ab243228f312f5c84e19138d1250c7":"5075307921a48600cffe1bb2111adbc2":"121a6ce40a0b256b8404b169d2a79f5925ebe865dc0aa788f728e4ca4adf9a48":"9849ddbafc01c400d9c862a34456a21ccbc4804ace99ec145eaa8610111f72b8" - -AES-128-XTS Encrypt NIST XTSTestVectors #320 -aes_encrypt_xts:"136c782bb55cd6dba0f7bdc6199d9b1f584def00dcf08684f3f3530b0a6bdae4":"a50e56b262d094d8f6f38977b2b2296e":"2279ef6f8c811479a00a051ad800ec5e5e7c491c357a1ac91538bc141ac71d18":"9147a09066366e74d685838f7e48fcf2624b314a48d052765470dd314fdbf767" - -AES-128-XTS Encrypt NIST XTSTestVectors #321 -aes_encrypt_xts:"51c40593d82c26a3bc7b6571f1d26b3b11ecba97ab44cfb14e9853e9fb5df74d":"7c47786f6897d15f41afd8a364351062":"6240895df5bc3b07dca5ed1b04170fa89cf1294814d9e079f49133227e761a0f":"ec7054168ae6b9bf3b27b5a8530ac6f7d112c75be6ab59ff47198c93eec5baff" - -AES-128-XTS Encrypt NIST XTSTestVectors #322 -aes_encrypt_xts:"226d9d330f02e685a83dba1f40a263875676d1e24e5fecf7beb4c6838fe75e38":"481b887d645eadb4bd682e04868caa24":"f3c8914dd7f06480959ca946b2398a6c84ff44a8f98a72a6d0c8cbf6a1a80834":"e43d2cc44744c459c54ab0fd44aa7cc70d0400059c70c2a1f3b3397159f6e0d5" - -AES-128-XTS Encrypt NIST XTSTestVectors #323 -aes_encrypt_xts:"8384ce63414a822f27ec32cb0857b178011e9831f7dc51f70f3ee4b4ca7ac631":"9ecca263be90cd94605a8fc95167bc24":"190c84c7d46375e9f78553310804ea1cdb7a3933982063444d77c600b977164d":"3eea611fda316529e4410ee71ef9f07bcf4c9d9d853f08d9acc4a9fdc891ba43" - -AES-128-XTS Encrypt NIST XTSTestVectors #324 -aes_encrypt_xts:"c33646baedbba6509d53e5e408e47f8c5cc19b6d047593375bcfa8a33f2ff800":"6484dd1e46a02c0b871bb4d404c65ba6":"35c2d802da70ad8ec9c08804eee0374d0119a8d203953c4dc4d2834cfe11e992":"35fa4861fbfbba9daa2977cc2b5ef7f996b33a17a805a5b8f081b4ae65560214" - -AES-128-XTS Encrypt NIST XTSTestVectors #325 -aes_encrypt_xts:"4e49c91841eb18141f0c4d44cc2b5f8c45e5b1d99331404807a96a5022b3a696":"816fa97e8c2c26c94995a740e12b5c56":"5a829a1ca3ccef21fb57428850e50d8e1bbd88a2ea034be861945650bad16f96":"fccddbd5de72be23c93ea5acfcd2bcd865b1e7d0355edc53fe74229a82e2eadf" - -AES-128-XTS Encrypt NIST XTSTestVectors #326 -aes_encrypt_xts:"7ba56055504bb5555b7b3431f8233a730536858ab912b57f392c565518c35493":"f8a7ed6d6f857cffdd091549a6524a4d":"9b84ab2593e082671fa9215cd7f31c64690a7c847a5a45033aee4c94563d9d16":"421cfa029bb8028dcc91409bf14b6a1a7ff931c3ede16ab1c14dd1454d78ebbf" - -AES-128-XTS Encrypt NIST XTSTestVectors #327 -aes_encrypt_xts:"16f40f45b28a611ad925d3b43b8b38d739b5ea91d1f659de07037d0b2b54f294":"c54618821e6212b1532b860f808d1201":"d608591b932038e4cef104c56cc4296242874c4ec360cc5c16a532ae9d461915":"f64916847c16ae940ff14e923d2e2fa37757c9fbc189007148253f059a11bc55" - -AES-128-XTS Encrypt NIST XTSTestVectors #328 -aes_encrypt_xts:"cb0c7c3a686623972e4906d8345704c93453d0e24b0df65b960b9942e9652526":"c53e3eb0a6da67fd0d4f1d5907c0e85d":"f60a13ca871660bb2dd0250e440e561710fa664e45f3578629393b54a9a89b9f":"06bd1ab94c6ab8ffffafdc5c986eff7a859b12337170d63ae1369f174791c367" - -AES-128-XTS Encrypt NIST XTSTestVectors #329 -aes_encrypt_xts:"16cd5037eb454bad5dae6bffa864f37bf5dbbed8f2788880e0b0333ff3cef183":"c51e75a1cdfdbba11e66b9f51eee6c8f":"6b09105ea56df790ead72f9942e696ff026676b60388a2b01840995b47a02f97":"487dd1f7be4ab3f43f68f2e4bf30f2e3ba18bb944ad90578a1a60b1e8d0c1f87" - -AES-128-XTS Encrypt NIST XTSTestVectors #330 -aes_encrypt_xts:"013b8a0d524aa51caaea800b71a96d373cfb7f546e526b67ed4e8b5448455435":"a41e7ba0a87844d39079980fb8424800":"5753757b010dbe91b3d050df467c9499e79f8f40a5a7d9fe17807689eb098d40":"e8a1fef235bef88aa72a02d1792a2b32557956e29591c2ad22e8ad0581e4f944" - -AES-128-XTS Encrypt NIST XTSTestVectors #331 -aes_encrypt_xts:"9b7f94044bd13ebad385bf4fd9c0bc18280bee7f1c43c2ed29352f4a0f4eea18":"e2508de947e3c32f66d511f5e4f596ff":"7325bbc4f480001a0406da6af0bd34909f59c57ab99d718b91e6686848cb9deb":"6ba938d27feca55d18ba2a1af546e6234bd89ab54596a8bc3f6fdb3e719d2887" - -AES-128-XTS Encrypt NIST XTSTestVectors #332 -aes_encrypt_xts:"a70f0fc7f92db7a64cb6d029b2e8d127021416415e16c655f253654daae9e1e5":"dd4001dacfad534677066c4f59ecf734":"318506eb10a753b1cc920df731f7c51d4ef50bd1d6cde1222b414cce212e727d":"a7092e32f1a1e7a6cd89c79e5dd99377a52d2f421591615fb4d928d8c019c7c1" - -AES-128-XTS Encrypt NIST XTSTestVectors #333 -aes_encrypt_xts:"db3f026308b712911b8d5418b71eeff753a8614eeb6495fd6d06da1d3a939169":"db8a6c216a01f4a93ee7dd4d7818451e":"7d87ee2b6f8e0dcb55f67eff96e9182688cc0261d7ce3409dbb4a38e2002309c":"4fa94efd047d6254406863d92fd7c05245e9c3335360926453c9f935e8acb0fa" - -AES-128-XTS Encrypt NIST XTSTestVectors #334 -aes_encrypt_xts:"b8d820058c20a34b55aec16bd9ff10a9f9de3c071caf2217a4422c0bd39a2fc9":"b97d9c8bd7f5a503233c11164c252e5b":"d085378688c0836a76e39285f5e3a786748d9f97074caf3c65c25696ecf1f23e":"a9697d5047abf5e31517614cf0e41d27ede31aeedb73a32a22133329990eb6ac" - -AES-128-XTS Encrypt NIST XTSTestVectors #335 -aes_encrypt_xts:"c1bdf06902747962e7453e201e4011fd03974eaff8e2758ad47e4f60ece2aec9":"27299656b85340e7397aaf20e795c28e":"9c7c618d681c032ef10f2b554d3a5067084d68570377bf496b953122dcb0b333":"fa2b8d449536fc11c117702de757a0b4790745cb04ef3e0c6cf4e166b177c08c" - -AES-128-XTS Encrypt NIST XTSTestVectors #336 -aes_encrypt_xts:"c5daf1a726f3419eaa32936e7e12e1a4ac6685487986c9a38470ce23e64ab07a":"4ed794b26083938f7c4b51f6d5fdc2f1":"e25141cdd9ae22c378b864515fb8d7f2320aa24c3e747d1b566675362e2c8ead":"1357df892b91f7c2bf7f7ebf2b6fa3f6783effe36aa66d53ed21a50156b8c739" - -AES-128-XTS Encrypt NIST XTSTestVectors #337 -aes_encrypt_xts:"0560ec1e3469e4eea9c04a6a5baa39c1bceb64ce9a83fbce8f240ad41ce63013":"3adcadd94ac5d385bbeadb7e12b56d8b":"88ac15329974a9cbd8a5d6f370bbe7fe31705e82f24663917c27be319bccc756":"9c2bbec2626638dba8e7d4a5d47424154912fd9c18b72adeb5ee85815cc19b6a" - -AES-128-XTS Encrypt NIST XTSTestVectors #338 -aes_encrypt_xts:"725c6cb3a8f4ab8c524f1c8a5626029e85f11a04d8593e056387ef493ac6ba25":"6235da2b9673518df8a356569ec9bb63":"6c68d2f3ef6241ecd0610654a58fc68c2b5b60da73d7380ac33638b42302063d":"86868e16193f58c9cb9ed42362e15efad1baa79a8faab6947fc0adcb48bdea5d" - -AES-128-XTS Encrypt NIST XTSTestVectors #339 -aes_encrypt_xts:"86bd097c948e671deba9cdab9cf7611235eefe5da54ce47eb5c7cbea6c583af7":"0753ba896e5733ed3e1aaa93afeed7af":"779614513f7414929df2bec1d0989dad294c5dc80ec630f56e76b5490ebc43e3":"88fec29008dac2f894bf53364701eb472ed57c542df2ec02942c8b87c201c898" - -AES-128-XTS Encrypt NIST XTSTestVectors #340 -aes_encrypt_xts:"b3ede67af12bc4bb90e16a111bad88ef75a0fa0aa807ab35a18d7ff0f6854d93":"45740845e6abe588b7be6de531c97b82":"9836a461474734b324e93f9df7255781157f7c216aa868bfeccc28b00bc3ec93":"32f77825ea526e284faff34aa438cb719d8417afb4dc37fad3d8911f8fcbf28a" - -AES-128-XTS Encrypt NIST XTSTestVectors #341 -aes_encrypt_xts:"97661d6430e10df0e912fa849d0fcf5ee5f8e00df66cd6c0fb198365e7b0dcca":"f6313e7374bd2b18e4b6a3c9c812242e":"e5ac4bbe1c35299ebe4c98d160463ab252dbb99af2dbe30d1aecc63d22b10ceb":"8b8a6c5fc696076c18193d045571645ae2fa7ae5cfc26198a47463c4949dfc54" - -AES-128-XTS Encrypt NIST XTSTestVectors #342 -aes_encrypt_xts:"85dac2dfef835b2876004d2ee540645067834377d91071a7229c9a225c6e5185":"5f3df0dfad6aa5788bae24d31bcd86db":"e2898f438dc747cd2bf9402a0f11c59ad120f4fb9d6e2d17324c37a4b0882152":"2776c76442351c7e80dadcb3900264014559e52941d085da565d5eb30d190c86" - -AES-128-XTS Encrypt NIST XTSTestVectors #343 -aes_encrypt_xts:"5292993332ac4ce702f16067ed66366b8def658fae840ee3541e8515b1a7331a":"a180e09d27be71d71bb73027b87cdceb":"c10159214ae7fe14e46fe26610098d90ca1b70badb781350d979c8cfe9b23cbc":"d0fbfe168e90799f41f1d3d3c621bfc10bc8f22dff8efa6bcdee96a5dc1eceff" - -AES-128-XTS Encrypt NIST XTSTestVectors #344 -aes_encrypt_xts:"eb100d829416741e2f9ea5097d0efca4750cc467be4ea09ce1c1a535237472d2":"9d81b315b88e18b0562623b16cdac546":"ee51a91656d439e7901ea4844a925b16b8d217031e2484b030d068d899bf10d5":"37b7a7ab4515e769031463f0b7228f00fdb723e49ab4a2c2e6f40611b3a54f72" - -AES-128-XTS Encrypt NIST XTSTestVectors #345 -aes_encrypt_xts:"05b919c0ad6dc5e5c1e90cc46bf9fc297c082b4a42e9da06891d77c99830c977":"30dd0edf0089edf85d38852459dedef4":"e545aa458fe2aba532c70fc097b197f21e8f56f82695322f52f4ca51a36fdfbe":"65f521f124ec59722820493b6df95dc31dc9ffe828a8ef3c7822869c8351d59f" - -AES-128-XTS Encrypt NIST XTSTestVectors #346 -aes_encrypt_xts:"a412d486c56ece7f7c65ad01d281447877090df06a2f41163a8764e2bdf39f01":"fb603bdeede5da6d56dab5923fbd01d3":"2fa04b578c78874567424016316f81f879af03c87c0e07387db65f38cc47cdf3":"1f484c0931eb867925ab0605bd3f1ab80d9be65610f05cfc68c76734eb36a3f4" - -AES-128-XTS Encrypt NIST XTSTestVectors #347 -aes_encrypt_xts:"b8e03c92d7c4d6143bbddc139be2f5bc57dc4d0953aa0827505494675014bfad":"5f9e36fb6ab76951c0efbc45eecaf6a7":"98c3ccd4fe6db0dbf6cfcebbfa616f7586c240c64e8cb8fdc453468dad84b61c":"e684857ac24b785cbac38db6902e8cf992ca275219385a671ff506e36107b250" - -AES-128-XTS Encrypt NIST XTSTestVectors #348 -aes_encrypt_xts:"7c49bb52f46db1ffd326029425a0d7df2e8575df20978a9f0392ad6462e9b320":"9d78f22cd051452c50c4d5c1a4d45898":"ab52a4a66d7be149105958014d22b4c406a2aded43779549f2424733241b541b":"a94223f2bc2b962e4388defe23595f2b9a09c35863c622d1a15e9540372cf8d1" - -AES-128-XTS Encrypt NIST XTSTestVectors #349 -aes_encrypt_xts:"9d2d0d9b6e4f964d4d3517f5dd11802f81f93be1be95fcb0856adc1976f254b3":"9924a19aaadc4f0c55686d25ccabe056":"91cfa3cc38e51001b6a226c7092d47033229d91793a9976c6596c4b313c5d93c":"99d72780f964187cec119a43f0d3bc92d6de1659094d26b27a2ffc428e106f53" - -AES-128-XTS Encrypt NIST XTSTestVectors #350 -aes_encrypt_xts:"364c4ae2ec7e129d6123597731d03fbc6efa2ccbd17520534acd5ee1aa417b63":"b8fd4ed8d5c1fe3eb2983dcbcb00354e":"37d8ab4701c2ee6b460afaa0964fda430f3d7e53956edc745bcf3de275521e49":"39223c5a7ae3f5541fd111aef42f8b2970d34d94e7375c0e71c4a7c4e60314b3" - -AES-128-XTS Encrypt NIST XTSTestVectors #351 -aes_encrypt_xts:"f6da105bf2cb3c17b08127e72aa7e5a1d71f59dcb7272e6e3d397dc49ce3baa4":"20b6f7eee88a0305edd2d3cb832456c2":"7436a5cdb44fba8e9870316276f6b0889de65d122a657ad2346144cadb427a5c":"95a17741dd4717c08299988135bf8ffddf042bb89cbed4a106254a9b8be3ce71" - -AES-128-XTS Encrypt NIST XTSTestVectors #352 -aes_encrypt_xts:"1d053906b3b6e317bfd7bfeb52a6e3216a9326e54ca7768c212e8c8115002f34":"439edacad05ccafec7f8674a3d7e1697":"09400c066bb2e74008d89b15c34bd6b866c319b7340cf3847cb2ff6b0785d181":"9203cb17f33f1a8e8aaf2fb37e9b642dc8092b4d591c16fcaef47823dfeea563" - -AES-128-XTS Encrypt NIST XTSTestVectors #353 -aes_encrypt_xts:"9b8ee3f0832d2ef6840d6ebfd213059d3b9f19012e9bfd18f0d3fc82099d77f9":"4de81c3288c351385edb042d6b1decd2":"79d8561cf3f84ebba702f1dda09ffbbd7b0ae7893475d5f0e4ff2cd814731628":"816682858337f95699bbcad5e894cdf8c0a0e9958f808925731a8327c688427d" - -AES-128-XTS Encrypt NIST XTSTestVectors #354 -aes_encrypt_xts:"ffc3a5cf1c55fc8535bafd1555e6d4c40cc77294a084c5d641683d723ef075df":"bde3def09308faf0d7b32c7389f20378":"fb65bd9c7cad9bcb2661bb51bcb939556f3fbd8033a281dcb5951fe6a2a1b1bd":"19583fcff612d54f3d03c368198c14ad5c2aaf45902294f30f74949752827df5" - -AES-128-XTS Encrypt NIST XTSTestVectors #355 -aes_encrypt_xts:"820fc9671b0abb7d8dfcb3c58847c5ee98881027d3f7b74211de656afa5e0d29":"3e48a4f5eb0e4d3c5347520ec096615c":"438cc2aba6817369e24099f7129055f632c803934048ec77dd0e289febf7d43e":"c39fabce42d280715f669fd1d508a3798cd23a76d7ada6b404baa27454f6e46e" - -AES-128-XTS Encrypt NIST XTSTestVectors #356 -aes_encrypt_xts:"bcc9bcefdc0cb4d8fbd9a120d6c17b7d19cc66b1e797c21f3b5eaf65c6ddc1b5":"c95be26491708fedd8a414725f2eda72":"998e1a2184314c76edac0590b8bc2f8c597d09d965a9233aadd3e21f0fca9bc6":"e41842f6117dfcc0054975e1c4093f769522a5561da93fb2ef9f8b047feff3fc" - -AES-128-XTS Encrypt NIST XTSTestVectors #357 -aes_encrypt_xts:"6d954d20c568cd7e79f0cd8225dc8b46e8f477b9acd47b534822e93dd6c24324":"d622b7fb7f9a2ac1c211348333750b10":"89e2fa3bd1938a39fd17217554419ddf09ff6ad5ceaf1f355ed9b99902f885ca":"3aea18015de12916605257ce715177b8135acd2e6278eb420a8a98a3e06e301c" - -AES-128-XTS Encrypt NIST XTSTestVectors #358 -aes_encrypt_xts:"6193358d4116e74bbb72e2a37c1622f569dc5ce0ec390a521eb36a299ef78585":"5297a3e876a71c5c2d2b71a82b4f2114":"31ac9236fed920a7d827aa6b958748c1b49c9f08d681784944368fd57f03e4ac":"3f8bc0a5818bd267f96bebd3b6577547180f19132e59d323b159123192f22039" - -AES-128-XTS Encrypt NIST XTSTestVectors #359 -aes_encrypt_xts:"a2512a91773f40e71b3b9ca12d7198f252ab533cc2d90583f7f7942c5d725433":"02b44f1929a2660a52a5cfd7ed609798":"b1bce6b65272de8989bb12a1a734735a1a9230b6c9bb303e2708789bad39c952":"df39584245e9c3f573a7fa6f655b11425dd45190a9bf8a71720edf4ddd1bb2df" - -AES-128-XTS Encrypt NIST XTSTestVectors #360 -aes_encrypt_xts:"6dde8b2da9ecc3a6a71d5b6fe4301087c5bfbd8e4625d097be6b10e08d68f6d7":"c71b8b55e911fe4dd12d5b650e639fb8":"85a890990412233632c3101c11d02a84258dc44cdebde323149fbb5509571705":"7e61b188c81ac6af8207aafe0f77cd4eccd238d1cb3d2d7c6da2f35486fd7ebd" - -AES-128-XTS Encrypt NIST XTSTestVectors #361 -aes_encrypt_xts:"3c4d650a3baf6cf75e9b5021b0d9b6f97b6de6345118030461fcc0a6a7f292d5":"89a7ee983d17760af2099fc837604638":"98ddef44a912e506178e297c00e1f495e51d1773f741ece10917c1747d2164e9":"1147a1e778c26d9d0339f0dc6b8b87214c4c636d26002a8bcef59017e0f0b635" - -AES-128-XTS Encrypt NIST XTSTestVectors #362 -aes_encrypt_xts:"ab333b418b3b42af9519cbe8fd9270de848e5adac8f42b1e64152c349890434c":"a7d05c1a5d99854333b94f5e0dce80a7":"f3fbf3c450df2032d7821f65eb91b9d8758d133edae1f84f2ebdc31ee413103e":"f64a3a6066d680f9a402fcfe2b5cac72b20740173930aabfb1056fb0590448fc" - -AES-128-XTS Encrypt NIST XTSTestVectors #363 -aes_encrypt_xts:"bd657a156e360bb92ed6cc9de16b92ef6b6d2fea601e424aef47372d9a57d268":"64faa47c4922b9418280b58686694e2a":"f01280440de63e089028cbd5db65ce1429d2d7a85b7264f8dcd930f27108bdf6":"a33474692411fcd3d185c3278b6be43832e76d0a6ba42b84d50aa403ffbdbbde" - -AES-128-XTS Encrypt NIST XTSTestVectors #364 -aes_encrypt_xts:"20feca2e0676c80a3ec90e927245cd192f07b6812ff3f7a8747f75e195780c12":"43fd4516326311477a147f4a258d3245":"67b1b4ea40e373619298c3b57932e1e02a916a10d05b359231e9b171cd65be3b":"73c7812b6623d4e956ab8a460773f4a4390c506a1826ca6fe975dc43734ec40f" - -AES-128-XTS Encrypt NIST XTSTestVectors #365 -aes_encrypt_xts:"3f00ee521037265292634e6e5750a339ebba857ff2d6e4f38b5f75e0bd97bf7b":"017a9e57cf26680828bc6da1ad493ec0":"1f01ad4341af3638b52fcfee31c6ae7fe0f16c702c31b731890a2e4792fe6dfe":"da84cb3f422ea88c9444dee28b8d2d031e6f9c2804bbe719c603444b7e844f81" - -AES-128-XTS Encrypt NIST XTSTestVectors #366 -aes_encrypt_xts:"c265e6dd320f5a8fb6d934678d23d6b1a8c0a0c6bd753597334117e8d39e47b8":"adbbec55260c6434852a44a42d9e1d6f":"6dfc5d7ba1bb6fc49f6bf5a0bc8fc29a3951cc73fe69a5f2417350bfdbb2fa64":"ffb891a9f814b94c744be45fc94112a08e3026c182741c4e3f306c0d105f949f" - -AES-128-XTS Encrypt NIST XTSTestVectors #367 -aes_encrypt_xts:"04faab2d9921f406588f567e227efa8b0766a09d7f1745ece6b6ab904f7dd6b3":"abf4ebc1aa380135732419d373e9625a":"3ef7fb43a18313b018f9435cc375401d271444db745d1fa27042ac7c0ec60d3e":"c8eaa98da6fffa17e7652fec46003ba86504dd52865d587b966708298c905994" - -AES-128-XTS Encrypt NIST XTSTestVectors #368 -aes_encrypt_xts:"eb7db584603f003950968560d4b0da950f7cafed9fd6c827d0ad680983144dd2":"7003557613c2298114ccf447d465c15a":"fc7e0d78701035e96a1661520ba81418078d30fbc151bf0ada66e1a1e268691b":"5482f43be7b7dd774583fe17c1f70d36b7385a327987722c1284243962488e77" - -AES-128-XTS Encrypt NIST XTSTestVectors #369 -aes_encrypt_xts:"4b71316977fb73c984ba5fe72212d8277f6f9cd6e2235f6c977494aae2db4fda":"c51f8ab8ef6b7c6aed3f02e1a455b724":"3304e61f522aa4aa20e48ae4bb55f3450e964da4c6642ff0cb25bb56c1c584e7":"f7ea9d434b8a5ee0eeb1b9b021e867da90e1a9601dad6f4177d95a4df5cb7ca1" - -AES-128-XTS Encrypt NIST XTSTestVectors #370 -aes_encrypt_xts:"d88c7304e6de6ece71b2188aafe3dda0e881d0c68d7623fb4a67d9986b1ec3de":"1518d21553008b5e81346d64e7f02d78":"2e2faeeac230d7ff3bfde80ffc4215057fb65a0771cb5d03c0fb3320d8147dcf":"ed8b13bdf133c6c2d46ba1b3dd0f4882ad81060aea41d153ccf90d6796b0c20b" - -AES-128-XTS Encrypt NIST XTSTestVectors #371 -aes_encrypt_xts:"8af11e69d22c159124bd2d753b40f89750edf9738e77fafde5ed1c409d7ee4fa":"5834b04a46b3ff971b8fda42a3c4a46d":"6dd8fb0cba152cd49aa4f53293e80bdb29562a07b8e43254d865d3beb2302743":"e7c46840183afa862ada36705038e1a392db49c7c92507d36ee23aba21bb32c3" - -AES-128-XTS Encrypt NIST XTSTestVectors #372 -aes_encrypt_xts:"188f2327ea20557842213ce5be19ff700bc2426f0d47a4ee3c9761624a33156f":"9faf671d4f6779c605ce509db39c261b":"3eb4b92062114cb9314067a643290e4616013159cefe89b300cbc5a7502d1201":"4f8e2ca33dfc8edd599ede3892220e77a59f5ab0add5117dddcd77bb9e40c6c4" - -AES-128-XTS Encrypt NIST XTSTestVectors #373 -aes_encrypt_xts:"5bd073414e407c15cc9630c8b3d91c28a4ed61e541b3b813577f487d515cd81a":"6e09aa0381baf46904f94e276d31aead":"5baf7c4669a261731bc84f06e59abefc4e41d5e0b60b7ed8f04674e5954ca606":"e786654c54adfea6152c25c8cbd145e05b10b08b5ba5d649d1ad0ce13984c1b4" - -AES-128-XTS Encrypt NIST XTSTestVectors #374 -aes_encrypt_xts:"99c871dfc8fbe7fca07248d8dc007483ae0d93637de8d1a3fccbd4f3cad48a86":"2c4cea585b89d7c6f00bceefe39e1da3":"1a3f2f3636dbbf830a605d98ea57681b31c1665a1c1596c45574168174ad7d6d":"c393cacf549b79a1ba54f00717d3f7d992931a457db826cc4c132e77c29c7037" - -AES-128-XTS Encrypt NIST XTSTestVectors #375 -aes_encrypt_xts:"eb4ddf5bb550972714447359dfa28ad2f675f42ccbb6a1fdd4b4f7a5f06685cc":"b0e870553293f0fd028c8f99dca2365e":"f84b6551a2910fc62d4807277a2fa2c2e5ba84abba798bc77675be1e89d87f5d":"3a189067fe2993b36b5ae430e9476a6d8f644dc9b0241fcb5e76c87a03c89568" - -AES-128-XTS Encrypt NIST XTSTestVectors #376 -aes_encrypt_xts:"58e407625996011de200b7a5477e391bcaffe819fd62be113ba48ef6fd6a4ade":"1318417d36b70d5efa3a8132c4f5db63":"e95911953addf07c3ac25aefcdccdef14292f284bb64fd0ef2a9649faa9820ee":"4c5731b07147d4be6b2041f97f0984619e7ae1c34b2502a0e2976f0046febed1" - -AES-128-XTS Encrypt NIST XTSTestVectors #377 -aes_encrypt_xts:"5539c27465c47d1b0c8152f64e76bfb5059842f9fa202f398ba5ce5f5170538e":"43fdba2f384b816edc2d1f9c2972e685":"19cc9664c47a6b8a7bbb122b01ed843e425f23ef164b96970918c6664f1c3969":"664714b3643903e42e3b2615627085b563a0d19719d81976e290e3c4d47c0c10" - -AES-128-XTS Encrypt NIST XTSTestVectors #378 -aes_encrypt_xts:"f66f0d35fe0b4ffb9141ad53986556854894f9d3ebbff2463a64763d1b6cdc1e":"bf8b59de7a0908d948fab554f0c4aad7":"49a8119c079f65ae4d97d1ce92e1e6150b5cdbf6abe5fc9d487eaaf1e5a750e5":"9f4dcd4b088c7a804671f3ad7cb7ac409d47bdfbe04e31b5d9964a746b462217" - -AES-128-XTS Encrypt NIST XTSTestVectors #379 -aes_encrypt_xts:"71b894dbee8d78e2c700837fcf077525c92d6beadd6bc9f8e14476408e842787":"56007b6b02aaf85fa08bf674a29ca5d8":"ad9b381580d680ccec3f31011351923c02fca9270bdc268bb5bd2f75d709a80d":"05523cfe54c568d8daefdb5a4821ad67885c35f7e72700c0d10f6d9e08fc005d" - -AES-128-XTS Encrypt NIST XTSTestVectors #380 -aes_encrypt_xts:"666ec109029735ca59271f22ce347ade057dd39d6e99f48a8756a1d08ed39d85":"a89318b3cb5b2523f597e8d63bb4bb06":"66cde13067c7f0c56817a6ff1c03318767125d4ce4cc650b9e9631af10406836":"b3ad873e257ed5c840b0268d7671ee28cfd4699d5ede678c631398b9664d8b2f" - -AES-128-XTS Encrypt NIST XTSTestVectors #381 -aes_encrypt_xts:"bf0342615ce4f2a8d803e549d6321dc6ee55947c668e30f102c86a1efc676638":"5bffe0daea9ef5dfdf2b05335416ee84":"a99d2d7d421ca2c0b92b9cd978237d32a815f6db8041f0c2a22d90dbfe5a3c18":"f50b956ae5b5d1187bbea285dfe03a53c7cba20ddf91fb53ac33a5d511fddf2b" - -AES-128-XTS Encrypt NIST XTSTestVectors #382 -aes_encrypt_xts:"44db4b6d84bb36f961fc6bb8b5b5bea72ff9da5a07962de32784d8d00c8df838":"66b259c2c7ad1947809efc9940def73e":"6715c69789b7a55b8b74eba1abab66352003926b92f0bc60bf626cc5a0318700":"441d923ddeb31c22f1ed38747aa5e57a2dfc88d1c19ad9586fac982b044fc1c8" - -AES-128-XTS Encrypt NIST XTSTestVectors #383 -aes_encrypt_xts:"6871cec62e3f869403b24eb12bb818c74efea9c3f0b71abae6f1e51313c2be77":"f0896c8bc97695a2dfe7f43ae5661006":"bf9f5c3fd12c8a3c7403c14a46b3eae76caf249df5b7a9d2dc75f07de6934c5b":"b1e58aa0e4233c4a396a509288aeddef429c412600b4b5bd67ca788340b6a686" - -AES-128-XTS Encrypt NIST XTSTestVectors #384 -aes_encrypt_xts:"7943a57c457aeed06aabc65417caacde54fa57956ee5ca4b187824655d09e40d":"194e6da835db6a7869f436004c14e6c8":"2e21e00ca2e633e13b3764ac76808293903c34bbeb8dff604661626abe0ee71c":"636b63f02ca28a72c0a7520307dedd714eb7f75630ea86fe77ec1880586cd9ab" - -AES-128-XTS Encrypt NIST XTSTestVectors #385 -aes_encrypt_xts:"9df2d47ef484d62bdc67994e436c2b93c4d0ab12a51dd7efa5b92408a56327e7":"16d77939b9e3dde5d364da9528a69812":"ed46eb35be0fd0cef9817b713f07213c553429af849ede85b8a3c1a50c7673c0":"6900e0db5f1870d87db594248ac2d9b722eb748a577e140d483bb980eb188380" - -AES-128-XTS Encrypt NIST XTSTestVectors #386 -aes_encrypt_xts:"59a6f61c4477b75875bcff5cf6fed0b3ce47cb2087936b52554158f13b601ff4":"cb4022a294ab59075efce487a5aea584":"abddddefe0c353d26bd9dc5b10dcf61de6737a84d0b1a14dc9c2762e9d2b71e2":"a6efd71eb74f6a3d752d3f0155dc73de6e6dd046da913bb6995a34448efd07d0" - -AES-128-XTS Encrypt NIST XTSTestVectors #387 -aes_encrypt_xts:"efb9c55df8260b6c31556b40ed58e3db71336cbd2f9b4cb566726167da6ad06d":"bc02e099607f91e5ba566bfe16164e41":"fb615f1aefaf34ac7cfb2ab582e6a8c1410cee8cc1e971388968c54a4a20bc92":"15d122d539f1c4f306a1dda8cc325733adf673e3c0d7fb2317030f599a2da544" - -AES-128-XTS Encrypt NIST XTSTestVectors #388 -aes_encrypt_xts:"1c1028bbf96e48c15a0e486f786a8134dd23327b24c0461f9e4832599e83083b":"37974201494c3fa500f2a58b118abc06":"af97ed10c28b82246d090cdb71c8a097651aaf1012fffa92f5f34a5284546173":"ce0faff2aad71c26cf03ef19431a7270f2c0eb50fd71b1a7fa9c46ca70450cec" - -AES-128-XTS Encrypt NIST XTSTestVectors #389 -aes_encrypt_xts:"c591fc7bd38527cf4158e51da3dcad945e30eac2bb3f9d45b4d35ba694081797":"2a35c3ecf3a3a1f8e3c0f04093bd6af1":"299a99a67dc8167a84eb15e6b20b39a5914cc3118cf4d65caf4d1bf2b17ceaf6":"0d3cc3fada933e67340b57c96634d277331ffdf39d958a182e75f1faf2ef4522" - -AES-128-XTS Encrypt NIST XTSTestVectors #390 -aes_encrypt_xts:"2fe89406145d94f70412ab0070f3d5e5484b78f2641aee9a402a5bdd656888e1":"17e7af69fa8b180da8f5dddea35210a9":"6cdf7b631748e0d9861a47fdce2e8f09bc145da6859b6e53e581e2c62d3009b6":"5550bd928d2a30d0c168b73455a080539836320908c8300b15d03c27b7039a2f" - -AES-128-XTS Encrypt NIST XTSTestVectors #391 -aes_encrypt_xts:"74d3273cbed32440492358f9454e1ef658bb6ebc403c723739f5db9a69c69140":"f17796bd48abb00e1d34b522b2b52ca2":"334481593c7b0d0c55ccf9484daffc866669d11afd7599bb42fc4bac797d87f3":"952960aa9cb53d9bec1efe8190d6c9dfb68f29f4c996b3f3b69f1f0bd9576581" - -AES-128-XTS Encrypt NIST XTSTestVectors #392 -aes_encrypt_xts:"ad5909c69da7291d80b7b77cc115be06dee319d6ddd554c1783998b74d111c75":"505bd5d461eb95cd59a06f7cb086c5c2":"c72a9163f942a89dca851a5c5002af77970cd6f4cd3182240f1865b8148076d2":"df6dba8159b1d2a0f371415ca2e9b560b2aa3a0d61c6357440055dd33a3e7d51" - -AES-128-XTS Encrypt NIST XTSTestVectors #393 -aes_encrypt_xts:"353d7b9d27e591dfbc4cf5074ec7d97abad17a5d30f9d9ea7ea396f8ee2cbcb7":"233f70d9159327653daa1a07fa2aa672":"57748c6f23ac4032612c666130fbbe1136914be2a7e2aebdc8ca3c425a9b23ce":"2c2f3cdb3757dedabd0c8fa3d9e9e2fa38a52766ca3714796586aafd1f9c14c3" - -AES-128-XTS Encrypt NIST XTSTestVectors #394 -aes_encrypt_xts:"d466963d144a7059eecf19447e0aeb34c700755e3a12930470e7cd10290f6b55":"89f1ced7524958922244c7d68063dc61":"a2889e90e1c0bf168739d9c9fec063b88c9dc7f8a9381e8713c9451b089290fe":"f294ae7f37b4be5a216b4a24db957a9338f78d7036158fb107b8ae77a28dce4f" - -AES-128-XTS Encrypt NIST XTSTestVectors #395 -aes_encrypt_xts:"8688caa83348807098298b1b615cb886ec838b41e38490b8b3389d22165eeeef":"3ef56e6894859bf89d9f294d7e5866e9":"22c40633a7f09509c8d585264aa709e8cd13d4a5f284efb6cbd161d984b4e278":"25db61fff51359456349138b517db26453b74dc91cf6a6d0c8adc594a7b0f349" - -AES-128-XTS Encrypt NIST XTSTestVectors #396 -aes_encrypt_xts:"605e870782df95c7c76adc9de2c1cda29225071a6e454f04e37b96283ede7754":"1152b14e05fa7c190f6780e74794d424":"990da376926f16863b4fa53e23a3fb95c1aecacff0400e07cc3c4323589d4448":"7211d91b79478ce0af976377ba36639d42ce8c467a43509c82a24d4d16c3a4d2" - -AES-128-XTS Encrypt NIST XTSTestVectors #397 -aes_encrypt_xts:"7f482803b14728d0d38449fc3a00386172be904a45e0e251bb70e5fd33f15fa9":"bcf42eb2edaa251f655e010a067c5d5a":"a066729910e5841a1e3d33095d06336ac5f84f6aafb21fedaaed88baee304c4e":"e52d09384c0d909b57aad3a648f7cbc04baeb33728b8efd2f3ad4dbf9e96f041" - -AES-128-XTS Encrypt NIST XTSTestVectors #398 -aes_encrypt_xts:"371c3a86d208df75ad4a92972d5e66c4dd91628ce011eb0d98b5efa0cb7d9f0b":"135189e1af2069ae9fe03a9f826cc84a":"394c537f1573fbc4c58f504d8a70c06117215ea30768ef7f4111172913a360d7":"77748930ab64edd8c92039d789d9cd164de87532a71c50c15df3caf846b5d909" - -AES-128-XTS Encrypt NIST XTSTestVectors #399 -aes_encrypt_xts:"c87b33c6b441c033d2750b9daacc1f7f6f3a123781d03cb8f7b9e7c6eb1cd933":"9685037a4221a374e52353fbe1f63352":"8923306880986dd26469cacb98949493ab17e704fcaa81c31f10624b1a43fc81":"c4242b19b2c21976098fa58ed4a388d67cb13c1144c77aa26abe55c71643f9da" - -AES-128-XTS Encrypt NIST XTSTestVectors #400 -aes_encrypt_xts:"783a83ec52a27405dff9de4c57f9c979b360b6a5df88d67ec1a052e6f582a717":"886e975b29bdf6f0c01bb47f61f6f0f5":"b04d84da856b9a59ce2d626746f689a8051dacd6bce3b990aa901e4030648879":"f941039ebab8cac39d59247cbbcb4d816c726daed11577692c55e4ac6d3e6820" - -AES-128-XTS Decrypt NIST XTSTestVectors #1 -aes_decrypt_xts:"c43cd0b23798ee3db0053d1e4d185e965d67fdda8c5325cc709fc3973f05cd17":"7900432e6021bc0e627c7b96ca08b4d0":"07f2c2d4e6db6e1200bc165d154e0698":"3454f7d34c0caffa12e9d2850b037fff" - -AES-128-XTS Decrypt NIST XTSTestVectors #2 -aes_decrypt_xts:"9a131bcbdebf2ba2efc2513245203421315636ac24f592e1d2b59540511650be":"8cfb87d61f9c41ad3cbe38cf81d4a3ea":"321475ac6aa05712554d35a0a96a9265":"1070b7c17d3474281ad01fc0ad89cd8b" - -AES-128-XTS Decrypt NIST XTSTestVectors #3 -aes_decrypt_xts:"fd5622255e4b21e3ee6c4f1f354a2377a68b0758bc3aca3f32aa0fd899d16f11":"d6a27b8dde6dfffa7d4ca436441978b0":"6e0a78bc0db27021f0f59756a447e313":"2fb97e979fb107bcc13b577f0f1ea203" - -AES-128-XTS Decrypt NIST XTSTestVectors #4 -aes_decrypt_xts:"4e3135ee5167ab658b4694fbb7b021791de41ed676c8c408c51ecffb1900c07e":"7d68f0f53d3ce015ef8f442b409d82b1":"18757efd08059ab70bde2df78f3bd6ba":"cff15a809220b4067c7c0266bbcb3248" - -AES-128-XTS Decrypt NIST XTSTestVectors #5 -aes_decrypt_xts:"239b565ac710fe742c43ff156ff9fa7372efdea33803bd8b883f778149726920":"ba1546ffa9bf8e194c99211a3d620a92":"7fecfc127a3762e30e14791141f65585":"83725eecbcdfa8ebdec2f40ba4b157ed" - -AES-128-XTS Decrypt NIST XTSTestVectors #6 -aes_decrypt_xts:"da3373e25d76d16b53e4dda368669cb0d9b851750b9624c65cd7d7933cf462a8":"8d24b579f0448336550d372c7228fa1b":"c5801ed8a38a78277a45516a3e12b310":"a7931ff118db06cb44097bcac1fad1af" - -AES-128-XTS Decrypt NIST XTSTestVectors #7 -aes_decrypt_xts:"1dbb0881542c6d678e8a0040c220340ed4884e1a81b23f43d9673b4ac5e295d6":"d09787717b3cb41a68898823b615a75a":"25162f7511b5c3b24aee339ffeb7941c":"331960c250eb4988c75c0d532e206e5c" - -AES-128-XTS Decrypt NIST XTSTestVectors #8 -aes_decrypt_xts:"60d2e71898b341357b9150a5163a2be056f5da2cedc4ac708eb43d92ba40e001":"0adaa6e0ff4b0a04dfbf2247f64a2608":"09da2fc0ed605b69d95e0b7760840a99":"369ad5f8fb83a0df649c899b49ef7459" - -AES-128-XTS Decrypt NIST XTSTestVectors #9 -aes_decrypt_xts:"dce7d083c3ad402029f1ed40074ff2f42e9e14091d09ddb68095eb945bf343b7":"caa883e27597661d8e72582ed34624a4":"d66768542f495d5c50b8623f314085f8":"4ae7a4ac80023405ac25bc497d6541fb" - -AES-128-XTS Decrypt NIST XTSTestVectors #10 -aes_decrypt_xts:"8f8e473564fa632684d04051cac1f129c1d6129b64700429b8b10cf300033638":"391b14e2f8cc2111bb0147a3baa040e8":"f6c53bcb07cbb44747fc19a6604e26d7":"c0f6f44c03d1cbe668c034562ea3d804" - -AES-128-XTS Decrypt NIST XTSTestVectors #11 -aes_decrypt_xts:"4945ebf4ded6f497c9d7361d87174643f9cf5909294f6a23a82a53befc6a58c6":"2976c2e825c61b8360402be399fbea20":"d2f58ae0386e9230744a2056b7fd1310":"dcff3e38dfea1d3eb78182326d7d68ab" - -AES-128-XTS Decrypt NIST XTSTestVectors #12 -aes_decrypt_xts:"b089bc48bfa11c49368757f02d309504a30afed12ce5c63a18a3e2eb3c04153f":"b79e3147e948a84413f5456ef01b7fb6":"e1fd155647de15b9fe230baf668d23db":"26339412d7ac113b319088153e13e1ac" - -AES-128-XTS Decrypt NIST XTSTestVectors #13 -aes_decrypt_xts:"b709f18eef3d86d854702f2007f9dd13463fda8f070ff02eeb7e8fb54e009ff8":"479cd8e9aefa5cfec125a110f11dfecf":"5fc717d763a56d764a21009b5132dab4":"29c3616714bf8076ab195e5e0d6cc0d7" - -AES-128-XTS Decrypt NIST XTSTestVectors #14 -aes_decrypt_xts:"07fde947d9d0c07b81a824d53e33e252726553cd3ecdffaf0234d161843c112b":"421a912b685ab76b800e9cf156f233b5":"ec5364fa0184d8b98ec02cf996428f38":"8850a5b5011c0b49b444daa5cbd04aba" - -AES-128-XTS Decrypt NIST XTSTestVectors #15 -aes_decrypt_xts:"58f6e713c670fffa62b2e74659240fa84c44644614cbf7ad33a991457b9041dd":"b220a3d0907ec1b56f36b38b0fdb51a6":"95360d08af997eb3ec62e641dd6b899a":"2fbaadd1b47f726dce3f7d4c0358fd99" - -AES-128-XTS Decrypt NIST XTSTestVectors #16 -aes_decrypt_xts:"b2d47e6ba056b67aff509939d30287e489a71bbda6c31b639f8de5e2508b8be0":"4ed7ea04032c82f612ad0b2654cc9b7e":"fde4ae887d890b8835a5fc80bfcca708":"6df4beebbe92ec8a427336b0caec1ec6" - -AES-128-XTS Decrypt NIST XTSTestVectors #17 -aes_decrypt_xts:"81b19f35f45b4e459d88e95e3a49642c5127098ccba6a50ef4b2f875ed20b9e5":"4027cf6780a3afc3d99c3d2fe46c5751":"db57d5b819129d7896e2df0958a6f9f3":"945864f9190ea8c11943df2510f94421" - -AES-128-XTS Decrypt NIST XTSTestVectors #18 -aes_decrypt_xts:"68cbd5e7e9ecfc6031a2c63ad1f95dc8ba5faa3d3b7fba1b1ef2176f8265fbdb":"8a0efaaff09c3ab2a3b202a7cb673679":"f36143630377d4e4efd44c5716a8bda1":"a856594179845a87855ea16dd03916be" - -AES-128-XTS Decrypt NIST XTSTestVectors #19 -aes_decrypt_xts:"3bd57d47e13ea39f1cf5f33c8ba029fb20f0d338639016f986b77978533701fe":"7d9e266aba87ee2af4ab7a2275742189":"8aab744287bff6901441908da23f0b11":"d13ab11d3834d733ea5dd6dbf79ac92b" - -AES-128-XTS Decrypt NIST XTSTestVectors #20 -aes_decrypt_xts:"ab46c306a2503fcc9480ad96018791674970937f73aca90a5fd05d8420e7bdc2":"92e8295631bd608c0a53a3f26f907a7a":"b9a3533b48269b56f0dbb05724272ce5":"51b9c927ead5fadad56c3eb1a220eec7" - -AES-128-XTS Decrypt NIST XTSTestVectors #21 -aes_decrypt_xts:"1b09121d93458279013df12b26e7b2a15c28c44f93f97ea638b056177deafab0":"bf962d31bd58a1f89e3db4572cfcd8dd":"d33777d780a04bfe625cae471d2b8169":"d83ddc006deeee4cc2b4c495830dddc3" - -AES-128-XTS Decrypt NIST XTSTestVectors #22 -aes_decrypt_xts:"d02380e84e40f68915ed276c2efa482c90b098467027fc3f0a16e8a327b523c9":"6d1baf4e86bbd5dfd8cfa34b16966820":"a7f7e80a068e7591ae681fe3e5e277a6":"6d246f57b5d692205f2b970dcf8ed6f8" - -AES-128-XTS Decrypt NIST XTSTestVectors #23 -aes_decrypt_xts:"224decbf90014e6fc9bce683072c9ace108933b92ebac49bceea98261716c4ae":"f17f4340df271fa5ea5fecec58f990be":"f31aff86e5759a2243bfe96f1cdad7f6":"a8b8326cc5126a926cf414b471abd1b2" - -AES-128-XTS Decrypt NIST XTSTestVectors #24 -aes_decrypt_xts:"675ff2637fccd2289065a642dcfc548db7582a040d3ab709d52b03512d5e6a08":"05f15b654a7c3c8b7168aba1abefd38a":"4f6707b5e65da3eea92b5353c7bd95a2":"47b751adeeccd4475163239610797d4b" - -AES-128-XTS Decrypt NIST XTSTestVectors #25 -aes_decrypt_xts:"bd0e9572298b6af20ddc0792efa2a6c50cb3e08f75b5550e607318ac1808bb93":"8ff426a0471d8546d5711544a6540b0b":"d3aa65af5882d432e8afdaa0b4f42640":"e8c647ee7488adc4090e08a96965cced" - -AES-128-XTS Decrypt NIST XTSTestVectors #26 -aes_decrypt_xts:"627842bfaab7d8e6e72681ac4e5bf9915f82e8561b040ccaabec9e70343a94e5":"7a9f9a4182bdf28e4d364db9b67a8b0b":"8789bb3e01c8d3e768033f2c05ffee17":"1c980fd798b916326c525632e215c4ec" - -AES-128-XTS Decrypt NIST XTSTestVectors #27 -aes_decrypt_xts:"1f0ab8d1e15365e3922ec914e9ad68097f3907b3812b90052d7c6a6daf439c61":"88fd391aa1f3bb6b7cee85b53768fc76":"1d72767fffb8de3a2a420ca4383087a6":"90f3c999cb074587f875561d04160c6c" - -AES-128-XTS Decrypt NIST XTSTestVectors #28 -aes_decrypt_xts:"e1977129e29c76175e7fd170710faf9f60c8b02d03b40ce68b0caee872377de4":"57cbc8bd440653202319f7c932cb9589":"fb8d8db9cb8639de8344238dc2c1f255":"cfa1f3a9a152c4875100ad4807b3b09c" - -AES-128-XTS Decrypt NIST XTSTestVectors #29 -aes_decrypt_xts:"fccb6e7b4c912d417d30347bae86e554ecb2d05057b27cc4f38245567cd8af9e":"402be8fb1c78c0194de0f0beb90ccc98":"90c08ac785b3b5e7c1815497a451a96c":"b04ea8cd83aea25893ac2a621879a4cd" - -AES-128-XTS Decrypt NIST XTSTestVectors #30 -aes_decrypt_xts:"1dc948c48dfe027a62be79f10b4be213d62bdc5b784559356c9bc9c65973f7f4":"ad5291d8680e2d603ca27da084d56a78":"036cad62c24295b188c47cdc247eae41":"b1ac6eca721709a527598d1dc7fa365e" - -AES-128-XTS Decrypt NIST XTSTestVectors #31 -aes_decrypt_xts:"6c3b934f3778ded28c4a5ba1d2185621f5e946c109962959dc0b8f7ab401944b":"920ba467004287321943cbd132166c20":"857679e49cd68bc648c4ab0986aa59f8":"98f21426b7148082b4ee4a8074672a10" - -AES-128-XTS Decrypt NIST XTSTestVectors #32 -aes_decrypt_xts:"51696879ee8b77f3724c6289f3a273a346d9d03807dc0b82670f3c2b378a7935":"935232958b223695c4865c8c097677e7":"5c931a135b9d4a7d65c9a8d5535c1294":"22f8c0637327b1123067e730c3be4a01" - -AES-128-XTS Decrypt NIST XTSTestVectors #33 -aes_decrypt_xts:"4d2b83551ac5cb8c4bb434577d364dac703f7fe75f74c79fbf1a7963711fdd53":"fc696d4190a3fc6273caa1a070e5bbfc":"dd155757fcf457d90bb571e8eebd4630":"8704552b90009ec3324adbf284dbd51e" - -AES-128-XTS Decrypt NIST XTSTestVectors #34 -aes_decrypt_xts:"35d7a774848259760d32f46c7a013d791babd3b898316dfb00c668c5528bc3f3":"f1540dcc897f03b8a70d7ba4506a1115":"56fdd92d70c107b7707c9aa1d33ab0ac":"c5f6673cbceae8236fa236798261eec1" - -AES-128-XTS Decrypt NIST XTSTestVectors #35 -aes_decrypt_xts:"e5d608c5cb8c2c3d726bb4f4a8023831b9335d005cc2df3bd70d9f7e71250c6a":"14d830f71e15e8945380a6e7f533a532":"d49ca2b1dfc2848120dfc2b75e292a0c":"91eecd8bbd0ff7cfe4b33d8e99924368" - -AES-128-XTS Decrypt NIST XTSTestVectors #36 -aes_decrypt_xts:"0a180bd90ba206a7bf2cc82a2f5fddf92240e08711ba02a4925f90a090b9ca68":"e7cf2a79fab30a2d0e461fbb647ddee3":"da868afeec48764091c51f5e7332338d":"86d6bf324bcc2910816abbf55f3ba45d" - -AES-128-XTS Decrypt NIST XTSTestVectors #37 -aes_decrypt_xts:"a887a09699a2685dbef306d09015f83897a7f599bdcb3b7f64e34645cb6fafcf":"13c383754d39411943576e45dfb77763":"e8cb042a3d239771ef104b5892bd1067":"5b0a85e376a636d113366ec82a2c03f8" - -AES-128-XTS Decrypt NIST XTSTestVectors #38 -aes_decrypt_xts:"efe934cb1a60b2928bf4dca84364958d6a2b5b6986db3e63162a65d377becacc":"70a06dcf8044b9088c00f9bb91014c89":"df6867693d8884cca8198283bb2c3e16":"9b3a036436a24636290c969e9d97cf8b" - -AES-128-XTS Decrypt NIST XTSTestVectors #39 -aes_decrypt_xts:"43228ddf518ea7675d9ca6394f3e8944422fa3449e8fa804fb42228f55b97bc2":"202f6f090d295e118d1ce501add69ee8":"f224ec19a58bbde03cb692e0e4fc19d7":"f515b3d50e991d55a3e0fcb093085a10" - -AES-128-XTS Decrypt NIST XTSTestVectors #40 -aes_decrypt_xts:"b13e6af1d59e3d82842703d103c1038d3d052aee0347a97167b8786aaaf0b8fe":"fa02f1df1956fb9b11ac59933dfc0e67":"b8fa089cca83d2c9979e642b9a248882":"4b20fce1ffacc7553afa3a6ac94e5966" - -AES-128-XTS Decrypt NIST XTSTestVectors #41 -aes_decrypt_xts:"d4dac4b88c978d82f0d8d0d8b44f69c91eee8735f12f0ab5a97458ab72e46268":"515ec6657d3923c568a3f7503f461663":"89691c5dbc84bf8e2e1454148049648f":"caed5c738a8dc30155522864f9289e61" - -AES-128-XTS Decrypt NIST XTSTestVectors #42 -aes_decrypt_xts:"2bfafb74d192d506a50cf8ce28b79c155a35590b925d795102b7a185080e0a3f":"4b5f1b938bd9145c5a0c27d551a0d8b2":"d7f7c8bccf8968b9f118bbead353b630":"63a88184186fa797d264a0528f39709f" - -AES-128-XTS Decrypt NIST XTSTestVectors #43 -aes_decrypt_xts:"3fe024e9b46c0a7262ce0431e81142443a4eb01fb82d301e9b8b5f7ebfe2cf4c":"a4a5905fa0b1065af6bfbeeac9578379":"8b6572487318167d1babedf6a8cef7b2":"baa495ce8309a6c88ad855f97a774113" - -AES-128-XTS Decrypt NIST XTSTestVectors #44 -aes_decrypt_xts:"890d5cbb10d8c7f65e7a9581c2c0a459a84e2e80ee90d46499581c5b8ab2746c":"00f99cfdea2b045c5b8e29ae801368cc":"531d3393772d49bbd0a1b6d839de0185":"68c529586435374cfbadb17b9b895a4d" - -AES-128-XTS Decrypt NIST XTSTestVectors #45 -aes_decrypt_xts:"9a41784e49531dc475b76d969a4296510f88af1925c8323c38f6e8e11a9b0a33":"842d108a3cd448bf505cda8b375626ec":"926cfa1f568b03c914b5a8283920be26":"71f0519b7a6aee116d481f31b965fc2d" - -AES-128-XTS Decrypt NIST XTSTestVectors #46 -aes_decrypt_xts:"9885c035f7145632759b5df6c11fab9a2b8da85a8efa7a9bc9121a59e454da94":"935db95d74d2044634a426533a3f191d":"b790368e2ab0227e5c08adc4e7057baa":"e9c680838484714f38c59fdbfaf49a5e" - -AES-128-XTS Decrypt NIST XTSTestVectors #47 -aes_decrypt_xts:"2594e2d7255a6c99ae3be120f7cc6ca1835b5643fc28c1245e2d88137308e9ac":"3f0aef5662d5f2e40d33f1712aea392a":"c94c62fdac550cf62f3dbec89cb8614c":"aca43e27d8cffc6d273a90f343c9acce" - -AES-128-XTS Decrypt NIST XTSTestVectors #48 -aes_decrypt_xts:"48e4a77186bdf295bf1caf076595b3497a6d6d6d91820452cefdfa2d221af5aa":"abff43aa43c2be70aed5c911f5361de1":"16938d35e74a7ab0caddde531cbbc333":"8fd86c0489944d4350b2232958016668" - -AES-128-XTS Decrypt NIST XTSTestVectors #49 -aes_decrypt_xts:"e6c15e17793de54edc96ec2942c269342780092b70977bf525616d80e6ada36b":"898493e8ce343b400e4e2ab9c65d45c0":"35d16e1d15cdad0502e7ef58e86f4d4c":"3f069d4997a1dd7ea4215cf1d9568395" - -AES-128-XTS Decrypt NIST XTSTestVectors #50 -aes_decrypt_xts:"23f98e3aacb0c59f8532dc09b4cda9bc6925481a140c98be78ab34242dd67bfe":"d5a8b6d4b51baca7495ece35b911c361":"6af3152f9763e39a83b94fe960e04447":"b7972c5f6a488dce95eb46a855a105a5" - -AES-128-XTS Decrypt NIST XTSTestVectors #51 -aes_decrypt_xts:"a068e2245deddb8f422d1abe3f347a7ee45563ce9784fdb5da6452d418596c18":"de754c6085aff2e6d759cbb5214ebc8a":"d5a4d8ec68e53c0aac094b95b8add3c9":"804795bc588aa048894a184c600ac75f" - -AES-128-XTS Decrypt NIST XTSTestVectors #52 -aes_decrypt_xts:"d6cd858364f472395726f55996114755f3fca7392015bac58f0e6065da32eb94":"9678bf9646f91ff5be8e5ce7d5b979af":"638789a303154fb364e5168aa9340882":"4dcdabefbf99b4f494fa83b91f0e97a7" - -AES-128-XTS Decrypt NIST XTSTestVectors #53 -aes_decrypt_xts:"946b388efbf5946802b0c55720910a2a71f75085a565472f2fca091eec6c4e9c":"34192227361656b6fbf986d1050c33a1":"5ff7c0249be2b694ad82e68023974533":"a4321472fca02d869432585a4380be30" - -AES-128-XTS Decrypt NIST XTSTestVectors #54 -aes_decrypt_xts:"2ed1166124991ce6d3c0921a25f50a4c99008c2698e8012868db6a3071e153c7":"5b8b3b040d78f5cf327508e180edc152":"4462bc469e794fd74288f3f775c02cf9":"625438700a4d153811dc26f688b1f82e" - -AES-128-XTS Decrypt NIST XTSTestVectors #55 -aes_decrypt_xts:"64ec33f6f58114318cf88f2c86f69ea5a78594f95475884404add2610740cf49":"1fb5f8e05c76302a24612cb3e585c8f0":"3f29bfa05616507792cedc91e27e4fbc":"565fa6390a7a377b90330ba09391a7d6" - -AES-128-XTS Decrypt NIST XTSTestVectors #56 -aes_decrypt_xts:"ba0f088a697ad37829e20cdcd535ca3a1780a120d07ad88c7a2369ece37d4251":"6bf9a3e64b2f893a40d012651d2bd7f1":"4479885b32ed93a05bc973d925b30a71":"7d180b8ae143617369239a606c693d1f" - -AES-128-XTS Decrypt NIST XTSTestVectors #57 -aes_decrypt_xts:"02669a844e5d4fdd66287cd8b2e116a3eb47f3391a1caf3a58fdbfabbe34708d":"702cc1b251559ba36c97ff62ffbfd510":"5faa528556f79049118c00852e022d96":"e567f6d2727622278b9310e91ece0165" - -AES-128-XTS Decrypt NIST XTSTestVectors #58 -aes_decrypt_xts:"31ff2c6e5cc7dab66ee7811ccfb36d9546d81ac0b857550cf938b945da72a4e5":"100aec347f62e5bf01a8d4f279bd5740":"fa58ed4b5530ecb8adb5f4c119a9edda":"5ce1562f45da9dad248bb7ac2aabe2b4" - -AES-128-XTS Decrypt NIST XTSTestVectors #59 -aes_decrypt_xts:"367dd317ca33af76880b3a1c0194582fb752c9dc4d5edf983e6a67e7d790281e":"15b8b471979eb22086f2c34fba7a0c71":"83f4639b4fa54f5f657c03fe4c00983e":"9774ebd7b08cc87fdf70c9d4f746f2f4" - -AES-128-XTS Decrypt NIST XTSTestVectors #60 -aes_decrypt_xts:"fd00d628c112191dba7929780cfb5be8df9e0a99830f028218108a5800c149bb":"e6eab2573412adc1a8517d57bb6c993c":"9c085ebe5cd42b24889be07f59f761b1":"e72746c743f84e32eed81b8dd51b6fea" - -AES-128-XTS Decrypt NIST XTSTestVectors #61 -aes_decrypt_xts:"02579c691f098802d59471252389789ac049fce858839deb685f15fc21e82fa8":"720948a84a9c52beff584af9ace6ee9e":"0ccaac98e1c9609f406930617f1e35ec":"48210df8641e31039d06f0e7dc1ad97f" - -AES-128-XTS Decrypt NIST XTSTestVectors #62 -aes_decrypt_xts:"968597e80a2e162e4d43e676aacc4bf70757a335c04cba26fd0ffb5ff0db0149":"dc7c32c712f5ea1363b804a4faa9c6ee":"1fb8a2d4996bacf34f62caf1402ced12":"944f66bb9cb9c0da59111875bd8a83ed" - -AES-128-XTS Decrypt NIST XTSTestVectors #63 -aes_decrypt_xts:"a2a8ba815d0b4c04dc74204e8a5a4b459a11c11a2e3b59c0a60e7b5aa5ed6316":"e16180263553ad759ccee451e32a9b25":"abcae54afcbb0b0ec75884b11a9901ff":"6b6295ca7b81d5216cc251ead46c70bb" - -AES-128-XTS Decrypt NIST XTSTestVectors #64 -aes_decrypt_xts:"08d86e27b902aa491a22a0d8d54104bfa29bf4aff23228590bcbca10af64e521":"67c05beb8378760de12fb22c1ab66839":"c9fed3c29cf7c2a28463684f551c11cd":"09bea3cca20b8f9544e62430819d90cc" - -AES-128-XTS Decrypt NIST XTSTestVectors #65 -aes_decrypt_xts:"2e13807ff04501d899e9d195244c1a8ed4aa8022b9d69994c65a6569bb63ff3f":"037fd78231d27b3a3bc419ddfd04683d":"55ddb8bc2ba156bcd66483ab6a2cfe5c":"ae58fbd41058bd60b546379c836ada28" - -AES-128-XTS Decrypt NIST XTSTestVectors #66 -aes_decrypt_xts:"7aa1e6c20fdd2755e50f5537515fa749d03a14c41ac845d72e59e166e06d7e82":"589dd483feda2c6d49d3d9dd6838b2c5":"7d8858efdf678473d11389acee8ded16":"2c11e9973068abcff0b75cb1b0022521" - -AES-128-XTS Decrypt NIST XTSTestVectors #67 -aes_decrypt_xts:"a6caade662b70bd179d295efa4cc29c75b240533c77b1b545c02477a16041915":"0e3cd26086d7deeb3fde71b2f8bdf52b":"cb1e8732f3a2dcd45f4d057409eb4d06":"6ffdbb7b11bc41a68bb43980b4d5045a" - -AES-128-XTS Decrypt NIST XTSTestVectors #68 -aes_decrypt_xts:"b4c0ae25fe1bb22281a27f9355c791701ab7086487d2971fbc008a71ef498c42":"0b249865b5e147cd40e6531299da33c5":"44729a7975c22a89c615d0f48bcbad63":"55bc2096219a930b9a12e2214c5147ef" - -AES-128-XTS Decrypt NIST XTSTestVectors #69 -aes_decrypt_xts:"e96f4fd85c512764912e2a2af4a2ac2334259b79c8971c68f28c4e6c4cdc8dfb":"b6b57c53f05dcc7668078b0d9d3e4535":"eedc77726be43017fb49bc4031429e46":"eb68e475bff2bdf3a151b07e38860d03" - -AES-128-XTS Decrypt NIST XTSTestVectors #70 -aes_decrypt_xts:"2a5ca993900f108d83fec3bc6ab4e74fd5bc2ad9812c31154b80f48b2c437229":"368854a69393002929ac54e1fab7fb60":"98900bbe2e1141b594c05c93bda68c50":"d4475da48f24ba759531bf30a5bcd430" - -AES-128-XTS Decrypt NIST XTSTestVectors #71 -aes_decrypt_xts:"5b3ed266e35131678b5fc1b4f359bba01f1539d188b6631ea6a74dc8b5895e12":"779525bd7e5c47d604da709e76705716":"8c9c9231732b49baa07f994ac90cbb74":"d14d7b026273dff33b09e70db45d3140" - -AES-128-XTS Decrypt NIST XTSTestVectors #72 -aes_decrypt_xts:"08fd0509efb8d9171ea3ad3ec9bbbedd9dbedde971cc757aee349c9db181d569":"0607eb143a6f1a294b6bd3517c758ae5":"b438d11e4af51107a4212f4844d8c670":"93f3952656b43f663e0228ed74cbab0f" - -AES-128-XTS Decrypt NIST XTSTestVectors #73 -aes_decrypt_xts:"1001571a70f8d7b34148c14023e5f30731c6903bd87de3acf55a00175291faac":"00dd2e5013b03a9001c9a2240991cfe1":"83eee45aba638bcf7126242177193563":"987d38afcfbc37b254ef41b6283813e5" - -AES-128-XTS Decrypt NIST XTSTestVectors #74 -aes_decrypt_xts:"eb52163326d25b59772860065cc68f0f5c05f58a41e7608d9248b9865bcc6a54":"a2a72ff871e9a9011ec2dc4b79c36322":"e7e4dff4b36ee969fd6d80e8baec55c1":"bc0bbd16a21bafca60588e3f670fffb9" - -AES-128-XTS Decrypt NIST XTSTestVectors #75 -aes_decrypt_xts:"45da2eace7d9b15efbedac1373f4120eeb1b361f2a5cf8f828f0be86f94217cc":"aacbb60ca26f89ced075e97c732576ab":"c3990409706eb8a1adcfe3baea3b421a":"60698b823beb2d9d083dbe2e7d1ad243" - -AES-128-XTS Decrypt NIST XTSTestVectors #76 -aes_decrypt_xts:"ec79df9eb4b6aeb8016d4f316be7fc6db42c22955f6e432744a48a1f18163920":"f843868efeeff86f358dbaab0444a800":"47fe4c3759758ebec50f370d483ebbb8":"a3ed3b9052e763b74913cbdf1f71fafd" - -AES-128-XTS Decrypt NIST XTSTestVectors #77 -aes_decrypt_xts:"632f8eab45cd9b6f6a24b467ac804f4ec7dc6567725df02e405250f1da078795":"f548a334c918b1a2e3f1181c1a7e263c":"5c709d120204ee3e32a57b8ea278e584":"5d8b27da95b073b93fb155edd2c88fea" - -AES-128-XTS Decrypt NIST XTSTestVectors #78 -aes_decrypt_xts:"db6a32d2a0262d615251d0aa9d6a36d154e96d866c0bae2b2abf8910a331d49e":"a20d33c2db132a5fea4287f471ef94df":"fa81d0c1f617257b43a70136aeb55168":"b5458afa6268d1474a936ddf84b63b05" - -AES-128-XTS Decrypt NIST XTSTestVectors #79 -aes_decrypt_xts:"c6ad2cca0d5da19180d177d81c502da94e3b9e89a517768d8e1c5ccd8a396faa":"0325d5cab485110f23703ab185c98af3":"2becd50a3beb5ba41aefd89588413c49":"b0404586c6313ef77e24650fa48da131" - -AES-128-XTS Decrypt NIST XTSTestVectors #80 -aes_decrypt_xts:"92688300d4001da8aa8bc6fabc637a96315ee4ec18dcab010c44af72123a7e01":"53c4d4101a4975863ffcb857fb5c12f2":"7cf6c02693cbb1f3fc825e4a5cdb7faf":"61ebad87df8c35e459eb315e27bc47f3" - -AES-128-XTS Decrypt NIST XTSTestVectors #81 -aes_decrypt_xts:"1a01a96c832f38b1a0447d82c9bec760cc3401f0159cc0f6d4b6703eaa16f07c":"e9ae4c864fb05be2606035c0aebb8580":"0d59b40ba3d9174b58da3eb82ae30de3":"f113016f74698d5f1e680788ddcb56d0" - -AES-128-XTS Decrypt NIST XTSTestVectors #82 -aes_decrypt_xts:"4729c7b7e7c614560186fdd7badb0a9a1f9a963893ba191ef4acf5fe33adf8aa":"d17b190fb3e129bc4f4448d7a6bd5e46":"4a88021a53af9389e3abc19ab6c229a1":"fd8f5fa162820585f77b250efbb50f1c" - -AES-128-XTS Decrypt NIST XTSTestVectors #83 -aes_decrypt_xts:"4dda941e4008f5999e5e0b6399237baaf371b4f3fa97737e714f460721825ddc":"491a76aeb66faf2328c9bb7e9ccd2122":"a84dfd53492ec2e80bda1878929d2952":"6551d6910ae9e2977f09bd2964d0fa2b" - -AES-128-XTS Decrypt NIST XTSTestVectors #84 -aes_decrypt_xts:"63dcc1075b2031730017c68a412874dd1e26597b23c1d02f1a9f24be3ba021a4":"356e3ea6f10afa893584345e6d2d0282":"a601c169ee059b8e1d0dce77cf2862f3":"caf96f61fa32ef7c5df66103afac8495" - -AES-128-XTS Decrypt NIST XTSTestVectors #85 -aes_decrypt_xts:"1014b5d1ec8a235b852f38668a0a3679bc68d219b82d95ea68fe065004851a77":"988d1621a468137f3a6d88e6c198d0a9":"85c93edc4ec4d33d6c4efd2558184025":"3518778706a0a0b1baac40dfd818161d" - -AES-128-XTS Decrypt NIST XTSTestVectors #86 -aes_decrypt_xts:"ea8b8147562339e900b0413e58d7589e60acb5a5a5d31242ed013762b0c68720":"3b262ce639c06a7c1a4629010aebd677":"3f715273efe1954565669a208504a763":"6920c0c3a8e23bbeb85b52588abd97b6" - -AES-128-XTS Decrypt NIST XTSTestVectors #87 -aes_decrypt_xts:"c93d5870fd5fc606f901bc71556c6e04fc05d6a1be0c78320574f4dfcb6995a4":"440f5b3b83da79d5c60a236a51f21fae":"9dad8e385c806d90f88bfcbb5a7a9686":"69cc1f1d1ccb57df6ade5302959b1746" - -AES-128-XTS Decrypt NIST XTSTestVectors #88 -aes_decrypt_xts:"3c355945b683491d70c487125864e6b5d2941bcefef9ca1172f05fd5b5d56a31":"74abc0018cd6b522704542bc65ae5499":"a593e87bca06f1ba529317a718883abc":"7030b6122c3229afc6d12d8eb2c29b99" - -AES-128-XTS Decrypt NIST XTSTestVectors #89 -aes_decrypt_xts:"f422918b583ebe25ae906262f882266b8d5c6856ecff6d070bedf2184b1cdbec":"c3df1bb13bee0c55c8c06b6160f36aee":"89c0bb8f0fc63987cfd35c7292ddc50e":"c9ac91095dbcea52d5fcb58b57871441" - -AES-128-XTS Decrypt NIST XTSTestVectors #90 -aes_decrypt_xts:"025829be534d9bd3b8367d8b732a11114bcbb0941f6ce2771370af654ded40a5":"cdd733421c225a988adce48e3b9f9b6c":"db8d019ab12c98765edb0a7ca2589248":"ee286b71484a9d0556e1c042d8866d8f" - -AES-128-XTS Decrypt NIST XTSTestVectors #91 -aes_decrypt_xts:"122e550ce602c943951b4fc2ea263417465c5390f0f9316b1b12ff406ed25075":"ec81291ad865e74ad532b7ba5f7f7435":"f8560d7995e848fd0afc518b6c7b6278":"fe89ccbb3997f475e47d55248288a324" - -AES-128-XTS Decrypt NIST XTSTestVectors #92 -aes_decrypt_xts:"fc58a8df74ba8317cfe34322e883664df7663f7f5a1a133e375d4190200c48ac":"9035d4247dde48c8b973e77f5b8366d0":"bbfeeba2077e7d29c67daf70a1ef1ca3":"c3c7d49f3c42a84e283ecbd8b2be81d2" - -AES-128-XTS Decrypt NIST XTSTestVectors #93 -aes_decrypt_xts:"40f258586efef9cb9dfbf76b4e6eaff61e3032e84319cc978e0dbf3ccd62afc9":"bb819e43ed9335c47ab2c710ee4546ed":"0770f640b1013a31480c3250883b0bc7":"7a70fd4ded65cd2cfcf15ec38b2e879b" - -AES-128-XTS Decrypt NIST XTSTestVectors #94 -aes_decrypt_xts:"6eb9d00590990aec1aec6e19ab66ecf3de19eb4a32f70da478ce4ed74407d0ab":"ba70ebb0d388c8ec10a579acb3fd1930":"d161e08ecf9cf27324ffa84aadf16941":"975ea366ab8ec3cd35fdda91dfb1afd6" - -AES-128-XTS Decrypt NIST XTSTestVectors #95 -aes_decrypt_xts:"d01ab251b0a75454de3047cee9a465850b5735204d7cefe0890694670ceb1cd4":"a24850a9e8c0c7733607fc1043a762f7":"a138f2a16033e8c2245243da3adc1498":"460c046e6e3b97e23565bce7b9224e97" - -AES-128-XTS Decrypt NIST XTSTestVectors #96 -aes_decrypt_xts:"6a1ab8336878022ae325df5c64fd10ed32b8cad26ae7feeb9532153c7c4e9d86":"f8c530c834447713f041c1b7fa243bc8":"6ab5f2be0fca76bcd895bf9d46de01c9":"efccaaae45817cbc6125c62084c705ec" - -AES-128-XTS Decrypt NIST XTSTestVectors #97 -aes_decrypt_xts:"e52d4259c405508944ba593b6cdc2b4b959cc7c4ad0504f9819fe9dd98e8a900":"a189e7d6678d41b02dde8fbfdb90187f":"70330558f8288b74e8768cde827137c8":"b0238d6d1f37953e70d3dcf3cdd328a1" - -AES-128-XTS Decrypt NIST XTSTestVectors #98 -aes_decrypt_xts:"5b4b43e4a9a51b8462be36605292b49654c91b3263dd4aeb4b382c4f76717ea8":"ec1e5fed86770560310b1a60bc785cc4":"a220ba8c184a68262b455e73c13e6ffc":"7ed0d25f0d1d1b7e62facfe36e468c5d" - -AES-128-XTS Decrypt NIST XTSTestVectors #99 -aes_decrypt_xts:"2a3a180923387e99ff7d8cb3a493e94ceeff5e99f40039df16b864c9c7af7d8d":"4b5e84d6e3242408647d924f71848a0e":"66235974ce1e718c12f7b8fd729defe0":"00e8406307b798d43fdff7772565d5f9" - -AES-128-XTS Decrypt NIST XTSTestVectors #100 -aes_decrypt_xts:"d1391081c8ec4f3ee4c1b5f24c48d6a47cabea73fe4919c8d284909221e0511a":"0b6791a93c2ef84aff52b63fe62ab977":"c333dcc0149fac9f23374f9023fe92d0":"ecc038125fdb267662a57dc9acc06439" - -AES-128-XTS Decrypt NIST XTSTestVectors #101 -aes_decrypt_xts:"044283616dfbe755a7bf69eec18d79a0fbbd3e7a702eacc3261bc418b805e885":"5319fb90e136c7d025e3765432e6d413":"1943901fff18170ac59c0bbbd6b72362dbb5c65057bf055389f520757ac29daf":"7896ce4849a603dcf01e622d6820f425e7de2485d2472105bbf5f11c5dc58ee1" - -AES-128-XTS Decrypt NIST XTSTestVectors #102 -aes_decrypt_xts:"5d2419fad1a22c322d92e76227edd3488e52e1e98c67b5a25f894a2f3a95470b":"576c5c416f267fa4617426dc71b6be24":"ecc411f4ac85292d40f4cf8be6256457eda2ab5aa6d6eff15bc46da8a5a87c56":"7cf25199fcecb97ef2a6b8416677c1ad15f4a6cf78f02b420bb8ce95bd5cdbb5" - -AES-128-XTS Decrypt NIST XTSTestVectors #103 -aes_decrypt_xts:"3ace4e72a97f75a5337beb8adba224b8ec7d625f0ce46ce0114f53594b9adf0a":"7d4bd1037bf26d793a09dc0642060246":"735053bd54470647b5674a12c57a51b6e7ce8045470afef1c12b6918a3a91611":"4cc966f42277f1cccc68a886fb149bb457dca713e65b51c3156a12d4709b0f76" - -AES-128-XTS Decrypt NIST XTSTestVectors #104 -aes_decrypt_xts:"aa4f7e9b2a9d3ab5fc11888dfdcfa13b19a21fe122fc18331b95488832dde973":"33b915fce7ea20533ff0be2d697064ac":"29f7c93bd321b1076805c7dafbcc35390aa9014b60543f816e080107c6c14b9c":"26fadd2d11fb2a1f983d419959f8a0352735160328e0fdb37b800fa22e3f51f5" - -AES-128-XTS Decrypt NIST XTSTestVectors #105 -aes_decrypt_xts:"0219bff8a61a52ffcb5acbe188eab095d210a9ed0d18a4f70f8eed0c36901e8a":"8edeb65d5be19b1943538752b885e3f9":"3e021d77d911269ebf24d2d7b7e9a579d4ee38f873b67bffe3fa55c786047f19":"e33e936b3ffe75d56e00a4c75777517509e6d2fbb046bf4b7fb6b87b4032112d" - -AES-128-XTS Decrypt NIST XTSTestVectors #106 -aes_decrypt_xts:"673f0a6b2a889a8fb9fb1fdea135fa7b0fbb54d39321fadca847e7ce4d1324c5":"321c76a91a1b1908c521d868b2914eef":"14a7b30c80d341609c291680f8cbdd6628cf6dbb46004e52653b91cd9c189d48":"1a1a46ee1773c9cef92749c4ef3b552fe2e04658293a5a60c60c2e350b3723c3" - -AES-128-XTS Decrypt NIST XTSTestVectors #107 -aes_decrypt_xts:"f2bcab3eada04aef3a352b2cd4be83b23cc52cc870798e3127025b2c88555e51":"be795ba14ba661524792e3cabdb8f97a":"deac6e7b9e0634c31da6a5ff71981f04c086f4879632b3cd5aff696f94ba13e0":"b2937e879998784c74cc6a487902d196d6a328f07afe2381324cf2730131f0b5" - -AES-128-XTS Decrypt NIST XTSTestVectors #108 -aes_decrypt_xts:"ad052d633bf3ebaef19a321ff9ed9e58217924c39dc73e7481420fa360a8c348":"0eed58f5c27fb91419ea3b23ff87b162":"b82a58a64d811c342b0420efb3886fd99fd85f59c52d40d199faa2d3608679e4":"d09ebe78351e03201aed53ba22157af7752c45f94ee2833820229120a60e0594" - -AES-128-XTS Decrypt NIST XTSTestVectors #109 -aes_decrypt_xts:"1bdb3cd4fe6a1b8c2f10837de1652101708d1a869d99513041fe6444ad065e30":"769b823a460a08d3a35a0a8b983163e7":"02f3aff69a08b6517930ead666afdaa2af68898806cd723a50fb9bc0488d7a0c":"e40f5f032ae20a1d06b817d5016e2a35fb259c879977b899c9950dd212d7b533" - -AES-128-XTS Decrypt NIST XTSTestVectors #110 -aes_decrypt_xts:"a5b74d3bb58ca839f620b5504ae92aa99a4065d81a49635734061708ef5a2c56":"fae3d83c2ee49c122c1d5886af4fc364":"57c5ef3e9f7eab676de959eeb325f95466f6a9ddabd84d7bd75d26c44f508f49":"092517adac8bef1a33cc31084207519838f31482a60e8cbeaf86d0bae617a872" - -AES-128-XTS Decrypt NIST XTSTestVectors #111 -aes_decrypt_xts:"b1ebc8c5bdc018ef3d12c15ffd4b5e1dd6512cbe42bb13528dd0c754397641d0":"0257c5a4778ecac72533abbc513efd92":"97aab762ae883ff6a10816a12ec0723562c941fd094972b1b85bf91406c4d6c8":"6946dfdf79151e6e2cfcc54e0b52af6de17840f834662570220ad849875ce7a5" - -AES-128-XTS Decrypt NIST XTSTestVectors #112 -aes_decrypt_xts:"8ee4f0150c23ebaca127bd6c52ca3d53daf6f9135b323bcb86f5de2fc4edd8be":"c2c8efef4b98055c04657815fd263a94":"1c8ddd3f0ce1f824ea03a9401c5389b07e82f681f5767f17dbb09103506ebb98":"7a51b33966255e2ca325bea9de4aaacb22e9359b82ff0ca34b5b39f80805a6b7" - -AES-128-XTS Decrypt NIST XTSTestVectors #113 -aes_decrypt_xts:"fdd4f169b484177dcee1f4f139980a5226d1ad778fdc591b6d56d0e456d9eb8a":"14c26aedbaa6309ede93dc6f96afa54e":"4051976a403c91b16307da5867f73f409f35d5304d88700518094454117d84c1":"306bf2c4cc85a7ec8fe6c669bc100c4fa92af993428f80e22425a9e630c22950" - -AES-128-XTS Decrypt NIST XTSTestVectors #114 -aes_decrypt_xts:"9d873c9d561c1b456b2325e7f739680dc8809a99597534941fccc0749db47637":"1d252fe67bc7a54044cfa6b9db14149f":"30816367feffff5fcf4d1308d83cf6c1844d8bfaa842b31ae44460f611479f45":"8098ed2f1290f3d6bb2168a9da96f081d184c722ece4bbed528a8f00392a3c03" - -AES-128-XTS Decrypt NIST XTSTestVectors #115 -aes_decrypt_xts:"b93485c5419fb4065b1eb1cd66d35b40c459cd80ff6363643b9a7d119f86db35":"922e9a6e669bb32edaf3e45c442e07bc":"e5e81f1c1193ad8d1e2ec11a3c82d9361a8036852ef7783ed098e1b6234599e7":"a3b6ba3951ba203a59827cb59762d40a3c5a91d5d5bf862a38b75fc35d4fb2de" - -AES-128-XTS Decrypt NIST XTSTestVectors #116 -aes_decrypt_xts:"4bf38653c1384adda2afa560064e84b7d2208de969a06683cbfc3dd618a07eba":"4e05eea6be3b3ee6bb5b0e8f86a4ab12":"bbe7412a55ba624ef81855d60180ee0a49409447b412b7639d054b18fba66ec4":"229665a0c440e46d7d79091ff9f00dcf60482bdd1c988219721f7389f129c0a4" - -AES-128-XTS Decrypt NIST XTSTestVectors #117 -aes_decrypt_xts:"d2373c8c6266b114fd42e438e83603cfdb73160e4abd42f21b31039d39437d5e":"d6c99f589a7c9e09e76c0cbee93fdc97":"4b0c63087838ffc7521afccc0f031cc77e3c6e8dcf8d63c48b47165d65414590":"cafe8b6342699f001e81688dd8fa5c52038deea6d3f5a2deb3b4e52cdf1c2fcb" - -AES-128-XTS Decrypt NIST XTSTestVectors #118 -aes_decrypt_xts:"4516f9b156923a7018b8490944b7f59f0730787ee77fed4aa5428024d5b23c61":"4c0bc7afae44f2b023dc337cece479d1":"ae9b10bde36f925e82eb2506d2f5fbfe0742053bbe822f834ee0039fa71b1cb0":"3e6ce9343ed6cc3f5009b9794a48d79b05b93426bcf624d06298741ab7af4ba1" - -AES-128-XTS Decrypt NIST XTSTestVectors #119 -aes_decrypt_xts:"19b09bc8cd5ded96b9d4a68fb595f6952e683b6a96297fb32ffec06e2bba1ff1":"d0d71e9b464f6a551a2750b037fb7e82":"8b36cd24bebf3618839979f40ab01dd83ce9567df7f444d2f998d3b07699abb9":"639475e5686c8c300e6d21e36c82d24fabc21c8a74e3ead02a91aec46411968d" - -AES-128-XTS Decrypt NIST XTSTestVectors #120 -aes_decrypt_xts:"2c07d8b84ec34853283fdecf6a77d4a93a53d364873226352b570437f861d290":"32dace1c2cb282b7e83349ca0aa3b02e":"ba5ef8bfe3c9562cfece168bd4e1ad3b5fa518b98791175ab316ed7512952e44":"022f0fe481a8e702c331bd11959dd25e149fde8e3bc4b3392052a7fa04387a26" - -AES-128-XTS Decrypt NIST XTSTestVectors #121 -aes_decrypt_xts:"2c3b552d43f01f1dc82ead0cb0d43fa746d1b83e10044774cc0ea0c9e8830de3":"5f619da32f6a83c6e2716ddaf5282d94":"23af1a5891bc51e5788967a9f8419aeb7127744c2ac86225d83b180135acdcda":"119ad870e63997b0a758524aa896a65f40299b01b84181f52730134aac0d22d6" - -AES-128-XTS Decrypt NIST XTSTestVectors #122 -aes_decrypt_xts:"c14a66b327b4554ec0f285c6d7100e72dd8aff50e77fc674da88f8b8092ec566":"72066f4627978ffbc2efc3f41f62800d":"7134eea52179c47ba7cc1a7f0e15ac2a5b1993a60512775f353a1288a7926e7a":"19354124549135a513fb92bc94c552d04a8360df74e34c7e9c616fe59c5ea683" - -AES-128-XTS Decrypt NIST XTSTestVectors #123 -aes_decrypt_xts:"2ed8893ade98f9afd2911617ad346d6fd5d258ce1b6f37d32cc5815381033601":"0de933e43642c5788c770a486a2eccc6":"0d3111cf9e105217bfd255152c28004f3728207a43c06aabff00b38f3b2fb389":"f589aae6af885ad01be832afabf65ddee4b6eda336a19ca30e2646ac3a856419" - -AES-128-XTS Decrypt NIST XTSTestVectors #124 -aes_decrypt_xts:"9ee30803540c35388cf04478e48090183c1a0f1b7e8c1c9b2a674d65f48bca8d":"fad02f9604c16e3b7eee1db6f5466096":"4f61f2ea0f7ae3e673a7098e0a179191130943bc78cf4f361ebce0b84877e4e6":"371dfdac453c960fc7d53075ad57e2da811c0d7ac0b60ce04e6af68b9aaf7241" - -AES-128-XTS Decrypt NIST XTSTestVectors #125 -aes_decrypt_xts:"674fa11662f1f220c1bd6b59523d84fa7241f9dabf37827e827019834312197c":"9c027a2ac913a0a8b0b0a48c6b13bfd2":"f2e01a94b2101372ed33f67e51ddfa2c50dc2dfe7bd881273a09ae247cec9b63":"d9f81da996b958a2cef8776d0dd47630a1355e95ee267cb8b841331cbb3c0f3e" - -AES-128-XTS Decrypt NIST XTSTestVectors #126 -aes_decrypt_xts:"39257905dfcc77766c870a806a60e3c093d12acfcb5142fa096989625b60db16":"5cf79db6c5cd991a1c78814224951e84":"bdc5468fbc8d50a10d1c857f791c5cbab3810d0d73cf8f2046b1d19e7d5d8a56":"d6be046d41f23b5ed70b6b3d5c8e66232be6b807d4dcc60eff8dbc1d9f7fc822" - -AES-128-XTS Decrypt NIST XTSTestVectors #127 -aes_decrypt_xts:"e6e8728f520affb5c5b2c65e589df25ed00068b718bbb00a79d4ec055e1cc32a":"a1159cfcfa6781e1617fc1f8f6110eea":"10fe87e6c715575e7e23220f38e9c5b9d4ee25b8cf744e447f2d4056c9efabc0":"1e980473c23d1e6db5b83a3488730ee6444f6a7d3db0751583fb4b0738473222" - -AES-128-XTS Decrypt NIST XTSTestVectors #128 -aes_decrypt_xts:"e16a2fb38a83cbb50b9b73bff97987867bb2c5dde20ee66e8bc193bb20303044":"34232e6b9830a03c970bc7c8784f6f99":"a2b45ed5e593a1fcbf9bcf3f406bb7afc541997d454c251ea924804c44a037bc":"cb89009d4149e2d5bc9055395590b9a417c995fba301dc5c618282637167d905" - -AES-128-XTS Decrypt NIST XTSTestVectors #129 -aes_decrypt_xts:"054fa805cd6ed4d72c6cf5175b072c946b5271e3626d2ece4308185b2a413ac7":"2a7f2dba78605b7d446da4484be7db25":"e4a19cdc4eab9f3a91bf42a8b084a2d712095a646aa03a3c0bc9bf695b19c4bc":"8691b83afce58b52a6575618b7f8b68a408acc866376adad22c7b74945283d1e" - -AES-128-XTS Decrypt NIST XTSTestVectors #130 -aes_decrypt_xts:"2695e7eb0009277f2463a6da8a57ccbbb244b2bd09abe5f2da538025c7516b80":"458c1197215f3e52c345bac48ded0c89":"915358470cb9faec9f4bd52b915c9f1b30ac8377d316e5a92d3eea87653946ae":"ced642916af8c58db857f88f1b8c8a478760df75834f8b77ce2f1d312054f76a" - -AES-128-XTS Decrypt NIST XTSTestVectors #131 -aes_decrypt_xts:"8557ca8c4e7a9560f75d2c41eaaa2a4ecf7b4bc502127f7e717f018de1616528":"254b6726fd24769fc7da30a3fec823d7":"47a833c7bdc56e7ea95f2dacf4415872131dd2c76d6c2c9be49ad3079c90d493":"0caf12ff5784ff49dc88eaf0ee96097f6bd1a005ade18b9ea73b6eadd05bc549" - -AES-128-XTS Decrypt NIST XTSTestVectors #132 -aes_decrypt_xts:"3504f81672150db24a6156a89951124863baa30558e2f1a0f51c3c6cf80903a2":"4f54f205d61a71fa9429379852ee05a3":"1cf28a0f09a31a0e84e07b5fd659f65b033a6d51ad7c92902ec6a44ce9b3c39e":"ff49aa4237871f91d54ae1877a27d8da877e9867cb2f69330d22e9c273a449d9" - -AES-128-XTS Decrypt NIST XTSTestVectors #133 -aes_decrypt_xts:"499263a63c4917f4b44f6adb008bf19974b29c2c9e02186cfc9cd0a8a05ec731":"c56800ac94f572058cd0a63c7e9ea45e":"b7a0294e798c9ba085a39693810278391e51381ffbfd9b49b89e2e7faaa93aa0":"c1cb16891d30ff0e05e24b957d57c3e40dadfa2c7c27378cbe8a1676f1128615" - -AES-128-XTS Decrypt NIST XTSTestVectors #134 -aes_decrypt_xts:"069f5777de49632b67cef412141948fa68d4c5465cd3b8be59659c29b76f5315":"1a0da41cd478b5bbd5c241b56bc3585c":"c94543b713108815746c14c92b35165f6c1d7aeb34d03be82231b1bfc2d9cc39":"15c9d8dd956d739aac3541a4e2912ed47df5d193c0bfc7eb2436ef756e3b82e8" - -AES-128-XTS Decrypt NIST XTSTestVectors #135 -aes_decrypt_xts:"0896818d81fbb84ceb0bea5ac93c09caecfa92ce0afd0bedfeac9cecb8ba8c55":"9b70a5206dbce1c3ef42c05910356185":"4e114666f7b643bd103091ccc066053d1448c60f4adee11930dfd989a8b86417":"a551cee3572dc853d90b215760da632206e369a356423346c7c4924d57d0a942" - -AES-128-XTS Decrypt NIST XTSTestVectors #136 -aes_decrypt_xts:"a259389be36d64568c053c639467be0e26d3c0eb62827903d4826efa53171616":"a0d57460a4388ef39880cea435095ee7":"69a6ea573cf4b6fab1d075bf18eb004cb2bf42dd7d8fbcd573f73a6cfb7d38b8":"9d2717ab39b9cbd4b62acdf7f56a8ae234f8d23232bb71348ca039a88398bfab" - -AES-128-XTS Decrypt NIST XTSTestVectors #137 -aes_decrypt_xts:"733eb125413c570b9adbdaecbd9bda1c13a1bc286081041aa069e52bb722914f":"be9f2cda02f1e35b155fc04a7f3e9557":"7507fe9123cd07ef45b767a19fa8c852e6681244df9e99f387ceae373c6406f2":"9332c3facd20f6ad6ebc02b944e8189e10b12be74a74298100015c88d15b2bc4" - -AES-128-XTS Decrypt NIST XTSTestVectors #138 -aes_decrypt_xts:"07e4378bf7e514e2875086ff567fee9621c45f6ff36db45f1c0f706b1a9e028b":"8646c53c9e2e47b298486eb92ab74c30":"f8d1bac52d1e3ed981e9adcc510c26dacc00f4778fb2b92cec8a62d0b814e0df":"d08a0d052f00c44604ed31348cdfa86e4dbce71bad4db88db9cc27cea50d7fde" - -AES-128-XTS Decrypt NIST XTSTestVectors #139 -aes_decrypt_xts:"0e171e225cbde40873dbf686b297b2b6d4ed08476dd69236224f0ee1bf304382":"14edbb755ab9dfe2e370546a1da9e6f6":"2ba7a7c394840fe2a0401860815be11c404d09e76cb902a8c4ed372fe3231319":"f0813a6d4ceb96af1a920f8a066c96d8799a34338ac8d46deb6a651ad927d53f" - -AES-128-XTS Decrypt NIST XTSTestVectors #140 -aes_decrypt_xts:"e856117ec0538643e82769197e4a4c0a26ae60f3f8de165002ba347444cba06f":"cb38d1a1dd9c57aa067308ee91e90419":"0a69ecdab9ecc65c04b67f77783bb733c8691b71e079dca5a62945e622493eff":"6981550e1c535e10218e6120cee3b159f56b1bb492c6bf181b694c2496f71fb8" - -AES-128-XTS Decrypt NIST XTSTestVectors #141 -aes_decrypt_xts:"c5b49e5fcac9236caf72421605be6dc53177400f8d3ee3e877fa55592ccf2a83":"8b660fe9a5e3d39e5f820adb2f21d83a":"69b2799e4aaf631114d1558b6ee78c7ea05a9dbf5cd36f7ed7d4f778df77d9fe":"f6a266ddd684f024eb080c9b58f817ae2d24f3143350b4d3e27a1309cdf1a3e0" - -AES-128-XTS Decrypt NIST XTSTestVectors #142 -aes_decrypt_xts:"d29ceb274a3fe20b9cd372c3ef264df36990d6d20ede699150bc8a013a167a4b":"51afadace8420b516cf5e8ce06368393":"532d3e0cfe56e1b1e6bff43c48b62680aa799fa50b461a2d018b892dae2400a9":"a6235693bb98a47abf6dd7efc20ed8718eb96d46e8ed53bbc6aef2620391aa78" - -AES-128-XTS Decrypt NIST XTSTestVectors #143 -aes_decrypt_xts:"ccd3762a0616cda5c4a470f6fa81a9af777ba59ee8788bd7ea9ec117f25a75c4":"425a4b30a4cd0bad3c75c7daf0b31ac8":"9348dc371e73a05ca8616bd2b135fa301260a54bd396c4b0dbf175037b08e8ba":"c29e8ee347528d3d160d28aed9b5cb1309d7b0b706a01a2e2aefdd9453d3d13f" - -AES-128-XTS Decrypt NIST XTSTestVectors #144 -aes_decrypt_xts:"b9fa2fc603700e6fe788f71fa0064f4c5a846188fe6da462f09b9a8f15cfd709":"6b2fd2d25d6a680abeaa4edb2296ff3d":"74627128b529c571ad25566237c14f2f4281bf365abd40cd048a3d5e42558d7e":"6d598f53df022853e05fe704ef8f1f6cf5dd6e88da57d3f29ce7ee392f01de2a" - -AES-128-XTS Decrypt NIST XTSTestVectors #145 -aes_decrypt_xts:"ede735ce9a456bd795abbd65671e64f621ece06520c2b632a4aa8753e6afe74b":"a42c6192f06d2ddc9a551bc9098dfe12":"480f820256610b5615d5adab888c7157db22d76064be1af6c6579b524a80e49e":"8d316d020176d51b42f6c2a5cc581158eb674d9910f46e20b756790d6491f7ab" - -AES-128-XTS Decrypt NIST XTSTestVectors #146 -aes_decrypt_xts:"f69bd6716cceee47a18c1ba918ce1ce594568acb1cd596c14964fbf7cbf83812":"3f99de813eed138e029acd2de7593c28":"e7be50cb362389510ab1620cf24cf4276971f5b03ef904a354e117e7d5a8f38b":"cc58b67180a3bbea944cbaaa66e8e37ee258f8f274cdd6202815368e3bf1cfcb" - -AES-128-XTS Decrypt NIST XTSTestVectors #147 -aes_decrypt_xts:"0255df0339936b44e3f0ce4f130f5202e19d2f1817bb0c94c440483419fd4ed9":"7f3573b7b147cf47333657c873affff5":"ba11de1dd990dc606159d05c9948f9318564660b68724e3d9fd78e3bfde550c0":"a031586aba1f8233fc303c1c5eef6398b5979f5409a4553a3282a2e813a60944" - -AES-128-XTS Decrypt NIST XTSTestVectors #148 -aes_decrypt_xts:"cc36bc7da2274c363d456e6e818c557336e5302392a231b7fdf5ed6c38d9dc90":"2915e37abd33462434964d3801e00a34":"ec08a6b04e3a1c7df55ec7634019da8a5fd1de8957ddf46106e3e2607396d18b":"414996ef10185fc35aa9503ce7bf56f6adcb8210e9ded026b93a24ee484d7cd8" - -AES-128-XTS Decrypt NIST XTSTestVectors #149 -aes_decrypt_xts:"ac587dc588d4392230a81efdcb4ba8e015eae361fa5c5669e89ceae7742c5e6e":"74d01cc8cfc095fdd669f3e4201d7774":"7539707e7ff1f47cf6878b089dff00bd8c212a8939ffcf9e2c223e2452dc1a12":"d02533765e11e71ddaf2eb26333391be171f492cf88e3a4802a966e92b03231b" - -AES-128-XTS Decrypt NIST XTSTestVectors #150 -aes_decrypt_xts:"e8c7bc3cf64b16349436fd728b48d8fd84d7f235dab621b1cc93b4a5f066698c":"71500ce100b1c662684157117ce16e53":"9971caa7b01a2526dfa5de8f71b0a6086013184ede8fa46cbf9e9b2b4e573a0c":"fdfa02074291866ff7f6d3fc9b16a22a7438e8d69a24689518ac9680768e95a6" - -AES-128-XTS Decrypt NIST XTSTestVectors #151 -aes_decrypt_xts:"8f717cbd0d8273f3144371f1e5a0328430caa8d26831f03fe039fe1133156a0b":"0e5445e060628575aef9bffd99d90672":"6567adf85ff4f82cd16062f1aa780d33e15826a89bd383535aa42b7ef003bc2e":"f8d423662e315be3ee5cfc7f0b509df2e64f57b1f2c1f4a8cdab5ecf95a763fd" - -AES-128-XTS Decrypt NIST XTSTestVectors #152 -aes_decrypt_xts:"eb0a463bb214831754add03988aae734d58de328b07e6f1351905a3762feebe0":"9cde2a35ad6440c4bc148ca0c78b056a":"a3b0e16f94c3a77796b4a34bd546ef54cf57062d0d805a4c8c1b2bdf5cf761f6":"2a3d5d94b3d4e362cc9ca1d43db1c27ea6abf5d42084e78cc8fbd90962769370" - -AES-128-XTS Decrypt NIST XTSTestVectors #153 -aes_decrypt_xts:"669347efc2c9111bbce1d4972560ec21ae715327c132571518a0d0ff697a07cd":"e0f61cb7f236ee8b4441a6a5faa6439b":"42bb6895ee03cbe9591904f0e7c306476de747084397c6a7fd6eb03b10cbd5f7":"5ff9652b495f7666b72fe90d2e60faf6c7f6b527241f2e7a25e7695c140b129a" - -AES-128-XTS Decrypt NIST XTSTestVectors #154 -aes_decrypt_xts:"c99e3ef1455e2856f5ef07d6227b1a37eda652db8f50ea4bcb95250276ee3b0e":"006fd6a744e0598f8569fe19317babc4":"2d86b899a457c3cc2e77cef01760ff01188335bde93a7b23d8d6ff9ad2a13fdd":"a889c2cb9e79698abe3486d0c09da39524dcee74c21408945a253e0a8b41835c" - -AES-128-XTS Decrypt NIST XTSTestVectors #155 -aes_decrypt_xts:"48683ff1939b4e78179b18d81dab05e7dc46d85eb35659b4f7145bc338199011":"5d43b97dc5c44c61c7e9c6a6214a970a":"24daf45f97f89c971cab4e95e51d257a12a38f08a5b55424063f6b317b5a1274":"fe6c08f47bb581acde230f9c74dd70983117eb3eb116d192e71c9744c8a5ab09" - -AES-128-XTS Decrypt NIST XTSTestVectors #156 -aes_decrypt_xts:"92d339d378855a78b3aa7be96ef366b872031b0993ae15f35bc7d48e88f2db69":"48e0f7baf76767ea56c1f9e14cab120f":"c3ce2a1e7fc5b6f3c2fb3762ab8f17dd1498e50beb2eb6372d8112ec420a12b8":"48c17f35b48f78456bb36be8b6080e4d419a53aa94232024a8a8dbcd880b4c8f" - -AES-128-XTS Decrypt NIST XTSTestVectors #157 -aes_decrypt_xts:"38dea42a9f43833bc6312842e3a3cb4b6fb4b2fa96d4623285b5a1367ca8ea11":"4e2574d31f9b602cdfe63d45c1057d31":"c78c167fc22cd7ea26c76bd3c3138ff3adee6d70fb134febe0b051cdd2583f96":"9c118b0722eb85bed7eb7eb00f2f7635263957aa654c2d382441f8b42a251916" - -AES-128-XTS Decrypt NIST XTSTestVectors #158 -aes_decrypt_xts:"6ce0008fb88de2b560ec426ace1fd7ce40f95df75ecd3b59a1a0b4326b30ce3e":"cfe0862c45fc275074d414df2bf87c74":"9f84dca78c13053e73b79137d8d9e405779cfc8ef3d4824997fbbce1e9682dbd":"af9929ef02d9040db01d29bc146b10d5e2f3ba401f0a5ec5274f942e522beafa" - -AES-128-XTS Decrypt NIST XTSTestVectors #159 -aes_decrypt_xts:"0f5e51d37cbc39255ce050235e1522cc175abff1b22f3b211c2fb652d75d520d":"da68787d75dfbb4be14a39070fb53923":"6d525c546094c5db7600678e84a07d1595468526c02f907b34fe43ef327f2124":"35779b9b7934c859f4ec756686aa52e71f620044011e3460673adc98afb9dd12" - -AES-128-XTS Decrypt NIST XTSTestVectors #160 -aes_decrypt_xts:"ba0341ba66b39d2694fbdd9bfca9a7985245026ab3e5acfb6d2af4b27e3b4a80":"de23468ac5a8af13583e0424b3370214":"8e9b5e02b071a0b602319ef38a070d1fd05906b8c39397b00eb9bd0fd5c528a2":"5f895212b21d1b109602c0388bcd614159958257dd07e212e5560124bd125a7d" - -AES-128-XTS Decrypt NIST XTSTestVectors #161 -aes_decrypt_xts:"3592cfccbdb26a9573ec93c671a69c95ea9c9e8a1c10bd739d2674db5b91d039":"6707376cee14faf50fe98c153b112eb8":"5704190a0cbc4874637659edb3447e02a09416ddc54774011ea1261a86ff438d":"63b8d58c7a99344bd2d24e884e46712ed4d7caeb4b7ced6fe7278fe1ee3ef58b" - -AES-128-XTS Decrypt NIST XTSTestVectors #162 -aes_decrypt_xts:"51f04e84a1771e27bb2cea89ed4c6d2e51fa1bb4a1a192f47e306c61dac45c3c":"d5143c2f1cc1fd052d86a6b3404944ab":"b3c5a7d096059d8180d14858e4defb544fab31e76a6289d46492d3db5babcfc7":"a0ff0b77936dbbef98d74c4b90926c9d0e2c34f78e5a4101e604693e0f810bb8" - -AES-128-XTS Decrypt NIST XTSTestVectors #163 -aes_decrypt_xts:"42dc6644c1a5639b50c0778ad8c98b5eb6aa9bd34792cb06567e15cc50e0360c":"e09cb439d70d9e55c74b513f954093b2":"2d0b96e49210362954b0793200ed252f7c4ab2c2a039c73b418e43a78116cbf4":"e7573b16bdd60ec97ea416679b5397c82ba518aa4f57c353026f42464eda8769" - -AES-128-XTS Decrypt NIST XTSTestVectors #164 -aes_decrypt_xts:"b6079631dc85a7a6de4d3579bbc625e4928c350f1313a99e9ba43c2ef8614016":"123eee6cbd2736f906afb8711030ac18":"dcaa483d90a1b6f5cc0f7abaccf20bc91553e1d988e08e82f79827476d157c7c":"90aa84716826343d1b1a0da539aa2b95ee9dd92a94d1a867e3cf5822f0c5e52a" - -AES-128-XTS Decrypt NIST XTSTestVectors #165 -aes_decrypt_xts:"afab4564697da7509aa044961aa1d791034dc63a2fa41289026d99d45faecba1":"23b92f2ec62b8758ad67ff77c33a92fe":"3151ca41cb6c805656582d1724106c2a88e09e62b6a4acb0573205234aaf0e5e":"5b3c9dbee7de685068fdc23336af6bb091f4b65c142c17fa468bdd05680a304b" - -AES-128-XTS Decrypt NIST XTSTestVectors #166 -aes_decrypt_xts:"267e667f3d9843410dc5558720c4ed46061020212f3664d27d8d00d405895e25":"9bcbd6ca75e29a74d3707ab407481273":"164e58282845ba1595c3e964629fef1d943eb1349ae980262bb0efcebf72cd8f":"25b5cbc2360b9502f4521b6a76c13970a99d3061a6f398cfb57b0b7c92e98093" - -AES-128-XTS Decrypt NIST XTSTestVectors #167 -aes_decrypt_xts:"44e194e2df43a831d71fd8b478307de7e59f1cd27943f89d970caf8a9a7c2c90":"fdeb2c91814504563de7bb0b25a8beb6":"e016fe074a6da731975b3d62d5d04b0ee16e5ed6bbd8b0fbabb4c8d4b518af9e":"451440401c3d121d7da73cef54f3d021147455390e93c7e2f16e5de651dc343c" - -AES-128-XTS Decrypt NIST XTSTestVectors #168 -aes_decrypt_xts:"79a411748cde56274117c3bba32b517311b20e00bf426ef0377c5666febc7ae4":"7b4588428f97a074c831703ef67aae48":"867b185fd0b09a093b0fd61a2022fe825570fb311c8cb7f04ef3561e08c99289":"52998524d967b28c646ba625fb3f9a8d1be86529d385702a2e676cfea26d88e5" - -AES-128-XTS Decrypt NIST XTSTestVectors #169 -aes_decrypt_xts:"1edd1dee26eda249801bc7e364e3ba7c4bd645d9390a2306a1290c9f6ecbfac9":"c651517a455f01efd510519cbcac8f10":"e7556e5cc957abdb1515884cb3942952dc5270e43198c796137e1d670ac55617":"8d1a066fb06eec35825a1d504c381571aa3d6c65bb584fc44487370e29872e96" - -AES-128-XTS Decrypt NIST XTSTestVectors #170 -aes_decrypt_xts:"4b2364b88691890e2c889689db7c6eebb8c5af8ebb33372c0f16c86a55fde0b9":"9f1d3d844b60bf8d5cee7fae532c5a5f":"611bbfec479a568ee437062591b9d50d4f87cc845c25e5a0845c38fe02c07b74":"ba1d0c4b8951c4d36a1e8f7548ab3703d3dc0772e0c752e96dd5d1926f339efb" - -AES-128-XTS Decrypt NIST XTSTestVectors #171 -aes_decrypt_xts:"feca1b2bd1f9fb8da81143a867f50adcd23e8e0c59f169caf1bf21ff6c84bbe1":"55be12a01a7baff9379377e9c9595746":"de4bb0a89d35a0a5a33a0364da56d9ea1b541f0acb368e706c9f76fab4edaca0":"2c3da31666f77851ef74cd4c3a9cb47ba6f06a8c0f7f9bd4c6a85cd865910d70" - -AES-128-XTS Decrypt NIST XTSTestVectors #172 -aes_decrypt_xts:"7da8b2f6623c61d7f5b6640bed42136d944ed144dcea01b2830fe0cc55cfda60":"a239e1f6f09c9007730bcd438c681bab":"8228e1276c55e2c51514ec670ab8e98db09bf1faa515120075b8b228bd32dc8e":"b2c45dd61eae5a195e51cfe1a943e7577f9715f9310861b7320b60ee469648b5" - -AES-128-XTS Decrypt NIST XTSTestVectors #173 -aes_decrypt_xts:"391a7c85a1725aa5d060499d3a9e254a5f93ec9d404f68c432caea3bd1bec836":"9616b77c5eae8bfa6b2a8c0c6626c685":"165035521d63a1517de3fc77c72d821fe6a8a624b2e1537fd9f1806253227f6a":"4de5236fa0e2291d5bc2c0a5368dfee287c08969d051f8e061b51a1ad427992a" - -AES-128-XTS Decrypt NIST XTSTestVectors #174 -aes_decrypt_xts:"fd13fa71278083a746c39effb7140a0c3e81a81c0cbb493683bf7b587c12e0a1":"7dd6b0341ec10fbe22ac778401666654":"0af2bc0b0d3a648e398b9e77c051f868d4d357f96347315742f5648daf488a1a":"e6b64af66466c2b40b53c7859b3206110788a7717ee1b1628ca8433368dbafa9" - -AES-128-XTS Decrypt NIST XTSTestVectors #175 -aes_decrypt_xts:"cea70dbaa9c1d6ad189b19942ee2a6c8916e4c67db3151e4a42c48974f5913c0":"0c0bc9f5edbc4df9043b4c0e4c7e7d07":"43aff03b7e68764fb57b1ea8eb45928d7551819f7d3f07d8a31cd4bba8fc6a80":"784b11e12f9eb14c6a1bb44871a68a03090dbd1c858b516cd817f0c5db0705de" - -AES-128-XTS Decrypt NIST XTSTestVectors #176 -aes_decrypt_xts:"e97afe2eef68f9431a32c54f5d2920eec8ee1463f48252f1151a276de94cd0e8":"b795e40375a15ccde21ba870a9e4e22e":"46fb35fec3b3dc306b7e9ecf221c48595734de234506e9ff366201158c19d6ee":"3bf8e4c87d6e9238dc2c9ad80dd8b456f01946b9de87bd3c7fef47303690a568" - -AES-128-XTS Decrypt NIST XTSTestVectors #177 -aes_decrypt_xts:"6390f9291084bb68646df4448ac990d49fe3129a134a6ecf162b2750d59f7092":"d6c46b9c5e085a18929aceca53e5a9c7":"aee62492e99c660edad4b930fdc7ec63fe8a1f0fa1dfcaa990eabba765cbc941":"7dc23f89c3f740103edd77c83f3302c91256486363edbe331b97946409a827d2" - -AES-128-XTS Decrypt NIST XTSTestVectors #178 -aes_decrypt_xts:"dbe90739bcffe54970605aaa4ff87aa3475f4bd8f85d283496888235923d6088":"d48cfac76baea7ca5d31bd2b6f908a2a":"ed492a488e3b1e7b6d672fdff489f67df068652fd4e3530182835dc73d3c06a7":"68fb3c4f6e30a9e8b6cae6b49130c433ef5f9af012d0021ace4ad84a3e532926" - -AES-128-XTS Decrypt NIST XTSTestVectors #179 -aes_decrypt_xts:"e31fffe341576c3d89f9723434584edd1732b5fc60cf95e3cbf500404ce76a41":"b5ecf5aedd2fbe0f47661fb0e2127e74":"5c20b2e1c2e8375637787de95d4e20776754375e53f505a95a4f5eccb6df5e97":"a92adc72cfce95b34965b5293028666c2f2b9f6a8ec13f900077b1018b4b0e7b" - -AES-128-XTS Decrypt NIST XTSTestVectors #180 -aes_decrypt_xts:"5d8b9c9c5c35f8461c04414f576b1ce9cfcbfd9b3e88f194a2256752e4dd21de":"b2dc9f626c36d4f0e326b5da36e7f41e":"d650c535bea59ee815e645a1dd67c9dd9957fd18a5634f28c0d5d7a2fb84cbbd":"edfce1f8b6016c79b59853b5471803d62224f1fa37aa5cbff28747a066689d5b" - -AES-128-XTS Decrypt NIST XTSTestVectors #181 -aes_decrypt_xts:"4e4db8d402c12967679484a288b6403356c54ffe4c3bae1b40d3e02927b212b6":"cca77fc7c6891b7c4fcc4f466215afe6":"ba817877ad41b8c770670426457fa4241e9068329b395cc077aa0f2c33b64b78":"55a00c1f814bdf1eeb2ce0ff0c60ebf7b5dd7acf63ce4417f2ba143a7d51066e" - -AES-128-XTS Decrypt NIST XTSTestVectors #182 -aes_decrypt_xts:"b1dc62f2dd58965563166b779ae7b2266aceb85b8760a5d09dd4500b8073903a":"79a8140ad71fbcbec19d902b81f0968f":"4be52bf0aedf63964f602a7173f6b732432770950ee35d3ad6adf59b518e1cea":"240754114157c3b79d0abe9bfc22a91984462eb92f9830b5525b3f7e19b3fb55" - -AES-128-XTS Decrypt NIST XTSTestVectors #183 -aes_decrypt_xts:"70d3b79d9e7781d3143c134951ea2163e13a5c93b15df9eb01e38516c9ea5fd6":"d4a9985b875fe4800e95d1988f6ca9e1":"d270c546f25b750997581b61a58a252a0a4bb219060c0b6080944411a824806d":"51d824176a47da468be75f6bf19a091a555b9af8f4bfb0e0448cc23c99331f05" - -AES-128-XTS Decrypt NIST XTSTestVectors #184 -aes_decrypt_xts:"6f5b8eec5cf96621bf9124aeeece5c7e584d00ac1f622cdd606cb412492be315":"3204404a2dc6515f2d804d77b139bb1c":"28049435ea0c685597ceef221893281925d63dfa7b1b67124cd8828b775c95fd":"dc410f8bcc922e96634db123d5e2f466150d08dc0b2da19a8c6b1b3a395babad" - -AES-128-XTS Decrypt NIST XTSTestVectors #185 -aes_decrypt_xts:"08c5eb903f57bc70f6c7a18fc83661abe97d3e4bbd9af81c66b38b4502430cc0":"b512458016c106b60477ffb0e6e577e9":"645978c382065664860fcf60dce8f9144253ad4cc58f931e94344aa6468d2ae0":"b4ffa11554412916bbe84588d498ffb75617aeda49618f2791dce4ff22bc0acf" - -AES-128-XTS Decrypt NIST XTSTestVectors #186 -aes_decrypt_xts:"fedeaa112c4f1f69366ef67da328d782a27a0e0a88a0f5e53d9a8ae58691606b":"679664423421fcbf136a84677cc7cc26":"3c2ad1bd816094dc99790ab08ad9dc3f44fca71a84af5ca194a84960dc969c85":"8bd8b5470d3646fde294f048f2e8a0f0129b745c53f5e898f80f1462ad798938" - -AES-128-XTS Decrypt NIST XTSTestVectors #187 -aes_decrypt_xts:"d0d083d28643b3de9cd78c99b014f23339ef1e8ee82ea50265c94c85fb308ad1":"4eae7eb066b909b0dfc3d97c648984c3":"e12035d6fe971721de96a5fe09f1ac118d1266149ed5a0b30a74004588ed9b07":"a385dc6e2cec08aedd4fedb7536ae7f4bb77f13969ce595d3e367cd83b6be4c4" - -AES-128-XTS Decrypt NIST XTSTestVectors #188 -aes_decrypt_xts:"061489a369f164aa16ec7438aa89e80c3a0c295b9bc46f8c4d4476e94d576a07":"e608ed8d0e4290dd8ceac04cad45e30d":"5d1d68ffa02c6921ec15dd044064bf9e1a4dd3b6f74efc7d81cb6dd0d9e7e714":"3003fbe4977eb63a3c58981d1fb4eac2bac382e8bcf9389ecb5a372f1349b884" - -AES-128-XTS Decrypt NIST XTSTestVectors #189 -aes_decrypt_xts:"d9a8014ea3b594a332bc9738fcae2779e260411e0b7e30ad3ea420992a3b1aa5":"20bd322a26ff065f0fd1e39853b04b2e":"73bda730ddde9efc10f285175d2d10d2938edcf981813ce292808aa6a9e065c4":"d04ecf6b79210002a778ad2a3314d90fb2707ce3cd913e581347db2cdf61d698" - -AES-128-XTS Decrypt NIST XTSTestVectors #190 -aes_decrypt_xts:"14374d46f0e6db819ceb4f56b761ef88bb76f97142aaa621e154654abb95bb67":"3eeeb4381a3646365b5809a7e392d2ec":"172705714de1eab0f9a8abb2fe6ddd111d8f249f2d1f985a6223a1b275df2faf":"d5e1fa40b47645e5924717b53bfb629038c66e065f7106b6b6c6426e5d5cba19" - -AES-128-XTS Decrypt NIST XTSTestVectors #191 -aes_decrypt_xts:"a37b4c68b6d566ac6461e863bf6d7808d7b73425a35ab5325768f79487c29669":"88eb8ef050ead3886026498bf0cf3120":"c4699932994954aed43806a157cf991bb8c8947c5e800e5b0ed264b1aa1e2e5a":"ad6477dd9d9c3aa40c28e455f1bd169324e515b5d16394702e7a1937ee29fee7" - -AES-128-XTS Decrypt NIST XTSTestVectors #192 -aes_decrypt_xts:"e11cd1da196b4d8cfe0bf351aa311793a43c4726ee14ee861409411ff14cd4f0":"bcee9ce68b99cc1aa0f4cd3feb768792":"9e0cfe3eec6eb1d4e6ff6ddbbfb4425875d35c4df2d124758fabc38b49f85aff":"e61c7ba1cfd2291207a0da836aa8ca91254983d1a7eea69d1e2528de1cd3389f" - -AES-128-XTS Decrypt NIST XTSTestVectors #193 -aes_decrypt_xts:"e3698883f9715f9fcbefeb78339037f35ff143ec0a4b95a0637734a4d1b8565c":"c8dea62b20967fbfd005cb44dc2d2c29":"85121f241cf49cd4135703ba2e583e40ac6273fd3b33fd3ee4bba661aeaf5455":"5591dc08a63364ddfcb182390afc85b2b2759febc494812739ac8b4447c6c892" - -AES-128-XTS Decrypt NIST XTSTestVectors #194 -aes_decrypt_xts:"91ec4e0d3f41db57d5372dc35eb88dbb7a81129ffef6113fdb5a46abc4525f8f":"419e250747f5c649f33ce8c14ef4091f":"fb9bf7cc73b307138b999c3ff1a31762694d106d45b35854513c1544596a11f3":"fd296a1d648598143dc4c10551b69eab17de74facf0159d5a539c34a92174595" - -AES-128-XTS Decrypt NIST XTSTestVectors #195 -aes_decrypt_xts:"b36bca6c5548d75dbcb479027fff829dd7e390e2a7a5acb54feeb169275a8deb":"7534b3a49902c677196ca8f277597910":"232d6a3ae68531bfcb9491f13394ea297d925c79003ec4eeafceff8141fac815":"dc17cacd5e10d13c0324bfe80f00066a782a2bfb284041316286bc85bac28479" - -AES-128-XTS Decrypt NIST XTSTestVectors #196 -aes_decrypt_xts:"665923b53eb855cc0bfc7c7aac6abacc210c2f23da7364148b1ee32ea106b6a3":"cf5ca0f7af99536fc401883e5df60504":"abd2b52e2702f9fee809fa08098b8c4a0f43a5ccbccf210f13ddceabb7d44c2a":"059908c4d5313cfd847cd2b1fb5d8570ea65928f0b318e5a2c48c3827beed860" - -AES-128-XTS Decrypt NIST XTSTestVectors #197 -aes_decrypt_xts:"ed4777b9785414a5c587ecba5ff239f21c33aa427dcc00ae655e96c5ff949575":"7c85345491f8759e085efdfebd67b70d":"9b284a37c478a157c929e7a7dd16d809f904d57c37a30cf3a727c97717d8980c":"2e1255db34a137dbf6da594137a03bfae676b5e943a0c1bef1cf2847dfa2b172" - -AES-128-XTS Decrypt NIST XTSTestVectors #198 -aes_decrypt_xts:"7be92cfe4956b52d3defbe5203b03dfd36564e4d22e59fcfe37f4feda5824ec5":"e06863508966409d63dcf0912f0cc608":"cdbee0af6192a02695879214b60d578f972a37f5d72ec8d0b5b627d542c70cd3":"14f7b41f7dca28ecdad8a80aabe1a26223ce3a3d583db3b143fd94f2f210e41e" - -AES-128-XTS Decrypt NIST XTSTestVectors #199 -aes_decrypt_xts:"055cf1f3fb8806be29430026bbc55f5b06249d75383221b50743ac33d8a23d0f":"b38a84e3be18f1c7ceb82557bbf33661":"40ff1bb216133799f3ef4faabae5fa2409a5c95affc9b542ffe7adbfb642a6c1":"d4915d2fa9e2191054addb63b816be05c0dc0e65515fa05cb95c1ab8dff356ab" - -AES-128-XTS Decrypt NIST XTSTestVectors #200 -aes_decrypt_xts:"9c5c6e72cbb9ffcb0c074e1ab94133a207f2231b5576da2f7caac1b8bacf2f93":"dcf721cac1ce6bb3af579df88a125295":"cfaa36b3a0dacf1f43cb907df53d0ac0688d36feb30df1160de12443b0415fbb":"593cb736f64c9e838f0a880229a724502d16a4aa3ba80b2a3515542d3ace499c" - -AES-128-XTS Decrypt NIST XTSTestVectors #201 -aes_decrypt_xts:"fbef31bf8aa7546b52686be2a66019a15ea83833654901f6dc52603ae65579ea":"2379d5a6850ec74e7457f5a3ad43af40":"9475dd02153732bb6b31e29f8da5c357658c2dad55bfe960df":"23d56c45e6ca04bc1fea4024f8f113fa3f634fc3e50d3305e4" - -AES-128-XTS Decrypt NIST XTSTestVectors #202 -aes_decrypt_xts:"d806b852edb29707f3e94ac52f43d35a23a9b4b3be8171a4690516da12b2040a":"9fa41b79ea18dcd6dd2c1d8cb0006d28":"ed350cb05ba65b5e5b1fe437a15db57c66b4c2b7481a415e6f":"6029618d912f8e54e5cf6baa9c347a9d7064ff195aa226ed6b" - -AES-128-XTS Decrypt NIST XTSTestVectors #203 -aes_decrypt_xts:"e4b92fa62c5f093949d1dfd49d300e1b73415a176315b921e70fd49e6ba634e1":"9d85e0c9e1ac1eecd012d302c7da2e3d":"86120e308d7e38e7bd9b437715e19e43b243fca9e4cd05c0f5":"c7273e5bbf320c130ed8c158a075d3553a2da19db0ae3d1198" - -AES-128-XTS Decrypt NIST XTSTestVectors #204 -aes_decrypt_xts:"a037ca87a644b5d30927aeff1b31f97c5f19e428e972b8c685c19e17924744f4":"efb161410b021384674ff1f50b2987c4":"92dea2ec459a91dfe84bdfcc5c08eb6a3c861241c05241c7fa":"07ac685baa212272068edebdd6a62bdfc2fc0d71ab5739e3b3" - -AES-128-XTS Decrypt NIST XTSTestVectors #205 -aes_decrypt_xts:"404d270f415cfabac621470b35d87a27d41e6b40bc5f4c4c9cba13558047dc26":"38193d9ab89457e11738e940bd08f11b":"ecbffcccdc9e1bbe602f1aa1e51bb3ad0d70c56d34405bcedd":"58cc332b30a2c750cc9c52b7670bb15cb7e9cbde953df73bb2" - -AES-128-XTS Decrypt NIST XTSTestVectors #206 -aes_decrypt_xts:"c33c5f6888af228af40fcc927f7ccf5480ddeac79198363ec27a06778c7e97d0":"3ace69701c340df58f49ca0ba8ca7a9a":"490c6b508d5d58fe24c5d3df81dd908cb047473757acb46113":"1645015b342b14af82eee3d49ca66ee4a54346eb13d927e736" - -AES-128-XTS Decrypt NIST XTSTestVectors #207 -aes_decrypt_xts:"fcc244bb1d01e3376ce8c67837ec3926cb71ad57270ad74ee017a43e44048c68":"e58e1358203b9298998143fbfe61af7e":"dd743f4de3cbb9911fc6b8a049321cd1fb813a7e9152fee484":"2f080621a40e749206af079d6e93903d4c2d40f667fdfa9b5d" - -AES-128-XTS Decrypt NIST XTSTestVectors #208 -aes_decrypt_xts:"e347aa19836fe56b333a1a3dcfcf38f9d3e6a8f65e02bc154e4c6e6ea57f1b4a":"822ee75f223be8bd7c1bb515e41c8723":"f826708df391b465c39571cf6908a5f730ea6038034f25a150":"7449e37f7411d56156c45b916127fb163c2b09ea03874d8207" - -AES-128-XTS Decrypt NIST XTSTestVectors #209 -aes_decrypt_xts:"a92d85c29168738cdccc19b8343c241434d0e00553b0e14bba86c62324d43d61":"7e1b80b3b565d9b1d0b7fe9f24d52f82":"9243754996b00661089e35ac65423d63177da076462c7185c6":"6b0b6128f7e3384008da26b1754141fdf341e86e70396f5c3a" - -AES-128-XTS Decrypt NIST XTSTestVectors #210 -aes_decrypt_xts:"2bbf7cdc0e467166037b995101d6a4c248e385a59dc5601c64212dff72243578":"e628449b7f6317899a8f87f870ef593b":"9ad23cb9bd377a0502e4cc9f9df43b8b830549779e9223fef8":"865ac26b6ac1ed29ffb39fcabb9cba74ebedacfdb4c703193b" - -AES-128-XTS Decrypt NIST XTSTestVectors #211 -aes_decrypt_xts:"e8df65c635daea1f8e16344b7cb720e596264e3863c358bfc7aa47ad998516a5":"2fcadf3615e63e8aee822b039afb198d":"54324f39cfe3463126925ef444caf18b3bebd2956651f0e6fd":"863312743a006c4849b71157f1ca1083cfa1b2654ba37ea44f" - -AES-128-XTS Decrypt NIST XTSTestVectors #212 -aes_decrypt_xts:"17beb510f684f64484904b1dde68038da6b6aaee611bafb492ed1c608593b118":"07825deed3b028425df2c88ead6a330a":"d3d43653393803fd1bc2bdb4a27cad1085d8235cf875426af3":"370dda9447cbe265eb1c391a89a1c8aaf75d4425ab29630a7f" - -AES-128-XTS Decrypt NIST XTSTestVectors #213 -aes_decrypt_xts:"6efb572de4e6a588c43c7afa9fc4f58650bea15d713f58fc273c97d492177f2c":"9244fdf8b6f83fb425e5066d5abe3862":"2e6da9dac3d16720d0b402eaa48d585f76a3c6da6a872e94db":"253c0d5cb7268054fea1c8ffc68ec7dde3636268db54ceff2e" - -AES-128-XTS Decrypt NIST XTSTestVectors #214 -aes_decrypt_xts:"2e52f59ebec33506000c2d05aa3bc8047f5798fc0736456a0d3ed09d86b9c36a":"1e3022eeb3a832909beecf9ae632a13f":"6e3a0442958f6421a147b2b4ef7a8de8cf3e375af8d07d73bd":"267119f919b490ec4d3bd72cec3a717f8e9ec707aabe984bd6" - -AES-128-XTS Decrypt NIST XTSTestVectors #215 -aes_decrypt_xts:"13cbc3bbfa8216a7d956b5f7391e0a9d82cff559263d3ec7e0d1e98a5d0e3b94":"b1fedd540d12db05fca03e6971cd93b0":"85868ec4af1df87fbc3a3cb840ea93be6098c0dcf35f18901b":"fa354cbfce182ed0710d6007e944d1a8b299de9320ce775db2" - -AES-128-XTS Decrypt NIST XTSTestVectors #216 -aes_decrypt_xts:"93d5eb3e9b513a5a86cf7a8422a4411c164d70d1814c275cae56de0995e2c396":"0112091ca7b7754612998dda5ade4882":"e5a0e987448fb909b58033f8670aaa882317370f0a4427fbc3":"d6769334e90a0faa02e2f952208aca066213db8dca050b528a" - -AES-128-XTS Decrypt NIST XTSTestVectors #217 -aes_decrypt_xts:"9e291547fc0f7a31c6330a34871c49c73ebc245ddcb50c076cf57a079c845f9c":"d0ae20895052d6b6fd53508cd687c642":"af0db7968c67f68f313708a55d1de9de87491c2c07f74cdf85":"3ecdefcf57f1b5a7c1d275aac331ccd2255c089e5444b16a51" - -AES-128-XTS Decrypt NIST XTSTestVectors #218 -aes_decrypt_xts:"b39208c7f52f6dbe67817d83a8b6a539bbaaea877f2ebcd18d7021b32fe7f61e":"6f381a595594fa453e953ff7b4903482":"d606ec4146428145db4caccb7b5b87fdc2d4d25b7a44ec993a":"30b06d11fe83e9a471b120589906c0a818ac3d9ff03f620f07" - -AES-128-XTS Decrypt NIST XTSTestVectors #219 -aes_decrypt_xts:"041dc3f6ba6c6a2ffb554c61f0cf1452071e0d84adeba3d16cfc86564f47d05f":"6e2c3aa1dd00fa16d8831d263932aeb8":"63db506c7ea17e5cd75dcc12f6c4a427305bb98ea6247b47b2":"3086460934d7a7ed6b3798c122fc8c0e1ec6a3a07605fcd327" - -AES-128-XTS Decrypt NIST XTSTestVectors #220 -aes_decrypt_xts:"ac4fc0dfc316cb268a2fada377b433a6c4c15dd25214762c7d5f4b8f30397088":"ba1a0ddc152f4919b217df3773031694":"bd2251160c6b3ea80ccc354758ee2971bdc8de9ef7e94056c4":"37cd1b9b779cd4051af39754d97bcb44805d8c72645063347c" - -AES-128-XTS Decrypt NIST XTSTestVectors #221 -aes_decrypt_xts:"c8eee809910165fb5dd97b96e8f71e6957b0e52d1f733618570906d14c40ec2f":"5c224010c54f128a54530baafb5c3044":"c669d4464784eb9bcdd09f8e3aa38a3c838d1d34f8d3f55052":"ea6632f9d6d552b414ede1a5d2a554505f8d2e22ffea692e53" - -AES-128-XTS Decrypt NIST XTSTestVectors #222 -aes_decrypt_xts:"088a939d9214f56b5ded3cadcb345bbf8386aab39c66d36ae749b28e0dc0244e":"82e55bdc602a52280c52190f693662ef":"c3f459370ea04d6997b46a7ce523f63e260a2495dcb648aec7":"8c7b4e51eb88aae271e2d1fbe4522fa9d128dd4bc2e36efdc4" - -AES-128-XTS Decrypt NIST XTSTestVectors #223 -aes_decrypt_xts:"bfd385f0c1f82beeefda68223e8866bad2a69be66c32df1e80ee598563aa7a47":"2618b01fb8f6c823f45ab07551e5ed17":"e9532da75da1a5c13b746667fb072601dd701567714adce42d":"c86539642f08cc959d906d85910321029e1484fed419daea69" - -AES-128-XTS Decrypt NIST XTSTestVectors #224 -aes_decrypt_xts:"ee74d721fb5abd7237213ffb3259e6d6d371edd6be98102e7cdf9f386b2c3ce8":"b8b6d1d6409342971d1b62d9b22c1bc9":"5aa11c28745d15567c774ad6185813c2280673c8f032a61c6c":"d768bad059b0c94ff3aa95e2742572bd44d7bf05dc9a1d3e29" - -AES-128-XTS Decrypt NIST XTSTestVectors #225 -aes_decrypt_xts:"48d13c8259e99ea601b78cbbc10389985f49f1c8cf832fcbfa3985f87ba8c032":"a5d1bad7b446b97ab2a3c8baa3aabb48":"049ee2f3b049e9303a0d4bf47f0c5b76e6f6d1431158b2d23a":"9c426465cd3d9458bf3f8e3fc2636ddcbc7fb4b57428bd6ea2" - -AES-128-XTS Decrypt NIST XTSTestVectors #226 -aes_decrypt_xts:"4eeccad57d350ec0e70465a1cd7d8f1cd2bd7157b1deab22675b600c99b4ccf0":"1728d62293e761d1480a01f4596b0e32":"81ab55151b51b41881e675c4d8bfb376d79c26425be1bd6a5e":"c15d7e9d1ac579277f78f0a3ae8dd9d29ed55b90a94e8650d0" - -AES-128-XTS Decrypt NIST XTSTestVectors #227 -aes_decrypt_xts:"e74294e1713e59822141853a5ef8e9ffdf98f4f4706464bda9b975787bb789e9":"9e1fd8b505932b268f792b83169369a5":"c5981c2f99d8baf6cf7850d9f3629be0558d411bafa30657e3":"55b18ced640860d480f630a6b71f7f5aea2926d5b4e4fb3097" - -AES-128-XTS Decrypt NIST XTSTestVectors #228 -aes_decrypt_xts:"103df884b1cb8f2498de1e7f681c4455df56f719c206dd250f83dc74508c1a6a":"ac7bf83953d8fd938e12926ce1e2e788":"33d4c71a8c59394c8262a9209bec31484cfec27f449e223b3b":"b5b338fd3dc8e565fb612cd5aef6af4a804d8ca0090de9b20f" - -AES-128-XTS Decrypt NIST XTSTestVectors #229 -aes_decrypt_xts:"26247d33f2b7e9e06a2ee4833e814d992573a8343f4762e1454b0bbbd1525ae4":"cff4f84225d0bbaa7503a4d6617e7566":"95ededf9fa5ca3948a849e5e3eea11642faefda4db415fab5b":"a3cf158e19010a9b8dd8605d5cff1be2c502a1c0ad325543b0" - -AES-128-XTS Decrypt NIST XTSTestVectors #230 -aes_decrypt_xts:"75799cb6759a2eddfe9963973491102ee9653bf0320c1b3224fd4e7a308088e3":"3000f2ef64206577555a1fe486f6b609":"358e7be75e5a18a8234e536e374024c473680186d3a85f5d20":"b143b059ff945cc28b3c1c3203ed7e7e7ebe33ad1345258963" - -AES-128-XTS Decrypt NIST XTSTestVectors #231 -aes_decrypt_xts:"b5ccecb554fba1092bcc546e0335a75b07bdb234c552e4172e73331588d6a314":"356a7bb2a2bd57128b2b7938bcb020cd":"82a05058464d90ecc67b5ad314e5795ab0a45627416632873f":"8a0b4f8d6217434bfbe5cfd80c08e7066fe0c47baf6c2a3a7c" - -AES-128-XTS Decrypt NIST XTSTestVectors #232 -aes_decrypt_xts:"9f94a398e032c2608167ad538b7faf92d01fba0cbce9b1385736e31372389e10":"cc40c7b1c09edf0217e01e09c107ea7c":"d812b764449ac957f88b3cc6349c0a74338a529dd79d6bcaab":"b311ba6e522f18ca1d13f1fd426918ee83efcfa87390efc40e" - -AES-128-XTS Decrypt NIST XTSTestVectors #233 -aes_decrypt_xts:"5d3fb468b26ea02e5ff772b9df6c6c98a7e28c5e67a9b16b8a44d2c68e436f8a":"83e6ca85fe7ec093794f902d45e0f210":"4db38763d93f334547cc760dfb6b187abe5b5a0246c58eb066":"ed47719847d73e0e12707a277ec47a9cc8096791a8238daebd" - -AES-128-XTS Decrypt NIST XTSTestVectors #234 -aes_decrypt_xts:"9bde31a8f1a4a3b546bb70c8d49911f9a32b7591b551e5c9b8506c33b2152b68":"280dcfd9091f013fa54f6825229235b4":"d3fef015613f51d2e358837f4e0e23a105baa874c64db2531d":"23e79873e3269f9dc42b6d9b7120cfb1c9e45ae80ebe166cad" - -AES-128-XTS Decrypt NIST XTSTestVectors #235 -aes_decrypt_xts:"1e10506557a0a1c5397d1416eb4d994c907161701fce00157aede9d5ab38158d":"2ddd0ef00f8d0c451555ca4a6fe4ad2c":"412639e306c30613476f951ec61a20321a0083886fc3c0e3a7":"efe24078d36a8cf155dd95bdd5321c6acb26ff607b3b19bca5" - -AES-128-XTS Decrypt NIST XTSTestVectors #236 -aes_decrypt_xts:"5d773f413dc514f4e64441970a66ac36ddc352924236c948384dd5116ea73b0f":"25b3ae8779b8399097a3ead7c4a4b7c1":"9d247eef8e3e00fccf519a7e0b61008fd73d2a5a1767721096":"245d2528b7e1608a186f6e8d6218ee0b7a73ed9796582419d7" - -AES-128-XTS Decrypt NIST XTSTestVectors #237 -aes_decrypt_xts:"49e4639310b6a2dd5ee90b69ed4dcfd768d514254eeb7ed559c864d567a6d1a9":"4b19df03740b52d37c98fedf26cf0bff":"aa7a0fb2193c6c57b82d3f37562f3ff8c9d8ec0e5fe7ead0d6":"3eb38e02e70372b2a41f27c68e4edd7b8ea196a1a38b285fa3" - -AES-128-XTS Decrypt NIST XTSTestVectors #238 -aes_decrypt_xts:"e7b827bcd50c71b1986a526745847281a4a7a69a8d019016412fe2ba74bcd3b7":"c0f66bf0bd3f3d3f630e15cc5ef4bcce":"22901ef0f865e92d2bea19238cf5d76a802b7af47642ebd742":"1bdde74caabc38b37383b072d2aeb40cb21fb29401f110ac0c" - -AES-128-XTS Decrypt NIST XTSTestVectors #239 -aes_decrypt_xts:"ab1193e2737f282d6a0d29932600c4e408c8f194906978fe2f9f56b2cb98ea83":"fd7d921baec362239eb3cfa19164d071":"881e90b4c70ddbda40b7e4c465482e9854e194ba964d1f80a2":"ec08afe7a0b64503e03a757ba0baa8cd285cc3fe74a69f65a5" - -AES-128-XTS Decrypt NIST XTSTestVectors #240 -aes_decrypt_xts:"82be68298bdea7562547e68b9fbafd4306f57d3df9cd91a9325b54097d2d7f5b":"9b6eb0c00cd6b13264c069d742d29583":"25b2ed3546e7f174a29bf843377e9139ae428a24d4c9e62852":"ead29b33519fa010e1b457d3a51b71452fb486b1ee3799653c" - -AES-128-XTS Decrypt NIST XTSTestVectors #241 -aes_decrypt_xts:"b7ce957c67acc523f963d07532a9f829ef153b03462602aa9d57367c96d61941":"cb5ce7c066b894581f1136a1a00f50f8":"67a37d74ef2ede7cee56fd5ea3ad418d08cf9a1dbbf11af9c3":"321d47479537f2381f5d33ece66cd17368bcabc2ea90f3bd2c" - -AES-128-XTS Decrypt NIST XTSTestVectors #242 -aes_decrypt_xts:"444bd7e11ef01e890b32764311d64506c360fdf410ef8a77f26716b1d1be43e4":"41da2c52d2be94ff3592ae054e2dac3c":"c4480c6e7cb194e086b98fa2ae41f662c8b6bdada29e3d394c":"34a02ae19dd39e76da256d3270aaa25725c746113bb2e5d9c4" - -AES-128-XTS Decrypt NIST XTSTestVectors #243 -aes_decrypt_xts:"5eafe05362eddd05effcb2447896e7440f38c655276b6c7fbae003a387d10c96":"219df9c3fecea911484e9b15258d76ac":"95a65a9e57c81ad3a381b0994cb719714ad6838255534d3d1b":"0a6aafd33750144f388bc77ccdfa40c947117c3a7e1fed53bf" - -AES-128-XTS Decrypt NIST XTSTestVectors #244 -aes_decrypt_xts:"89dae92621ba5a259c6be4c82d0eeeb11851ce00eb37dadf770f68f44a310a9c":"cce0ab6778b19dfb7f3de45d97caab65":"29c3508fba48285f2c02eaabf75e790268a6d59e52fc2dccab":"ced72e956ba69ffa144bf81a2a99462f3d474f62cc46a9f1dd" - -AES-128-XTS Decrypt NIST XTSTestVectors #245 -aes_decrypt_xts:"1fb04dac75df2a616f497fdd35ce5929e612f05147dca4183e4786ffd2ae9b29":"d4fd5c7580b1068ab0dfd90f79733ff2":"a32d4b9355afa690525211185e19586860eab67d34308ec4a6":"659915e34274ff7f72c9fe55c3fa4ea55cb9a021ffcc9f1367" - -AES-128-XTS Decrypt NIST XTSTestVectors #246 -aes_decrypt_xts:"2ffe2866d6fa82a75d2fcf257257708336775684aace6625ace0ed4a8fd89e67":"b5429585dfcd80f8e14b48c86f11d1d9":"59631652ddbc62395784bf18cbc967cef66ea5180f3f6df5aa":"a3a06380056b3f155892fb0103aac666ea19205fa3fae94f78" - -AES-128-XTS Decrypt NIST XTSTestVectors #247 -aes_decrypt_xts:"7741d5c21c34af083001dbde3922e787b3d6ed2242b876fdae6266b7d7a97c9b":"3cc1d268fe621c5d4052919bf6f307db":"d42ad036521b1d84200faf86d9788679e89377280b7833e434":"40d9f9dc7ac22624c0a450d276898f622ebd0586ec2c48372b" - -AES-128-XTS Decrypt NIST XTSTestVectors #248 -aes_decrypt_xts:"a48e8b318856240f5f703a0d92a19f8b26b060d13dbd80ddda54baec71e96eab":"108b6e490624f99e92f8652fac056906":"66317322cef8425d535eb6b29510ac9762ed077c6624c500e9":"9be5b49d8e8b87401690d2404797f0584de888d02b1f90d61d" - -AES-128-XTS Decrypt NIST XTSTestVectors #249 -aes_decrypt_xts:"aa13ecf099e54e89a3ac486132a41f575e4222877262aac4f1efd10055c85ef2":"127591c10b0f2a88f726132ba10f80c9":"861052fee0e744f346f113af0e81100360088faf1834bc6cc5":"cb833d27f1bce1a6554b15dfa0ae87402f5d9d2e0c5218c1cd" - -AES-128-XTS Decrypt NIST XTSTestVectors #250 -aes_decrypt_xts:"e3cb682b03708d53e29203f722804789a6bb01bd0975a9679f0c7f7d8684da3c":"ecc2edf7ec7b0ff5293cf636852220f2":"480bfe398c1a627129d11a51c9de9b4e0abda94020dbc5d149":"954684c0b47de98bd2bdaead680a36815794d7ac6d1ede17c7" - -AES-128-XTS Decrypt NIST XTSTestVectors #251 -aes_decrypt_xts:"1ae56806ca986fee1087ceca88fc49528abe3b14db9ac108555555c7878ee7db":"77acddd84b31aed0f90817751d023730":"30a7e3382b7778bb6fd2eec2b61e2970dcc34fe8e9b7b8bf4e":"6f8cb38086322161f64a2ca494738bbc0c89c8b70c4f5325c1" - -AES-128-XTS Decrypt NIST XTSTestVectors #252 -aes_decrypt_xts:"6b0e4079b7e587d78e9b0c1601ca5403ef6fff525e923813103320682e7f2751":"44b0a00519a4712aaabdf66dc133a51c":"3d90eeed5a13680653b21e6d8e766624621e0027f8c60cd105":"57b9224a61e6904e5b4eb0f98183e60ec4668bd5e5356b73a1" - -AES-128-XTS Decrypt NIST XTSTestVectors #253 -aes_decrypt_xts:"6778bb3a3def8c9fcfd019ce2f840203941461f3d118911eec77c7986b441ca1":"8b097e2f871a2890785d3b6d74037516":"e171b49371f01355b86ca8f7e45a9bf535713b05ea0e1454e5":"ead6b89e0d2d9fbbf664924b82e872f2286d5f349b83c3399f" - -AES-128-XTS Decrypt NIST XTSTestVectors #254 -aes_decrypt_xts:"db15ebb2c468376af9ac8cacacb7d2316920b14be74662dceaaafce0450aedca":"147a139b50eed66d774edcdfde8b1718":"54b3bfb4076e61aa952354f3c2e15babc3817fc864c2bad329":"c95dbdf3ba97d3c2a595c5d6eb5fcca10215c6b78dde68dae9" - -AES-128-XTS Decrypt NIST XTSTestVectors #255 -aes_decrypt_xts:"a0d2480a7dd0c002bbfae670617a2773031de1281fffcf8e4410e4f1c6ce8738":"12161ac707eb8bd62909129983121a54":"6e172aa1523c951be8e760f50784e72b14e0b35168a3c541a3":"0f88af952d2e5075baeb06d115131b190dcec38b9875f46b32" - -AES-128-XTS Decrypt NIST XTSTestVectors #256 -aes_decrypt_xts:"4d395dea25b72b034bd5c2ba67425c84c1370c587275b948558d05a0c77d2e7c":"69b12f9fcf716119e4a4272e3b1742e8":"b136f6203b48cf1def8261fc40ab6eb827c33b7e53ccc4de95":"e258fc0279687f49e473caa139c88e4dd136ce4cc13781a4ee" - -AES-128-XTS Decrypt NIST XTSTestVectors #257 -aes_decrypt_xts:"dc706043cc2320d22035793344ae01dd4d9367506a5d07b6f6627de613a0d224":"5350a5c69e4ff96afd98ea1462d25ed9":"e14371fea26ac467e14c1384b7e050a3b51d63bf9dd0d57741":"56fe0a998675cc6e91b09e07c94d567819657d9c7b01b40d16" - -AES-128-XTS Decrypt NIST XTSTestVectors #258 -aes_decrypt_xts:"233fa776f0ab4f0bc9277c72770174d1be3ca386215823f344cc519b38468585":"dd376910b79b3e9c30b62fbf5d5ced26":"ad2aaaa83e52613034e071c22ed9a1acf571fc5639d96b9477":"bebabb626e38700651f1f652db7f3553b0b76cd45aa8dbec28" - -AES-128-XTS Decrypt NIST XTSTestVectors #259 -aes_decrypt_xts:"b2587464db492eec3c33034a754fc9cbd0b8ffd4cd49d1be5024940cdbd35c40":"522e83e7aba57ee47c43cc0405d6c1ff":"15a9e688a01f8a201dc7b80847ebb598a8d4d39ba0de21dfc6":"03c3c304f09dcc397215ae2e0bf1900e6bb088a8d157e37478" - -AES-128-XTS Decrypt NIST XTSTestVectors #260 -aes_decrypt_xts:"55c2a6e71623e32446a2af66d13eb174359fee87dfa79f0cfd0cea89dd4b582d":"b04bdb4aabf42b0bad6aedb816528526":"a87f0fefde2efa2720f0dfff0cf106bfe35295dc29cef8634b":"ec975db73e5c47904e8c37186f69171e2ff87b176c95633d7e" - -AES-128-XTS Decrypt NIST XTSTestVectors #261 -aes_decrypt_xts:"6256ede67e32e223845f10b8e1a0570a9febe1016a0c5b265b3a0308207dccad":"9313fcad3d377118633cb6e4ff9c7cab":"65c5d0b8a6b2af5716bffdd8f6aea7b39e5ee202324721993e":"f0ecbc774e769d3a35021a3b8b6f6231a7c21390fa953dc820" - -AES-128-XTS Decrypt NIST XTSTestVectors #262 -aes_decrypt_xts:"520430ff9e70665db955216d562e788dc8b6cf6ad64d174265ea0d0fc7c4d888":"0868407108c10869f043bb01ccf537e7":"d35916fde4f2e086cc310a17a554a60c9fc5a2272078e06742":"740735a817316c7f0211d31dc2e0668a4fa4e5cad10d5ab0fc" - -AES-128-XTS Decrypt NIST XTSTestVectors #263 -aes_decrypt_xts:"49404d86c6df865398eb5eeff3c55e353e7c6146bbc3f75e63e9dd96d5fdb340":"22f63a00729dd9c6436bc51b25283b1d":"995d9c983dd77bd682830f03c043e7c4a106b8973e02e8b2a9":"67d983a4d699bd582ce060b98062d86bc0f86672175579048f" - -AES-128-XTS Decrypt NIST XTSTestVectors #264 -aes_decrypt_xts:"4a39d37e5cead002209e1ecb7fac5dfe20b0d5dac45052ac8f22f87e46bfe2a4":"e9aa238cb922337e4e5d168f8a797e77":"e35cb6771a7983bd990dec0dcb28ef5d5bff22253bf741ac87":"144453348fd894d8d919832fb18e6ec5cfd67afffd249cc212" - -AES-128-XTS Decrypt NIST XTSTestVectors #265 -aes_decrypt_xts:"31d7de504f3bc4417a4db932231b350954a8e1ec85a799ac1b169a0edbee24c8":"e31c3dee11b9d526eba865742e825b65":"b23968074f639ff65ce55f9f0fbeb57a1095468a9864f1d616":"21d5ab2f2b33242f25dd4fba01677fa1fdc080773bcc17a544" - -AES-128-XTS Decrypt NIST XTSTestVectors #266 -aes_decrypt_xts:"a783fc87e55a7fca96c2ce5aa277361565582703dfd18dc15afa98bb0b606ac6":"d255a5d7e6c95906061de654d19edc79":"21e9a241c58140e0369b3677045aa4f225ca735ef9ac5e87d1":"04ef8bf556a2c0803e2e35e3e8db034f3accf3e3412bbfdfa6" - -AES-128-XTS Decrypt NIST XTSTestVectors #267 -aes_decrypt_xts:"4601aa2ba0fa7e99c93e0c9dbd448fd1d99ce5098a6d1d8c9c214db6206ed052":"555b0a0758be0b3ea2d67a86e284ee04":"4c5c75f0fedc86b766eb4df59465431eb3e716007bba8dc9ec":"df0a8a6f98dd44b2534910797feb9745e1d1ae7bc7e6cb1e72" - -AES-128-XTS Decrypt NIST XTSTestVectors #268 -aes_decrypt_xts:"b23806ed16e3b3a35b3030c92fb68f2754c432cd87fb1fc2b8a09fd52b890214":"64f6dbdec3f96426af252ce1ba819fd0":"9b7d57f9d45854a011516d93dc56ff73da2cb374562a671bef":"d16639eb844330a0a6ed573eb7d61f00db66b1e146117384ea" - -AES-128-XTS Decrypt NIST XTSTestVectors #269 -aes_decrypt_xts:"f43351de2b9bf93f5735b199f56b7e10eb6b7a8240f96aeb4b2134648632e28a":"65a0343583b5809cccc58876f2120016":"72291aea230d2b52b927d6aae5957c08a38f21b26a379908ec":"2a67608547b9d9d903b2d7cb2b6c654858e81aab2b1d9a72aa" - -AES-128-XTS Decrypt NIST XTSTestVectors #270 -aes_decrypt_xts:"c2951a92b7be8cdaeebe9ba271bff0cccd1d5b13eca45b62cd69728adf2723f4":"ce0e30edca647a60e67bec3e236c09af":"c110191e9e932dcb81fa86f94ff503881044dd1e129edf16e5":"135402857776b81a0d1eff891d583b92276a9abe7c51fa3f0a" - -AES-128-XTS Decrypt NIST XTSTestVectors #271 -aes_decrypt_xts:"7b92a21b3357bbcfa42b333388a46478cd38eff643eb5b8186db23728299e15f":"86c7440922e7620eb5ab5ce525df9b08":"b21074d11257eadfd828291ad57e1f294ff70794d333821726":"d63cbd6896ae1a9dee4c93a2831beb71beec5b37b083b80e56" - -AES-128-XTS Decrypt NIST XTSTestVectors #272 -aes_decrypt_xts:"6a95d53261ca6210d4f2973d204f1862a478b919b4520e30d45f3aeab0e6e92b":"2a557c02143c00ebc92732516c5452f7":"a7c8d66721a4c76d1ca9f5205d5327b52067cb6f512095b863":"9193a921ae6e830d9ce721e91d20ed236e7809fa09640cb0fb" - -AES-128-XTS Decrypt NIST XTSTestVectors #273 -aes_decrypt_xts:"9e8aae708afd148931883fbbb20360b5d44ac7a3083baa3afb53a4ac0f2f4769":"d9bc4fc7fd21773be0352aaf99e2d382":"850de3082a0c7de1eeda9234b6eb6d76747de1267a2ee3e5fe":"6fab9591cd07472b81f2d906068da07189c977db6e09231c0c" - -AES-128-XTS Decrypt NIST XTSTestVectors #274 -aes_decrypt_xts:"43841bd949bb30eb9d52d13e5c34820390c669180a5fd4b30769acc646744e2b":"fdae2ff6408e095ef4f3cfafb84fa993":"8a9526bfd34578408bb7e89845c6e5a79c348cd1c6a95dab09":"b52b1448bcf6d013cc28c491e4d37807ff8e8825e1f5ffdec6" - -AES-128-XTS Decrypt NIST XTSTestVectors #275 -aes_decrypt_xts:"77fa5f7b82ec32be0b3db9ecee9e674483ed370a43616f81ae199ccb2fd24c25":"9dbb74ad0a775f940ea3eee5190a26ab":"7b3c942a7b29c0f3a3125f1473ac209ff5731265824ff2df31":"9497153d737abaf2aa1ce7bbf591ff5a764cdf95e6be9f2838" - -AES-128-XTS Decrypt NIST XTSTestVectors #276 -aes_decrypt_xts:"9d382f84fb275ff898311284adcdc79f2ae363d1c392fbaf9f8f286e7dd8f146":"aff121d2d85c120be9718d3034cee823":"98d6dadbadb67b5b1df72794dbccecb3c1bc1de3efdb2983c3":"6bb74faf0b17833a3a1a95f673675e230c518dfa26fd98a52a" - -AES-128-XTS Decrypt NIST XTSTestVectors #277 -aes_decrypt_xts:"c7e12b520adfcd8965d4f091af25217b31fbbbcce731537215b70ba56e983d50":"b9036536b9f8bcf4f8dff5ed19406f8b":"8a5224ebb27292c6996350b32c3b1f2ff1884c179d3b5b4abf":"84bb8d1772e93f00e80df5b20e5d1a5602ab9b001badec7b4a" - -AES-128-XTS Decrypt NIST XTSTestVectors #278 -aes_decrypt_xts:"14d2f712bb2aac8a77cf0711a4b64a72996d7e309a11a3d900d1658f637d40dc":"2a29b939c7b612796cca4ebc1ff03e45":"f47db336f194e89a9e3f2afaee51b5075583a533320f9230b6":"9e12e6b70d6aa1687288a6e49cd8b6d861dba0400e05aaf752" - -AES-128-XTS Decrypt NIST XTSTestVectors #279 -aes_decrypt_xts:"a38566d8c583d7df3b5a7a84685762e9982415fe319d1d7577d9ba0c945846bb":"e5fa939d8120784eb51faebe29b405b4":"dcdf427f9c2be96feaaa587409924ce00bd27d4dc3d3980c61":"375fbcb5a046655e2eedfa4f177a0cd8ce3a7f62c81c085188" - -AES-128-XTS Decrypt NIST XTSTestVectors #280 -aes_decrypt_xts:"b312324a75bc7b24a6da68e30ee0f4463a78bcd6922e4aa0c8e74b051ae1e0eb":"b325c5378adec8ee71d1d31095669b1a":"1ed74ff9e63551d474f5331f63b3a22d6440be1933573298fa":"6b4d1142679b321c0265215bced89e8cd9ff1c7321447594f1" - -AES-128-XTS Decrypt NIST XTSTestVectors #281 -aes_decrypt_xts:"944096722c2a3e5213ec709fc5aa92918f3f49c04e3c75623bb7885ff6529c56":"983ebcb9ac2b2e4e955f613a424fe80a":"5858c5e89f58dde600d30ada520c35ef68a918250727179642":"dd212143569f1c9d8002224bf0149f33908fd1f711faa77d38" - -AES-128-XTS Decrypt NIST XTSTestVectors #282 -aes_decrypt_xts:"385a07651362b5364d826cd5ae1e96deb7541c67b6f4016c590823bbe42d016b":"c33411a22ac9c0d3986e9a51fc325d6b":"5679521a1ba1dac5b6e3a615e12ea8a05ce6c35ac36c80118e":"8e81218f0069e1002e218fee9b9530b1c229233de661aaa28e" - -AES-128-XTS Decrypt NIST XTSTestVectors #283 -aes_decrypt_xts:"cd727f71f21a5372860be9715a6990fd5b670be8ae08311195062a1239e32012":"59dc139d7bce497ce49195d16e59f4f7":"5fec25a3956f46b47e6607279c50ebc30436a4e6ebbfadede4":"a11f8fd6a571ed601fbd52439a727d476266776bc853a3d7fa" - -AES-128-XTS Decrypt NIST XTSTestVectors #284 -aes_decrypt_xts:"d0ff00594281c808bbec5d1fd0ccc8b671360b953384617fadee42a9b5d9857e":"425e7c32238be5c199a155de0078463d":"4eadbeb0baceeb9c509cb91b842419b4580c45486bafe7b2b1":"520f01b9d8285be1f956df7b765d1c601c2dfd0d7a19f50fec" - -AES-128-XTS Decrypt NIST XTSTestVectors #285 -aes_decrypt_xts:"5528e3d3d0585d3fee3fcde675f38c2d6d7891a9a8c48e969598dbfd717e8749":"734cdfc62fd71976edc82eb7f33d3700":"ec7bd1112c8690cf0ec320a7e6de7b898dcacf7687faf49af9":"5036024990b58e017a2561f126c143ecfef343eb6b1f3f333d" - -AES-128-XTS Decrypt NIST XTSTestVectors #286 -aes_decrypt_xts:"96f1b37729d92068d7b7b663edae42bdfbc43f5829f207a9dcafe0023035cafd":"dfd6673b7af534a4cd80f55ffb577a9b":"62db2c1e5879d0c9b16efe58c245c3e011b36574570446476a":"2ba07aaf5be5550ed7b44e28070414f154aaf30ec8904e8252" - -AES-128-XTS Decrypt NIST XTSTestVectors #287 -aes_decrypt_xts:"6b119a824df4e7ea2a4b8f535a46765bbbaf93fe304e784cf4b8585971a6393a":"339ce2a6fe1a6ea741c7aaed4ebad4e1":"0dad6e21ac440de54284e38785db84648619017aac90f2dc37":"5709fbb509ac6776797423bc64f30140d57da9f5decaede08f" - -AES-128-XTS Decrypt NIST XTSTestVectors #288 -aes_decrypt_xts:"b4434957d3dd0b9e4f86be9382f305b5d0f5c231d9c7a9d752d0341535db3e08":"4ca5d1586450a4c500a557fa7837d5e8":"fea71105d2d86b1bcd1ffeb0f9d0faf61b6b99f214b46ff2ce":"dc79b09edeaa45ff813953af1b00615124ca660abf00fc92dc" - -AES-128-XTS Decrypt NIST XTSTestVectors #289 -aes_decrypt_xts:"c2e4b8a47ebc5686246acc32bbe14c9df85d9ec4109d94a8f0697fc26b65f41e":"8d9a4e5cc92010771aaea21a08e83a52":"e8e75f23f2dd384adc245053169f25c46ad0374c41ce400f7f":"8d1a4199a2971481ed293b9843f0714b5e670146188c1c6506" - -AES-128-XTS Decrypt NIST XTSTestVectors #290 -aes_decrypt_xts:"e094ef60057a3fa2385b00b41f0f6f22ff6ad8dc2f75daf16c1095d67d54e6bc":"874d2ec02b41a0388f350a078964c11f":"309f2c68bd7d10785fac154ef747e071f00800fd3e233a5851":"82331cf05a8eb9912d44723c8dda595a2fa2706c10e81379e4" - -AES-128-XTS Decrypt NIST XTSTestVectors #291 -aes_decrypt_xts:"bef575e3d299927d3f0a656b29acf6412f92f8c86098bac14dca9ea53e386572":"eb12fde7d3f63382fcec95af1e3331d6":"6f9a99540b4670a09081e72508007d5e9813edd9809ad4795e":"d4a6309e5749eb506f25b57cc313ab50dc373fe709ef44114c" - -AES-128-XTS Decrypt NIST XTSTestVectors #292 -aes_decrypt_xts:"b0abd734d1fd91a7ec4b31f15a109420d3ddfaefd59f4cca5050c4bb8ad977b9":"49fe957634c5a5841c51496e7b6b665c":"1b7bd09b8607a176afafaedd46c76671a4608f3d0de0993d27":"7c928f210f983125ee6cb1217b6e55643a3263234c2192fe5f" - -AES-128-XTS Decrypt NIST XTSTestVectors #293 -aes_decrypt_xts:"6afcf8e96518c48c7b40b15e7179beebd3cc81f4e0d36d5b977ac658744e1780":"ab3601291eacb19eff2072297d3534e2":"f7fc570548b243a5f983e973f34df17e654f761c47ad951738":"c2011f959c7e809c8976db6ba783034bbb2ad1589730ff0a1e" - -AES-128-XTS Decrypt NIST XTSTestVectors #294 -aes_decrypt_xts:"d5bcc7498154125a4a12213fcd2a1a83afd5aa6f602a614cfbb8d4d0efd61d33":"0c737522da7f9e042cdc4618d50a5c40":"4df12279fa56bbce90474ca33d879867ab087938317c53207e":"a6b9be98f5e1fe5459e239474dc41b34a3dccc3895ce1121d3" - -AES-128-XTS Decrypt NIST XTSTestVectors #295 -aes_decrypt_xts:"54352859c21f7611aed81870fe6a675af646643b2be3eb4cf94a195ebe24968b":"7038624c1f4ed2351d259823e3ca3fda":"38e04dd8507808d0740321d8be4a9fdd1961aa27f87f3366cf":"5f5a7a30cf1da7e979d006d76890ddb975ae171741b903ba88" - -AES-128-XTS Decrypt NIST XTSTestVectors #296 -aes_decrypt_xts:"49a20f03d58263482e28c4450c85b0b23322ee47243aaafa458d1b7d3eb50baf":"9cf56907b8c47614f913b997afa60d9f":"8378ed1341e387ef4f27bec03a88658d112984ef888955c6d6":"d65a3cbbbc2a42f140e46cf4011c4e686be6f4a9804e9f631b" - -AES-128-XTS Decrypt NIST XTSTestVectors #297 -aes_decrypt_xts:"53c3e20d72ae95dd7668cde4b401064b2e5cdcba84a59e5e480fc34247ebeb2d":"538376da072b5c7c1e6d662eac0ec3db":"656b1142f3982603c549b1aa61e9769ad7467012c03c413db8":"45e1ddae35c67c99b82518bcf7e6b3d1cf5f30e48c309104cd" - -AES-128-XTS Decrypt NIST XTSTestVectors #298 -aes_decrypt_xts:"ea41d6e91253b0aefc476c87dcc775c140829f718fb33a67f17c293a9f8d04cc":"e1585863e755067bc2665eaf8a52f175":"95f4132408c7ca956c4fdc712cc993af4a8c387796a317755b":"b82c5c5a2160eaec989ae70266b9e346cd9daa95de127788a1" - -AES-128-XTS Decrypt NIST XTSTestVectors #299 -aes_decrypt_xts:"995cb6f49a8ba57a841e0aa3c5bb04cef01bd28c3ec07f0f6a9e86ccf00e7d9f":"192bcd4da78cf5971201c06c436750ed":"599f549775aa84bfe398edf89198ed26c612828e6943ce2e3f":"2be8b0c0faeb45ad38c90b4bf703903b015a87ec6524819deb" - -AES-128-XTS Decrypt NIST XTSTestVectors #300 -aes_decrypt_xts:"6bae7093486ca9c40fe063f01a665920dc13aca902986e6410d124ec01e8706a":"2fa841c562e770ade439d6ab936edaf8":"f08e493175aac45d9b5178f565f50c2bbd3d587565ca677c78":"6b50db3d294c3f4aba335942a02340c7f61ea4fe670e3f0ba2" - -AES-128-XTS Decrypt NIST XTSTestVectors #301 -aes_decrypt_xts:"66c21c859d40bc384725626c793fe882b0f11a397c63aac2026cc8da8916fbad":"6886ce7237031d3963af24ef3d20f7ed":"a8ac2bba1d5de939679fbe3b975909490172fe860e6c24c7076374dc0caf5535":"3c214904072fc4ac45a2245341f78b7873f05d3255d340115a920d0bf2abf671" - -AES-128-XTS Decrypt NIST XTSTestVectors #302 -aes_decrypt_xts:"6c921b4a18cc84abcafcd9825665c7a0fe5f3651d51099d168076c434b495f9c":"a46fadbd1e92406c422d7f02eb2810ff":"e48c208d2676adb2a5a61d07677d4afc1eec5210c417a9813f579ca6262a70a8":"d96bdbbfdce8d898d51081c46d9578e29b3f598757e83cec92ab921a41e459ef" - -AES-128-XTS Decrypt NIST XTSTestVectors #303 -aes_decrypt_xts:"b0cd927dc578481b39178638de7c877af7fe87a04ffe7bfbcbf331d14f817ca8":"5e04ca16e675882b3d386c99d2f50863":"db1d67611974def49013f2a2df322829fbc95362d1e073700d6560c799a75f09":"a1e2d8bc5a24736fd71b624e7cdeb9afa92e6044923540deeb17b6c681299efa" - -AES-128-XTS Decrypt NIST XTSTestVectors #304 -aes_decrypt_xts:"e7824f446fbd4dd4e0bb4024693f25d8ba7a3e4b502f061c4feded1a328c4915":"3dddff055866ae70f318384c048fcf94":"0bc208386eaabae4c9864e9f201e7be3764568a33d2929616427214eb454aeb6":"2bed1ebb1c0e665fcd050739390c71fb6b99c000cc97780bda64e12f5de5e1f5" - -AES-128-XTS Decrypt NIST XTSTestVectors #305 -aes_decrypt_xts:"83a23039ae08a9e17b5963ce9a900154d5b03fff19d0cbd967e4e147d5321663":"0d05cf88ef9884f64ad06700c906e760":"8a436c6d15afc0d65354e8dda22d86296537f77468dfbf799dd7a5517ee39b46":"0305e809edba6c0ed99987c9b5f46a9659fb7edb958ca0ec2bc92f0bf4a5ea76" - -AES-128-XTS Decrypt NIST XTSTestVectors #306 -aes_decrypt_xts:"f9825bfc9ceea113ce39948629de52a4fb494ad113df9454b29dba67b9f26f7e":"b6ef5f5776c793622fd19077a2a17322":"8e1ac176ac7ace307f54cbefdcfdd9627d736cb7cd8bdf1faba338c36514616f":"4646de2ec05b00e542bb00499eab1c7c002eafe99a1802ec89eea673bde97fd0" - -AES-128-XTS Decrypt NIST XTSTestVectors #307 -aes_decrypt_xts:"4934d6cca2118097a384bf7f5f6b045f02467722373a8c22b2ed1cff0c4e3d04":"944c4b8f03f50e8331d383c10d89f014":"428d27a557c5d64fa7c3f3088261206e82dba03e319a776097ab1a87b54c4b19":"8c79d7edf78bc94d15fb514e48c28d4bfac0c64cc1da7e09ee87b34e83b36da5" - -AES-128-XTS Decrypt NIST XTSTestVectors #308 -aes_decrypt_xts:"2e6f0449678d5ab6362ec391c45ec5667ad1440ad658ee1e8133d1f1600ab1ea":"0acea6f45d6b40c758937c371e047cc5":"b8fe1b8972f1a5ac8148ef18db69118640ed368812a3a2d6bdc71b09803d4c37":"e19877fa2bfd08589d2f23f5d65af56749990d5d908ea0f9291f4c40629326ed" - -AES-128-XTS Decrypt NIST XTSTestVectors #309 -aes_decrypt_xts:"27ea501470b1971ea9058cb8f10f817ce0e5ed133a04bda1d622ea239590a2d5":"ef063261c4be4c9bde14d8e435df2952":"d31ad7c6fb078c5befa07ce92565bde2c6cb6d721d6c294991638017fa9407fc":"d03115996617d336f22bfcd2a6bc996e1760349022b93e5f503e21901f99e9f5" - -AES-128-XTS Decrypt NIST XTSTestVectors #310 -aes_decrypt_xts:"302333a6724ac620a7dd30835632bc5fcff2277a1f24375d55922b36780cf709":"98262418306e22f864634c57e9b5a815":"df0727cf3456bf551b805e8c6afde66b58682ed032ba1f48a82be578e3293a7e":"6dc4f143ed48d39777e4960194a4251dc1f50080a88f339eda36a840269a4d2a" - -AES-128-XTS Decrypt NIST XTSTestVectors #311 -aes_decrypt_xts:"88b107dee12493379a033be0a40fbef077511acef2c85328e4097867ebd2d940":"dab484b0e94274b36bef339e5f2e2092":"6b488fb6b867e0ac60bd5d8fea9d5a89ae49a4458758332dc56817d61e0d455e":"4c6c484207922cdb460934777762ad0ae9b119baba711a6687fcc8828d2032ef" - -AES-128-XTS Decrypt NIST XTSTestVectors #312 -aes_decrypt_xts:"a8e3f1475ab7a62b4cbeca782af4bdf8246c00fbded354826f6b16fff4f16d10":"d945ed0e1c80544f3effd5321625ce48":"b60365ad30aea1f4df658b2c8dfd7e61f3dbae2622d512129cd9418f683b9f4f":"fb0d27add7009db06db557c85710091ed8e3cfe5be418be0613626b950114755" - -AES-128-XTS Decrypt NIST XTSTestVectors #313 -aes_decrypt_xts:"d35463bd6ecad03ead9a3663817d6266a0dcf24b2a172e03a61fd865104eefb8":"7167ec38b3dc39e6055c00881723dccf":"2ff189df5c34436c98edff0fa475fa817ac76b9b6b3a1acc204bde61feddcfe8":"badf408bc9a6c2d43a5dbfd641c224965bfd560eac91729197b720548006741c" - -AES-128-XTS Decrypt NIST XTSTestVectors #314 -aes_decrypt_xts:"29ed68975911f8e419694fdf95b628bac4b9c326d7bc1a398d3229e5a6320005":"ed93d3dbc57422dd13225dd7886dea41":"7a08a0d04f295c5e950ce2cc2356c0599709a5a0ce6c8a72b5dcc38f28dd0893":"8b6a2767a2d476122cac5bfdcff044f316eb2e1ccb0266f596b994793c8c6532" - -AES-128-XTS Decrypt NIST XTSTestVectors #315 -aes_decrypt_xts:"b3dceb732e6067058e83e3c15f8b1575aa1bf6ce7bf45e98f81933ebb715fb5d":"cedc28a1ea5a3e12f8736d46506679bd":"b283086e62104f7845a9bfdc68c6d91665b581b81121f9fa9a9ea7ea2887f166":"191ff178e8217ef11d245795e448db5168f2e9db184cbe0983cf066c408f2c8e" - -AES-128-XTS Decrypt NIST XTSTestVectors #316 -aes_decrypt_xts:"68ae9972fca9df71523dbfe25bca935d0e505167ca930914bab22e94e7dde507":"85bdc603af4d820713bce069647b12c7":"9696c55ac663e9506d413930641d6a25fd50a4abbb4be69bf0cdf0d47673c027":"0c40b0b4e5337f8c6fed302f051828a35311b65802be920efa468a598e18175d" - -AES-128-XTS Decrypt NIST XTSTestVectors #317 -aes_decrypt_xts:"ce98cf88bdcf3f46e233222488cf76457fff234f9d3e81bbf4b32c862323377e":"86ad8cb70c4f91ae2f6e47c3b2c10fd1":"43e72a74127c90b72a94e2f0a54c99b20c2ab6316f1d446ee74e47145d999e5b":"30ee2084aadafed974dada9b395778c407efd9902c4c30bc95e286ae30ea2866" - -AES-128-XTS Decrypt NIST XTSTestVectors #318 -aes_decrypt_xts:"71eb5975e71fd9e60ac98cc24c51aa7d5cd35481ece1208b82f64006fd6ca30b":"36166a679d1ae9564b6850267a117379":"9baa1004f29bf21de237e3491e413bf233b2fc686d86597bf98f444e1c4a5fcb":"0700f9062ece9fc6fe38e4463f248a4130a129219480f9caaf4e5ac08fd47e8f" - -AES-128-XTS Decrypt NIST XTSTestVectors #319 -aes_decrypt_xts:"458b602713ba0a0e77b580f0347ad177f9da3e02eabfc3fc259c1e0eccb70ec1":"8eb080e71afaa28363dceb57c5ffb345":"9b2e6d09d633aae3bb002390c6301505ae979c1219400f471a671576d88e006d":"e5c8b5c99a394c5fa94d3bc3fb9b34e33a95e1494a59f82af7f3dcaf8be26903" - -AES-128-XTS Decrypt NIST XTSTestVectors #320 -aes_decrypt_xts:"e7c59265971f52ceb42419d11dcd3ca426007e00908554ed0a4f664f8b57b9d3":"b02310bc11eab0e5f3b33a4ba4c3c356":"89a42ffef66f2ad441b44065dadcb737aa428206ceafe913d0b53d3dfb88efcb":"6ab00f3f79577c1da7a766e0e5965209518ade87130e288c7899f6003c8e25e0" - -AES-128-XTS Decrypt NIST XTSTestVectors #321 -aes_decrypt_xts:"dc6e160d75077074c029a0850b19f155743b2954584efaca1f3f87a5e0bb2c40":"998921c51466e4c6a01f65b684aaebef":"220f0b29a41828de271fbcd2c4611ac6d24f2d48a7881e6de9022fe626838aeb":"4baae5a5194ea7b000be20943b08e8a43274c64762f486053b93fd2d53595961" - -AES-128-XTS Decrypt NIST XTSTestVectors #322 -aes_decrypt_xts:"1865ff2c5aa75a2ab41c752518b9cb19340dd3785cc726c6b649f28ee619c87a":"fa7c95decefdad912ba3c64748de870e":"8754e4c8a7e8e3bab9a61590df5aea1bc51651da24e3191c3dbf0ec0c1ec6967":"56f75a340cad8b53dabdb5cfaf94d783fabca1915c97208c6ae05ce5a1be1cf9" - -AES-128-XTS Decrypt NIST XTSTestVectors #323 -aes_decrypt_xts:"de5cd9be6043520183817eedfa9703a9dbba13fc08ca6376b0bc601a8f2d1287":"6d52eea3e1174d245a91243e165d4fdf":"867d7218708f8095a50a5831d95fe6f08f842e4306e1c15533b8075bd05d0805":"f1818975f81efcc30af58fbe01c2283c2fb836f41e9db5dc6695c09cbd43dc01" - -AES-128-XTS Decrypt NIST XTSTestVectors #324 -aes_decrypt_xts:"558f8cd83144e54398abadbca6bb3860ca21c12c7baf0ed3cb7fa7fff882c464":"e2785b967650c0de9d38fb909d2ddf0e":"7b68ea6be18552fa49a14c0cc7c10778bb43e48dd4a77821cb589787bc2ca227":"510fc8bf0943a1e70969a04eda288ef9fcdb2a4b867ef42231e4f5dac27acb68" - -AES-128-XTS Decrypt NIST XTSTestVectors #325 -aes_decrypt_xts:"97517ae1c780090b393ed48980b9de5ac6f2fa82210fdd1cdeebfdd87ef4986b":"e14111441451d47f953408f82c93a71b":"962b33df39d5310b34b026bc7d147c9f13bea76d19d11b66d335e3f5b825893c":"786538d17c9f31c654e20093a944e2e7285d583c563c3988e9a4cce39b18ff50" - -AES-128-XTS Decrypt NIST XTSTestVectors #326 -aes_decrypt_xts:"f6968f7119682dda3af945e5bc4c88dc3e38a20693809f081d4365c3dc9220cb":"56cd772e836bde44f2b9040e0a5834c1":"43375726092dedb530b22ab37fa5733a7befb1c1c114791d9722ee905f96acbe":"8c377b5cdb03b6f422fa761dd2e21c694ae77d536ed95d3546da9b13bfacb14e" - -AES-128-XTS Decrypt NIST XTSTestVectors #327 -aes_decrypt_xts:"b9b9b7724b42abedf21a1aa50cf99de0b25022cc55e54189f1f4b0982c212af1":"57b6c7669dfe3fb864e0170b36082a25":"fa370c44aaac8ba4fcd07a815079cf991ced83e435a946f7cf52dfe3e345a10c":"9e551121991f1c22f81689bf4269fd97ce5bcee7bd457b9a7445ae5173a0784c" - -AES-128-XTS Decrypt NIST XTSTestVectors #328 -aes_decrypt_xts:"ffe29c1531de9f1e53f802b4386634460cdd1077b83018a3f2834e9e55958133":"25ca3d3e9d24fbfa50a938f4cda860b1":"a42ffa84b57e27b089afd3f7aec40ef7f5d56ee3f4c829fe9316f3efb5b7590f":"1664e8e2b9f1c2bf86987aaee4b3c37aa4bb2454241240a5808d459c342e5e67" - -AES-128-XTS Decrypt NIST XTSTestVectors #329 -aes_decrypt_xts:"017f16ffce632bf3ef31de3731c1fc669a0146e9394af564e4200159299e87c3":"2a82cedf4e5b65de34047834b133bad7":"443a210f6ad8ec3bf4554113fe3464814ca4dde402e761d39be67487fb57f651":"a0b3edcfd2bc4b6de65532934529d815f7ceaddcb4647f0669ac0f93eaaba4e1" - -AES-128-XTS Decrypt NIST XTSTestVectors #330 -aes_decrypt_xts:"8251f4a54e0266819c6538e8adc2b0b4959069d57e7fb12178a221d234ad69dc":"c6659953c729c0238092a581aa021386":"6a6fc65a0df7ac6d01d3b89452d12a917a718d97c8b757e49f089a5d6f051a13":"a0c54ebad278ee5229bcf997261589efd7722bdfd89deb031c1154e650eed06c" - -AES-128-XTS Decrypt NIST XTSTestVectors #331 -aes_decrypt_xts:"b6cbdd64d61913f905402bf59e7c2438373ccaf697c7af934580857a9d3b86f3":"e71f0b944194940c30a339c644d5cf69":"e6d0dddf7111ce86b69d0088c351c194e75fe00027058a33ca8467d32307db49":"e607cd33369bbf8748a6a6fa9359e487e416095045ce2cbcce46bbeda64cf1d6" - -AES-128-XTS Decrypt NIST XTSTestVectors #332 -aes_decrypt_xts:"a29acc4a74ef7044f525a161e43fa96c301996c3d656ac50e2ff6907f0548cc9":"f9b04d5d03c8875462f852fc1a438f9d":"8b42a0a87630201a212cc4815455db5c22991528616a7fd066a7146ee8623e1f":"1f924968c0020793e5578d71b0763c7e4693d5648e9192aa21051247a9df713d" - -AES-128-XTS Decrypt NIST XTSTestVectors #333 -aes_decrypt_xts:"3bec22040d78e4eb50fe1212032bb55252297ac67dc0264c132458b57618a85d":"f89f805456b642059e28f7decb202faa":"22099be8cd7b4ff0d50fe68e8d8fcbebdfd3532d0b95189d72d83377b117ca83":"2d86572cfb63cb0c7e38e0315a7159d898542b7c35d209c2b763c0f4577a85a4" - -AES-128-XTS Decrypt NIST XTSTestVectors #334 -aes_decrypt_xts:"0b8e6a32a9709b77ead782eb1a5f096d5315e3aee9e2a72a1b552a7719a132ef":"c01571013edce1c9d48a5431b6bd7976":"32e7211a70915aa74ce059fb05ea543d717346940789bf163751a7447d32e84c":"a5cd1fbc645609541c777eabdb1425b643e2acbed12f7e04dd178765c96a8fe5" - -AES-128-XTS Decrypt NIST XTSTestVectors #335 -aes_decrypt_xts:"d86e38f2f2ac28f5d21de98deb908affacd602456a1c06e64c1f7a00df1f62fe":"1b47fb7416d86fee2ddacb829406f0f3":"bcd2f0afd0078a9313a6f0f7e683dcc83b8a92805551b0f157551cf619a80208":"38643398093d7979b72021004e94eb928aa82915f052c5dc44d022f4982ba059" - -AES-128-XTS Decrypt NIST XTSTestVectors #336 -aes_decrypt_xts:"57027dde15772e4e8de731d41ca4c6bdb58bf8206f5dd18ef8ff0c7cfea0fa2c":"17f38c8f986657904c3b2f1d6c93407b":"5b2229ea8709309994efdc7ddf0ec92bc51f06a9fcb59e5d2fa4c9ef4bedafb5":"9162a2109de3b6cc07ef8ca75129b466031b45d4b6476b7945fa1129339ecab5" - -AES-128-XTS Decrypt NIST XTSTestVectors #337 -aes_decrypt_xts:"9b59606ff36374866ac669de6933d39baf3c36ba46daf2dbdb58487044ec70c0":"c7fb5c3683082d5d69f8361ec054ef04":"f71f0f2e514b22b4139629ae6e45d5c5f38cf4f0a303a78a08603c2e6a11d7b1":"d0466e1da946515e6572c3359b2f0aa994213db1c878a4828e08a88f4b18afaf" - -AES-128-XTS Decrypt NIST XTSTestVectors #338 -aes_decrypt_xts:"b29fa8fde6efc2f66df9e5e591ba818c15a82358d6365c4f58fd2f31f254bcd9":"f9b15d6fae9a5338b84cbae05facec40":"913577a2d4a98bca801c857dec368674eb20be04f5ac8bea047fe3a9373dca62":"3d055f21e3b363f770e9514b9bbe4fb52a4c963219dc70333b24096c6d464395" - -AES-128-XTS Decrypt NIST XTSTestVectors #339 -aes_decrypt_xts:"805938641ab6dbb68ed15cb0896f290109064eec6417fc0ba8dcb48343a1a8e7":"8c72c606debff56d89c968adaec4b0f8":"17499183950757c2f4cdfc37d0e505a277cf27e00948b11b4d3537cb362ad769":"1112b69e118632f34870265fecefa0b7ee0eec2b6551ffd36a8ede269c1c2ab7" - -AES-128-XTS Decrypt NIST XTSTestVectors #340 -aes_decrypt_xts:"91639ef6651a2dbb250b81c865010ac8f21162fe568d0d633d0e92a4d5565e29":"aaafeca1f25a6b82f8aa68c309193e60":"7486cd751a51d91957208b73896f0142062f8788b5f6787011020c9f18b21969":"de0e7df7ee6ab1f1f4708c9a7f179510157ca620631e762ba69cbdfbf3509aed" - -AES-128-XTS Decrypt NIST XTSTestVectors #341 -aes_decrypt_xts:"151349765b211aa41abf334220a2c6cc8d04a452a35e4f3f6996465844568e89":"674fdd744b171361a191d5bc87b1a7d3":"44efa575e7bb73cdd6905786507dbd4371c98abc8fb2ef1bdd58ab1b6cb70a49":"652c40273b2fb4f5eb8681fce6ff7959067eb9d3bf7a1671072c21c9524243d9" - -AES-128-XTS Decrypt NIST XTSTestVectors #342 -aes_decrypt_xts:"b4b0dc42b421789a68b4c8491dda3c21e13e0b5a1ba6d15235969b14eb3c478e":"cfee857e13ba52c8ea86ed8836e4eb93":"e811e545f4a99e875392b62f0eab77fd7d778a41f36c0fed6225ed57ef40dbf9":"22490f0c1f5782681e209686082a22ea76dd5e1346285b5658bfd788c7ee0f4c" - -AES-128-XTS Decrypt NIST XTSTestVectors #343 -aes_decrypt_xts:"768c72e3e86eec02110db6c71a2bf0dc9bafa00539264bd876410e5610d2fcea":"c6db3ebdb4a7fab97b95f3c23ea3122c":"48ea1e9c160740301b2f7e0ec00351a205ba38059d134c6903618f3a269c87e3":"e57bad7173c8e5cc7f430a6b7e7685b6a362b8ea49791d9d710178276d5e3695" - -AES-128-XTS Decrypt NIST XTSTestVectors #344 -aes_decrypt_xts:"4a59a61208a62aa7561c01ecef00f15003a8a55a9c1ced6c54946c1ac4702294":"3d90c370df4c4a4a725c9b6cf6b278e0":"ca9189596b2a42f3780e2b509211a9bc81ffa6c00eae1f65e4490dff664cdbbd":"1d691f56d7a54255950c4df1cbd8611d2a45f90254ba3f5de8cce703f0eb9edc" - -AES-128-XTS Decrypt NIST XTSTestVectors #345 -aes_decrypt_xts:"3fd81a574fc68a8a1e4ae732f6b8178f426c981140a9bf5f0b044b848fb59fc2":"e479b1e421cf935a7c950851f3ec5b35":"962dffd12f95e0d6dc8f67ba38774f6351dd4a89699dd9a8a9ce3d7c699b1f22":"41a8ff2885863891c61128e1215d3a1943848152350f6a881810583463110b9e" - -AES-128-XTS Decrypt NIST XTSTestVectors #346 -aes_decrypt_xts:"fa7c434a3216e9055fbb38241237885116a9f12ebfe1944a3d927bb880be9280":"76e4f001c6619c76fb2b3b191aed57e2":"656d341a14d04656a67b7aeb4bd73b66d47c34f97fd2ff45766a2262da767fc8":"2c670635da304140a3f9f1b68840a413bfa4f2c70c3926e7f3dc223d33419a2d" - -AES-128-XTS Decrypt NIST XTSTestVectors #347 -aes_decrypt_xts:"3011d3362dbda37684491282fda9a32385cbc94522b72424f4b2be81714c6c80":"83bbb18bdfbe4460a579ffbcf97b0ee8":"6f322bf72d744d5129e49fb3730f872ba039d86a6c4edd3fd9864fb796393f04":"1fbd95f261e45099f8ef7d98a35bb7fa450f01054a681e0772cb3571d5b16430" - -AES-128-XTS Decrypt NIST XTSTestVectors #348 -aes_decrypt_xts:"87714940a51dfc508e5c2723be59d008c7a3ed32e11bcab70aca32440d401f5f":"418195d883d1e24ce90c06eab325a233":"b02c69e084e3be5c7948f82c2010593f4c4a0dbd7c4ebf28419e65f33473c508":"5b2ae9d5a88238b61d09e09b40288ad7e6d04ab48ce733571e2e66d3ac8beab4" - -AES-128-XTS Decrypt NIST XTSTestVectors #349 -aes_decrypt_xts:"91652688ae049f61e742075ab77d16a8b3cb1043c157ef3577c318917130589b":"866f8cf399ec7b0063754f27528b6401":"33466caed9da1f28056d2c81b5757bfe54d2da188e5c88c173541ed1fc4bc377":"e17efdceee7feece1f0f99c36c2d406d0fd321042548b8a8cd47c3085e5e433d" - -AES-128-XTS Decrypt NIST XTSTestVectors #350 -aes_decrypt_xts:"53c6949ac9aa4a6f0a9b8ae3e9f50f95b9e20c72be617f895a4b0a132d7721d0":"0e76cd3d76d5c9f7c284288d51955b30":"781fe9d6554204b6d38fae0b530dbc7ede39269a522761c1716586b351aaef17":"1de34705906295decf89033d95efb51b97bb94e1ccf4bd71d0554f7695275246" - -AES-128-XTS Decrypt NIST XTSTestVectors #351 -aes_decrypt_xts:"c9992ce98071a5fe5a8aa6d101c9cb18ea7b1ffd00bc65f8bea7bc8e08e7da03":"6786eacd8ff954fd9c74e9213b008b20":"2c1c50c872a16f3b51550e873677baaa08e90431f4f3e6d0cc880da0f8244023":"5d599e3957bf95ed6a10fe8a5a585fd6e1fa8927a3639227ee4724ae68ca7b1e" - -AES-128-XTS Decrypt NIST XTSTestVectors #352 -aes_decrypt_xts:"cbb0c1897390f727303e3dc7feefd17c5e343462c5456621e2872184d92d78be":"72d9e2221335cb6931c77c08f9cea626":"e2ddecc1f7017b2119cfc26ba20fb4ab0d31e15875ee2bb9b0b3e627d8a5a3fc":"076362c7f5293e9e8f4212dfeadfdd5fd4b43470c402910a441e8e5968466a4b" - -AES-128-XTS Decrypt NIST XTSTestVectors #353 -aes_decrypt_xts:"ae85c9237affebe65fb88cdd983790b192841787b5f7536d3f2777ee7b9adf01":"c89db2c8618149795f19b7a41f7486bd":"873cbc71d5070307a5f93647ace4eaf11fdf827a356eacf97a457f5e5339275f":"73561f50172cf7491dbf7e579902207831b7b4a03ef88a83597c73fc4868eccd" - -AES-128-XTS Decrypt NIST XTSTestVectors #354 -aes_decrypt_xts:"9c18fd6d4b35ad0b179481d309f1cbd0d031f48ba84697165f2bd9dca5b83677":"7284d5171876b6b71208da30ce7be015":"faded1d057e3adfbe6861203f76244c73dde51966520a9071615ff63398404f1":"0f1d8de33215292638728374e640f0a39a171721d4f1800b79caaae923af80ff" - -AES-128-XTS Decrypt NIST XTSTestVectors #355 -aes_decrypt_xts:"12091a52ac1370306733e58ec42414277e7838dd16184450475a6cc44a6e84ac":"7c2952c9eb9ca4546bfd2d1276f985d4":"06529577d8124b46264ccc8cdf57abb8cb9735325addfb6433bc684623f37c51":"7ebf723a6bebddbabd9de7156f3421258edb9ca56e4027b37c95f5b94a98593e" - -AES-128-XTS Decrypt NIST XTSTestVectors #356 -aes_decrypt_xts:"0d3c118c025bed7f73ead51ce8a233dab59bfbc916d078a20c8f768b054defbb":"28055b960de478c8c746aabe2de0d962":"b46df5bf50a48f516951478a9611dc695696c82df8ba7c5781610f70c271865e":"e9be27b10c707e794e8f8d0b74c5ddb07c77571bd3e1d9592e8ec7ffbb186444" - -AES-128-XTS Decrypt NIST XTSTestVectors #357 -aes_decrypt_xts:"e1f01bc45ad87717d89bbfde155daa3edd8f66793ae205cb79f6abc58f90e418":"2f2831d0fd731918bde6cb0f35697e16":"0e67b5a5278333b22b8390bbeafb90b4fb4983ea4f7090eb2e8eca46d4ccf60d":"994af737b1d3076e6dfc4cee6f19779bafc7d49b542434a5421c8ec9a8ad78f9" - -AES-128-XTS Decrypt NIST XTSTestVectors #358 -aes_decrypt_xts:"cb3343bf749ffe1f18291956b22e7f2ee58e7f1b3c351a3361b326ef73d5d263":"ce0b8cba0c9187e8dd1fa4196545d652":"a408fa05f3fa2393123c3fabf797293f806cc1fb83e0dba22720573368766bbe":"7713ec1f804d166903bd0bb722d442148d6f0d1e6afde70c13389f14c6e65475" - -AES-128-XTS Decrypt NIST XTSTestVectors #359 -aes_decrypt_xts:"e2a0ff54179e85a0db18a421f8c60e57db3903c09e476228c1b58ed15ce3fca8":"e6380deab6331db98a8a2ec215d18a8d":"b41d7cd7b6b9bb8def7f88adaa695fe15e9c195d60d4c731b5af57e4330a7168":"f97fb1c1db5e6a75010971d02c458175981daad782d5152f09265b69a2a927dc" - -AES-128-XTS Decrypt NIST XTSTestVectors #360 -aes_decrypt_xts:"bafd1d1699374567b088c3d976315b75161a5738ff537a868a3ffd88016873d3":"a6ccbbd39f0f0f34e0fad7f4599676e4":"74c36e7defa07e87b1974882b6b0f0d70c0081912989dd70de74adf061f5e764":"cb0742e11cbc49a14379c7d34d0f181e52aa56fa3aede870fb307db550cd2815" - -AES-128-XTS Decrypt NIST XTSTestVectors #361 -aes_decrypt_xts:"9cc06d592c3df53097ffcd7555d4f28dec1b56e4d6bd70cbea85406ebe877df0":"e38a80e571e00ccdb2284e8ccf56b95e":"f29e94e342409f1983f4e64c8f7df5865d1ce9e28f11741670791daac091c51d":"6a02db704dd93739c0a536f18f9acc134815aec32f5d0d8c2dfed1968afa1dd5" - -AES-128-XTS Decrypt NIST XTSTestVectors #362 -aes_decrypt_xts:"c4799556edf5231e46f648182b3866e9257cd166100131a0796b4c204c96aa15":"e1cbea55948c7ccb0d519105c3a99eb2":"cd536bf78fd34c812a243f14e7757ac2a96be4c526f1f84dd306ae4397e6ee0d":"142979ca70e1725322af4522ca85a0158a572cb386d25a8022692b7ce1b74bac" - -AES-128-XTS Decrypt NIST XTSTestVectors #363 -aes_decrypt_xts:"1a67439eb05bef086b57dff8f79a09cbac982daafa8f697d250c5affc43f4466":"6ce3038d2ff7bdbda247c8364bc921e5":"08bf472a3211f7d8c46133eb9c087f17cde9348360d63e2a8ec950193691ba67":"33f2f5c1ceeebe603aaea4640bcc0b4d499c46458d6babf5d21740890fd08944" - -AES-128-XTS Decrypt NIST XTSTestVectors #364 -aes_decrypt_xts:"bd63a67180a025aac25c7381eab4d677a59b6c223dc8568847179dcb491693df":"ded07cf030ddd235ef7182032fe74d4b":"16ca766a9b913f569e47de8c0360c22289997c4ab79adb263d546c2f2df0ae75":"ec7d3b092571c305c69c81c84040c5fcf3b079b05c3eabde9d2347c5b692371a" - -AES-128-XTS Decrypt NIST XTSTestVectors #365 -aes_decrypt_xts:"a73faf2a968bc08745988a54c94649ccb149de0e522e316a0b046bed453dd5cf":"d50c76e0b7323b4ee4b945a0d8cd4b50":"c31649e09f3501ccf9ea6d9e4898ff4c1d5411a6a091cadc96a08381583ec0a3":"117ef241a43842ab8aec2225cdb76aa54cee1ae793395d28fa56f59784bad4f1" - -AES-128-XTS Decrypt NIST XTSTestVectors #366 -aes_decrypt_xts:"b02435ad97ba36ea88553832e76bc2fca754b9869fb5139115ffbc02eb57f283":"d4d79513039a96bad06fa8a7531ecda3":"a56694cb3b80238fa8284548af9108d769e7a3f3dbaab0047498c9e8c056f60c":"2448134e49bdef622863b276ad08d36e153bbce1c5ac686de0f63ef84c0133ed" - -AES-128-XTS Decrypt NIST XTSTestVectors #367 -aes_decrypt_xts:"1dc83690aaf430466ce0b1da4b1a7c45dbb69870c2006620b52c7ae90d56caab":"9cbd4befc3beb8f962825785a288ba84":"bf2673c9d653dcbd55f67ec2d3c4088a442ff5d50765809a204039f3eed8bad7":"d4fc14d75960cfbd10ae1cb173dd9f3369c960841a988c9b2a5c07ea75b7c61f" - -AES-128-XTS Decrypt NIST XTSTestVectors #368 -aes_decrypt_xts:"0bde61a25c97127188fc41bc2fe134ea904c48b2c350f95a7524d22b5ced1a1a":"3e643c2594c8d96ece8bca2eb8e12a97":"f5dc9afcaefe387c3d162d02baac1e8da69fe216a72c16b7b174823a32bf9161":"d0ab934b523510d26c1191a74a7bc4a0ca4d02aba7d17eaefc07e42aacc75320" - -AES-128-XTS Decrypt NIST XTSTestVectors #369 -aes_decrypt_xts:"8c8a18eb06c5a67af28d7c935414324264a952bad195c8281d7c5af2a42f3bc1":"57ed5750b97f1319494d38b162db5a90":"11283c9262d5e214db2f29c16b5cd0256822ca94c81d9be5c033c6d2af2aad84":"ade82aeccf5cff68500b20a0536fcc3e447d4c843af16a4edd6e3dd49bb8fc22" - -AES-128-XTS Decrypt NIST XTSTestVectors #370 -aes_decrypt_xts:"787d59d0aa52855175b4e855ef72ea331d79e19fe3fa8d4bd8ba2c0b8a47344d":"b41428766d9500001ad3439f823b4120":"e4a1aeeb8f2e858b030d2497e088f90c024c9d820c32865767e4950c20d906e4":"7accb5b292a61f150e5c2e83878819d7d3fecf8dd1be6c7eae42aa0602bb1a34" - -AES-128-XTS Decrypt NIST XTSTestVectors #371 -aes_decrypt_xts:"00279a16174d2a2f34388a9e685cf0c79495ab57ed7c6f33daa17737d87e5da0":"cfdeb1dd875df263c678b21ee2382af2":"c922eadec16521678dc512f899b92a169db8b514fbd3cf01429786f54afaaf5d":"49bec7e76920b8a2a2c075aab356986c84694f696d5a07bd781e605f00405bd6" - -AES-128-XTS Decrypt NIST XTSTestVectors #372 -aes_decrypt_xts:"0cdb4da72e0c99cab4d8203c48f74fec6441cff020770ffe3eeb9139406e294c":"0570d4fd8d2536b58fdbeffc49d63c60":"ddb6d4c3b620bd22e0b7b52df47cdecb1818028cd46e0283fb82546a095c4277":"1038412a0a44c3be99fb4c19c257225d27f6f33266f87dc801a24ca6b872fe41" - -AES-128-XTS Decrypt NIST XTSTestVectors #373 -aes_decrypt_xts:"85e008ce75b9043a2067926bfeb636cde90190092aef04c19b3f0091839ee974":"1185bff86b66e0effa7d28447faf2d51":"a36027595ac1007c486fa7353d7f6aa2dac36fcd3c08fb32bd5e728662ec2bd9":"5adb6228a0e5b177be828b4f9cc9ca2e1b5741e5328b6134da081fc6ee0d3d4f" - -AES-128-XTS Decrypt NIST XTSTestVectors #374 -aes_decrypt_xts:"e1d13a25254f0258b77de256b332836762f36ea9bc5b953f7ceea89e3bf369d1":"39601d5e218d7f5f3ce7fc45f0576f3d":"1b0fe2a567f562289739e298a912415a1021ddf32327845968f5363f7fe74135":"d4330525cc897ec4d6fa57c73a0281f9f913b795943ca618d9327af4ef9663ee" - -AES-128-XTS Decrypt NIST XTSTestVectors #375 -aes_decrypt_xts:"a6b53928364abd3e572f534cb50e7c3eb87a5602e1cfdabb594537b807b41854":"11a91ce83d324a10377f70ac375f01df":"867d46a73970c7c9cacca63554c859b643d6266aebc1f91d674ed739fd2d4cf5":"1e438f84d789e14acfee3031c8f42c03245f661589523688e6816a219a4af3b4" - -AES-128-XTS Decrypt NIST XTSTestVectors #376 -aes_decrypt_xts:"8314a8b33cdeb89cebc298d3051ca8b7f9f7436767faa195fcbfef26341d4e79":"aaf0d6b19c4e42a98cc884709981d08b":"28b40e90b54c8fabada1d0ad5d080403893f41a1753be6157c154bce7c1894d1":"8c0db63bbd4260b2ba8b016342b3a357729782410249f5f0265c60cec61abfd6" - -AES-128-XTS Decrypt NIST XTSTestVectors #377 -aes_decrypt_xts:"dc907cbd963b7a71e4e4f9770836b5dca005c8850df035b3db8396d373f49edc":"6d9b0fce7d9c3a9c6417cc667ded9011":"663d633824e9de4558a3f264c760a9eee6041e19c194ff8df3fee4d4f800add7":"6fbabab7b668b20b2fd1efe4a26731c91bdfbc0e58b38ad296d68e7ad951ab9c" - -AES-128-XTS Decrypt NIST XTSTestVectors #378 -aes_decrypt_xts:"71487f76a3dd10fddaa548e8b0400884d47e121de4c801c184378d2aed6dce2b":"48346e22e34f56cb47e84e5df1c490a8":"c90c05133a3c9890c332fb2af5e9e23b2af662cd6c17f42ea6fcf9146272ee03":"4158b9b122db41c9620d5c8b50fe0f813079062f6853467e5f755e6ba929b6b8" - -AES-128-XTS Decrypt NIST XTSTestVectors #379 -aes_decrypt_xts:"00eb1bd469c875764fea1be87f1b8fc6fef10238d07268cc3eff5bab5425884c":"2454b18d3a4d160c4bd4a0855a3238f6":"eb3d61b6fe4241d426fdaae384ccd051acf37482e25127648fdb5e27fe9a8cdc":"541f41348830e753941faeed1eed942173bff4dd94155e1caf7ad8fcc2378338" - -AES-128-XTS Decrypt NIST XTSTestVectors #380 -aes_decrypt_xts:"79d44277ee9d9cf75b5a6b5b4de2b40f37f9dc69737569b50c6970a57e25150e":"5c6535b125d12dbcee401f77239d6c38":"a6ca823cb5cdd24899990345cb57620839ae99c9bca2eb837b3f8d5ceac9d6d7":"7e1da418e5ff44ebe18656fc571b57617f691246b8674d0b06b0d25757d8d7d1" - -AES-128-XTS Decrypt NIST XTSTestVectors #381 -aes_decrypt_xts:"3bb824a605eb8a86c76dd1feec687dfa762d8ceed8d8f755554791ee72a1fad7":"d33b97c43280bef9ee27644c5fc91978":"107676291b7f5319fdd896fd2db60a1f8e2bf7da1253772d4c8b46e30235b7de":"7d73007f3339720fe1e72c4c2e59d85a15183598c5917f2a4495bd9b2edd5e0c" - -AES-128-XTS Decrypt NIST XTSTestVectors #382 -aes_decrypt_xts:"c07f4ef1097cdfc08040f923b4965751bd1fdcab7f758144f65c9cbb4241c782":"6c90e57c767eab9f747eb80862ea0e0e":"b0b126ea7f1dbac06c958dafd46cebfc7c6112de15408343acee9187946bc9a7":"61ced0098f961bae4d3da74924f21c1146d274690b8a8ff7d5a4efc3ebd366b0" - -AES-128-XTS Decrypt NIST XTSTestVectors #383 -aes_decrypt_xts:"7c41879bc721d95f30d1049579d4a4c547d755ea5bbc56ad0635ba6f2ae9d8db":"ee12a5598d2c28e321c4d4a21303909b":"d3c6411320788fd6469e797a536b3f2c202e27b82b21233548a94bd06ce70aff":"17649c6bef80a487fc36849d251f4eb88d83232418554f282f2891bd5fbc254e" - -AES-128-XTS Decrypt NIST XTSTestVectors #384 -aes_decrypt_xts:"9f8f6a66cc635762ab9f4ec6da604622ca44c74637a3d85e218a59851221fcd0":"690773e098b7baebf9a23a49f294433e":"4029deb520eab15dea3a3f780da94370985ab909e2f44945c5bde012316e1cdc":"26fc5d9eaf3fe07fa121b21b8151cefcf8b6511cc5cdc20ae6d2c1f76f90990b" - -AES-128-XTS Decrypt NIST XTSTestVectors #385 -aes_decrypt_xts:"2b114d9eaed8c00f40aa000a751399b8de580b4674f3fdb574c180fc7e38ed31":"f5ddfe7d66dab52b9f52a535c65ae324":"1bc41d7f8e5006f04367fee164d975a7ace77b784ef5a0db8a31bca05bf6cc88":"aacf2ba4b02dcafda31435fc9a01d923d229914adb4792040edffe2237fa3e18" - -AES-128-XTS Decrypt NIST XTSTestVectors #386 -aes_decrypt_xts:"4073c003c7fd558b2627c9d091db851316d743b9191ba970053347570fa2bba0":"2d8bd1e6815b89c53ebd31c3983d3ff4":"43e07ff6fe1b25dcac7d0c25db07069727ecf412090a6a687b097591161784ab":"84db0592c3aef2fa2517f3bbcc4f40e9f1f80440440dec268703bd41581bdf1a" - -AES-128-XTS Decrypt NIST XTSTestVectors #387 -aes_decrypt_xts:"bfdaebb9887023d389c9043d3a37093ac388b71d2558dd2f28b65f08d62109cb":"ee362d96dead9152fc2684642ed88156":"efca2d3e289765a8a5ba7a8616f0fc124dc3e024c203c8d2c8d8e77b5073d0bf":"cdbe35d4bbfcbf06cfefb140be149a8b482f3ed56c76c056a2f9e7c33731fd64" - -AES-128-XTS Decrypt NIST XTSTestVectors #388 -aes_decrypt_xts:"394deb252b4882ae847413a047bf2be029c575778fbf1f162d2ee2a6950bf105":"39534857872fb95bcf2336070304ebf5":"73f71c5b72dda8afb914079ebea2748612f13eba8ff3c1a10ae9617ea1fc0438":"2b08d7663653b0c80a29ec443a95841c934f3d0fe665e520eea286d9f80a6aef" - -AES-128-XTS Decrypt NIST XTSTestVectors #389 -aes_decrypt_xts:"e96f5bb437001fe24ea61edb54c58f0cffe9262a6acf104af6b6ab579f7c9353":"7ea8d01b594f823a53c2138ad1379f75":"9b864118d8cbb95c2be722d886e0ceee810e1b50600dff1f9502836231f9f85d":"46bbf8de6f76f77e382ebb9efe21f81da5d41393a8e8eaa3f6885124a8617952" - -AES-128-XTS Decrypt NIST XTSTestVectors #390 -aes_decrypt_xts:"d1429d81ef1084f7e8974a070fb51deafe0884623132b6e13d3e0e0a93b666e3":"b322e8436967ebb311fb5961abcc98dd":"ccbff83fe441e52dcc54795aa4f78ab871784b9a7b8482635d45498231bf6052":"f0b0cf67462fe53ff2ed316d654236f1e90f5c986b302d4f96cb3e8bc53b4c4d" - -AES-128-XTS Decrypt NIST XTSTestVectors #391 -aes_decrypt_xts:"1c20022a80e97cc386e1c271703f92702ee8df21489fdc410ff612d67c9d9d1e":"e4b6cc44c051ec114bc33ee7eb12a0cc":"6d400c0b880c35ac29e512da89920cbe83bbbd75a66286f58ae24b375867c83d":"f53326a16c1cb4a0ca9d46a50727f1c45f5fa0dee61f2cd490c17df9f97c6720" - -AES-128-XTS Decrypt NIST XTSTestVectors #392 -aes_decrypt_xts:"7f2c1902bdda3df699415f6a9fb2194a186b93a99418bd9945c1ca6b356025ec":"0cb85a0d33c6b8e0c19b8c2152aa0038":"586d9a1078f0acf4af3613c510c86b02236ec86d39621b6f7d605fac8fdc35d2":"943b05e29e87abec1d51e55e5f53c5a1028f4e5135ad918aced43ee60695ef7c" - -AES-128-XTS Decrypt NIST XTSTestVectors #393 -aes_decrypt_xts:"6cd680b77d3244514fa31c3a9bb7708c45d06f44b45715dc2ed7c74c70cecc04":"7819b600b9ca2a3a729b125b662c0153":"b98b68f396d353d1011795292153d53ad03d34b4b23595e11bb46cab7f40fce1":"2bd2c3076218f852657cdec00c1717c5333e4b6ff33f2bcd24ffca33adfe8c0d" - -AES-128-XTS Decrypt NIST XTSTestVectors #394 -aes_decrypt_xts:"8eaa33fb8f4dbf3f6b3c9d360bdffb6bbc48f3b396028f122d07dcb50f908932":"0435f9629b440cd757c26c2c5d6c572a":"7d145149f88496cc0b1c1970fd3b9c6a4d2c3d50dc9b6b521168448043fb0085":"5278b57d46e346edabb92e9c13624bb9a69fbd138a31b7b7c5d67f912322eb39" - -AES-128-XTS Decrypt NIST XTSTestVectors #395 -aes_decrypt_xts:"38bb05b111bf219754145a63ec43996f2532fe9d82d809ce40bd5f1177875782":"cb385e13c3aed72da623ed717ea5c1d8":"28ecab53a5d8e7447912afb5f99d026cc5f3a1b9e84123ebd7796f7bccf84d81":"c9dd00a2ac68dc3e61d5dc51deedeabf56b577dd245803d566c0c966d53ba998" - -AES-128-XTS Decrypt NIST XTSTestVectors #396 -aes_decrypt_xts:"fd53c1ba88b85452c34d92d1cbaaada133431bc6d8d658dc860f88d527590d9f":"22f3feabf8f5ab7a6ba30b4c48454cdb":"c3793e7374ab0f7b16fe334be05c64c7a9217dc7eb24f5700567e3207f2c5b54":"1f38db440c4bc5cd866c29f68f5b9374dce3ca32a5fd271cd7ab413770c181ea" - -AES-128-XTS Decrypt NIST XTSTestVectors #397 -aes_decrypt_xts:"16d678acc1010c87fe104abf88ef4ec981937803eb85046178f45d3a9bf3ffe6":"b5d625b02f05b7c0670859a8f71df5f0":"77bd794269808f22a150d75fa0c42a9a2887aefd88ccadec38757f71b9c334b7":"c7c1545a772e196cd6953c410656ea4a48be54a41b07456c1c8917d81ca1b830" - -AES-128-XTS Decrypt NIST XTSTestVectors #398 -aes_decrypt_xts:"1c30bee1ed70b77a87131e46308975bfa27a1ecba8a07c286b11ee292e5f4371":"6ff7bcf33b6ff77b116610fd39f4f6ae":"c6dcafbdbfd7f71b029b9240ce57d63495ba68c1c3131e6eb10d09cb5a1fcb5e":"bb9ddcf417afc25702cc533952c65fd8fdb7ec85e7d3b407f851b51e5dc9a4fb" - -AES-128-XTS Decrypt NIST XTSTestVectors #399 -aes_decrypt_xts:"a4ba40d98b8397e525eb7681f5c545da432619e23a067421171d951ed018d10e":"ddbfcc25e21ad7bdf66a1b3513a03018":"2d93fe17fcd51ef19c4a0489f772f1ab91921b261a301751f10df819f65df8e8":"e33c52514cd30153cef8d9636519a9c348170182e2a6478dd4887a8d536f0f45" - -AES-128-XTS Decrypt NIST XTSTestVectors #400 -aes_decrypt_xts:"bf14b298e9c72ca73676915a80fa2fac4fe2b56ebc4df57e3028fd4a41ac9e1c":"5e49263efac5451ee395083c25de2c13":"401efe5c41cea23da0d33caa946b916c88ad99d65fb8238047597b94bcdb88b7":"63a98f178be85688a8a5ce00b25bf08a972d34ece95c6947260e6e44fdbaa357" - -AES-256-XTS Encrypt NIST XTSTestVectors #1 -aes_encrypt_xts:"1ea661c58d943a0e4801e42f4b0947149e7f9f8e3e68d0c7505210bd311a0e7cd6e13ffdf2418d8d1911c004cda58da3d619b7e2b9141e58318eea392cf41b08":"adf8d92627464ad2f0428e84a9f87564":"2eedea52cd8215e1acc647e810bbc3642e87287f8d2e57e36c0a24fbc12a202e":"cbaad0e2f6cea3f50b37f934d46a9b130b9d54f07e34f36af793e86f73c6d7db" - -AES-256-XTS Encrypt NIST XTSTestVectors #2 -aes_encrypt_xts:"e149be00177d76b7c1d85bcbb6b5054ee10b9f51cd73f59e0840628b9e7d854e2e1c0ab0537186a2a7c314bbc5eb23b6876a26bcdbf9e6b758d1cae053c2f278":"0ea18818fab95289b1caab4e61349501":"f5f101d8e3a7681b1ddb21bd2826b24e32990bca49b39291b5369a9bca277d75":"5bf2479393cc673306fbb15e72600598e33d4d8a470727ce098730fd80afa959" - -AES-256-XTS Encrypt NIST XTSTestVectors #3 -aes_encrypt_xts:"522499839449864b0f59ac861b0b8923a1e4e204f8a255febb9ef0a8078942e8ab26a30a3bd6d14fd291efaeacd088169a6bb1218f3ffe9a482a439d2ef78628":"04782cd3c9161fd2eaa9e911c23af4c8":"1614c98391c1dece1a3d165af0101c872a31730c407b07a2bc97f8c8741e7fcb":"4d8ee472b5c9367b364cf284738ef5b490f4c131a4badc316a175f3d55d28711" - -AES-256-XTS Encrypt NIST XTSTestVectors #4 -aes_encrypt_xts:"67c2e3a5b02881d7370320d6c04a0a138370dae588bf09a0cb2595167150572ff4b3bda91e64c6ede62375e8dd47a2951d65464ca48346047044d970ff45f480":"a1f908be560286b9bdd0a7f405abd4bc":"42b564650ec0a34eac69dc17fb69f46c2cecaa5588557ece634711ba76d55da0":"bcf08b6bf20e6961d8b7348f8fced7f9ea51e15902671bab1a366de1f72c1726" - -AES-256-XTS Encrypt NIST XTSTestVectors #5 -aes_encrypt_xts:"5ec416c58f2b5a78c4f658da055bc00f359c685b9f6de6ffa56f86d95086844f11b58338d318ddc8ed7ff65c31b7dce448df81271877d2616f36b29a6fcba9aa":"38d7db2d700d0adaf20bf5c2e84568ab":"db34b3fa9914903f5184040f1143078f124db769fe830b89d253c73423da50ea":"998f9e21fe8f2a848b8b778ecd254bd2113969e13bf7587fc98fa8d7ebc2e2a4" - -AES-256-XTS Encrypt NIST XTSTestVectors #6 -aes_encrypt_xts:"b5b96b90e36b35eccb718b14c7a749f31fd99ae1ec1ed3a52f99d4a3beeb6f20ca2723d5bb005386b79e1c4e23f6b5f81fb450b2ba92a5844280d3d91aee4a56":"9a063653a0d7a67bca5d2e47aca24ac9":"beb295f510ca61db0cedd1d0e9f75827970657f9873e0ec010b573d3d85ea586":"b7d44012a1a4459a6ec604633f74c7a76b62032fe6a2727cdf8d3578c189e541" - -AES-256-XTS Encrypt NIST XTSTestVectors #7 -aes_encrypt_xts:"cb87196e188698698a058c98e855aff5cfbae00a4c51e913f0c9e4a57d5ab416228757d08414b1178852eb4d47172de6ac0bf7d5f16dbb535606e8b212ab49d9":"225592557e2f60e8916056ee71091984":"e5d3ca08ff68cb54a0a5b8480747823042ced6c03280d968ed3f66c958d971ec":"d456c0ff4000c5dcb884eadfa8d4d13895c488f5188211df77b31ee087c8bdbe" - -AES-256-XTS Encrypt NIST XTSTestVectors #8 -aes_encrypt_xts:"143b1de8a633fb40893a0d5a88334bdbf89bcbe6237b984688bba1528a8e4b1c58aa7615be268a157cf352f0a6c4cfcafa1fd58950d7398f3cbb83a71ddff17d":"b17e857e9b101282a8bc32538b9dc632":"6cd912f55687e9223036801c200a5573f563075ef452f5681f489c19cfcdb4da":"8b4336e87d1934bb3531f9261c9b6aae8e1ce3017e8c948350daadf4d2a84e99" - -AES-256-XTS Encrypt NIST XTSTestVectors #9 -aes_encrypt_xts:"092230dd7d1d6f3f83ab04ccd46b1311cea25c7e2b503839c7e5535a0148b6dbfdddf6777708265aae0e72b47658a45310139ee0b1185f98c8b8a5c187d5fa69":"17e6ba1c70f77074ff1d567b52f6bdad":"9c3ba625a21f8f5583884b56d4d1a2e1e65fccd03f65d6caa5507b71b10ae0c3":"5e987275d6ea7c36593c5eab78a74e38504ee47bfef4fe6184285a2e625619fe" - -AES-256-XTS Encrypt NIST XTSTestVectors #10 -aes_encrypt_xts:"5d4240766e71216ab73da19ea88027488759c3c83aad8223bcb60ad5559f913d1fa858154fbb8217c04ca352b22e492cf9ea81d1a87838125c90a1340d04f8cf":"08496af5e9e51e06e562ad121ed422e4":"ab5ead893b99dc72e927c82edf40c3e9617c6789d9d488d63a91ed7d37892eba":"a8fb3a8bb9c1158d08610636137db4bc2adf2907291e965efe91e5b804c2f3f8" - -AES-256-XTS Encrypt NIST XTSTestVectors #11 -aes_encrypt_xts:"6c20526385c785ae857a24754875f753911b1ecf189643de9b5c41a7e7213b721d1b063d363821a0f1f2e42166d1fbfbf7d17396b289d6012a531577365672b9":"eba311569feff984eae41209b495c298":"ebe077dcfad6a39023a976a6f5a69b251191e9096efa4e4d9e0d8a8f3bd877c6":"fa1d194b88f488be2a6bab15ad9bf40a7150971d6ac9503fab58ea86b714a2c0" - -AES-256-XTS Encrypt NIST XTSTestVectors #12 -aes_encrypt_xts:"b265b9c31b388b7f12c810f23a38ec48443fb1ec52f2c1147e58481735a30cf1a690d7be6558ee22d8346a1e9420b0b3326b3c494f607531bf9e1700a3f972fc":"2cca7a1da2e92063e2f87ae92c460868":"d6ab662f11675bebbaaf100e16d32aaa8f12e240a7a3d261267daa04574b969a":"d1203e2b1aa9d9bd08e22fb4c25080e7f85f35ca839013d964821c0a02429a6e" - -AES-256-XTS Encrypt NIST XTSTestVectors #13 -aes_encrypt_xts:"cf16b47b4b32bd038dab1d4bdbf86b7b797bc9ca2f7b9bb18415fef781c3a214e6f1863bb37414ba12559d8c0b603b376a4f88d0ea5c49e8bab005a42799c545":"ce328a5b1f000b36353723418eac4a0b":"0b4b0609d9521b9ab96b0bb566378a2163f940d61230bccfb27d7f9e185b4022":"e3881ad60a6b1b71bffc3aa60853951740ee52bfff75940031cd2eece1ddf6f8" - -AES-256-XTS Encrypt NIST XTSTestVectors #14 -aes_encrypt_xts:"b21f22b98004f3579e3a7b4a8a72503543faa0a5a5cfcc09fe449e3d76f668a2539bafdb0cf1c002d6df3ebf3e6b7ef176d3c564f84beacb38c5dc2566667c19":"f747278e3fec0e192d308f56111d0d08":"2d8f720c3ea91684784e52bcba169a6a081a1eee78f68a83049114b5352a6635":"bff5cee0f2cc3e52bb3c3bb67c663c5c1020fe3b1083b0b1ee8c718f7b5ecc47" - -AES-256-XTS Encrypt NIST XTSTestVectors #15 -aes_encrypt_xts:"7d797b11bb16634625ed5e1ea909cd2c6c3d2f6b86db5f974d772f04df86972330323a54bbb105c7c0801207439a2e89b73d48cc5c0cb7938a192ee59b8c7547":"a3e1477d3b0886eddfe8934f111a2449":"63ebae85895f3440c19b563e25f6673f1a519b87ec8d8f80d4afd0dfa5c4d3d3":"60977934efa61e51b171cddede3358fd53b6fc13483a690820a484a7ec33c2a8" - -AES-256-XTS Encrypt NIST XTSTestVectors #16 -aes_encrypt_xts:"8a055b91c8a099f7a033812ce74b2b2228de2492e94572b5722737581769e7407a309743866da1c0a162894e13c133ed33d0ce3fa1c385310b3c7ac4dd4cdbc1":"898d5d82fef50c536f483632201948a7":"45e092e64bf2928194f7a69bfa2503509bb3c6d99f71fb49c700500c5cbf9d20":"2792d9481a3454274283c843e936e835f9fa44239355168d4faecdf70904b758" - -AES-256-XTS Encrypt NIST XTSTestVectors #17 -aes_encrypt_xts:"513df3b4470f38aed86ab22cd33732eb02d86358f0e76d375ae94848587c0fdd473a06cad5bda8a3796f636f884f1b9bd0c36497f06998835b5b21ad0d53ebf7":"bdc61c3eaa3b825abb585f7938d003d6":"64235b353e43c69fa42c8c4936a11bb931d71432bc49d473d34100e21027c722":"db2db7fdc072101a97ed1f758848eff49d08896fbd657a10cbd0d3299cdeb03c" - -AES-256-XTS Encrypt NIST XTSTestVectors #18 -aes_encrypt_xts:"e4cc481edbfe800ec4e1e525598567eed861e553ce5c92efdd84d69861e09baa72309c0d0549a92e120785cb43a4937acbd303f6197b26f24b16d0911f70a313":"5c006140b8ac3f9738af2fd3ea6f3721":"8df44a74c0205222addd30eab2c7d2fc71ec07ad12932bf0854fe0502a642183":"0eb309335399b2006b832bbc7356fd88af0abcea6864f6b41193dffeca4a7f15" - -AES-256-XTS Encrypt NIST XTSTestVectors #19 -aes_encrypt_xts:"04e45520f663ec8230a3226da247580129ab927cf80fd8f656a1f13424e98ba39c57bf3e4c172c8c21bf6c60a01d05360a306d6f803d5f2377fe67447b869f5c":"652ccd3927cd5a845ecbce9150a87127":"8658f2b13a49b7150a52280c9e98bad19ca1ac0ef2bc3e0244254d8a0a8f4215":"b0cdf23aed707762e73a9262eb168487873be8a4ce990208e0a67b922b8e3712" - -AES-256-XTS Encrypt NIST XTSTestVectors #20 -aes_encrypt_xts:"c9032290ea6c1b8fe8448fdb6e7e48ef0d81c1a0bc84a9052e40807e515733ed93e55838a88ff1c78509c62afb26d52a8ff687846601b0930771e6df1d1f3c4d":"30ffaecc5c0843078b13d370d912ede9":"a02ffe56131167a1b12136f04bb71786aade3b06adf578fd8d998e39a9846c12":"5ab207394fc7a0728a2c683a880d4daee8c20553d91722816a76340e2b4e6662" - -AES-256-XTS Encrypt NIST XTSTestVectors #21 -aes_encrypt_xts:"28b09f8b53adcdff4db75dcc254e1f4f19212c26d7348a3e3e0f26aeac1f954a7ec89e55bfae931cddc378821e282b52ee44f39b9501d5658d5a9be89cae2067":"07160761f37f37839402890cbc189aeb":"b56df24e2796624ef75f74f6b7ac4dec4ed4f0aefb836dda2ab9b4e58d7e342e":"f3e260ae6299ff02f487eec8a73a881bc9769a4efbca446418f9e1fe554d1ab6" - -AES-256-XTS Encrypt NIST XTSTestVectors #22 -aes_encrypt_xts:"756bc77552bd66bfff904634afcda857ef3e9bf274eb2e6e3ced54e62340a540b61ec8071474cbd3277df609cf14b06394046b22dbe8e3e3dc5a50741e0cc5de":"930b1c20ca3907ace49afb3c2bc729ef":"9ad8651834d2d914222c288e720645b33da47e0ff9f3e029debed250cf0a6a77":"870b2995952b36c98f1858586279634b998cb5fb6a7d3efb2e95181828c4c649" - -AES-256-XTS Encrypt NIST XTSTestVectors #23 -aes_encrypt_xts:"c4c78f0c6bbd08da2e3be614bba35081a975b2cf1558b324dd72def3c35b5ccee542c25ea50f83f8b5afebec7a3ccb6922c445d31dc2f524f207bbc48183a99c":"01e1776af79c9f983403fe0232bb67cb":"23a759a8c4935d275d4b02a6b11b47510720fbb9cd2cd5452680d43da7bd0a7c":"58441453991fef424e28add914f67883a6b8e53522aafa6cfec1b5fb09e966e9" - -AES-256-XTS Encrypt NIST XTSTestVectors #24 -aes_encrypt_xts:"49b2658a244059d8bda854ba5e1d03927d413caeaf8adbd95eb4ad4edabeab13b3f51b5ae9c04a4946df2d17b02bb2630318347ed8709df8f98af9ae9a468bd2":"a496a1be3debf774eb8efb36254ed706":"eee5279ec8d959be31b935147261308fde0fb4c4346c50e4f14ea6f2406537ea":"85a9e672ad50c7b509bdc6964593446eb9bd3458205202d3e20519a207e9c1ef" - -AES-256-XTS Encrypt NIST XTSTestVectors #25 -aes_encrypt_xts:"21b5ec3a31be1c36cf353d2794f1e39e77353d4a284ab10590b5a4afbc23fbb447dc85421f739ffa8296d15537f514673746c854c8d4f88c2b9c466eacba061b":"6391ab6f9ddd693422e21e5c2bbf440b":"177bcfe1414a3bfe6a53700da1a3c6fc5b27b29ce042d973099d87bf886f4137":"aba26b842ccc19cb646de66018710e7a95b1f4f87b6bcedba61dd074a3fdef17" - -AES-256-XTS Encrypt NIST XTSTestVectors #26 -aes_encrypt_xts:"9ffc993d37b16d55a399242b973dfc135f2f98dafeceba6e4f9af27431e8f73140edae9b91d7aefc05eb5244bb6520cdb29babc59ec96860006e415d698a076c":"db03e166d130a0517b6e2d1be6909c4e":"c18ac5ffc5226784e6cac442e25cef13417f912b5e1d1d0cb1eddff9bb59e835":"42d07f26b4eb62c99768455ec72bdb696e1cfacadcf28ba0815024cb4c570e64" - -AES-256-XTS Encrypt NIST XTSTestVectors #27 -aes_encrypt_xts:"50c8febdea7ceed2690f73a39af02ac3229f11c9d4d2f19048eeb48dbb26978480781c1dd5952258305383f5b3bca0cca71681574c99d8d15e86eef2ff04d7b3":"b46ed058407cc928d693a0f8221c08ca":"f1377a8b83f1d7562e5eeea291fdf07c1d6e076d061fe100e6cc1a647c8644d8":"989931951f452f96033628d2a44baf1c8a4aeeda0684462efc9689b15235f955" - -AES-256-XTS Encrypt NIST XTSTestVectors #28 -aes_encrypt_xts:"b384d849e3fdd1c0155083a496100caf0937ec08eb6705ec9bf088e6e62e27371b9d4ad50286d3bf660f3aef08f2681785b67ce4483e83b468976ccdeb263768":"f400d14e42d0840f69a2be44913c6fb4":"3ee6e2156e4b0928f85be9a88cb122b873d6c5f0e598bb37acdc744b121f3a0e":"f909c6e723d8cb615a3382e13dece80461a424e62b72517ca3b2898249266d19" - -AES-256-XTS Encrypt NIST XTSTestVectors #29 -aes_encrypt_xts:"c76daaa16c56b73280bf0b0304b94eb3cd5fb2e31bfeaa07e137123eaa97bcdc9d073c84b64191591b12267c85207d346d1f534c648e0d5432b62bc3aac54dbd":"f710627d0cede8763eef34f1a47b12bc":"902ef7c1da3ee9fe4d03340e7b466df16080d2093a268a0a172eb9830880a68a":"ac4bbba090232062b801aeb8ddbbf450e04133505510840abd0c42d6bb089f62" - -AES-256-XTS Encrypt NIST XTSTestVectors #30 -aes_encrypt_xts:"d9dd2f932b39b82c666352b104b15b31f714cde49d9d2e019aa1e73db3818b8eddaf4f47f6f1fc173eec2e0c30674803de8780f945d8005d9fe995785912354b":"dfc989f8d81871a2bfe7839b94dc8a9f":"72660b85b4cb16ed7334404fa39877b62a15ebdee777bd1013df9f6733372b62":"ae4dd2851a8c12efc5a49cfcb7d98f6eb3a8b6d76400aaf53ca6c7fe142a6689" - -AES-256-XTS Encrypt NIST XTSTestVectors #31 -aes_encrypt_xts:"7006a18821fc53955195bbac5dc395bd2e8b6ed72818a98d86c841d83e4c70b9981b67f162dc9b8690b47e11dc2e695afb7d83095f6960b8611b335e2d7dbfd8":"508d50040430f6ef585b84b7afcad76d":"e69061771cad8516d75b5a2cc4893d31d482b6ab8dd59a68f733defdf74d147c":"c5a4607ed7fd6162abb2af66b1213b337a18b4843d81735318ea763d8bab6acc" - -AES-256-XTS Encrypt NIST XTSTestVectors #32 -aes_encrypt_xts:"4870cee046707d197ed4e09c713164cdb5213781a651ac82378a6e0b2958484a43a826cb34ce3fd0b20b5a06bb5a65f381c0db4fc718fae31fd94893f5b7d6d6":"24a0237aa8177cbe218847a84e4dfa90":"f984fee2341c4f1a7eeb85765240c2b104323ecf70f39b150a2ff58c01d63d0b":"df754889084e0f8ffe799d17c481242eb65c6cb5fb0d46a81bb027c2202f3d3d" - -AES-256-XTS Encrypt NIST XTSTestVectors #33 -aes_encrypt_xts:"1352e5045192ee5dcb9509b737a8b392acfe311c2f94ecbee363c8390dd6362df3f13cdfcc9957dfab46393a217d5baa8b2fa94687485353eb5a9bd9e15283c2":"ba04ead5e7311fb6cf37c9e70115c8b5":"1f9cbf00c97ec9d1173da395be86ce366f1e2cdf16bd10f28a86e03b99860046":"64e67521557a7050435f8d0a71a157c971d875cb8d1d4d74a57499477f231328" - -AES-256-XTS Encrypt NIST XTSTestVectors #34 -aes_encrypt_xts:"c4b788a0762a0a3458705883f0a892d6adf705c8cf329cbfbdb53c6304c4dd849838816508c293e8e6d1cffa21df5725b17ef3b89f5a5c7f743b105480548531":"60d6f70a1918596c2d7abb85b68d9b12":"0eb7f0fb2b1dd5035c06658a49af7cba2a7d66ee06b0c194a26af4edff636697":"87845b822bb5f1f8d6b77715165657c2df3a969b40b1df491adf6d6f7cd250be" - -AES-256-XTS Encrypt NIST XTSTestVectors #35 -aes_encrypt_xts:"2241de46a24e36a62fa50a2018ac90c594717c832dbd8d75d69b5f39b5eb9e6167e3be1657b22a18228fba50bea17bc3e40e2a72ad7374e1be92cefe5d541357":"56f92b0fb2b56d649c63dbbd429da28e":"3bccc7324bb8a878f5550edf2351c10a4ca7ceb3e33f8980ecab264f79337b55":"d25a331baba8bf6c5a7d7c915fd032a2a7e751720c2d0961934dadd56c6df8c2" - -AES-256-XTS Encrypt NIST XTSTestVectors #36 -aes_encrypt_xts:"e33936e9010d7a813296d212b9656fbed7a9dc445c496cb0898ce062c3dcf168cc17f7ba253760f45cc379d425c908bd253f78c1755a866e9b3c20e92729cf3a":"a3bfaf71bffcf0da9d4428621a4dd8db":"590e37f827fadb3fee838fe94fbc8673de1f9461ba9572929d600b7331e0da54":"4c996d217ae5aad9709b8b393d8ec9fa858e2a20585092cf0ddc1b72ffa2288c" - -AES-256-XTS Encrypt NIST XTSTestVectors #37 -aes_encrypt_xts:"6213b1bc4a50eb65153f486258550a5eedf4298a773110e3b348a9cd37844f4becd514718370fccdb7b225550bcb39553d1631ef2f210c28cd142cdc452a52fd":"68c03891f08fd8ec549bd82771b5dd57":"fe1a3ec210bb8e9625609a27bb31bdbf5e2d4a9c820b2f6012c0586b211163ad":"9ceb1d7626c135d33cca2aff06caeb8129d44a9db1a2dd1cbc90199f59caee29" - -AES-256-XTS Encrypt NIST XTSTestVectors #38 -aes_encrypt_xts:"3b4e2dd14eb165a0503006c93469d1435b3e3e0bab047d116a71fdebc6509ececd0883ad42ea0db56ac5988fb66519bc2ea0c6d5744f7548184a8290b0da77f4":"65a523921d5a7075b22012e390b67c43":"33df8d8086819128987a105c7359f057fe099fe26f1a58d28e0c88333d5f69e9":"2700042526c540c26946678ee07d6c82e6523032cb210349c7d85c0525f1655b" - -AES-256-XTS Encrypt NIST XTSTestVectors #39 -aes_encrypt_xts:"9aa772f47f53559cea4f4a7d73f0fb6f97a5a460e73b18ecbef1fede288372d2482103210cc16df8d4c1f1b37022ccbabd3d93ce4a95d2c9efcce13d83036afd":"8d142aaae1da29fc59bd6e7fbee260cb":"3598af1b46069c473d1cd87eb2eef25ca5c2a5ac5530a9270af88770a498229e":"7b435eb9227a100049e6256b46141fd14f9b73529a26252cab5147c0fd7b5436" - -AES-256-XTS Encrypt NIST XTSTestVectors #40 -aes_encrypt_xts:"d77104e5756ca260c3c5912439b7f8c81716d5c4a457e24d104ae50b40167a80ff03e0682729d824dfa8c84c794b80303dc9ff0585088ee6532565bec63ad7c2":"e9dc846cef4a2c41b4a020f44c233f47":"c125edd5ff5eaf875cc4b2bba5fb7dc47a2a1dbe5cba38b213372188890f153f":"cada4e269a208e1ee4b3379a4ede5dea049a93fd8e0f5b26069800b0789a0319" - -AES-256-XTS Encrypt NIST XTSTestVectors #41 -aes_encrypt_xts:"4fe410e5f61f858c3b784c5e213ebd112f2d8333cc206ccca8454b28497a2e9057ca0061aa077331772868a82728b4a75f896f286d384f540638af9e7bd9d293":"f8cdcfdebb4a48bb1df1a4701b8ad6a4":"e8a8ec4fd5fb92ee2d0b289b8c3fb674d95575798b85b47ef48a8a4bd33de685":"d6132ba3551914b3e6c5c15064fab84247cb2faf0c4b445f86451271ae7c6cf4" - -AES-256-XTS Encrypt NIST XTSTestVectors #42 -aes_encrypt_xts:"ebb8a03972dcfdb90c55c3002a558f057f2027a9cc2cdabbc2d8bd9710f473d8f21aeaf4ba82b11c372731c5be576ef049ede9cdbad208be07d3ed15dd760940":"0fde23fe8746ed15d0b160c05d0f88c9":"a200dfecd771a9a019caadb4bfbbbec6de631ad5b6ec8f2379ddd39732f601dc":"a08047dbfde7f4724bf9906cae354f10040c6b64951b02564b2808eb430415b8" - -AES-256-XTS Encrypt NIST XTSTestVectors #43 -aes_encrypt_xts:"76ad6a08c3991479dc9ffe3feead0dcadab6633465b0b6697cefc210452dec412eaa749859a9b5d5560026e44d0ef9e24de41df17f1839c5a2f7a7ab88a35775":"e6d02b254009b1f98a6d54f744216eda":"e0bbcf9410691a1fbf7a2724945f214d29a51fad8c2a3e0f22a7effb0562c19f":"0ab10a0a91c3ed9838ffc45eaed5575413e3d839cb5f101c24cb18f00e82a530" - -AES-256-XTS Encrypt NIST XTSTestVectors #44 -aes_encrypt_xts:"601b363028a6e805404752870de68d8cffe554461ff5ecb3aa68d97a31616fa42b0d604029c25e65ce434a09f1ca90e1cf58b92fc8c65bb203ec2ffc960e0af2":"33c6f73a788514f0fba9e29ed3acc0f4":"1ad9633a85b2fe2810e7197ec1293a8b82cf58dc2bef9f8cf43399157b2365ad":"6507d7d6d8f8ff19bfa13261de7f4514624e20b45544e021c6d9bda3e255cf98" - -AES-256-XTS Encrypt NIST XTSTestVectors #45 -aes_encrypt_xts:"75f8bd54f8246f79b89c0784154c853137199d7504c700203193bff20818a1e363ddfb9a6999f81c63dcb6ee0c6a453ff5e563046c31fae501852f688cdd6a2b":"066ab7e7206df6fb3383631c75a90393":"2cad40aa2b61be8a1dabd3901d5d4f861fb034198a4102a7b7a7ac407599c24b":"6caf989c55c27a65bc7f99bc4ae0f5d54178ada004a09efc91809814c01a5dee" - -AES-256-XTS Encrypt NIST XTSTestVectors #46 -aes_encrypt_xts:"37dd7adbb9d548cd66604cd685f62bc6b5d7c316ed8d9158b538901776191e9591314b0d5b82c85f8b241fa4f5e43e015610306dcf6e64fadc90725085b268be":"3c6e70423c165e451ff191329d4c1b41":"36492eabf5f863a8d5f2433094fe8ac077acff0613efc654317d09bad75ba4af":"5621bb68ebd12e7d17e1e07890a995a35fe97cb5056b43e7e1f9edee6373173e" - -AES-256-XTS Encrypt NIST XTSTestVectors #47 -aes_encrypt_xts:"7af1784dc21b17ea18ef31edc133f171bc4d84fc63e76693de6842ee3ae2d73e5288ece073eec5b6975e47d2e6d6e6a8c2f532fd5a7d0ea9c58f5da0d3b04d08":"c9773da09bcdc7a63b3164b8db6b7bd0":"31109a3076f3a2f229d9971767db2e2529d577fd3f6f9108b4372e2c031715d4":"2ec0458586ab8e1c0843d2be81b3490a5a3f478fa932d2e01d34e4355c841866" - -AES-256-XTS Encrypt NIST XTSTestVectors #48 -aes_encrypt_xts:"b91df6121596c9998b14c167cf47bb9640228f3bff3baf6ee616bd735d5508dc9a0f6256f14b6ce438f3a83f895a732873c913e7dde5a1c34ee9c8db8655d1b9":"a314d4a0825127c5d7d6304be27dfd87":"48ab86544c0e8584d70aa1f7334119bab3c811975da93aa8f3e399d563748eaf":"6c634c9805becf8a9cea5bb527f439565ff516538f98d5692149bd995ceda47f" - -AES-256-XTS Encrypt NIST XTSTestVectors #49 -aes_encrypt_xts:"fda65c924b471bcc27dc75b1b39189eb1ed2282baa851e7daf067185d7ddcb65570aa06356ece3451d076ca56da27a6f149a368cfa3d1f10c5499c9d58dc7d63":"6b3d15f86b5b47a972883c8c12d72a06":"364ff6183b8d4e1ae81091e57e55658e0b6784cb88c0ca98e9b12d9b2fdc36e0":"f51c0df01754d4de41c0160060b991164e298a82c15dbcd17c4d144a215e6350" - -AES-256-XTS Encrypt NIST XTSTestVectors #50 -aes_encrypt_xts:"0406cefa3e16325e0b820591b5d45bbf21164b521ded97628835f2d3be7ecca18d1ba0e5d47f10b969420f59c02e731161a2a262b55b5f35f6f8ef365159f50d":"9ab2ef46133b547a8ab880e17000aba1":"cfe237a9399d58034a6ca7f0066a96374235c1659ca7e7fc978a1db2cb30263a":"d2f5bfe75ba30148aaf42b56e264e1827f29b8097f06322d4c7c74bcb2ff540c" - -AES-256-XTS Encrypt NIST XTSTestVectors #51 -aes_encrypt_xts:"bd3e3a102cac0a692e72b5c3529b0fcea279d8588ed3c5fa3018ba672c12cfe07a58cd95e037b55b2d621b6791f4abbc7a5d9a7c112ac7c7871dcbba57c06c87":"5dbfa92072870ae6b02da840f272de16":"39069d88e51c26432ddb0ec8da3af3b53f0f71411e1434e87274f9eb540047b4":"969d42664562fe21c6e158c537493fb154202cd741676747c239749ebf46bb34" - -AES-256-XTS Encrypt NIST XTSTestVectors #52 -aes_encrypt_xts:"c9380aaa1729c64a0b49473dbcf0051bc7ecfbc035dd7508097c6a26638da4fe41a242e1733bafe2cb5b3f49c2019668efba0d1effbad25f6eb3bc00d26ba8ff":"75e7dd791f0be8487ac7b855b5ca7f7f":"f06df3eb3771d11dba468cdf19dc67fd003d55b91dcae2fb30bd56c93aaa96df":"b2c7ac50573ec233a42b39cbba166429e40bd9907be910f2be2f88d306be1683" - -AES-256-XTS Encrypt NIST XTSTestVectors #53 -aes_encrypt_xts:"5e3046ab8f0ec340e04ebfbdede872660dee6f84d852e9ff77db14aac70c3d76fe1e525fad3881ee1b77069a1727eaaf3c4721342704f94ec4b612573f4804f9":"38caff738ecd994061beec2be45a1d05":"a6976bdf2d3d5dda17ef8c63e6bd318ecbfdb46b66452a6a8084ea8666d58404":"d4e5cee54ac9139fd0bc20d9bc1c5635b3f8c7c0731562a9e5c7f952834644c0" - -AES-256-XTS Encrypt NIST XTSTestVectors #54 -aes_encrypt_xts:"a29a75b3000b5511b5acd0e9c227b01186d353f87104d195816a46c68770cbc8106b4ba8978b92f1c72642d61d67a9a5f61657b23af7fdda349b0bace100de6c":"70f92b4e1451b94aeb7e6bd4dbc1cf59":"2429389764ad11293ebcedb89c8d8cc1acc6a0f3b64f684f21bd33cac0e41155":"99fc30d6833fe504ef4cdf5a50693774e7e6608f2c92b8b2c2c10bad4dd5cd13" - -AES-256-XTS Encrypt NIST XTSTestVectors #55 -aes_encrypt_xts:"e6c905acdfeb059cb92ef54b2fa481a4f26cc5a353feedbdfdfbdbe50849c5ce39dc418d2a81f4f5ab288fa15d457958f5edcc0d48a49594a4ea7198a1e8ce10":"6a84176a739eedeaf1429402e19842dd":"d4b4f0f5fe0468be24c07aa5bfc92fd804a4f31c62af687ca86ccf1dc97bd8e1":"636877e35b20da31fb65c1d44c3ce0673c7c3382db58ca90c89b9e4db169a94b" - -AES-256-XTS Encrypt NIST XTSTestVectors #56 -aes_encrypt_xts:"cd013ffee14bc1f6425105e2a6b81596378372ab92a59041af5533fec9e3bc16d4a73298327c10a044458e42a69bcf0dcfaf11e17a159e87768677acb39080af":"e946672d76e091710d8346e3ebe079f3":"c78d93ba03e6ff1b232bc88a9ff86127d18bb8d572a3bf6d40ab655f9d4699f1":"e23851a6bfd895090da16f499123dcf16759219b28f8edeee1aa9ca0ac1fb4a1" - -AES-256-XTS Encrypt NIST XTSTestVectors #57 -aes_encrypt_xts:"fba875b9782e7899889175e6bbab6889145c1b277ee0457cb2f710f27efcaeb172eb552921915453792ab29519b31af9152a8ac592da9dea1d3feb7a1c2a32c8":"a2cf7f40421a813924a692a69ce31c66":"14e02407ffcccaac0326716af04738c1912780c2c0aca49b3d11fef17674a3bb":"0264678282589a6c6af763194ce315abb277831a0f133201d789fff4e870b7b2" - -AES-256-XTS Encrypt NIST XTSTestVectors #58 -aes_encrypt_xts:"270cd3551e4a1259c22043e32c5b60106453701ffb04788f860976aff8363b28970bd30b00eb8ecbe5664b1ba181a6259a4b754591507925c2a5eac0714215ce":"804e27d0a228b0e459d2d4a70d22e7a2":"0f50e4ecb59a167d6de832af706a8ed5da24804d287d707344261a083a091957":"fb9cb8ee4a2a34c1a50d79c1c81e4093c75ddfb9f8a7193975abcc060cdb9e97" - -AES-256-XTS Encrypt NIST XTSTestVectors #59 -aes_encrypt_xts:"ba2046990180efed157e49e20cbaa262336e174f12dd9f94e6787aa3995a6f4969b017dcd0c2f0fa2f1d85376d3fcf91ff5dcf1a46be33e6a6157e9aa66dbf97":"f96bf00f92435b262ad2ef78029b8870":"2aff40f08750fab83524a2e908fde20af678930a07aaf77f55a055abddf69224":"25bbecffaf0699a45793b5166d2fa52b5ab909ae0209eb2ae70726bc9ea43071" - -AES-256-XTS Encrypt NIST XTSTestVectors #60 -aes_encrypt_xts:"bade4d98d950bc1c0f9af6c0449df05955ad9db136fdab98b07f359b3a3781d44ccd04a9bdbf2191099dd74705811c9cbf26173dba5ca9c1c89566f061d0c943":"28b0fe036e623143923e8bbc34588269":"70ccd34838671d1699a89e113edcae8fd312415b6f8fd5d00b02705887822497":"b090dcd79bfc77f1a5ed3470dca309d018c1c82b39832a2e4f355e43a787f643" - -AES-256-XTS Encrypt NIST XTSTestVectors #61 -aes_encrypt_xts:"5eb50987dc582bae4bb46c7a1cae341984380ba28909ebc9a4f20cb992475b167fd81d94ca638003c13986f0095c1ec8eb12e6f060d4e83cff0f8f170ceb96a8":"c1b94b4b6bbd65f75ad8d1aac014fdf0":"64e5ddf733229d639dfc7b86921f2c8bb8dff717bb163a85ff59b915fdf285e3":"3abd4bd1d8436be9cf9d3027b0a7a543db6b2caacd77a41abcbc9a899e42e3fe" - -AES-256-XTS Encrypt NIST XTSTestVectors #62 -aes_encrypt_xts:"d01b40f455522cfc8304119e2e633d6bb2748702045b89a6184b836a9a7cd859d9e7ee1d952a95e1e770b8b96f8f7cbcfa9c411b93227e775d94a5ce778715a0":"3fc644cbec9af3212f491849b6e01088":"492cc94ccea28122c78a14a9f774e5e4d773b36b00eeda944a56aafc80dad414":"26a59c5bd693033fcdd97106ecdf63d8488411d437416f221651d68ffe278e99" - -AES-256-XTS Encrypt NIST XTSTestVectors #63 -aes_encrypt_xts:"fff7bf050b3da1ab92b48eee92d9e7d7a178e47b021260e84df3572c71d3523d34e1bc45e6ff8982a61e528c0d56f8f98e60a07ea76429eeadbb5fd3561ae801":"49870da1189bf3d1a143460db2af1a3e":"68b91b3b495be17a600e81c188dc1f1dfd53e30db2f3ffb1f17acb600c9de877":"0d9ab80875b2b64d2f8987f5d9afc7387f3bf028bafb967b6d8bf619f2618529" - -AES-256-XTS Encrypt NIST XTSTestVectors #64 -aes_encrypt_xts:"c04f15a5d33c2fcb78264756a55c882dac5d018d0488d3c3944f94b35ab1c517e70f8474e8a140142c4f188efe4634c384d7ec689c7f744a0e12794651f5d69b":"046fe4185368f7ce6796f0bd3dba63be":"bb47621961bf208350eb9d8aaeeb3c422f53856e256506bb820bef3df5741acc":"ce268a799726173ce0c2a2c7ab365873b650f1b9dfdf02f74e3ca6e7bf4ee5bc" - -AES-256-XTS Encrypt NIST XTSTestVectors #65 -aes_encrypt_xts:"aeb3fe8f87a1d9ba5fb6ad1620b40f80bc450627250c83ca9a75a0010455852508a4b3ad801d2ff582197ebae9215c248acdd1ed048cd511537fe0e3c9106f6d":"8c19d398db05c333562ec9ed9b63c98b":"ff8239f19d44a67d0f4a0d02958dc3fd4752e97887e3375629561878024f2173":"593085a47c864597edd47a7e6de8bbc402baa5bab8f554dd2dc791bee10c2348" - -AES-256-XTS Encrypt NIST XTSTestVectors #66 -aes_encrypt_xts:"10c9e07ce784d6d20512f39f7677a2fee2f4743f96b3a35f71f4b8505b6f2f57764592014ac5c138b0bbb516e9725ea60dfa6b1d122420af411cb6a20ce71faf":"ad496ac92c2e5a6e76d2e1d9c9b81368":"9ef1531b80e5ca4e180ce9a2ffd4a402badd3a12c3d08a60871acf7769b2e7ed":"c24a51de9c172b91b9e8ae94c0ae9f9b89b322072704c7b65f78880bb367f210" - -AES-256-XTS Encrypt NIST XTSTestVectors #67 -aes_encrypt_xts:"179761ee0513de99804d839b01a6eb11a4f1cef843f27940ca407ba0c7f7b8987eb1c11a6ec7a77f7181fd4dc6639c83cd408ef2fb6a844224cb5ec827a77ed3":"857950196ae7d3c8ef53cb8921d63d58":"7d6b066eb3d1612741937118001dab97f30f20232dc78e3d0a89071f4864ec73":"8c699ad0feec040d385a864c3728b3455584a667e719bc5bd5869ca2293a025e" - -AES-256-XTS Encrypt NIST XTSTestVectors #68 -aes_encrypt_xts:"7113e52e6121a823cd9ea8712b2e26927c67a280f4ab856a13cd8773c0d9467b527d8565725f5a16484ca41d03886a64e23385139fde571fac218c6d915ff99f":"40bc30b095db185e89c4851ff2bfa0c0":"baeb3860674e6d65644d2d76471d7ab9ced7bef25e11d11983e81e02e5ed1856":"1204cc8c76826cac97b90bdbb06fda9585ee1a493450b688c261f9886c8c1561" - -AES-256-XTS Encrypt NIST XTSTestVectors #69 -aes_encrypt_xts:"2f4671066a9c328e393276f64f8c9b5406881682fa51cded858bc8d0678ada4f450d7007589251c41ad853012221c583d515e3986aaec5c30fbfd1962986f24d":"a1ca7a742815f9dfaef37391fa8c29da":"219814a0c9d202d13855f06b8eb9b91749008f19a2bd725d28aa4b475ee6b66d":"7abfdf593fa2ef38e1cbbc3eb046ad6334bc42c24c35eeff147a13810005155d" - -AES-256-XTS Encrypt NIST XTSTestVectors #70 -aes_encrypt_xts:"b353e17f495d6b6a24357a6a6c30372d8e6d79923f0e0b62224af47240123ed909f5a94a299a0cbda4ba99e864698803101507e7027041fe04eed90336d89c76":"45c9b9a9842445dd369f2f9408c76813":"d265b71fb89677540d73c441368299c4162e9f5c070c3856813245f0ed402fab":"48126086975de6b282a5acdbeec5777e5f5955d7f938f3c56fe69a91b8b63401" - -AES-256-XTS Encrypt NIST XTSTestVectors #71 -aes_encrypt_xts:"78444ca15453b6120f49b31648be62138b3b5588083ffbaae5f32a8fd999a997c2734b3bf1f90c84a8ff70286f973de7ef5b3cdaa2c7d890be18a18e5a1dc051":"6756726a7aa08c27023090f244c61f80":"7ef4668bcad140a7158ef491cb7373c070f4cdb4e2d416dc8dc689ca88045e1f":"dfb3c1d4f07451b82f263af412c712f8f4fc29adc6d49abfd5faa48417d34372" - -AES-256-XTS Encrypt NIST XTSTestVectors #72 -aes_encrypt_xts:"14c9b136c6afd636caaebe249c762d6828463e27b2e24fc2777f6003a7ebdef43a32506b49ff1beaa0efeb914cd024c5ba2aa0b011dbb29ca3ff22059a94f7f4":"c2a15c46df79085642160d1206b7c5ca":"3659371d51cfb1df06d596566fddf904dc4715ee819185a453f6095826d4094c":"7bbeedad3910cafeb14234245cc2a1502653641ef5e0e0689d6c70125f0009c0" - -AES-256-XTS Encrypt NIST XTSTestVectors #73 -aes_encrypt_xts:"5694c511286ffa1f1f51678a7ad4644eb5e9547d8560d4aa4baad8f1eee84f1ba2ff4dce1e3c633cfab4d62556d9b0e0646d723e03363276cd4c81d7c7e81612":"b441cb43fdd9e2c42e31a43e40255dff":"53e1c77b46310319a90e03e778136a3c838d92ea0a427b551f3aee1f70085b6b":"ef760471a22a83872e950910376a38a61b1e3e2e3641c89286e3443b56b94490" - -AES-256-XTS Encrypt NIST XTSTestVectors #74 -aes_encrypt_xts:"a9f66417f5f28808de4a41e53c6d90e9952bc33691141e266dd965414b6ec0d3b2d0a6ae2bcc8ed2c23db6e4b1f6890a14f7070c65dd04798b6d85df1ef38f58":"fd3e61399781e527add8b2eb0efb795a":"e6bce62a359d887aaf5989f96f266672e9eac28bb49503c5d79d7b1c6a11a507":"4511c9dda86feeb3ab9703aee9eadabb407ba2c02a9e03003959d9334d9067da" - -AES-256-XTS Encrypt NIST XTSTestVectors #75 -aes_encrypt_xts:"0b75926865c1c0571324ff3475c5143e7c18d157162f177c233f3e17a0f4e12f19abcc4e827549fca534eecd8be858edbef1e1f3f1d28d06db966d6e62e73499":"55b2333468a0ec130c014b2bcd0ac8a9":"455393961b34dc103037d425f3874d3a8ed0ff22d1290260c1f97a9097cb0562":"e66d3c26a03fee0277f4f09e37ba7def9f0ccb8d4372787e3dfd61ed683bcbdf" - -AES-256-XTS Encrypt NIST XTSTestVectors #76 -aes_encrypt_xts:"9c0c1f73bed872b90cbfd16ddfdeba84d10fd9431731124fb845e9ad03f301ea91a4c51f71d8e75618151a5a5a2e979a1e412f5e3069748b5bd684f042518bdb":"131d7d5fb585eb9d495483a43377f768":"c9440ecf76f673dc6539114ffacc1643d5709d0ff6cf75dc4a52fa503ceb0ce4":"2391e3d877382ec2427de1730d7acacc73a54e75583e8d20f116fb6b03906d07" - -AES-256-XTS Encrypt NIST XTSTestVectors #77 -aes_encrypt_xts:"dbc6ea5f07e5eef069066e0705c47df805f850ce5c09ca0bf3042830e482dcb8862df12434b42ea603982705719ab6b83be318b17654db9f7a9d8a0a041f1d5c":"5af578e4af1ec5afb45dbe05bbb77cc8":"793180ea6a128b94f12f34853302f1c235d72cc2972615844d4ae8b6c88465a7":"538657e16e2a5f2653fed30d49c2036fdd2573d2dde74149d78b0bd5812301c2" - -AES-256-XTS Encrypt NIST XTSTestVectors #78 -aes_encrypt_xts:"d5857d935161473031a49fb99aad2735416519aca50027d1fdd9a0a2c8fd8108dc2fc8dfc43ba56e0d55f1917b5b12b79d5dc57b2ea757099672c5890cacca59":"5062ede46ba1f3e48d49f6478d1b4664":"a4d0a482e9d0742cf41a7c876dc58d78201aea9fef682c7d221e61e9912851b7":"b9046bb527cec7a0d6943a51d8514ae83c52abcae659fc67d8aaee1c8a2f7c6f" - -AES-256-XTS Encrypt NIST XTSTestVectors #79 -aes_encrypt_xts:"7bb5f025084fcb5f350de299288a106c867af70d0cd8071ee925ed6009ccb59337ae0219eded1788eecfe325d170fd18ae5cb1ad369e3492e9db3a8e00439f08":"b770b9e5652bcbba2c2947b476e583e9":"2930197db6de215d6b758435572f2777081784a16b8ad4f53435e1a3ff41f889":"0357dea5df59d7e834e0c20fb3d74da2bc686ab26a9c5698c4337ee18ba694a7" - -AES-256-XTS Encrypt NIST XTSTestVectors #80 -aes_encrypt_xts:"2c7ca38b0445ca7345c53d05e433a84e93617723ec4f22a9e3c4d822fdda9a88748d653b83ea170668fae1b22525afd3aa78e1f09106a22d640d853524a80b5a":"44ddb8c843750a34a598c4b1f91d9230":"847417b53e2fe4662e6197409e869dcc16c3b1902cbcd5ed01b5b60d890c4f79":"187d4fd73abe3cb652f58a3860e0d8ca36509b10b5843c693160a18824b45ff3" - -AES-256-XTS Encrypt NIST XTSTestVectors #81 -aes_encrypt_xts:"299fd77e9d9e43639bc91507ed733fbabb351bc4a4df920aa741b00b3bc69c93788609bbf63eb0d86d9718b3dff485e9190db3b7896d693e5155785eb07296eb":"77f53efcfaced3ec7eda86db1cd4ee0d":"3c0269b40517756022a06a5e9fe59e49d9713a75a86ba373cbda9e8a87570388":"1e782e2e678dbb3edf7d05f2c5ba1e23e35a7f92bd6f64d8c9f5232d0c240398" - -AES-256-XTS Encrypt NIST XTSTestVectors #82 -aes_encrypt_xts:"a3e184eb5f0b5ac6763366443e3c67759374788b22c564d7adaf325412c2b0b35658f0974c1744c4217135a791e63754ec4536453a9a3241cb5f26b8f2fbbaa8":"392d2e266bde97e23fe33e253d98cef6":"c59f047e76f02adcf22e0646808d57caac0e16d026111346d4f2a18240be0c76":"a9073447e5674c12e0038b02d9b15fecbfaab3f9f1fccd26b7103e9676470c24" - -AES-256-XTS Encrypt NIST XTSTestVectors #83 -aes_encrypt_xts:"ed4e43fcf5e2fd4454028aa6bd3a8ece19ef318a49f485342bd4bf4ce98abca6e3593a9fd339ad1c2764d65e40adb66dcd7052b3bc31f3c18e9c5ef590df2f0a":"1e1d81c6f69a78e30f2392188ac9b429":"b4f2bc3a56ebb8a28d8035b216748fc3d465efe8a3b019e793f9187fe28e96ad":"0bcb4c624b7895e716d195cb6fef836173e3ccdd1e3db52d3e8592c9e9aa4c4e" - -AES-256-XTS Encrypt NIST XTSTestVectors #84 -aes_encrypt_xts:"b612d544688c73b150a7618ae53fcd0a70cbacc6fcb9c88b4c7b4c5d320708fc5384ef900e78881f57cd952f57a638979b05de62d2aaca4e80241fee5f68263e":"d5f652f36584bf8ed30fc51f5ac77cfa":"4fda1bf5fa57d0a8a8b76ece238eef69edf5c5fb12dfa995cdad65367d36114d":"441ee0acd5a7848483f40a77acaec83ae3871a205aa781e5c4266c52b6bd659f" - -AES-256-XTS Encrypt NIST XTSTestVectors #85 -aes_encrypt_xts:"7f0f22836de358c3e19621a6be759054956cb5953eca76f9636288937922a126537b69ea03f8669e95d38f85f4f4fc5e88622e2b8fd0cdfa5ee320d2b5ab2503":"8e68cf52ac93940c277442b5fd70a180":"8ab4548236620a2665004bc68a9ffa77bfc00ece36f8257280fb85cf6b25aa9e":"fa4748fac282dcf219a83ca98d959992d4d7ae5c60fcbcc1f609c1f93cff8299" - -AES-256-XTS Encrypt NIST XTSTestVectors #86 -aes_encrypt_xts:"37514f9de4c60940958aed0e631dd04709929e706ca4d042026e0a8fcc4dbfc4e58cc129df23f50d1585427d1829659fcd4d4191d563716453746e564fb387a4":"f569d6883b4139ceb52eb45af461f7f5":"b1639e0f5a3835e1e1f847643a2afa36839fb23ab1a52b577603c5d78efa7495":"64f4968f60e331e7313630ca2e28e578b1b74f0c3e90d6fe7a7b8a9e82103407" - -AES-256-XTS Encrypt NIST XTSTestVectors #87 -aes_encrypt_xts:"50d3f1eddc9684df8a37d0d5ebf7f7b8da55497ea77d7752fb28d4a6a8b1fcbe05e25de4aae4086aac47f5bde2009c5653351378b4749ea888e79178cabb1dfe":"8aa380f47ca98106e5407197bb3a369a":"8bd39e46fb14f75ac84c0abe09a9f4e0cbc4542a6e28346a9c6d526690914553":"4f00d328c4c8f44e2e56b5b1caffdda9e862563b3a35dfdc954d5c5203847d4d" - -AES-256-XTS Encrypt NIST XTSTestVectors #88 -aes_encrypt_xts:"00f5f7044069709b333af05cd4afe19318be7e0e8854a330969ddc6630b657d753c98df8facbba7ea380e9b3c9af55c7f217397b64e04328b5cf0051c527dca6":"d7ffba8fe2ae7a7ea4d985ebfbd4a0bc":"b8f683813dd418d33a9210c3467e6cf29b891870f2bab0bf7843b4767749d837":"fda4a3a378070cc1304e8d3a6a149aa3372855b55516a113ba60a32dd800743e" - -AES-256-XTS Encrypt NIST XTSTestVectors #89 -aes_encrypt_xts:"ec41b9248e64dd43b89cd53bcd6d720a3bdea5b6bab13c0c7d574b0eb096e6eaccc8e83b52eb3a854b7f44abf0da25ef82472478c3e40b507592e69f1732ecb4":"9c92632596acc6c3f3c016ef804cf144":"276553f1f023053728a3e8b9b3baa70d19d0b26de25eed9cc06efdf09125e5d7":"e77c05af1907a847a40fd582224306a4d60693288a6b98724fde927820ae6824" - -AES-256-XTS Encrypt NIST XTSTestVectors #90 -aes_encrypt_xts:"9051e843a1a216c0bbad5d67e2e30ee414ae0ec29675deca56507ef011ba7f3f273edd58ea12c02ad03ebe2405702a0b8ac33016d216e22af0f1141998ea488b":"b4599993e7c9b1c96a49828ad0eb0d24":"dd09c1fc4932cbebdcc02fd5ae3cd84c69cceaebca4fecfc6f975ca211fbe205":"a818957f0e23cdd3b9d579ba40997a9be651566996f656be257a806a36c2756f" - -AES-256-XTS Encrypt NIST XTSTestVectors #91 -aes_encrypt_xts:"cc0e919745830661faa12b04dba5febc29772d4a686d9a433ebbd9ccdbc02d3b893a1ed1dfb10d2d351978a1971a408eced8bd3daa53a49198cd7f751733d927":"77a0a83e86727254130a59a7d6b76391":"daec92b3a1848d81286d5dfea7cc5acbc1cc27c1d1947aa757bf16cf7c895fbb":"35401c3cd3671db2890e1638895691f09a9037f2e07c705817edbdf6b9c28d11" - -AES-256-XTS Encrypt NIST XTSTestVectors #92 -aes_encrypt_xts:"e3917c9e9ba6d89ede4b7e0b8fc501cedd7f1ccd146162efad989095f5f68d5ecd6fd4333e1bd453f09b6d09d697a285e07e0f5ec4611412977f9ae38d15ef9e":"9e258244d34e09a1c5ef76ea210e676e":"32dff1452da87bfec228c13028abd6535780a6beb39ff9e3074be5896f30cfc0":"a6a3e35f0de70a925bbd7d8012e7f9c2fde3c009f8113e3ba90a943319e0dec2" - -AES-256-XTS Encrypt NIST XTSTestVectors #93 -aes_encrypt_xts:"9a40e679508c6d3091aed61da803fec47f191c5a792ac38479ccff2f28c2ab71ec899ed4711a0e6704db0f60067d3d80009d7968c2926cec9cb3b029b0cfa5b0":"11822fab69820b6703163c9b282f0e2c":"f4a350c54b03cd24e1e6596d328c2c93bd3b7275107c24b43850f2410f17e795":"f864e42bb92dec7496f9c64d474fd8e010726a389e058bf9c20c318b522ef184" - -AES-256-XTS Encrypt NIST XTSTestVectors #94 -aes_encrypt_xts:"f5d145f6a7dd0596b81439a1a5423ec285e3bd1eb99c71991a3ddd00b2e59f27f7656a4107d929d20b293bae1f86414488a1e328bb278a6b09b3955110a1e769":"65c0b2a7d4448c8bc0f2979055f0d284":"ef26cd107a96dd8c33f047aaaaf2322645eda646d458f0dcd897cee44b02d446":"084535587434e28f955c4925d738a5d66c5b43c35359872708f6d3db59646055" - -AES-256-XTS Encrypt NIST XTSTestVectors #95 -aes_encrypt_xts:"4921b019ea495cc798613e0168b7d8c525c4c7c2fcf0c0c58b7ff07ac38a1a885e033684f4311e37f50c429e0196030c99bd8fb01d19fb98467e5aec7d3e172e":"9dcb96a565a8795d40075fce44458bbf":"e19961d9543f444a81bbd501779c7fb796ba0da3d1d37d47243ab1ecffd4ad3b":"ae79e4150553e9c3bebb85dee47dec390d992a7a266f6136e5ac6bf88a414d5d" - -AES-256-XTS Encrypt NIST XTSTestVectors #96 -aes_encrypt_xts:"b1a00973d9bd1312cfe4eb0053c25c89d1a421f0f0551f8b923d1d9feb32500146032f952f243e1ac1a7f5b71f80c9fb8fcf33e756816de66d8934a747fb5027":"b93df2683c7486b8fc7f097275a6eae4":"559f74fb464561ff6b59c7f8d1d795419cc24358a2e58075aa7f83c591875107":"6687d9604ee1698fc6faa3f0fc685f0cb2778e1a12abf3d2235383d7aee21e87" - -AES-256-XTS Encrypt NIST XTSTestVectors #97 -aes_encrypt_xts:"6290d7762f83a9220008274a74e89c744f5b95e877b9e9d170f442f4efc9b0cde0e9bfc1420ab4986631f9309a392e4dd02b98c3d518fa5742851f658f9fa273":"745013c449a0af38c1fa3f419e896684":"9d800948bbce94eebc17db5eb492e4c1ae43c036736f383b30547b01b349dbe6":"4065a0574d5b1d19b8f82ea31f2beb6daafe4580f589ee641338d94d23dffdc3" - -AES-256-XTS Encrypt NIST XTSTestVectors #98 -aes_encrypt_xts:"14271a41e9da37781d5ce0db76c8ab3ed8baa50a74aed3a1b2669b75e0b36cdc141d0d012fd216a1108ba7db61e556027b4dc080808e64d835cff9074af8141d":"2d3e449ce014692868ac402103f8bbaf":"8a8b2073dad4fa0b83ef703b658c3e153db72f4148e0ceb8eca389931d0a67d3":"bf561aa9ac6e0b4580511aedcf93df60d977ef9d42e5d5120c5cc86435bbe41c" - -AES-256-XTS Encrypt NIST XTSTestVectors #99 -aes_encrypt_xts:"93adcb4261ca1a38eca6d98eeea7c3ac37a06f9cfdc9f2a4377a6c30e297b589df06203091f8298a523ab28b3100691a8cd341320a5876bd4dcbf1877280bae3":"c2f84d160574b5376968c56ce080f910":"aba336ae4e0acf542f826f014f749720ed169ddaae994b8d932929bce19d4848":"e6596074c2a9dc9d8dc2ee35b39c8b9f9fc62d53dafcb85ea3f88d79fb4c6ad1" - -AES-256-XTS Encrypt NIST XTSTestVectors #100 -aes_encrypt_xts:"198363340a2c104edecef6ada540a9c3a752c4fdcab8d16fff1823d98d959389b92bfd43a9df083600e07f712d6f04a20456d452ec6cb7e836da36581ff7ea33":"3738f1d2fa33ed4fd3dc8345a77c3195":"8e9369480e1c33bd5e4f9355cc81acc0a97bac373ab8a292874fe7103b16ed95":"3a23189b53f33da3976c3db3a945cbe89b7cbae84f00dc691b4a113ebefe65b2" - -AES-256-XTS Encrypt NIST XTSTestVectors #101 -aes_encrypt_xts:"266c336b3b01489f3267f52835fd92f674374b88b4e1ebd2d36a5f457581d9d042c3eef7b0b7e5137b086496b4d9e6ac658d7196a23f23f036172fdb8faee527":"06b209a7a22f486ecbfadb0f3137ba42":"ca7d65ef8d3dfad345b61ccddca1ad81de830b9e86c7b426d76cb7db766852d981c6b21409399d78f42cc0b33a7bbb06":"c73256870cc2f4dd57acc74b5456dbd776912a128bc1f77d72cdebbf270044b7a43ceed29025e1e8be211fa3c3ed002d" - -AES-256-XTS Encrypt NIST XTSTestVectors #102 -aes_encrypt_xts:"7d12d5eaf687a3edf4ef0a284a6c7e9cfa075185e2608c2003b5f2719f81dec92d107279d6f1985b4b950e168b8af70b6e6e0b4419ddb50f425d673fa3714a38":"d63bba65b05d175a90de1003624e1d9f":"752e9b0b241e91fad431e0b900b5b697f875c0898d3d58b93b74723c032fd103bcc555a7b8be44a9d1e7726e7f31d2c7":"ad6f2c59c6130f0814bfebcb3f5e7833d6dbccb24c3311642806f965ff4435602d9d3e39851a495cfada67f8b3017ae7" - -AES-256-XTS Encrypt NIST XTSTestVectors #103 -aes_encrypt_xts:"c87fb73eb82d324be109e8fea07e14a7e76d39dcf4b2a3f745a230c2df66413686a48db657c220ddd1a35764379ae4d3c83c5645090c262f776778adea5bfa28":"029c8685779e9d3be89aaf5b16cd28bd":"f7354b97fdb01e0b64dde22c841dfda5c946b93e206e75d4a87b67784bd3b4d054174b980144b4c2419af2f084e08809":"7be844854b4aace2178e94f5f0ea6f9452df701137710be4913389cb64595cbaacca500b3e004ac49d1aa9ee926139ea" - -AES-256-XTS Encrypt NIST XTSTestVectors #104 -aes_encrypt_xts:"2aa55a7ec3664f104c232ed94f6ea94edba7f48bf0a4faa9e2ebac695d67f9cd60de48dee13a9ef910b25e7b5845e5661f6d7197ba1f534d0c9032e9ca33026c":"44b39243dd8accd55aad11224d010522":"7dbe65710b19518a86cf49f0530fe6b1d0c838ddf444e442745bcbfd81fa90f1eec7f027cbc4ee9d74f8c9dad514dd83":"b9b07a4aa980b432ff5a46af2f996d14722cc26b7ec86bd265db68edf63bbc128016a8405efcb96bb13cdaf9e35121fa" - -AES-256-XTS Encrypt NIST XTSTestVectors #105 -aes_encrypt_xts:"53376c86ebf9e73d69de6ae8dfb6168568639e22f874e1c47971104113fa33f5044dc53e662cdf9f34f2b5ccdbda299408a2514a32ce4ed07e033b5da9c600f3":"0b807f99baa9a840eace541448c3ac3e":"dd9f72e9ec10d7e1ba53402288a4726d346f9b1486c11a6e6a931c58398b86839fb0748d40c576d9e2ef2f69416919ec":"90384646ab252d37d35702ae9635061222e7c1584c6fdd2b9a0409497f535c986e67bc621ceacd30ca0117c505dc5205" - -AES-256-XTS Encrypt NIST XTSTestVectors #106 -aes_encrypt_xts:"aa70271d299a1a6e524e4b0bde2740f1b00f7759b6595b3959fb7530558fed75b933414b5f32b98e779aaabf64c03c80acbf8783031a065e61c4af6a6900668c":"ae92161e7db865f788a070e9caa93c84":"6000f51ef62d75c4a95654d2be920cb4e95c8972ab4ef4b6099c9e5f1003dcb9da1ab121653b9a6f848f349f9d13b77e":"d7db21ccc2949cb67de8647fc5d127db10ce4736ec54b099767b7d69c57a7ae843e6a88f522c849e80f12b2dd85f5a8c" - -AES-256-XTS Encrypt NIST XTSTestVectors #107 -aes_encrypt_xts:"6c1325c67c0ce664ddbd688a736d07638f29270e472e4c5af41b0526c3b3bb3bb7f34cc8b288b168c4d4096f8a6e5ce50fe419bfd253fae03ad70101e0ef7b8b":"8003b7f5bea391deec6ef5eb75d564f6":"3e0b5d60e4f0cc18e2816acc58524f82bc2bf4f4be8d339779456e3ad8be14c3c58663dfb2c79523580dba65466ec05c":"16a544d137e63d4aaa910d7de3fb49e59c226fa8623a1512dbdbe1faa0002f0f2518e5439edb406c8a6faa729ad031fb" - -AES-256-XTS Encrypt NIST XTSTestVectors #108 -aes_encrypt_xts:"f7a0f29333229a59cf356dd11f5239b5fb5fd95e1494b5cb8a221ff1d8023fa5ed8f4c001f66dce3fed0dafd990876dfa360369a22a18abb8271cecdcf32b77f":"2528cf17d839919f8418fc58e72be0cb":"2402f6f20ff1a6c47a265bfa78bf6de2ef996ff2648c587e9a201e1c4e83b61ef2dcff405f71a526b58e0dae69f03977":"ebc9f63d59c69bf8c5fa52b195e9969c3c060bc50e476f0164350e2c5cdca173cfbb16ca2298a0a6ffd7945619a90838" - -AES-256-XTS Encrypt NIST XTSTestVectors #109 -aes_encrypt_xts:"f8ff93de3b1917fb087d01ddff7ed8dfc2654fcbd94fa7a79f74e8fadfd18038601c770d046a0c9edef526d582ee7fcb4d3af1a7d67064935b6cd9242592b96e":"82cb05ed3159bd8f4f71cffa9d9b1184":"2aaed8ab63b4b7ca80d6932c34d9dbf6e1a70f0cf3c06d9ef47540f48c741ba6784141e625126ab53287715d2e8fbd19":"2730516c74322c7438e79f2dc214176b6c24076f52f43d08bcc76b031ea6400ea537eb4df4a1f58a585d13bd1df816ec" - -AES-256-XTS Encrypt NIST XTSTestVectors #110 -aes_encrypt_xts:"6b1984c24e7eb6628e3a11c9ccd2594033a3a0d9016eae65c2f24e09b9a66e9fe9d163a506dfbccf2d93e8991e2fc560e10435b890b5889a5003e4bf817dc3e0":"6bb0d3ae4fa86e431619e407d59ad4f4":"6a741a945bfbf0c67afd43ba1f841816c099515805d0fc1f7dbf6de900e0aa7a219c88563271b009d1ac90eb7dc99735":"e47bce292baa63bef316f680a5f480a7b883dfab6ed5a57f7e29ecb89e354a31c9b174c4abad6cbababa19140c4620a3" - -AES-256-XTS Encrypt NIST XTSTestVectors #111 -aes_encrypt_xts:"9aca91dd1dd1b9235272bd211c540d8131488a38703322287391ab24840c1f6e917027deeb02f5033908b2f866d32b98acc4ce6f8d31f932a90400627eccb033":"d6f8e524f8d56e49c79f5c42f9ff1392":"c88db3a0143f085332a4f508cd45ee02570e8c58747a980d4cabf41e8647ca8ead0c3b72965ee23488583861564fd0ef":"7fc8b03cfa3647f119c20089204957244546bb22cff5390ad271ea5c5385251deccffae6ce0090c4b043232e4485856a" - -AES-256-XTS Encrypt NIST XTSTestVectors #112 -aes_encrypt_xts:"dc969f141952d672e56cac6510662c1e7174fb1ebfba1390d7da1eb6d8c8578ff80badec38804f74d67e3e2326fa5407cf1b324e74e294ad4d0f533482dc443a":"261881c205bfda56c0793e1a49cd6915":"fbdacb586d7b54650640c607e50ada280a4ccd13a88f9649216845ea1885fc86ef3aaa35a4d8d30d1197e8fe954163fa":"79ce5e5855343e4c6fa6c47244bb27e723a3f04cfd7eadf87eae9d81825a5e26749f59c42776a721559b5e4e3fc1602f" - -AES-256-XTS Encrypt NIST XTSTestVectors #113 -aes_encrypt_xts:"a8647d60a8d1bec3305178f11fd3e193ef0bd62354815bb1d9b3fcc555a7a8aedc7861a9a7242348a1890498e845bd4101d75899db5087205f9f3386a82dd63d":"878013b84337862ee5fe8558ec03ce8e":"ff5574a4a0e796c53d2fb8b859401fe624c26d6c9ad53adfcb0bf5b5deda9745e06133c5477f51e9ccc2e2294abf3107":"0d555965bf178dea351710b48e9d88005a2b4c26439c923ea2a4e5124da610d35f7bbdd3e0495b5ea52807bc726ba72c" - -AES-256-XTS Encrypt NIST XTSTestVectors #114 -aes_encrypt_xts:"e7d31c5668b67c871e58ac0bd79f75b89022be1c83c6ff43dfcbd6c5bbb103f0415f51a13a70dfcd1f24617ecadff10c22968c5282bef4437e68899b4f87b526":"6aaa85b7315188155627a060aa77df05":"0ae75a94eba76a33c6a0cf761f0a0e4788f17876d295362ac42a3531ebbc27dc5a59ae929ff0a7fa91c249aaab7e95ee":"888a69890cfeac26cc053126872f7be70213ccfcceb42585211e89ef9c2ca8f2e4dd529d2da88df4cfb6833cbcaab896" - -AES-256-XTS Encrypt NIST XTSTestVectors #115 -aes_encrypt_xts:"8792f4788d7789137e42dcb6e58b210f9d84518311fff0a2448a436837497e072e7d96bfa72d69265bb44cf113037045e3a1633db2b924df3aabf548193b7f38":"cc36b7272a3399d6f1b273cb0382a5a2":"6e0c8b9f131d30ee50e68e52e782bfa316e856abcec87ee842d58cc82d4b12021c651db5bcea52579462ee201bf52119":"33ff0ccb4183dafcd77f0a0eca53b56f089abbb85eb5de1d59e7da9264c89f3333d774cf26083ac2152c304171da11cb" - -AES-256-XTS Encrypt NIST XTSTestVectors #116 -aes_encrypt_xts:"ad504b85d751bfba6913b4cc79b65a62f7f39d360f35b5ec4a7e95bd9ba5f2ecc1d77ea3c374bd4b131b078387dd555ab5b0c7e52db50612d2b53acb478a53b4":"e64219ede0e1c2a00ef5586ac49beb6f":"24cb762255b5a800f46e8060569e0553bcfe86553bcad589c7541a73acc39abd53c40776d8e822619ea9ad77a0134cfc":"a3c6f3f382795b1087d70250db2cd3b1a162a8b6dc126061c10a84a5853f3a89e66cdbb79ab4289bc3ead810e9c0af92" - -AES-256-XTS Encrypt NIST XTSTestVectors #117 -aes_encrypt_xts:"72af6f0ead6fede25a5ce84fbae1184bc87e2724a1b07aa92fb7ddbbffae9f8650d7f8fcf105306455031f3c46b054eb56b277cdc361f89bb6d2a3e5ed2044dc":"03cc73b0c5e3529896824b17ab607990":"bec8eee6f77e942a62ba114c2ee73fa4a57b9fc4bcf270f44dfd01ed4f92d52bd3fdcb5e5765146e47bcbbf3770933af":"846e690501b57469ade12d801b6dc0886b627c677d98bfd66882275d315b32e22725bb8117b456fd89f078254db84cb9" - -AES-256-XTS Encrypt NIST XTSTestVectors #118 -aes_encrypt_xts:"6869a611b75dd542a020b73ed3bc9c501865847c49732c1fda9f35c3def00b8c083fc997dca1c3c2b64224c2dbda9d97451ccf6771a986bf5183e23fae88229a":"16d433a9a5189b9277ba63121cd7de89":"d3339aecb2539dc8efbc895d33f9cbc43aea88d339be0f3e75045d3990ce578453d3c47fdc69df76907c27a5b9bb7a43":"5167067599371ea28f13dabd45b74fe3d50bd8f4209d186742c37531551f9f9469589a0696712f6ce1e293deae35116c" - -AES-256-XTS Encrypt NIST XTSTestVectors #119 -aes_encrypt_xts:"2b607c1b16ec9b6c0dee3bf30a6c8c45147564258cf26b9a1dad97640ea0b9c4db159a566ea2b57683db1f11973076097683facc69adb3a2bb4f6657a26df964":"3b92cdd3ffc656c8920d3c928fab0ab4":"0fcad47ae115142a65aee595f7669ba5dfbe2957df728df45d1883d903d8ed5085ee5fc255ef2a514b772a2e5ed3f36a":"9a97c8e704c8fe5af919b28055636e43b9e4f01121ed2aed118bae2ac3374bddb4a316171c85651c24138cd525945691" - -AES-256-XTS Encrypt NIST XTSTestVectors #120 -aes_encrypt_xts:"10c2e0ee117d7c83bcc1422b1c75445fdca94530eac7c9292e76a2766766368d7f852c6f6b25e8448e9e315b761dcb1a31290b643535a66de5c2bc1e5e3978f7":"5879b20b8e420dbc2258ac2edc8c227a":"95fa154a5845e016c11482071cc2078108eca943b4a3a7bdb65c09ebaf4c7b5b529dc5a718b34f488dd8bab912207da9":"6edfac840de7a7e9a4718eb8a1270004806bf4d1ef6249c13b482d390cac49e31f8e1bffc387c2837f2c891eb8e1243a" - -AES-256-XTS Encrypt NIST XTSTestVectors #121 -aes_encrypt_xts:"bf73ac492ae887e0c81447fd61db7e02e76492468171dbc2584975b44a9e9cb9b3c17a4d543bc1cb4484333b4c55ca0c4deabe859ecf5e1676395d4caf89c29a":"b3bf55044d4912a01b6d4d195a6d1759":"48fbb539341ed55b5599dd9d8eb0424e74941e48d0fba53485ae2cfca67c8200eac3e88ad066dcc4857f8f6731be10d8":"fbfecd2aa668d0c806e2972b188a010284a8c672e0287e3e50a32f6b355125ae18ed9559fb460eaf992ea502111f31b7" - -AES-256-XTS Encrypt NIST XTSTestVectors #122 -aes_encrypt_xts:"4651a50a0035837f2b2a23ef9d6e54037ff4a921d96e47f0a4dc0029e905eef3fd1c5ab89972d008b896473bb94b75b2a432ef184a3163933460833a5259a37f":"70467a95b12df8cc7ee1e89378b1426c":"3ef5aa6e50c92763d82bddea1e9100f4e0bd423097e296c4eedd27a053fb58a56f5f29b964d0ffc64f41777f707f57f3":"f5498a2abdc91d5014f09ff27325428ffd9c82a167a9bee072b74875ab6829e053d0f2e66e6b778988594f711bdea85f" - -AES-256-XTS Encrypt NIST XTSTestVectors #123 -aes_encrypt_xts:"54b00bfc239bdd18e173bf7df6180f53f61a147a78755543f14f5e09b5b0a75dd3da7c2295483d80bf38b4e554d02a212dfed88d41c94e0150eca0e0cddaac78":"bcb436646f8256a17144916df031f03e":"71b1548ff300c266dc012e80da264c9745705e63f84eb209eb1b4feaf4becbaf91c4a60a7c205fa607a180b058b0b5ff":"212be3721e86d135a7bdb0a6133df9b37e74ee1813c913745a20cf9f9d2067565080af51ec9d81254f910f6000ac9526" - -AES-256-XTS Encrypt NIST XTSTestVectors #124 -aes_encrypt_xts:"09ba8945b20b11997703590aa41b3326cfa57efd7357db92748fdb631e39adc612e65081190ab399f9f1f599c44f6dfec6050745f4077f66e0cf90e240bf1219":"7a81574d2d35ab97547b3c7d11386a21":"7f1c8e3064b0a3d0c88f3151978dcdef34bade3beea971c72ba99201f78c38217e1b0b132a30469080be2b719bfeedc9":"0b700f620004682783bbc05ce929f7a6eb742d207cff0e1044d68d518e3421c4eccdb7e238fdaacb9df2ff9151bbdb0f" - -AES-256-XTS Encrypt NIST XTSTestVectors #125 -aes_encrypt_xts:"216f0c8ed55a2a0b258c9eabd7141e1dd8af126a78ec2dc18f77a603355a438e533c7d552e6d22ff5ee5ae419939b9cea5b028a1435a268362364d85829abce4":"2c67313a6d54db9d65100315da93a764":"9ed2285635da3f7758df2c88f91eaabab755b870a9961875739ec63ce177c630a04c886f36ef779bc0bf887795670dc8":"2db6af8267a207985a60704c0f004c1fad447e25e9cc7ac4ab66feb158b0fbdfc36e8044150f0973cbb9276c210426a8" - -AES-256-XTS Encrypt NIST XTSTestVectors #126 -aes_encrypt_xts:"7ba4a8a379ffcc91db2c6341910aa1fb267c06ad06506de9575af0a1b4d35c97530c13efd96a6e178b7d0768752eb182f52999a3ecfc4ecd10daefdfe0cdd6b3":"9aedb367dae2a4374fc488f8b085f940":"c422fd648f256943410f8d5908286d6b261ac73f78a900feee15a3b61d16479b2debc421b86c2b9fd285a2004ee739aa":"6f09ccba799791bc547a6ea68c617975c651496f90c15d3f41ac722df192b4b1271e22a25e48f157acf031458d74e77b" - -AES-256-XTS Encrypt NIST XTSTestVectors #127 -aes_encrypt_xts:"9336f79ff5b4dd5f3856f3e8bc638d2dcbae1f4c666db2e6b830b6ba7d588500573fa80cd847dea34ae653989ee895d32eb2a05c6b4b1ff3b2bb1a249823b9e7":"e3449764518c5812613d634847433925":"a2c39a96c251ebad7fca5d2f130cc934bc6a4d0f4ae02b429188d6815ce71f32564d8a1e5c513fe8c4f6a5e3f1941416":"67da7b9320893c5c97e00e746f53c64c33aa6210c6ec15f33f292fa382fbab5b09c9bd8470e5accfaade333d2b2edca1" - -AES-256-XTS Encrypt NIST XTSTestVectors #128 -aes_encrypt_xts:"4e9ca11a9de2a83344ea6ae5c4211aa9720c5850c31e7e4d28b54b43ebb4f4b6b7257483e2fc3c4ae6ec6ad917778943ab88493ba7dda57585aaebe4659863bd":"df5c2a4d3099d37ef08f15c671143fc6":"2aaebb3527a6cc859775496efab8fb72bd0f750a9842285944364c62483f31b659243b7ad67913523de642834e09eacc":"6aef3af2512ba5b7266203d5b83d63c78b5006424fec3b08fb927141c1971ebad4ae5df3f56a1a9f7d1427e9ddf58dbe" - -AES-256-XTS Encrypt NIST XTSTestVectors #129 -aes_encrypt_xts:"b15c829a888679c519c4b60033853b9f3f05167cd86aba2a7f5809c45a8d01a3dc37a23f5839db1c4679cae2094238ac445a00f858add076c339b1492383bf9c":"fc457c2c32432d62032db1a3236f3484":"f652822bd37d069e74487b0448a3e52e5841f470fed4a341e7451caf6b9a3ac036ea6ac2ce176262de53e11cca9ff915":"1536ac71910b23198e1afcdf963e09da36feb5054f78bb4f08a2a5655e3e1682e776b26f67c6762c6bf441014d8037bf" - -AES-256-XTS Encrypt NIST XTSTestVectors #130 -aes_encrypt_xts:"43401c1696961f2cfa7f2f825c0bd08683219ef7a3b8f2352c6a27afa14424de31ceb11b0983b981b3cc59f712d7513bbd78b97724544fba99a7370698c1f586":"78753fb9e9fa3bff92ed0419cddc538b":"7b57a6803504864254cf8dc951502410d9cdc6cd2bcc5ba15d8253f42b8f5a6886ac7c7d00c1487012e02c670540e100":"99dc0c7a5041257055a6a857ab29191552c63a5432c6371dead034f1167746bfb84c260b304eca8e6ec315dab732e03a" - -AES-256-XTS Encrypt NIST XTSTestVectors #131 -aes_encrypt_xts:"9f77c936d56ccf0596b050a2f8f69dbe332bcb076cedd5f38ee5f610c2ab055f86ccf384ae03f695642fd2b2f401f31036f5e6ee24f4cc88f2f0ed578f0502bb":"494421c2e06904fdc73768a180d19c20":"221e662328a6eec07622b86b0e41abcb7126a8b39a143af267cc503f935d2b08953a3c636721e032b60d38db0d7547c4":"337ee5b177fca8d904e0d72261ac87e85af88f3fdcc0623bc44506237dfbaad74c79b5b84bfeb42f9d6401b5e535063c" - -AES-256-XTS Encrypt NIST XTSTestVectors #132 -aes_encrypt_xts:"3a9ee90d0def2db705a3c0c22de935f8dbe02f9081bdfe5e48e3c1db290d7123a2d39b1e1e4cd86664356a79f5624fa003a4413da03f534fca9434209732cebe":"a6aab252e78c6dbfd6693796bc2091a2":"3da39f8cca3a38513e5273df01ba68031521289ae0501a29c242a5ef5368667b7ccee1d12aeabd69732e274051f8b975":"cba3900b3c01da11ebb612896ac8421ccdaa08721191020a5434873a68ddc6672c2682251986ed3fbe5cb77010eb035f" - -AES-256-XTS Encrypt NIST XTSTestVectors #133 -aes_encrypt_xts:"d8759a0292b96c21ae3ceb6d79e2dee35c1cb4e24b7a8aff4d010fb176fcb6bdf2cdf92e5c40614a1d4d449836bf7f160aa28ac04a351185c4c3229bb6656482":"d85e27a4ba1286ac013d081bd2ccde07":"f063d4d7e5e18efe889aeee00d607d075f6536c1ac41fcb9388aad9516cec5f149acebcfc5075f78ad36eb88ac30f107":"0d7db7c5799c49ac1ba0a8194d261c6455e0a67155d37b1f03fb75016f2b42c8a9979fcba1510ac5392008be168e79aa" - -AES-256-XTS Encrypt NIST XTSTestVectors #134 -aes_encrypt_xts:"bdc32ca87d2b190f302553b5bb15f29b037e04622237f0f3868891fc4660debb75e812d7891b4c172cfa79ba69239e70b32e2c537670f6e1dc9ed3079d2df881":"5480e24d0f82039cd6c4391dbcfdf9a8":"856f272fbe13940cd6c8a43df0211a39901a8a25b55b854d9eb85b6d17b2796f025ce0bf44db6e67590491c625cda5ac":"3c16c325ff46ca5be5dcd3b6db72daa594f44da2ec9c2ee357b6b42e8e554a4fa5f9c7d8f0d6aab934116e7d56a510b8" - -AES-256-XTS Encrypt NIST XTSTestVectors #135 -aes_encrypt_xts:"9f93af0ca4eb5466f1428a30a6d5a7c34dd536601d2c630a39c4156857c7b048922ff82fbccb4b821152119eea670dcc0e54e960df39fc245945e0463ce171c0":"c477c7c4f32602bc40879b88a603f215":"fe5ee92f6ae8ceafae84cc236cba230a5cb20ddd8ea3746b3ddd18affd4c94b855c08bdd67f03f5f30b2bda8f16d1b96":"64507645ee5991dd9dfb89c0730b83c48f7a92408aadc4726ac68354ad4fe8c6404afb8f9c0149b8cb92a916b49b52ad" - -AES-256-XTS Encrypt NIST XTSTestVectors #136 -aes_encrypt_xts:"77d750d986ae30df8d13806dbb26f25e626a98641d27f7b773b8f6ec8974dc801efb5a5e07d4c5c7ed294dcf1346ef0306c4201eded8e2245cb4400c6de263a2":"d85c5369ce2ba233574c1f1e010eabad":"ebed28b5d382363bb27db6dfe0822313b1826f91a1132b8b59dca270d7f02ed19d6bd5d92815d5ca660a63b9aa7e78c3":"7ff26afae811752382f950cad612f4b955bb45c341b7dd1717747f52f8fd2f4e271b3a83b4df2adb11c06bfd3de6b3c3" - -AES-256-XTS Encrypt NIST XTSTestVectors #137 -aes_encrypt_xts:"83c72d2cc28d5bc519a62c9bb35b839ecf4ac9339d442fb5485395a7da7319ecb26af5cff53da7c84ab6f43472395bfcc840b3995f8d833715082c0811dbae14":"85eac0f9dd0f8e660555474c719e7c12":"e728ccd3670164a985012e7917d3c2c2edc5f67b44158a4ff3645075a9d94fc763e4547325ce9ad95fa35888cb8b43ba":"a55b647c758d500e39d70f9ceaeb14bde4c3481b2f3e5c308bc995fdbaf354eca5ca13aa4bf991894bfe50e64a120c97" - -AES-256-XTS Encrypt NIST XTSTestVectors #138 -aes_encrypt_xts:"74adfcaa33265427702d44376c909ac28207fff5c5f2f15d21b1570317127ee68ae2228a99abf28c6d455368afe43685df10ecbc5d4dc5a860c413882761cb75":"2b0a5fd60e11d7ef024fbc89bc04848d":"46ee2018a1b4e6d8fabb48eceadf99e572881d8ccf378dcd40f209f6b939a114b302b04cc0edd964d69fb2061ef7ca93":"f180695ad0d23cf97d6ac48974a91e595cb1dbf689021ec942df956cc63bf7f4841f931f1b5a8d23e56f4873b282149d" - -AES-256-XTS Encrypt NIST XTSTestVectors #139 -aes_encrypt_xts:"d8f32414b5945f01d74fadfa95faadcb24bd689e56a18e9dfd32be88a931b93724451ba2573d01db6134381aafc0299102b72bfa56270d2ae4d077a5c240a70f":"7e77fa25bedcac8cdb2103a493c2184b":"d9acfaae546c745131f7e3c9346d4547e32f18f0d7fdbd4330aaca4d3aee23e66a8f3c6818b2ba324496061edb5a2a7a":"06fe3e1be1272b3d2d6cd6df1228ed94b7d5c9afb2c94918c896f3ded9248f3c3d2aa9859276277998b22ee2722cc725" - -AES-256-XTS Encrypt NIST XTSTestVectors #140 -aes_encrypt_xts:"1e30686246d41359c6b98bc474ca7c70bfd1b1167183d099443b50050b9abc031d2491249b64dae81532d55e5ec4b8fc0942956b8016e70c05c07c2f9281294a":"7bf88e00f309e50739b2eb9b8fa8ce07":"df6a4358a3aefbf2490a0cf00e7b7be13ed08881003e140a4681bc794a5327f06ac3fb54cb89be10130ee742bc28ba57":"fb051d28b1f2d0f225afe2b5738eb3ed30a050642436fd9c65aa3160997204d05efdbb9d0ccda19a497ba135ff0490e4" - -AES-256-XTS Encrypt NIST XTSTestVectors #141 -aes_encrypt_xts:"a3423ec58d76ec1fa3a1fdba142da32c69d1b313f38064ab69d9a48c0244f576eb040258fa13bfe06ea107907841a54fa7bb7f8eb082ee2d42f62459a45df00a":"71220dad8c752f5c8cea9a8897e0b8c5":"4e9de42c573ee90bea1b3ee93be45d76c8540013e729ce1c89a214095e84ef8e585d649f2e8b7d7405724ad992770a2c":"9d15f61291993813c71157a74ca6e1553502b698e6f4c99d532e0ec7a9382c3ed92a3ee41dab4def573eed927190bae5" - -AES-256-XTS Encrypt NIST XTSTestVectors #142 -aes_encrypt_xts:"8ccd4a12da6df4d5e338fc63c6a042570c732b9af330407a7f83a5cd9713d59574c6e3e4cc79a3a6bbf9de362e2a0fc4d4ddb923194ca38c618e3845377e7dda":"75acb5edc9215b64fed3aa9a81937239":"3aeb1fda34708dad3ba316b1a1a706c4c1a4aa794bc75e0022d322d29feac7ccd20773ba70628cf09c4375208d6bb0a4":"19c927bad89a3d5a15e733c5b8393e0f1304476ab7c5bb964d105914bcd362f32d42ef3dfbf2f703dea1952a09372430" - -AES-256-XTS Encrypt NIST XTSTestVectors #143 -aes_encrypt_xts:"492b3b5fdb5460b292abb9eeaff2451caf69aa98eb684b32aaa40aa1ca13b1237c8c7e9a00054d66722affb5df91b9cf308c18987d007d01d1a6318c50a757ec":"1db148fbf62680e5426d4bce96840725":"7798587bf9d4b69ecbf217f105a064cd8abc0017b455821b0f2730fe34a0aaa200450122bd7304b684a299b7b0d16b10":"39cded2cb9c931537a889701ec5212e516d63a71554bc40c4ab149c5db6aed2391e53add098bef58f03d58710ca35de8" - -AES-256-XTS Encrypt NIST XTSTestVectors #144 -aes_encrypt_xts:"5c2978a295e222f9e0c87eb2c24948bc89391cb447a6fc7b5c2b29f331e629ab51d5876d25c6d7abaa277a6039f790099ae41caff4a81ee3d7ccb02a439e14a0":"e6a95dd69a1166b404a7436496966b65":"f797aa0af52e28263fd58eae6c6af9d592bcc21745bd163211e162b5af909139407344d6a1f61e6a472db40542557f1f":"14f59aedcf8d49a650cf57108216656045f92b785e7451d782e43b4c33edf5469566a1a3073237b84f9a669e1b6371f6" - -AES-256-XTS Encrypt NIST XTSTestVectors #145 -aes_encrypt_xts:"9b21dd5314e36dd03db4881d81e4b17fb5b497b950b191142df63b3f27afed5564d165bbb0b7f86cebe52f705a78a554c4f098445b074b88a2b47bfba9a7f28f":"9b6c318decd74c24fa509c52c7694401":"15963085220f25479ca0f4ddd300dda86808f4b71986e2243be63b6fa08977343ed166aae73da48f0bdb097af0532e9e":"08bfa5f85e988b052e2edda3a331ddbd5dcabff296d76b57a6e923b9f7dbd71ed1207a6b2f6e0f150c1833e0adaa0d25" - -AES-256-XTS Encrypt NIST XTSTestVectors #146 -aes_encrypt_xts:"d8277c4045a8689fe04f0005d556da9cc922a23f9a70296d36111b048fda55a1eae47d6692f46640ebdc57b1c58cb991f069a6126f6355ef740663e7c2bfe652":"76a6f7b899716fadf10df7615ecf4d45":"55b5cce3a8651b0791ee96d15b3d4834e2bbeb1e099ca093b8e8bf096066bff23a52722320728e86d3800cac3388e1ff":"21b566972760a6bbb54c6f9bf9bdfb578746b6f8da26bd8a4e55343f8475120af136b929e3b12c75971bc262d71f90aa" - -AES-256-XTS Encrypt NIST XTSTestVectors #147 -aes_encrypt_xts:"975e9f5b58a62858dbfbcb10aa309cba67be6085b8d73799151d90eef36d04dc10a303b916fbb552b0d8447d008e5f2a0b148b61dad9967c014619e088e33c32":"4018a8c77e9ca52738f864e853490f97":"c72806c859f771f4ecf5477ab583b53a36768fee534c160930649d1e7081a1a3dda25d92e600ef2775ccef7d903f9015":"4bb488b4b0a2df1f7d33e732a0879280d8a8864f1234edeaa0fe32bff3d19b129170df1780353fdc2dc66f59b856bb76" - -AES-256-XTS Encrypt NIST XTSTestVectors #148 -aes_encrypt_xts:"3ac4ce7ae065833f2105ff9a2dbc2039e8fd493d9fd97d173650c48c67970eeb7b3f18fc0b5bce46ecf20437ebbb69d0349021a059f81bcd47e4b3c2374e0bcc":"8ede4ca58947c1cf5f15a868762d7b73":"72e256c170ce2b87b8cda77e4e880c7b6a2534a69a80f08c6a0f20e8f278590fd550faff242675de5c503a07c1d961c3":"4ff16e3af2b3e1a6ef90517b81d8dd78e3d450b3b6837f2be147f2e8e843029627eb4912847b9100dec74bfcb0c6e553" - -AES-256-XTS Encrypt NIST XTSTestVectors #149 -aes_encrypt_xts:"9e64c5ffaf72a653a95ee344458f1aa7b23c40eac9f705d5da5a5bab60843293d05d5e04a06685f41ee9d15a39655f8a49cf5f431570b1261e08ce7ab5cead62":"c9e88bca111c735d795447189c91f49f":"661ff0a7fabc65dfd6aee579dedcf249737ef2f736e9231a9f7fe780e44d657ff54c4b49a905b672fb628236c33ffe63":"c0e0d5a23553ce55d823c7517e44e1c23ab2ce1e70edefea33d0f0fbff4300183f21b4849b49bff44d31498907ab0562" - -AES-256-XTS Encrypt NIST XTSTestVectors #150 -aes_encrypt_xts:"b4713941c6a4ffdbfe2bffdcca09631911e91f1260e650d389803b1aa89f5789fb8ead890218105b63c6d8af1cdaecb8da8c807a16e97ebdab860c169431f596":"737ec14228a09f9c52041d9dbfcdd013":"be7735fe5eed83198698d1597dcfbb5ece39a067a1d0b7486cdf9e80767a55317da178b7ad276974abd4d069604668a6":"aef253795f84d13f90706d34d925394c3d9c3bdc06772fded8ee9cd82b407f06482c679672fa4225c8db8f036eb71eb3" - -AES-256-XTS Encrypt NIST XTSTestVectors #151 -aes_encrypt_xts:"3655b75c8622b0cb72fcf91adda8584d24854abec01edf3311e4ec760dcdaa21f8088acdfc493b0bcdf486f1419b48662eeca09c5f87c9cf8416f7b0c021ddb2":"445d7f431d12e1550a1d74d9fd3e5334":"9c8e67abac7191f52f761c1ce7df0f383471825a9d0f0c8a890fccea0bfee4d2643275237440761517e1599e736bb35f":"42bc46ab27c0ff1a3512267e7a72868f4e268f2da85fd42755011345b8f0c7fd7d82c1dffe78a787bcd1eae7ead24f69" - -AES-256-XTS Encrypt NIST XTSTestVectors #152 -aes_encrypt_xts:"9267253c66fc16377af2bce2c9e44e03306c63d4027960333e0130520bdcd27e25408def8c86945717443c5cf3ed9a64c38ebcb355524d3137aa34e304fb7863":"41ae06d300818c5aa6a8b9cf5c52cad8":"718215becec21f55eb29f54305d1c1278a40332ce6883b5adbb5ddcd5b8174a5dc16d8f6829709c784d6680154bef201":"853a8d46cb2f6419deb1ceb52bca6214048017fcae05c3b1355b6d2c61716653f9501067fea1628e74ed9f765401b1a9" - -AES-256-XTS Encrypt NIST XTSTestVectors #153 -aes_encrypt_xts:"82d4b132e6c04e54efce6694f175b845fbb6a2f49fc25137beada3eb9d043cbdcf5870998a2b2625311d3d3f3493d0cbc808c9aa17b34108eb63f4d8d79af4b9":"d182db4398021fe1c1f6b80f95296720":"a0eeaac02b6cb25d5288e9c8140df96d6942f5bccc39eee94ca938674d5dd973ac7ec13e47e02b84e2233240c8bb03d1":"bc6dbac1f4db306c68aa0f5d94b934d4460f1348a8acefc98635e807131030c6ce48ce7f7d6f7966339d4db83eac3625" - -AES-256-XTS Encrypt NIST XTSTestVectors #154 -aes_encrypt_xts:"d8e20dbac2cd42acc08a966fbb43d3a97219e3aab6565a02312a6ff89e9799a145bd962d07c8577589d3a28d0c8cbe0a61e42be021e14ee05ad40b8cf6b31cc5":"4dc897636cb9eb73dbab047272ca37b6":"0d95922172f80534c8212099147ef81dd499e5938564b90f064361ba089d885cafa19921347f806ecc682502c06cf570":"82f34f8fc604c93c2df8ada24d40a35def297d682ac8c1eaa1ab08e65d7dfff48ac4c9dcd0cd88092efbc18e19a296f6" - -AES-256-XTS Encrypt NIST XTSTestVectors #155 -aes_encrypt_xts:"1f1dd824fda9666118ec1116eea78d37175da4d459a5fe225e5fdaaa4eb2aaf41eb8c002cea6d7f7d2cdefc7e9589d789d190b2e93f0ba58bf648826c275329b":"acf51a6805fd7c2a806d75bd7ee5f42e":"b54950c0acc1699aef8d952e013da2637974311487a11d9889b458cfe9678b8830fa61af3eddcb1b670fabdf4b10aebc":"724341e9eda6599cf6930c62de8957e3a05194843b6aeb6f5a80786464176ebefd1c823fbef5e195cc41a968c14aeb8b" - -AES-256-XTS Encrypt NIST XTSTestVectors #156 -aes_encrypt_xts:"daf2070f2986540e2b07b8e63afbad8b8934399c856ecd1353040fab2d521473d4d49c94949fb491b2e0f1652ae166354269802bd9e1f33bb3b920a58c9418ba":"36afe529f06f9497b31a38bd656fc791":"83d0a966309fcd7dfc2866e5e39776f7ca91f64baf5593433b996facd85a09f2df0d1cf88dfaa742aecd66e1fe2c4252":"300cf9081141d6332d1532f679eb9d1e10923754fe125b29f1ee8af57f16fbb7823548bd9273acdae5efc0dfed06bf33" - -AES-256-XTS Encrypt NIST XTSTestVectors #157 -aes_encrypt_xts:"c76cc70eb967996dc3de798ea3ae862ed5fda03ac4d881302548bb15981e6fc2465099e3b5f588d9f823052b7945b3834e3c667474a683384a205a2c273fe5b4":"9493384402aba6e016eefa5f90665bc9":"c037230578c86f95a662c4f9516cfb5c5163e9ea17083d56dde5ee7d99a4856ecab83d0dd936f308bc2b8be38fc9d1d0":"2acead8a43e0b024fe5f5c6e0d22542d07790e7d504f465e9580acc6a61e36c57b337a0a7cd7c30acad64c808826572c" - -AES-256-XTS Encrypt NIST XTSTestVectors #158 -aes_encrypt_xts:"9a80693962f631b5661cae3d6796d879beda0cf5410ba99d003622b7e88d50181cac526a04258ba72ab33e09f176ec71b46e361fa3bda4e7ccc786ca863aa6a4":"debf5738cbce508c0160e1f97cb4b96d":"fac73fc7e2b36e5c6ac3572c4ff2e9f1557d83f451c17a69407dc6a83d1d7f39c877bce17d14347793fdce146ab48eb7":"866da719cf292c8a8e6e5b7c350c95a521ec70f5b6d7ca03e5bdb10b75265256f185d56fc9fc60a0f3fd3f35c96b3394" - -AES-256-XTS Encrypt NIST XTSTestVectors #159 -aes_encrypt_xts:"d10daae41eb813899cb799207508d68062428835c0990dbbe23210d2a6086699bacc8447fe826da454001600a241597e79a038e1eed99000353fcc451964e5e2":"a9ec9b30bcaf0a4a9adea43ba2c7780b":"83509891a6745a63fd929dc95b2cde503b4bb1c8638c1786f82c036c31320697543f93a8d3aa187fae13d3dc66004859":"8369f1cd430e116d05da901f1fd3e4f588ccbe27bc70767a1a2942a5f28cc6fa9a8e0880bef691a8d0769122496c7460" - -AES-256-XTS Encrypt NIST XTSTestVectors #160 -aes_encrypt_xts:"02f5f16166ff196ecbd88d90ece619f1815e6dcfce2827a407fe1201c4a4c82956318912d9c7a6e12ab2f69e17b83c0ec42fc9abb25629e66c37b8583c2ef9bb":"bc9ab46c8d61620d078ecd0fe2cc9796":"f163a11a1169c6befcf999c68253f24c35bec8416d7bb738309e8f4cdaed4cc4146bddb71388ffe6361c44b30ceb76b4":"feaa6a8a357f3427dfb745cd2eebb3bd893efaac50cf6fcee3495f6292257954873dcdfca9bef8cec8f032d7fc378481" - -AES-256-XTS Encrypt NIST XTSTestVectors #161 -aes_encrypt_xts:"e090673661378f59af36db6c310630512859723a0404e766df7eb47253dfc9b74115d61dc26e157e09f7660de9ef984751321fc951900977073cad10a3124c09":"254d80b21be5f7654260d7223306c1e0":"40e5953642e4d13a7aa95206f101de8c98862822e1c23ddc0c366ac656a26f859f4244462fc33153f3112ca966bd3beb":"f66665211b4f95ba2fc9cae36a8f3a7789e60e802e91d8a1e6037b5c237885b0767df9c92de9ec3fdedac971d0c6bcdc" - -AES-256-XTS Encrypt NIST XTSTestVectors #162 -aes_encrypt_xts:"ad7dc36258b42180fe22d74f9f82d05948dc09102c041fc646c7c0822dbc0dfd25bbce142d573cb895566615593fbef46aa3710705a809179d6e3079147dc1ab":"494f48e8ecd7fe9af1fbb56d5d6fd1ae":"a4a57b20a0cfa6c9fd0d2f6aa30c130e3c3460a40e7ed4b06a08a4b6b0a3ebe2186cc61a0e8ff372402af501a8fa06da":"0d769bd9230cb06edf453084587bfdf687f70b8acd7501ba84df52af19badeb4b3439e03d1627b75aba2881b8f68d371" - -AES-256-XTS Encrypt NIST XTSTestVectors #163 -aes_encrypt_xts:"4d6825a1ca1ee2c879ff83bc842fb310a2e83ec101bc1956de43794aab03fb3cb6e993471ab1a724ea5dd9c57ca2736884d95ad930d9f6dd59f6ca751b2f5712":"6ff95ba9982494170476370457f6bd80":"501f6d9c497edc87eb0233c035d6601c3ce8460229f2d14156912d8d0ba15b6416eb837e21073164b456f0f7c45646ea":"8cf64aa880939d899634216abc9ca3d9340433cda8ffdce272d4e3e3a6e84e2ef8644492bf6acd1475a9295beb4f73ce" - -AES-256-XTS Encrypt NIST XTSTestVectors #164 -aes_encrypt_xts:"6a9bdc0fb0ff6ae2505f4b745d74597c3923e8c566dbedfc4b75d63987cbc2ef275a15c27bc2b4f34c0b00916f43cdff8fb13b448b4cfec1aa5915ffc6a69a0c":"216694bf2f49ad9cd6c9df880b0b8dc6":"5cf02f7f10f17483ab4546df0ad70523e3f43ee4a743d920ca4f320dafd43f9ef67d970f0e5518f20ae9a0b34b514a0b":"bd3ed5ec110a230bc52175616e0135a5a8ed4151a64c49bc988514b870f75791fed8ecf8e6067fcafcf96c0a3affc7ed" - -AES-256-XTS Encrypt NIST XTSTestVectors #165 -aes_encrypt_xts:"a1a8d702b9820db069b716b994ecfa26f269e2155bdef78eb460e588aac7a059ebb9158795e4ffce42f7c65e30ab7eb8e26608dee93b4f89fdc12699af0466a0":"5fee20bce0457000b1fea66d0ab536d7":"1181679dbd33ddebdbf6a0449316a74894b72d01a21b6e96e51eb1c30d59e8b26358c1e87e09edcf8d763422022b4252":"fb6065eb25aacd507e134f4f3cdbd77a46748e347574a7685fb756b4e49569c940237e43ccb17c04c1f3d6d169c6ee3c" - -AES-256-XTS Encrypt NIST XTSTestVectors #166 -aes_encrypt_xts:"3ba55c673b309d723921dbc3c84251bdc2ddf76abb963e23e011fe7214096cfaf6c84e3897af04f6081c157aabeb87bd2fdba4be8a9c452fc77b02ee5ffde802":"5231319bbd17b15e18afd13d02d8f122":"4c00323d6781443e5e6e2181e51219a746d9c259a9c13f2a5b8efb10424da7b86f97f87c1fb2bf3d3f163c719cf930ba":"faf2616f0dfccb96bb44c786bcb7b80b7161a55657309559d590895448145b9d6dd01aafb3b3509c93eb5c394ba85446" - -AES-256-XTS Encrypt NIST XTSTestVectors #167 -aes_encrypt_xts:"7e76d932c8d3edf5990468db816c9d35af407c748a43078c46540673d8b34406a960d338b18166227e88c08bc69c8d52723a1c468ff6a201d2d21a63ba8a5997":"a39603c815ff257354cb48f99825f675":"0749d735c15504fd4fbd6a8763eedce9929a20a0f994b30fe541a0e0ea34a01c46f9dfae701cb25c1030cb1cf95999f5":"0c22810005ecc4bbabad73f4db66c10a1a624b3f5ecac922cec8e1d3ec50011d52109d780d5a18ae7db6774c14e7746e" - -AES-256-XTS Encrypt NIST XTSTestVectors #168 -aes_encrypt_xts:"dcfcaacab2a5f6894ae1ffa3186d43770828d49a5fad35ecaf89debf184538180cf5772f1f9115d60813951094ca389d0c4b90a76485e79ab6f6780e6c4df243":"01be8643c67bf7c9cba96e62c4568e92":"7411783aef37c79842410e7be57d1830e1f0369ba89cbe2087c3f7967df44c5cee14f2468bfd41535ce09f28c4c8b027":"41b22f50b116ede2dd5cde9cfdc78150053b2362c412933354f2d54ab995e35f830ac52fb0be748473f8928032301a1a" - -AES-256-XTS Encrypt NIST XTSTestVectors #169 -aes_encrypt_xts:"426d4d31f88a5be86330c6512816091cd05eecd09f8b27af1fa13936c9d2de61ce6051fa64a9e621f1710fe8bb1b002e73a84164628ea1ff8e78247012cdbd70":"646deef6e9065772fd576c172aed6100":"309d9e8811708346c6a79ee019ca89a5a9203b12e442b6d022fbfa13ff55d16968a6e82de49e4373766befb5f7ae8da6":"452a7d94597a084b0d4e8938989ed937136fbb2e56965da0c1505230cd369a8a996527f001a30e90bb26b9b3af272f2e" - -AES-256-XTS Encrypt NIST XTSTestVectors #170 -aes_encrypt_xts:"b67995bece5a587ffdfa9d63ce82700eabaec701312aac591ae4c13045b17832fbffb96fe953be24ad4e22ac146eff566453fb9abec7c80b7d4f849dba96ec2d":"952d9dbe6d2b70eca8f11a68bd260e46":"190e1bd6674eabd5f5954a439c6748c820d036913e6ce075e2c53f3a1c53dca62f99a2377a42ce685b33edb63917b2ff":"a458c4a4952c0cd01c096624ffe94f911197691b658f8daee6b1b853775173ded5761e07d9a1a39ef72d8b6242a1422e" - -AES-256-XTS Encrypt NIST XTSTestVectors #171 -aes_encrypt_xts:"f1798b1cbe9683b9a6e4f24583bddde5bffb82381150cf6df71a3f7755f1c49f22f18a6703ea82266f72aead930307d6bca13b99b4d2419e9435e97f6c11ecf7":"0858df21034a36ba442231c543be1945":"509e85aa57adfdcb51f750e096a17c441a83d9c314aa3321ad4b6a5d77040637bf24854fe01d91548ce0c622e5d7078d":"a9a9e269651078e4fe95c631cf22e39f83ecf09e6ea231a79ffc26eae32f706167a546f3c30c1587fca293803fccb198" - -AES-256-XTS Encrypt NIST XTSTestVectors #172 -aes_encrypt_xts:"5c7f7a36080178430083ff5492ef77260f680a15a76624b89e854c94f0488a9e7daa4f33011f91df5e338053f46cee650fb0ee69f8c215755a4a63cd4228c219":"a401d73c8875e759aa3eef53e0fb6263":"b1e629a62a03ca969b16915202bcaa09e78ae1851bc88581164968a5656c82c0e5c403ba54b9b5ed9babe8b0751d1b34":"f5bca60fb9352b1de04d7129405626b3a474a264fbac2d6be119e1d57aa998d0e0e4d9f9c976210d93c465a3e360cd92" - -AES-256-XTS Encrypt NIST XTSTestVectors #173 -aes_encrypt_xts:"1911e3774102c5a38f4bc1af2bd9111b43e9a3df53bc0e7134adf4c90801b140ea65fcf9e94ab063d94a3de77e775b1c27d1b2de8c4e48167fa54d838297fa28":"4ad18ae1a630c169bb93ffe98168cdc9":"399dd2e00110380da43d67a81bef6169898754cc8f75c13674ee6a652ab0198175c98b2399edca0f592ffb488051433b":"e055d709d88b21bf36cb2700164d508b690d8262342052abf807a9df093658ec8164d49fd630091e01536e962321354a" - -AES-256-XTS Encrypt NIST XTSTestVectors #174 -aes_encrypt_xts:"b6bfef891f83b5ff073f2231267be51eb084b791fa19a154399c0684c8b2dfcb37de77d28bbda3b4180026ad640b74243b3133e7b9fae629403f6733423dae28":"db200efb7eaaa737dbdf40babb68953f":"77f4ef63d734ebd028508da66c22cdebdd52ecd6ee2ab0a50bc8ad0cfd692ca5fcd4e6dedc45df7f6503f462611dc542":"ce7d905a7776ac72f240d22aafed5e4eb7566cdc7211220e970da634ce015f131a5ecb8d400bc9e84f0b81d8725dbbc7" - -AES-256-XTS Encrypt NIST XTSTestVectors #175 -aes_encrypt_xts:"a4be45694240755787649bbfe9c62dca7955fbad4a2be15d4eef2c703696f12877ecda778a0d547f5a1a4328f2ae0db5893470f967a8967c75881370f9d18b4b":"d66458b1e5e382b006b32c9632a2e12f":"0e380a0ad91c31ac1e95d6c3d26554c38915df0fa1e9e8f781b34969c7ea61347b74cc807c7c603b35cd1593271fa938":"3fd7b0b5ea66cf4e2da1e690f6e80660638b1a3f84cf212d9ba90e7db14177a3c4eda89ad357af4408a7a342828a5dd6" - -AES-256-XTS Encrypt NIST XTSTestVectors #176 -aes_encrypt_xts:"47c2b1b4458af043441a1461ae7326113fa2dc1b7b35cba14eb8473db169a17d33ba78659fe0933aeecdd75047b1c986524c091c778c545722cb459430487b55":"87b1d01d0525d0af0bed9e059e6946b6":"1cfaaaab545fe967549f0f28f9667a0f7d2ea55fb7bab2ac4f3917a76bc309155780853d2e48d2e8217685c4ba909cc7":"3fe4be324991aee1a628c3e5c14ef6d7c4125932563afe2c08a1bb82234152bfe78228b40acadd7d398cf20f621eadf3" - -AES-256-XTS Encrypt NIST XTSTestVectors #177 -aes_encrypt_xts:"6013e5cd1c6f341c2f37f4f35583dd222c06207a446f2e10b71743e0d6164542387089692d975e2f50c5d62e0f18c20570354a737b71514a2beb7a49cc941a61":"d7ed58c0282398df330ee851872bdb46":"c79f127174bce174451306e6dafeaea0e1bab09970b5aeb0e041f1e5c1f925667b7902433e7a34b47a19bba216bb622b":"831a0c7330e96088cfd14346c0c53f2e4add5a6edad6d1a80cb007a5f25aaf241a195c0243ae26761044f274e9000b43" - -AES-256-XTS Encrypt NIST XTSTestVectors #178 -aes_encrypt_xts:"53724613045a688ebadd8119d87e28a1674178fc42a40b54a83a61c0021afbcb8d6e6d28b6c1a5138c6b2deee472d61143f81f45dc697556e2ce9f7197996b83":"b00bd9829b1024629a1ee362bc50158f":"6a131dd6bf6f35b1d08e50951ac2df6c2239dbe2c3b8283cac688ee97363544506a295d86e39abb0ae730a952be896fa":"0e2bbc05fd817f098b0d94408c8d65704901e8a63262032b0e7b03cd6960a9ec0366aea05d3c2002971efb075396db51" - -AES-256-XTS Encrypt NIST XTSTestVectors #179 -aes_encrypt_xts:"df35e4d415feaf511203daff594843a79ca3f164c954dc3cf70d660a4d3628ac7ac38218ecae74b433e3b0e6cfe21f78fe3ed3fc02f3bfd60abe6b529912a7d4":"79178a9eac0958a622214a2c4f2b2f2c":"f0762872bf7795392f75708ca33fda7886f9f1c4167229221580707804c283a4e86e75ce9cf4dc310ce090e590c66241":"26fd54196b4ac550342ff46e2e7f442540518e01467ace2da52876a54636626f1e986df916e36e716fc009e5fc9dfb81" - -AES-256-XTS Encrypt NIST XTSTestVectors #180 -aes_encrypt_xts:"4324b0fcdcfedc5af7f8170c157ef68680197f5901fb5f3c9b9f85db8319293066a4e1a61c5943865e7b2de129dd3a6db5d8865ac55722399a58822c4e51d0df":"c0eb880e0ee09b46d3d28ad7b363a851":"e6082cecc24808a6b25e7659b24b71e77ec14887750a01fb9d387c2e90acc77243d7a0dbab70e41c34594a4ad197c8aa":"d3c5c210afd597feb2e188b0fc08e77992e2e75bd53cd60c507b2ebca37c7b7defadd06500ab67af7c00e5918fca8a16" - -AES-256-XTS Encrypt NIST XTSTestVectors #181 -aes_encrypt_xts:"b77c56a9784f3c26a8847114a31ee2cc3648b44295651267df3964dd689fb226fc9526da77a02ab04f332d39a4faf9ee7ce3a7320f2ce9c21fbd5536506aad07":"5207aa755b7874b559139f6d50e3c5fe":"b2268a28bb39a15d8fd90b5ca7ac698fc2f28206e0f2073b543e567969baa69397aabbea9fb90062d1a7c395936f49b4":"9ec9552e50f7620b9b4fdcf9df6512ada43c03a14a32e17a7d48cf5378f9f855a2cdfd8054c677ecfd4f2bb925723496" - -AES-256-XTS Encrypt NIST XTSTestVectors #182 -aes_encrypt_xts:"17230072ac4f7af2661c26325c88565573fa05c270c53193ef3b52c40b86ae720cc894ca4ce8510d4eac659ad4aac0f9c9e0a65fec76ce9a2296218fca6ce500":"5246b8bf6a28c8799101dcfb375f83a8":"0bdc724383d8f76e2a921940ec84b0701eb37b8f5c35072cbe48d0fb8792b87b9bb99d6ca40ff864562b720745712f26":"9c4b9b19b48c3d1cbe13b0b08d708345b0f25e4926f633480a9f52ed3e30995375038f641267431a206e3eca599fe6dd" - -AES-256-XTS Encrypt NIST XTSTestVectors #183 -aes_encrypt_xts:"b625879ad3cfcf11d39af454007d0483afdc2724ffe07c046db78501c9d04cdc9ca8a00fa6c6ca14e3987991f2e8f53504390a125d471c95c92d4565fb3b1928":"697b65159bcf2b0871cfa8e070631218":"758a608a8d146167be0283e776aa493fc39eee0cd6de71c1b57a5c24551d0f58bd55fc60814a661aa0a17d4c54ae3e43":"db2552e820f1aedba4c17d0883745ef307c4551c7c8b7dcf457ee33bbf5d59e1fe95044103c94494569ea31f00ffe1e3" - -AES-256-XTS Encrypt NIST XTSTestVectors #184 -aes_encrypt_xts:"2efed72f6fae0c139bc12de5a1c90a05510bccd2d83fa55ca1058a9253a6fc55ca7885ffc10ec6128046f87cde88b1e8f4a237e24618ead6cdc4f4f01995800b":"cad76b7158a61465586b61272e0864ba":"0739d41d77d69acc204600a4c84334c4c39d3effab76e063d575baed1c956bcb67691983d55d924dba3f1fe79ebe4c20":"0d6846f139511d9e07888dfa7afb1ff0b029f1b6d6d8a35cd4130637fda958e824c9a9df5f6e80f80a19ee2731b12289" - -AES-256-XTS Encrypt NIST XTSTestVectors #185 -aes_encrypt_xts:"924379aac0cb7a4e2de6108b506ef501490aeeeaf16d7af500b4f2b8f313c2d7738f499bc42adfbfdc28759ce68b4cd5e57e62b469e3aad0941ff87b6546ba14":"635e4d4669fed1c8c37e1f0a36b37804":"1cf76a9be30e60220c1828db68d45d96a0d6a3b1fe309cb1defedce851b39b07caf15a822e3d60372f8544ec906b4add":"be0406da120d4cc1e3bcd9a44626e8b5b3b550a23c6f9279940ba7d4f71e275088b92a958d4d2ad5111bd8f715de4c30" - -AES-256-XTS Encrypt NIST XTSTestVectors #186 -aes_encrypt_xts:"a7bfb6d4a54484c2909b92339b7dcf176188f3d4182d9112243714fd5b9c798d3d7407be99852fc185688e58135a76b4609daeeb6c1d0659b120fe7505a4624a":"0d3b9350ebbbaf2a1416995424a7885e":"4091ebe277df242e8de6209908b6a8e6973cf4531e23ed6b1b76cf0e8efb652d2cecde9b697bc65afe873603dc0a70a6":"7b205893a05873a82f7ab2132883685e0b6f20f05445d5a0d9b2fa8cdbeb1037239b05d715b169bb99d0ee9b5ffef742" - -AES-256-XTS Encrypt NIST XTSTestVectors #187 -aes_encrypt_xts:"16d7db8d519c2974cba7c44d3a2a4cb79773d21edb3b359cb20c716570bf3aecab9dec3976d8322db4aa97b2e153e2b012c4eb1ecd2dca83f7c06cc370791f78":"d208aa5cc5486e0e27faa73ffa767623":"81ecbe0ad23a1645f5d2891d78da406a70d540993c3cab508859bcfb2d3a371c4331a380fad7caf872e74bf861b95bd8":"305d4cf4f7f9a6192e85e55176a58a85e5795dd359417fab2e72aaa13ee6e093768a4e741a00f4d20ed572d6af43a121" - -AES-256-XTS Encrypt NIST XTSTestVectors #188 -aes_encrypt_xts:"41e9c3d70302fb488034f3c1f4156d09f951e19ae00ed0914d7b9ea688bd4aa9a20fdebd4229e2b3558411cc9868152a436fdf0b5d10eedb2a581cac4252b9c8":"2cc5ddbe77712002de095aa5de31d429":"306165583eaf16391a31512c8d2487431ecd714baefe609ac478e41e6d35a694ca6dbec8faa3f814844dc2acddc157b6":"73593426603a768f9a151894184deae22df23584374f2ab1253bb38eb99d1f208562d12d81ea34bb0f4fd183aa5e9af5" - -AES-256-XTS Encrypt NIST XTSTestVectors #189 -aes_encrypt_xts:"ee5bc150f08110aa95700f96abfefad196755b49068866dc7b2e251260bde5226b2a234c8043309dc4ceaa62d62c3eedaf4440e09f6c44915db7ce47a17a411c":"11071e5b327fe8acec3b9f81fab37141":"134a04de6a76beeac202f48f656e101e27c2856384d0bb417a1779ca29403dc96b382830e151764c2513ceb4e572aa27":"b4dd7ed020d3121ad9d1a58760980e3e7d203d84fd7b77c6d4fa3dcdb29f9aa6803074aeee6ad8e47ad0dd01a2b0ab96" - -AES-256-XTS Encrypt NIST XTSTestVectors #190 -aes_encrypt_xts:"458dfebe5a6e381da894a1551b95467f19fd475be6a61930ea7707c4f21f88cddd7283c59cc4211af68cc4273ab0e31bf24bee161a5690c754f46ee6392eb6fd":"eb051cfab3db35ff7b3919ede9f79e93":"506a8565eb8d3a39e2cc9d32eb477cbbc621d6451e61fcb8528a6b1935071ffb31f18980ef586b97f02e257e09ca5f0b":"95943d6d57f17f5d626518cbc2c7175ab97cf74bbfc8571e8100a921061e68df4e193b53e4256356efbc42969ebebee1" - -AES-256-XTS Encrypt NIST XTSTestVectors #191 -aes_encrypt_xts:"4224d8d8e7c870628c9fc4a2b5c67117f68ca06fe9b9d0fabc0de18ce9ff2f5fe2f93c46eaf42c5513af3880bee73be8f6cd051e1172c1a79d8a5f7509b3d170":"d128477c0509e96770e907a69f316f11":"5511e976c5929dc506b12e3a13740d59799c31e6e4f762ed3df15085cd5a99588813edbf30413a48622896a690e4795a":"ec0f79a240589de132bcd23ad5b1bf6218ad82314f94fa43f918a0e342d1d5c719d12dd3a70984d7b6ea2c25f71180fb" - -AES-256-XTS Encrypt NIST XTSTestVectors #192 -aes_encrypt_xts:"30788b62febec41de3d01e9375b01ff3c5362a81b4ec0adf2b4fbf4aa79d2654a1efcf89dddb2b4aac7c0c25ff7d5e631baee8cf5ff46f2c6c440db08120f798":"fce20063b9ce5820c48583d856c31d5b":"45d5ba3506f5510256a9dcdf7a69efe9d2ddb191972c10ca3c6b820aabea59c8c02262df10b24471723129cfb46647da":"a7c2aa4f19ce66a3c2b15c950783401c547691eb06740971dcd0f1b2acf2bcaed48f569b799b41b8d613f2bf4d7657c0" - -AES-256-XTS Encrypt NIST XTSTestVectors #193 -aes_encrypt_xts:"1b7424cf9a4598a3f6aa1f15267e9ae0c4b2019d0665e9f7e7d4d7fa8871884a248ac042a5267dfef73c51d89bcdf01a51568dfccb080b6121b70f6c8f2416c0":"c83836292441a0dab60ba7312014d9a6":"943d20b70e72cd3f9328048933e8cd2d639d9468251c20232100f162dc5326c78edde144f59006ba4a886bf8de6eeeda":"d398795a15f9de591a897712bc454d819962a9ed1e638254cda815e86d5a9f297b017274a55179e6393ff0e5f1c49e27" - -AES-256-XTS Encrypt NIST XTSTestVectors #194 -aes_encrypt_xts:"2501f6f8fb11168026fdb988879d2571679e69715e89d5f142dce3de6d59697af676a811c6fc255554486b4f82997bb909cad701cd2e0f269450128faf23ec1e":"37aa0356bc9f948630c6e7ac50e9b381":"b0b198e498e685fd761aaf775416972fab373e05b4d8dd8640294f473a04bba1a3b1634cec7c188a0e9f30530cc446b3":"000493368e93d01cf6800f4054da92d74867b685419e2f382eea9c8abdc421469d063609bd0cb7e433a8ebfa652979e4" - -AES-256-XTS Encrypt NIST XTSTestVectors #195 -aes_encrypt_xts:"073d56941b536ce6567b100839c8ca5b97827e58b4c849e2be549cc49e690e15f5869311094c6b8227ae3c9c0fb24d146ab24f286ce9fd50ee06293501bbafb2":"ca51fcf3fe7aee41c6e482e9d4df171a":"b62a3c1084b5b2a1ca930cabf36e3df93ecea8ca45029af19479d866c05999a1c24276413a4d1ef4bb8d85714cfd8c79":"74c927e7a7eff446f0f3b62d2b65fa14e2798a7fcd1b88df941002fa6733df5e087570d4556195e3fca5a8290008f974" - -AES-256-XTS Encrypt NIST XTSTestVectors #196 -aes_encrypt_xts:"c581a4cedc8d412bebfd448350d088bbc63b731da56041fd9cf34ba9e2f47232a3da784530bdebe90f9f0662fc14cc7aece6cb28ec4eaf6487a240b5f5e5cd7e":"20922c21dfc3478fda875ffd0ccd06d8":"150a747149fb2ce6e17312fef0950fe85343b356f37541c9e051e464b628a6cbbd51a2c84a5dbe6e886732949dd0b95c":"57e865cd82cd9c841add8ba33806d35a83728a1f10320ad4e09f66ad26735e447d3b1d8a396e67f4ce84ebbd0207fc67" - -AES-256-XTS Encrypt NIST XTSTestVectors #197 -aes_encrypt_xts:"f3fd9423bfdabec6536aa498c5a83c0616269f89666e5f9aa1843dd0103cf8e5badfa8c5dccda59987c3ac01c27d6315196fd5bb484c545be246e3e10992209f":"6c01f321222682310c6522b74803f823":"66cb3db29d13169a8bd426a88190c5e44b81de0f7561acdf226528df15cf0ba4ad50f02f958669794351acb1c612434c":"6f53bf8590f00956c4047189da666ebd328c18806854ebcca99f8f18f47582bc58945a9d61bd13ed7a49644dfef206e5" - -AES-256-XTS Encrypt NIST XTSTestVectors #198 -aes_encrypt_xts:"31dd1c3355a05085156a51d2133365ba323d5092b6c5d1945ce68493915d2d41c46a4ec60f62c3f9ba41382c06d24143c71f88c7b900170fd30aff02a4fa6a0e":"af5c1274eae7d65d3aef19b3b2d6cc45":"37d77d18180e205a19f057c9beafaee099683d905c9270434b065a4426d15a4c68670157a9ce6752e6dcf61c8315c93a":"2beafe1310a40b04c07cf8136acd2cb9a1c6e49d468f1d727d18e90b9c2da77ed1ded5ac0929fc8a53079c23c5093c05" - -AES-256-XTS Encrypt NIST XTSTestVectors #199 -aes_encrypt_xts:"2937ce984fd09f899adb653f0acb7725ad9e493bdeb520bc527cba058049a6fb827e13ed6e67f02d8f1af74798caa8bc92d77a7db30ddfa7a3b3ef5d28f546e6":"9290ecd6483382598a540e1b67c99f9c":"aa2fd60e91f9f001233f5617580266486a0c5a767695f60fa45fa067d13b7cc775431704963dd9426b5ed8c84de94b61":"9f743b2d5021a796c9ed4dfd043cd7592f762cd7b299d77dd1c1d7e30b2bb8c4b055ec6988a08ca0d4cc31f17d4461c6" - -AES-256-XTS Encrypt NIST XTSTestVectors #200 -aes_encrypt_xts:"28ab33a47b32dbe9ac4e33a7dd3bdea0fc47deae790c3f5c24cc4e97229ce0c0a15160ff5cc544e2b4e03b4ccd55cc685e93e4ddb2fad8879d0774e92780c521":"3871b04b799f7c572168af16efe880cf":"abf99e347e086cad3676dba7d8ad30713de3852514c78db83ad75d75b686bab066f62431cefe3a98de7b713b72c926fc":"3501de2f9e6921c2ca6c6f5a7d642e7c6ad6cc1fc8f3ba496fc5ddc6580df5584bfed4bd02e48d898dbd06757b5f5b06" - -AES-256-XTS Encrypt NIST XTSTestVectors #201 -aes_encrypt_xts:"33e89e817ff8d037d6ac5a2296657503f20885d94c483e26449066bd9284d1302dbdbb4b66b6b9f4687f13dd028eb6aa528ca91deb9c5f40db93218806033801":"a78c04335ab7498a52b81ed74b48e6cf":"14c3ac31291b075f40788247c3019e88c7b40bac3832da45bbc6c4fe7461371b4dfffb63f71c9f8edb98f28ff4f33121":"dead7e587519bc78c70d99279fbe3d9b1ad13cdaae69824e0ab8135413230bfdb13babe8f986fbb30d46ab5ec56b916e" - -AES-256-XTS Encrypt NIST XTSTestVectors #202 -aes_encrypt_xts:"e530b0dda11865624e73a321d6ea17d60e501353466f7686cfadcf7b75791f7e2233f08d0097ae8dceb50cf63e6e95518476213797016094dc75d96e7a9a4c56":"968d77c9b876e9b5b7cc6a2494c16b67":"ce37427ee378dccf1b3dea3b91612eb7c7c4436c6bce3846313cce952693e0b9a8d5dd20a67ea4b3ed985752e7629893":"87b06e311a58866e58b522dfe90219eb1d350a95960575a3ba6c3d53f781f6d09f354e79425cb643eee2b1a00492a67b" - -AES-256-XTS Encrypt NIST XTSTestVectors #203 -aes_encrypt_xts:"d1f9cc7ed9a0434e194ace026dedbd1271faaae855ca8b7a6e23e4fd13a2a2b680ed1131aefd06e023773e8915d9bc04ed1bc4260671c0204676c2148ebcf430":"b7c9054a9af838750afcbd736e7b1047":"5bad620098fb1b6bea9d5118a7e89b7dd59861f0566ebd87f9c16d84e7a8b5dcb721c7c5a2e2155922aa82348794325c":"5227c1299c1287edbb53603fc558697394dc5bfb6aff6356850f74191d990c2401b01be229f54fb3aeaff0ce8f6b0181" - -AES-256-XTS Encrypt NIST XTSTestVectors #204 -aes_encrypt_xts:"855a34fac429b15d0406e197bf02d8afe411a16fc417f4e6255406a072b5b0accbd9d49fe84922498c370f52a2f1bf05478f6d7796ec1179c374b82c4edce4d2":"ad6cefe6705f37084019e0c35576d463":"67c195a568cb0a37de8f7261fe15c25fd9912afef57c9e9482ae13d2d817558ac10179e908dedf8aa8b97cc4844c30bd":"16816297d988d987c82b8a33eb9259ae48c85c1ae1401de30200e572582109e88f8ee8ae807371b3fab0edd3400e8cbc" - -AES-256-XTS Encrypt NIST XTSTestVectors #205 -aes_encrypt_xts:"7af19fcfdbf6a2e959f15c906c0d2276010c94cc74f3fdae22220f8487fad572db7ad21cf72bfa44a4cf311045e8933b770430540da4834c909a310dc1718377":"25bee7a7b7f3cfb3660fab619b8d64d9":"b39032f82fa5dbe8f11815ba11c0036b44dadcd558d0a263e79caab673bfc6cc906b35c8a23afedf33b4ada9cf15a79c":"a17ff069a5d2bdc11052e856b64b03fb8f8dff05b1fbd9ac39745f2a970e183c8297cbf797ec0d45916d2851c465747b" - -AES-256-XTS Encrypt NIST XTSTestVectors #206 -aes_encrypt_xts:"b9e0b80c434881a979151bb6364e27c9986f4c72fa76c4f38d3177af7ccb94103477dd3d63024ff17ac9cf4258ef0be570a5a3aca2fedac37d9a48925a51c529":"98083c9386a6d58cce570c0d0abac54a":"b42b0a8201ee75707761a6b9c089f9ffc431c47824af69adc95eff98571427b59206ae1cc3ba8da79e73e472ae062711":"b0d5dafb947784df27e2a1f8e512858cc795b7cb4c0e08e5c527c912f5acd63adadeabbb697358cc1d2a5d3c62e9687d" - -AES-256-XTS Encrypt NIST XTSTestVectors #207 -aes_encrypt_xts:"7f9bf3748f2ddd3a121d15a050c5dde9f41f310a6159beded1e99601d3d2af934f8206902ced5f3633a00b9be391b9d06c25a8383116fb9f01bf4a0c116776f3":"9260004acc621c658e8f6707358bd074":"f6c24aa94d7bf049f7dbaea25b55ea8f742cd1906a4f5c1c7c701d922135fc7a81232d1abc269c93c7145472c43f2d2e":"2a0163558171c8762c1757c25ee7043dd8ba06ae16f4b401f34832391c4b3ac3dbd089084b7efadbf7ae8dc33264b89e" - -AES-256-XTS Encrypt NIST XTSTestVectors #208 -aes_encrypt_xts:"41302e54c603a61b79d551bd3d57e6a38f86124ee76585af81abb023ec8ef3cc53d77600e5f45e968264a12f728851dd57fc888cb978c227323288447451b241":"fbfd6b005dc0f052c8b5bc2b2d602af0":"547a2b9299a5dc98c85182a45a8d40374614deaf0d25eb8cbb9101b82a55a37bfc78667dcafbfb464d86381a65bd01ec":"e6bfdfae2677287baf8ec594185746e374ad6bb98a80fbf865701cf56fff6a81c1a666dd40fb1084ec623aa8165945c5" - -AES-256-XTS Encrypt NIST XTSTestVectors #209 -aes_encrypt_xts:"4da540f88e3bec25814aea89fbb43737f0ccbee99392248e69f1987e00d100018d7b23de8efff8c5cc85b0006d16900436a699fe5c4450e194fd9391b8485e6a":"60b25f3fb580d6cde23496f660d1459c":"9e09d2cdd844decd7a00c71cd7ba8885ba98649027cab1452c233bedf92c18c2d720d1279ff6fcdf3db2fd0ad99972f2":"89738935e791f1ccc96ddb6d1e1435eb866c817557c22a0eb1295592bcc555710a8c1bd5dc257a5d83e4329acbd7b480" - -AES-256-XTS Encrypt NIST XTSTestVectors #210 -aes_encrypt_xts:"50cb392fb40b931374c3405601ba2764b88e5e63d6a2a3a183eada949e21c578a1a1b55ee0147856f72d3874368e13565213204833e608ad5ea084e163d05d6a":"6ff4b5ddef5128f9ae292b984bbdecf8":"285188e2d5981602f042908489a570580b89c50d3f10674bd147521bc3a69e1ae0db35218547e3744f0c2e5489f9b62c":"82876e4a69160f0249eee80423a8749888156f15c61f5a4b450e9f8f77a86baa86733f2d453a7e4d09132582083e7e6a" - -AES-256-XTS Encrypt NIST XTSTestVectors #211 -aes_encrypt_xts:"9e01a04a3b2f66b8e78421305affa696b5c1cfc1c90eae00ca375dfae5133dd20368596024943f6101dcd3653723f0e785becaf22169e8244e2bcb63ea0f1811":"201b298202cb180722f34ca2a025c791":"65dc6a43ed1c2a8acf505f708bb4a34196c79fdc1e86cedaef17c5591b6683b353123cc7a1dbb8fa90e0ba9a488cc3bf":"8da1bbe05f34555d72d5498a266a45d3f42f8456b925356df3ee7476115c59d237953d4f357d6505e0ef107bca5e6cbd" - -AES-256-XTS Encrypt NIST XTSTestVectors #212 -aes_encrypt_xts:"2da8c026b078e512fc389f1d0aa4f95575ce1b7d3e23e9c6b6f2c2d5f9a12d5f1156972250289b4dbe3130b01a2b37f24b4ea35f6eec741539cdaf85fe5acce8":"cfac7c90008093e9700c6d0828a231b3":"c0450cf6088790544f355923e15cd72d643a7141b67af61c20f63692a15e35db38a84d47b7bbace78fb4d8a2b58e5946":"f38892550a774c5bbb23ebe182e6b2912e52853de79b082533449baa0da535df5f30d4f5951ce4d0342f060878ce474d" - -AES-256-XTS Encrypt NIST XTSTestVectors #213 -aes_encrypt_xts:"489a0b0ea71f3240b461fc8b1becb86f3f9844c4fd6acae8b20123c79d9510dcbbe33288a993e407517d86140a17f3254fae6e5f4a1b63c94b84618adf91122f":"78fb2890e7962081a8273cb1a2e6a388":"1e2ff2fdd015aa629f7c066434592ce808bb0e4afa34e555678c40b989414530a383d37664d0cb325ae2c94af98f285e":"be3be639292ede0aa1f258951e026c03c2b7299a7ddfbeae96beccc91edb696780e4a3675d762ecfb2d28529785189cb" - -AES-256-XTS Encrypt NIST XTSTestVectors #214 -aes_encrypt_xts:"aa364e6de2f0856dd07a93ee1198b2d83d2cf27f26dd29ddccce7f214e6b5d096f04404352b54ef4154634b5a47fae3baf6f05a30423bd126161a00c56267458":"0341b3c3a427488abca69a308202f633":"9388066de5c865cc4183f42e436838a98fdb4329052e57d1440b7efe7b84b877c7516ce7e63f5a37397da6561a176a37":"851eeb8fe99c5e8409e9af8f4855b4b6a2ecff5d7d330c3e07ff7b243150d3c1a8f9160a4327bc6fc791fcab71aee2bb" - -AES-256-XTS Encrypt NIST XTSTestVectors #215 -aes_encrypt_xts:"d7b55d450a709888c2e81ece078c69367c8a4c28a7b0a20831a95ccc6377c185272a2054aac1c7c95577894aa2b2bd2a3cf0bc87cc3919de750f44ba49ac769a":"b943cd22706fa4d675936f5ad994c437":"c510d766b3693a84247baa9c38bb29d758ff2155bbe13619b8fd6a7992e5a54a6c1daf4eb8ce763cee78d2b9ff24bb22":"befcac56e561ba4bb513f9dbcb0cda5498d18555f595bf8dcb6bad1495088e3b2e268809266f6c0850751e90a1d61fbf" - -AES-256-XTS Encrypt NIST XTSTestVectors #216 -aes_encrypt_xts:"4128a40ff005da011d43405a3dc4214d1ebafffcdf28dfd47bd7675a714b75a19fd81f819fa9654bf8228859d420d0cfe0a5b9f2084317b423c6739b8265c540":"de0d613bd82886c69f046625e05c4771":"81ee0eecf86168a0756d0807ef258e06b69d7b9e2e01ec0bd05b408387c74df9a1c000376dfcc4210099eb80781366dd":"f22be4c22a249d17cb4fa92d4d826517521712eddbecd98baab1fa462b0b94d636ce55f6b350a7fb7bcc3409575a3081" - -AES-256-XTS Encrypt NIST XTSTestVectors #217 -aes_encrypt_xts:"979d3095432fe13926466d81f76a03c3a97b4d28859120bba04ab039fc4e45dde6dea0c12dfb22b947ea805c21997d7d83dde735df04d14263ee81901e6feebd":"c45521359984d4e6aee4e750082b4aff":"4a7a241f6dbac0f7661020c29f2c2a2de686fc1ab14eb48d2b8a2bec8d1947c71ddd5d55d909d6e89117ff4db5ee8d39":"676474603ca0a17615f8642a0af2be79f7a1083eeb79fe770f4376a6e9bcf149f2eeddc158e4f8b194ccab6c7fbf804f" - -AES-256-XTS Encrypt NIST XTSTestVectors #218 -aes_encrypt_xts:"eae9203370d6a5ece7de37d8c09a556e7e8a7a0c2fe6aaa8138f8ae58a7e287db2470e841dc9b152fd42e44b764d240c66cdfef9ae3944346711ab9ef329c18d":"176dbf122409b7eff4156e6ae1112824":"c629649be641298e789a01db2e7e5907ec9d0c2436349f45ace4b1802033b0834e4607c3e070c1940f6a8d8c2e5b669f":"4ca724f3e2df333e826bf1f56282d4abe8a17e68377351a4858d493185e045613e436ed2d6b65b6a5d1cd522111251bb" - -AES-256-XTS Encrypt NIST XTSTestVectors #219 -aes_encrypt_xts:"4b08acb6b459ee038aebc951149e251d6774330654f3f8c3a4263f01ff461abe9d93da564eb83f2098d48f2a25cc55d50acd9d738f74cb06ee92156d797bd271":"62e7b4213cdf615ba78aa9ffdbf109f7":"60f1a6ab744aad7377f18e5d4836c90520b8879aee4e20a284756fbeda585d5263089ec22f7a79d3150c137904a4840d":"5b60589281336b88255b2f57f10c0e5f2eeedf75623775da46de824f238b78ad428f96ffafdf7afc5aa86739d9e33294" - -AES-256-XTS Encrypt NIST XTSTestVectors #220 -aes_encrypt_xts:"f7301e716790cee0c4eb7be11efd0ed7801da85a500710ce745c03ad62845d3b24cb118e05db4b56781085beaa4b74b193ac9e3db3f9969afea0c0572c2c4246":"22bd2e7be2b234dfe7b0d59728b8664e":"702d25a1345ad00f877e6dd53df92c9ce0e4a163315b1cf66967f962391005edd967e8e3a60df48964788f326f080ca3":"59ab157b2ffdf44f73c594fc3d3e889fbe76ae3e9a62d8844dd3d4f6e58b92049e28fe3dc869ff477251ede8d9ab0cd0" - -AES-256-XTS Encrypt NIST XTSTestVectors #221 -aes_encrypt_xts:"2fdab284390fa70f308a3f78175e46023e6c9656c256a61cf41b526d28a0ce1a3fa9fdf7f518dddc722b079ebdb33f146a5476a23187050563365851e3cb68d2":"cff7d8941e4e6d42564fd9099cc21f12":"db1cbe9bfde94fd981bbd24ef9b409a8e3ebc3306c91aaeff4487afab84f3bc85f025402b5dfd034bf0fae5144c40b5e":"5b2a66dff6c62884b9254690d9fa5fbdf0e11d07899901838fde5df15c7bc78dea2fc8b5b5c320de3197810299b7635d" - -AES-256-XTS Encrypt NIST XTSTestVectors #222 -aes_encrypt_xts:"5f1a7eef236b1fe4ac1654404c878a4a0ec4ee7c55a30daa4e045447e9893a253b5a10918b6348f85b110e92a57b2ed76a9c5342d764909669793c932ffeeff4":"aeb016d57ce55f9f4c2f1f94ebe0d2b9":"4ce97a0d46eea97ebb8c5ad5b0d4a000bf59c93a66f1c2b0ca4c816332bcf2aafdc43bb0eea1d4cb119995d41627cd16":"99565220a2ebe0b7c3aa4c3d5fbb16e54976915a54a0ec0a26dbec31105076e8d4d87faf2a25c36d8c11994e3ef65999" - -AES-256-XTS Encrypt NIST XTSTestVectors #223 -aes_encrypt_xts:"a753896b0be3b9941f0f83efe313534ecfb46f592822d6e284e54adaba6f54117cd87d8f584d5d67341be1cf78705260f2026935eafd30897fe03cc9e39954fc":"6f35b45f32c6cf17ffb84b43978c2330":"10f0327bf1dfa02d213009c7847cc31d5f2e7bdebab5b9f7887aeea472a769a8f8bbc5cbcce518603f3c08f14516bf2b":"cb9257ec818a740debecf3f7685ca6cb28cd47c324faf4129e635f707b719bdf382c9c4080b405191075d7b37efc6f05" - -AES-256-XTS Encrypt NIST XTSTestVectors #224 -aes_encrypt_xts:"a0bf48c242020cce49406bca6a60701b1a6900a7898183232e372bf4dcc13673c69292210b197011899c10f308005dca98b2c30f50626eed3c5b9f8a0c05c0bf":"973136efcb9d28e3990e6e09ccaacc72":"80f44acb5d39c5851b1a16ac9d4b56cacf18c2d6eb557702d68eda14169e7a4772dfabe574bb4021d484531b92bea96b":"013b3a9c6107115466f3b72fe617f5c2445a1213cdc3d551e5e59415319490889507e74625453d65c0c1d20137c52c5f" - -AES-256-XTS Encrypt NIST XTSTestVectors #225 -aes_encrypt_xts:"518f72b4f9ee1eaa6b1c479a761473e6589f1de0e6b286d64cafbb31927add025350831894f99201408fbb551617678d67f2caf201ca407852862a2a5c411020":"77c07601ea263cd0ddf5e2519ff2c395":"95e871fc8b10372fc9ea3cbf01ed93ab3233bec51180701a9e674322afda1d6d919b33d871d445c202a79ba916b87a36":"e1f2ada5fd010949b1de7536a8ea9480f3872146ce1528644a54a6d7f303ad95d8f0318213cff9b245dd904d4eea3a75" - -AES-256-XTS Encrypt NIST XTSTestVectors #226 -aes_encrypt_xts:"373932733e0e0e62a76999cfacbad13307ace06d8d3e2b422ff14d59d2c6aee14dc39313c962bbe0b36c1001fa11a8c5bb6ba0b2b4a8b50b8e1f91220a0e831b":"156ceed43aee9c7d237b398919132e10":"e6b1d6c0d7f07314da08ff33e66a8241b93cf6a821c6cdf43cfde86af94f0317a693ee8e6da24009351a19e4cff3b29d":"b725256a672918cb4ca62f9c7b308eb31e8901f8c678e345941ed924ac58d4775e0634923639d40edefe83a7b2a7af50" - -AES-256-XTS Encrypt NIST XTSTestVectors #227 -aes_encrypt_xts:"965174b5d01d7e799f6a6256d03d24ae4fc67dc544bad32d9262745c79b8ce4720ada383e07003a93eb907b154c9246623ed08ba7fc9e1537be8ea9f41cd7cfe":"30f6923942b85df99a8dc77ea2183a8c":"9bbe69dcf8a0cb16e36a6509d3f602b565a43a4af0847e3784ad0d8186c980cef7e4ace111c8a0a5a9069b9aa957af0f":"3af755faf78c2e545f2fac29a70f681166f88d104fd687bc63e4c741e8097bf94f3ccf515d5b1d03c9018ab13ed7392c" - -AES-256-XTS Encrypt NIST XTSTestVectors #228 -aes_encrypt_xts:"4c135d3037c1b5515dec182d7d59292206dd5bdd2d554d6a738b16b95e27fd9fb357517d6de25ca6adf2ac5ae6216bd21e39095f954bc6aae9503aede621bd75":"12c69f333247ae211beb5b52b137099c":"fbcf863977d06d60d843dc0ac8f969f05a665e04735897932fd24bd339adf44387b6b8f33df4539bb8da363a6aef644f":"810bf3e4fb0654c076d255be6ab60f9241c4a5a340ba55d2ce6282643797b21abb0af124f8d9b912330754b7b15d181b" - -AES-256-XTS Encrypt NIST XTSTestVectors #229 -aes_encrypt_xts:"8912e1559da5efd048a2b727bbbf5600604231b353b6548d011bed90ac7cd6d1edcfc73e4dc6c2eb81c164936f4795837af02446ba0cd108c93976f16291d2db":"24464822cf1d76cf3d0a732eb37e04e6":"2a520e2007155ab5d4252dc0fdbc4b7020fe78306f9514aabb5340943cc78a81cc499db0551e729e702948c65cc84f39":"bd9dd3caec54dc2881e53eb3a81d1349f5ac933f8b61c31950696bfad721c33e029de3b5590d971610631cb31cc09c1f" - -AES-256-XTS Encrypt NIST XTSTestVectors #230 -aes_encrypt_xts:"800071eaf8f823922bbd0b2a51e9b35e3bc3f13bb4da01ec92ed5dcc9e1c038197101c94227132fe7280d7d7e04dcf17028dc2af1cec04fee5ad5ff1c0942584":"9c90b8dccac883b4703ad293ad33b300":"08ad0d71cd03f12e33c2b8980fcdb4aae76c88f8d548a681c412b5e823d8ade22bbcdbc057f52c9b2eadb1ee503398db":"53fc6d33ac578ff9e1620e3505572f90b259c278c50490d790fdfc348f3b4d5ffde2a88664c860c55f28b86c0bd02b39" - -AES-256-XTS Encrypt NIST XTSTestVectors #231 -aes_encrypt_xts:"4d5cc26c3be36c57c1dbcf9ae7be1d64b1fdfa93266e04b0cd3a8db169a8509d1704184d0bf44bb03ae5dc3aeaa6526bbf1c190bc17a069ec5dd5836dd6942a8":"35e19c474dcfaace164dfcfe0dacecce":"2c569493d405ecd77eb1911d6a8e160c1bc54ccaa023428a669ddcb1329a92a9fbf33feb225aef9f16cf7c9b824f19e0":"6b721b1ff3bb2fc4beacb3398757f2f1a97e74a2380ef0324b3013a79bf952b48ff6ac093819749ebb354a65793850d5" - -AES-256-XTS Encrypt NIST XTSTestVectors #232 -aes_encrypt_xts:"184fb3132237433adc47fb2a3ea5bb9f22ae5a03a52da793ababd773cda0cd5a281fede3a9b161aac709d80c53da681290a94018beb1da60d3b7fdd764f4ef86":"d8709b421e6e7da75e226bf17c0a7bdd":"cc296b587e519a1f59040442426c3496519cdc8704422f77134aa0d1c5bfb551907441132c99e26cb77d78221cca5cb9":"bfaa158f31515bc17193c054a09aa7ce066a8f1963b292a7cdc89af63804292cd3b141294dd12c37ca186106a63a2646" - -AES-256-XTS Encrypt NIST XTSTestVectors #233 -aes_encrypt_xts:"e47075156af0a1a768975efe44ba405333649be33547bd477c0f0dfd6ad294d2bb625d477cc9eafb098df87e2277a35ea4c560b329604d200875080a3e51f1d3":"5b910bf36c7d057b27203333174e3a08":"227b504d86ebe6d43d127d1dc9247f87ed8810505a41d43357fd04d5446ab5501c40583031bcdb8ce96603906e4011c4":"c028a1b32d53c4de051bbe46ee7ee398846e54198b85635926ac281fbb19b6fb43a09a4a9e248ada8dc7798a7ed15575" - -AES-256-XTS Encrypt NIST XTSTestVectors #234 -aes_encrypt_xts:"3f6edc1f2c91a839f111cd4842a0eef76bf78ec71a76d3bba8b29c0348d8568776d6adefd44ee5016d28703bc74ad4d0261721420cca6c9139e9a1bc80d8a7b1":"65b54398ad4582db06b79d4a3366d5c9":"9d329be9874ee0eaa755e0094ccf9f0e6c897b8ef7beb78bbe4f7030de0c949220bcf6f92af0976bc5258428145e839c":"582ecefe2850afd18867267ddff93681fd2049db5a354d6b11c985eca449570788282d4d9a36aad8818e34878bfcca4e" - -AES-256-XTS Encrypt NIST XTSTestVectors #235 -aes_encrypt_xts:"00244b082f858988323307c43dafeddf5efbf89dbde9cb61c9ec377d9a3c5e7740a790391b965cf0ca60d7bcd6bb8e894f4eefb48651c192bafe49eb16ef028d":"6ede8ecf620263817f8a5828faf524f3":"12b3d9d5a2b78482947c24781b738e29ada9b203d2b8a88909408ec40458f0d8ccccbd585a0ee268f63139f4c568eed7":"401af685cd0b6481b4da4ae7deacc999b4cbc6d3b235aa782f09d7f49e769f5091288ca832bd24c2ba698d3e40385181" - -AES-256-XTS Encrypt NIST XTSTestVectors #236 -aes_encrypt_xts:"4de47c16cdd416f0a38a4f06ae05b46f739ef9726c3a3cc70fc8402d31ddf38bf9adcec3e38a0d4206123aed7d9b41461cbae757e9beb048d1938223971e224e":"0da47ab72d1ffa5801069ae842d7692b":"252e868a6b186848903831b50bd306500dbbe7318c1e5e88d185ad24536aa8985c780b3187b90aa47588da3921798d92":"df991967ff6cf081832ea29b23b1daa122c91fcba56d89a0ae0aaa634322c96530c11c0aa11c94531e159008c94a5bac" - -AES-256-XTS Encrypt NIST XTSTestVectors #237 -aes_encrypt_xts:"73ab8193a73706485c5278c422a21035a46bad252a25b8ed2915c6716ef25c08262979eb61663eb52ce3878d17223e5e01d4b809163c421538aff01b465bf86c":"fa1e662fc3ce3bde4987cdd09df7a7a0":"79ae2464e02f635eaa2bd52eab4f4c38bca5087672f8f100110890efd62c0be4cf5ddb991b73a3186477eae0a0c1aec7":"0eb58b4184b4785820d0970ab796dcd7cc062fc8333fad1894739e13b04acbfd0452826732c151e6e01ad947e050f844" - -AES-256-XTS Encrypt NIST XTSTestVectors #238 -aes_encrypt_xts:"d8f8a4d3861cb94a22ceb520839858fa85c5f24a6846a71de6a16d615ab91384ad4821b62398481afd4838b9f43c61e0ba9c51154c658f0cddbffd45d7e135e7":"19ddb587dd877bfe42aef3135085b7fd":"a8721be1ccf73df0e0ae71b80c6cef9e0b432f48b3230d24855f0a568ee31e543af55a3234ab3276cb4683ba86219726":"6750f4c86b03c20538db00b7bca155e6d2354cf74c8e7bd3589e48cb978b57e4b00134a61475d65c7b3c0738ba8f4f6e" - -AES-256-XTS Encrypt NIST XTSTestVectors #239 -aes_encrypt_xts:"f2d66c8c7ef1b37256300ff61c675bef4906fdf74971b7983c91bc9459ed1f420b54e039d813c175cc56e4696f0fad55abf67e1e5a7613826b1de744cb5e827d":"3728b18f071c60189ebd40c131e76fbe":"706320a888fd9d4b0651693f5292433e8fb2c845d3e9741cb81dcc83b9fbaa538b6971c30080fc97756dea35fd62119f":"34435ecc7261fd13da15b039bb1d6d1065f43b93f273841663301ae0abc556dcbc0be8c459f507e40621c9c67f883832" - -AES-256-XTS Encrypt NIST XTSTestVectors #240 -aes_encrypt_xts:"37b0faadaaa998d95113705f5a7672516e6b8ebdd51bf88673fa15a9e8405ed77eb9bde59460b5e74829d965f7f040e5704047553457b50841bb4396569830fb":"b2215567118b0da3dc5c056712fdde8b":"cc5adb91ecac6b56dac35d087fa2f4060ee38ddc20697baac0e97e9047b389550777a9c041dae55cb729fa55cbfbe557":"fc0bd619c8d6ad0a4c119fbe2dd2869479629a617ea91ce1a7eb5742d149b2ab7c94ccb3c7c0cd6519ae714bea2dd7e4" - -AES-256-XTS Encrypt NIST XTSTestVectors #241 -aes_encrypt_xts:"d1b2082a9058b62b20f1b38ccc23db8dd9300372c658c8c7afda574849f52c306ea585cd3762ff12b62d2554adb6c2837fb637f3c54783ed1934a5a3bdf16329":"19c0c9d90665cda36a75239ee36640a7":"8388b93400607bbf01679eefd6ec03b8c696908c9a676d2b88300adaa25acb314e745c00ac6d699445cc56eed2ddc5e4":"06606458310edae8af17b99dfcc8a5c55276237e9cafdd9a6a4528e879f0c81cbec86d32c8a0794fbf77b7348222bb3a" - -AES-256-XTS Encrypt NIST XTSTestVectors #242 -aes_encrypt_xts:"e3ad7e6595bfc614575407659282487af07292ae3aca2456d79091ecb3fcf2d23a2d111414e7601ffff63cfad7730c1510ec127b85e71897c9da8fe178219514":"eba6ce201ce8b72d224a4819882df5bc":"4bc16d06e2bce2a0bfd22fc22bd8aa0d19d90a12919371f9d7e2c85b995ebcbd4e6e474f7a99fb439d2f6feb70d4f6cc":"1a6cd9729e677fcb07b5ef28f104839e3d1d25bf0565b3b454fa2f8a76a92f1a86929688a8b7293c9e507fdb172c0424" - -AES-256-XTS Encrypt NIST XTSTestVectors #243 -aes_encrypt_xts:"f466fa4445a1af7c61825c750ea3d63db2025c4b087fa05e3203bff90cfcff84b53a873e117dbbae7106f68b13c13ce1b7dfa53af5445127dc3aebba05ddeac5":"ba47c834ee9d9ec6f0a8d33c16d6e8ee":"2356fd0447e4541f4424a042ff10077333222a06ef6c2643a8f981929ce01f085c762a4718d811979c81a71357f872d1":"8508fc10a2cf71825d78158ecc060ff19fdd26499581ab3c3e486d5208ebff73de777ee44691e37fe8f4216aedf19030" - -AES-256-XTS Encrypt NIST XTSTestVectors #244 -aes_encrypt_xts:"bc582099de504e3f75b78ec7096f19077a8323f9fe1e6f0d85c3203b25ff119e4f96578bb79d8ffdc7c1e4622f9445b80b8f478b355faa78bab1bbb4292e3f70":"fbfbf29cb67f7bdf223e12020cd7ff24":"3e1d9bff9f52b93962e90b5c8dc704c399e0b07440293c06af10794aabaf1aae2e65cbd0f97caf6f8abd4e32f2109e68":"895d5eb837e46ba570f39a2f1091c474c81ba2a5df67146f50b7c4fae42b6994b8ecdfb1d4512bbc3c76c6fc8d89c0b8" - -AES-256-XTS Encrypt NIST XTSTestVectors #245 -aes_encrypt_xts:"0e73205d525f760a9f31b243ef908d8c7d6380e9258cbac457789c325bbd49c0b4264b206c850e7590a4ddcd136565bbaa67797485b2760aee7a9e16abb5fa3a":"bcb889d6407589333f461ea647662ce0":"c9aa5c342d3b72780567c319c21cbc4e96a8ac9352fca1a46ef426c1d57ac624e121e25c31c286d811858a71f426a0a4":"9545db1d64266428cf348eb22e1eb54b14de587056bee8d89f43c749547d4b4b68f8f840357a6b632bf0c7eb2c8269ff" - -AES-256-XTS Encrypt NIST XTSTestVectors #246 -aes_encrypt_xts:"3cc5514014f6d31571ecd8c37d3bc3b9631b860b6dc85b85bf642941c3de1ea16df23ee3e09bbc96644562e9a913b782987c6b44b629d4e89c13b619bdb05c32":"a9d417da79f8a6831d743bfbc286b7b4":"9be6f2c1e0902df5203179cd33c46810d666b1b9cf2a3522669f4388607dd19849183db003cdb039ac66a9ef559db9a2":"ebed0ccffb568b491c7d4b8f605afcba24969ddba398723a9726e3a49c6aac8afa63016bd1df9924dd8cc77b2ca9b963" - -AES-256-XTS Encrypt NIST XTSTestVectors #247 -aes_encrypt_xts:"a131ac276002444650b1b8970add73b5bc25b60bdd90d1b664512c0ccf4fff882da00fc38b3db578ee96c41ce0a38c04d6f653fb1a8f51a271d17c4c1aeebfb4":"82945ec7af88ad122c71707f74946137":"0aa5ffdf2e1023ed88627247749b3a3d49610d0289b5ba6bf815234cba8fabf75683852eb7dd5e96aeac17b0d2e6292d":"aef8fe7bd9b1bd64fca4a1086bde03ebf4503137cc531a134ac716892c0926ff93ea7b79c1483835ec05199cabae3097" - -AES-256-XTS Encrypt NIST XTSTestVectors #248 -aes_encrypt_xts:"8dff968176aa0ead9ee87c8ae039adbb0fce8be62d4851fa1613c6e7a63000236b05fc9a9bef72fb5c06f4cb55805031caaadcceaf09d9c59c49e255cfceff4c":"6c032965a6447400c1f59ec2923d3110":"31b1a375fd16bb6ca1cfdcd07c7edf9d972ebbcd05eb0ccad353e9b543a9d25668a5e1d9a5d2b883184c37a4bb5d49c0":"fc43b291c62fe04c2f3cb2ccf5e262359807feb2437aa7ee6dd95f54ca6ab022745a8551e0e40605b85d59046e9283d9" - -AES-256-XTS Encrypt NIST XTSTestVectors #249 -aes_encrypt_xts:"0752ab81ba758906dadbb904c3a04f475f865f550d57012c489c36972e2fca27d5a60f1783bb01513c26421a473f9a2170455283676ab8cb189dfea207883847":"79ce2e25ccffc13822e9550513833e01":"8c9f52a42c7e3aefd257e6f025b7a9940866022a309a86a06406f3608a9261877d37ef30c1365e192d6e7309de5ef8c2":"6a52f9e2db3968d98c823258c104b9b5c91701be9a0f52705de346975a8ecec3498309f0cd1d68481ce15d6caadeea80" - -AES-256-XTS Encrypt NIST XTSTestVectors #250 -aes_encrypt_xts:"55530a5443027e5929f596f38891f13ba9d50cbd6a4e435abfc119a5b69e0a9f064871da5efd099f73a41ba2e188039d5269207eebf8a8be79538519de467f4b":"fd0f9db3c0410092972ece3718a7515a":"00917d5f735e2051c1ad1a5be010d94fd0ce217917af0cf6defa17890252737987acb62ce7f6ce95b55da73d5db729da":"4960e889d4900f33ed1dd69649828664dbbb2e119cc1147fea63799dba3262a54fe9c3af0f3ae69d4cc863b0a8d7ae8d" - -AES-256-XTS Encrypt NIST XTSTestVectors #251 -aes_encrypt_xts:"94567a4abf8616ad67bee70cc9a4efabf81a7ded305db095a08d401176a4b218a31ec1e922ff386a80266e1d369e785d8c1378addb65116581d01119e41ec144":"0f7d9ca5d875bdeddc368c3308a44170":"e1c2c4283348f591ad59dd9514b3b51bade71135785d79927dba1630fafdbbba61f384a362ebaa7ac530acf3cf12ea15":"c3f4026b886f91a2ef908ce80bc0642493c5fc71ffb426be688ad9cdc0e7ad83a0da7503a464b0fa8baf41ee61143fff" - -AES-256-XTS Encrypt NIST XTSTestVectors #252 -aes_encrypt_xts:"c763c2af34fad42b7f8469b92f1aeae060ebba5c875c458ee18d1850b741a78a4200c59277faca3825ede9fc87db25ac536f8fe7a5c69778593d9289a0f5ae74":"71be24041818789de0e2140b74db131a":"1f6161ba7e67d581b09f30a619c3c1ed47188a4f9ba6004832b1c444022d901f7a8f9ff8657482c764ac173decafa18b":"326faf30b7bcf070663fca637f570fc5853d84f048c2767cc8db0fd34c076f86bd03cdc2c1356e177c0de04762c6ad11" - -AES-256-XTS Encrypt NIST XTSTestVectors #253 -aes_encrypt_xts:"de97b53a19bcc487bd196a39a6d69b4e9f66a5f6a3f08caaac702d33e3c7eea821f32bb5b4e826bd1a774d5a7d0297dae05d31a42efd3cf7bdcb04f92e1002f6":"99a4960fbecfb25400eae94752f9f433":"01fb207a7dd8aa73331074730b8af1bd5668d1a6d95eb93ca691177d1639d09ab254a692304fc28ff9901708e73dea67":"0b67720f6a2c78f8cbad3f2c89b9a660059d08646d41ec1c04e4d2ad69ec48b72b8c511e9930b4b2ec8c500bd06e78ce" - -AES-256-XTS Encrypt NIST XTSTestVectors #254 -aes_encrypt_xts:"b8de923a9388a4fcfd8fcb68de538bc25043d73bce5498753c28c2dee0048fd4a3779977a29a5333d8c91d044300d7fe9d7c3b3b4917f8b6996332b94486df10":"232b8b688d493516928341fb9ee6791e":"bc3c13650e65c3c90ea282bf2f8edf37ad8848392cb4373ba210ed4bd7e50d786ec2dd269e501d3639927ab8e34aa905":"3051adee4dc52719cdf93c2a37a2a26481485266366a6897d12c644d234483327483dec1e26fb1c3940aebe17b749baf" - -AES-256-XTS Encrypt NIST XTSTestVectors #255 -aes_encrypt_xts:"fbb5a0dcb1f4dda2315b36c3a28696332eae9e9210b602fcd4071f5d5a125658b251d6ed215a213ef0ab03664579804e2952fbaed7ca2fdea1c6ddfc4285fbb3":"f56a7f20721d38ea2ad86223f059a724":"be4b75635884dea9aee6c9ca2fcf3375ebf8c5b3b1618da4a83d228d72c99fe79411637a0766b3393a106802ac440f16":"bd4481cfb4f9bf92b45056324fcd99a79c1bc9a6fa2de7558a4414f8899c72a5f422e88c11572b8c080826903b682ebb" - -AES-256-XTS Encrypt NIST XTSTestVectors #256 -aes_encrypt_xts:"86c8d2a32a783e07c5fe94e3cc84914376c1d9563c86760402fc3e675873911e2e16a25fcb9a1630c93f8abfb1bfedb51ad3468b754367a150d865ba41447569":"16ed6603c0a65b7528ff0098e217f651":"81cdd1eec3a60572733018fa3c44eb958c9b2d9c00e72e66512613698006730d1657950c1da3ab5577a142868613ff5a":"bf01f13075ba3a1ce59baeac0df9b9c9fc5667fbac35c11d3c706d9604b48d2ac13091c965e1bf17b365094b3a83bff3" - -AES-256-XTS Encrypt NIST XTSTestVectors #257 -aes_encrypt_xts:"64dce56219b0117a53cea0e76e13e95e1d0bae319ea1bca918fdbaaee021051e256ad0642f64fff7b10dd3c61b55c79a32abdabd4ee5598866485a3ac1279f5e":"31cbe5713e0b7a17f3cd12171eb045e8":"209ad309d38d74fb7cfc93784fbfc359a4a1ddd70a11d25f40053af2e054d6d98fe907f45b0a311793da27215c0bd573":"4efccbffa63c27a956bd7d616d2bd7ebe4b685aaa554aeea9cdef8db49b7e4e6bc006afa19abe33b81777e90e8823686" - -AES-256-XTS Encrypt NIST XTSTestVectors #258 -aes_encrypt_xts:"22e468c21660ebc624fe47953cea5fa6a05858373290a0425a3dc300ceb4959ef1a026aeb9292bc2269f2d05205797df7867dae5de788c3823c9b80943d669ed":"89174e04332c36411189e6389a585794":"81ee8b8cfe1a66d5482c212dd65255005008634d33976125eb664656d075f856e257e4a50406e7033b5cc9f713ad753f":"2206cd84ff0cec8bb52cb1230cf581cda543a31d6437784689c69d932156460be91d8d837632e2baeeeea1441a2894d1" - -AES-256-XTS Encrypt NIST XTSTestVectors #259 -aes_encrypt_xts:"a6eae85ee996fae10371db24034bfea4c3775011f10445d0f2df399ad1fa91d3f48489a0b2b60c6332f5d092b987732ac746d917a7c8a533304896552499a9e5":"95ea8913950b859265866f9b97e2f1c4":"2352a2dcca3f5862c038e1ce67cc156bb7aa6873d84ab381b5cfde88a2287a512260b38f8f7f6cf47e9b3ca4d7cc5c41":"4791269aa13d48049b3e66f0e0d6337e73d0812775a4b8b99aa8c6b25cd679111c38090d6bfa0a7a6fedee6d75360d85" - -AES-256-XTS Encrypt NIST XTSTestVectors #260 -aes_encrypt_xts:"1a635fe84fb37659bc48e82ce5f9391b9740a3111072ff9cdf47568a74031a40ec0369773ae8d9058dbe9a261874887aa82ca12d53a39f20b7780f42fa3d3e79":"15ca77f1d9d72fe1d5fa8d622acd060d":"352670040ebf26b73b4d335707e62a9f48517ef21b706c568ccd8414f2299cb586ec72b0d28e925d903ab633f579077d":"cc2a69bf3169076f207975d312aca04822740be8c34c663fc942cdc1939006360e0f16f302f95ea8fcdb423ddd738b77" - -AES-256-XTS Encrypt NIST XTSTestVectors #261 -aes_encrypt_xts:"d1c5a5d2529f37e2148b97d6a8503df8376f32465e9caccf62b6a820be94bef0d9765bd59332e940367d8a1ea9f31cd4c3473675f38dc8b764e68411136b2845":"f25d22a0371d3a8ed89ee52ab03aed56":"d33fccf40a839fb89d828b8b5d14c9f2ebf25928b54554d19677d22a3d316d4debea0a3431dcb696fe9044340ac3d252":"bba184170322598167d318409f194c44d63131144d4e512d49957235c63d95c2987f1c7cbf078db83eff78f4c56b47a5" - -AES-256-XTS Encrypt NIST XTSTestVectors #262 -aes_encrypt_xts:"5c3b0535357dd13458b968ecf074fb0e10358f61d759af1c163a625a99076d37fec4dea877ddcfa19ed42cac9f70837241e4364bad8823fff441d712f2cdcb68":"36df975b80397ef9fdacbc4fd53eacf8":"513d198fafcf7e1715ac95cb028aac21cba7d43cbb5c8c604687bbd000dd90161a4294ff5436d85c26806e9d54e6a43f":"5a7c1d0c6c540c7774ab9da6698b0305d00fa5fd9d8a4e44d8622406ec6e44609aa412f100cff620b9a12cb9dbdb326d" - -AES-256-XTS Encrypt NIST XTSTestVectors #263 -aes_encrypt_xts:"58afd7a4c6f5de499d27ea3a3cdcb12e839a2943c943298b039e683adae4e4d82bf3c8c89de47df3ffe429750279cdfd2832f321bbe56f933a2181cd1e6968ee":"81b8407f4b3a5b13b2242d6f7d5f56a2":"8760161dbd2675f16c0f9f247fe7326f3ba0eb53d6b31f926d72b72e44a0a69f6aafa6cb42df20c3b491625737af319f":"b24652cd7ac6d8a5d9f54aa326ac4a05eef7414fef6769efb083d81ae387b4e7602794c0710a199122dac6385a70bed8" - -AES-256-XTS Encrypt NIST XTSTestVectors #264 -aes_encrypt_xts:"4d9a20a9c1abd4f12e0b09983c38ca37de42a60c7cea75d1e64fab9d71a821aa94ecb62d133f8facf268707acfd4ac0d81de88de1267aa6762ac8cf1d2c43f24":"3a0f801397f7156988ff2fc5f9fbc56d":"59cb7e9e21e7f6f23974c6519cc9f934584f5d5ec73074e70f935759be2a8fd1286b33fe53407d611a9b4ad5c5f0a830":"965bf283c5e3d1c1c20a827bdf94d5b24a91099d8dfede4e1ca39e048a7fe1bb9d0f0f029e3774272327805b1006a93e" - -AES-256-XTS Encrypt NIST XTSTestVectors #265 -aes_encrypt_xts:"be9d95f1bf3195797e538762dca29f1a21bb911daf520ecb82364ed58aa56f5b73d3f2eeab514c2b7591b5a37af7836e71b601d1a567318ad20536eb49f883bc":"a3edb09b82164dfd3b4d352667a11302":"af004ad963c21d1b31b0a541470ecfc4db38c494cc7738ebdad5ae692d2fd1bca957448b2c0c4e3975ebc3d4d9bbefb1":"9f0bdda15c80781e65b8a31e63930422ae5fc9d5a6e7ba462e9c01687cd8c1b2b7fc6c7c97322950e02316dac3e66f13" - -AES-256-XTS Encrypt NIST XTSTestVectors #266 -aes_encrypt_xts:"c25ac007331f92690d7435f9568919709bfaaf25ab2bc418cbd5972f33601f4cf5349a4b90774a8ddf18ce47365c623c8c464a5d674358635f88ff5efd8498c0":"8369e1317fe676b17281a19e7f64ea27":"bcb6c06fc8100ef18f712f24e26e033b63812631a6e13f1f23788f910359d919ff60d08b9ec53390566cd8f91ef3b730":"caac67a8204b34b14a0e4dbf82b8f9fb5fc04ac229f671151a6cdcb6769f173e1f547a695cb1731f377ca754f5d07c79" - -AES-256-XTS Encrypt NIST XTSTestVectors #267 -aes_encrypt_xts:"e266c1622bfda720e54f69070f23bd1e2acb51033d49ded7a31bfbc73e90665bb6fc3beb57f858ab83d1169136689b4a125fc534bb7bfebf50d93b320a7db03b":"b0e42e7e64abeac7462f65790b290380":"be10128460a0842e9c60b067069d052e05ce71fc878592a9c3982d51702871d42b7f6da40034ebff764fa60a22acc0b9":"89e805751b838259c2cf0d76b99592cc759188f7cc3f21c39a5369e5a8a75470b2fcb4f6a9e2ef701d5ee50b177773de" - -AES-256-XTS Encrypt NIST XTSTestVectors #268 -aes_encrypt_xts:"525cf97de904abc4e50f5650fcf05dedd48f5018951981308e00ee8be9433e953ac2cf9c5f4e2b9aec05b5d78b319535ae8b283a147498a844bdf0128d35f441":"1d546b762189af6c48256fa56fd0a4bb":"41ece877088ed3ab96fa404ab436213ad9c89c5b9262c863f7f2fe093fba5253bae9c36e5453942c3dfca91e582f90f4":"fba5cc2ffe3b49dc5b00152b9ced9823f1c1802398586ea912716a8bfd8ad8733512cc24eb921eca884c3dc9b08ec42c" - -AES-256-XTS Encrypt NIST XTSTestVectors #269 -aes_encrypt_xts:"99bef6647cbb1258b030ae77110bec0229d39d276fc21e3bda4b63ea1f730a9bab602425dea7bcbc717e9b15249211f2ba629af9092170b481bfb245f3748f5d":"c606b65525e08be6635feb5ee24794a1":"c8ca4dde72241ff3d985e6043be6c27031000898f960d3d7517abe9a6961d19b853b14737b276e5c03fc1fd615c06af2":"8f336c49f2fc1906f92a78b7bcffb94bb11ff019ff5ebf97a0ed8d47359cae6a3a318cf13b3bc3429a903b4973552058" - -AES-256-XTS Encrypt NIST XTSTestVectors #270 -aes_encrypt_xts:"4c10ba42c5171947d5be36e941148f2f3b5d7813069d38270a81f2fe5f27196a0eb89f15201b28e09b5b8d279a13e88e63b8db9b41695501d34b130750687016":"4db380db639aaa8d2879ed85ae1e4afc":"42b20c75852571c2fe29dcbbbcd5f869ec8f392464870937f326257d222e5db64d9d0e596a5b40ff6141eabed904a7a9":"1df7cdc016dfb1723bc5de4a6cbf908de2b623319ee37aab18e5770b7cd5d184e79531692702fc08f595aef13212aee2" - -AES-256-XTS Encrypt NIST XTSTestVectors #271 -aes_encrypt_xts:"76769673505d54cc393bbd65d78054ba65e624fe5f493fbd69ee74d285a526583cb15acb6ec8027da55bbea687e9edf576f7f12cecaa258d1ff4ae21cf1ae362":"bfabb3aa671419c8e1045d55ae3eec68":"ae481ec2954cabe199a9fbb2c8c1152f4cc2fdb0ada760ed69bf42af40979f8170ff4dca924c086b52383842fc296616":"5698a8f7edc14957718ba1be88336118e51ade14f094411deb78d7d43c510b4ce36bf1e4e3a50b6d2216ff3c077359a1" - -AES-256-XTS Encrypt NIST XTSTestVectors #272 -aes_encrypt_xts:"a33e067d0c044e57d9cf00ee269a708b29e58c3a7d7159114444fb782fe7c73fdf4f20d0053bdb02f6eeeb2ec63029dd0f86c08cc663a7d7b944e14d30e84640":"a23e735c786e3cd74b8e6237252ded83":"6eaf2e2d04219d2ef7d5349019d81f659a1db9e761ab231ed3bf56a612d930d1542c0a7e3d3f76b4d8dedf2143b3e4dd":"b61f227cc34800b107d3468b75bcbbb944048e885433b8343b1a471fe20544084249962374007769a89dbd32196f0fd3" - -AES-256-XTS Encrypt NIST XTSTestVectors #273 -aes_encrypt_xts:"a0f3aa51fa0af57e6342951152f7c00400d9becb62733bfec925a43cd5ceb87ea7a1e89194ea4e362b33651c330daf4f0d27bfc2b09f4074d0aa84ec45ded592":"34443bcaca3838ffc27763ef34a9950b":"2e3808071f9eeafff6508256752cbfca74c2a98333c98598e5f39eef640aa3d45628c82fbccc549bc8689354f590b10b":"54eb2e17d9a02e956cf7a15fbc544a734b3733323dd9631e32043a8bff8332537cac04a9b974bb361043190a22a4f923" - -AES-256-XTS Encrypt NIST XTSTestVectors #274 -aes_encrypt_xts:"21c133a3cd8e7ac8252618222ff619415bcf67d2bf4fb80050f7c8eec3910bb8d1032d83f6a414d07eed218b305d36a227204c549ba0f0eef02a951f625fa58b":"ae4c4e4f040112d1de235b243cc31f88":"2b7eb21ffe88441ca1c1f9055274fc2c9db04ecd9b862ee7b77d3cc63e9d09d8cae911b379ac0dbf8020dcd22f45eb7d":"7bf76866480bbdd86f43286eaf1d1f51486d4504cb77ae58b824c38c7e741b00096a1944a879233c6b17cb390ccca88c" - -AES-256-XTS Encrypt NIST XTSTestVectors #275 -aes_encrypt_xts:"825770c71e2468a3a646f860a2e8766ef9a5a5204ad53a4ca7278b1658d3f9eeeff819aaadd2c4577b84051c58d914751eca1d353389439dbb06dbd6669016a6":"734720de3930566fefb8ea6bba358eed":"8ed9ac29e341f7c34e72f4b50ebb402e443a7f07837b119b4620c8bdececcffdabe8f258e5eacc74fb40a2eb60aef5fd":"2f9ba195027adb0c209a11efb412ed9bb1aec1e5b22010646901655af1427ba2755284c2f4312c2376e50bba119bcf06" - -AES-256-XTS Encrypt NIST XTSTestVectors #276 -aes_encrypt_xts:"b74af58a37ef27e4522ac44919a7a22c09bf33e9cf2d2a1d2888a733ba0d650a8f003f4dbec9c699f495cd77994b09b9269028979f86a12e55eab31cac3585d1":"2224229ff88bcf39bc2537fe62681e84":"65f06b230608213e925a6b665affd182aa7480eaf535a7feafdc7e7d6ccf61e914b82b41a2859e29c34dc8e9c2b96bca":"cc9bed251539e83209a1e80da9deef6ea29a223d8cdffa5d69db3676fcefe5218ec72006ff174a4cdb89741a2bd8402b" - -AES-256-XTS Encrypt NIST XTSTestVectors #277 -aes_encrypt_xts:"0e62e26087aad3f3a1bedcfd4e594fed590bc2d083e7f9d6f8189b3a948e8315d51fd03ae6b6912fb63204b61bb27cb5436fb8e1408b03128700c58cfcbb80a0":"c6265b83f0d90eae17815e173d867ae4":"72afab7e865c77ac9d9902f063b3e1376a9425131b18014b9aa5e47ebb66eecfddf0bcf72c8975f91d3a83e223b92785":"e983a0e5dcee030dbfad8ac2ed19a72b4e61682dc924768e050b3b729d89217de39d7bdcfdee9c7cc9d7e4b581bbf0fa" - -AES-256-XTS Encrypt NIST XTSTestVectors #278 -aes_encrypt_xts:"3ae2940d74e57f9ace37b0f65ddd3bb129e074aac894fb4c03b1c6b449f3367ea477aecf907089ef322d0be1228ae5fca3ce30bcee3563c91ca6d49ba67c272b":"0ae4826a4ce82af5dd9bc5cf7e743a6d":"f4480d6c7cc4950c539f14f211e3065a0844eadb2abb68c116a015f56dedd4ff9c6559cb4f9e09b9415b6f9edccd95e2":"265f49ee193cfd77afbe2bd9d63104ae3bbb0f668124655add65041b3a2293ee86cdc2f137a48bcaaae70c3cd776a2bf" - -AES-256-XTS Encrypt NIST XTSTestVectors #279 -aes_encrypt_xts:"678301c9cb96a2bd1bb1a8353dbbf9d6ad0f13d2299d2e5baec7faf5fc1a434752fca1d8c524ba00689b3c966771dcc2cdbb7c230f3e1818ca5dad0901127baf":"96e0d833ee5a2a54ff046eed7ce50707":"a9159a541e9a80085183966c2c9e92ba38b6da42d0bc26335f6fbebb01ea3fd48f6e05c52d0d4bc3378dc345d8f959a4":"e01ee76321ea067c4cc9aee5d61b3f39da92fb849ca0468376f43482b5ce24948ce3c436871f4f0615de9b23c3dfb142" - -AES-256-XTS Encrypt NIST XTSTestVectors #280 -aes_encrypt_xts:"1724994838543581df05ecff923090110de5bd67113f2077a2ca253bc94b800aada34726ec1fe80105fc42537705bf133e743d74569077b3444f6af0e6271ace":"60e395231d95eb313b8f26a5abad4573":"c090563de2d4c0378e45eee013f6284df4395c0489376c214f62c5429bc75a689e9c559e1a168a7d693c62a57c0f80e8":"d222fef359235d966a187e4fe11f6babdd4e5cb87ab5895592b63c68319fd2cbb5bcb28e26b32b17c67270bad199478e" - -AES-256-XTS Encrypt NIST XTSTestVectors #281 -aes_encrypt_xts:"4debfd26c4d9aec8963d3d8874d410b77637e99cc316176998db4cd80f5df28e9224929811a8633fc3714b3702f27d177ec47c171f1bf66536a26a1dff72be60":"c89a693500c72732ae0f43b2576d8630":"699036872e32a1ea51d9129c367275fb5ad210f97580bfab26a6868078dfd04e4f507eddbc8c1744c5958de9fa5f5981":"e3351b19f8f21318dbf92e2d73e50a0a9c50dd41ea5ba292606f09bb31fe35affb5d7728b9eb1b81f4645d81524088a6" - -AES-256-XTS Encrypt NIST XTSTestVectors #282 -aes_encrypt_xts:"35abe18855fa1cd2da0db8685861a1df48fd134b93de59c042967db8d2d52570c7a702ba8237d9f8dc41d8999119ac0af533083bbede660e82276a0cd7a74e67":"c799cbe0d318ee036c89f8599488034d":"a858265bd5ad1bf007f014e2e797bcef02eb15290302d138e266094625e5e0026c64cf36812582ebd87d5ef1abb27e1b":"3fbe905c39bbd6776c1d77104ddf51d73b5ed7df6e03a346f89f0d76380847478e16d1d7e986d079f988561a88101870" - -AES-256-XTS Encrypt NIST XTSTestVectors #283 -aes_encrypt_xts:"932ed6949a7e627c79c3d443ee7cfad4d5533a944a09ff12d2979b1389c206b3598d35de74bf6e66eb796ff2eaa55b22b9b55f315abb1d0a34988c2ae1fde451":"ba7bc93f93114597b281fddcf10b3e3d":"8c761b459dcc090dcb49c30a4ddce0a629062a18ccbe3a289c7dcca977239a2579ce1909d5e236251d6f15579350620b":"5bc9fa9de58cd7f1ad73e9d48a49ccc8856be75dc7f18ae49403af91bae754382c98efe6f8283e34aa38df1021764c6a" - -AES-256-XTS Encrypt NIST XTSTestVectors #284 -aes_encrypt_xts:"6b9cbe0befdf8d1f748fb74a0505997766a0f657f62b509b6a1645f31033e5d982dd710c61037705a2a75f3f73c8809c906159a7568837778c8c8256219b0d81":"691ebf74d2d87d205435e607b272e27c":"021dc2f407368c6a29941b726a9afb8579e152e16503f6bea67f917509759a1f585ce43731d35b67d7adf2a79314f6c4":"ec71432cfb6e3dd7bf48f151b7c1abfce4e1f48c02189a468495026eb691fbef5222a90d6e9333b733725e34718c0788" - -AES-256-XTS Encrypt NIST XTSTestVectors #285 -aes_encrypt_xts:"5c65ad92651e424161758248583fe02528af6475a8d9a1830d7cc7b1ce4648a15613cf20c7b68d9635d8e08cc6d7272df04bd3654464390255fa69c42e38217d":"3ab3f59b007892e12864b3c801dd35e5":"247c8c5c2ca3de257bedb9fbd732c813435499fe4814bf5138cf489278263ee29f19c47b52407a0d26263830e5c640f3":"347c30b64303458d2facbd564b52b76a51ec393c88dec584dc0b34fa6f65c7d71215f206be2fdb600cd28c81744311fa" - -AES-256-XTS Encrypt NIST XTSTestVectors #286 -aes_encrypt_xts:"6c461541fff0d5703511d1167de08d15998027ec3b747ebc720020606862ba6a91b198b5fed88df3ff0ac21ba211a5cfd1a24637e24a5d3523583a095c6639e9":"926159e4e5f2ed25ff1085a0e84ad85f":"77e6946473e4e07ff462f752111a6646dc5b04265e022fcbd9a9381873a671c1f2ba76ecf91f4867aa545d71d51fe1f9":"35e53e3894f98ff07634d37b0f568d16bc498ebcaf3b529806811cdde6b6888fb3df9de9ecd00e6ef152f8e487153e7d" - -AES-256-XTS Encrypt NIST XTSTestVectors #287 -aes_encrypt_xts:"97c3258ef5b78f4b9ec0804bdf4f6a0725f557fc5fbac571a8df39e94eafae6b2ff8c412318fd4febf37f87d5cbe663d1086e3e85475adedbaf023f191eafc9f":"81ddb5f22d7af9f55a0b217641fc3aef":"abc73f814b3ef921b5f8382e16cd85cd23c2f60e6c8a48c12c0f478c47163c82f6b13d0ab27f32fba2190112e054ac21":"45abb1a5f7721ba6ecc67ef6acafb8dd67e824cfe74da76a95c1baaf5e50eb11e90c6e53f599ae1a682ddf2121203faa" - -AES-256-XTS Encrypt NIST XTSTestVectors #288 -aes_encrypt_xts:"7b6ae796c4ade282c1062f0b8e0ca82c3d9c3fe326a983aedb430545fad1357979b4d3ec3d17a9736c78f108798f187afe62f1f71100fdf8fa307e0a0aac6144":"7402d34b92fcdaa51f42522b97cbaa95":"80791a7600c23cb7ec612d35df354f1c2878189c6a34037824a01945f7a4bd3ccce4e61bc9fa9a94648b17beb43602f3":"d956c3451076bc5a1b3834a7f61120a202566f4c5ca18b6b1f0b0fdec163cc18adfb0a979559d2ad1810976a4d9b03af" - -AES-256-XTS Encrypt NIST XTSTestVectors #289 -aes_encrypt_xts:"c6760611fe089715fa0e2206b82c94fad00348aba732a3eeadb40af4f67326ac3fed5fe9e4ced821bcb4d055c0879fc39c063ad8c5806e8200a3c80c8f0be63c":"8fbace89f9feccda03195839fadbecd8":"bd3ff4c8407e006128b90a8f115baddcf7881abac332ed522be73a42d64712022bfdef3e9cb63b4ff3ef234d87b89ec7":"d421aa7999cbc494cffe2bf739b9d4a5220e47b823cdfe20a5bf54fc039d2f6da608e0a6c9bdea4feeade90acfc6efb4" - -AES-256-XTS Encrypt NIST XTSTestVectors #290 -aes_encrypt_xts:"1d10611943a801b991f4fa344f7effff2cb8117f43e3fc4a5ce96e327f531a00346e88ac970c27be55b10ab7e2e79b944210e44d32c5709a377716e83de43ba4":"a4b09fe5cab5a90f7d72b25d5b5a237c":"ea8b9cc1eb236566e347716ce093cd77154708da85b8c40098e4882ba725fc2b6566868bcf584122ad8ecf482ed8c9db":"7684e096b15a4f1b3f1169c14bd7f194400db13b12090761020d59280b4ecfcbacd497fdcf2021f8194ce25107759ab8" - -AES-256-XTS Encrypt NIST XTSTestVectors #291 -aes_encrypt_xts:"555f3e74d863eb05465e5c188a3a6b58fc37b695c74d4049744810138efea5438e6aaccb1d68e233e1e0e24866ef5da99c761b91d8db1641402f039b37cab9cf":"8c98bf3127e08adbe9d97921f05d9b5f":"01727c534ed81fdf58596ea98dff4ac2b87b2066847661c6b6a90da7ba603025b7cbf60b2a5444fb94b8a526885718ab":"6da62ad3d67ea55566ee645de9613c512a7accf044d441625d3dbe6aa685656837b844c1633bc1d8e36829aa3446b7f5" - -AES-256-XTS Encrypt NIST XTSTestVectors #292 -aes_encrypt_xts:"04a8d393c82fbcf247d26449d4c09052fa012952b88139ac015d7a0c5a3180b8ddac81fef8628c4794db9f8b1f7878ba763893a9685c803c882ac3e6f5ff522a":"64d975ac0be61dcc80459dbc7ee7638c":"5fc0a002b527dee2c7056ca837a3a2f58e945a702c8f0358fff8a0b1d85aee6a94ae5da5acecfe11fbc9094c95302d88":"d7489c5b8c441e645e827685488f865082ce2f9de71cd67085c70697a2bd7bfc1e4887512ecdcc55c0911c5ff08c7e7c" - -AES-256-XTS Encrypt NIST XTSTestVectors #293 -aes_encrypt_xts:"89cbab9c7f28f38a97e2e809e56789f1ae6ff81a7fb47de0437411eb2a17e2ea687a31177e5ba25797ffb939aa2e4e5c8bb8b1747acab163e93d4c74789d3f6e":"54146f264efa6a0662ed4524e18ca60b":"db09ea8f56d6952054d89c153163055fd892bdeb03b5b264eb9d271c30406f4e71a7fca3ff7f1c25432e809a2ca36146":"aecb6dd7c4aedf2345b4b9b3b82a417383397bc3d8b71a88e518b138dc12581f9b32af7827b92ad8a72b9416b1efc799" - -AES-256-XTS Encrypt NIST XTSTestVectors #294 -aes_encrypt_xts:"b9559c33bbb70b2f7406d4a37e204ee7fc815ed30d8972f98c2c1314d7cddf88d576b790bd3ff1b802e5dbeaae1dc21371252721b4d8a29469c3240302c91452":"dd34f1d2d538248a341417d0a4f429bc":"d1481207ba38c1d5eb3cab54bcb9246edac12cefee87df7ccc50d043b0a6295075c67187e676026c853e52d4e6ad51bc":"dd80b56415ec7739775cf379989d25138b921ae7bf4ea42ec4ce289be41e7c6a5e75134b027a59be665f0bcfd0b12294" - -AES-256-XTS Encrypt NIST XTSTestVectors #295 -aes_encrypt_xts:"aaf865d76ae52fcc29345c806e516e8b0391b23b1d8199afc7e844b2cee7e64cb70eea79f10a7c3fcc9bacdc9e93223d36e5d9cbd491c5b05aa71eeb93317e81":"c66070e12f45047bac1b0478615ba4fd":"a53bfea427733adc2efce66e66c74bfa5550f92be2e239d884e225d4409e679cb4e1c0fadf8866df27f0fe9f853ed091":"369bb26e25cfeb0084fdbc45fc2e5b20251536d04372ac9f547d435275a289cc8ee78fd4170716ebbb63f2d182a783f5" - -AES-256-XTS Encrypt NIST XTSTestVectors #296 -aes_encrypt_xts:"4ace01499baf18194edc7f4ca0f57737cc451ce36261def6a162d1d265096bc3e3bb5aed2e28e5c79304f21261a8d159b5c1c84b2eb9ef6df8ee5b96f0158bc0":"22e9ea287889c5cc85d8cc864183bba8":"7568a318405df4b402d27f86a46bf21474fbfb399db0cadb55a2d42cfb814797dad8a7023343a917e437e82b8e70f11b":"d611506c6ff98e17893e2bded01de16e8d313a37c56caeb7a85396c913da3f9d2f7e3fe53a591c6fe98fde0579eb9b79" - -AES-256-XTS Encrypt NIST XTSTestVectors #297 -aes_encrypt_xts:"0bca0a8fee0214922630de10a5d9aea3b81681d358731945375aaa1bb2abd1b961bdb83e7c2f05d8e2eecd509c6c09065751e5d01a915fd04ef90f3bdd6d5aa8":"96c043a031ec50f023fa00a4d29d77b9":"c4f63004dd082fdd13873366ca48d1aed43fe31beffa72df95bfc163f3387722cbf7aed09897423f74c3b4f80f073337":"679aca84b9b77facb5e17f0be8d8cd46f9f3c6ca1e6cdbf53058f02e6544f5ffb59e7af8297520b99b70f974648e6b8b" - -AES-256-XTS Encrypt NIST XTSTestVectors #298 -aes_encrypt_xts:"687c01013d1feee7af6aeb62ac2fb7daa3dd206b7945907c1d8b1601062b189bde738a2c64b949b5295313d90313e1123a756571269a8638b999bfed2d8d582f":"4f95b733c211363c19bdc8f91f287208":"8f93f8a09cd9b1dd5c99a4d979cbb279619f20f1a7515bddd82762107477313135535bd22fa8b081fba291a47f5dbadb":"e6debc72c2d8b05063bb8bf812801300208e2daa398e9f3e5d824feaeaf9614bc7b2d6bc6421c5500a85e4ae99f4cb05" - -AES-256-XTS Encrypt NIST XTSTestVectors #299 -aes_encrypt_xts:"4277e9990843d29661e7e02f1cf715eb31f04e7cd024e6247f5b59ed57cca23ae12c913197a98a755e29f4e76c889cbbbabecb0e4f347253d281c1f71edfeec9":"8bdcf94203914cac8c267b7a47c8a446":"c4266ba90b5ba727102bb88c48f3e790e3e4c671c8bbf9101f2310f77f19f60ec6291789f60a47fd735e205dedfaf1be":"0d97925dcfb071cb2443e7e3af8d6b6a173a8c4dca8ccfad2364fba3bf47860494603c27d7192f28c820c1d0a22ad3b3" - -AES-256-XTS Encrypt NIST XTSTestVectors #300 -aes_encrypt_xts:"7fb0922fce09eddd3665a11f5235d51ef77206a7de454775b69dcc5459acdb24ccf05c415af5ab8a06623d198d5b918595a9dcaaf5392ee717c1047f2f08f62b":"8ea3638b9d4062f169196ff4555ad0af":"bbb234db01be79d3dc7dcf49bc53b8efc62fe7179439061d73a6b20edb9b7da0450b19f020820209afe08112ae4afdd3":"cbf68848c42049efb146e2d1e4115f62e4faa4efff198f1a0aa0c98ba02cc44da376d762d6151f234587bf128b6a7ffa" - -AES-256-XTS Decrypt NIST XTSTestVectors #1 -aes_decrypt_xts:"d6c4cf73c639e025654dd3232fe3aa7138f21bc8922271b4a6c0af999100b6b5e380ec7ec8da88e6816cd7f4f26e7ac0f86e4caac3be55234ebcd4347cda2fa5":"041f41fa30b78898040b5e0ecba27d2b":"b8f33dd38c138daca227728e19b62c4ad5ad516ee2c3af3431097ff281956d7d":"d083f37a6160ac25c3229800ae0721d94bf6a9ff2f73a418544e6c787cbcd34a" - -AES-256-XTS Decrypt NIST XTSTestVectors #2 -aes_decrypt_xts:"cec5a8b7461bd2726d731a33993338f42ce0d25f7f507c65626b52528bb9e3b283270566f99d0b8a803fd4b59b96867af0afee35b7748134b93ca689662e7271":"cedcade41522aad2f1f9b64ef0bb6244":"02304f2975fb7e8db98b6a6bafffcd5c7e7a0141b8fa7623ca3440ca95449549":"8fdba53d625a581ba797ae46eca318ee340365d6ae2f7180a8b95a3371c0f01b" - -AES-256-XTS Decrypt NIST XTSTestVectors #3 -aes_decrypt_xts:"5f60f076a6a1a2f8f82fd6b607625804de0466fcc9a6e565fad741b2371f9c105d7debfb43f384e75dcb53f4b95b2a7069bc53f9497f31f0f99a02735fc5c4a7":"e92ae47a1b83cd75f4d08a5c69ac16b3":"8e280d5b18da80b1b60ed982fe999e6bad64a22d956f08eac8730fa5bd90254c":"7cceb38454084e158c75b2b0b952b5e8d3693056ddd80bf0eb3876224015b2bc" - -AES-256-XTS Decrypt NIST XTSTestVectors #4 -aes_decrypt_xts:"17175ed8775d8972d9aa4182ce5358603315da0f9e3416ca12acb3bf8049c9717cd0ca522f28ca1b874f96754aefda28561d1946b9fb7bcebbe39fa417a9893a":"a7fbbc8d99abe760a0624b6149a9358e":"7eaaea6cad6615e97e7adcae96bff28bc1be379cce8eab087ac08503f8ecdfd9":"468b386686beec763110f1942baf603c43ab65582eacc8b517d6314621224510" - -AES-256-XTS Decrypt NIST XTSTestVectors #5 -aes_decrypt_xts:"584a8558bad66cce5280550f17419259f4d13cda0afe085555bb6ac08ece0cdeba090d37b0c879c684ff9d28169443d454a45059b90dc413fc15f8cf9141baec":"a8f1d8232a0afe586cdae0f172e67425":"9fc8b6aed1789b81d35e830c42cfafa89ce4a29687ef394646491508f5c4fdc3":"9c52f8c56b9dbe8928e2e146e434492a1731ac895f588e175ae5fac04bd5e519" - -AES-256-XTS Decrypt NIST XTSTestVectors #6 -aes_decrypt_xts:"f614b8c11bcf172848e4c77c4fc355594d08bb3f5a9b62cad6fc6004fb112ee74e78ff39e07106ade5925e6681dcac1640d49701e65b5b364158ba579e66ed8d":"cddc6107aacc85808a53edd581a2df4d":"d8df70400e7d324152b9badddf1eaa031dacdeaf8b6397bac4c410a2c561170d":"9bf2b66442ab6c53848eff8524e281731927a60916ef3c84e04b2d5ba430665d" - -AES-256-XTS Decrypt NIST XTSTestVectors #7 -aes_decrypt_xts:"82e186a902a4026bd76e106062e7bb8f7b647726a752170284561fa13946fa2ef071f244d1c0dc616d2ed0384cf35ac8056388ab2ee1eb4af93e629e596db57d":"3db892a45f3e5bfc15783ce6635db387":"e8fb493e637cc0fd54f62e2726848fc1148f9508ca38e4b6eda3ddd1b6fac234":"28a643e71d6811ff46788c9ebce0bfc4e85deddc1ebea69581c3a2a602f2f59a" - -AES-256-XTS Decrypt NIST XTSTestVectors #8 -aes_decrypt_xts:"5d41f68a21ea43b9f7fa80bf272802fed4b73ad551ac9e7ead13ec87c59453e1d0fb97533f66a3a7fb6ea3cbd316b23a599dd89729cb6593f07ad30d3736bf4d":"7c29aa570c00177044c2534ecc1a754d":"0199c46503c399eb0a56eab6ad34de00e714d7f629848721408199a7f07b765a":"7ee9549a9a360292a699d18e57b9a34d63f6972e235583990a0cd9fdf0034a78" - -AES-256-XTS Decrypt NIST XTSTestVectors #9 -aes_decrypt_xts:"f5c81f050285d4aca3afdd87581a233be9b53e2c5ab18a573dceb8cc6ebb91bb6c0281048140e5b83cc6000d4dcedafaa1386b00248a39fa11d202c5b688df32":"cb148cc2d8f7f879040182f728e44f78":"513c3295984d13306cb3b150a4995a9fe87adc8b39e6e7bd0d7884cf4a823ea3":"93657988a75c67554e1e872770670f1ad18d274c410989e3d5acffc915689b11" - -AES-256-XTS Decrypt NIST XTSTestVectors #10 -aes_decrypt_xts:"9fd68b29688c7a2daf3fccb0e2de4c8ce8e5b17fb3d829a768ba415ff33e3960b7b47196ef1d81e6a56c9fcd948ab8dc7e35c202e2b0a6998adc434ecd5d5bf7":"20844a2129a137831595fedacdc0b087":"bf60159a4e172c15f54b4f9ab24b2196541ad5cdd677abac34e58c21b2c5907b":"977e2298c68aa6ed32d295a64800d4ad34bfffb065e5dc2d2d54f94136d62ccc" - -AES-256-XTS Decrypt NIST XTSTestVectors #11 -aes_decrypt_xts:"3d331b39f4f6bd2a2f1ad638af6b3bfffd62d2ef597198795324b40def92942e68fe58a5ec5328a38f2a0254986d42ff03db8c6c90ae0f9f9a6f323761518ffb":"31ed8f0b28de817c71c62b5b768c8890":"aa6429f07da572bd9f3a97b6c8c05a1ab3e5ab964ed6d79cd3100196c90454aa":"7367d9cdc8b1156d1fad4c300447767632c22e765550ffc15011e69fa46ac17a" - -AES-256-XTS Decrypt NIST XTSTestVectors #12 -aes_decrypt_xts:"4dccfa92af6344c53d878bf0bc8a213f9f90378b061d4477ab8938790987f4afdbec6459aca6071ab8cd25fb9bb828de140c82ae31d06faff22d75b5bf616a53":"09c3d47545737f24c586da62335d36e5":"eb59ed896fe0e15aac1b0568d335661be2d87ff81392ecbf1f795c842a3acf55":"89c709ed1bee40dd25d6ce24b4d5a3cd017a8a15a06901edd2a7ac093782923e" - -AES-256-XTS Decrypt NIST XTSTestVectors #13 -aes_decrypt_xts:"6ae7f0450a5b85ab696a7ee5f88d686327277136fe818fa42e4d2e05ca78468f9fff714409fd7a32ed64a538ab09820a26a4dc4c095e5921baa7d25ac6a2fba8":"ac364d95b382eebe02569933aafd61e0":"ca24b172b0ca4ec2a6b5eb94d3becece7591e6e17d9144e9c0b7abf04843a429":"6a206b31f32fac49dd3839e5aa5ca98481d27bc349ab588cfd73fe44d7daabb5" - -AES-256-XTS Decrypt NIST XTSTestVectors #14 -aes_decrypt_xts:"f3b65600634704f241327bd6ccf77df867eb410910c65d2787c596ad7fb3541c2574f12297a3a23092c4520b065f638288bbe159d2b83af2283fece097cbe353":"d6eecb7e8e71ec5f3c52f232d398c9a6":"1c5adb819f5b998b8adf9e17257fff0883b773d945f64b6bfea87544630e6549":"0f2d357c63605b4363585992e79cc6f62a07e06c2f8ce464e17c85eb93cbaa50" - -AES-256-XTS Decrypt NIST XTSTestVectors #15 -aes_decrypt_xts:"bc53907a9e4892ba6aa16c50a28c45ef8ae659bef84634351f92f0cc23fabf423d28dff27eeccafa70efc5c0e87435de12dc864f17fc746acc8729cffbc9b354":"67fc28da4fc507ffdf1cb5e7f7cf2518":"28534fffab6f923ff31fab12a76dbb753ae7e2440a015f8a58d0a9518524d0f7":"0ec08386b95ababaca4b8f760a5908d46869a7ce70857e0a63b5b0b016dc5fd9" - -AES-256-XTS Decrypt NIST XTSTestVectors #16 -aes_decrypt_xts:"8f695011ea9bead9a7ea8b0f45443e2c4db7bacb904c1d6a35c3ea7a6dc976ec393d0a4a4e98f751f21af79b1e064e13c525495728e8db384b979a7c7d3a6e73":"b53610e6339d25450564640bf390f16e":"3d3a1c597a4371c70c2f6637a47607f5a4cbae9f28aa663d517c1d356161d0b5":"16764c5b04afd030690d6797102c8d1f14d1194596201ffaf2578ff593173038" - -AES-256-XTS Decrypt NIST XTSTestVectors #17 -aes_decrypt_xts:"1bc1a27e5e486673bf75cbbf0646d58b21f9dd01c632f9bc89a69544baf1165ded763c4c9b9a40a598436493f1e07ff463fa358740425f26d4477224d32a368b":"4f505f87b3b733847ff0797db87e4e4d":"efd25b83c7f7aa28775142b8341f14bb8b6db6afc63235bec710fa17e89af79f":"ff1235ee5fdda59573b080ac43c2c2b0d49b122ab4a8cac6d27d74a1e3f5ade0" - -AES-256-XTS Decrypt NIST XTSTestVectors #18 -aes_decrypt_xts:"ba5439f3020868a4dfe13515711904909534f19be12aa49b6053a914a3ac8058e841d8526cd2d2e9ec9b9bf5ec0ebf37a4de8ec3c34e71105f0bfa3ea827e498":"e9048751b3e59a65e8e4abdaa463440b":"933a2625b867bceacfe0bcd4e1c3d9840ddbd4f2db6de0c86c251705d17f1806":"478e111e57d858616bfabc13654666846160b44d25545eb0b69bc8c9dd414f20" - -AES-256-XTS Decrypt NIST XTSTestVectors #19 -aes_decrypt_xts:"227e268488be32b9b37280d3661255909f1dc089dae4f0e739f833ff361fd0a5a542a690e459b92c39b5581d6d37d7ab9edb3f37886cc02454630e148efa6f0a":"42a37fc06ada0a5efbb8a55d62a218cd":"85ac115bea965ffcf7f2cae9d2301f6fe46b68d8181d4b7e464fdfe96c379d02":"6889f64de477693e7b72fa86a590d365716e89189c68baae2cc30e7fc3910a6a" - -AES-256-XTS Decrypt NIST XTSTestVectors #20 -aes_decrypt_xts:"a27888522083c272ce4566fd9da9fd806fef48bae8f87740a131d33d88e4677d9d418a5d733e48882949bfdfca87bf6362731b0e5fcd6f5ed52f131e4a1fc52b":"0a115fcaf0918e326eca1e178b6ae50d":"93c009cba7c4424e50e88ef27e78b532805781945fdba4635935c91728c8ef65":"ba0efe83bd81c147475fcbb5510886c87bf4fe78e158f29820ba43c76b79fb38" - -AES-256-XTS Decrypt NIST XTSTestVectors #21 -aes_decrypt_xts:"5b6726f9c0e1cdde92e87420b712282e80a423483b9146bec0287ebf768410bbce06ddf2f9df4082ac4f38fc61cfefce246e1b99561960c730633304498c4c7f":"10478a37d567ae3557098bd44ff03674":"d550583ff0c77230084a1cc2f6d4db3b992f3a912116750e476f2281c2ca2cca":"33a8c0b87e4a6cc784072fb834546d53e26b7b265b0217eaabe2ea294cac4d0f" - -AES-256-XTS Decrypt NIST XTSTestVectors #22 -aes_decrypt_xts:"c34e4afd6a13fd1b07ffd05234dd62e291b1ad423a51ed4008bdf90cc2fe56d2f478e92c1993e5b7bc604a64492f1179a6aac5450cfc31ec40283ef39e0ea95f":"e0b8bdbf45e05053130bc2cf457f3e14":"593a49d19de6175705926764f26c84c0195eced8cd897555dd520ab0b12be81d":"a6a3c0c5f72e507cab0f777ad12bfa6ab1586b9c7c16d01583192f2e58a0e3d3" - -AES-256-XTS Decrypt NIST XTSTestVectors #23 -aes_decrypt_xts:"ed1143299c2f244deb0d74cf1f69221a918edcc50223575ce8ee922d2436012eb9e908ab14722763290e5a83631e20bfb6121b8f730628d2685cbf07cb89062b":"c6b9ff0535b2ae9b846e3dc3e84ae22b":"51c13c72d992441c8b31de1432605ccfdbaa7d540c2be208ac7eb9603b23b423":"96326ce5c5f8092c476c629ff9c4e5124e2c42fc3cb6780f58f22291339803ca" - -AES-256-XTS Decrypt NIST XTSTestVectors #24 -aes_decrypt_xts:"64394309abbb9f361b10fb099183bc53f98c84c880055a4ef7a0366a5c6db77cf6ac89d84c6f638e093fcc4734806a8f53e98230f5dfc9e80ff7513e40da1bf6":"7e7b7340fbab68082c0a6cbb5bf3c348":"5d962b7f3a32b8208bda5b04003a38545cf20ed276322c919f5017461cf88a5e":"eb854f092c7fe67ebb110fbc447ef0e557c04599ff63d81f1406604d0ab7cca7" - -AES-256-XTS Decrypt NIST XTSTestVectors #25 -aes_decrypt_xts:"c789279af70874ab8421ed79d1dbf2654210d727a29ff9f88fea12900831e5e9ed34a1effb5f91f6b4c2a2dcb2ae7023a0b95b457f90838d60150594590c02d9":"ac1148341acdd6dbd749539036e1bac0":"9e87776461c215027d65fd116c4076f3a743050c0fd9b4605ec5869c1f6366d1":"0021274a83b0edf648a4209bfdce60e47dbbb8599a1e9e528c8f462c2d2b8e3f" - -AES-256-XTS Decrypt NIST XTSTestVectors #26 -aes_decrypt_xts:"efbad382653912be08ffb5f478ef4b8efb699ec4e1cbf50f557c143816f1644fc85d3a68a0857d495bf0bb360c324900b451da0145cb928ee430e6cb8adcb92c":"2248fb680856a37e923a3dadcc169f7e":"f72d487e04d0ee6b309705534194dc87a284f4243091b21acf895a94b349ee69":"107492ca4f17fad537de5f9da8ddbac13f2a818aebd8258fcd158f3298abce3c" - -AES-256-XTS Decrypt NIST XTSTestVectors #27 -aes_decrypt_xts:"b907abb9ef92e8dcd2f715327c75560ac9a457f1ed899c5ed60e50d56c82d27ffe64ec990deaefc8fd7085a15b3b66fb28a8d355f7557aedce88fe1869ff3aad":"71a84c54550cf7709b86dcfad12f7b39":"7ec213478b5ba0b61be8a936608e4de13b3e2d79064bc416ed3e46457e9cd076":"2ac31f2a43166ef924b0c4b9de382ebdfab762d0636d419d5b2f1752112efa58" - -AES-256-XTS Decrypt NIST XTSTestVectors #28 -aes_decrypt_xts:"4babbb348b285e4eb6743fdce3bdbb2245c488a1af48a9f2adc43ea6f65bbb12ab08eeb78c27056f0324dadceb3262236a998ed04c632e0b27a855523946d024":"c5fe67a855da9f6732c9bcba51b06d80":"51d75318ae3202d7e6dc20aa1404d639e5cd124878c84c71feba1d99b62deb0f":"6c169090442b653a47599e8b8eb1474bce5ae92ccf0f273b060cd735985d4236" - -AES-256-XTS Decrypt NIST XTSTestVectors #29 -aes_decrypt_xts:"7ed825d10321835a5097c5c700c81f11356a656ca0ff74cd34e315356057f59a64a2e3aaeabe1e4da059da11e4b2af86cf1c9797449f323d31afb73399802239":"702a03103a3f864fd137850616a726d0":"efe329f4092f980676a6cb89ec42f565d0d61467e7430e7ff9f9aba2978c161f":"addcaa45e3442c9542487b956d1e7d18c690913b29dd14c12ca32f7199a99251" - -AES-256-XTS Decrypt NIST XTSTestVectors #30 -aes_decrypt_xts:"db3f00b5eb10becaf8317745b6a27b22858ef623895247419bc7508ec436cfac4ef695e7b738a3b082964f0c1dd4fb2bdd27e92239b449428749eb5f23680e80":"771c9380b10718995bed167d6a775a32":"981c93f922a7961f5b0e2e1c863453d59694e28a790bea2663d8650f74b8a30b":"d7e9408307a37a302de85f75efe3bf2c261d3a6771d139cd6a4ae925a50f09db" - -AES-256-XTS Decrypt NIST XTSTestVectors #31 -aes_decrypt_xts:"1e7d9e0a3082a1f09721e3d3d8bc5c406694c638e3a3a42ccadc78b0aab1ff349347d59d2d3d73b25c95f3a9ccc2e558edc61d52cb3faf2f0353387a3d55a922":"f542d05d34e2f0e9b8d76836705c1ca0":"aa2ed151691c757492e2b1ed5f532cbd26358e1d5e5680758f76a45fda7acd63":"e7c5c3bc528b30e1bad1efdc2a311af00f03eec53448d7f6f55d31cafc9664b5" - -AES-256-XTS Decrypt NIST XTSTestVectors #32 -aes_decrypt_xts:"8162b8823a64c10500ed53eb3d33abc047c17878c2039478436c6623873414906161584b40b9ba5c377e50a641a4e406d34c70eb3f839f68321918ffe1cb47b5":"29b5d1891055bfa03caa661f702aae11":"904cd3a9fe9e68da61f09d6087e32e50cdb2776fd304e5014893697dd1a400eb":"12ca696b902a1208a1701d0d8747b2bac871951483f98f0c1e5911cec2f06a5e" - -AES-256-XTS Decrypt NIST XTSTestVectors #33 -aes_decrypt_xts:"21a81a103c9f0218426d4731c0f801c831be846fa20527b8f427cf544d5d0b5c95ef0dd2c1ec7f3b6eb3d073e5a5a910a3079abcb0d5b01fb3ced0b3f6cc1e3e":"31fb7fb5687ee84074bc33de7810a5bc":"56be65d6f34621251197efd0909aa5637e98627d2d295652a8366315a5ea0c33":"74598e1f2d2c15ab388648aef453c141b5b2f68ad694f33bf7b6fbccc06109c7" - -AES-256-XTS Decrypt NIST XTSTestVectors #34 -aes_decrypt_xts:"ad23b74fd4d2a5a71153a6f363ba6916f8d672fc3783cb89d1808e29abcd4220c6d9cd6afb335e5ade6f6c6aa5ff74635d987436645aa5c15dfd212ab12fec7d":"ccc1b7f0de76c048449a15d4413d0150":"412979201dc4f3b9f2b1dbe2a1ce5d8a4fdbbf71f2c00757d6565f1082e1e40e":"97c1109ac2b8187d94941f90d3b93b4e0d136b54950680b402e3e291df27f2d4" - -AES-256-XTS Decrypt NIST XTSTestVectors #35 -aes_decrypt_xts:"68d3c1f8c11ec07a777d043f7499f6a6b101e84808fc7cfd19dd0d1ba30e64fea780ffe05731242e99617cbe582d4f990fb5c8be295d2476e31f41954f6f9263":"fdb74c8dfee52e9544c157d0aba581a1":"85c48b91427e5d4110f74d6f9fe9c222f6bdbbc4ab1ba6268a4fad8e3f82fce0":"18fddb86f2f46706d41646642e4fe9a7315f40e995e9c3e7aa168131e68bb940" - -AES-256-XTS Decrypt NIST XTSTestVectors #36 -aes_decrypt_xts:"ddfde3b53c5adf72554858c243eb1ac144d9330c1ce9329aeb57f9e7ba3c29c755931eace6899b385906532022e2bf4c7d55e354d2ea2ead689cc686891ea66a":"ddc64f1b711e9c05299957934002a04f":"546b9ef545fb3edbdc4137c964ee3f94885f5b72d42b0db006ede1e825b6a8dc":"7da16a03eeee3a78a3288abfa6d666192deff33e4696a69b39529bde0ee56481" - -AES-256-XTS Decrypt NIST XTSTestVectors #37 -aes_decrypt_xts:"956e2c3cd0c7236df8f1a6ca59d1f7786e04baf6126321d24ebf3ecc0d60bbf078a5b15c3553e3f7b0725429763b20fa898c0c7d72cdc333674866cf6598b3dd":"2e5a497b0e881cba90115c24e92bd4f0":"98d8d36f3b72757d9992c69f480d9929b155d4a924cca22d853b5feb4e6147d6":"21aeabada0c38ea53bb83d1278014fac63e742f79bc4982aa86aa2e123ad101f" - -AES-256-XTS Decrypt NIST XTSTestVectors #38 -aes_decrypt_xts:"520f1a6eef4ae250bd7e82cdb905dc9011121776d152e555d210ba8baf2d4da4d2d3dcd544216fa7bcb6eaad8929c6949720fe0ccd41ea3a2e761c19d686c1f4":"24dad492025323cc65e3b50895d706fb":"425ae89a979d1b26dd142b8ca8b017c9e7015c6643e751fbd521b7965de5dd99":"ce56d96ac36939b8d9bd9032ceaae8be3b6138aeb5658ce732f9754627fac388" - -AES-256-XTS Decrypt NIST XTSTestVectors #39 -aes_decrypt_xts:"1aea0a4acbed0ee2489cea391caea7636b933e52a46011159b7000175e5c039a86a66b649cd9be4ed8da282e07ef8422fb9d695cd71e2cc4396091bf19ccad77":"98f752f8f68d635ecb42ad0adf32fcb7":"12d8d09eb6f0ee2e8e893b1b6177c9df979869135e5babc02469923eb9b7e779":"e47270aaa7200f5d253c27b01eb1443d966e78f05dc60a320cb3e70c3eaf5ee1" - -AES-256-XTS Decrypt NIST XTSTestVectors #40 -aes_decrypt_xts:"acd9d7c1784edfb835cd881261e0cf3d0a885fc1f46f7c2d46e5c3b803221dd3a6cb15694df333e9751ec03d5a64e7cf681f1869af938e5d0a991164439b4e4b":"a1cfa739fce97d65dad127d4447663e3":"0c34d46d57d0728ea9330376f484aa549dac4875b4385f369272edb759c2269d":"cd604d709bba54cbee6621e302f8465e0d47157099ebf0d49fa106324a23a0ac" - -AES-256-XTS Decrypt NIST XTSTestVectors #41 -aes_decrypt_xts:"2678d93f9ff9523531e8aa858a4909c7fa11c2bbb4ad65a1384d643cb3b11c215b97c673cc09d0a71a10a539b39efa49114696fa4b711bece4e6378dcfb76feb":"c4c988940af831fb9625a277cf5a3e19":"c14aeba90bdc8a2e8e0016e607a4499046f50de731012ce5ee241dd65dd4fc14":"febc78f845ca3549ba3fea990460f4240d73fb3bf57e4d497da8f1a3a47ca486" - -AES-256-XTS Decrypt NIST XTSTestVectors #42 -aes_decrypt_xts:"3164a9707b14c57323b658c3745359c15936638edae8cf349c12c41f077d5e454fdb24c40084ebcf1da8be8d191c26140ab2d353f2fa2aae246a74a87b58dbf2":"33e18aea617748a49231a101d0429292":"ffcd2e8bccf9597cb146e8781c3827dfcea696e807b226c4d2e78240db1fd647":"aa5cc91c3454caf70c70bc3766dc40fdba707c994c0645c4ec9ff84ffa722b73" - -AES-256-XTS Decrypt NIST XTSTestVectors #43 -aes_decrypt_xts:"d4e62dab75dd2d08e575a9fccc5f76c8884e48a3adde2b6e84f2ff7cebe6f102efa3bef298f77de8689a2c7f3e621ec1aa64efb20fc43a95e7fc0285836a26a8":"1b5309f4ffc0bb8411ae4ca06261dffb":"5f1290ce4183dca27f4bddcfc3a6a47f61eef7c2956d601395ba4e200f7dc4b3":"2847b818a492e2b02e6256dae33e1fe7977ed97eb9fc9e58b2502bae42ef5d1a" - -AES-256-XTS Decrypt NIST XTSTestVectors #44 -aes_decrypt_xts:"ee8175539855c54f9f3cb61a582f5ba6520b3af8d20963a98117c60337a1eefa809e7352bfff617ecf3ed70ae81afc6c951c20b5d2d6c54934ebec3e8fca2541":"a6f4bdb1c44f2cb0272ddcb4b6c415fa":"f9a8d9cfe67c49300ac5f54b1f1699f604d8874d7940003a6cadf6ac64ff0a86":"def8570fc94f43b7d39d6349ed2cb8cdc84e0e4a38bdac40763f992db67bfb3d" - -AES-256-XTS Decrypt NIST XTSTestVectors #45 -aes_decrypt_xts:"b0974a79ebc3457a9f03dbfab918baeb3e9eb97156026f823bb00242d465e4cf9894107b07e8e966faa2fd6924555dd379e729ed971d314c351a27acd819e729":"c6c227a84bb450cac2db484f3801922d":"00196ea20d39aef5189f8ad7f6c9d493aaca798e881a8c2ddab5a2d3243d0834":"9a569438a0ab93592bee3300b4c8330a000a1fffcba0af9893c2c150a81a4784" - -AES-256-XTS Decrypt NIST XTSTestVectors #46 -aes_decrypt_xts:"6d8d74483ebc16c1f440dba204f066c71041eea8c9d5b30cd50dfa2b3071b728ec5ac62fbc4e52904acb838084dc99487c4f741b702b9fc1a8df943f0fe7c98e":"2840438e3d9915bea84ce9c3aea78276":"2e42abebc4cadf87dbb55ac4601b4c7138fff26e2dbcce3e5a685e142fefd05f":"92b790bf3d1cef4ae5badf2266e74b57f35b73084fbb6542ab2643ea625e7abb" - -AES-256-XTS Decrypt NIST XTSTestVectors #47 -aes_decrypt_xts:"f076f0d9e9d37b085a97dfa170f1cb74f1fe6f57ba0309d3aef705c32b847b691f6221b237efa189ab89750b551b0a6e952e34bd2152484ef096177cd6b711a5":"ef3164926723e42a993a9202b8a3bc10":"69db55cf97b4cc8686b319936d52141546ef12e76e1f666e56d230b2e1e94aad":"58cd66b79f28ca7c1ee3a3f966537ca3fcb360a2cf7b05bcce5d4469085edb78" - -AES-256-XTS Decrypt NIST XTSTestVectors #48 -aes_decrypt_xts:"7e140ca0a62d6f04c836f75ecaf6954106552b912d403d782db76aa28bb8752a990c1363fccd74ea43cf449dbdf6b93e2ce13617f276abaabff4b975aa7b8bc5":"2e7c55cc94eb401525bc598b3c2fbf92":"528e4b95d4ceb23d778d0e3ee08e318275a41278119d81aa1023b1524f592cac":"dc2fbd358ae020b99a3223ad4d31dc622fd8fd9177bd59af0ec5eb3d1ea7f6bb" - -AES-256-XTS Decrypt NIST XTSTestVectors #49 -aes_decrypt_xts:"1ca9e3087e8f0ef94ee10afe05976514c0d9723d9fdcf93170641c50becad1ab67f16454cd296f2b8e325fcbcf4c2c5df2577537c341aa0361601c7b271dc116":"65b244234c25e5f354a7c6dcfb375529":"bc38b4919b808dee6c03227fb259068f9c1441df3c7ee1a808e8a37e5ad34f0e":"4d7a4bc695898ec62eeb5b6e0aed1a508dd504ecd976a785f925eaaf00e66de8" - -AES-256-XTS Decrypt NIST XTSTestVectors #50 -aes_decrypt_xts:"86c601a90e431ddfe7a038c45523fa368e8311c2bc711f731e8c75389ae012343bb7a3576797c0f187206f8b22b76583000e7c44f2e11bd3ee23f015c67225ca":"e5bece3b0572737ead70b5e288eb5593":"f885fa71549334a42494f0b942ed5e16f2906101b74486da4ee490e39b45c427":"d08a2c1fda5eb7156f71619ef7ee2d8558ee28365464fdb896c803f72f091370" - -AES-256-XTS Decrypt NIST XTSTestVectors #51 -aes_decrypt_xts:"a71ecf02e6279d19b896984116ebe8160428fd4ff483a7ade16b170dbeac7e71c78f080dd5eae666ac9ebd7d61712911fb9961b5ff69dacaeb42ea3a6281510f":"442e796f49b1ca939ebe73e259ef0dc6":"83367a097962b7da5ddbc1b46751f486995bbfde01fb1adcea960ad7042d8fe0":"c2a27d22a58fa41160d64dbb38ab6bf96836624885b305b999946546623ae0aa" - -AES-256-XTS Decrypt NIST XTSTestVectors #52 -aes_decrypt_xts:"1033a417ec7fd040d9d674991b03f427a674f52c40cd53027c233e19821d677e0c37fb1ffc8564d38167668fabaeeb4dc6225fc90fe66b74c215272840e9f953":"e7639f7a7e50dc9899599de9523d7f1b":"a02ff7552fc56b978446f0f8c6a49b306abedb252f828acdf55e22c740a11a49":"9bb33a9489ffd123ed2bea8830eca78b4db615488585f0a03ccb4f3465088d15" - -AES-256-XTS Decrypt NIST XTSTestVectors #53 -aes_decrypt_xts:"8a40a21bdde506e73aaaa5ef3a091a31128ef0e687579baaa9ab5cd8b36748d64d6fa971efa93270c8b38cdd8fde694300b63852cbfa7f0a7bb8efeacd07c120":"81ec4f35aa1fb106e507d78c60ddb8c6":"763abe8f59bcfd1aa03a6be7a300004dc2cb7de08dd1e0d98dba0f61e41d215d":"0383f8931f8bea11cbab29dc82f16e81f333f2b89a124f697bd09b26d1cc455e" - -AES-256-XTS Decrypt NIST XTSTestVectors #54 -aes_decrypt_xts:"bddac920a38eaef68a2abf85a35ba3362d080a83ddf2813b83c4508842f5a43351d64587b9a7a33d40f911f81b4d86d22fb7d6c2bd5a9e07c7cce8c651c95141":"a9a29727ed6abe6e66cc63f8e1c9c92d":"2e648f700eaaf5d240ab584cceea5b89bb0604e7abb5b4ba87db4de14bea0d4e":"851ebd1b462ba25fbff6dfcfd9999bf4880d55592d234d64ace1f872815d1a59" - -AES-256-XTS Decrypt NIST XTSTestVectors #55 -aes_decrypt_xts:"66988bb604262bc14e03c397abf0df6071e14b7bbd231a66659e2667fb525e6d92fd5e126fcf32fb792eaa52469c5e19ca8f73869d1cfc6e0c7db95817637e4c":"df9a982444a9325bd850c939ac8e2157":"2420271e7bbc2d6633f13fc5aa7beaddcb596ca829239245331da9c9069f54d9":"2930ed7fd664582683c4e75f7d2bc7534daf7ea07896f043411cb6c2a432faaa" - -AES-256-XTS Decrypt NIST XTSTestVectors #56 -aes_decrypt_xts:"1d8063a813a3a7622695481513bddc2bb193799f7b04a3cfbec2ad7aa20a8aaa30e46ab7c0a70f41dd4b989d4a2ccc0ed17164798fc5a194197e85776ec9bd8f":"58eca9e299fa2298832f3681ac38a14e":"87897863f5145432a13401aa7d97cc97a95c1ebfe66d2074a9f5b0c1df85712d":"8f041232f4abd5ed23eff7c8bf9f2e6231636b8bb14c6c05ff55c55ea9d2686d" - -AES-256-XTS Decrypt NIST XTSTestVectors #57 -aes_decrypt_xts:"c5541b82dd41e660fd59df745e89cc3fd7b3d70d892bf8b5655fea85351fb4b660e06712c302130430ebe94d25260035d0433e43e576bbee3dbb58ec45fb719b":"38538213e86784472c458fa95c8dceae":"c1e136398461d475847f2c043b3723115d225ed51a21d9149c87bfbdeb201851":"ae975d765695926d72d4dd1b41f1ae9e2fe1000b512bbfac55f721b629e48c0b" - -AES-256-XTS Decrypt NIST XTSTestVectors #58 -aes_decrypt_xts:"1a468623ae89dfdc0047334d9488908bb3b9b628197252036b9cc42ef25542d9d6b50bc9e7975be660d8bb9c9e30a9584abb0ebc48528c9c13012fe6f424164f":"3f021863a5684e305dc5908e1b5245d1":"085fefc14885adfe9b52f301b751a1cab74ab3663ed94ec8a4e3d4b10bbf0aa6":"cd0ec55a2b1236c04b038a60a98b94f5831912a548e93467aed21644a6b90854" - -AES-256-XTS Decrypt NIST XTSTestVectors #59 -aes_decrypt_xts:"845eeb0c65feff4427841b3f29025430135ca0b576b0b2878b178ad70034b3476b843190ed38bf91e118b06a310bd78c544aaa9c49b6032a223b90878b644573":"58d25c15b25f4e1b3612bf270f97c6bc":"ead4947c3241845cfbd0c0f9f140eaf816dbbfb597d2b5916cceb632c8224dd7":"ffaf58fc042718e087f9df84ab31f17161b87404003735cf1e39a49458d0034b" - -AES-256-XTS Decrypt NIST XTSTestVectors #60 -aes_decrypt_xts:"1b243cd23442f86c34819ad3434b71e4ada7367fa6156b146ab05c86c481dfa259ca63c6eed3b23efcd0e76533b48f92534d1581256b6a23d518f6485c1be63d":"0209956882317900ac93f66c3a48ce60":"ca51fa9df852111efb865f8e49004518e71ebb6e041e30b4fab04112dd775dae":"e5fdd31a474e5d3394593e65b9cc4df51ea465dfe61a56b65d1cb5ee794cfccf" - -AES-256-XTS Decrypt NIST XTSTestVectors #61 -aes_decrypt_xts:"81c37c6a44054389ec1f56faeecb28f7c1fd00e1ebcb6bea329d80a5a31c158ddb5f06679cfdf7ec7ff35e6fbc925bf56119cc91acb7eb4704fae1e27ef8e62c":"8105b3502093d7661fd19eb62bf669da":"f6a8dd7ebd89223261d09ad03f55a8bad410d66936b16ff8b80ba7c344f79a5e":"805a27fce84f84901e579903e85834b510a5cb2ea217fe68a6c5d3fe6996df5d" - -AES-256-XTS Decrypt NIST XTSTestVectors #62 -aes_decrypt_xts:"fd6a73fafdc0cb895b6bff8a3751f8ebe84b10b4a17275a8d36b9e9872278812f03844f264e9fd72d331a018fedb1a3d63f1d586a1161b08b03efd7d020f798a":"ff325821e3ff3f23e5637e0cb626fef5":"7c4a1c0b25a54f0215ab92878b9af8713f7ac846412b32f329fe983540fd200f":"49a60e4f1c87dfe213337c7bb95421ad99ca8e8432a914844a9a8a78eb32a6c1" - -AES-256-XTS Decrypt NIST XTSTestVectors #63 -aes_decrypt_xts:"09420a8be61e1b13b17085e9cc1c899706724db03ba591fd8df9d321116bd4ec4faa4cbd3a2a4e22b091524e47001998167f81d5de32723f361eb6b9b7edce65":"b779776114dc07c71c42bf787bb847be":"7993cb22694d09c4d2f3d036663e5ff3337efa701402a75327371d4b19f300b9":"8b2a2a44ecc72480947e45ce49ee0cdeefb53e6d6ea36e59b22fdcac51664c2e" - -AES-256-XTS Decrypt NIST XTSTestVectors #64 -aes_decrypt_xts:"155157353bf4872811614f3dde54263e181861a691df74f89d1c8ec0f0f2f4dc343a5055f24a9e142d6045b956ac1388a30b2f19beb8718292dc07055d970d44":"bafd5c342d05b2d4a6bbf9461df85afb":"7ee212fa36384a7477cea6be8c44a57742ae19c4beff1ae103fb37a83711cc0b":"d00b755c6b9eb0f15c4b4d41f887581942308ec22749abee21a642e209a6a4d2" - -AES-256-XTS Decrypt NIST XTSTestVectors #65 -aes_decrypt_xts:"9ffa9b5c5fd2071286a3e248de08ad57ec628fc19a088919ffa96912031e0ca6f13278840e6dd4f8cb492d8b09f905b1be57455ae51fc681dc33a74e7c98d9c7":"c0b296fce542d2e855e62595451a4c7e":"20f19fa1d3dcd8d68607c87d128d9faeebcf1e74315a9cb5028d67818b3fef53":"3653a7f0a75182579d6529e9d02d95e0a22dee4d2aea6f7bf4bc25ffff5f019f" - -AES-256-XTS Decrypt NIST XTSTestVectors #66 -aes_decrypt_xts:"a6e4eb0c37aaf83c70c510a2c2067c8003e6aae93dd197d4fee4aa210bc09a11b0429394af6eb5e54758e91751d1d8fa9d763bcfa5fadda22197410ffbe41a12":"306aeb042d6893cb69f22469602732be":"f511d0f27f0fed0115cae7d78c9e3eb84304c8db15d3f829ff97050012790e96":"a0982aaecb75d804ea371265e9b3ee262e52fb7d5a30ff2d46e8ed3b4a86baa0" - -AES-256-XTS Decrypt NIST XTSTestVectors #67 -aes_decrypt_xts:"36461691dc3f78bbe018986743245089bd3332976357301a75203d63efa27a283102c04715fd75feae1c4493e2b39d0b56102bbcdb1ba710d4094856fafeebdf":"8d42d4ae7a717bd5868c0e013d4768ad":"74d87361a677da5d20af1f867d59dbb0c3f8d643d133231ec4401207c101d0a0":"193b66b884b9566871aed988d127f766b8c3285b2aaf208a5980abdc71d4945f" - -AES-256-XTS Decrypt NIST XTSTestVectors #68 -aes_decrypt_xts:"492b013cf9058250596a5c529f8a9e45185f2fee981b91131e5b21219670e71feb01daae8cf927022bf155bdebcfcc539897924d3a1ee4213588b9a9a0bb34b8":"5e3a921851e18bd893f83da3a50c7510":"25c4bd0d6459d2f40f577df22bb8aef2e4d1283019ed408ffba61590cfa0d67a":"4f6f56c889fe46a6ab53824756b18492e847e2686b2a89fcfb842587423663a7" - -AES-256-XTS Decrypt NIST XTSTestVectors #69 -aes_decrypt_xts:"a60231c46d27df8eb66d3b587d5d5db35e09766157fb339ffb4232c120e20873af320e5e4e2a932d326b626043bfbb3e6a312eb44d875bbb20312aa47dc6d766":"306b2b55110c493b8edece1e15a429a9":"b71e7441b2eaaeb862489e23eb3a0730ab33f96f9b72083717fb7bced8f2bbcb":"5e73370e521eb049c226488142de70b9b389bf90b7affd1e285915a8e863c28a" - -AES-256-XTS Decrypt NIST XTSTestVectors #70 -aes_decrypt_xts:"9a0129a101f425ce60bd57b9266cd93ab44106666ae9f9e9eb6fb2844d86409b607401e535e203b3dfa430945b0035466efc27a2e68726dbe943a62530a09e0b":"c0e1872ae297148b50a94bddd73503a3":"01a2325ba2a647a70475b2d258bf856ad572893006489e79b52b6773c36f2653":"c58251f94a2a6cbfa597ce77c09640e894e34d82a425dc23f030e6c9d52fea81" - -AES-256-XTS Decrypt NIST XTSTestVectors #71 -aes_decrypt_xts:"fbbcd70efd29a5441e7d43b900263d45c81226fe10532805e6e900f7cf562e50f4ec190f0df9cd7cf0b19c25cabb04da3f77c742b7f0456d34ec27492bc3fa5f":"abfbd1e6c38f4265a80d090490b852c2":"937290bb4e13046d481f4538513ac013d1aab88d2a2939505d860b3d315f18c6":"7b95aacf125ac3fcbf9b0801ac98ee4e93a212df67f82216e99e304ea0b8a8e4" - -AES-256-XTS Decrypt NIST XTSTestVectors #72 -aes_decrypt_xts:"c00f3a4d76deebb6720a452f454aae8c22eebc8bbc9b0c598f950aeebad786325bfbd52692da232d7a1b5378365f56c093399cc1e376970b9f9a5d277a0f5061":"349741d145157f7e5f6315a059cb6d8f":"a0783f1867843ef9f6e25cdc63bc3075bbab86c359508e1f6982432727b70507":"25104566f33ed9bd293d69ed9a565dad696daab629c4526dc49f81ee0595ed9e" - -AES-256-XTS Decrypt NIST XTSTestVectors #73 -aes_decrypt_xts:"4019e9c5da64d3d1a3f79cda9d01166ea02595f955b82cfac7e594ae3172c3be9c658a902983eca73c73edd2b912a6deb4782677f29491b4ceed56acc3fa47e9":"790ec3a70a7ca2a48c3de24dfe8cdc5c":"4cf03b3387f76ab00b3b185c1abee3a88bb8bf175148ed3bbfaafa5b338783a5":"7922bc4a8911ed7e03f05315253d2aa4445e988dc1c9e66eb9ca994df41da00a" - -AES-256-XTS Decrypt NIST XTSTestVectors #74 -aes_decrypt_xts:"506972f890d7ed0787c0383f9925813ec38770ac0b1a2fc64e3804a8023b9723e9d654afcbc473eb9567e2a17bac5c1a76820db5a11c2c68b06db303dc6a5039":"58dc4ed85b1ec5dd368aeaa888256378":"07d53cf1f3cbd2285dda24431a53ac4c96f664fa2d22ac4cd1453c5be7ef61f2":"6fc90fde95a6609f2b631e918932abb2f1da85fbf1ea0582bcff24ff5603ef6f" - -AES-256-XTS Decrypt NIST XTSTestVectors #75 -aes_decrypt_xts:"8e7f4415b8d217e7c1eaa411148ed7db1b15e1679dcd21b31461fa7a5e7a55534c7b948e2c91826100187858f1712fdd66ef6e0fd30cb2cdd242b9c12ab52426":"94ec426ab7629c4ee022f3971063a2dc":"0dfa782d31aae7c3919c2e224e97f682fa811e63050a92ba23cbfeeba9dc5240":"2fd582ef3b3e70f74fa2f7186770198e3810b3c452b886249c24c404ac0f699e" - -AES-256-XTS Decrypt NIST XTSTestVectors #76 -aes_decrypt_xts:"ed1ff8b1e0909d7d33524270533ebd7f315cfcfcc17a006f013f558400b458cded464ef02830764a526ad33dc314c455f8a27006b7358b7dda3ad5b418d11372":"7aaf9e2e8d7f1608b9326aa061079495":"0d6005eb5f91a4ae288bd355ff680ca964b784d80973a99c4a4d0ec09cf49485":"49346c8d75d6729d03f609a498a3a513f59875a686f1769a7f5a02992f04f775" - -AES-256-XTS Decrypt NIST XTSTestVectors #77 -aes_decrypt_xts:"10b96a3fd64d9637d1c95c33734726e693baabf01fda6116a07edecfafbb2c6cf11d7dca5099c5c74a62417bdcf29baa031e089207c4d4ca58db705af976046a":"ad1383cbac7950532d277f44595d8ecf":"104c4240453ef8efaeb55eadec52dd51631a7f1ce01c43ff262f10016fc69e09":"021a014cff455418845d90a7b76c266e8703d04bf188d3119f6628aa65397bc6" - -AES-256-XTS Decrypt NIST XTSTestVectors #78 -aes_decrypt_xts:"d5293fc21b537aeedd93df32daa2d45a371c6063f968d5457599adbfbe3177f206e7e7bbf4dbf7aedcf45cf6de4cb50792ca4a998011d127ef43dc08cbdb06d2":"adfa0b852ee61084106717377ff8736c":"5fef92ba7942f49ebe1af80935ed7304e4e1fe60cef2128c98572f481dd4a92b":"be9321ed7130c8f800e80397c62550c2858446bdc4133cc9e0f3e9317bc58773" - -AES-256-XTS Decrypt NIST XTSTestVectors #79 -aes_decrypt_xts:"3c8acc3bad92315bb4948b7d05ffc225985acd06507885cd7246d81958236687a3c8317feee044b2afd41730ccd41e07aff1259f3d1cc982a824dfcf31aa1ad0":"3b78b8df71027269f9d80b9a80632374":"3dc6536e58b1e8104d51a4d58d9086d68cb94a53b4fc747a88d7026cf32be80d":"8e00a4cf4bd4bd9e157a66165bb044e1ba093f1f86aa808a17066bb7eb94be55" - -AES-256-XTS Decrypt NIST XTSTestVectors #80 -aes_decrypt_xts:"2f5dbe86bdc519dbe8f1ea33385c58451c700e3bd95b311741a9ee19eeb2c399b689a699a823275a2bcee8b4daa43fc03bf91c26790580d2a808be7174dd5789":"c36c9638b2d549542a69e4ea69a905de":"13fc4f00953c5fb7624ae4315fce70f4dcac3b075f4702c83a78095a8a44ca81":"cad51c8647315fa57c80b304c07bc7a31d8d3979be22296d1815201b6d246893" - -AES-256-XTS Decrypt NIST XTSTestVectors #81 -aes_decrypt_xts:"f9be3b24d0819f38b63d13948c6bd9aa1f941e4b865b9c6f88e3c4d1bb14fc2e4739eba36644d8954788342d051d8040b85927b420739efe33be9064aa884cbc":"4546f9f6b23fa4988a551cd54014fbd7":"593ccc2cacdca892b7fdbd4ea11f05ed697fea827f408be55a2ff0afdf343172":"349ba948f7ee3b6913fc27eeee1297b98e879716ff19b2569e846b4d656d64d3" - -AES-256-XTS Decrypt NIST XTSTestVectors #82 -aes_decrypt_xts:"bf221936e3e2a48987a5338265a6e8e2d8bcb52e5d6d77d58832aab9d404bd91814c13c2263fdd2051822e5f635d29d7c18a6a25888d5e517b5e1bd275669ac0":"c024fb9f26ed411331639feb0ccf9cf2":"e7892fbfc0a5975210c277893ef54f1af6a35336658b71a024b7f037e3e8ffe1":"87513213e37589ad26589518fcb34e625002d6ead46a720faab4e0cc9babc114" - -AES-256-XTS Decrypt NIST XTSTestVectors #83 -aes_decrypt_xts:"1826c0cb61ced1ee831b9efe0485fb446127cb221f288045e644748d90314cbbb787d085d54ac18d3110820026df22c868e1958ebce406bcbc44276540edc5e3":"cdaaa0bbb166a45f01dc9760951c7c2c":"788cfa48cd506939be8e7a02832a3714ea74062ff3686d0857e1a6036ab5f4d7":"728787c549b4a4c36a7bf5060b7fdf128c32381844ea7245a4e9d37daa573950" - -AES-256-XTS Decrypt NIST XTSTestVectors #84 -aes_decrypt_xts:"75a664acd6e60173120c1a5e84283859e30751f97fa2057ca767bc72d9e4518ef4c15bb3fa752341c0b155a111c46de7fde5b5e941c354aad6d644edc68e817a":"b78c4a3aaef54515ca30236f999ebc88":"a5d95baae47fbd987e619c7d243128c021c0b8a6eb280369e6232a8e95c9edc1":"fd56648bcb0ca7541273dea9fa8aa23f2ba2865fe4d509618d617a0f415e1dff" - -AES-256-XTS Decrypt NIST XTSTestVectors #85 -aes_decrypt_xts:"238ba90e8e93c53d3a9fc91a2d7043f4b5ec492d8e0793741bf91a83ee8dbe30e45a6127ca37608790d44821cee79f55067537b6b8b059843db98f1b09cd63fd":"70fcdbc2346417979dde1f1493bfc3f3":"db6d2d65641e61cd0d47aa4021a655b283a39e57df5a4c189b3ea720ca80c3a2":"491490a2eb646c069ae4fe8ba8ef375b77b0c57957fe03fe490661f179c34083" - -AES-256-XTS Decrypt NIST XTSTestVectors #86 -aes_decrypt_xts:"9b670a9c5933c91580d0796f46cb11056cb1c65e018615664ed8732bfc7aeebc8f21debcfb7ffc4d9c85a05c21d6b90fc55bbfc44a8f6476dd3fec0f91bade7d":"df4b67bc5e70ef407a8319fe9c4e721b":"c31c284bd36acbe715734f7c166709eb6672dbfbaaf4c5ee3529dcb287bd2aaa":"8d31609e09f96302b4bc099731f3f9d37ac5bead52df8e595a4c3694a6313233" - -AES-256-XTS Decrypt NIST XTSTestVectors #87 -aes_decrypt_xts:"4eea6d7e5e92b756c635cd4b9942da425e1fcaa0f43ef200732936ee9680c2559281c23d51c21564941f801468385f0a7c24e0df98b2041126f6791e3a992ad7":"150f86fc5e732d055e5b567fc79e6dd3":"12779fc72f7ad1f25a50e3bac3733e977171692ed9e8379d91ac2dfa75f52e9e":"fad3006978657f76a2d1a112189b79afa2d7241596e336f4d6bd4efa77f065b9" - -AES-256-XTS Decrypt NIST XTSTestVectors #88 -aes_decrypt_xts:"ef9141d43b311a9268b99861a5022760900487c3e4ab1b69de5224b10f015a02861699ce9ab66576e97cf89f8f7c58084aeaf4305e7a2869a200df98e0b59675":"e08d82d1049c842e8fc9437644590ed4":"5b395b5d1d85d8855a181a6f327eb772f18b2587603961a9a26936df56223b36":"325eb5d53d9eefc69ed5c0e39aaef5a470097fa6518f4954054278b07501de8a" - -AES-256-XTS Decrypt NIST XTSTestVectors #89 -aes_decrypt_xts:"15e9aa9d4510cca523e1e4cd8d93840b240d1ab02db8f333e041e75edab74f7fa3deae500054c877da0d15cd840b3ad2731b4c853acb398f1ee642db62e9ff99":"97ce585ff452d525425e0c2372bab3e8":"2f183f4cd110f30ff9b4bc5982ea3205a9ff8ff660416f8d240a789bd2ad52ae":"6901f61ef6edad9c2bd07876c6d332cc6a67ae7cb09c443ce7c96d4c2dd76275" - -AES-256-XTS Decrypt NIST XTSTestVectors #90 -aes_decrypt_xts:"226e2126ecc3435279eff7bd4e5f3daa331f9f29f4c5f1eb5a0f3801f951dfe11956ff9cd2d6caecb685cb7ee959b82b247b4f529e96f7d204ac61f4de568834":"8baa458212142e89fd1e6cda3a1457a3":"8fbedc977267109b6849aaab669ad5cdfd15dcc4b350dd42eb3664851703e474":"a791c53edf5c8166816751a336f3d03402f3dae071f3a60564a0f2af735a885a" - -AES-256-XTS Decrypt NIST XTSTestVectors #91 -aes_decrypt_xts:"adaa629d31744b21801f26d00deea6da1a165c07b89fbbdf7bece621d3a7d1984327895ad8bbdbba3b9a80df4dbb0258229199c5b4203422b4a59a22f1bd6507":"6bc9341acd743b5c94bc2f2cedd8840f":"6d7d5e9d0b7c40a169d0ae575880ac977b6aa8bcfc15d8549a9f93d8626588b0":"389a057a61ffa0b6681b2bcb5b7c976e768f1ba81cc9d0ef5e3a5d4fa1ca19bd" - -AES-256-XTS Decrypt NIST XTSTestVectors #92 -aes_decrypt_xts:"41d8edb523c71df885d397e82aec8fa5cb83f92e000116a802da85696d35a9f905f360eadc6f10b571dccb26ebf52a5d55b7fb1485fd8e42ff3c0158d84ae00b":"be6d32185d469d8b512f85acbca7f7a9":"874962217c5377573962c7f10a885b27807aea67a798b665d523750fcbeae97a":"ad80eb53b26a1f0e97194efed09c68c09883ff576fd9edbbb5a50765dc7b3e85" - -AES-256-XTS Decrypt NIST XTSTestVectors #93 -aes_decrypt_xts:"875b5b2e86421b7e4c1af98ab8638f50f683ee49a7fe2e66415eebac771e19b636310f68ae40addbb385643c63ad098fc63432f89127d39b66b26fecd91ead7b":"1e5e5df19b5da830826cbc2ff6f69c39":"9a435043db8040b0a57686a42c00f1402a1c77bb18f1fb549deeec6db752d50c":"7662f54ea0c01d6a987360b40e9f6f1cb82f6a6d5c4246f62cb24f240939c43a" - -AES-256-XTS Decrypt NIST XTSTestVectors #94 -aes_decrypt_xts:"361de49dc18480a4da2545615035d724a9ecf959198b12ac33297d86606c1b35baf2eea743c9c0c4a8bcf2df10ed49196243af4676ba7536248cd641b1ea304d":"8362ce6123da1977447a5f3e048ef8d0":"58c11aeafc90ec78fb984d429f989f45825da951c4804f458ebebd6f346b5855":"c0c9aec4ad9c1c0c0d6c4d24fdc3307ae3a650c60372ad42171ed12b5ca2a382" - -AES-256-XTS Decrypt NIST XTSTestVectors #95 -aes_decrypt_xts:"a9f39b16e17131df50640544f3b38248c98975435de8ff80d0b7f37aa751a4aec4de7caf2f9f5688940f03a76307437d47fbdf3cdc6a6c44471a534a0d0e7807":"ec0656ec1168c040ec36d0353825b1b4":"b1acb1c513fe7f0e8cebeacc34489244bbcfa46cc0db526ba875bd75358bb9f5":"6dda79b7ada7abce6726365a7b316afa6abb4be396c6bc3b7453f2fac75fae45" - -AES-256-XTS Decrypt NIST XTSTestVectors #96 -aes_decrypt_xts:"de69e2a2e7ca0a0bbbc3e379d389b84f627bc62ab277cc7b0c04d5959842525a5d36109287fb066cea844a4487e86388cbe11e39fcde7c15b2f4b2951bdedc1a":"773d903f1ea98b7ce5900ffd9ef866eb":"584a98ebe2b9c24686f400b477d804c3dc1deaf4ada69f4dbc40b454f1b8d5a0":"8d28f585e0a8803b4183abe7c3b82fc3ac66a1e8fcbf0211301786ed456b3e0a" - -AES-256-XTS Decrypt NIST XTSTestVectors #97 -aes_decrypt_xts:"adbf1dde5469fcca77f480a5b24f99923e07780a0516ef15c32b0cf37f62413a963dc60e3ffb3bd1f31d393bf62c9f3f2846616093c5f5eec5052a740fda90a8":"b8ae76c5ddd4d9a9fce253f8169c10de":"d7b2d44076f049c30d5611d7566659dfe1dae35f2f161085da88b4eb7758c8d3":"a754d66b13ae0312f60f7beb4b73b29cacff5a7050d85a9753c4b7af0ee074d1" - -AES-256-XTS Decrypt NIST XTSTestVectors #98 -aes_decrypt_xts:"8f7381a14188011385d09aa340dc8886116ec746296cd83daf457516b4f9fe8ad4e85b019f6724acef2ccce354904e21faa53f01575c6dec4edd0d432b718261":"37a3915a08616eb1772fc0cbc3c6ecaa":"ff2cfca857ee1f45f6440bb3b51c71bec1098002fabdcbcf25017383413c572b":"8b6e4dcf7f9bdb106405c0aa5f655aa27f4b224b320e6ba5e6fc35d9975699dc" - -AES-256-XTS Decrypt NIST XTSTestVectors #99 -aes_decrypt_xts:"9366b4a9943e1f66cae901f954acd8465fd99ad6e39fc59eb9f91a4fb831ad5e7cec704bc43e2d5c005f8044bb0fd63b8dc3a33a75b4551a7f722a13761c5e00":"d6f125b91a63da779c97af18bb9e2a7b":"f5cb7868ac612b0054bb8bcdf8340155f52aaa87dece381c94416cf42143638f":"af3d1a1e04f0764e1e0c9cbf8dfcfbfb00508f6bc1ec1b3a9cdca4f7aa018a3b" - -AES-256-XTS Decrypt NIST XTSTestVectors #100 -aes_decrypt_xts:"fef5726fbff891a0be1071d43ad3088589cd7cb2fffcd5712f43a7be62b7552a3c7712d390b3a19164ea6365032644406746f6f0d954065dcbb82de7eac64944":"2741e6af5f88a4fd02cb9fbc9cb84a07":"0ae751bc884670ca9300f91061343d1f478440c36ed8b9fd4dcdccd3a12e61b4":"7cd54efa60b0a6bc92acd144935ac11bfec1f0a69a3c53d435ca0d1cc5ca15db" - -AES-256-XTS Decrypt NIST XTSTestVectors #101 -aes_decrypt_xts:"8371c7c207b3734b90e038f6c82d8f42abdfdcc1839875d659757e6b9b788b365617d5c3c8957f2bd1ff5658c624d82ef8a0502d100955acc2bc4ea9528a6219":"a580895c59c23be2cd39b431187806d6":"b89c6508b1f89028c4a522839c7c3a40998da9743061448d58014a379aba7b3784da77bd355c6b96fe3b6685bc0519b1":"bf1cc5da2215a23fe2f31baaf8c0f11b5cbb94fe0416909f7dcb7479a3faaf2bec53888f5ddfac5017551aab02cc1bd9" - -AES-256-XTS Decrypt NIST XTSTestVectors #102 -aes_decrypt_xts:"9b7c04be9b3766e13b06b77b19d7d552fd8a89c37860fb52135aeafe2ff3206324c0bf48f17e08e83f547a3bb1753e04270ccc14c9d3a5c1fc05e8fa54584fe8":"9e53bfba0953c66cc4d4d6163ae88d9e":"4d556a5d583419de7fac2310fdd953845faa40ea3f0bd9a7bd5ca4297eddcb10651f0feddbe91f8a6c91fae88ee56cf9":"322a7aac97f8fc5884cb6b0048aefbdb0db9817252591514784066723523bdf319d04363bd8ddd69b928f156100e1edc" - -AES-256-XTS Decrypt NIST XTSTestVectors #103 -aes_decrypt_xts:"6f2a3165db6d662e95df91fd9a909fef443ffb676b7519ddec38f86dfcd6438ff48a60087f101f8d26274a7a64b4c287ab1edee347398fbe3df901a84dafe5fb":"01c499678e107051f5d6dbff3586c15a":"4a9e4939f8398d39830c88142a34040d88822356801bf82cb3e25120cc7da69bbe1847d502f7ccae3c7dfa116a8ee3b5":"d2f4014b5ae09f0a9437c853b45c579e171466e72c9da05e881b59e4b30659d76660d77c1d23f0161e356ebd828f366e" - -AES-256-XTS Decrypt NIST XTSTestVectors #104 -aes_decrypt_xts:"e0606a865a993d5d1c49068ec9b8cfd3df4eb976d73475b4a43363c403e1999d9ef33ffbd909abeacec057e700d94ac0ea0d897f5043e5a78f3606d5a3e17a82":"71271383438e0d3ee71fb86d3e97df8f":"715476936600a12650054dc99c6e3477fa83ef1a2d86d33da89a34d447c8d0124bcce49c790f929ac2838d34de3140d7":"bebb3dfe63bf23cc55b2b5d7cea3915a686fe2b91729ea696989b56b1a5ecb0552c4921f0ddd5786503484be334c89c0" - -AES-256-XTS Decrypt NIST XTSTestVectors #105 -aes_decrypt_xts:"a262543e9b7cd00a32ae0dd4c9067e5344c004a9d234636b9c2f13e2785cc33f16d4088947418aaba0c49343526cd0ff70e5ab27fdae27ff4f48894ea86f3aa3":"9670dd28c24f210f6971b69b86e9d413":"418ae4a9d28cdfbefe6cdf70b75457f018ea628631a45a6cc362d10a045d834f652997a9e6bd7bb8cdc60904e4f2eb32":"b65f955cda658d8ed074fcf562d697ad771e89e0a9a94cf4d8041c2e92f47322d07bcddee361ef584ce30f53814109d1" - -AES-256-XTS Decrypt NIST XTSTestVectors #106 -aes_decrypt_xts:"13bdb0257c78355bab88fab43ecb5dce211df2fa5836acf9196a548b084eb8629cb6fe31a956d8fe1234031a36a980bb8a70260a90b0157fd4974aa2f44ed900":"4fcafd6e1a022e9ee7e3940f68cef99b":"99a1a07f9f8934350df099c7847b759a6afc42b5f6f8bf6031cdf8781049462e6eafc0cf30f8d4f6a8cd20a253d4c693":"ee2d97438cba39b3c2527b48037e7756cf6cd771412de0fd557af82554a7a95c255c38c9a2eadd186526330119b5ba92" - -AES-256-XTS Decrypt NIST XTSTestVectors #107 -aes_decrypt_xts:"5ef338dd6e8bd772e6f3520d3c060a4466d2f9d5ec0ba9d9c1ddcb3a077ee0d3ebdfd9c4b243753a6e136224a9324a29fe3087c7a0fd9fff4676c70327e8c86c":"421f909438c0072a2db9ac5c9917a112":"7c4ae7bf812deacca841dc86e13fadbaaafe7b711a210530f453c172c5973fb408df3f474dfe8f6a898cf75d2dfb0d68":"010662e281d7385aa1b0cc002563970c64cbe9149b910c14ba23eb8ace8e829c6af003c4e29a8e2e8b10493bf26ddba1" - -AES-256-XTS Decrypt NIST XTSTestVectors #108 -aes_decrypt_xts:"614112e6ae13730e6f4925bf6628a374ce959be494f13574ef86e544ee49a742257f88778fb894316cba489440bff66cce4addfe98e9b88955a86cf6909f4687":"c4f14279906ce44ba6e975e66db505ed":"280f229fb75b6a4d8786aa9681b83e6ac8ee8304bbdf971844a3ac3aa0c6fb16cc19f9d8ae2674d3076fca3b6ec512f6":"ba10f58683feec8b166d4800ae60755db22d59b952b47199de408e0ae17e98fc06b80c0be89754159ec3ad378a318e6f" - -AES-256-XTS Decrypt NIST XTSTestVectors #109 -aes_decrypt_xts:"850613538d3c8f7cc18636dc1b5be686befec54c60af6a52bb10ef2ac567b13123d38906b7598450ff08129e7e08bb8fe27e04bf2e4b3579f444e0b9ef34fef1":"2cac49606363f2131e9aecab160bdd5b":"36f282f440c12d74d3b5db24b72cbf780c6b928cd6d3b70718e37ada1bc5f3c15e50c4b561ae4fc0e4f2cfc923585d08":"ade4ec9a0cde24d8033ae31ef8589dc75388941f902e3b0602f291ec9a6c62bfd5018d848124cb7f5643f8c94c335d5a" - -AES-256-XTS Decrypt NIST XTSTestVectors #110 -aes_decrypt_xts:"9d1bdddf822f7a0a38e9c8bbb6c0bb956ece1fcf30264012d967b18ec0187a31434d81731600dc67c25bdbf3ec12dfbdb6cfe47bfaa33e02d9f257b0813b07b6":"bfd261a9e11b7f3a4a5eb61dc7757448":"805068251a01ada16a44df9ce0c6be78ef52e23fdfe5638be74cf8d1242fe21c82bfed83e8f6ac103d4fd44b0e1ef4d5":"63465b29394df670faf46dd24cc10f10284bb2d946e6d861cb65875dd58a00ebab2bdf5f85f199558d2178ae16a5ce29" - -AES-256-XTS Decrypt NIST XTSTestVectors #111 -aes_decrypt_xts:"7cdfa34c0fa73f6906e74075125555090edb25c509c03c0b65c8af384700a20fa1fec243015ec7434e89860fd61e1a249234492af411bf95143775a20ad25b51":"1c810a27ea019a3b1a95df167f028733":"105e1e7e44388f5447b9c82afe7383cb0fda0eaf8a3a48459568c9308e6d6620bf3461bcfcfedbe9120f7554415a27fa":"da30bbab8e0559d276d5aa3befb1cb5de42697607e5c2acc4d214fc4df6212fddbae5aa11132c89d20a890826fffc6fb" - -AES-256-XTS Decrypt NIST XTSTestVectors #112 -aes_decrypt_xts:"e7d07688fe68d5908b38f6e69159fba04b4397163eae3e9145c18d46b2fb69a6c639c9cd8963688a67b6de38e893508ab98e2b090d605d4bbcbe032df895ea2e":"5c036cd8a5571d265426737408c19871":"d428411defb8af2724abc0cd42a5b984eecd8cdacc9a977e818ea38097b3fc75f5a174bc8e6e59650ad87a8a6693597a":"f58da78e17efc12ef0b7329238fecffeb0c1bf6f7c17f96ea34a507d5ba2a3d242aa40ee51c1ead23a25367de05dbca2" - -AES-256-XTS Decrypt NIST XTSTestVectors #113 -aes_decrypt_xts:"7143fa27a3dea9f9a030ec1845efc8a6cd5f4cbe9e4b7ce217020739f997677b9a72110890224c3a3a338ee97978d747a107457f291ffcc34dba3ab496fde608":"0d889df4593d4c34abedb64d35549dab":"b1dca9e099a09f3f12c9764896126d3cbc3ce6026af1b0b4cef0f0c471c536d244a2882c9f17b068df1a2eeb87ea135f":"2a083017985f3155bd6a0c9a80d06c7a38ec4b292605b3af9fe7e3dabda5d9ace3854730146ddcc08d5fed02d3fedebc" - -AES-256-XTS Decrypt NIST XTSTestVectors #114 -aes_decrypt_xts:"cdb89ff9360f4a1f2746b57365b10ea180c754800b8bcb60c941bd9d340fcf3a66ea74aab2151af0c1ce3b125edfd084e62f87b23c4606c3ec130c84e67483c1":"d8a9b563694d44f2142bd22973c3b00e":"77cbc985e919236d25455008fc8b544bc9ebd8ad291665a483c1d7df9edab7dd91a180feaa78622ff01639cfefee20db":"bff44f5022747827fe5b6d28dd7fe1d5442313e35dae24af3fffc30dcaf7165b44261466f7d48a045ee8b9f9c9d029f4" - -AES-256-XTS Decrypt NIST XTSTestVectors #115 -aes_decrypt_xts:"bbd683501012cf644ab7f5327956fa57afd1be73b6505ba030dbf270020c0a28046224e43a7fcc6f9ec6f8fff72e18b94813b40382dc8fca0a64c8c291276540":"2a01f2901398de0492c6e7cd009ff3f0":"642e0df41ef787d9ccadf195d84399e50bd2818ce7394be106c746a0ec7e08d7da4bb67f19e258937304093683738322":"1ea57eb39a8b149918d8e20428566bd339ecacfc1104a6374cc888140da81beb1245dff489d0ec3e37cd6706df3bfa3d" - -AES-256-XTS Decrypt NIST XTSTestVectors #116 -aes_decrypt_xts:"d3c690661b6adb9e945142088361262f89ade02f9cda157d0b41a314301be17c9329dddc5517da68824bfa151dd9d805c79e1eb5953603e573d38c7ac8b2c9ab":"dcb4819597e151e6caf04f515d83251b":"191128cc613e022caa469223556e72906c83d68f748febdfceb42aedc86f2f860cbfce7707be95a44ca7686684e2b212":"579b9f730f83d1a2f398aa82122445557120c5621a5166eb8a927f548ad251c0bb28a5273d60fa904aecc8ad4f219f54" - -AES-256-XTS Decrypt NIST XTSTestVectors #117 -aes_decrypt_xts:"8872a3e63fe1848aea13f059d141a5d24edb2b0c4f02df0ee8c6448be2116cbd653f9a4fb6a9ec7a82413a7f2d2ad53b3257a97c167c764affd987dc10553576":"99f633346f32e4c8615e4e6a8deff5ef":"74c5604860b555470201c836a49d9c7eb568b86e6acb481f4afced7e4a41f47ac5c1acc0e09fdccaea95a60478842a85":"d9241b25b1aec01cc3931e9357e570b610e82fabebf589b182b20a63966bf56a10aab56a9e2b8f611ad06693e9275dde" - -AES-256-XTS Decrypt NIST XTSTestVectors #118 -aes_decrypt_xts:"3f9a6833bff7d2b0161492821a60ee44cd2c1650c6bae26a47d5731b1549c17c966e31081099c4ea9508ee4a36ed5cf9f1193d28bcdf71f764ffabcb0ed543b2":"555a1536b43773be196673a462a48681":"2e3a4c6f7829bd818cf1d38dfb3a7ef3186f5d3a61ae55a504b244b0b0418db5cd09d293739809d298cf2e57ee738d03":"02495f7b7c7bae8f7554f96fe2df2c084642469d0d8b076eb285a352abe5181dd5b55c0c69cf00f46d524bdd0e467787" - -AES-256-XTS Decrypt NIST XTSTestVectors #119 -aes_decrypt_xts:"9f17e600c9aefabd8b67cf06d9145af549710a4fa8ff7f195cc27ba7c419033847ce0f430d9c95a7435bf45c4d844d2dfc7b0ec6c74453b4cb1270ba903dd3a0":"e8c634d79958061297d75cf4245d2090":"35fe31158ce1f940269d00ac9ed25667d6b08b3e3f9089d28583546d4945bf0f6ae0cb729207ee4214b57b14ba72daff":"ed42fc5741ea648238a9e568cb0cc247f3569cde35d7e67e7bf8cf8ea8ae844547878aeed8845631ece6831ee04fae57" - -AES-256-XTS Decrypt NIST XTSTestVectors #120 -aes_decrypt_xts:"b820d9bdbfe403b9234940e0ea680fe4099d90f6568199365e14f2813fd9a2ed9e459f75fbc17f375de468ff639993177dee8ecb9a0f10b9a9a433dea2fd6143":"22882c52621aa7d25167155eb6cca4b4":"4e5d7e060c738dabcb7fe4c2d66cb5843d3567a97ffc25af6761045511235935b566c96150be6d9a8efab0e552394b21":"a56c1844a9c9709089b4879ed506b85c687aae3c32d1307131b9f911d2721d9c8f282b8916759df3b0ef8559c729f343" - -AES-256-XTS Decrypt NIST XTSTestVectors #121 -aes_decrypt_xts:"f7eb8766372b3f6165a98dab452ab0363cef9abbfbad1ddf74d58c72eae48861e8e264abe0b279f790acc725cde3bcef2a4aba6516a9573e4bbe7a879ba0fff4":"7d5eb3da3afeec9141ff67f5fafa915f":"9391490371595a509e4dcc95f003b10729ba3c14a4f39720721fb2f14f8fd8eb0e74c605d8a1f9de43bbae4f14664297":"139bc02b84338f905b9b5da4efc36b3d6537780cefbc1260566e95756ddf728d132e1d28df879bc1f35f03b3e5957f05" - -AES-256-XTS Decrypt NIST XTSTestVectors #122 -aes_decrypt_xts:"fc2996f070f330a5569b34a30efb96f147b9e6ac8c2f86e6d351c997d8f1ffa2234797f30426bb970758ff3af9973a2fa3ad338c8591bf7e581d7247ec546841":"900fcef72211bf8174f115095d7d1875":"c1a9a13078e8ad999773c4f372791b6ec7d73eaef07fd8a47281bd2d0fd11b5893b20a5fdfafb91cb5a8516a5556aa02":"fdc1e7e1b98a3ebb8397b609804d1b841e2b237a4469c9b67014efdc1e2b7cf36f58db603d754938cf6e3c733d6ea21c" - -AES-256-XTS Decrypt NIST XTSTestVectors #123 -aes_decrypt_xts:"191bcaa937061a76c8e1e1c4f06d9f603825e4b7da400e189dd75dd3d8e1b4e7c34a202e45a29974134b7168fb580aa8c9e45e13ca43e1eb6b48c97a17f7f72d":"00ae1f3b6bd69c515bdc6d1bb7aba232":"562907df93b5a671c33af2e804f811c76541b4466662fa9c6db7e37b761870ad34e45a19e2d26d1ce5b3707082ad731e":"252fdef80f61469f3e40ed5d2a7850df46161ef10d49ef240a8897599a3e6cd069df9da7f3b05d0e4c7a902279093e15" - -AES-256-XTS Decrypt NIST XTSTestVectors #124 -aes_decrypt_xts:"e13f5c63409239ee586a925cdbacd0523f562dd3e6e05efae358720a4bfb85831d7957eadc83642fcca5b87e3e941bae9f3e459913454e8d876f14affe89f521":"9364f455737b739aee1c6eef22dc5ce5":"122fd7a58985af34cd037a0fd298c377d9d1930b3fa5c59c6b21e3716c805b7f80fe047ec5f9787dd33cdcb7f276fc0b":"def91516e9f8538bb9ce8b6ab2c4ba93676000e49aa3e16941b7c0006fa4019a4392d2e37970480610d9f0ee652dd463" - -AES-256-XTS Decrypt NIST XTSTestVectors #125 -aes_decrypt_xts:"993ee4505a366f3b08d3f37c52a6da09f3a33deaddf67352329b011b3a6d5d5fce35c91bdaad8f46c22704fcfe0d57a9bfd5ecaef78336a9473f8655f5027f24":"8b8842419670681db59fb10884916283":"453f4273d50364d5cc1a47a27d7c17356566b7e4954fbe45c72c1ff8614c7109ebc53b80bfd1cbd23d30a4396d5b01a0":"a3aca29c2d1ed252c105a8203a4c2f5b79c4dd46abf88b60b88fb10ce57e83f64063e2f2c0c55b9314012eeac2a5f95a" - -AES-256-XTS Decrypt NIST XTSTestVectors #126 -aes_decrypt_xts:"69bcdb7f599c27cdb084f9ef4642daa19b0be3b12003f76b4c5c46f1f9887b865134d8fb52e6d571959b803b03e4ca90aa23e3c6e8db955a32ed3136313afac4":"f7788580d83bbcbe9b946d0ed2d01625":"209660456885dbbbe8c126d3bac6076aa38fad9235ecd50cfde15c98176cf11b0cc206cc28b9538edc7fb8fd7035e3a0":"41b40373e9928b57debd1e9334955aaa0151ca96e42924d7d77f93f793a35e54403e902b79977316de30c65874fc7cbb" - -AES-256-XTS Decrypt NIST XTSTestVectors #127 -aes_decrypt_xts:"d93a3ee9ce2fe45e6f34668b6283c91ead818c87aee6581c5cc1435a96cb8020fafd0dc62dd569643eb60c5f4f07f2cf9eb1670fdaaac018a94c5dc41a29c58f":"ae6ee7aedabc36178bccca76ce1baa1e":"50d72e758f5a07de37888b0c6e342119ee1ede3492532b51fa6579e5a717ac5de31236bab7155d69dd799baf66a14126":"d0f310edc65d6c14914a047820dd8b6fe15a9b4743684cbc8e4bb4cbc55d2c0d9348f8216d8d20c4d58789fbabdce7bf" - -AES-256-XTS Decrypt NIST XTSTestVectors #128 -aes_decrypt_xts:"a494bc9b28e8dcfa342c6e4b71e0f395c2d404925c5ac68ed1a2fd10e73feed634cf90542c6e75ad78b9f140e47475cacf7363362e1995f5fa2bccac0a0c29b1":"66bbfb617c0e1662c037fa1ba23db862":"af1d834bcccf8df8c47f9b042141ad73cba39e20ac7042f974cc0235c97fb02270691d58e26d0d668fe8d0b374359057":"29304c57bb1d37eb8e16a0ed03677e11cef1e3f23252f5d82fbfdec28f32292b7c151bfe4feb7bceed9ac6dd6bc25547" - -AES-256-XTS Decrypt NIST XTSTestVectors #129 -aes_decrypt_xts:"708e67b7274dfcb76eb979b61bbe66ec0d41c88a4e770dc300b45d9ad7ee0c0403d24eea57a6e9539ccecc8abdaeb4235aa38fcd72a152ff0a8180f77a4a761f":"304190956afa20a30b0ae65a15acd907":"f411ee2b6f406da72329f6c044c6414ffb82fcbc15392e16dbaacc76a6b0f3dd7565e52e3478a2c87efa5f8ba75eee2e":"efee9676be92a9fa0f545eaa2dfe9289e5fa93a9214f1d80c38d20c993eeac5a6978339afdd2444e1d0a1998921a789b" - -AES-256-XTS Decrypt NIST XTSTestVectors #130 -aes_decrypt_xts:"f14e9b014ea36de4d5003caaeb4a05ca1b75b66e627d89c60052db9c760a520bdd5054ba926c5ba9e3b30f786d53754f9e2816154b64e031e36cf22257381df7":"cba170b97a13857e60517e181fb4a7c9":"8ed72bfb87a8c11c150c03c683910912e440bd0e98e16ae36f6a70f735d2267a4bd72e52a2a78780149e37287f3063c9":"1ddd33e690c13170919995a0b908fc218226f7804236f070fec64b8d8340eb5954c7a7ebf0d888da69a7cc7aed28a403" - -AES-256-XTS Decrypt NIST XTSTestVectors #131 -aes_decrypt_xts:"b6bc97e4b3d849e487b730bf0c305e81dbdb33c2676e6035f0d8099d1a12394f709090614040f9d19879a0fb6d82a1a6f6c5447006f0670bbb20b7546169b355":"a90ba7cfed562ec7894067a2a09f3ccf":"bed8d1fc8b3b49e7509cd63a4f2581d954cbb3ebe221bb5243626a0b7edc21d9c69dabdd151254175bd2a840509e4be2":"23335d164b6f43e3fcc18217bdd6c4b2c9f450acc4ab108343cc393d32535e75902697187ab5d721994a317ed8e4abb6" - -AES-256-XTS Decrypt NIST XTSTestVectors #132 -aes_decrypt_xts:"0923dca85c289eb759e16d97a58e3a02b7b0d7c7e3e689ba561b574d0cf1fdbb74f93cb9d33ebfe40df343c426292eb55adf46d5244489f89211c43ca86474e1":"20b5cd360161da8cfbe4b039181678ee":"f9b483508e5312968280a2a2463751eafa1f2da152143ffe5a295fdf6f312dcca1e78b946c27ad7abf34400b480644b7":"12713b1228e62fc6ee17155106a01a81788e1d12e4067c7fcaedca1523dacfc743b48ce55d96e7c85232d46ecd3077a0" - -AES-256-XTS Decrypt NIST XTSTestVectors #133 -aes_decrypt_xts:"dd58956bf5e197741dafc0d576e0f17855714721c39168643b5c72def9ede0fcc55c0bc6204e03cbfcb32e4e0a39787036af2a80b89ebaf39caa67421d100d11":"a4146393706912c5d417be483761358e":"f5d35df963a293dc7e1d2d71274f4f510a192b72a1523ffdf1abd2d58e1c54248c73898be3f510b6078d2ada857145a0":"7927fb2927d833429fb0f828eeb34d0f75957cd57c7a0ca15931f8512826102b554b22fbecd928f8ffb0006fb5e96f7d" - -AES-256-XTS Decrypt NIST XTSTestVectors #134 -aes_decrypt_xts:"3b651bf3b3b505ff0e5da0b07946ede49795b8d8bcc29cca5c14d9bb2169c2034acd7b6bba79d8f9b86fc23b480e86f1bedf028dd40fd619b9e34e08e2cab393":"6507a38b44a92791251e041119ecac43":"50aa489250b6027bafb0681336104d826b021eadbbc564973dad2e51a374311a3c29d30321ece0b5462ed23d9d539077":"996bb8c4a24536f74efae148d78f5908bee9f492c12ace5c8d8ad971a66e3c834905de21223865958145a202dd3f6e2b" - -AES-256-XTS Decrypt NIST XTSTestVectors #135 -aes_decrypt_xts:"f43ff13801b37f695a8c889486fc6d3b4eb624031b16ac303db7d27f2763867e09e22dfe28fe7541ee030ae651605814e453a9996cb63e3dcbc076183bd7775d":"d92262e0b310ceb8aa0a2d45c8978459":"d61c269407cbbc11af61b35c8899388f1aea3a1780a499a8e8b88eda131cff116ded717f4dd93f9680dc5260f722c55e":"cbc7cabecc8755c586349c88359c8835609b65889766f07bfa3a9fccdda024095e562aa445de9703f6e55ff2b206b613" - -AES-256-XTS Decrypt NIST XTSTestVectors #136 -aes_decrypt_xts:"44ddb47fc70cce74bbff362dc15483428d58cf22079e0e84b6cd5b8cabc4da4b4e7599f2a3dc36282b2a252c5f049fd37a558f72d7a5110b57004f03dbfdd7f2":"78558f4ca4e0cd65b8e71d041a2c2847":"337e9ab35726db0465fff4e7510ddd1b9ab0847b88cb9dcaddb9acb18cffbda49160b7423103955945d42cb4e0bc5e2c":"3f008d6bee2e065ec88cc396b4c1865308adcb960a3c3f6449f9e19db293a38368bc70e605a1b7e012bd68692cef6b41" - -AES-256-XTS Decrypt NIST XTSTestVectors #137 -aes_decrypt_xts:"4010a119bd131de644e929d9c288d343f6a3de3a5984412000bc58b4bac9589821a2e6a97a4892bb664c3871c47b9605821aee50a3d1f2c36653e5f53cac7f2a":"27b8039a94f9762cfb1e4b17f0370a45":"3a27cabced5a1c373e16be300a37e016f9d1c7444ac456b40d02daa7e330547fdb4c214cd36d117ba9e3a17f85f47a37":"0588b51b0aa3be47a4b6fd86a6a59c47ef409626b2068e6f23d7836f12ff17229a9a995459a64e2dc73ae16e62e3d54c" - -AES-256-XTS Decrypt NIST XTSTestVectors #138 -aes_decrypt_xts:"d51db62a89f09725e8aa7a16f870e2a47e3d20131c43315108e7103610ecca6768165ecab57339a81cc2ccf127590a27c720d62eacf81281ec4123cceb4d9599":"8fcfe1fe4b04a2e1383f808675b27022":"dac7572287e557aa920fb8769140257fc1f461d3811f562ba15c462362a71a5e7424a316fcaa846ab4d3240fc42c49bd":"fbe7191d1f5353467b7af25c463f5852487a5708dab98f29266318e3ba3832acf58e42e045426e6ade51a03639eaaacc" - -AES-256-XTS Decrypt NIST XTSTestVectors #139 -aes_decrypt_xts:"ad5ea6899a2c91e535dcc943998910bc41437e3d9a436ca37620511c2525e69e7624494de929dd370743d28a479edbb6e8cf8f23d3ed2db92378e236aa3b0c7b":"383b46df253c5977c04cec7978ec1aa2":"b6d402c7a601e7ae0cd4e5a869248eba956ade0025db7beff6888f4182b7b6e4d993e751f8deb635c0c192cb5b0a1920":"cfb5758fa4041799d56e290defa7fefa74a76892c3a42f26f1e3e6bad3309b14693915145795188c97727af462293457" - -AES-256-XTS Decrypt NIST XTSTestVectors #140 -aes_decrypt_xts:"d052b0a2c447778b5ce92fc789b113bba2b4440ce67d268b53c7d6454e52d968820af187e9b25508180bb6c69ee8595707ae54bccbf188b65d1c34f6c35babe4":"bdbbeeba26f3eebd2e201542336b1080":"66faa5d1dad7abb1bfc43e40e4ab0810b01b9991a3c0756bb34db935c2fd1b2f14a32814945db8223fc1ba8fad1843c6":"3f96f3603353b6cb6522f037f74a64a20d264b9b78963bb11195cff1d08a8c6d80da495e69ec83d7513bfd3a0db887fc" - -AES-256-XTS Decrypt NIST XTSTestVectors #141 -aes_decrypt_xts:"ec3b71289005e2293056f922989fcbf7c3c3d33668780ebc4a93c1f06abc1d73eb50a100b8ba066ed4e139e5b0a6ab19d0e7df886a5d7efde1eba1de3131ce9b":"8912527f1b288a4ce4b98620fe46d8be":"0dfd8d2103c2fd0751b8b01c758f045c290fc07dd51bba7b0a0f735c42bcd05e4704d4970295ad7f1664bd024e21b7dd":"de53f84d00a413122af1c0e0dd603db8d5dee5f8241bfe61532ce283e9ac8d1b155a0b6fc0b89b81427bb88125cad3c5" - -AES-256-XTS Decrypt NIST XTSTestVectors #142 -aes_decrypt_xts:"4720b307b2baced16a4de1944a2c92cc6cdc06709521baf2ea03312cc6a7091b688398469b10f52f7a057d8537ffa51616d2cc5b582cf67069a81f2f4fca2302":"1570d6a8fc0cb36810df998ac5131adc":"1b568e8945f27bc8ec8360fafe7d241017b0b5ebbc99842068b11015aff7a7669295244129ea96a19fc68de80d342138":"de8955dd9436ea192969f55daaad721b517f593c3a78aedbfa8f4a07d422ca6930d8ae9ffe8bd3f1a830370317e4586b" - -AES-256-XTS Decrypt NIST XTSTestVectors #143 -aes_decrypt_xts:"e4d7e2d73de2e9712f5b1f57bf366f10617101976cbef3321b5cd3a0c4996d5407772a6fcb9e0f27af6ea1454f97d92acd1b4442328bd0f03500c18040b7fba8":"a0aa71464610a637bad36def3cbd5a35":"9a32e8c0d030b0f792b92fba9ccdfa4c5940c828e5e825d7e850b9796bf43052a14e8e58b486ccd5f7d5e209467962c7":"79d110298ea26c0f0de4cbd4b961b5441750fa9c952a853465ee22f1382d93245860984a68b73490e6972572d858b97e" - -AES-256-XTS Decrypt NIST XTSTestVectors #144 -aes_decrypt_xts:"660b53ed6be27bd57eb33c07c54195aa23dc3f4e414f43975eb7f7862491a403849c9ae22fc88d4e3706a421a29830a6b1eee7f1f53f4bcac7766ae7e565949d":"21c5a12287b434086e26936e0b68c2fc":"93a65d993315966177f78ebcb415fecd0338f118f2f754763e046d3caf3bccd382afaf4bb751670a6c07b6af2f60c1b2":"e6657ccf827166bc60525fee617d4dca61b698fedb41f83342fffd624e6343c419bc0693ecd1b033448bd3d6081143f8" - -AES-256-XTS Decrypt NIST XTSTestVectors #145 -aes_decrypt_xts:"66d895f0346ca6ad9acc99f7184659685116d467bb58997f5df1e156f2bd78e57d648d8795bbefe48b00e7db6c2c1c6fce47a64d6fc50a00a13ef5a4f99870bb":"3b515ed4cbaeeeb77f171f2bac183720":"730aa74f0bb09e561579444b1dfdac63ed7a5fca11a789df9528c9c8a97f4144f8247627e7d5e9818a2675d66a98afe9":"1a7866844428751e1086efe18a7feecd9a54e336736e7cf08c10a7f538ada88af053939f070286c9d7b825dedd66e4e5" - -AES-256-XTS Decrypt NIST XTSTestVectors #146 -aes_decrypt_xts:"dd611e07f8b0bd32ddbe3f800bc0bdf905b005caa85ba6552e86666525924a5843e37218be2759beece17308c704b94c3f5b17c77736f0667d1bc8adaaedb8c6":"78cdfcaa5e415a49f037eb171ce8d55a":"dfd09c36c1b127411c09e413f5f128b2626c3f00d90e2209845005f7671b5293fb34bbb7efe235f0937d40bb2ef6dbc0":"d9470f18ff1101c9669a106a1b71290ceb29cc024d2d943675ef4321ce81b6dfdd3203ca96c10a73e5511823fd2212d8" - -AES-256-XTS Decrypt NIST XTSTestVectors #147 -aes_decrypt_xts:"408c99436d734148ff3df8545fc1aecb32dffa384e1f933b0131ed012130d71c2ab8b65342a456e7eb0189c1dbed2c9953245d2f1e521d6e74e13bcdf91f2520":"22b74daa4e4660ebac59dad21a5b262f":"3704d534bb861b482341f6f76e3353562e8e4c554481f0db6d6dd74afc4b5e6db529835134094ddbab298db28e0e1015":"e9058ba25a3521957915cb62f2f2ba72701e18a215d728f3a763536e982c05b34182034da1a7a8e694e7e83afddaf43c" - -AES-256-XTS Decrypt NIST XTSTestVectors #148 -aes_decrypt_xts:"03c965f675e388713ba6c4f0ce31f574a2f381fec1ed3b8bd515553db8d3529d7929e1b00262385cef17878490767ddc990f9fd0ed5b76993798912a913a15ee":"dd2b8149e972c1808cecd04c22547685":"dfa3bb12234540388c6075dfb454d3112f8e1bdc1fc85208b09d7aae8b57f42559be00d787aab07ffe2e47b26fef983a":"06350c4535506b1bc49474416ab080b67e20568c3ef29d5354924a4d5cd564060a3ff043f6a741b0448ded1d4daf35ca" - -AES-256-XTS Decrypt NIST XTSTestVectors #149 -aes_decrypt_xts:"67ec5a8808eb5894c9d332839a5f2947ddb4f8c136afc9045451738c231f3b8f2aa124c899767a349b8f265f0d1675e9ee64f93ad8fc29bbbef7950be425d4ac":"0af76bc29e76cb20fc81dedb67547d29":"2ee44c17e8cf28aec9b3a85dadb900a4f79bbeab3eb1ee407a9be1412658f5cd67c439cdf1d23a4d75360c476f7a900c":"778972f5f7e5b578d09378a614b3b5572f6dee3ac522b55b988469cbbcc2aedbceef71b0a02d74c42f5366d96638c231" - -AES-256-XTS Decrypt NIST XTSTestVectors #150 -aes_decrypt_xts:"6ed12fa916cc773a20c78407638206143c036739aa4bf7f811fe904812aef1cb7e10ccbd8edc57ff2f32d4103eaac3e1792ea948c9e7ea5930fabdec7888e599":"ec92d320b6d9340c26d0945e0c0060a6":"338b837589f110af497f707a1a408e598d3b47fa981eaf15fd5af9b05bfe08de385d229344ae77e44868f634ece6d97a":"68681dd0ad463ced8d3c482dedf7dc0edfbb5361cb1b36d8117b66e2594a08defee53ec41e155274b2b94068a5968c64" - -AES-256-XTS Decrypt NIST XTSTestVectors #151 -aes_decrypt_xts:"4e86668f91b8524dbf2a2073a411d3e5a4142bfc86046fc49275327ef5196cdd5068712cc3065c4ff66abeb71904de8a08e0cd57f303dfb5c646774b85a32558":"1cd496c8da3025885f5c3a6e59579a81":"103c12893f74903ced629b3e5769446439cc7c627b2f899c67017af0096c791f1567707a9c875067e7818a6b783a4310":"bcaeba570f656f1a316f8300875e63faf3c80dc76d0e0f75d0ac00c44cde489bde95623fcd046466d1ce3af545045efe" - -AES-256-XTS Decrypt NIST XTSTestVectors #152 -aes_decrypt_xts:"800546b1c98fb58675033b024a24689cdbbe71043d12042aceddb631dc401dc4ec3f918725861a7d6c12431686125f863edfc8e9cb98ef91908b47ce6add7016":"6ab9f3f874be4bae5b05e326b6e4f965":"6dc7629e6b627f2771114262468c9e0aa442dc346264bf5118de29b1e44423f266539ec96d2638781ccd965b03c8556b":"e276835e5fffbead85705dc67a4ca8da8c8339e508ef94b343329293c446ae07c4af0eae7bf22010cf595e55b34252c7" - -AES-256-XTS Decrypt NIST XTSTestVectors #153 -aes_decrypt_xts:"d02a11c8daf92c94c3b5ef818cb5756fd0f80407d7c0e4f39fd847120ff186e25218829e7d22e3c30bd2a94fd5ec366d5f5629b9d5bd74d4f6a0ee510be6b311":"2fffe45661a05348d92e39169c84c4ed":"36513ffc9aeb9eb70443ebb5e34c0d3c0610c74054b7918eac06fa7ef1f757c53c2756caedae9d1823545f49f2714857":"34cd561f80501a13abacd32fdad7970559b58a34745ab8f29c2ecfbb6eed14690dbed90b30cbe8a0e96910edaae14240" - -AES-256-XTS Decrypt NIST XTSTestVectors #154 -aes_decrypt_xts:"58af5dd743388346c6bfe8cac31bfcdb033be2949cc7ef1a8cf35016befde41b9d7de6cf544d63af0fc557b2c0178b73d2ca0f5998c28d0eba3ab99397fef293":"b3b4613a4c32f2e330a18fe2bde7444e":"b7d066022eaa42fb273b7177e4f5c11a7157cec8c4bcdbdb6a4c1fa9d9e4f429dc5289af9d40240c35650ba4fbf6a13f":"ca6108d60d07573f8508faa2b6cd55b898ed7db4a4379050ff1631afed0935ebacf5eb9bc271b15f646917a78db9350f" - -AES-256-XTS Decrypt NIST XTSTestVectors #155 -aes_decrypt_xts:"780ece76f0cc31f3871fcd42b4662a501524265edddf2856e74232df69573ec4587e7faa3adc31c23952babbe83fbef6ea21708f1c8849992e47bf9f92ed04b7":"041782dc65438ce5ae0358d744b98eb9":"5336c21c238afc0f4f4c518081a83e6b8e022143fb5e7bcaca0017aa3077aed1a10c2bd5cde9024c5a13012149aa7097":"4c67770ecd362b68fbf1ae467ed576c12027f66ccbd4bbc95b2459e78e408a8e972030d58066ed44661b44c0987254d2" - -AES-256-XTS Decrypt NIST XTSTestVectors #156 -aes_decrypt_xts:"f1e95056d5607017ef98128dbb85b2a3d45696dd7d89d8d3048022ac9704641f9b3256208fb40ca69a55476832e748cfddf2d7052d3e60d1d15fe96f5a480ed3":"5d542d63dedca7e8243d66b849fa56d5":"901a072469aa261dc7d51909c981520d67ee9476e4e3ccf3643779c1cbda2a875f623a1d0a6dde6f21422b63d31973f9":"94f66feab7177cc888a1676338cfd5b706bde54c2ea06b6c09c4c030a39302d6e03c9fb5c4d948b547eb9cf04bc685ed" - -AES-256-XTS Decrypt NIST XTSTestVectors #157 -aes_decrypt_xts:"3f6076849804d15504f801156fa805ae9264c1e05e9c858ca0d10e66737963f0cf4e0085272eef0075ea2d00c32db2cd7ae202e8d0de157e0484003998ca5c54":"2fbde4b241e6a900e5d31f720c3b9fd5":"51599aa5cba823e65eec65943a95dccae0ce8686733193190885550c3f2d4f16f6ffe59a6e582c2e579b98d6a6f5657c":"a3802b7895eb74d4cd7d996d74fd432b0466be472624d13f3b2ccf6f1dee09564f5a4ed0ff3f659c72bb86d66e50c9df" - -AES-256-XTS Decrypt NIST XTSTestVectors #158 -aes_decrypt_xts:"169aaa488f6e797eae39b1ef3140cf3e1a4b558de58bcee19a6d48bdd24a6ac7641e685dedfab5fafbe0a895aff38eeaa6e6845ae8610a1914e0021162c79642":"d6d9d5aed4bacab8a640f92deb21b126":"1085f3813cab91ea13b1d41304a67e1fcc21090c9c52f070a8cc656642ec43cbdaa6c6acf575dcb833a4688f2cf5de59":"a82bebe5c813fe6ccc4648ddb7522585d3bcd9e79e1ec8f3c6caab06ec0e5290f563fb5b9fd0d8db2e37ba379c7a350d" - -AES-256-XTS Decrypt NIST XTSTestVectors #159 -aes_decrypt_xts:"b7635e5fb2014822d2dd8f8a3c419e91879bfffe2a6eba07b1038917935814930fd8d9598525023930a3acd118a08257042e58af61e3be05cd6dad9588c7f4bc":"3e950771d8e4069a45df472f1c2d3cac":"dc9dce2c50a12185c0a88f44fb4bc095303a9436b779de767baaf293738021abe8765668b89eba693cb6facd113ad669":"0d8cd76672bf3f755cf9d77260690034a80a1888252dff5844fb081cbc79ee4d5b5a30d040773b520541135145537272" - -AES-256-XTS Decrypt NIST XTSTestVectors #160 -aes_decrypt_xts:"ec0b7b7aced4616b1af2192e5f8114c5d7783eb40f2e01fb1921cef739a578f9712bf88e75fcc191d95f77051f0060cd2061e5fbbe7875374167ae1a64298e08":"637c97a03a61d728420859934a5ce246":"fd9ca6d640fbcc3a1fcbb82314eea81f3918bd2fe8cb7877ca4ab7b9068dc5e3838bdcc577dbce033f3922e685a1d594":"f96282484ebc8ada8834ec42109c4eb0699c27f2008e76ba49253e59b0d775c4b2d6a3974590801e19dbbeb694704803" - -AES-256-XTS Decrypt NIST XTSTestVectors #161 -aes_decrypt_xts:"552db183e5a32887f784f64e3eac3dd75fc86778aeb9bc9a0fc270e100a29fcf7cc0e7dbe0903ef9de62ffff0d35d3cd7ad1a4e1776c1acede69e55eacce7138":"46bf85c0d133d01812c5321cad771692":"736d26a11e98aa18e42e7e0cca2e43a2ec6c01b708f152c462937bfc9ac3f0271352e38644b9ed227f5f171365eed300":"248b7109e9299e214c834e30092712bacdae2e5912b87238dc11adfa7f2ae5ae1d0b4bd67eeed9cb6bb6c082eb1e3ead" - -AES-256-XTS Decrypt NIST XTSTestVectors #162 -aes_decrypt_xts:"82f95b57d4461e7fd0ebb3f99cf500b8c94c1e6fd103e0046cc1e6c7924d766f7daccd03aa70f55d9edd33041538f8c9b501980f924cac179bd15004dc5b9319":"ad4071bb881e2c4f182977a17254343f":"357cf8228ffb3a4a031b8fc2c763078d86328ce3bf08a5ff1c589be57d155581551883b12a55ed0a7d41ea904e6f00db":"0df1dd8e5d827bd1218028ec32fc1f27d24d2b8a1c36af713df6fd3a1c76bbcb8bfeef615237bda0614cf3d7407c0a4c" - -AES-256-XTS Decrypt NIST XTSTestVectors #163 -aes_decrypt_xts:"386d50592bd280838faac82284c6c78a75cdcf4e69fbaf63a91ad3d14f6781713c5fded119d6b3c712ac6f4e4801c80397d1ae10a2b7e3d017cd9c7c61ade3b2":"0e7462f4e756be3d247b042c6baeafe6":"ce75a5b69274d490ed954727baa8c13d39f3c801eac950960a28efb2f33bf345572f7397c3a016da314b41f20a9ce6db":"6a90faa07b0a260acb11c9a3ecc5117518ea4d9bc0e60aeb3b270c308f3d16e0e8607d81b03e21d79ad3ca55ebbb736f" - -AES-256-XTS Decrypt NIST XTSTestVectors #164 -aes_decrypt_xts:"d3c02e7642de947cf0d1c4e613d896945931a53d2210bed5d8ad67d24c00f3ae9bf3a2135e685fa216e65cf1747d9f2a67da985d98dd16de679c47ae8a79bc0b":"f6e062a717d406f8cc7f7b7a251e4b22":"938e9752d8afc3a0d692ea265e7f659df141cf08774ad9b8a35c83b9558233acc61ea5a97d62902c64bf33fbcea86c85":"b09a27ab0a776934683482d810f72dbf7c6c56a9b52bb663d7aad4ec7d34eee47fc4069e2315d66e90c30b533a409c51" - -AES-256-XTS Decrypt NIST XTSTestVectors #165 -aes_decrypt_xts:"101422a38e091cd87c2761193075eff72a6c6716a47221a2dbe9ddb2401752442b3734a971847ee70a2a7406dbd7708ee3798c57a0d44cb50e805d43119250b2":"0a21b1b891be067645550a688e4aa7ab":"c31b970bc63a22dc3ea4a14bcab2758731c3769a4ed38a707431950231ee89d53a0ba9e24e97a8aba81db36491eb263e":"1576b9a9684dda9bc0f87e450408eb9fbac96620dd74f99508028e8f1225709d430fefcf7b69a2713bb9b5fb68d1de4f" - -AES-256-XTS Decrypt NIST XTSTestVectors #166 -aes_decrypt_xts:"2e3ee38c6de01e23a54ef591695f2ab5c9ab9d2300f95e75ddecdc12b6d0b7db4307793f5bf2c18be6706f70e0fea015f7f45925c2874b095c99369e81d9f8e4":"9a87af87f26e179d2ab0c94269df28fa":"35735815407be3a64b32cdaf7e678216908c2bed32b9ad2d09c929c7180e8c742ccc42e933c86a5c1177133ba2773492":"31576b62daa94bf520517899b1898841c38df8384acdedbeb58066e50f5d1483bff622f1d23618be1cd40736afad3155" - -AES-256-XTS Decrypt NIST XTSTestVectors #167 -aes_decrypt_xts:"c9c73f74b5c0f336b4ae886567b450053127f8984084dd7ada79037ac3eb4fd3efd964e886871bfff28d419c5ded2029a13bada7c1c7ac41c46f259b72e7cd08":"894a341f7b8dd7eaf87f698457c3950f":"4a6512ca85123c0a655a8fdeffb735a2666de7e4b582b7379efa747bb976a5bd9c232f9210af1da5918544e1957e71b4":"4e0691e8955c7aeb0eea2dfc0112ea9556ae989ee1b55c006c53039c39a33c51c16e590d8341642ee0c5cab1085ad7c9" - -AES-256-XTS Decrypt NIST XTSTestVectors #168 -aes_decrypt_xts:"0835df8ac518a59afbe2fd7543f09346a5df19b6a40f01779e8ec6706a20505f3225cdf730d5c797e1994981f43013f06607d6313be98cf5a6c54059d42d04be":"1e12b495516a42cf9a3eded66328f1be":"4540c0f6f263e839d58105b0747e964915081f6f317c11c2603f83c6756bdb5e5ca53a9f0eb93c70596e11da38e0c20d":"fe12e857eca8339929963f6a09b2cc884f622059fe70ed45bebfd2bcf4f564ed3e7c03f494e48c01b00f2d7fbeb5709b" - -AES-256-XTS Decrypt NIST XTSTestVectors #169 -aes_decrypt_xts:"304cd6ff095840d2d9c88fadab0fd8d14f02d7d0d2899b87b9f32cf0117e9046a6dcef37d41112cb5a73a53b81132a80b275455a57b0e91db32e45b70849b1d5":"3c215cf48458b48c19e0e105470d08ba":"df1dc3fccbaa46c5cefbb0360186c09315a22826f6e00dc2daa2646f13bedfed383a1604724cf61c9e42720c89114a11":"b9b25a915161afd9563f803cb48f59a15483d6adef439790f2acd337c9fbf3c4da82ea551691c0a3b16aef88b84be21b" - -AES-256-XTS Decrypt NIST XTSTestVectors #170 -aes_decrypt_xts:"ba6f72b43ca69da39e661fd9ac1fcf3b18e3365e438a121ee9befd1f6e9923b26eccdaab97a2d81988914fd77946575878b698340c511724dfe168d231ef21ce":"b8778f3d61aff8be0f5ab5abf32c1c2a":"47b521eabd7265823167208e0a0dd142e3d19a1c80ad2c2d1d00f344da6d9deef7d44268b4df19fbf3b1070272da6c03":"9bb82f60fbe6cc21acc87fcd88c231f4b586476d5291afa2e928a538b45861aa0bee574c3bec82acf9ccd7d61ce5bd99" - -AES-256-XTS Decrypt NIST XTSTestVectors #171 -aes_decrypt_xts:"dbbcd0e0a103aef3cd5ba32c47de8949c155e3a7c96c2ef173c8096ef5e932c4a25f3b0b1bd2732fe7e8064535f4c92a4229a9b70d0caa6bd5fbacea960dce43":"26c25b0494d12a803b36cfcc38102c83":"1da16e58b11590d02866599575fd9e80403d634db36f7771657af4e18b61ade6d195d81bbaa31b9bc685f8030bda8278":"2ecbfaf2a266c68ed49478009a4e543e0cf21dbebc4cd8c74a0158058c4329db064f04c5f0f9bc969b084827a01f8a35" - -AES-256-XTS Decrypt NIST XTSTestVectors #172 -aes_decrypt_xts:"5172127f21bed69baab48e93ca97a272e9d99d6af0ab1036b53eec05cd07cb13392a402ad931a0486d12499e58dfb9f716aec6f4558cb18cb52bf04265149043":"8240d65e02caada893fd2a0355fb3218":"e3d43d65f63c807f085e2fe5dc74d3d27b61bc5edc8948d8661662b7f64c49f2593f074b78992dc2bc22a7a6d513c621":"66b2514b7364967f839955a05d282f3ea1ee28bb2207377f15ab4957e2f38c81c65f6cfac4d0a81a551de20c150bc70b" - -AES-256-XTS Decrypt NIST XTSTestVectors #173 -aes_decrypt_xts:"0612e9db6fc7be770c1278a4c421e6f1b85bfcafe6d9b80fb8d56b0d512c7ce82cec64c562f97c55f14b85024b5808f7d63de0c33f6002e52e33de21bd1359b4":"e78a20373a714e2edebf8de639789ab8":"baa9a653bfda7d3be119745584f0641ec335405e8b8ed80306baf6647db7d8615795dceedc30fff94d96e8ca96f7b58f":"d51748d5c37ee3824ccd5a17300437b88c19a87ea4d94500d4332d35ae3b019106a591211343e48c279abaeaaa3d6127" - -AES-256-XTS Decrypt NIST XTSTestVectors #174 -aes_decrypt_xts:"47a0dc2a998d9bbb52acc0e5034709c0a3b9fecf7cf7507130a827ade1faee67917cb8046c3701555661ca648e40bad3ce072126f56258db1f8a7344aacc4df4":"58cff3419d346277ae01d76950f96674":"8cd1913be0877e71a48fc3dea3b444fc46f9a8b056bd76d05089540ad443425e461015657a8b2c0aaa728d30f354ddf8":"c6a454d7530518c5c5e6ac0fddb638d01f1b303c700acb81cf57969fcd49f6368976cfe7d194f72cad018f5f3853dc91" - -AES-256-XTS Decrypt NIST XTSTestVectors #175 -aes_decrypt_xts:"9aec5cf29267c5ba85e185bb215f3f1bbc59f52861eaa2825962f91412a3bb63bf2e564324bf14ce253f8760962a23f3058633ffb33576b7654b7730dc8967b0":"8a1ad0631eaff7f0b3e1208ab5a4a8ac":"1561c887719d719cfb16fd8d66e527235f5b9cb38feeeb7cc559de19c6d180c78d4aafae3ef90a7b386fc202b2d6a3a9":"75a56783b75249a1b2fe87a72231cd2d6347ef65c052f5d101ce2a59ecc309c46340ffab02829942b9d03af0b458db56" - -AES-256-XTS Decrypt NIST XTSTestVectors #176 -aes_decrypt_xts:"91711dcb4092d7f2cd18de96fbabe783905e9a49cb081e5fe534436bf7ae2d888cba809063722b66f9d4b086c1dd3164f361d5bcdbfe7d40892976fe75108264":"e6e863112f6398567d17f2e292c248ec":"c0c30dc778f6211c6e03d2a256c7c64c58980149831314b065b87a1d4ab753b0c2d6dd6101cdad34ce03e89850965c2a":"f8e38e33e426e8b668f975555b4630956ee1a924bb0aa9433103f5c83ae6abd97d89f53adef86e1fa696d40585de9b30" - -AES-256-XTS Decrypt NIST XTSTestVectors #177 -aes_decrypt_xts:"90faf67535c54aa9b092c699da51630e71231cc60d1a9f3abe602d44440d732c44483b3b1a410331078919bb783e9fe8b4146ee883c9f939242f9bfe5e51276a":"cfb8352f6bc66ffb3fec9952df15b134":"45dc6e6796c0dff29e8e948ca238abff40682044ab0db21e4bd9f09796b7a4ee378c5ffc126b7f619454e098f2967aa0":"d1d7669c4f35de02e653db56b860ea24fc73ec8e6142a537016f5c55f3b78d0e9ef5489e6e5312d2d0ce9d636e3de157" - -AES-256-XTS Decrypt NIST XTSTestVectors #178 -aes_decrypt_xts:"fd4f4546932e47e8380985e1ff9bbb398350239b38a90597b5c33de220540d92d1bfd9ce0ec5b19727db23badadff6bcb769cf1c97d2a5510b070a7d8e97b464":"7f51983a86b39a300659ca97983cae4c":"1676f44b3281b73e3e9ea06cc2deeb5993344662c19de325730a812834edc3fd76b5aefa7b9cecfe7632a4e1af9b1a0c":"4a85def031242ff962252bc4915d49d9a869e97b4d78308ebe02843eb286a1389835139946d7658a01c73096a13120ac" - -AES-256-XTS Decrypt NIST XTSTestVectors #179 -aes_decrypt_xts:"ed9f15edce4eaaab4370868e2c6244a0f52f552931bb1e234954ae4dd91f0c6af912a92de70e927990f16fd913419339e938479a1871f56e0d0f0887bf67ca52":"7116a13bca593eecc8505d1363f34a0d":"46b976ac0829a56b9919ad5c9209b749f4aa42ca546f414b8fc8feeba392618b404e7e57c643f30d684bb01423897d5d":"140d7573496ae68481a5ff528a570a769e92f134e64aa99f3efc3b946591e94287fa6b0e478692e4d793949161165676" - -AES-256-XTS Decrypt NIST XTSTestVectors #180 -aes_decrypt_xts:"779df82007dfb895d24e4ddcc0727dc23ab87f9b5ebf25ffdf065d231ecece4cebc0f67c818ba66c73b76bf036251aa4f25abc978842dbc22f2a70f57c4875d9":"98c09a6db8a3f380ff84d98cdcc058b5":"fa814b60557e66da628b5d5e9bbb37113f36c6e3217b7107cf4064efe5c81c848cc2b82513359b2c4af19fd63b03bdbb":"5dffe2a3a34b68e45724a58fb3e91592c2847f15367d65639ef7dcdada9423bcf2dbaa839c4454ea13411045ec49c258" - -AES-256-XTS Decrypt NIST XTSTestVectors #181 -aes_decrypt_xts:"d14b43d695988b5a81c097d98b17e0d70dd73320b7ba07539644f597e5e8c7a3424d2ae5d811b034f3ccaa12547e8fca915130ad62eb9f93d47e41ea2a6d48bf":"5f1767d9f502084f0dfb37ced86df8bd":"589051684b887fe62495ca2e3d5ad01b7f8f2510caa2b1b93a9aa4f3e166975cad47046a4d5e299e6da218f7fc59dda6":"96757ab32a1ba3355b22353492bb57abe00c032a806437b905972a52d790c86f0d309732cf8c9664b002a4a6c1a5d5d5" - -AES-256-XTS Decrypt NIST XTSTestVectors #182 -aes_decrypt_xts:"b7196769c67efd987e40f5b3c7c799e86c2a7e77f620dd40c0250c00bc9e430ef679e243c33062ab61947ec22448a7a6f6c0a7aa3c38386cdc0f18b8b01aab24":"9ab5261ba0fc48cca3b91bbccb05969c":"c558635ccbfcbfa607d29d902372bc0953ade51625bdc11aa5c7d9b88cd4435efbeb514f94cab1848d624fac2763bf32":"e0bc1ecbcd07b481ded9add0f35c91466f85e3cbb5b07aa0c28651ee979813f497a0068970891e1e87d124454b14fbf7" - -AES-256-XTS Decrypt NIST XTSTestVectors #183 -aes_decrypt_xts:"ccda026bd3ce1c4c5e9d22af1df2be01a6087d891df40250b80df59a25c77085be9d90ea80881490ab488317496fb3976f8b3c1ec914dbdae55d17f4a3d88e6b":"402c8c03ecdf2f483c99be74f87f38ea":"9f57edde7d6950342deb10960576175019e4592c28a5210e8d8265cba4ff289988b6ab695526017b7d63e43f38017f82":"51a290982a3dcc70ca3003df2549bc14fe7dac2950dc0d519dca9307ed66dec8e218b851b6f3e1ebcd6737bb44b8cc57" - -AES-256-XTS Decrypt NIST XTSTestVectors #184 -aes_decrypt_xts:"493db88063f7276a4e736a73f596fcb0a426d6b29fc2ad359759f625fe410e6225ee37afc00d6306958ff2899962308278c62bd27c1c55a2986b1b04b41be014":"71c7a3b6f2fc1e800ff1eb7012d629f2":"c579ed16337a871f5928903c8e91cfdee1480ed44aa7e0d0dbb7bc260dac31123a24e1ef80a5635f5894255762fbdd75":"2840dfcb6e3c67eeb1eadd83e2d87821cc67f4c5d9b0d0d66cf7a5f8ee4a99a3761ed72dbdfcd24b1bd5aea57e13a0db" - -AES-256-XTS Decrypt NIST XTSTestVectors #185 -aes_decrypt_xts:"7f7e14aa451b99c7a2d9586b97a010b8e474087920c4c11f96d860fc2e8f581e88da3dc922d2d7ecacc193dd56f5d0f44903371cf5277f418b857532cc35fda4":"c18b1962d46d1020fa9c308f350e03f7":"c7b6473b4c2b3c649a1d4c478313791385c48988733ba8d3496c45021f6a40a0500b69d25d54563286b18cda989894fb":"59813185ff2de6cd04fc43ebdfc47ec68d2e2aeae3265f6641859a2dba5628039b322f6a83fc9b44a0e84b9e67c82ee9" - -AES-256-XTS Decrypt NIST XTSTestVectors #186 -aes_decrypt_xts:"c9df7ac32db29be7e616e234026b281a1263107a20acd22c7015080b24b6b047764f2541a9782f0a7b0b06794c2525acac534806486a2ca888bdf0e49545dd34":"0c4aec5afd8b3db0b93c76097b3169e1":"1fabf55b998e1262fac5984083457ee5ba9988172fdfd9da56cc4988452e05c14d37888359837cf767b34661d5b0bf1e":"a00e78774f7970b9a89e2c794b1a7c1f5cbcd364d6c0fbbf1d30ff0dd9933174d8b87db6c21702900d85c1c03080b04a" - -AES-256-XTS Decrypt NIST XTSTestVectors #187 -aes_decrypt_xts:"697d8446063ad8949d64e3fea2581b1edd9fe243d66e92ba95527d0530352592c092f2ccdd0777f4da86b910b6418c826b12c30eef8db023701a0b8c38f9f57f":"14da514a38bbb7c474294fd4c5383cea":"499214ca97c7e22a42c191eaf72b42c8b6703ba130e0c3dd8303f1de37f2a0e2066284232e8c28b924f53443527d4049":"c6c0b6787b8a78821890b08158e6504f0c759810fc60eed795d0e9e93aa8cc9c91cde53b5188099d9ff4f70ca5dbba89" - -AES-256-XTS Decrypt NIST XTSTestVectors #188 -aes_decrypt_xts:"cc407063858e32cd661ccc928ebab2c6b31b039b2d7bb335461d1574a29fbbd1c1fad98545491e366d4c8a131bed457a409e09dbd468806ef23b0ebb6a987d78":"f461894ad0c361728860cc1d0ea9c0ef":"34d177b88a5567276852d17ac8ae90a95a0c184193edcfd35408190c5264e5579dee39f0f6a5d2a9e2480534f90b7cfb":"e843731b17691db14a54dcc3ec5d592831fb389cf7bd8b33a680b7daf746488c443ecfe75d5c5cd14e70387be62cb7ff" - -AES-256-XTS Decrypt NIST XTSTestVectors #189 -aes_decrypt_xts:"e16c6d5106b1610a943ad4376b0039c0debdadd83f6b84284a7bd2cd6a4cc782161961ca7f26b2552c99b0156955ba8c15930f0a22008e25541bae8a82e8d1a2":"22f07075d0b429136cd9d9143fd9d907":"8efda22a1bfd21baea0ac7dca63c28e7cde8ea231e449e284e9fcb239386141ec0c1c88c124b8fbe471b7522fd2bdda0":"20690e92b07c8b3d4f802bd54aad3932f1737dbf1a0fb79ac3fe87a83bc22057e5d609163eaa4e4ebcdad372d04b08e7" - -AES-256-XTS Decrypt NIST XTSTestVectors #190 -aes_decrypt_xts:"9e9f933d622afb6894c3254ea8652eb87a3678d29541a0fc0b563cfd14d5e3f1ee322053ad550f4c840779083de121bbd32dce352febc813c7235df11d8caec2":"68bded8e826ea02ceffd6ac0fbd3a694":"1333176eefd0fe676b01a80139e5f22bede9d1032db0eb250d71144e1842e09bbdabf3c5843fe5a879000153d8f10bf0":"4ff5dcfe6479b19679dbdd213c58a555c23f109936060c300794ec94ff3b352d6f6e8777ca01378f5293704119316160" - -AES-256-XTS Decrypt NIST XTSTestVectors #191 -aes_decrypt_xts:"eb49e02bbd5e360548e3e062c2897974dec3b58842db2328a7b0483362ff57012db7473d5c264b30fdbad47fe3fd7ed90b193791fe22b1361cb8e41de371b995":"9a1ca83631aaccdd918bb6b087a997ed":"bf6caf9a97e591a5fd3edafbf3020f9cf501cc614a1d73099ff4daf0a9dd8a2b7e59839311067acc08fc801200ad6224":"bf663c544bd79fa352dcecfd4a90da685ddd1a094edd84fd784cc957e2582feadca852832097b8900390a906c98dd3fc" - -AES-256-XTS Decrypt NIST XTSTestVectors #192 -aes_decrypt_xts:"188f56aad31f8c5ccab4c82525ff3f939ebb78d827313ad5775b0a977e98a5e36ec362d3c2b5f50aca4ffb9e678eea70f8bcbc558dad12587f52de2c83da7270":"8382ee2a64309e2e2f4932d2eb798001":"1d17ee7259f9cecc4f74e300f8ae99b19e169390d9712fdd5e1e3fa0ddbba9c14a6f17b4c31615fe54c12ad190877eb0":"f632039e7806783b59d5fc966dbdfbf6b1f5b29b0042ef5c51110e90d06f9d0c28107217bb54f6a088e14b144c453e7a" - -AES-256-XTS Decrypt NIST XTSTestVectors #193 -aes_decrypt_xts:"16ddb28ab8d16f883abd43b20b8144746b92f769d5438b380b595a880b50a3d258675031c488d2bb48f7257292a938b75bfac4aeb12aa469d4689bff2caaca6e":"c138833c52f9688a125b310bba0a5b01":"7d811522417c3b57bf4fa95a23052e9271a93492c518b7c0713cc0b4155223892230be2c7f01f9faff7e4c71d89c663c":"090c1f5003e07bd46ea8d1d5cf688ea93d0222d31732e5c27419b3efa370ed1a1d742274cd6f4b16d48782bafb6be676" - -AES-256-XTS Decrypt NIST XTSTestVectors #194 -aes_decrypt_xts:"91bd3cfd8f5a8430a8d016b0bf0ce07d9c84f192f799cb38cc3aa13bffe8b1d65c8fbad5595944f26cfe391286f9239e1a1c1a7da3b4b62899fcd273afef54a7":"999e9d2a6dbd91cd419660c77450ad28":"e125ae4646a1a7c574bb100eddd652ef6a7e7fd213b4894f6f04c7cf519700188138d8eae90ae2f1a6e9d31161f8155e":"aa87ae470bd0a2acfd0ac34fb3e9247974c173cc415eb764cd7ef8d25a5a0f7ecbecebb8aa7c8c99777660e624b0da77" - -AES-256-XTS Decrypt NIST XTSTestVectors #195 -aes_decrypt_xts:"98021fcce0bf38c3879cd16d75bce0d23e2058133650d2cc79e60b1097808ab4f4c6a0a761fce5bd293005aa96c5740326deec4383fb7599eb02cb06f990cd78":"743bdc0223a7af54bbce45567db9eddb":"27453cec704d87e71e3cbc3c058ae16f9f194dc532462f2afadc482573b81d6ded137a7cd655ddd987dc0a95598811d1":"c78e0aefa0db66b235ff061c0b6f1d60c0bcbfdd1ab4dcb34ebe03b755aaf38a2ce10dd162c343f189aa02a8183229eb" - -AES-256-XTS Decrypt NIST XTSTestVectors #196 -aes_decrypt_xts:"d35a7d05e0e4a68350fb0d4a818f491e97c20a8640fe7bb773d520f6a6ac9bf6b4874271b048c8144c72fb73bdeb03c95ed110d3e0e9be908962fabc7ab17782":"e27a6b340ef8eaf7f4bc3553c13e54e8":"560aaea6918572337dcec07bece7d84da34461990405e97a4eabfeeb18e43d4089d960b9ec548f2ccb6493836535991d":"7b10045ddba27818a4fea4f081cd419d0c61545632c289ed386caeaf7f55d9cd2ef879d42093ab844a6a05b39b95a1dd" - -AES-256-XTS Decrypt NIST XTSTestVectors #197 -aes_decrypt_xts:"9506c89f7574aa6209934b8c26adbe530cf8521ba09ab064dc10607b93917724221a49fa18189d1c5cdcbc7f5f8ec59dc318216f46bc4a7f5be7760c19b5dcd5":"e0fd43b69b7c170b1eaf8131f7fde0b9":"9193b21bc494fcfcf19ae444136b419c8ce2acd931fd1a65f01cf14de7c4897b5a9871759f9f3c1df36935b2f8e0ac13":"38f6956c446b8d6ea9538bdfd0e63945f461ecb41363612e37b880f1be06bacee15b180fd41e9e0d9c31f48e189143b7" - -AES-256-XTS Decrypt NIST XTSTestVectors #198 -aes_decrypt_xts:"e6fd2af4e12095c10a369e917aa63e68c655160822196a46729d66ff1b81ae5f80345d4a4fb3be102182b1c940c189804a3c1501c485a32de21cadd7dd0fb68f":"25cc90fac9b6bb4cfef3fb2ac8be16e7":"77f0393f03d1a1884bba30a7cb9d07183b50b5a7982c05366961527902fdc4b6ea85fb6ad4041e929dffffe40032a09c":"674b79b3803465bf6d57b399408e589ee4e94cdbf6200de73b023a949219157969c25125fbb2eea164447a8d88794273" - -AES-256-XTS Decrypt NIST XTSTestVectors #199 -aes_decrypt_xts:"318d38a0ce159fbbbe74ef9c9b2d88bd3e30d967ed2b92890ac795e78489a39d49691ad5c97a52e29cc822d39c81ffdb3fe101cfb1014c4040f3ccb23862d92a":"92d9497074c4f725350fccd4b650b18f":"fb78e2f35248e463022a0e46dda6751fa155c5870cbe0aae523bb5d8bee041923b3730e80059170b957ee9a906b08b89":"122c3978bd788a1ecaca9a03924ec8d07623d45e58939968c6116cf6f1594fc59d8d7f08915cb0b20a998afeb1b9957e" - -AES-256-XTS Decrypt NIST XTSTestVectors #200 -aes_decrypt_xts:"8773be19e0758f76e27fa8d266c1c1fcf6db4687a80d348b847263132c3c6d283e404ff0ae5691c86a591c299846efecb22e55ab3f89af3a1b5f122e82ec6686":"8669ffbe5e7a354ef69c11c2b9201d3c":"5de80c83cbcada872a4c87ead84b5df215ab4379549b7dbd5910cd8b37a62937b64c76579a6e6d68933b683244416212":"79e4d92f98236a55213b8543f637c31221613164f8e690bcf59ff2a2b584edb4b54403ad714b4d8e92e4c6949bcb2f2b" - -AES-256-XTS Decrypt NIST XTSTestVectors #201 -aes_decrypt_xts:"f180a697333f644e15b4b4520df8f4722215a17acc6d1ada059f456c87649f96561cdc3c7055355e23d224c48829a15664caa06ff7c59481fb74665880b87d51":"71356854a37dda04a4b454a0bebc4889":"efdf6cf49119338d3b1431de94842002c538bccfba194225c1f98ee62c5fc09731aabce41525184a1f9b6d7838b18389":"bc6b173e89c643b10720873e3ff8f9dc9e278e03f8e08e347af3199e06e37ec5c45bdd8b2f9a31d9b4c3729ddc400f8f" - -AES-256-XTS Decrypt NIST XTSTestVectors #202 -aes_decrypt_xts:"a52fefd95ee0d8d3f3d94fd5e58b6439ad71374ec7120072d99c0e870551eca2136f9aed4981b70a8ad830a2089a287363006672cab5c26239a44d57f94e5962":"d8e57c279fb6c13d997a6bad868392ea":"9218809970ab05a4a2ff4c2934796d5badbd8d6e30d92974d6a839aee6008d1a1a5b0449b40624cbb85867be95b6c820":"e16b4789f71b8504aad6ffffb91a7f4bc2f98184ba6f7dfc8a01f823358b8bfa1f552611d541722e2e0e5bfe88fd8b5a" - -AES-256-XTS Decrypt NIST XTSTestVectors #203 -aes_decrypt_xts:"b167fa386efc0156bae5235ebd4fc29d60a5d648c016c3705717eb717c159a551002e53f58584d9d74855cc4d7e4d7ecba073408f39f1a4193fa7545708d5bd8":"c6420542bd711b221bfde653bcec65bf":"c1f684bc486386f066ecfe43712aaedcc0912a5ac6eab77dc4b7643de99ec0eb934be0279775a1f103ae1d3f883e0b5c":"dbb8392a2717936af8a637a3b135e4eb6aea84a3f4ec64ce7e69892c55df594b74f89710cc42f5f8dfd83fd5e466e005" - -AES-256-XTS Decrypt NIST XTSTestVectors #204 -aes_decrypt_xts:"ef1604cdcc91094a3533a5910bc2ace84905944e5e00105d3398dd9aba68fd0165ccf44ef9b95e22612689178a52ff238861e1f0ba3bdae74726d917ea15993c":"988fe1dd335709b78ecd26fb950ff45e":"128896d35f7a5586303e06032d2a654e33dcbc90408ed02957da3e2bbab2ec892908803aca20368d9f10447ae2ecdd61":"7b1255d19879015916f2df8a31f164ae6fd119bf55c6edd372cd7f5bb216ef3ddddcbb63d3fb37334f192c0392444c80" - -AES-256-XTS Decrypt NIST XTSTestVectors #205 -aes_decrypt_xts:"47ad47c004da79ebf8746a42367b3bb0bcabbf791ab9e388a69692787233f568af82acb58137f2f236dfd917ad6cd2e8fdd0a122706d73e238f4720bbbb17028":"44d44c1230173e694dd57b13d7011f3d":"3fd99169b740663367ddd0c27f2e53caa7a9f9e0db5b33dd4a0aa5c348a99295b7d5a6a94f7d844e1725589541eb18de":"06cc5f87cfdc5d2dd29231595b2cc26017fa57bae64f7a0c71c6b0c7d51fb2cb4fd72727caecd9813478b6c725a4e909" - -AES-256-XTS Decrypt NIST XTSTestVectors #206 -aes_decrypt_xts:"0e6e1140a30e59820cf2675aeb6a0e390d6ced29a792e978d8944a4138af8a1273000de0220fa70a2004b3a32f2cbff55e59362b34bee0e16c4abcc8e70e6fd1":"466a2ff957bd2a4da8ba3a1e5e7b2347":"6fd795187f580c10ab3221d1719ca3c149addfb30fbbd660ef8c82358afdcf99f26909d72701701c6462d47648fd2b06":"fb00c6423222072ab182a86ee4191cc0ae9b06d3fb27af26ec7819d9e9bd1e52bceed11d7eb32fc252e83a2653e4ee95" - -AES-256-XTS Decrypt NIST XTSTestVectors #207 -aes_decrypt_xts:"f4b3aaff7a1e4018ba857121c64713b3cc4d41342240d3a06de098c48430e60edb1907418c510fa7e06bd982b2fd8fcef212126dbcb8e5442df86350e267c9c2":"cbe4d4d9eeb9d4f1bf76937c9dce877e":"a3394315937f3c590046f36cb0e5a1c18021212ddcfbda58d4e33396ae4afcbb1178c6b2343101aa1b4691f0f871f1f4":"0ef23748a456af71f8cbd2294d0410e8e8e662f28e4c0bd9d1bd3d099e22006c20f729f62fccbea32c387798266dc996" - -AES-256-XTS Decrypt NIST XTSTestVectors #208 -aes_decrypt_xts:"b9a60410b0e210e80665edc2b0b631dd7d1bbda52d8024b613d5a1f3eb88a5e2eb365b5853a9d0e40520a68a0b2e4fea8f24ea78fdf3cc41f1533824c7d6a78d":"92077bd96ce9cbd81d20055570304c1a":"195c7731f3371e77db78fec9bf47185b8c370ba5341ae0f35625abf5843f382a70ab681618406d4eaec598a2e5383e3e":"8bf43b702e6099c0e460de394f34a673b77791c79454096acce80d3a8d28b5c90ae08abe472e93fd04abf4c813e8ee4a" - -AES-256-XTS Decrypt NIST XTSTestVectors #209 -aes_decrypt_xts:"08b7af82538c09845754921ed46679047fc8b3fbc6ed4582cbcd61b11b9ba27cc0b6011cdcdda2d47d7cf32b698cd28075fd050559a920ce86cc634b178f3237":"c96ce1f2ca62b363859c679306b2b71c":"b4a6679196232c95a858c3ac6af5b6c7a0cbdfe5bd2bc46bda61a7528306a9538b3a4f0e8410c0e53377f1adb3d253a7":"e91b78a0762b747d47bed387a1f35dd8b21a639d36e0124686602b26d27ab0b1528dc6366b71e89a774d5ac16280ce8b" - -AES-256-XTS Decrypt NIST XTSTestVectors #210 -aes_decrypt_xts:"fc2cca44e3880fa9ee94769352301fe03dccb69ce549bec529a64011d9903df4f7bab738e275716e0bb3d99c375ca63512936354490d7a9dba6fcdf6ce3c1a40":"c20432590236888d874343aad10b1f0d":"c6181d321b5ac40f3a9c80dbc7ee9344e63edd1270afba1ad9efde3d4f52ec22d8b19d2864496c6f932e6c26fa136d22":"63a8f79aa239be64116ef2675ddfd0b623672f8643caab17e5b231117f916f5c7e0c25decb42a32b3c5c04ed7bc2dfcb" - -AES-256-XTS Decrypt NIST XTSTestVectors #211 -aes_decrypt_xts:"2d299dc9d8fa21205cb65b3ea50496b80b94f3449fba043202b05f8a80e92b1ded290c4aed5a8cdb9b1e184a9c2b1f5b615dfe44af48899f6826a0a27c61fcc2":"0b835c78808626842d6dcecdc74c8d20":"c8c112187f0316a41a9eb604842e31efc87790bb0c21aeae309be6c303abc326ea29d606d12b0f2f1b024d8a8258a753":"d3396bfb6ae731389861a70f6289b19bef74eeceaaf6c5b027c8139ecfb85c6783c6dcbe0fd5e1c29071af91d53e9c47" - -AES-256-XTS Decrypt NIST XTSTestVectors #212 -aes_decrypt_xts:"2fc44e521419559242bf1b388905cd8b966008f73ec583c5969dc09180872fdc400b86d5666e5f69e3991df11c74e2ea63e4bed607b1c83c16175a4bda858e09":"40323901f3713c41cfc06c058d312ae4":"aff7d31757d021745164bf784607da7f3946688ecf0e8c0846dd87604638043b508ebaf8c379c24049db90723bdbafa1":"e34fe86c5e49d05aba13af50cedbdc2db626414e3fc19ce5550d8fbf590232ca29b4b0d89a80d74a2b5ad03177379440" - -AES-256-XTS Decrypt NIST XTSTestVectors #213 -aes_decrypt_xts:"8bdcd06c43d516abdc7fbae34195cca691c6bc6c430c5a1c7b7e3597988d955ae8de8b2bbed42804e48f6ecb662e5c22327dcd26b0babec16c577c99f0941ea0":"c944d9f17b117c8cbf3444182c5e382b":"beb93d338df05321644b94a24174ce239d42c59554208f76ca174e182aeabf37d3666e4bc2ce9cd400124d300a4a7a96":"e3b4b910372e0f24cef8b2ce8e539b549c075b63eedb497ba5fc97674a41a847001c297220062362e7c1f10df2a8b211" - -AES-256-XTS Decrypt NIST XTSTestVectors #214 -aes_decrypt_xts:"02f9f0b37b239ed37a9bb27e491247b225cd72a5014e24d99d43c775692f1f0f0aa3829d1f85e15504bba0b71520e57d18ed9c82be72f8776734d838c6e3e051":"2fa6e33fa6c4062aaf86f009eb9c696d":"3a8be888cf239bfdcaff8dfbb47bf3e3340bffdc1220bada21e41d3c0f1bbe9880a1f263e617124b44eb57e63707f652":"86f3cef0df4d8c7549309671206c69856b163f15e59005ec81c2e3b5a03972d659c8abe6c6a2737114bca7371fb0846f" - -AES-256-XTS Decrypt NIST XTSTestVectors #215 -aes_decrypt_xts:"5e16fc63b6cdddc3b606fa6c6e610dc5498069f90b9f02632a8c6e875e59b55bfd241b4c51d88ac3f21910abb7034321142d125ae6d003a3540038656c9d78e0":"eda818cfa680edded36a6dba2f22f897":"c06b883d42c3c27fca667b68456e70aa47b138339e0080b18bf4b96d7728ddac181409efd0b1df9e85ca6cb3c175e158":"7a7b0b2c530eb080987b1ba1a7df542c1bb0ed26b386f6ee44c38936d31a3ff709f95d4ec68d82d8eda9f74744b40d79" - -AES-256-XTS Decrypt NIST XTSTestVectors #216 -aes_decrypt_xts:"ff525cc15e1ff34be84f618002cf36d2091d69f5e06ffa7d686a16b7be04598ac7cc6d13bb91b5caf9e6cf73a87f5de6495cd67780aad6833b9e11df32017d64":"294498796ff59ed83fd9162f9e97bae9":"efd85817b3b83ae02d6935240e8faccb5a1ccb65712e61304b92524f83461b84c1c2a5be7db62bf1ff2152ffe657a1e6":"e91418650650db42e908d023c170fa84fa18d56a472dcd91f5554c97cf69c57b14a5eeded083b0b4e77b12e739c32b74" - -AES-256-XTS Decrypt NIST XTSTestVectors #217 -aes_decrypt_xts:"72cf527ed6acb33cb38a2662521cc775a1e1aee9a6b96fda15e7e7b138030e803e23d47654f1557e3f4b465872b239671f749821b46ccbdb4b9b5b2841a6dc31":"5e1fa2c566ce867538d194035be1ad23":"2b85ea5e48a19a47d35fcc9591a61c5c85bca40fb4c633a58fd4de7c2148c4b4423681805807c6d7b8ae8a8d12b02683":"a6bacd48f7d98613f5dc08d98ff6c6073746e41e88817036877bdd742e672b82c5622cc8ee503aa67f8b94956ba533bc" - -AES-256-XTS Decrypt NIST XTSTestVectors #218 -aes_decrypt_xts:"8f0bec77b4648bfcf2011f84ede3875bf2d63afe7172b7a416ec8fd09c600aa1213dbe32687a863d06e649bf649ed2cd37b072b36aed2b151d168cf13d9920a0":"c9a77b6c764ec3e3ff30769ac8ae37c5":"a95785146f573c8ccc02ef9279fcf27d7da9971f492f8c8e8e121e39781d6e0206627ff80c58e758202112afdeab3098":"b4519105021b4070065aff267671022f69be9a93edff37abc005bc875ada5e22cecf2dda4b9ae5285f6479a31594535c" - -AES-256-XTS Decrypt NIST XTSTestVectors #219 -aes_decrypt_xts:"d502505257be4806fc22aaf17250b2066e6898460969038206a13867aa3a1a42c7d3998ac4f831c7cf028a8902ce59514d877f52300fa149fb45c5d058ba250e":"519fa724ddf75f98477d8e85edc5a037":"f8ad02ad0dfc6e23a93890feabc3b4a2101a8a93148f62aa4197a12810f46bce149ed5a922b26d1a68988bdc087b5df1":"9ab8a521879ef4547467fa7e51c00c7af3fda6441b46200c54b36dcb9092c735fcd1868baaa625345fa2239a999f6ed9" - -AES-256-XTS Decrypt NIST XTSTestVectors #220 -aes_decrypt_xts:"28ec974865433690bb459d0a7736825571e628faa4634d3b2bda54f8cadda4572bd4a5734233206e44cc15b329f1485dd416356054564a76df40f5527a279894":"c6a9c7a5c73327bd0b7aeab0ff5b99e9":"46b12f1f19f3c6a3a7a0d419415325d2757efc886f003402eea094c1e620c828eb5dc6eb324e730647d5856f152e2646":"c457aa22a192739936b73691a2a15b64727f708817b88074bd9a09f68a2f61805a105d0180fdd2e13347f0c5a3358829" - -AES-256-XTS Decrypt NIST XTSTestVectors #221 -aes_decrypt_xts:"447ca1a296a451e88c03e2845e8d0c41aca408de68d4ff866d872e9daa9fe6e977d5b91eea9d419c75a523378a4ae5ab9ff21728d50e626f51ab24539c0c0dd1":"4348e0f0d73a3533f59b41d386b7542e":"2910c532919dfd7506d591bed10f2a9d2a0c3709f045eb36b791e78a72e980acbd5538ced6a183ed4e4534f92fe8cbe6":"1ce333b441b91ea29724355a9768fc0098faf89f602dcb1c4487babe66e1100cc1c5a0c4198bab4efb696dc22e74effe" - -AES-256-XTS Decrypt NIST XTSTestVectors #222 -aes_decrypt_xts:"4365f98aca9eba18185dff94d7326916b855ddd1d2b3495b8d3634f8618aa88a449233fdf400bd811c0b665036d14ac81484a70e92e989db3634fcdf15c8e602":"d58a77ef251c479f2b2f7b84a6196ee5":"07bf2e175aafacbcbbf0e0adba257579fd8e2b93e7622950193c1d9cb9ba555e425d0f3015bcd4d05ed209216eef2add":"5183b008e8e597829d660bf7fb6059b1baac1f2b4429249cc6e5db4b1c080b827a3dfc848908bafe7169c27140f36492" - -AES-256-XTS Decrypt NIST XTSTestVectors #223 -aes_decrypt_xts:"4b96e62987d5de96e0c8dac25b30ce98dc5733be1a9428ae0eb24319b09848a264a46cfa0aae9b66beb62300b0e224805c6d4b1052542a187dd8146a53613d67":"bef744e3342dadb8888c8919cc9b0de6":"9b505eff5d8278c39cfab42d9e6d3a3ff1806d3d8fd2156b60375a43019d30bfbc7214a4fdeaca9beadb32ef743d2051":"03ba73c095accb31cd770d402c3786a9a8828fa32cce8ec3fdafc6a59e74c57eedf19797c3c0e56694df432a8d6f7e89" - -AES-256-XTS Decrypt NIST XTSTestVectors #224 -aes_decrypt_xts:"ab3f7a274b3a81aefc3c11e3d6bb3cd9fdba6d396648673ed33a88239bd3b3c3eb9fe516532962dfc8d8a7b6f49e92116003f6432f1679620201cfd8638075af":"590f9802bc1233bd1235cf2393fad88c":"645c5dc63e626e647a8f5550ccb432443ada0b716adcd9c23b6ff3025590af418ac42b48cc74c09b08d56525c940b4e6":"59fcb32a08a232753bf56e2ab70921cd02e5f4cc98680a7e02fba3ef3ff5ff1bd502c91f15358990a2f58af9cd6c2a65" - -AES-256-XTS Decrypt NIST XTSTestVectors #225 -aes_decrypt_xts:"8356e90f2b7340eaf6bd309565554402c774edefb7d881cec5b8b7011b0588383c04a621dfd0b30f2e892ce550b1627b3cc3736eece937268b8dbc6d29841462":"7350eeb13cfd9211bc6ad86f89001a49":"0b59ff0dd8e78d89ad39de40229f8433ae00c25e29d409e8c17246574239b2f10ed20775972312dde19c73dbb2baab45":"40327153ca5f58d90e888afa4a62a74af757195bab95a3220b9e25cd0798e577298e87c8c7fc8a93fbd9ac041f3a997f" - -AES-256-XTS Decrypt NIST XTSTestVectors #226 -aes_decrypt_xts:"f7b0865e8413b08b325f14e230d746a697b3fe0f3b1c2bfdcc49f1b539e69ef9d003fbde4c57c7d6cff03000bdbb4c163da906e33009c7cce5935a09bf4490f2":"2d75a34f623648281538493280b02eb1":"beb7b2f3c1588bc167ec1676c362bc4d059dcd1a367741e0cacab9577579adf11fb36d03db045abec06d76ba0600e7fd":"ca2b035ea4eeab11819c2221ce54e2268612999eb7ef8e22829c9089cb92573fb29e3b605651a56a2c38408e1d4cb557" - -AES-256-XTS Decrypt NIST XTSTestVectors #227 -aes_decrypt_xts:"4a6f0f961fe466092c28f46983ea0ef2aec88410df42e3b7ceb99c47f7e4c3af3ecebe97561c784e5e5a45954794cf08a872caa678f32576d9c5e263ef256778":"2fb6767482ff60f37ed9d67c4bfeeb8b":"1505e8ca43be97fe94bbf8a76228a3e4205b5917df64e8a818f2747d86797980d01e8f3538959a4c9334f444cb7ced0a":"9ee45688df2239600c1a97dee5c0cbe983ce838d7f3f7b9c23053af8bbab11d45aec5fc2028deae5e27f6f2e30687d4b" - -AES-256-XTS Decrypt NIST XTSTestVectors #228 -aes_decrypt_xts:"cf3ddd216300e728b45d7643d71bcbaa3fa7c7ab475593bd548e3ccd1aabbb54eb09f95421b29d895dcb17f644d39633d06b4dd84f93501e4aba693b9a149865":"aa08f7cde22815fd0602adeba6a0673b":"c06d3cc43965292eccce807211558daa967631043a64ed94ff95bcf7d63e47d12aabd86c7eb1ceba6f7a2d14e9b66c03":"3916e58714918f6440d3d3e79bc903f24ee8895dd51b46ae36e4b9aa08dbda567a8e31c32a86a9407071273569ea177a" - -AES-256-XTS Decrypt NIST XTSTestVectors #229 -aes_decrypt_xts:"177d84aae540351f66818d18e971a09bed636f7851fbed08376df7360f2d640184a6472e241f6471616967b67ce2739790c303733268c064a7f8bc5e2fd1a24e":"9d078dab3c6fd707c8476c023f426ce2":"008365d57214c7faa362467a53f96e7ddd19d4cba834a00c7627235aea73ebe0d5551a91aa91f564104a1df3419bfff4":"205b5eb8af070a902b5dc65ed6487f25a5b08b35cbd8aa3eee28271a67f18222f170b7140d8f4991157f69030c9a13e8" - -AES-256-XTS Decrypt NIST XTSTestVectors #230 -aes_decrypt_xts:"f38c80dae5c48782f49a02b958932263246404ff6dfb7a30a9253d1ac2647faa7d6676f375cb02532941904ef7e68adb136718974377d07ab8203f0ff5bd23ab":"f3e7db2d5ebe321abdc18f0fd257b134":"2d132e6211a37216b99e7a3ecfa59803f9c07ae21f028641e0834450e01df0f7732767e1e83683b29ed2c1148f8d780e":"e18714f8fc476f4e81a2df2e2c24c2ae594059db0cfd3991f086319e0ca68000f9c29f9cf717cfc153ea4a6b6404e644" - -AES-256-XTS Decrypt NIST XTSTestVectors #231 -aes_decrypt_xts:"54d574328c4ae8a36bfdb12c2484e4d166542effa9a55856496dcd48e41a8ae10b6716ef0356075241495edfff66070a749744040dada29832d0a4ad28d912ee":"336bf049278da506f6980d54338e0352":"48ed975b45f57aece7d5030fd349ea45f11202c4613ff8a93172835a75c537425977b2386a77c42663e8be75975c5c20":"7715d415939f446aff6279a7a54f9f345616bff913c5b7de2526050c89f32470c93790f7d40c4b33d6d2185630a189ed" - -AES-256-XTS Decrypt NIST XTSTestVectors #232 -aes_decrypt_xts:"a0fbbac3919e90f36ce70c7ff9b947a4bdaf8b1464f14c7fe438ca2b1b6f1b0ff100a96536bbeed609f4023efa5b6fb901bd8763a075dae3644379d03c6c1c84":"cfba211b1f99531c00f9ea8b1ac59532":"f4664561fd62c7625f43b67c80853109f7e214ad6197cc0202e10dfe2e1dccc52e33ad38656ef0cabdcbad6d0dc51a8c":"487db980bd0cf7beefee4d7b2aca60d42c2fc59094952cbb45a5bde7c8f012ebb6fa5519ba64b351fee87941df6b91ec" - -AES-256-XTS Decrypt NIST XTSTestVectors #233 -aes_decrypt_xts:"444e2659c5b610de4c42db40bd962ce8520138d4e049fcd6611810f3bf70dc42ddeb64c47bedb537b14ee77d5a019a90297bef364c58a90982002ed6640fb31c":"145ea8621178b9c59e14de3e8c75ae13":"586bca94504ff2edc9893070b5f30f8d4f86de07cf0958baa07bbb0b145672833f9eae3e1fb2db09b6cef82c250a95fb":"f64770b3f39271d50dccb4dfdd3000d4a2cefc922639965772e3859e7d33d9b54992932666a7a934e85712a8ef13cbea" - -AES-256-XTS Decrypt NIST XTSTestVectors #234 -aes_decrypt_xts:"c8a7591c0a0bddc9306da2be23b84e9eab8ca744f0ee38c072aa6b99f7a032405111672187a8d6bb1c261afc268b18989b4d8be8de2ea164a8bcf6f6d97f346d":"a50faba186844b137545f1ca3daf4314":"5b11a8981096828b06f42ef13e13e788138d89d083e9b50fbdd48b021f7b772d6ff45a5f4473985245537d959b70ee21":"0878a29d2f9cff3655c487a3a805abc306aea6d37e218402ad47e5d99efa3c888cab767eff058847874b172c89822ec3" - -AES-256-XTS Decrypt NIST XTSTestVectors #235 -aes_decrypt_xts:"916c7018743955fec768db2a893382339b2e828fc9b18d29dc3466146bd89d7e914d5c5deaf7747e1730cd06c9e6faeeff3107e8e29130446ecec7e4bed73067":"2984ea914545ab090ba8ef6f0cc25858":"08bb0c0f93d1cdbb5a135783390be691b5464d8496b1b549a0a639de0a5206d234161b86ef36dff10cc57076cb155b85":"57fcc00c7ec04be688b7dbe9cf0f7acf7e986dc14b946ae6ef70bca70777d13de1c038e6ee21266f85e3dea0d84dbc77" - -AES-256-XTS Decrypt NIST XTSTestVectors #236 -aes_decrypt_xts:"fee78577ac335fc29b9da6ddfa9dde896c719dccedfcd8e440123fd99f7837c1a4a595f7ef083f995dfc1466f060823b3897f5ba5de39933d948a9d331572d7f":"65af99729b7ae9a254eb38e1cceef571":"a3beb2187c58a39cad57ba1d55ebebebefcafaa93309a6658e489c172a3b50ca8faf4a4abbc1ccc0793162f56ca77fc4":"6b924c15a9d118f20aefe1a23c6ead7a09761cf613046bea72dad8d650e104daf89709f0468871d8ca36596151c930f7" - -AES-256-XTS Decrypt NIST XTSTestVectors #237 -aes_decrypt_xts:"d4d22619ed97e265b18ce73c41b21dc1d7a3f4072a7344099edc174e3db5878ef7a226ee7066fd77f9ad3a75460ecfc023962e65629e5de3269708b0f7e0738a":"0b72ac5ffbd4a24463e1754be32b9c65":"aa6c186fc4e8a6d2154e50ba03c94d1989d484acb3f5410054850772baa8c307d16565a4b1a758e39f6b42f681882a69":"e43671e481a62ae73ef1099e7dbf0af7fd72a3aec3782820777324f09fe71957c29b168f46017b08a83e7ae5f31924aa" - -AES-256-XTS Decrypt NIST XTSTestVectors #238 -aes_decrypt_xts:"9cd3a558e7932524fa7dbdcf022985526d807d14278c645eed8995af93c858092454560e8c5bfd9124bebe3abf245850ae61d14761b9aa74b4bce265e59e642c":"b3564ac76fc41685f06c4d40d1bdf22b":"9ec4f6db65ffe6dec42aea9eda3ddb1babc0fa8cf5aef87324938ea3bef0d06c8f97cb70f431d2f70a34909969510baf":"d2e3481c42965c16f030c5bcb7d1d9a2334fca7a374869b64e0e522dc2151cd2209c6c01d850ad141b2ac0cf58d74a81" - -AES-256-XTS Decrypt NIST XTSTestVectors #239 -aes_decrypt_xts:"3e63567d5ca65fb9a93d1f12461d40480cb3cc8f57d11c2a3710811ecbac749f6b4e3ba2aade8566e3f9ee185d0eedb05317fbf56c52309f8e6a26c4a4450de6":"c86df36d4e87d8c4e6e2f0eaecd0a386":"1b45adc6c28cb1028b4d1b6be37cf96f573c7c5aa14e3a243e72287f732e7beccb2aa22f501154b3e977cd433748b292":"ed84c8bcc815f1c1352acf7b182764eb974b6ac2de20fe693912f1b9cc180901ba5374417fc77dff041508b5040687c4" - -AES-256-XTS Decrypt NIST XTSTestVectors #240 -aes_decrypt_xts:"cf1313bef63543e63c29aa7f45e249345c7b404d87f73c72e0df2faf60a927ccfd7fb90ebac45f6a55f450e877fc55dab720e484751ac33d1e5bcbaa2f28d7f3":"0bb38e535964aaa4f24402c6f3e5729c":"e5f53381255dce879a19c04a91f66ded9828bf3635661ad630ce7611e9a07d2ef42c6a09c96e1125ae1ccb205a17937c":"41aeba30d4fe6ad18c879d1bbab5d1c905278095c47210581ef5cf4f9e25acec653c310a105ade797af148683e6d9dd9" - -AES-256-XTS Decrypt NIST XTSTestVectors #241 -aes_decrypt_xts:"66c5e85bc946463cad566b9453f6af12c2f94d4f9b0b090674306c03e4b404295ca27cf9ae1ad225dddcfee3f28fc5841c1bb56b312949f7c7568e3152b52aa0":"74d8306f8ffe1221eaa3df8c969ac32d":"8ad597587affb574b8a0743065ca9fd84db8d0384628f791802f285d6dbaf6151a2efe4279c2dc60cac6247ff0a519d3":"d0739fe477e043653bd684613db0c95e1693bf84071dbd6dcd951123bbb9e799bb066b199a22cfb763370d4425eebd81" - -AES-256-XTS Decrypt NIST XTSTestVectors #242 -aes_decrypt_xts:"5b416949be1355a8f7f5fd86696376b624e0d6eddb5656e281e39f0955f3b8c4bdd42ff2b0d1e8ef71fe90fad28e22f7a0a0f888f3885797f52aad58e7534042":"3f0ebd8c24ca607c54d3ad9a330da303":"b8e4e984efe890f175331f7b820d8ce62cce8104bfec907869f0c3b698b5a412f89b55577f9b0a471d7743ffb3fb9d43":"431c80c417bc96a3ef4b3ed0d2937c177bfb838e2c6f52992f0d8852bc4a02bbe2e8a80f4055422f047fef7b63211194" - -AES-256-XTS Decrypt NIST XTSTestVectors #243 -aes_decrypt_xts:"788d65994e0fa9ce810d539309d14e82b0996aab45ac25c0124765116e18d3483b531473ccf2531e5c9bcfd6176c6e4dfa571cfe166823d2de8c0b9c7b030005":"ef453dc6b1c6e060b47c128ec663b396":"85f1bf2e90d3f22958404ffbf98db7b6fc749f30c9d129d0c6cc263dd7ff3330d660f1b004b93984b7ca5f341917de68":"294ff99ed454ea558ffbadcec7074099de5dc4e12cdbe14bbe3c6b18c2b2f219a2a8411a314c7b450018c3e5c9214ffe" - -AES-256-XTS Decrypt NIST XTSTestVectors #244 -aes_decrypt_xts:"60cceda8bb03daa1936ad5d9e9ef6c1bad9200742988bc39cb4e32c6ec732f135c9a04e91f73a14524d9a3a4cbf2f2feeade0aaad65cb316325e31e10f4c0655":"2844e7bc2008b44de2ceafbdd6da4874":"80f52422b15f7c9f2ed268de687ad25e7fae47866a39b98fd39abbace8e8641f881db1cbc165d013ade010d2f922efb0":"97c06f038f2e255f069f156c9bfad356f13b23dae7c5e370896d1917f568bb830ba69176ce2712130bb23e08f48cecfb" - -AES-256-XTS Decrypt NIST XTSTestVectors #245 -aes_decrypt_xts:"70fa1524b0c4997ebc6c236a5ba76cb0e5d113ad3be612d71f7b9094b98940ad64aa8d437902d0dfa528b5a68f52c550728c8243a8e9552983efc9676c4d63cb":"16c57ab23f16fd9e27fd222289608ff6":"c8ee51eccc3d9f27a954e24ce8e3e2c7646f3b5c56ae2eb20fb6039c65b1c87d397501a1e0e0f28c77c35fc62091ec93":"d825d9c3cd47590372ff74093f6c45526ed4f4aab637172123f909ff6b09f3dad0053d2777744ebbbce564ef65f5d7ab" - -AES-256-XTS Decrypt NIST XTSTestVectors #246 -aes_decrypt_xts:"b84da0b93e5cbbe83d0afbef045b613d8f429b39a51e73848a23e052f1086e311392237b87847d65d20470151a835fd8ed8affbba92fde31f59370bcff524db4":"9e4d4acd11dd99ef72e845dcbe0da30b":"20a8fa05344a41154dc3068ab451feeff5a7290f682e6d750f82867c217f60194896264025e1eee8f398d39786af1d39":"f9543e5edbd0dd4f85a7c68cc7523f4467e89d65072a59ebb634a5c87f9baacdf76dd96b14a72810ccd4436bba040fe1" - -AES-256-XTS Decrypt NIST XTSTestVectors #247 -aes_decrypt_xts:"ca31bd1b5566d110cf08830e23618bc971eb5923ba15ac57c4b451829299a216367c6c26493508f87c60a0644a682820194902547d8095ac12a9bec669c806c6":"cae829363af17cda31441fe27c221a51":"b31a62f068ad9107e413d47055df2feeb8139190320a8ef190381857073b08c57de003d5dbcfc61fa4e5d2ef73afe50a":"db4ba7cf0cc0d8b77782cd1857fd49311ce8be6bb9a961fd2d6b740895a12004c007c12562ada281ca56a662ad93397c" - -AES-256-XTS Decrypt NIST XTSTestVectors #248 -aes_decrypt_xts:"f63b73792fdded445434733c808b9e22afd927ec828bbc5c31e085052e6c9e2bae55a2b0ba24b14cd0d5997c7fa1dcafbda5664c3d9c52d1592d809626c364c6":"70dbb202b17c52d054488b513dee5c5f":"40ab8f0039e58ff95ec3a51645eadf1fbce5731fd8d9a9f91fb1bd0daff4db3019b6dd280c327157e589d5aa2d2606b5":"1be8e0c1a6c757b1cdb510fb25ec0b84d17c13ef14fe1c314e03df208667a5907ad51677d058e1103ec35b64c004f099" - -AES-256-XTS Decrypt NIST XTSTestVectors #249 -aes_decrypt_xts:"65f4e5433a0b76e53002c766394550d49a3bb82188e48de1d26c1b7fd9dc47f1b1c78d93c86f50f00df4f60e530c032ad382a5159300ddb0ce5edaa875ff002b":"ea0aaa66bf1a100bbd517fed782d37dc":"a723a9efe5e608b1b3d5906b8c9958635a7c8e8267a8a98c8857de51f55fdca01f99ee2c2c188d32496c5258f7629b4f":"347cde4bd66851ac9689aa3e45e60d7e7d29082a2e7eb29f4526656773f71a563d55e253da1173624179095d6c9bc939" - -AES-256-XTS Decrypt NIST XTSTestVectors #250 -aes_decrypt_xts:"228605421d8474b297649e2be3ef34685f780f8602ede63a42cb08ad9de1b0bf4aab97b46acd80cf0f7875a01bc586acb03f9de55280d832fc0f0e36c3b1c271":"ada053d9bd64caa95941070f4b3b1085":"a7decc47dcf7a39e7006595b51b064cff81661143cf1595d161b29b924d2611c55dea5f041a69837f3933ccba47b8434":"eb3a42930193f3164d93d7e1ba645c8a8305b1d72b25feb9fe9f49e63c97d5d53601c68c7695d7ebbfb67128a5a1cb71" - -AES-256-XTS Decrypt NIST XTSTestVectors #251 -aes_decrypt_xts:"9111edf90342b66007b95b3703baa40367a304b874e326273bbf77c1be2f941084a8f12bde73e890a87b72b27109381e5d7f50b4f71079d6778c8b6fe5104b0d":"2b4b47afa3b4268d2063ab126ce5adc1":"1cec25a66654144d0d080e90a3d9f6c367ae9d4d44489d5956855753896d49fa40538e23f7ab4128974ff9628a897cf7":"71a9dfba8fe5074180e884dd721f7c6a889b7650f038889e40b3ba893925a32dfbbea178ace0d6d03dc81c52faad6c4b" - -AES-256-XTS Decrypt NIST XTSTestVectors #252 -aes_decrypt_xts:"a89c96e055997ff9379b8211ab4c92da492d6e26280f8a3bcbaaa002f502faa9a0e5dbf38f10ba3edb30f272f0f5b82aedb601c290bfce03d8ca6f40c6c8b883":"a9be52eb70c79e372bcec2df1e0188ef":"dddd97f63aa0e6f23c0ae0e8bdb2e02ff55b988828e55ab93c6f77d4746d1c5e0d9e8490ab940b8a2b9f7bfa05d593b8":"55d3dff798fda6a4eecceca4b6946e5634e7a6e179e53c0b34244672e492023e7654c6a520fde2b3d48f100bc70111ea" - -AES-256-XTS Decrypt NIST XTSTestVectors #253 -aes_decrypt_xts:"2bd96fc30471184ade916ee3e09280eba1e5247d338793a242efc5c0de985b43030cae0e20315c9f9f318b4d0d8843cd95ec74eed88675bfa44d4903f0480aaf":"2ba414d77abe6897c42c445c15fe40d0":"cb746613b2cd6a6ba8a3941582e66019519e25839b5318c3942080499b9669493f3f93cbc1b26d00fa8af65d94aa82ad":"5022a21f5aeb55d8b039faa3ebe219ddc0e2049b4c03ccb0284c6e77ead77f9794816271058ee418f173f25d1f266755" - -AES-256-XTS Decrypt NIST XTSTestVectors #254 -aes_decrypt_xts:"7e5c5440c0640d241f270b914bae3a66291b0090d4e63509ac7b48b59d52cb136468cfd6a73a6260367064b72a32ef07e679c27adea446f8d926a92dcbf09311":"77992ce4ad2204b09304803db684ee3a":"060cf67aaed93669d2069c7e2be3380cccf0024c681ce941b045057b085bcdaefcfb4aa2ffe1252356a0bd1ac5f96317":"69d1fa60f62f03eb1481bf3760e69c73cdfcf7630ccb34fa11ac9fb8b5a2526920faee1b2445d262a49049e93183a222" - -AES-256-XTS Decrypt NIST XTSTestVectors #255 -aes_decrypt_xts:"6b913219fc884ed655107c679c39724c754582a728fe8927ef88efc2f2df6c5fbd949b2c5e34bd0fc7b9d914fe91b2c6c86ef3e7251a1b4d6cb3550240ef4427":"ea03bdd5d817abedbdd737c037c48ef7":"cabeb3c2d6016d5dfc1b1e611f6746020cf6b029a3d0bc3c5aaa6392c1d9e43e8c541f05121d69410bc05d3aeace5e25":"f1941323c4023bab79a66e8495a9234a693c784a80e34031a81c8a9a0646f9a94ed7eaec212f4eb80c2f7c95a9e8c88b" - -AES-256-XTS Decrypt NIST XTSTestVectors #256 -aes_decrypt_xts:"bb21751de1bc38ab7ca856682ff22d82ab9fc12306d9348524e68b6503d0d57d4ad5410bd0c35faa39b1fec90b99abbf9e040d2da60103f73faf80ad82c5186e":"0a5abee76502936403ec59df5fed2d1d":"cd40698eee26f95457eb089b7b344525312d9e458dfbdf69b34f1cbd5141a4aecb074eaa3549922b3ec32bcd8715802a":"4bb36fd8c6320bbb6fa670d3b3eca75d3ff1c1880eb1fc9b3c06a1a8357b06b3b2551f6ce89d0673a1426c04a5830d27" - -AES-256-XTS Decrypt NIST XTSTestVectors #257 -aes_decrypt_xts:"3a21ef6b1dff0dde7147ad5d63af604afd1d95a4e59d78906381df629b07f48870fc38379fa0ee8c2d1f6001a7ba885147562f649f9b193c19d57a5ae0bca277":"dd8b714c27ca2f932d753cc35abce78e":"b8ffe21771ebf2ed99280950a677909e68eb3eed1058bbb6fab3015ae09f36f11b0e30beb3b2e71ffd6ac5360903a3cd":"36472c0c0b239884a97fc8c1d738bea4f60d7cb4348626d71543d095e3a9aed54fbacbb9cbd9594337ffe7a9d963efc3" - -AES-256-XTS Decrypt NIST XTSTestVectors #258 -aes_decrypt_xts:"87b4e3e31ff5074931d38fca3b405c057666e68988fa54367a136bceb93a51a78f10871f0c97b60f32d0c3cf163a32c5e51a67d683d4a713387637ff56f50307":"f0d6ca3a1e8fbd8db939f849ddea7836":"b65eaa8adf598c3a1c62011ddace18b70324278843ce3fd4e9fdae51cf1ebea600db260dcd5ea9652c8f9f0ec31ff975":"8215f22e13398f38f09c077d195c64d600fd00baec340d239efef411c85b62521b67050d0463659a220dabc7356654b5" - -AES-256-XTS Decrypt NIST XTSTestVectors #259 -aes_decrypt_xts:"237c7f74befaa495051347def47b10fc31c1a7f5ebd1747fb4b15afb0221035359063346a55ce6d80cc71f58686c4278167c365989034a75c2a525e40ca73190":"84d4fae61f666165c222c37e97e2b5f1":"91ce844ba2688f55f294cc67c8c49fc2ed48ee2b937bae7839ddf1b9bdcedc9007b6f576b8658af1fcd98ef2c8670853":"8eb2e25b1e1684bdf0a79c4b56e424a5fe88b93a16841ccbfb72701ecfc3c95229162ad194eacbbbfcdca0ba3dd06610" - -AES-256-XTS Decrypt NIST XTSTestVectors #260 -aes_decrypt_xts:"4ed7698c12c8b42e620bbc087ebf6ee88cb69508595b3378d2f5cbc9e7bf612261dd69b7055117babb319f2324b3b88f129ede76bdd6d0043e39facbf7ffcc45":"54a2448526f9e9a67fdb3c998044ae14":"5840794c0c4349680a033fb95d4a2ddd8163d69a7f31407c6f01729d03c094e16cd75070e9ba43a5f9207fb053d31025":"a64211f3b4a16ad74200a569cc4a05ceca97de5be1c10c5552d2de801a5c9102d79ba872df4b94ba503bcfbbca4f550b" - -AES-256-XTS Decrypt NIST XTSTestVectors #261 -aes_decrypt_xts:"985fdec8e6ae77ad871d8000a12420251ce4898a1f69265268bb9a4bbb2148f6c94244a04f48089fe07315b13aa56ebde62af8f018f61b1e3366262e3d48b169":"24498f7118468e86f259841c283dbd88":"08838541b90d2d30172b24ae2cf5c5e770e4d7fdd8f5d6f09feacc02430627259fcebe3fb9e1c2968f3fcf6c08baa674":"947a979f228700e540a0c484d046acf1f3d06d081e6f0e4223e92b12ae68590fe4c86e67dddf6f8344351d38d2770403" - -AES-256-XTS Decrypt NIST XTSTestVectors #262 -aes_decrypt_xts:"d02b633028f62f66edf6ba2290b46ec9fd5e9ab6a462feb71f09b4375daf7b873e7057039883fed404b3cf21f81c1bfe2f488d0c41317591e01448cd0bfb85ae":"1b7f424fb65501d33f79e1efe4460a51":"7a44e091548ad2bda9b26c36cac7d4dfdbde3935a4e0d642ea3a3c09d773094b6341785a196b2cf95da084760bb173bf":"f5ebcb1312afa66598b49ae62020ac5c6b9e629bed753727d0e514678c86268393331c6c153c53868025ababa5c3f289" - -AES-256-XTS Decrypt NIST XTSTestVectors #263 -aes_decrypt_xts:"4c0d1dfe34298acd24a983718231f8265302ab07e90ad801b199acb296bc75c41e6e2277a466b77c65a93b6d9e984f0a9da857977425d18c2edf26b7ea408b44":"6b0975387cea61281bbc4a619b94ab45":"5aa9f0d27530ff99dfd6b30716a4831af1811e70edf9793f51d54474692d37ab58ab3f6f7024d496caca13dec3d0e2ae":"1d72a8f596e7a0635ab475b1733444df3ab230727a0991c0493c3adefeefc4de17031ea834026659edf1728b3d50c89b" - -AES-256-XTS Decrypt NIST XTSTestVectors #264 -aes_decrypt_xts:"ad3ab9e9e6483175b6c5c3a1eea5690206ec1e6354a7bd2754d1b3870a526868cb7e371e6714cdf349efaaf17830d2d0386376df6be216098b17cb2c1952eb8b":"7ee4290527b66dec463a1a4092230cd4":"ccb973c1ba31fb266cfe3c8ed157ef57cf20161a6fbba3ad4411401f3d6df15cb0e82242d5659ee3254a6c71454fb113":"6f3d50b3e850e0e8f0492a192023dd5aa8889f92acde41b77d40c3abee6bdd8feb9527cee76b129f91998277f86db166" - -AES-256-XTS Decrypt NIST XTSTestVectors #265 -aes_decrypt_xts:"186722cc3ff2088694cdba9e22c136d0e35000a1c2e106f0eaed3c44b2a3a3930d708d182f714c70748e1baa5e3db519b3f08403baea87232666deb8131dcc36":"f6aee1af0d8dfdc72af493a129aa0ebd":"b89acc2bd052f10cc499e5200bd0479c20bf40acc0477de3c7253f3ee371de4e64fcb12facff7a6578b3a082788ce181":"00201cba0e7564d420d0566e961931ca9664e05959e5fb050515facaadb541cff4376932eecaf61a039fc680de336995" - -AES-256-XTS Decrypt NIST XTSTestVectors #266 -aes_decrypt_xts:"64dc77c5e0377050f03c993d95f9864ae28342e9584daaa56159e4c641e5a9458655daa1e6f601770e2c1caf0b05eac315700bc1af41c2727f17e4aedc821b45":"deb6821a6858d758e7dc4ee924fdfb92":"8e065eca5823f041872b3a2a6fa874a02c504dc2024f97fc1a8f89f2e094acdd4a1690c0b12567786dde80e591741852":"3fbf848b218119926fec2f7d8c67b54ae853ec85da4551d95ddb628f5b56519c1c0de8a94e5e5ebe622ac79293bef727" - -AES-256-XTS Decrypt NIST XTSTestVectors #267 -aes_decrypt_xts:"ffa81fd85aaae76cbc7fafb7a25b3fbc18aa535e15e81f1e8413e5e5407d193f7e908aa55eafcc0f4ce6b08e98dd7bf25e3adb430f1f5b6119d481813e962a32":"589bc6953c40b328c23abaaac5a476d8":"b29060e7fc2d171b1bbd261a07547e08022103a2942958da403fcd676f4904d75f344390fa0d272c106d4c8804f1302c":"a179f6856191b0fb8f698b8c953021ca8bacf4086f874664611e11056f18a06e6a995827d0f8bdc1c9c39f5b52c2b30f" - -AES-256-XTS Decrypt NIST XTSTestVectors #268 -aes_decrypt_xts:"5ddbe6529a0b28fa77d20f200f3b6aa0ffec804fb3a420e1ee399d02d44d4523d6eba3b0b3166d8810d87c1424b31e5a57fc4b52c44a0a3b958c082e9c9e5992":"b00ad83bc810b6840f31b39d9cd109a2":"2f6acddae92f66fc39bb91be1282c97c5261995b2b82a315dc3e789b34342a0f1b656f4674e1d03d36385f043478b526":"b2faca8ca6075c8bd2b9a07f34c4965f33a3afe51c12f282e588d0e1ca0240de523158147d0720dc0743bdcebdb53145" - -AES-256-XTS Decrypt NIST XTSTestVectors #269 -aes_decrypt_xts:"8424a2d5735a0c26c1031eea01eef7e05e5c1a8321f8ac4f9934336d5d5d847ebef95317f78c5ebce8a82499f919cc9b535c7f110d960991ace250f819ee53a6":"6c146de439efab2aa98fe5e06506d6f2":"252c6117ed5b9c70efb57c45f1e8e251fab40ec4bd06c22bb951db075c9eeff37d6ce72ca29635c29a182d2b307fc2a5":"9ddcc0d9e0f21f6addc8c73d992755593276acb0f2410e34c633c9c727becea542b317977964a16192c88784c2028c29" - -AES-256-XTS Decrypt NIST XTSTestVectors #270 -aes_decrypt_xts:"e4e73bf6c3609dc506068612cc47265c3429bfd912549858b581dfcc3690b9113ab0199863fcb899656117af9569ae3aa8ff4e67ce76ee6f24a35eb6d0893edd":"54876221af1ecd98489bf723fe9fa752":"f497584ac014791e9582c4f97e1ed031134a6e872cad515481b78dcbc60335c5a89986c857edada62ca45cfcfe3de5a3":"0760b730b60d1acd026ea8402980362e98fef6343120c23203a575ee218cd1300c157a1fcaceb7974040dfe8d7113106" - -AES-256-XTS Decrypt NIST XTSTestVectors #271 -aes_decrypt_xts:"288afcbfce921e11d0376d2c6eed412d1e46e8164b5f159d810f50471e82be253de581cdd05157ed4d6431c7fc0246eec4d279985aa3e7d7435c29f15df93988":"89c6b5a98d7f7ff5310aee0947d07111":"b3e5d37d2e4eb5c523fd7dc8de0f0c699a7bc3470cea3e1307e4cd4b66fbdc74ab1a5afd2f7c68441d6dbbf3b275d11b":"ae2d5bde37e8770f91fa9486623c7b2f31a6e45660f737bc809dcab537509c4ecbed500791b1c1128b9a8eb0ef0d3f78" - -AES-256-XTS Decrypt NIST XTSTestVectors #272 -aes_decrypt_xts:"bf77dd7f04c2502d5ce07e9f723c7f1e855b2481c35a962c6b5784c629c94b10e0fb4ba16d381ff8ba174d5779c290f93d5ee22cac4c1cb6828fed12efcac8ad":"5d628c12ab06a2c576356cf9e0d9df7f":"55c3fba5aed86ef55d439379ea1b3b9f231f31c176707665873e85510572a6bf9ba846dd368a56937d7c7dfecc33b0f6":"19c9fffdb898dec02f7cd91d03e8626f29fa13e3dd2639c472f746105564d8d74d0bc2b47b4c0d299889d6426f2b0f52" - -AES-256-XTS Decrypt NIST XTSTestVectors #273 -aes_decrypt_xts:"faaa0558184c419c044eecc892efa05cc8d27d71a1a26fc97ec8bb27efac443110495dc46c73414cd81727259e0302a9834ebe5651e15a914217b376822ad12b":"d7031598a662eec151bb73defcfccd25":"e992b36451734ae7d417fd3bc949c4f893203fd62bd146f9c31fafca91060ad6be941fca204020fd292711473e93889f":"df527221282e43f83812858b0a41857ebb998713d3f27ee87c51f2e95ef3316a19ae6d039761b17114b6fc6faf47fb29" - -AES-256-XTS Decrypt NIST XTSTestVectors #274 -aes_decrypt_xts:"31b13cae570bc1e964d3280864bdb9633e4b8b7c3ac52b58093534944686ddb4963b4ed0a3fa37490f0d9917241d72e78882d5890b279af03b5f9868eb5f84d1":"4fbb288625fdbb539862c19995a60fe0":"821cb386c87a1c0143f49b5fbb58f98a18f351a0002a52460e2c2f93bebae2dbef5cf59ac38a2e65f51d99d885df6b92":"e862510b1a3ac838daedebe57eb4a76984908477012dc13e7be464648c8ca45be8e330e495fe96f1807ddbab52fecb9b" - -AES-256-XTS Decrypt NIST XTSTestVectors #275 -aes_decrypt_xts:"fbca0e46af81ec5238d3a1f800f3e10fc672bdaf4f50e056a070a776c4b432405c12a73aa5912781821d3b406abaa9aa21d61dccd74b71c38854e4d8539cabb9":"d5f2bf54d338e2b38cf4abf0893ab532":"f7b12975fe133472f535c036191be0e8769047736cc9c308ab49f52f83d44c22929655edb99af3213fa6dad2e14e16c4":"67e48a78095f78d94a0b0b502c46f6d386f28b4b6c9c208c51699063a9650cc9163f4fb201feaf2441abad989f6d943b" - -AES-256-XTS Decrypt NIST XTSTestVectors #276 -aes_decrypt_xts:"343345475b56ed9b15630acf7806f4a3756ec13569171b998bf770ca75cea7107a932b886fbc932266f716d4321e6e55a142223072daf3d4450ab318c6a9a659":"1cef65aafee11de5cfcf77680f9bd4ee":"4badcf8762a4573bc8fe25de5fae2292bbb9720e707def75ad02aa4ec2c09b19a658708d5068433b4de063a3f3fc0dc7":"122ccb6acb6fcb00a58046c9bb7a089a790322eaa95bf7a97c47184f8f632662a7f89074ad94a33959b2ae9a9e7a7123" - -AES-256-XTS Decrypt NIST XTSTestVectors #277 -aes_decrypt_xts:"2cf754836d5e12d64b1d5040e407bd1567119ebcced96a9b5aedfc9bf1193beab004b949b85c9287dc261b87f805485f6164ab4a0f37dd7e67be709d2a7d6c62":"b0c662ccf654d461ca187713b644846f":"9b0eac1bff4cf5f810f2c27bde28c5019b3d092a5fbb2057b3bc02fa45afcbdb22f9c4a5e365d047efdfcf3817fe6b46":"9e57d41d0504fe2826c0e87323e684757f1e630c4efe5212743d23a934f16dc7806c0cdc3a2061ce4964f4e27e38089a" - -AES-256-XTS Decrypt NIST XTSTestVectors #278 -aes_decrypt_xts:"36af2528fcc8470a3087e4719c045717d342471778f1f1820154ca0870d2b78751bd95c396f77464c1bfc3f001374a432d04d974817a591c499eec04f24234ab":"741b84f651fb633caf7eb642fc6af966":"fd021404320dde823b797d70c82695cc2fe295616d3deebc2be55bdd5af904c6e8b5758787e072e839e990692d9ec136":"71e013156c93816b3fa0637d1c240df75523e39ed73a401dd1f4bbc5715970eae3d48df8ec4d3366fcb36f1833851597" - -AES-256-XTS Decrypt NIST XTSTestVectors #279 -aes_decrypt_xts:"05a0f1b59f9df2d5cf27c65dd2e7f84c65a1ee433452c5c003d98a348c7e9e8e9d978a743c1e67f55c923bd19717685429e7b34c032f8ef7dfad42061bc9242f":"0d9c21a8549aff00b5795fb7c01fe78f":"1bdeb77b673a2f34889c50255bd5e2df2721b6b20b7c3c52b62af1c8647db32fb271cecbdc1d23dfe3bc8d57d711b646":"cc498edc8243393bb5de6887717c4963954c7571b8a68af79062dd1ced7871d84a0a4da5eb7916c83415476c1a93a310" - -AES-256-XTS Decrypt NIST XTSTestVectors #280 -aes_decrypt_xts:"30d4a18d7715baa3d2abb316c148428969ff38ef444b5543490c7145ddbed5af2e2c67ae518e8a2216be7485b237e3a4440d64d3f404092f9986d24bd9ea232b":"ebc869d8126f4c13de42e1d3d7e90ab7":"15703b43bea29d30a34713b9bbcc3364bdace695bb37fb87a249ae84ca0f3056ae22fd91e663cb3a5873bea084d9b4c3":"46ddf06e9b9f3f22a2105b5ca39b5900f1337eb16cb9815bbd75ce886dc105ebd74807857a895c32f009f81d049db4af" - -AES-256-XTS Decrypt NIST XTSTestVectors #281 -aes_decrypt_xts:"0f1d43f1ef8e7738bd9d889fff2486dc8703b39b739e78480ba5651093d70a5eba0402db079ee058fe013e2244b76a1d3c0b0aad775e1efbf7d6785915f0e7d8":"5efa6621ee27b2b587322665341d622e":"63a7da2ac0f7478937ca521e6b9f27309f0b34ad5fc6e9055dd5c3273f585628507a15ef5c003c5a0679ef694ce6834a":"7c8d945a350b95f8a95264caf51679aa0429110f808673d56ae94aecc12e95843a5a7fba217d9e43fcffe43718528a69" - -AES-256-XTS Decrypt NIST XTSTestVectors #282 -aes_decrypt_xts:"b882624e74c9041ced3ec9cf5db40eed0e2d36f7129e2b4c5ea65a8b72bddc7740fcb0df4afedb3e107dbfd8f201300aa0b12a8d18a1e07d572fcc533ecfc040":"239ef70c534fdaca60a14fe8ca3bf3cb":"0b93b5f8c23c56dad2c4baf948ac413ded2349e6390ef55868d9850a5506795f641d5935ef90d3353ffbd2359372589c":"09df09b43b1324048e1cec032dcef36ea402d7acc1b4590ce2e28b30ba97500d6d734a5e8daad7054404eeca1e8de90e" - -AES-256-XTS Decrypt NIST XTSTestVectors #283 -aes_decrypt_xts:"3067b977b103d6253a83031f0f7e224a5e60ae9c2fd9bee920f64b84ee7ae460d747c9fc7b371a84560942f465cf8f774554f69b2165f472f68f8df6ea11d494":"1cc671b9eea8d38616e05da5c6760ba9":"38a574a8977b38ec3cf9858fb50fb0e50c1a31f619e36a3e42b59caeb3f76afd452df46243cb920675f3031372c3cf8e":"d76127e3bc15cc6772a693b5750485506f67562a0ae81988d2eda85521d4bc3a96705ec17308639551e6ba76b125b63c" - -AES-256-XTS Decrypt NIST XTSTestVectors #284 -aes_decrypt_xts:"90e031e39a40242e8adfef6efb7aa96716d2253ae131f140d59b12870ce0ee53818730affac35c782a5fe3eb8fbbe028c8b409e8dd093f4f252af920819f1426":"baf030be22e5bc1e81c8b11a4db3493f":"f3b79cceded081b553438056464fd1f60b3a4c159507dbaf2972a17a21e28f3c0e4e6f298ee5cd460c6300a4dd101fbd":"3eabf805919f0ee9619c4e2abb757bb89ab58e0a8eabdee0b20386b5c31c25a9b0b53fd1a7e3f17c4bf86e72e4010ebc" - -AES-256-XTS Decrypt NIST XTSTestVectors #285 -aes_decrypt_xts:"beffab14bd325af4f35e192475c48c9a0c3df06ea983506438dc14c985a22dd4ca7c58ee4ff394a896a96e9a897b7c5565cf9dff0e760ec9261470cacbd28e93":"10a7aed2521a5afe0b7f148c8c75e86c":"d2b76d9f5f046408cd383bee6d25dbd75e089ab2bceb85f46aacc5d1c6393e914fe036c27be86c6b4e8256c081951ae8":"f62e42ce53562ea6130504ac8ba96e63acd221ec284d2843b60530f7ceb8cfe6b2fe61d4b8db39391a30ea04952f7f67" - -AES-256-XTS Decrypt NIST XTSTestVectors #286 -aes_decrypt_xts:"409531fc6ee8715c17eab789c38642f465b5edd7c5f2912b81ba44e4fad95e6224e3fe0a38bfe4c533f06d20a8b51317d0d26574785601e46bada568c6adaed6":"d7ffc894ad769873709fc5e916f766ce":"f4b9a9ec2e970169074e3b0d8998671a887f5c2c2f065c5e0f5c38356c1aa1a750fc40845e64fc63495c1f7f21c896cc":"487ad466c4b8de4aae5f3e8cb4ac25a436cf4159259eec7672e7885a1f088a339bf2841397acfaccb0fb577a395e5937" - -AES-256-XTS Decrypt NIST XTSTestVectors #287 -aes_decrypt_xts:"104406d7b0424626fbe10c50a92383e2df68ed51cf3b28d601cb8fff7d317ae4f3cb6b445cc437bc9465379310b25d1e9612d0aaa08f8c98ed1c0fba6df8fa88":"44018c58b87974010aca151b754bbec4":"93fc171f9571dc62696294ef99f9bd71e4b3adcbe5914ba0a2f8bc7c7dff005bfece2c213d2f81d9864857eec5c8714d":"6620a89180027eb3fb2321d8a5e6744808e4c4b39d3ef618f6daeb63a8fbafabb5d13eb57c0fb1b1a0a675bbb0b40a1c" - -AES-256-XTS Decrypt NIST XTSTestVectors #288 -aes_decrypt_xts:"841be6311688c24bf03811bc32e54a43d8d1006a1556857020d60296ee7cf4bce5a16d0cd3300a983c2c2dcc702765cebd09a9febb4faed9f0019a4678f61466":"5b9a3fc8f4392061225ab495c9b92a6b":"05d3d65639763a533c767054ca2a0cebf52bbd66ebb595dc6a6b574fa07f3bcc03473624966b92fbc2010f2e3b0033f2":"b7914d966538f95e9766c83c70ce32b43c394a92761df08529113616e25ae5a969f3a25bb637d8d1d03cb4abfe661d2f" - -AES-256-XTS Decrypt NIST XTSTestVectors #289 -aes_decrypt_xts:"e9ea6b695fa5cebb2ecde875954b97a0fceb06a4f209b930b79ffd3264d146dc73060c8bab6e8139231e043d0aa8c4efd7bc7ce91e077ca9e061ea97289ad7e3":"d573693d0d51687eecd9a7edf3c3d9df":"4c3eba5e795d60a260379684fdf8c29bb420b597e76ba5f391d76edc4f20e9d42e77981b328a14032347b9237aa51e62":"c67660698d58c294e7bc3ac5f5b044fe66f6cfa76009a749464ef88e60bf0357efb7c7d95c2f868fa00de7e37bb124c2" - -AES-256-XTS Decrypt NIST XTSTestVectors #290 -aes_decrypt_xts:"35abc4d747a1203003364d26b9421bace3e714f651fcd64d7a03fd4fb07736df21c4285a51fbcf893f948b9d5c8c23e68d4adc49d5443770ee0f5b68e3e6667b":"9bee2bcc842c8ec4ae1b69a8c856b751":"12f1cd63140f348d342c9bf7f659dbb881f940f0d1562fc46b94704b5adcf6a29f0ca72bf74f0d0e139e85ff4384348a":"cbe57195d9bed756c3841f74a5de4c5682a1c6f815de80b53bb558566b45788bf14cc35300839950f95553c2cd80670e" - -AES-256-XTS Decrypt NIST XTSTestVectors #291 -aes_decrypt_xts:"36fb7b676f4cd16776861ce117d444c87888d9aa2d4d06d73858a19246798900de9060ee7d165245fb94ea003ac58994dc74a03a1804cc7ac11251b3ce796806":"44aea9b2f5c27708ee13287f404dd41b":"fb308adbd9c03742adea867df4891c0452001146ff113ac4552ec35034564ac434a08ba696647014d0f28b620aa8c350":"5d3298f642670026c25dfd83460dfc8d5c2c3333459346ef9b75fa3faee08d76a999bb024ac3d3fcfaf3091b39b1b815" - -AES-256-XTS Decrypt NIST XTSTestVectors #292 -aes_decrypt_xts:"0b1431facf4cf32dd3534ec9c5ecd64b3e85a5db73a1550a896e56ba34bf651e5bc19200f5c388c9cca5981e0e594adb95e453c3884acf6f2b70d48f5d0c7586":"76736be270fb7d96b832c7bf1af4969a":"e7a1cc5ef4587a88148cbc9eb35ce9d0ddbeb47915f0b9ce801e2e94cadb5ece2b2e56047b04d7bcce12e34e460aec9c":"14780c7b4e202a434cd561a6de1d7ca5c1529bef4c3f65b29a6e5e5038f22dc2716507dbcdf42412422a8d2593670926" - -AES-256-XTS Decrypt NIST XTSTestVectors #293 -aes_decrypt_xts:"7086656629adcd47e7093640173f6088648c8477008f590e3f538b49ea1b07335c7506bafe80ee8cf68f553a885cdae49e099741a4eff85e5e782cffee7aefb6":"6679472356a729febb493d90e9addaed":"a153dbb203db963fe92acb826960babe59d7131ba378e19431fc74cbd47ba346d648ba9cedf307dfa0a6c090dc7305ed":"677dd32fd0cc7434fbd39d112e237ed2c6dcbdf01e4df0dadb12018d13081757ba878656d21ff90e0f7b489a4c53788c" - -AES-256-XTS Decrypt NIST XTSTestVectors #294 -aes_decrypt_xts:"8a0ccbfe4a09b9280b5d79f2e9e49276192df1eac5bda7f882ae041780b639a977f4fe392e7c05da0dac936c32198e5d9c14b8f191511fc2bdbac7fb7af82c8e":"3888ca86a5cdf357425700fd66e55329":"8cf4f661a4180e5308b57d3ef8acd59fbb3abb4c03354a67c0dc6cec4ada69f43954d92208a863b585ee09e7832f3578":"8791f067c70271ddf323ebfd32988e6f2750cdb3f2b67c9b53f49f9f1a083cbad701f74dba5b536ddc53f5b112786d2e" - -AES-256-XTS Decrypt NIST XTSTestVectors #295 -aes_decrypt_xts:"92a92ba922fa20203b4c3896493a0cb73d69ac6d1394e045bad03eb4c3ad2074fb48b211bd02bdb909779324f562090f93150519c8def3097bedde001b5c8909":"595239c0562c5732f5e478d20719d530":"7aab1b018951463f6033f7c0563cdff9034f7c2133f6f6dd9e01c6f86efa5998c0ef992a71e0a18fb8dcd4e3acdbc79c":"5530b8c60cabe411e865c2b14237bbc60c028934043f74338f8627647b12df38189fd62a34729cfc38b3833cde95d8c7" - -AES-256-XTS Decrypt NIST XTSTestVectors #296 -aes_decrypt_xts:"7155f6716c079eb48dfce786b577970664bdaec150a9a862192ebf0886e77124977612c578da8fd9a2be4d579e5eff47dd0d7573acb6cb57dc0ecd00802234e2":"3fbaff1b605a9404fc9728021391f692":"654657f48334dd38ecef7e7531bb1c7518ee3e9139f7680e08b6dd77268ce2bb13b661a36ad79a2743c899b711ac8664":"40687387c4e63e04514d1ea869c68e2c658f836508029975f77c9f6c4f6687c53bddbf13ae7ba04cd7c8bfaaf70782fb" - -AES-256-XTS Decrypt NIST XTSTestVectors #297 -aes_decrypt_xts:"21d9147e6a6533af49edd72e45d08f573dfa3f756dfe8e1fd59303e5afe359ebdea837796d12b2cfa6cb39923fa317736ceb19495729481ed3f7eaf6eb91df7d":"ca539c37cfbcce3717903d24f735e0bf":"2b7146344a94a5c9e7552013cba32db26626c6472e860cd74d18dd8ad64b7634b618f25d27997f6e3cb3443ec0d23d1f":"997e4ad0d9108408e4286c2ac9488731926ec8b175293ea6f37a7a9250c59727ca82ecea9d6c072ade9a85f9c0c586d6" - -AES-256-XTS Decrypt NIST XTSTestVectors #298 -aes_decrypt_xts:"32be1589d7bbfab02b48b543359e9144a2fd05223b6855723be5c49e2c26fa17332be34d4365c158237f495d40b71e8797419c1c36aca8bb9a7b6f763adafe1a":"3d8da7642a1afd3850f7f10125ba28b8":"9e9037370b30476c724c98613ebcc8cce3a9f83d4dcbc6f0195865e0d24622d9c4615240067d276255ed2abb7bd06a4f":"bc745363769b9ea899963c3a91e576f2a42333f0639c3ef779a82ed2d08a2774d7d8dba8a049fdc8720193e631e18edc" - -AES-256-XTS Decrypt NIST XTSTestVectors #299 -aes_decrypt_xts:"22a0a371842832d8706388e94533f3df997d749f48503a1ad38dad9791ce14fe9ccaa3f3ab5c7546fd019bdf997cb3abd6cb22edece35349237ebe289708ce9d":"01d23862799e6295c0041bbaec5109a7":"6169b219ca37a2f7ccd2d8581d621d3c1bff888dac080364f2b9c702d01a9574b55bc4f045bfa04d1851e58c21ea7f55":"0e2b93cc892b22b5dbba9d32f50aeafe9de0ee66dffccaa6063679be69dd606c7d71a446333f9e5c36755896f4d8e16f" - -AES-256-XTS Decrypt NIST XTSTestVectors #300 -aes_decrypt_xts:"88dfd7c83cb121968feb417520555b36c0f63b662570eac12ea96cbe188ad5b1a44db23ac6470316cba0041cadf248f6d9a7713f454e663f3e3987585cebbf96":"0ee84632b838dd528f1d96c76439805c":"ec36551c70efcdf85de7a39988978263ad261e83996dad219a0058e02187384f2d0754ff9cfa000bec448fafd2cfa738":"a55d533c9c5885562b92d4582ea69db8e2ba9c0b967a9f0167700b043525a47bafe7d630774eaf4a1dc9fbcf94a1fda4" - # # IEEE P1619/D16 Annex B Test Vectors # http://grouper.ieee.org/groups/1619/email/pdf00086.pdf From ed91a79c4b608a65cef8b278c88130f219e2a9d6 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 5 Jun 2018 10:35:03 +0100 Subject: [PATCH 0454/1100] config: Update documentation for XTS option The XTS configuration option MBEDTLS_CIPHER_MODE_XTS currently only enables XTS for AES. So, don't say it enables XTS for "symmetric ciphers", just AES. This helps to avoid being misleading. --- include/mbedtls/config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index c7cf57a523..e90893f8ae 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -504,8 +504,7 @@ /** * \def MBEDTLS_CIPHER_MODE_XTS * - * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for symmetric - * ciphers. + * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES. */ #define MBEDTLS_CIPHER_MODE_XTS From f4474e79efd29258d4b0f8991f284c9d574c240c Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 23 May 2018 14:21:02 +0100 Subject: [PATCH 0455/1100] ChangeLog: Add an entry for AES-XTS --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8061792ae2..a8a255c405 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,8 @@ Features * Implement the HMAC-based extract-and-expand key derivation function (HKDF) per RFC 5869. Contributed by Thomas Fossati. * Add support for the CCM* block cipher mode as defined in IEEE Std. 802.15.4. + * Add support for the XTS block cipher mode with AES (AES-XTS). + Contributed by Aorimn in pull request #414. Bugfix * Fix the cert_write example to handle certificates signed with elliptic From 09317083b5dc221ac169dbc80468de25228a91bc Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 5 Jun 2018 10:47:29 +0100 Subject: [PATCH 0456/1100] benchmark: Add comma at end of help message The help message was missing a comma after "hmac_drbg". Add the missing comma. --- programs/test/benchmark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index ef83dc1d8c..89fdb84772 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -100,7 +100,7 @@ int main( void ) "md4, md5, ripemd160, sha1, sha256, sha512,\n" \ "arc4, des3, des, camellia, blowfish,\n" \ "aes_cbc, aes_gcm, aes_ccm, aes_cmac, aes_xts,\n" \ - "des3_cmac, havege, ctr_drbg, hmac_drbg\n" \ + "des3_cmac, havege, ctr_drbg, hmac_drbg,\n" \ "rsa, dhm, ecdsa, ecdh.\n" #if defined(MBEDTLS_ERROR_C) From d906b818f3395ee840fabe8dfd01d52b93431e92 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 8 Jun 2018 11:03:16 +0100 Subject: [PATCH 0457/1100] tests: cipher: Allocate enough space for XTS keys XTS keys can be double the size, since XTS uses two keys concatenated together as a key (one for the tweak, one for encryption). --- tests/suites/test_suite_cipher.function | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 8f1109ee84..9899289f00 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -134,7 +134,7 @@ void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, int length_val, int pad_mode ) { size_t length = length_val, outlen, total_len, i, block_size; - unsigned char key[32]; + unsigned char key[64]; unsigned char iv[16]; unsigned char ad[13]; unsigned char tag[16]; From 157f6d8f7432ceab02aeac4c8ae7f8aea4f3c0bd Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:06:51 +0200 Subject: [PATCH 0458/1100] SNI + SSL async callback: make all keys async When testing async callbacks with SNI, make all the keys async, not just the first one. Otherwise the test is fragile with respect to whether a key is used directly or through the async callbacks. --- programs/ssl/ssl_server2.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index a7b019c7fe..ae50b3d313 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -897,7 +897,7 @@ typedef enum { typedef struct { - ssl_async_key_slot_t slots[3]; /* key, key2, sni */ + ssl_async_key_slot_t slots[4]; /* key, key2, sni1, sni2 */ size_t slots_used; ssl_async_inject_error_t inject_error; int (*f_rng)(void *, unsigned char *, size_t); @@ -2387,16 +2387,20 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, - sni_info->cert, sni_info->key, - opt.async_private_delay2 ); - if( ret < 0 ) + sni_entry *cur; + for( cur = sni_info; cur != NULL; cur = cur->next ) { - mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", - ret ); - goto exit; + ret = ssl_async_set_key( &ssl_async_keys, + cur->cert, cur->key, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } + cur->key = NULL; } - sni_info->key = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ } From 3f3ada8839821b6b61149086caa641974de43a1a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:09:28 +0200 Subject: [PATCH 0459/1100] Fix memory leak in ssl_server2 with SNI + async callback In ssl_server2, the private key objects are normally local variables of the main function. However this does not hold for private keys in the SNI configuration. When async callbacks are used, the test code transfers the ownership of the private keys to the async callbacks. Therefore the test code must free the SNI private keys through the async callbacks (but it must not free the straight private keys this way since they are not even heap-allocated). --- programs/ssl/ssl_server2.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index ae50b3d313..81041c44d9 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -882,9 +882,10 @@ static int mbedtls_status_is_ssl_in_progress( int ret ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) typedef struct { - mbedtls_x509_crt *cert; - mbedtls_pk_context *pk; - unsigned delay; + mbedtls_x509_crt *cert; /*!< Certificate corresponding to the key */ + mbedtls_pk_context *pk; /*!< Private key */ + unsigned delay; /*!< Number of resume steps to go through */ + unsigned pk_owned : 1; /*!< Whether to free the pk object on exit */ } ssl_async_key_slot_t; typedef enum { @@ -905,15 +906,17 @@ typedef struct } ssl_async_key_context_t; int ssl_async_set_key( ssl_async_key_context_t *ctx, - mbedtls_x509_crt *cert, - mbedtls_pk_context *pk, - unsigned delay ) + mbedtls_x509_crt *cert, + mbedtls_pk_context *pk, + int pk_take_ownership, + unsigned delay ) { if( ctx->slots_used >= sizeof( ctx->slots ) / sizeof( *ctx->slots ) ) return( -1 ); ctx->slots[ctx->slots_used].cert = cert; ctx->slots[ctx->slots_used].pk = pk; ctx->slots[ctx->slots_used].delay = delay; + ctx->slots[ctx->slots_used].pk_owned = pk_take_ownership; ++ctx->slots_used; return( 0 ); } @@ -1067,6 +1070,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, default: mbedtls_printf( "Async resume (slot %u): unknown operation type %ld. This shouldn't happen.\n", ctx->slot, (long) ctx->operation_type ); + mbedtls_free( ctx ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); break; } @@ -2306,7 +2310,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay1 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, + ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, 0, opt.async_private_delay1 ); if( ret < 0 ) { @@ -2329,7 +2333,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, + ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, 0, opt.async_private_delay2 ); if( ret < 0 ) { @@ -2391,7 +2395,7 @@ int main( int argc, char *argv[] ) for( cur = sni_info; cur != NULL; cur = cur->next ) { ret = ssl_async_set_key( &ssl_async_keys, - cur->cert, cur->key, + cur->cert, cur->key, 1, opt.async_private_delay2 ); if( ret < 0 ) { @@ -3018,6 +3022,17 @@ exit: mbedtls_x509_crt_free( &srvcert2 ); mbedtls_pk_free( &pkey2 ); #endif +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + for( i = 0; (size_t) i < ssl_async_keys.slots_used; i++ ) + { + if( ssl_async_keys.slots[i].pk_owned ) + { + mbedtls_pk_free( ssl_async_keys.slots[i].pk ); + mbedtls_free( ssl_async_keys.slots[i].pk ); + ssl_async_keys.slots[i].pk = NULL; + } + } +#endif #if defined(SNI_OPTION) sni_free( sni_info ); #endif From 725f1cb6bd5c6fe0efc9cb2b80ea1632290ef6a5 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 12 Jun 2018 15:06:40 +0200 Subject: [PATCH 0460/1100] SSL async tests: add a few test cases for error in decrypt The code paths in the library are different for decryption and for signature. Improve the test coverage by doing some error path tests for decryption in addition to signature. --- tests/ssl-opt.sh | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 6afca2d12a..3ea56db8ee 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4243,7 +4243,7 @@ run_test "SSL async private: fall back to transparent key" \ -s "Async sign callback: no key matches this certificate." requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in start" \ +run_test "SSL async private: sign, error in start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=1" \ @@ -4255,7 +4255,7 @@ run_test "SSL async private: error in start" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: cancel after start" \ +run_test "SSL async private: sign, cancel after start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=2" \ @@ -4266,7 +4266,7 @@ run_test "SSL async private: cancel after start" \ -s "Async cancel" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in resume" \ +run_test "SSL async private: sign, error in resume" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=3" \ @@ -4277,6 +4277,41 @@ run_test "SSL async private: error in resume" \ -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, error in start" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=1" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: injected error" \ + -S "Async resume" \ + -S "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, cancel after start" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=2" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: using key slot " \ + -S "Async resume" \ + -s "Async cancel" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, error in resume" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=3" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume callback: decrypt done but injected error" \ + -S "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: cancel after start then operate correctly" \ "$P_SRV \ @@ -4320,7 +4355,7 @@ run_test "SSL async private: cancel after start then fall back to transparent # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in resume then fall back to transparent key" \ +run_test "SSL async private: sign, error in resume then fall back to transparent key" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_error=-3 \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ From 0a8352b4c2b653e1fcafd18a0df91878034a29a5 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:16:41 +0200 Subject: [PATCH 0461/1100] Fix harmless use of uninitialized memory in ssl_parse_encrypted_pms In ssl_parse_encrypted_pms, some operational failures from ssl_decrypt_encrypted_pms lead to diff being set to a value that depended on some uninitialized unsigned char and size_t values. This didn't affect the behavior of the program (assuming an implementation with no trap values for size_t) because all that matters is whether diff is 0, but Valgrind rightfully complained about the use of uninitialized memory. Behave nicely and initialize the offending memory. --- library/ssl_srv.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 2b25e091fb..b49b9e1ddf 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3513,6 +3513,15 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, size_t i, peer_pmslen; unsigned int diff; + /* In case of a failure in decryption, the decryption may write less than + * 2 bytes of output, but we always read the first two bytes. It doesn't + * matter in the end because diff will be nonzero in that case due to + * peer_pmslen being less than 48, and we only care whether diff is 0. + * But do initialize peer_pms for robustness anyway. This also makes + * memory analyzers happy (don't access uninitialized memory, even + * if it's an unsigned char). */ + peer_pms[0] = peer_pms[1] = ~0; + ret = ssl_decrypt_encrypted_pms( ssl, p, end, peer_pms, &peer_pmslen, From c03059db42e7e1bc2c1c86615fd802b3a7a4de8b Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Thu, 14 Jun 2018 07:35:11 +0200 Subject: [PATCH 0462/1100] Simplify code in mbedtls_x509_csr_parse --- library/x509_csr.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/library/x509_csr.c b/library/x509_csr.c index 8bb7f3363b..40a0f20613 100644 --- a/library/x509_csr.c +++ b/library/x509_csr.c @@ -278,32 +278,24 @@ int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, siz return( MBEDTLS_ERR_X509_BAD_INPUT_DATA ); #if defined(MBEDTLS_PEM_PARSE_C) - mbedtls_pem_init( &pem ); - /* Avoid calling mbedtls_pem_read_buffer() on non-null-terminated string */ - if( buf[buflen - 1] != '\0' ) - ret = MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT; - else + if( buf[buflen - 1] == '\0' ) { + mbedtls_pem_init( &pem ); ret = mbedtls_pem_read_buffer( &pem, "-----BEGIN CERTIFICATE REQUEST-----", "-----END CERTIFICATE REQUEST-----", buf, NULL, 0, &use_len ); - if( ret == 0 ) - { - /* - * Was PEM encoded, parse the result - */ - ret = mbedtls_x509_csr_parse_der( csr, pem.buf, pem.buflen ); + if( ret == 0 ) + /* + * Was PEM encoded, parse the result + */ + ret = mbedtls_x509_csr_parse_der( csr, pem.buf, pem.buflen ); + mbedtls_pem_free( &pem ); - return( ret ); + if( ret != MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT ) + return( ret ); } - else if( ret != MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT ) - { - mbedtls_pem_free( &pem ); - return( ret ); - } - else #endif /* MBEDTLS_PEM_PARSE_C */ return( mbedtls_x509_csr_parse_der( csr, buf, buflen ) ); } From 2ff0e52087d14c4d45b5e1b4db066f878106b350 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 14 Jun 2018 09:57:07 +0100 Subject: [PATCH 0463/1100] Fix missing preprocessor condition in AES self-test The AES OFB self-test made use of a variable `offset` but failed to have a preprocessor condition around it, so unless CTR and CBC were enabled, the variable would be undeclared. --- library/aes.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/aes.c b/library/aes.c index e27e40a86b..4f3351faf5 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1397,7 +1397,8 @@ int mbedtls_aes_self_test( int verbose ) #if defined(MBEDTLS_CIPHER_MODE_CBC) unsigned char prv[16]; #endif -#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_CFB) +#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_CFB) || \ + defined(MBEDTLS_CIPHER_MODE_OFB) size_t offset; #endif #if defined(MBEDTLS_CIPHER_MODE_CTR) From e5cd86874e57d282d5cec3a9f70091cf4aabe50a Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 14 Jun 2018 10:30:19 +0100 Subject: [PATCH 0464/1100] Add ChangeLog entry for PR #1555 Adds ChangeLog entry for PR #1555, 'Only redefine _WIN32_WINNT macro when < 0x0501' --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8061792ae2..cc1e51ca6a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,8 @@ Features Bugfix * Fix the cert_write example to handle certificates signed with elliptic curves as well as RSA. Fixes #777 found by dbedev. + * Fix for redefinition of _WIN32_WINNT to avoid overriding a definition + used by user applications. Found and fixed by Fabio Alessandrelli. Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. From ff2f493432875f345e631188f001c43b56256203 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Thu, 14 Jun 2018 11:38:50 +0100 Subject: [PATCH 0465/1100] config: List cipher modes in alphabetical order Keeping the cipher modes list in alphabetical order makes it easier to find things. Move OFB and XTS to their appropriate locations in the list. --- include/mbedtls/config.h | 28 ++++++++++++++-------------- library/version_features.c | 12 ++++++------ 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index e90893f8ae..be83e7fd35 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -501,20 +501,6 @@ */ #define MBEDTLS_CIPHER_MODE_CBC -/** - * \def MBEDTLS_CIPHER_MODE_XTS - * - * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES. - */ -#define MBEDTLS_CIPHER_MODE_XTS - -/** - * \def MBEDTLS_CIPHER_MODE_OFB - * - * Enable Output Feedback mode (OFB) for symmetric ciphers. - */ -#define MBEDTLS_CIPHER_MODE_OFB - /** * \def MBEDTLS_CIPHER_MODE_CFB * @@ -529,6 +515,20 @@ */ #define MBEDTLS_CIPHER_MODE_CTR +/** + * \def MBEDTLS_CIPHER_MODE_OFB + * + * Enable Output Feedback mode (OFB) for symmetric ciphers. + */ +#define MBEDTLS_CIPHER_MODE_OFB + +/** + * \def MBEDTLS_CIPHER_MODE_XTS + * + * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES. + */ +#define MBEDTLS_CIPHER_MODE_XTS + /** * \def MBEDTLS_CIPHER_NULL_CIPHER * diff --git a/library/version_features.c b/library/version_features.c index 99fb1fe181..08f14e7153 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -249,18 +249,18 @@ static const char *features[] = { #if defined(MBEDTLS_CIPHER_MODE_CBC) "MBEDTLS_CIPHER_MODE_CBC", #endif /* MBEDTLS_CIPHER_MODE_CBC */ -#if defined(MBEDTLS_CIPHER_MODE_XTS) - "MBEDTLS_CIPHER_MODE_XTS", -#endif /* MBEDTLS_CIPHER_MODE_XTS */ -#if defined(MBEDTLS_CIPHER_MODE_OFB) - "MBEDTLS_CIPHER_MODE_OFB", -#endif /* MBEDTLS_CIPHER_MODE_OFB */ #if defined(MBEDTLS_CIPHER_MODE_CFB) "MBEDTLS_CIPHER_MODE_CFB", #endif /* MBEDTLS_CIPHER_MODE_CFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) "MBEDTLS_CIPHER_MODE_CTR", #endif /* MBEDTLS_CIPHER_MODE_CTR */ +#if defined(MBEDTLS_CIPHER_MODE_OFB) + "MBEDTLS_CIPHER_MODE_OFB", +#endif /* MBEDTLS_CIPHER_MODE_OFB */ +#if defined(MBEDTLS_CIPHER_MODE_XTS) + "MBEDTLS_CIPHER_MODE_XTS", +#endif /* MBEDTLS_CIPHER_MODE_XTS */ #if defined(MBEDTLS_CIPHER_NULL_CIPHER) "MBEDTLS_CIPHER_NULL_CIPHER", #endif /* MBEDTLS_CIPHER_NULL_CIPHER */ From 03af7f6ae7f000d91035c98e05ed3297b503c627 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 13:03:29 +0200 Subject: [PATCH 0466/1100] Change boolean bitfield to unsigned Reminder to self: 1 is not a valid value in a 1-bit bitfield. It's undefined behavior and gcc -ansi -pedantic helpfully complains about it. --- include/mbedtls/ssl_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 506aff395b..bbaf3564f6 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -310,7 +310,7 @@ struct mbedtls_ssl_handshake_params #endif #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) - int async_in_progress : 1; /*!< an asynchronous operation is in progress */ + unsigned int async_in_progress : 1; /*!< an asynchronous operation is in progress */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) From 6331d786752ea3b2b98bbd98bda4b7786fc2f27f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 13:27:43 +0200 Subject: [PATCH 0467/1100] Don't use the printf format %zd We target C89 libc, so don't use %zd or %zu. Just use %u, and make slot numbers `unsigned` for simplicity. --- programs/ssl/ssl_server2.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 272eecdc5e..9a226e4e43 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -933,7 +933,7 @@ static const char *const ssl_async_operation_names[] = typedef struct { - size_t slot; + unsigned slot; ssl_async_operation_type_t operation_type; mbedtls_md_type_t md_alg; unsigned char input[SSL_ASYNC_INPUT_MAX_SIZE]; @@ -950,7 +950,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, { ssl_async_key_context_t *config_data = mbedtls_ssl_conf_get_async_config_data( ssl->conf ); - size_t slot; + unsigned slot; ssl_async_operation_context_t *ctx = NULL; const char *op_name = ssl_async_operation_names[op_type]; @@ -971,7 +971,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, op_name ); return( MBEDTLS_ERR_SSL_HW_ACCEL_FALLTHROUGH ); } - mbedtls_printf( "Async %s callback: using key slot %zd, delay=%u.\n", + mbedtls_printf( "Async %s callback: using key slot %u, delay=%u.\n", op_name, slot, config_data->slots[slot].delay ); if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_START ) @@ -1036,7 +1036,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, if( ctx->remaining_delay > 0 ) { --ctx->remaining_delay; - mbedtls_printf( "Async resume (slot %zd): call %u more times.\n", + mbedtls_printf( "Async resume (slot %u): call %u more times.\n", ctx->slot, ctx->remaining_delay ); return( MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ); } @@ -1059,7 +1059,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, config_data->f_rng, config_data->p_rng ); break; default: - mbedtls_printf( "Async resume (slot %zd): unknown operation type %ld. This shouldn't happen.\n", + mbedtls_printf( "Async resume (slot %u): unknown operation type %ld. This shouldn't happen.\n", ctx->slot, (long) ctx->operation_type ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); break; @@ -1072,7 +1072,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } - mbedtls_printf( "Async resume (slot %zd): %s done, status=%d.\n", + mbedtls_printf( "Async resume (slot %u): %s done, status=%d.\n", ctx->slot, op_name, ret ); mbedtls_free( ctx ); return( ret ); From 4d9ec4dcf77a15c1da64b55f7f70288ebcce7581 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 14:33:43 +0200 Subject: [PATCH 0468/1100] Fix uninitialized variable in ssl_server2 --- programs/ssl/ssl_server2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 9a226e4e43..bf50f1d50e 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1223,6 +1223,9 @@ int main( int argc, char *argv[] ) mbedtls_pk_init( &pkey ); mbedtls_x509_crt_init( &srvcert2 ); mbedtls_pk_init( &pkey2 ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + memset( &ssl_async_keys, 0, sizeof( ssl_async_keys ) ); +#endif #endif #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_FS_IO) mbedtls_dhm_init( &dhm ); From 37d417561d855f81f5ff15b3d71b9757a50f5f65 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 15:06:56 +0200 Subject: [PATCH 0469/1100] Add test case for SSL async resume after resume Add a test case for SSL asynchronous signature where f_async_resume is called twice. Verify that f_async_sign_start is only called once. This serves as a non-regression test for a bug where f_async_sign_start was only called once, which turned out to be due to a stale build artifacts with mismatched numerical values of MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS. --- tests/ssl-opt.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 6261225b23..bf7d914b28 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4088,6 +4088,18 @@ run_test "SSL async private: sign, delay=1" \ -s "Async resume (slot [0-9]): call 0 more times." \ -s "Async resume (slot [0-9]): sign done, status=0" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: sign, delay=2" \ + "$P_SRV \ + async_operations=s async_private_delay1=2 async_private_delay2=2" \ + "$P_CLI" \ + 0 \ + -s "Async sign callback: using key slot " \ + -U "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): call 1 more times." \ + -s "Async resume (slot [0-9]): call 0 more times." \ + -s "Async resume (slot [0-9]): sign done, status=0" + # Test that the async callback correctly signs the 36-byte hash of TLS 1.0/1.1 # with RSA PKCS#1v1.5 as used in TLS 1.0/1.1. requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE From 94e153af775e2531476a89a9bbc9e02da3c4500f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 26 Apr 2018 17:57:37 +0200 Subject: [PATCH 0470/1100] Improve documentation of the async callback's crypto parameters --- include/mbedtls/ssl.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 84bc63ba59..097b86a3cc 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -594,9 +594,16 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * from step 2, with `digestAlgorithm` obtained by calling * mbedtls_oid_get_oid_by_md() on \p md_alg. * + * \note For ECDSA signatures, the output format is the DER encoding + * `Ecdsa-Sig-Value` defined in + * [RFC 4492 section 5.4](https://tools.ietf.org/html/rfc4492#section-5.4). + * * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. + * This is one of the pointers passed to + * mbedtls_ssl_conf_own_cert() when configuring the SSL + * connection. * \param md_alg Hash algorithm. * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. @@ -646,9 +653,21 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * store an operation context for later retrieval * by the resume callback. * + * \warning RSA decryption as used in TLS is subject to a potential + * timing side channel attack first discovered by Bleichenbacher + * in 1998. This attack can be remotely exploitable + * in practice. To avoid this attack, you must ensure that + * if the callback performs an RSA decryption, the time it + * takes to execute and return the result does not depend + * on whether the RSA decryption succeeded or reported + * invalid padding. + * * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. + * This is one of the pointers passed to + * mbedtls_ssl_conf_own_cert() when configuring the SSL + * connection. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. * \param input_len Size of the \p input buffer in bytes. From 20e2bdf4b03e88055dc32f93cdcc99ac589e70fd Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 27 Apr 2018 11:50:14 +0200 Subject: [PATCH 0471/1100] SSL async tests: tighten a few log checks in some test cases --- tests/ssl-opt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index bf7d914b28..cf2c168755 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4237,6 +4237,7 @@ run_test "SSL async private: error in start" \ 1 \ -s "Async sign callback: injected error" \ -S "Async resume" \ + -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE @@ -4259,6 +4260,7 @@ run_test "SSL async private: error in resume" \ 1 \ -s "Async sign callback: using key slot " \ -s "Async resume callback: sign done but injected error" \ + -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE @@ -4295,6 +4297,7 @@ run_test "SSL async private: cancel after start then fall back to transparent [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ + -s "Async sign callback: using key slot 0" -S "Async resume" \ -s "Async cancel" \ -s "! mbedtls_ssl_handshake returned" \ From 07981585d3146f01f7a71d80a7cde2b52a4ef1d7 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:02:45 +0200 Subject: [PATCH 0472/1100] Fix missing continuation indicator in ssl-opt.sh --- tests/ssl-opt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index cf2c168755..597a5f1c11 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4297,7 +4297,7 @@ run_test "SSL async private: cancel after start then fall back to transparent [ \$? -eq 1 ] && $P_CLI force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ - -s "Async sign callback: using key slot 0" + -s "Async sign callback: using key slot 0" \ -S "Async resume" \ -s "Async cancel" \ -s "! mbedtls_ssl_handshake returned" \ From d6fbfde994f7cc3a72078c328160bde669131a82 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:23:56 +0200 Subject: [PATCH 0473/1100] ssl_async_set_key: detect if ctx->slots overflows --- programs/ssl/ssl_server2.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index bf50f1d50e..838f41d7cc 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -904,15 +904,18 @@ typedef struct void *p_rng; } ssl_async_key_context_t; -void ssl_async_set_key( ssl_async_key_context_t *ctx, +int ssl_async_set_key( ssl_async_key_context_t *ctx, mbedtls_x509_crt *cert, mbedtls_pk_context *pk, unsigned delay ) { + if( ctx->slots_used >= sizeof( ctx->slots ) / sizeof( *ctx->slots ) ) + return( -1 ); ctx->slots[ctx->slots_used].cert = cert; ctx->slots[ctx->slots_used].pk = pk; ctx->slots[ctx->slots_used].delay = delay; ++ctx->slots_used; + return( 0 ); } #define SSL_ASYNC_INPUT_MAX_SIZE 512 @@ -2297,8 +2300,14 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay1 >= 0 ) { - ssl_async_set_key( &ssl_async_keys, &srvcert, pk, - opt.async_private_delay1 ); + ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, + opt.async_private_delay1 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } pk = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ @@ -2314,8 +2323,14 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, - opt.async_private_delay2 ); + ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } pk = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ From 166ce748cfbc1f22f181a381dc32df4d1e0ea8cd Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 10:30:49 +0200 Subject: [PATCH 0474/1100] SSL async callback: cert is not always from mbedtls_ssl_conf_own_cert The certificate passed to async callbacks may not be the one set by mbedtls_ssl_conf_own_cert. For example, when using an SNI callback, it's whatever the callback is using. Document this, and add a test case (and code sample) with SNI. --- include/mbedtls/ssl.h | 14 ++++++++++---- programs/ssl/ssl_server2.c | 25 ++++++++++++++++++++++--- tests/ssl-opt.sh | 14 ++++++++++++++ 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 097b86a3cc..b199e2ea6d 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -601,9 +601,12 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. - * This is one of the pointers passed to + * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL - * connection. + * connection. However, if other callbacks are used, this + * property may not hold. For example, if an SNI callback + * is registered with mbedtls_ssl_conf_sni(), then + * this callback determines what certificate is used. * \param md_alg Hash algorithm. * \param hash Buffer containing the hash. This buffer is * no longer valid when the function returns. @@ -665,9 +668,12 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * \param ssl The SSL connection instance. It should not be * modified other than via mbedtls_ssl_async_set_data(). * \param cert Certificate containing the public key. - * This is one of the pointers passed to + * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL - * connection. + * connection. However, if other callbacks are used, this + * property may not hold. For example, if an SNI callback + * is registered with mbedtls_ssl_conf_sni(), then + * this callback determines what certificate is used. * \param input Buffer containing the input ciphertext. This buffer * is no longer valid when the function returns. * \param input_len Size of the \p input buffer in bytes. diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 838f41d7cc..b1f2382cbc 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -204,7 +204,7 @@ int main( void ) #define USAGE_SSL_ASYNC \ " async_operations=%%c... d=decrypt, s=sign (default: -=off)\n" \ " async_private_delay1=%%d Asynchronous delay for key_file or preloaded key\n" \ - " async_private_delay2=%%d Asynchronous delay for key_file2\n" \ + " async_private_delay2=%%d Asynchronous delay for key_file2 and sni\n" \ " default: -1 (not asynchronous)\n" \ " async_private_error=%%d Async callback error injection (default=0=none,\n" \ " 1=start, 2=cancel, 3=resume, negative=first time only)" @@ -897,7 +897,7 @@ typedef enum { typedef struct { - ssl_async_key_slot_t slots[2]; + ssl_async_key_slot_t slots[3]; /* key, key2, sni */ size_t slots_used; ssl_async_inject_error_t inject_error; int (*f_rng)(void *, unsigned char *, size_t); @@ -965,7 +965,9 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, for( slot = 0; slot < config_data->slots_used; slot++ ) { - if( config_data->slots[slot].cert == cert ) + if( memcmp( &config_data->slots[slot].cert->pk, + &cert->pk, + sizeof( cert->pk ) ) == 0 ) break; } if( slot == config_data->slots_used ) @@ -2376,7 +2378,24 @@ int main( int argc, char *argv[] ) #if defined(SNI_OPTION) if( opt.sni != NULL ) + { mbedtls_ssl_conf_sni( &conf, sni_callback, sni_info ); +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + if( opt.async_private_delay2 >= 0 ) + { + ret = ssl_async_set_key( &ssl_async_keys, + sni_info->cert, sni_info->key, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } + sni_info->key = NULL; + } +#endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ + } #endif #if defined(MBEDTLS_ECP_C) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 597a5f1c11..6afca2d12a 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4112,6 +4112,20 @@ run_test "SSL async private: sign, RSA, TLS 1.1" \ -s "Async sign callback: using key slot " \ -s "Async resume (slot [0-9]): sign done, status=0" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: sign, SNI" \ + "$P_SRV debug_level=3 \ + async_operations=s async_private_delay1=0 async_private_delay2=0 \ + crt_file=data_files/server5.crt key_file=data_files/server5.key \ + sni=localhost,data_files/server2.crt,data_files/server2.key,-,-,-,polarssl.example,data_files/server1-nospace.crt,data_files/server1.key,-,-,-" \ + "$P_CLI server_name=polarssl.example" \ + 0 \ + -s "Async sign callback: using key slot " \ + -s "Async resume (slot [0-9]): sign done, status=0" \ + -s "parse ServerName extension" \ + -c "issuer name *: C=NL, O=PolarSSL, CN=PolarSSL Test CA" \ + -c "subject name *: C=NL, O=PolarSSL, CN=polarssl.example" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: decrypt, delay=0" \ "$P_SRV \ From 02b86d0415b086dce83ca65d7f93203c11be803f Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 11:54:14 +0200 Subject: [PATCH 0475/1100] Fix copypasta in the async callback documentation --- include/mbedtls/ssl.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index b199e2ea6d..b7dc98b5b9 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -568,9 +568,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \p ssl and \p cert are - * guaranteed to remain valid as long as the SSL - * configuration remains valid. On the other hand, this + * The parameters \p ssl and \p cert are guaranteed to remain + * valid throughout the handshake. On the other hand, this * function must save the contents of \p hash if the value * is needed for later processing, because the \p hash buffer * is no longer valid after this function returns. @@ -588,7 +587,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * encoding, treating \p hash as the DigestInfo to be * padded. In other words, apply EMSA-PKCS1-v1_5 starting * from step 3, with `T = hash` and `tLen = hash_len`. - * - If \p md_alg is #MBEDTLS_MD_NONE, apply the PKCS#1 v1.5 + * - If `md_alg != MBEDTLS_MD_NONE`, apply the PKCS#1 v1.5 * encoding, treating \p hash as the hash to be encoded and * padded. In other words, apply EMSA-PKCS1-v1_5 starting * from step 2, with `digestAlgorithm` obtained by calling @@ -645,9 +644,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * The parameters \p ssl and \p cert are - * guaranteed to remain valid as long as the SSL - * configuration remains valid. On the other hand, this + * The parameters \p ssl and \p cert are guaranteed to remain + * valid throughout the handshake. On the other hand, this * function must save the contents of \p input if the value * is needed for later processing, because the \p input buffer * is no longer valid after this function returns. From a668c601868932c27dbc73d705248cdf8d07f924 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 11:54:39 +0200 Subject: [PATCH 0476/1100] Rename mbedtls_ssl_async_{get,set}_data for clarity Rename to mbedtls_ssl_get_async_operation_data and mbedtls_ssl_set_async_operation_data so that they're about "async operation data" and not about some not-obvious "data". --- include/mbedtls/ssl.h | 44 +++++++++++++++++++++----------------- library/ssl_srv.c | 4 ++-- library/ssl_tls.c | 4 ++-- programs/ssl/ssl_server2.c | 6 +++--- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index b7dc98b5b9..ec9018a1f9 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -574,8 +574,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * is needed for later processing, because the \p hash buffer * is no longer valid after this function returns. * - * This function may call mbedtls_ssl_async_set_data() to - * store an operation context for later retrieval + * This function may call mbedtls_ssl_set_async_operation_data() + * to store an operation context for later retrieval * by the resume callback. * * \note For RSA signatures, this function must produce output @@ -598,7 +598,8 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * [RFC 4492 section 5.4](https://tools.ietf.org/html/rfc4492#section-5.4). * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param cert Certificate containing the public key. * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL @@ -650,8 +651,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * is needed for later processing, because the \p input buffer * is no longer valid after this function returns. * - * This function may call mbedtls_ssl_async_set_data() to - * store an operation context for later retrieval + * This function may call mbedtls_ssl_set_async_operation_data() + * to store an operation context for later retrieval * by the resume callback. * * \warning RSA decryption as used in TLS is subject to a potential @@ -664,7 +665,8 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * invalid padding. * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param cert Certificate containing the public key. * In simple cases, this is one of the pointers passed to * mbedtls_ssl_conf_own_cert() when configuring the SSL @@ -709,13 +711,14 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * does not wait for the operation to complete. This allows * the handshake step to be non-blocking. * - * This function may call mbedtls_ssl_async_get_data() to - * retrieve an operation context set by the start callback. - * It may call mbedtls_ssl_async_set_data() to modify this - * context. + * This function may call mbedtls_ssl_get_async_operation_data() + * to retrieve an operation context set by the start callback. + * It may call mbedtls_ssl_set_async_operation_data() to modify + * this context. * * \param ssl The SSL connection instance. It should not be - * modified other than via mbedtls_ssl_async_set_data(). + * modified other than via + * mbedtls_ssl_set_async_operation_data(). * \param output Buffer containing the output (signature or decrypted * data) on success. * \param output_len On success, number of bytes written to \p output. @@ -744,8 +747,8 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, * This callback is called if an SSL connection is closed * while an asynchronous operation is in progress. * - * This function may call mbedtls_ssl_async_get_data() to - * retrieve an operation context set by the start callback. + * This function may call mbedtls_ssl_get_async_operation_data() + * to retrieve an operation context set by the start callback. * * \param ssl The SSL connection instance. It should not be * modified. @@ -1582,11 +1585,12 @@ void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ); * \param ssl The SSL context to access. * * \return The asynchronous operation user context that was last - * set during the current handshake. If mbedtls_ssl_set_data() - * has not been called during the current handshake yet, - * this function returns \c NULL. + * set during the current handshake. If + * mbedtls_ssl_set_async_operation_data() has not yet been + * called during the current handshake, this function returns + * \c NULL. */ -void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ); +void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ); /** * \brief Retrieve the asynchronous operation user context. @@ -1596,10 +1600,10 @@ void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ); * * \param ssl The SSL context to access. * \param ctx The new value of the asynchronous operation user context. - * Call mbedtls_ssl_get_data() later during the same handshake - * to retrieve this value. + * Call mbedtls_ssl_get_async_operation_data() later during the + * same handshake to retrieve this value. */ -void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, +void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, void *ctx ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 5439f6d617..2b25e091fb 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2852,7 +2852,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->async_in_progress = 0; - mbedtls_ssl_async_set_data( ssl, NULL ); + mbedtls_ssl_set_async_operation_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_resume_server_key_exchange", ret ); return( ret ); @@ -3406,7 +3406,7 @@ static int ssl_resume_decrypt_pms( mbedtls_ssl_context *ssl, if( ret != MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS ) { ssl->handshake->async_in_progress = 0; - mbedtls_ssl_async_set_data( ssl, NULL ); + mbedtls_ssl_set_async_operation_data( ssl, NULL ); } MBEDTLS_SSL_DEBUG_RET( 2, "ssl_decrypt_encrypted_pms", ret ); return( ret ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 04f34587da..3819b6f7f2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6499,7 +6499,7 @@ void *mbedtls_ssl_conf_get_async_config_data( const mbedtls_ssl_config *conf ) return( conf->p_async_config_data ); } -void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ) +void *mbedtls_ssl_get_async_operation_data( const mbedtls_ssl_context *ssl ) { if( ssl->handshake == NULL ) return( NULL ); @@ -6507,7 +6507,7 @@ void *mbedtls_ssl_async_get_data( const mbedtls_ssl_context *ssl ) return( ssl->handshake->user_async_ctx ); } -void mbedtls_ssl_async_set_data( mbedtls_ssl_context *ssl, +void mbedtls_ssl_set_async_operation_data( mbedtls_ssl_context *ssl, void *ctx ) { if( ssl->handshake != NULL ) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index b1f2382cbc..876f8156c5 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -997,7 +997,7 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, memcpy( ctx->input, input, input_len ); ctx->input_len = input_len; ctx->remaining_delay = config_data->slots[slot].delay; - mbedtls_ssl_async_set_data( ssl, ctx ); + mbedtls_ssl_set_async_operation_data( ssl, ctx ); if( ctx->remaining_delay == 0 ) return( 0 ); @@ -1031,7 +1031,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, size_t *output_len, size_t output_size ) { - ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + ssl_async_operation_context_t *ctx = mbedtls_ssl_get_async_operation_data( ssl ); ssl_async_key_context_t *config_data = mbedtls_ssl_conf_get_async_config_data( ssl->conf ); ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; @@ -1085,7 +1085,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, static void ssl_async_cancel( mbedtls_ssl_context *ssl ) { - ssl_async_operation_context_t *ctx = mbedtls_ssl_async_get_data( ssl ); + ssl_async_operation_context_t *ctx = mbedtls_ssl_get_async_operation_data( ssl ); mbedtls_printf( "Async cancel callback.\n" ); mbedtls_free( ctx ); } From 3dae1cfa3ab0e4c163b5a0f76e2708c000b7bdcb Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 12:07:56 +0200 Subject: [PATCH 0477/1100] Async callback: use mbedtls_pk_check_pair to compare keys In the current test code, the object that is used as a public key in the certificate also contains a private key. However this is because of the way the stest code is built and does not demonstrate the API in a useful way. Use mbedtls_pk_check_pair, which is not what real-world code would do (since the private key would typically be in an external cryptoprocessor) but is a more representative placeholder. --- programs/ssl/ssl_server2.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 876f8156c5..d550b7c4ce 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -963,11 +963,14 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); } + /* Look for a private key that matches the public key in cert. + * Since this test code has the private key inside Mbed TLS, + * we call mbedtls_pk_check_pair to match a private key with the + * public key. */ for( slot = 0; slot < config_data->slots_used; slot++ ) { - if( memcmp( &config_data->slots[slot].cert->pk, - &cert->pk, - sizeof( cert->pk ) ) == 0 ) + if( mbedtls_pk_check_pair( &cert->pk, + config_data->slots[slot].pk ) == 0 ) break; } if( slot == config_data->slots_used ) From 7457933a044ba8c4552490b84d6fde0b49fea1ff Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 13:57:45 +0200 Subject: [PATCH 0478/1100] SSL async callbacks documentation: clarify resource cleanup Clarify when resume must clean up resources and when cancel is called. --- include/mbedtls/ssl.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index ec9018a1f9..a839e84d88 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -576,7 +576,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * * This function may call mbedtls_ssl_set_async_operation_data() * to store an operation context for later retrieval - * by the resume callback. + * by the resume or cancel callback. * * \note For RSA signatures, this function must produce output * that is consistent with PKCS#1 v1.5 in the same way as @@ -653,7 +653,7 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * * This function may call mbedtls_ssl_set_async_operation_data() * to store an operation context for later retrieval - * by the resume callback. + * by the resume or cancel callback. * * \warning RSA decryption as used in TLS is subject to a potential * timing side channel attack first discovered by Bleichenbacher @@ -716,6 +716,10 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * It may call mbedtls_ssl_set_async_operation_data() to modify * this context. * + * Note that when this function returns a status other than + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, it must free any + * resources associated with the operation. + * * \param ssl The SSL connection instance. It should not be * modified other than via * mbedtls_ssl_set_async_operation_data(). @@ -745,7 +749,12 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, * \brief Callback type: cancel external operation. * * This callback is called if an SSL connection is closed - * while an asynchronous operation is in progress. + * while an asynchronous operation is in progress. Note that + * this callback is not called if the + * ::mbedtls_ssl_async_resume_t callback has run and has + * returned a value other than + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, since in that case + * the asynchronous operation has already completed. * * This function may call mbedtls_ssl_get_async_operation_data() * to retrieve an operation context set by the start callback. From ef30742a27ea37ef9bbeef457a6c2e3469046ec6 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 16:37:03 +0200 Subject: [PATCH 0479/1100] Clarify "as directed here" in SSL async callback documentation --- include/mbedtls/ssl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index a839e84d88..606d9c2f5a 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -624,7 +624,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item; * propagated up the call chain. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -690,7 +690,7 @@ typedef int mbedtls_ssl_async_sign_t( mbedtls_ssl_context *ssl, * propagated up the call chain. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, mbedtls_x509_crt *cert, @@ -738,7 +738,7 @@ typedef int mbedtls_ssl_async_decrypt_t( mbedtls_ssl_context *ssl, * The SSL handshake is aborted. The callback should * use \c MBEDTLS_ERR_PK_xxx error codes, and must not * use \c MBEDTLS_ERR_SSL_xxx error codes except as - * directed here. + * directed in the documentation of this callback. */ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, unsigned char *output, From f5a9996088582742ac60030d7a1119a7c28ecfaf Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Apr 2018 16:37:23 +0200 Subject: [PATCH 0480/1100] ssl_server2: get op_name from context in ssl_async_resume as well --- programs/ssl/ssl_server2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index d550b7c4ce..ac3d1b1c7b 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1039,7 +1039,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, mbedtls_ssl_conf_get_async_config_data( ssl->conf ); ssl_async_key_slot_t *key_slot = &config_data->slots[ctx->slot]; int ret; - const char *op_name = NULL; + const char *op_name; if( ctx->remaining_delay > 0 ) { @@ -1052,14 +1052,12 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, switch( ctx->operation_type ) { case ASYNC_OP_DECRYPT: - op_name = "decrypt"; ret = mbedtls_pk_decrypt( key_slot->pk, ctx->input, ctx->input_len, output, output_len, output_size, config_data->f_rng, config_data->p_rng ); break; case ASYNC_OP_SIGN: - op_name = "sign"; ret = mbedtls_pk_sign( key_slot->pk, ctx->md_alg, ctx->input, ctx->input_len, @@ -1073,6 +1071,8 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, break; } + op_name = ssl_async_operation_names[ctx->operation_type]; + if( config_data->inject_error == SSL_ASYNC_INJECT_ERROR_RESUME ) { mbedtls_printf( "Async resume callback: %s done but injected error\n", From 2636fade52491b07a1fae3c8a9099ea3990f6c04 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 12 Jun 2018 14:17:39 +0200 Subject: [PATCH 0481/1100] ssl_async_resume: free the operation context on error --- programs/ssl/ssl_server2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index ac3d1b1c7b..a7b019c7fe 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1077,6 +1077,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, { mbedtls_printf( "Async resume callback: %s done but injected error\n", op_name ); + mbedtls_free( ctx ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); } From e2479890611c458e6f6c8729438f1a9a9df4d266 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:06:51 +0200 Subject: [PATCH 0482/1100] SNI + SSL async callback: make all keys async When testing async callbacks with SNI, make all the keys async, not just the first one. Otherwise the test is fragile with respect to whether a key is used directly or through the async callbacks. --- programs/ssl/ssl_server2.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index a7b019c7fe..ae50b3d313 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -897,7 +897,7 @@ typedef enum { typedef struct { - ssl_async_key_slot_t slots[3]; /* key, key2, sni */ + ssl_async_key_slot_t slots[4]; /* key, key2, sni1, sni2 */ size_t slots_used; ssl_async_inject_error_t inject_error; int (*f_rng)(void *, unsigned char *, size_t); @@ -2387,16 +2387,20 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, - sni_info->cert, sni_info->key, - opt.async_private_delay2 ); - if( ret < 0 ) + sni_entry *cur; + for( cur = sni_info; cur != NULL; cur = cur->next ) { - mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", - ret ); - goto exit; + ret = ssl_async_set_key( &ssl_async_keys, + cur->cert, cur->key, + opt.async_private_delay2 ); + if( ret < 0 ) + { + mbedtls_printf( " Test error: ssl_async_set_key failed (%d)\n", + ret ); + goto exit; + } + cur->key = NULL; } - sni_info->key = NULL; } #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ } From 4481744538f9bad09f73090678bd071fdc430e1a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:09:28 +0200 Subject: [PATCH 0483/1100] Fix memory leak in ssl_server2 with SNI + async callback In ssl_server2, the private key objects are normally local variables of the main function. However this does not hold for private keys in the SNI configuration. When async callbacks are used, the test code transfers the ownership of the private keys to the async callbacks. Therefore the test code must free the SNI private keys through the async callbacks (but it must not free the straight private keys this way since they are not even heap-allocated). --- programs/ssl/ssl_server2.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index ae50b3d313..81041c44d9 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -882,9 +882,10 @@ static int mbedtls_status_is_ssl_in_progress( int ret ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) typedef struct { - mbedtls_x509_crt *cert; - mbedtls_pk_context *pk; - unsigned delay; + mbedtls_x509_crt *cert; /*!< Certificate corresponding to the key */ + mbedtls_pk_context *pk; /*!< Private key */ + unsigned delay; /*!< Number of resume steps to go through */ + unsigned pk_owned : 1; /*!< Whether to free the pk object on exit */ } ssl_async_key_slot_t; typedef enum { @@ -905,15 +906,17 @@ typedef struct } ssl_async_key_context_t; int ssl_async_set_key( ssl_async_key_context_t *ctx, - mbedtls_x509_crt *cert, - mbedtls_pk_context *pk, - unsigned delay ) + mbedtls_x509_crt *cert, + mbedtls_pk_context *pk, + int pk_take_ownership, + unsigned delay ) { if( ctx->slots_used >= sizeof( ctx->slots ) / sizeof( *ctx->slots ) ) return( -1 ); ctx->slots[ctx->slots_used].cert = cert; ctx->slots[ctx->slots_used].pk = pk; ctx->slots[ctx->slots_used].delay = delay; + ctx->slots[ctx->slots_used].pk_owned = pk_take_ownership; ++ctx->slots_used; return( 0 ); } @@ -1067,6 +1070,7 @@ static int ssl_async_resume( mbedtls_ssl_context *ssl, default: mbedtls_printf( "Async resume (slot %u): unknown operation type %ld. This shouldn't happen.\n", ctx->slot, (long) ctx->operation_type ); + mbedtls_free( ctx ); return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); break; } @@ -2306,7 +2310,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay1 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, + ret = ssl_async_set_key( &ssl_async_keys, &srvcert, pk, 0, opt.async_private_delay1 ); if( ret < 0 ) { @@ -2329,7 +2333,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_ASYNC_PRIVATE) if( opt.async_private_delay2 >= 0 ) { - ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, + ret = ssl_async_set_key( &ssl_async_keys, &srvcert2, pk, 0, opt.async_private_delay2 ); if( ret < 0 ) { @@ -2391,7 +2395,7 @@ int main( int argc, char *argv[] ) for( cur = sni_info; cur != NULL; cur = cur->next ) { ret = ssl_async_set_key( &ssl_async_keys, - cur->cert, cur->key, + cur->cert, cur->key, 1, opt.async_private_delay2 ); if( ret < 0 ) { @@ -3018,6 +3022,17 @@ exit: mbedtls_x509_crt_free( &srvcert2 ); mbedtls_pk_free( &pkey2 ); #endif +#if defined(MBEDTLS_SSL_ASYNC_PRIVATE) + for( i = 0; (size_t) i < ssl_async_keys.slots_used; i++ ) + { + if( ssl_async_keys.slots[i].pk_owned ) + { + mbedtls_pk_free( ssl_async_keys.slots[i].pk ); + mbedtls_free( ssl_async_keys.slots[i].pk ); + ssl_async_keys.slots[i].pk = NULL; + } + } +#endif #if defined(SNI_OPTION) sni_free( sni_info ); #endif From c306a059d18f002b7701d1f71a70077f1dec922a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 12 Jun 2018 15:06:40 +0200 Subject: [PATCH 0484/1100] SSL async tests: add a few test cases for error in decrypt The code paths in the library are different for decryption and for signature. Improve the test coverage by doing some error path tests for decryption in addition to signature. --- tests/ssl-opt.sh | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 6afca2d12a..3ea56db8ee 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4243,7 +4243,7 @@ run_test "SSL async private: fall back to transparent key" \ -s "Async sign callback: no key matches this certificate." requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in start" \ +run_test "SSL async private: sign, error in start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=1" \ @@ -4255,7 +4255,7 @@ run_test "SSL async private: error in start" \ -s "! mbedtls_ssl_handshake returned" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: cancel after start" \ +run_test "SSL async private: sign, cancel after start" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=2" \ @@ -4266,7 +4266,7 @@ run_test "SSL async private: cancel after start" \ -s "Async cancel" requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in resume" \ +run_test "SSL async private: sign, error in resume" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_delay2=1 \ async_private_error=3" \ @@ -4277,6 +4277,41 @@ run_test "SSL async private: error in resume" \ -S "Async cancel" \ -s "! mbedtls_ssl_handshake returned" +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, error in start" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=1" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: injected error" \ + -S "Async resume" \ + -S "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, cancel after start" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=2" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: using key slot " \ + -S "Async resume" \ + -s "Async cancel" + +requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE +run_test "SSL async private: decrypt, error in resume" \ + "$P_SRV \ + async_operations=d async_private_delay1=1 async_private_delay2=1 \ + async_private_error=3" \ + "$P_CLI force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 1 \ + -s "Async decrypt callback: using key slot " \ + -s "Async resume callback: decrypt done but injected error" \ + -S "Async cancel" \ + -s "! mbedtls_ssl_handshake returned" + requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE run_test "SSL async private: cancel after start then operate correctly" \ "$P_SRV \ @@ -4320,7 +4355,7 @@ run_test "SSL async private: cancel after start then fall back to transparent # key1: ECDSA, key2: RSA; use key1 through async, then key2 directly requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE -run_test "SSL async private: error in resume then fall back to transparent key" \ +run_test "SSL async private: sign, error in resume then fall back to transparent key" \ "$P_SRV \ async_operations=s async_private_delay1=1 async_private_error=-3 \ key_file=data_files/server5.key crt_file=data_files/server5.crt \ From ace05929e87817324aed83688f4b424780bf70cf Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 13 Jun 2018 18:16:41 +0200 Subject: [PATCH 0485/1100] Fix harmless use of uninitialized memory in ssl_parse_encrypted_pms In ssl_parse_encrypted_pms, some operational failures from ssl_decrypt_encrypted_pms lead to diff being set to a value that depended on some uninitialized unsigned char and size_t values. This didn't affect the behavior of the program (assuming an implementation with no trap values for size_t) because all that matters is whether diff is 0, but Valgrind rightfully complained about the use of uninitialized memory. Behave nicely and initialize the offending memory. --- library/ssl_srv.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 2b25e091fb..b49b9e1ddf 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3513,6 +3513,15 @@ static int ssl_parse_encrypted_pms( mbedtls_ssl_context *ssl, size_t i, peer_pmslen; unsigned int diff; + /* In case of a failure in decryption, the decryption may write less than + * 2 bytes of output, but we always read the first two bytes. It doesn't + * matter in the end because diff will be nonzero in that case due to + * peer_pmslen being less than 48, and we only care whether diff is 0. + * But do initialize peer_pms for robustness anyway. This also makes + * memory analyzers happy (don't access uninitialized memory, even + * if it's an unsigned char). */ + peer_pms[0] = peer_pms[1] = ~0; + ret = ssl_decrypt_encrypted_pms( ssl, p, end, peer_pms, &peer_pmslen, From 388c1b124ec79212ada16316eee43e1c66c3b486 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:01:34 +0100 Subject: [PATCH 0486/1100] Fix ret code in aescrypt2.c --- programs/aes/aescrypt2.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/programs/aes/aescrypt2.c b/programs/aes/aescrypt2.c index 4acf38dd74..31daf1e2c3 100644 --- a/programs/aes/aescrypt2.c +++ b/programs/aes/aescrypt2.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #include "mbedtls/aes.h" #include "mbedtls/md.h" @@ -71,7 +74,8 @@ int main( void ) #else int main( int argc, char *argv[] ) { - int ret = 1; + int ret = 0; + int exit_code = MBEDTLS_EXIT_FAILURE; unsigned int i, n; int mode, lastn; @@ -429,7 +433,7 @@ int main( int argc, char *argv[] ) } } - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: if( fin ) @@ -452,6 +456,6 @@ exit: mbedtls_aes_free( &aes_ctx ); mbedtls_md_free( &sha_ctx ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_AES_C && MBEDTLS_SHA256_C && MBEDTLS_FS_IO */ From 4c47df6f3f17eefe50cf2eeca437f3a35eb1075b Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:11:26 +0100 Subject: [PATCH 0487/1100] Fix ret code in crypt_and_hash.c --- programs/aes/crypt_and_hash.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c index 0e272ebe48..9e234e6727 100644 --- a/programs/aes/crypt_and_hash.c +++ b/programs/aes/crypt_and_hash.c @@ -30,9 +30,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_CIPHER_C) && defined(MBEDTLS_MD_C) && \ defined(MBEDTLS_FS_IO) @@ -74,6 +77,7 @@ int main( void ) int main( int argc, char *argv[] ) { int ret = 1, i, n; + int exit_code = MBEDTLS_EXIT_FAILURE; int mode; size_t keylen, ilen, olen; FILE *fkey, *fin = NULL, *fout = NULL; @@ -526,7 +530,7 @@ int main( int argc, char *argv[] ) } } - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: if( fin ) @@ -549,6 +553,6 @@ exit: mbedtls_cipher_free( &cipher_ctx ); mbedtls_md_free( &md_ctx ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_CIPHER_C && MBEDTLS_MD_C && MBEDTLS_FS_IO */ From 898841dc71ecc0be0066041b5cfb45bf90dc8922 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:23:39 +0100 Subject: [PATCH 0488/1100] Fix ret code in dh_client.c --- programs/pkey/dh_client.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c index 0978408c1c..68f0df58ea 100644 --- a/programs/pkey/dh_client.c +++ b/programs/pkey/dh_client.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#define mbedtls_time_t time_t -#endif +#include +#define mbedtls_printf printf +#define mbedtls_time_t time_t +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_AES_C) && defined(MBEDTLS_DHM_C) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_NET_C) && \ @@ -71,7 +74,8 @@ int main( void ) { FILE *f; - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t n, buflen; mbedtls_net_context server_fd; @@ -115,7 +119,6 @@ int main( void ) if( ( f = fopen( "rsa_pub.txt", "rb" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not open rsa_pub.txt\n" \ " ! Please run rsa_genkey first\n\n" ); goto exit; @@ -191,7 +194,6 @@ int main( void ) if( dhm.len < 64 || dhm.len > 512 ) { - ret = 1; mbedtls_printf( " failed\n ! Invalid DHM modulus size\n\n" ); goto exit; } @@ -286,6 +288,8 @@ int main( void ) buf[16] = '\0'; mbedtls_printf( "\n . Plaintext is \"%s\"\n\n", (char *) buf ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_net_free( &server_fd ); @@ -301,7 +305,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_AES_C && MBEDTLS_DHM_C && MBEDTLS_ENTROPY_C && MBEDTLS_NET_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && From d6bfeff28984c54aa53f464bd9c7525cab1b5bae Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:34:09 +0100 Subject: [PATCH 0489/1100] Fix ret code in dh_genprime.c --- programs/pkey/dh_genprime.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c index 84a94a18bd..7884ea6680 100644 --- a/programs/pkey/dh_genprime.c +++ b/programs/pkey/dh_genprime.c @@ -30,9 +30,11 @@ #else #include #include -#define mbedtls_printf printf -#define mbedtls_time_t time_t -#endif +#define mbedtls_printf printf +#define mbedtls_time_t time_t +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_FS_IO) || !defined(MBEDTLS_CTR_DRBG_C) || \ @@ -69,6 +71,7 @@ int main( void ) int main( int argc, char **argv ) { int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_mpi G, P, Q; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -86,7 +89,7 @@ int main( int argc, char **argv ) { usage: mbedtls_printf( USAGE ); - return( 1 ); + return( exit_code ); } for( i = 1; i < argc; i++ ) @@ -164,7 +167,6 @@ int main( int argc, char **argv ) if( ( fout = fopen( "dh_prime.txt", "wb+" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not create dh_prime.txt\n\n" ); goto exit; } @@ -180,6 +182,8 @@ int main( int argc, char **argv ) mbedtls_printf( " ok\n\n" ); fclose( fout ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_mpi_free( &G ); mbedtls_mpi_free( &P ); mbedtls_mpi_free( &Q ); @@ -191,7 +195,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_FS_IO && MBEDTLS_CTR_DRBG_C && MBEDTLS_GENPRIME */ From 03a992c817ccba1ca2ed126f11fb2326f3647935 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:40:45 +0100 Subject: [PATCH 0490/1100] Fix ret code in dh_server.c --- programs/pkey/dh_server.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c index 430423154d..d7765e332a 100644 --- a/programs/pkey/dh_server.c +++ b/programs/pkey/dh_server.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#define mbedtls_time_t time_t -#endif +#include +#define mbedtls_printf printf +#define mbedtls_time_t time_t +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_AES_C) && defined(MBEDTLS_DHM_C) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_NET_C) && \ @@ -71,7 +74,8 @@ int main( void ) { FILE *f; - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t n, buflen; mbedtls_net_context listen_fd, client_fd; @@ -121,7 +125,6 @@ int main( void ) if( ( f = fopen( "rsa_priv.txt", "rb" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not open rsa_priv.txt\n" \ " ! Please run rsa_genkey first\n\n" ); goto exit; @@ -164,7 +167,6 @@ int main( void ) if( ( f = fopen( "dh_prime.txt", "rb" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not open dh_prime.txt\n" \ " ! Please run dh_genprime first\n\n" ); goto exit; @@ -304,6 +306,8 @@ int main( void ) mbedtls_printf( "\n\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &P ); mbedtls_mpi_free( &Q ); @@ -323,7 +327,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_AES_C && MBEDTLS_DHM_C && MBEDTLS_ENTROPY_C && MBEDTLS_NET_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && From 2602a1fbc518d6558ca2c3aaadb2f2236cc0ad47 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:45:25 +0100 Subject: [PATCH 0491/1100] Fix ret code in ecdsa.c --- programs/pkey/ecdsa.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/programs/pkey/ecdsa.c b/programs/pkey/ecdsa.c index b47406010d..8455bb52bf 100644 --- a/programs/pkey/ecdsa.c +++ b/programs/pkey/ecdsa.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_ECDSA_C) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_CTR_DRBG_C) @@ -98,7 +101,8 @@ static void dump_pubkey( const char *title, mbedtls_ecdsa_context *key ) int main( int argc, char *argv[] ) { - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_ecdsa_context ctx_sign, ctx_verify; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -115,7 +119,6 @@ int main( int argc, char *argv[] ) memset( sig, 0, sizeof( sig ) ); memset( message, 0x25, sizeof( message ) ); - ret = 1; if( argc != 1 ) { @@ -213,8 +216,6 @@ int main( int argc, char *argv[] ) goto exit; } - ret = 0; - /* * Verify signature */ @@ -231,6 +232,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: #if defined(_WIN32) @@ -243,7 +246,7 @@ exit: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C && ECPARAMS */ From 208c217dfaefb1d85a6cb1684df40eb9d78a3178 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 19:51:56 +0100 Subject: [PATCH 0492/1100] Fix ret code in gen_key.c --- programs/pkey/gen_key.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/programs/pkey/gen_key.c b/programs/pkey/gen_key.c index a7f5c90a6c..9a98fda56e 100644 --- a/programs/pkey/gen_key.c +++ b/programs/pkey/gen_key.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_PK_WRITE_C) && defined(MBEDTLS_FS_IO) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_CTR_DRBG_C) @@ -186,7 +189,8 @@ static int write_private_key( mbedtls_pk_context *key, const char *output_file ) int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_pk_context key; char buf[1024]; int i; @@ -214,7 +218,6 @@ int main( int argc, char *argv[] ) if( argc == 0 ) { usage: - ret = 1; mbedtls_printf( USAGE ); #if defined(MBEDTLS_ECP_C) mbedtls_printf( " available ec_curve values:\n" ); @@ -222,7 +225,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( " %s (default)\n", curve_info->name ); while( ( ++curve_info )->name != NULL ) mbedtls_printf( " %s\n", curve_info->name ); -#endif +#endif /* MBEDTLS_ECP_C */ goto exit; } @@ -411,9 +414,11 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: - if( ret != 0 && ret != 1) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { #ifdef MBEDTLS_ERROR_C mbedtls_strerror( ret, buf, sizeof( buf ) ); @@ -436,7 +441,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_PK_WRITE_C && MBEDTLS_PEM_WRITE_C && MBEDTLS_FS_IO && * MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C */ From 0faf1a5c0118217383adf58e5be049b908ad0524 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:02:18 +0100 Subject: [PATCH 0493/1100] Fix ret code in key_app.c --- programs/pkey/key_app.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index f1b548d05f..56930781fb 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && \ defined(MBEDTLS_PK_PARSE_C) && defined(MBEDTLS_FS_IO) @@ -83,7 +86,8 @@ struct options int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; char buf[1024]; int i; char *p, *q; @@ -283,10 +287,12 @@ int main( int argc, char *argv[] ) else goto usage; + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: #if defined(MBEDTLS_ERROR_C) - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_strerror( ret, buf, sizeof(buf) ); mbedtls_printf( " ! Last error was: %s\n", buf ); @@ -303,6 +309,6 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO */ From ed68488e28691fa1ae7448ad14ab5ef0d0c0ee34 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:07:30 +0100 Subject: [PATCH 0494/1100] Fix ret code in key_app_writer.c --- programs/pkey/key_app_writer.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/programs/pkey/key_app_writer.c b/programs/pkey/key_app_writer.c index 52b0f8e744..5c151e119b 100644 --- a/programs/pkey/key_app_writer.c +++ b/programs/pkey/key_app_writer.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_PK_WRITE_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/error.h" @@ -189,7 +192,8 @@ static int write_private_key( mbedtls_pk_context *key, const char *output_file ) int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; char buf[1024]; int i; char *p, *q; @@ -210,7 +214,6 @@ int main( int argc, char *argv[] ) if( argc == 0 ) { usage: - ret = 1; mbedtls_printf( USAGE ); goto exit; } @@ -403,9 +406,11 @@ int main( int argc, char *argv[] ) write_private_key( &key, opt.output_file ); } + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: - if( ret != 0 && ret != 1) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { #ifdef MBEDTLS_ERROR_C mbedtls_strerror( ret, buf, sizeof( buf ) ); @@ -426,6 +431,6 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_PK_WRITE_C && MBEDTLS_FS_IO */ From 70e1ffdacd641a6ecc568f8694806bfabd041609 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:12:43 +0100 Subject: [PATCH 0495/1100] Fix ret code in rsa_genkey.c --- programs/pkey/rsa_genkey.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/programs/pkey/rsa_genkey.c b/programs/pkey/rsa_genkey.c index 9399217612..1afec559bb 100644 --- a/programs/pkey/rsa_genkey.c +++ b/programs/pkey/rsa_genkey.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_ENTROPY_C) && \ defined(MBEDTLS_RSA_C) && defined(MBEDTLS_GENPRIME) && \ @@ -61,7 +64,8 @@ int main( void ) #else int main( void ) { - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_rsa_context rsa; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -105,14 +109,12 @@ int main( void ) ( ret = mbedtls_rsa_export_crt( &rsa, &DP, &DQ, &QP ) ) != 0 ) { mbedtls_printf( " failed\n ! could not export RSA parameters\n\n" ); - ret = 1; goto exit; } if( ( fpub = fopen( "rsa_pub.txt", "wb+" ) ) == NULL ) { mbedtls_printf( " failed\n ! could not open rsa_pub.txt for writing\n\n" ); - ret = 1; goto exit; } @@ -129,7 +131,6 @@ int main( void ) if( ( fpriv = fopen( "rsa_priv.txt", "wb+" ) ) == NULL ) { mbedtls_printf( " failed\n ! could not open rsa_priv.txt for writing\n" ); - ret = 1; goto exit; } @@ -160,6 +161,8 @@ int main( void ) */ mbedtls_printf( " ok\n\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: if( fpub != NULL ) @@ -180,7 +183,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_RSA_C && MBEDTLS_GENPRIME && MBEDTLS_FS_IO && MBEDTLS_CTR_DRBG_C */ From 1a66056c778b1a512755249cf01480924629bd3f Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:16:46 +0100 Subject: [PATCH 0496/1100] Fix ret code in rsa_sign.c --- programs/pkey/rsa_sign.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/programs/pkey/rsa_sign.c b/programs/pkey/rsa_sign.c index 89018cb765..c6c7905193 100644 --- a/programs/pkey/rsa_sign.c +++ b/programs/pkey/rsa_sign.c @@ -29,10 +29,13 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#define mbedtls_snprintf snprintf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define mbedtls_snprintf snprintf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_RSA_C) || \ !defined(MBEDTLS_SHA256_C) || !defined(MBEDTLS_MD_C) || \ @@ -55,7 +58,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i; mbedtls_rsa_context rsa; unsigned char hash[32]; @@ -69,8 +73,6 @@ int main( int argc, char *argv[] ) mbedtls_mpi_init( &D ); mbedtls_mpi_init( &E ); mbedtls_mpi_init( &DP ); mbedtls_mpi_init( &DQ ); mbedtls_mpi_init( &QP ); - ret = 1; - if( argc != 2 ) { mbedtls_printf( "usage: rsa_sign \n" ); @@ -87,7 +89,6 @@ int main( int argc, char *argv[] ) if( ( f = fopen( "rsa_priv.txt", "rb" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not open rsa_priv.txt\n" \ " ! Please run rsa_genkey first\n\n" ); goto exit; @@ -159,7 +160,6 @@ int main( int argc, char *argv[] ) if( ( f = fopen( filename, "wb+" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not create %s\n\n", argv[1] ); goto exit; } @@ -172,6 +172,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Done (created \"%s\")\n\n", filename ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_rsa_free( &rsa ); @@ -184,7 +186,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && MBEDTLS_FS_IO */ From 3c41e564f8eeb5012df5877efbbbba2b68914a6f Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:23:38 +0100 Subject: [PATCH 0497/1100] Fix ret code in rsa_sign_pss.c --- programs/pkey/rsa_sign_pss.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/programs/pkey/rsa_sign_pss.c b/programs/pkey/rsa_sign_pss.c index 7b6f14dd8e..3b58c297bd 100644 --- a/programs/pkey/rsa_sign_pss.c +++ b/programs/pkey/rsa_sign_pss.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_snprintf snprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_snprintf snprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_MD_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_SHA256_C) || \ @@ -61,6 +64,7 @@ int main( int argc, char *argv[] ) { FILE *f; int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_pk_context pk; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -101,7 +105,6 @@ int main( int argc, char *argv[] ) if( ( ret = mbedtls_pk_parse_keyfile( &pk, argv[1], "" ) ) != 0 ) { - ret = 1; mbedtls_printf( " failed\n ! Could not read key from '%s'\n", argv[1] ); mbedtls_printf( " ! mbedtls_pk_parse_public_keyfile returned %d\n\n", ret ); goto exit; @@ -109,7 +112,6 @@ int main( int argc, char *argv[] ) if( !mbedtls_pk_can_do( &pk, MBEDTLS_PK_RSA ) ) { - ret = 1; mbedtls_printf( " failed\n ! Key is not an RSA key\n" ); goto exit; } @@ -145,7 +147,6 @@ int main( int argc, char *argv[] ) if( ( f = fopen( filename, "wb+" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not create %s\n\n", filename ); goto exit; } @@ -161,6 +162,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Done (created \"%s\")\n\n", filename ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_pk_free( &pk ); mbedtls_ctr_drbg_free( &ctr_drbg ); @@ -171,7 +174,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO && From 0a860f63013152cf995370f594eff0da9131e033 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:27:09 +0100 Subject: [PATCH 0498/1100] Fix ret code in rsa_verify.c --- programs/pkey/rsa_verify.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/programs/pkey/rsa_verify.c b/programs/pkey/rsa_verify.c index 1f827aa072..5625abacf6 100644 --- a/programs/pkey/rsa_verify.c +++ b/programs/pkey/rsa_verify.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#define mbedtls_snprintf snprintf -#endif +#include +#define mbedtls_printf printf +#define mbedtls_snprintf snprintf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_RSA_C) || \ !defined(MBEDTLS_SHA256_C) || !defined(MBEDTLS_MD_C) || \ @@ -54,7 +57,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int ret, c; + int ret = 1, c; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i; mbedtls_rsa_context rsa; unsigned char hash[32]; @@ -62,7 +66,6 @@ int main( int argc, char *argv[] ) char filename[512]; mbedtls_rsa_init( &rsa, MBEDTLS_RSA_PKCS_V15, 0 ); - ret = 1; if( argc != 2 ) { @@ -100,7 +103,6 @@ int main( int argc, char *argv[] ) /* * Extract the RSA signature from the text file */ - ret = 1; mbedtls_snprintf( filename, sizeof(filename), "%s.sig", argv[1] ); if( ( f = fopen( filename, "rb" ) ) == NULL ) @@ -146,7 +148,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . OK (the signature is valid)\n\n" ); - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: @@ -157,7 +159,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && MBEDTLS_FS_IO */ From a8332637d76078ed6ec0715222bb056c3dc49aa1 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:33:22 +0100 Subject: [PATCH 0499/1100] Fix ret code in rsa_verify_pss.c --- programs/pkey/rsa_verify_pss.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/programs/pkey/rsa_verify_pss.c b/programs/pkey/rsa_verify_pss.c index 31b720f360..d681e2c5e5 100644 --- a/programs/pkey/rsa_verify_pss.c +++ b/programs/pkey/rsa_verify_pss.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_snprintf snprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_snprintf snprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_MD_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_RSA_C) || !defined(MBEDTLS_SHA256_C) || \ @@ -60,6 +63,7 @@ int main( int argc, char *argv[] ) { FILE *f; int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i; mbedtls_pk_context pk; unsigned char hash[32]; @@ -91,7 +95,6 @@ int main( int argc, char *argv[] ) if( !mbedtls_pk_can_do( &pk, MBEDTLS_PK_RSA ) ) { - ret = 1; mbedtls_printf( " failed\n ! Key is not an RSA key\n" ); goto exit; } @@ -101,7 +104,6 @@ int main( int argc, char *argv[] ) /* * Extract the RSA signature from the file */ - ret = 1; mbedtls_snprintf( filename, 512, "%s.sig", argv[2] ); if( ( f = fopen( filename, "rb" ) ) == NULL ) @@ -139,7 +141,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . OK (the signature is valid)\n\n" ); - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: mbedtls_pk_free( &pk ); @@ -149,7 +151,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_SHA256_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO */ From 55a0d56b3337e6bb1a61ae4a4affd78218ee7697 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:40:36 +0100 Subject: [PATCH 0500/1100] Fix ret code in gen_entropy.c --- programs/random/gen_entropy.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/programs/random/gen_entropy.c b/programs/random/gen_entropy.c index 792d3818ab..bca36e0acc 100644 --- a/programs/random/gen_entropy.c +++ b/programs/random/gen_entropy.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/entropy.h" @@ -49,20 +52,21 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int i, k, ret; + int i, k, ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_entropy_context entropy; unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; if( argc < 2 ) { mbedtls_fprintf( stderr, "usage: %s \n", argv[0] ); - return( 1 ); + return( exit_code ); } if( ( f = fopen( argv[1], "wb+" ) ) == NULL ) { mbedtls_printf( "failed to open '%s' for writing.\n", argv[1] ); - return( 1 ); + return( exit_code ); } mbedtls_entropy_init( &entropy ); @@ -72,7 +76,8 @@ int main( int argc, char *argv[] ) ret = mbedtls_entropy_func( &entropy, buf, sizeof( buf ) ); if( ret != 0 ) { - mbedtls_printf("failed!\n"); + mbedtls_printf( " failed\n ! mbedtls_entropy_func returned -%04X\n", + ret ); goto cleanup; } @@ -83,7 +88,7 @@ int main( int argc, char *argv[] ) fflush( stdout ); } - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; cleanup: mbedtls_printf( "\n" ); @@ -91,6 +96,6 @@ cleanup: fclose( f ); mbedtls_entropy_free( &entropy ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_ENTROPY_C */ From 73d4a5f1312f63626b02df2687ca8545b3df2efc Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:46:55 +0100 Subject: [PATCH 0501/1100] Fix ret code in gen_random_ctr_drbg.c --- programs/random/gen_random_ctr_drbg.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/programs/random/gen_random_ctr_drbg.c b/programs/random/gen_random_ctr_drbg.c index c76f99d09c..76d4092dea 100644 --- a/programs/random/gen_random_ctr_drbg.c +++ b/programs/random/gen_random_ctr_drbg.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_CTR_DRBG_C) && defined(MBEDTLS_ENTROPY_C) && \ defined(MBEDTLS_FS_IO) @@ -52,7 +55,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int i, k, ret; + int i, k, ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_ctr_drbg_context ctr_drbg; mbedtls_entropy_context entropy; unsigned char buf[1024]; @@ -62,13 +66,13 @@ int main( int argc, char *argv[] ) if( argc < 2 ) { mbedtls_fprintf( stderr, "usage: %s \n", argv[0] ); - return( 1 ); + return( exit_code ); } if( ( f = fopen( argv[1], "wb+" ) ) == NULL ) { mbedtls_printf( "failed to open '%s' for writing.\n", argv[1] ); - return( 1 ); + return( exit_code ); } mbedtls_entropy_init( &entropy ); @@ -116,7 +120,7 @@ int main( int argc, char *argv[] ) fflush( stdout ); } - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; cleanup: mbedtls_printf("\n"); @@ -125,6 +129,6 @@ cleanup: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_CTR_DRBG_C && MBEDTLS_ENTROPY_C */ From 5517202541e32f919d7689b02ad90ea5e988cb30 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:53:53 +0100 Subject: [PATCH 0502/1100] Fix ret code in ssl_client1.c --- programs/ssl/ssl_client1.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c index 01cee13546..0e49c49aa7 100644 --- a/programs/ssl/ssl_client1.c +++ b/programs/ssl/ssl_client1.c @@ -30,11 +30,13 @@ #else #include #include -#define mbedtls_time time -#define mbedtls_time_t time_t -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#define mbedtls_time time +#define mbedtls_time_t time_t +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_CLI_C) || \ @@ -80,7 +82,8 @@ static void my_debug( void *ctx, int level, int main( void ) { - int ret, len; + int ret = 1, len; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context server_fd; uint32_t flags; unsigned char buf[1024]; @@ -281,10 +284,12 @@ int main( void ) mbedtls_ssl_close_notify( &ssl ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: #ifdef MBEDTLS_ERROR_C - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { char error_buf[100]; mbedtls_strerror( ret, error_buf, 100 ); @@ -305,7 +310,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C && MBEDTLS_SSL_CLI_C && MBEDTLS_NET_C && MBEDTLS_RSA_C && From 4be53b5519b20b9cc55e01f991eb855bd2103257 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 20:57:21 +0100 Subject: [PATCH 0503/1100] Fix ret code in ssl_fork_server.c --- programs/ssl/ssl_fork_server.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c index 7624896a34..29a297c402 100644 --- a/programs/ssl/ssl_fork_server.c +++ b/programs/ssl/ssl_fork_server.c @@ -29,10 +29,13 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#define mbedtls_time_t time_t -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define mbedtls_time_t time_t +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_CERTS_C) || \ !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_SSL_TLS_C) || \ @@ -95,7 +98,8 @@ static void my_debug( void *ctx, int level, int main( void ) { - int ret, len, cnt = 0, pid; + int ret = 1, len, cnt = 0, pid; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context listen_fd, client_fd; unsigned char buf[1024]; const char *pers = "ssl_fork_server"; @@ -392,6 +396,8 @@ int main( void ) goto exit; } + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_net_free( &client_fd ); mbedtls_net_free( &listen_fd ); @@ -408,7 +414,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_CERTS_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C && MBEDTLS_SSL_SRV_C && MBEDTLS_NET_C && From 67a42acfb8e0148ebfd468af010504a47309a699 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:04:29 +0100 Subject: [PATCH 0504/1100] Fix ret code in ssl_mail_client.c --- programs/ssl/ssl_mail_client.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index 04b847a69a..a414864439 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -30,11 +30,13 @@ #else #include #include -#define mbedtls_time time -#define mbedtls_time_t time_t -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#define mbedtls_time time +#define mbedtls_time_t time_t +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_CLI_C) || \ @@ -346,7 +348,8 @@ static int write_and_get_response( mbedtls_net_context *sock_fd, unsigned char * int main( int argc, char *argv[] ) { - int ret = 0, len; + int ret = 1, len; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context server_fd; unsigned char buf[1024]; #if defined(MBEDTLS_BASE64_C) @@ -499,8 +502,8 @@ int main( int argc, char *argv[] ) mbedtls_test_cas_pem_len ); #else { - ret = 1; mbedtls_printf("MBEDTLS_CERTS_C and/or MBEDTLS_PEM_PARSE_C not defined."); + goto exit; } #endif if( ret < 0 ) @@ -529,8 +532,8 @@ int main( int argc, char *argv[] ) mbedtls_test_cli_crt_len ); #else { - ret = -1; mbedtls_printf("MBEDTLS_CERTS_C not defined."); + goto exit; } #endif if( ret != 0 ) @@ -549,8 +552,8 @@ int main( int argc, char *argv[] ) mbedtls_test_cli_key_len, NULL, 0 ); #else { - ret = -1; mbedtls_printf("MBEDTLS_CERTS_C or MBEDTLS_PEM_PARSE_C not defined."); + goto exit; } #endif if( ret != 0 ) @@ -819,6 +822,8 @@ int main( int argc, char *argv[] ) mbedtls_ssl_close_notify( &ssl ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_net_free( &server_fd ); @@ -835,7 +840,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C && MBEDTLS_SSL_CLI_C && MBEDTLS_NET_C && MBEDTLS_RSA_C ** From aacd928f97116e7dd8f27e6a3ffa250f9eec1b79 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:36:13 +0100 Subject: [PATCH 0505/1100] Fix ret code in cert_req.c --- programs/x509/cert_req.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/programs/x509/cert_req.c b/programs/x509/cert_req.c index 30df2162ae..8b47138a5f 100644 --- a/programs/x509/cert_req.c +++ b/programs/x509/cert_req.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_X509_CSR_WRITE_C) || !defined(MBEDTLS_FS_IO) || \ !defined(MBEDTLS_PK_PARSE_C) || !defined(MBEDTLS_SHA256_C) || \ @@ -133,7 +136,8 @@ int write_certificate_request( mbedtls_x509write_csr *req, const char *output_fi int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_pk_context key; char buf[1024]; int i; @@ -156,7 +160,6 @@ int main( int argc, char *argv[] ) { usage: mbedtls_printf( USAGE ); - ret = 1; goto exit; } @@ -317,9 +320,11 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: - if( ret != 0 && ret != 1) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { #ifdef MBEDTLS_ERROR_C mbedtls_strerror( ret, buf, sizeof( buf ) ); @@ -339,7 +344,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_X509_CSR_WRITE_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO && MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C && MBEDTLS_PEM_WRITE_C */ From f9a54d339f84cfb877a1e352e1c2456a2a7738cc Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:42:45 +0100 Subject: [PATCH 0506/1100] Fix ret code in cert_write.c --- programs/x509/cert_write.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index 12baf720cd..1cfe1cdcb6 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_X509_CRT_WRITE_C) || \ !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_FS_IO) || \ @@ -211,7 +214,8 @@ int write_certificate( mbedtls_x509write_cert *crt, const char *output_file, int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_x509_crt issuer_crt; mbedtls_pk_context loaded_issuer_key, loaded_subject_key; mbedtls_pk_context *issuer_key = &loaded_issuer_key, @@ -248,7 +252,6 @@ int main( int argc, char *argv[] ) { usage: mbedtls_printf( USAGE ); - ret = 1; goto exit; } @@ -611,7 +614,6 @@ int main( int argc, char *argv[] ) { mbedtls_printf( " failed\n ! issuer_key does not match " "issuer certificate\n\n" ); - ret = -1; goto exit; } } @@ -784,6 +786,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_x509write_crt_free( &crt ); mbedtls_pk_free( &loaded_subject_key ); @@ -797,7 +801,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_X509_CRT_WRITE_C && MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_FS_IO && MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C && From 898b208929c3575855dc414d0cfd44537f5a0439 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:47:51 +0100 Subject: [PATCH 0507/1100] Fix ret code in crl_app.c --- programs/x509/crl_app.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/programs/x509/crl_app.c b/programs/x509/crl_app.c index 210d19e96a..687752fc68 100644 --- a/programs/x509/crl_app.c +++ b/programs/x509/crl_app.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_RSA_C) || \ !defined(MBEDTLS_X509_CRL_PARSE_C) || !defined(MBEDTLS_FS_IO) @@ -67,7 +70,8 @@ struct options int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; unsigned char buf[100000]; mbedtls_x509_crl crl; int i; @@ -131,6 +135,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "%s\n", buf ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_x509_crl_free( &crl ); @@ -139,7 +145,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_X509_CRL_PARSE_C && MBEDTLS_FS_IO */ From 57a0c9b62c96ca5dffedc820e286dc9326b02185 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:51:47 +0100 Subject: [PATCH 0508/1100] Fix ret code in req_app.c --- programs/x509/req_app.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/programs/x509/req_app.c b/programs/x509/req_app.c index 8410a5371e..131cc293f6 100644 --- a/programs/x509/req_app.c +++ b/programs/x509/req_app.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_RSA_C) || \ !defined(MBEDTLS_X509_CSR_PARSE_C) || !defined(MBEDTLS_FS_IO) @@ -67,7 +70,8 @@ struct options int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; unsigned char buf[100000]; mbedtls_x509_csr csr; int i; @@ -131,6 +135,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "%s\n", buf ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_x509_csr_free( &csr ); @@ -139,7 +145,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_X509_CSR_PARSE_C && MBEDTLS_FS_IO */ From 80081a68cdb90ad017236a0f58de1163dd32a134 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 21:58:53 +0100 Subject: [PATCH 0509/1100] Fix ret code in udp_proxy.c --- programs/test/udp_proxy.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 5797f3d69c..cacd4f3033 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -37,10 +37,12 @@ #include #include #include -#define mbedtls_time time -#define mbedtls_time_t time_t -#define mbedtls_printf printf -#endif +#define mbedtls_time time +#define mbedtls_time_t time_t +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_NET_C) int main( void ) @@ -600,7 +602,8 @@ int handle_message( const char *way, int main( int argc, char *argv[] ) { - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context listen_fd, client_fd, server_fd; @@ -781,10 +784,12 @@ accept: } + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: #ifdef MBEDTLS_ERROR_C - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { char error_buf[100]; mbedtls_strerror( ret, error_buf, 100 ); @@ -802,7 +807,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret != 0 ); + return( exit_code ); } #endif /* MBEDTLS_NET_C */ From 357b0b283a81b7283116f1199da0e2bc459daad4 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:04:03 +0100 Subject: [PATCH 0510/1100] Fix ret code in ssl_cert_test.c --- programs/test/ssl_cert_test.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/programs/test/ssl_cert_test.c b/programs/test/ssl_cert_test.c index 9cfcd2d554..7e5ed384b2 100644 --- a/programs/test/ssl_cert_test.c +++ b/programs/test/ssl_cert_test.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_snprintf snprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_snprintf snprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_X509_CRT_PARSE_C) && \ defined(MBEDTLS_FS_IO) && defined(MBEDTLS_X509_CRL_PARSE_C) @@ -80,7 +83,8 @@ const char *client_private_keys[MAX_CLIENT_CERTS] = int main( void ) { - int ret, i; + int ret = 1, i; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_x509_crt cacert; mbedtls_x509_crl crl; char buf[10240]; @@ -210,7 +214,6 @@ int main( void ) if( ! mbedtls_pk_can_do( &clicert.pk, MBEDTLS_PK_RSA ) ) { mbedtls_printf( " failed\n ! certificate's key is not RSA\n\n" ); - ret = MBEDTLS_ERR_X509_FEATURE_UNAVAILABLE; goto exit; } @@ -241,6 +244,8 @@ int main( void ) mbedtls_pk_free( &pk ); } + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_x509_crt_free( &cacert ); mbedtls_x509_crl_free( &crl ); @@ -250,7 +255,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_RSA_C && MBEDTLS_X509_CRT_PARSE_C && MBEDTLS_FS_IO && MBEDTLS_X509_CRL_PARSE_C */ From 78dabe07bf57af3b1210da15addfbd22e7fbad01 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:08:41 +0100 Subject: [PATCH 0511/1100] Fix ret code in pem2der.c --- programs/util/pem2der.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/programs/util/pem2der.c b/programs/util/pem2der.c index ad2c6ac139..fda5f57811 100644 --- a/programs/util/pem2der.c +++ b/programs/util/pem2der.c @@ -29,10 +29,13 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_free free -#define mbedtls_calloc calloc -#define mbedtls_printf printf -#endif +#include +#define mbedtls_free free +#define mbedtls_calloc calloc +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BASE64_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/error.h" @@ -178,7 +181,8 @@ static int write_file( const char *path, unsigned char *buf, size_t n ) int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; unsigned char *pem_buffer = NULL; unsigned char der_buffer[4096]; char buf[1024]; @@ -273,6 +277,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: free( pem_buffer ); @@ -281,6 +287,6 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BASE64_C && MBEDTLS_FS_IO */ From d905db65b7264ac12521b588390f4a15becfaf6d Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:12:21 +0100 Subject: [PATCH 0512/1100] Fix ret code in mpi_demo.c --- programs/pkey/mpi_demo.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/programs/pkey/mpi_demo.c b/programs/pkey/mpi_demo.c index afe8957e79..5b40c51858 100644 --- a/programs/pkey/mpi_demo.c +++ b/programs/pkey/mpi_demo.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/bignum.h" @@ -47,7 +50,8 @@ int main( void ) #else int main( void ) { - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_mpi E, P, Q, N, H, D, X, Y, Z; mbedtls_mpi_init( &E ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &N ); @@ -88,15 +92,16 @@ int main( void ) MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( " Z (decrypted) = Y^D mod N = ", &Z, 10, NULL ) ); mbedtls_printf( "\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + cleanup: mbedtls_mpi_free( &E ); mbedtls_mpi_free( &P ); mbedtls_mpi_free( &Q ); mbedtls_mpi_free( &N ); mbedtls_mpi_free( &H ); mbedtls_mpi_free( &D ); mbedtls_mpi_free( &X ); mbedtls_mpi_free( &Y ); mbedtls_mpi_free( &Z ); - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_printf( "\nAn error occurred.\n" ); - ret = 1; } #if defined(_WIN32) @@ -104,6 +109,6 @@ cleanup: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_FS_IO */ From f47c9c11d1026d79d502e46d302157814fb03e53 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:16:23 +0100 Subject: [PATCH 0513/1100] Fix ret code in ecdh_curve25519.c --- programs/pkey/ecdh_curve25519.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/programs/pkey/ecdh_curve25519.c b/programs/pkey/ecdh_curve25519.c index e7ead9a938..1f52126af8 100644 --- a/programs/pkey/ecdh_curve25519.c +++ b/programs/pkey/ecdh_curve25519.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_ECDH_C) || \ !defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) || \ @@ -51,7 +54,8 @@ int main( void ) int main( int argc, char *argv[] ) { - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_ecdh_context ctx_cli, ctx_srv; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -218,6 +222,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( " ok\n" ); + exit_code = MBEDTLS_EXIT_SUCCESS; exit: @@ -231,7 +236,7 @@ exit: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); - return( ret != 0 ); + return( exit_code ); } #endif /* MBEDTLS_ECDH_C && MBEDTLS_ECP_DP_CURVE25519_ENABLED && MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C */ From 52898179cf597f414e9791a8fb08ea920e90dea3 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:19:26 +0100 Subject: [PATCH 0514/1100] Fix ret code in pk_encrypt.c --- programs/pkey/pk_encrypt.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c index 7ca9d5ad9b..b4b7107dd7 100644 --- a/programs/pkey/pk_encrypt.c +++ b/programs/pkey/pk_encrypt.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_PK_PARSE_C) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_FS_IO) && \ @@ -59,7 +62,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int ret; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i, olen = 0; mbedtls_pk_context pk; mbedtls_entropy_context entropy; @@ -68,7 +72,6 @@ int main( int argc, char *argv[] ) unsigned char buf[512]; const char *pers = "mbedtls_pk_encrypt"; - ret = 1; mbedtls_ctr_drbg_init( &ctr_drbg ); if( argc != 3 ) @@ -132,7 +135,6 @@ int main( int argc, char *argv[] ) */ if( ( f = fopen( "result-enc.txt", "wb+" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not create %s\n\n", "result-enc.txt" ); goto exit; } @@ -145,12 +147,14 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Done (created \"%s\")\n\n", "result-enc.txt" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); #if defined(MBEDTLS_ERROR_C) - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); mbedtls_printf( " ! Last error was: %s\n", buf ); @@ -162,7 +166,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_PK_PARSE_C && MBEDTLS_ENTROPY_C && MBEDTLS_FS_IO && MBEDTLS_CTR_DRBG_C */ From 0a7522c1270cb0a4a6e91fd2a72993e595560272 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:23:22 +0100 Subject: [PATCH 0515/1100] Fix ret code in pk_encrypt.c --- programs/pkey/pk_decrypt.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index 32fbc7545a..b60f6caee6 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -59,7 +59,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int ret, c; + int ret = 1, c; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i, olen = 0; mbedtls_pk_context pk; mbedtls_entropy_context entropy; @@ -71,7 +72,6 @@ int main( int argc, char *argv[] ) mbedtls_ctr_drbg_init( &ctr_drbg ); memset(result, 0, sizeof( result ) ); - ret = 1; if( argc != 2 ) { @@ -110,8 +110,6 @@ int main( int argc, char *argv[] ) /* * Extract the RSA encrypted value from the text file */ - ret = 1; - if( ( f = fopen( "result-enc.txt", "rb" ) ) == NULL ) { mbedtls_printf( "\n ! Could not open %s\n\n", "result-enc.txt" ); @@ -143,14 +141,14 @@ int main( int argc, char *argv[] ) mbedtls_printf( "The decrypted result is: '%s'\n\n", result ); - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); #if defined(MBEDTLS_ERROR_C) - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); mbedtls_printf( " ! Last error was: %s\n", buf ); @@ -162,7 +160,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO && MBEDTLS_ENTROPY_C && MBEDTLS_CTR_DRBG_C */ From 82b2726b4c99d1d6aab7c878bdd8c5c41aef3186 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:26:25 +0100 Subject: [PATCH 0516/1100] Fix ret code in pk_sign.c --- programs/pkey/pk_sign.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/programs/pkey/pk_sign.c b/programs/pkey/pk_sign.c index 55df95e49d..240be6b927 100644 --- a/programs/pkey/pk_sign.c +++ b/programs/pkey/pk_sign.c @@ -30,9 +30,11 @@ #else #include #include -#define mbedtls_snprintf snprintf -#define mbedtls_printf printf -#endif +#define mbedtls_snprintf snprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_SHA256_C) || !defined(MBEDTLS_MD_C) || \ @@ -61,6 +63,7 @@ int main( int argc, char *argv[] ) { FILE *f; int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_pk_context pk; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -134,14 +137,12 @@ int main( int argc, char *argv[] ) if( ( f = fopen( filename, "wb+" ) ) == NULL ) { - ret = 1; mbedtls_printf( " failed\n ! Could not create %s\n\n", filename ); goto exit; } if( fwrite( buf, 1, olen, f ) != olen ) { - ret = 1; mbedtls_printf( "failed\n ! fwrite failed\n\n" ); fclose( f ); goto exit; @@ -151,13 +152,15 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Done (created \"%s\")\n\n", filename ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_pk_free( &pk ); mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); #if defined(MBEDTLS_ERROR_C) - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); mbedtls_printf( " ! Last error was: %s\n", buf ); @@ -169,7 +172,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ? EXIT_FAILURE : EXIT_SUCCESS ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SHA256_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO && From 9f3379d3cac97e811977eed0d986cf686d68e7c7 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:30:05 +0100 Subject: [PATCH 0517/1100] Fix ret code in pk_verify.c --- programs/pkey/pk_verify.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/programs/pkey/pk_verify.c b/programs/pkey/pk_verify.c index d35d17f69d..24fcd37611 100644 --- a/programs/pkey/pk_verify.c +++ b/programs/pkey/pk_verify.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_snprintf snprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_snprintf snprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_MD_C) || \ !defined(MBEDTLS_SHA256_C) || !defined(MBEDTLS_PK_PARSE_C) || \ @@ -56,6 +59,7 @@ int main( int argc, char *argv[] ) { FILE *f; int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i; mbedtls_pk_context pk; unsigned char hash[32]; @@ -87,7 +91,6 @@ int main( int argc, char *argv[] ) /* * Extract the signature from the file */ - ret = 1; mbedtls_snprintf( filename, sizeof(filename), "%s.sig", argv[2] ); if( ( f = fopen( filename, "rb" ) ) == NULL ) @@ -125,13 +128,13 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . OK (the signature is valid)\n\n" ); - ret = 0; + exit_code = MBEDTLS_EXIT_SUCCESS; exit: mbedtls_pk_free( &pk ); #if defined(MBEDTLS_ERROR_C) - if( ret != 0 ) + if( exit_code != MBEDTLS_EXIT_SUCCESS ) { mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); mbedtls_printf( " ! Last error was: %s\n", buf ); @@ -143,7 +146,7 @@ exit: fflush( stdout ); getchar(); #endif - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_SHA256_C && MBEDTLS_PK_PARSE_C && MBEDTLS_FS_IO */ From dabd78fdc36f109b2c11f60d3d02f02338286a99 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Sun, 29 Apr 2018 22:35:36 +0100 Subject: [PATCH 0518/1100] Fix ret code in generic_sum.c --- programs/hash/generic_sum.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/programs/hash/generic_sum.c b/programs/hash/generic_sum.c index d1e81d4918..3fb215b225 100644 --- a/programs/hash/generic_sum.c +++ b/programs/hash/generic_sum.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_MD_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/md.h" @@ -169,7 +172,8 @@ static int generic_check( const mbedtls_md_info_t *md_info, char *filename ) int main( int argc, char *argv[] ) { - int ret, i; + int ret = 1, i; + int exit_code = MBEDTLS_EXIT_FAILURE; const mbedtls_md_info_t *md_info; mbedtls_md_context_t md_ctx; @@ -196,7 +200,7 @@ int main( int argc, char *argv[] ) fflush( stdout ); getchar(); #endif - return( 1 ); + return( exit_code ); } /* @@ -206,12 +210,12 @@ int main( int argc, char *argv[] ) if( md_info == NULL ) { mbedtls_fprintf( stderr, "Message Digest '%s' not found\n", argv[1] ); - return( 1 ); + return( exit_code ); } if( mbedtls_md_setup( &md_ctx, md_info, 0 ) ) { mbedtls_fprintf( stderr, "Failed to initialize context.\n" ); - return( 1 ); + return( exit_code ); } ret = 0; @@ -224,9 +228,12 @@ int main( int argc, char *argv[] ) for( i = 2; i < argc; i++ ) ret |= generic_print( md_info, argv[i] ); + if ( ret == 0 ) + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_md_free( &md_ctx ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_MD_C && MBEDTLS_FS_IO */ From 7a9d01ceede3805f45b0aa6041ebaaa88ef022eb Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 20:05:57 +0100 Subject: [PATCH 0519/1100] Fix ret code in cert_app.c --- programs/x509/cert_app.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c index c893ca8de1..7ad4e86ffe 100644 --- a/programs/x509/cert_app.c +++ b/programs/x509/cert_app.c @@ -145,7 +145,8 @@ static int my_verify( void *data, mbedtls_x509_crt *crt, int depth, uint32_t *fl int main( int argc, char *argv[] ) { - int ret = 0; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context server_fd; unsigned char buf[1024]; mbedtls_entropy_context entropy; @@ -180,7 +181,6 @@ int main( int argc, char *argv[] ) { usage: mbedtls_printf( USAGE ); - ret = 2; goto exit; } @@ -252,19 +252,23 @@ int main( int argc, char *argv[] ) if( strlen( opt.ca_path ) ) { - ret = mbedtls_x509_crt_parse_path( &cacert, opt.ca_path ); + if( ( ret = mbedtls_x509_crt_parse_path( &cacert, opt.ca_path ) ) < 0 ) + { + mbedtls_printf( " failed\n ! mbedtls_x509_crt_parse_path returned -0x%x\n\n", -ret ); + goto exit; + } + verify = 1; } else if( strlen( opt.ca_file ) ) { - ret = mbedtls_x509_crt_parse_file( &cacert, opt.ca_file ); - verify = 1; - } + if( ( ret = mbedtls_x509_crt_parse_file( &cacert, opt.ca_file ) ) < 0 ) + { + mbedtls_printf( " failed\n ! mbedtls_x509_crt_parse_file returned -0x%x\n\n", -ret ); + goto exit; + } - if( ret < 0 ) - { - mbedtls_printf( " failed\n ! mbedtls_x509_crt_parse returned -0x%x\n\n", -ret ); - goto exit; + verify = 1; } mbedtls_printf( " ok (%d skipped)\n", ret ); @@ -332,8 +336,6 @@ int main( int argc, char *argv[] ) cur = cur->next; } - ret = 0; - /* * 1.3 Verify the certificate */ @@ -470,6 +472,8 @@ ssl_exit: else goto usage; + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_net_free( &server_fd ); @@ -485,10 +489,7 @@ exit: fflush( stdout ); getchar(); #endif - if( ret < 0 ) - ret = 1; - - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_ENTROPY_C && MBEDTLS_SSL_TLS_C && MBEDTLS_SSL_CLI_C && MBEDTLS_NET_C && MBEDTLS_RSA_C && From 7fe4edf8c0ea6ae98ec652d73e39c68432a545a7 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:07:15 +0100 Subject: [PATCH 0520/1100] Fix ret code in rsa_decrypt.c --- programs/pkey/rsa_decrypt.c | 61 ++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/programs/pkey/rsa_decrypt.c b/programs/pkey/rsa_decrypt.c index 2da3fbf110..0a252d2ada 100644 --- a/programs/pkey/rsa_decrypt.c +++ b/programs/pkey/rsa_decrypt.c @@ -30,11 +30,11 @@ #else #include #include -#define mbedtls_printf printf -#define mbedtls_exit exit +#define mbedtls_printf printf +#define mbedtls_exit exit #define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE -#endif +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_RSA_C) && \ defined(MBEDTLS_FS_IO) && defined(MBEDTLS_ENTROPY_C) && \ @@ -61,7 +61,9 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int return_val, exit_val, c; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; + int c; size_t i; mbedtls_rsa_context rsa; mbedtls_mpi N, P, Q, D, E, DP, DQ, QP; @@ -73,7 +75,6 @@ int main( int argc, char *argv[] ) ((void) argv); memset(result, 0, sizeof( result ) ); - exit_val = MBEDTLS_EXIT_SUCCESS; if( argc != 1 ) { @@ -83,7 +84,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n" ); #endif - mbedtls_exit( MBEDTLS_EXIT_FAILURE ); + mbedtls_exit( exit_code ); } mbedtls_printf( "\n . Seeding the random number generator..." ); @@ -96,14 +97,13 @@ int main( int argc, char *argv[] ) mbedtls_mpi_init( &D ); mbedtls_mpi_init( &E ); mbedtls_mpi_init( &DP ); mbedtls_mpi_init( &DQ ); mbedtls_mpi_init( &QP ); - return_val = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, + ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, strlen( pers ) ); - if( return_val != 0 ) + if( ret != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", - return_val ); + ret ); goto exit; } @@ -112,40 +112,38 @@ int main( int argc, char *argv[] ) if( ( f = fopen( "rsa_priv.txt", "rb" ) ) == NULL ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! Could not open rsa_priv.txt\n" \ " ! Please run rsa_genkey first\n\n" ); goto exit; } - if( ( return_val = mbedtls_mpi_read_file( &N , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &E , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &D , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &P , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &Q , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &DP , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &DQ , 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &QP , 16, f ) ) != 0 ) + if( ( ret = mbedtls_mpi_read_file( &N , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &E , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &D , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &P , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &Q , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &DP , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &DQ , 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &QP , 16, f ) ) != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_mpi_read_file returned %d\n\n", - return_val ); + ret ); fclose( f ); goto exit; } fclose( f ); - if( ( return_val = mbedtls_rsa_import( &rsa, &N, &P, &Q, &D, &E ) ) != 0 ) + if( ( ret = mbedtls_rsa_import( &rsa, &N, &P, &Q, &D, &E ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_rsa_import returned %d\n\n", - return_val ); + ret ); goto exit; } - if( ( return_val = mbedtls_rsa_complete( &rsa ) ) != 0 ) + if( ( ret = mbedtls_rsa_complete( &rsa ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_rsa_complete returned %d\n\n", - return_val ); + ret ); goto exit; } @@ -154,7 +152,6 @@ int main( int argc, char *argv[] ) */ if( ( f = fopen( "result-enc.txt", "rb" ) ) == NULL ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( "\n ! Could not open %s\n\n", "result-enc.txt" ); goto exit; } @@ -169,7 +166,6 @@ int main( int argc, char *argv[] ) if( i != rsa.len ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( "\n ! Invalid RSA signature format\n\n" ); goto exit; } @@ -180,14 +176,13 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Decrypting the encrypted data" ); fflush( stdout ); - return_val = mbedtls_rsa_pkcs1_decrypt( &rsa, mbedtls_ctr_drbg_random, + ret = mbedtls_rsa_pkcs1_decrypt( &rsa, mbedtls_ctr_drbg_random, &ctr_drbg, MBEDTLS_RSA_PRIVATE, &i, buf, result, 1024 ); - if( return_val != 0 ) + if( ret != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_rsa_pkcs1_decrypt returned %d\n\n", - return_val ); + ret ); goto exit; } @@ -195,6 +190,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "The decrypted result is: '%s'\n\n", result ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_ctr_drbg_free( &ctr_drbg ); mbedtls_entropy_free( &entropy ); @@ -208,6 +205,6 @@ exit: fflush( stdout ); getchar(); #endif - return( exit_val ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_FS_IO */ From 25b5af58b4651f448d16b26109f82029ae248a39 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:08:36 +0100 Subject: [PATCH 0521/1100] Fix ret code in rsa_encrypt.c --- programs/pkey/rsa_encrypt.c | 61 ++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/programs/pkey/rsa_encrypt.c b/programs/pkey/rsa_encrypt.c index 81c27d888f..411657a07c 100644 --- a/programs/pkey/rsa_encrypt.c +++ b/programs/pkey/rsa_encrypt.c @@ -30,12 +30,12 @@ #else #include #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#define mbedtls_exit exit -#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS -#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE -#endif +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define mbedtls_exit exit +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_RSA_C) && \ defined(MBEDTLS_ENTROPY_C) && defined(MBEDTLS_FS_IO) && \ @@ -61,7 +61,8 @@ int main( void ) int main( int argc, char *argv[] ) { FILE *f; - int return_val, exit_val; + int ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; size_t i; mbedtls_rsa_context rsa; mbedtls_entropy_context entropy; @@ -71,8 +72,6 @@ int main( int argc, char *argv[] ) const char *pers = "rsa_encrypt"; mbedtls_mpi N, E; - exit_val = MBEDTLS_EXIT_SUCCESS; - if( argc != 2 ) { mbedtls_printf( "usage: rsa_encrypt \n" ); @@ -81,7 +80,7 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n" ); #endif - mbedtls_exit( MBEDTLS_EXIT_FAILURE ); + mbedtls_exit( exit_code ); } mbedtls_printf( "\n . Seeding the random number generator..." ); @@ -92,14 +91,13 @@ int main( int argc, char *argv[] ) mbedtls_ctr_drbg_init( &ctr_drbg ); mbedtls_entropy_init( &entropy ); - return_val = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, - &entropy, (const unsigned char *) pers, - strlen( pers ) ); - if( return_val != 0 ) + ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, + &entropy, (const unsigned char *) pers, + strlen( pers ) ); + if( ret != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", - return_val ); + ret ); goto exit; } @@ -108,35 +106,30 @@ int main( int argc, char *argv[] ) if( ( f = fopen( "rsa_pub.txt", "rb" ) ) == NULL ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! Could not open rsa_pub.txt\n" \ " ! Please run rsa_genkey first\n\n" ); goto exit; } - if( ( return_val = mbedtls_mpi_read_file( &N, 16, f ) ) != 0 || - ( return_val = mbedtls_mpi_read_file( &E, 16, f ) ) != 0 ) + if( ( ret = mbedtls_mpi_read_file( &N, 16, f ) ) != 0 || + ( ret = mbedtls_mpi_read_file( &E, 16, f ) ) != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_mpi_read_file returned %d\n\n", - return_val ); + ret ); fclose( f ); goto exit; } fclose( f ); - if( ( return_val = mbedtls_rsa_import( &rsa, &N, NULL, - NULL, NULL, &E ) ) != 0 ) + if( ( ret = mbedtls_rsa_import( &rsa, &N, NULL, NULL, NULL, &E ) ) != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_rsa_import returned %d\n\n", - return_val ); + ret ); goto exit; } if( strlen( argv[1] ) > 100 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " Input data larger than 100 characters.\n\n" ); goto exit; } @@ -149,14 +142,13 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Generating the RSA encrypted value" ); fflush( stdout ); - return_val = mbedtls_rsa_pkcs1_encrypt( &rsa, mbedtls_ctr_drbg_random, - &ctr_drbg, MBEDTLS_RSA_PUBLIC, - strlen( argv[1] ), input, buf ); - if( return_val != 0 ) + ret = mbedtls_rsa_pkcs1_encrypt( &rsa, mbedtls_ctr_drbg_random, + &ctr_drbg, MBEDTLS_RSA_PUBLIC, + strlen( argv[1] ), input, buf ); + if( ret != 0 ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! mbedtls_rsa_pkcs1_encrypt returned %d\n\n", - return_val ); + ret ); goto exit; } @@ -165,7 +157,6 @@ int main( int argc, char *argv[] ) */ if( ( f = fopen( "result-enc.txt", "wb+" ) ) == NULL ) { - exit_val = MBEDTLS_EXIT_FAILURE; mbedtls_printf( " failed\n ! Could not create %s\n\n", "result-enc.txt" ); goto exit; } @@ -178,6 +169,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Done (created \"%s\")\n\n", "result-enc.txt" ); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E ); mbedtls_ctr_drbg_free( &ctr_drbg ); @@ -189,7 +182,7 @@ exit: fflush( stdout ); getchar(); #endif - return( exit_val ); + return( exit_code ); } #endif /* MBEDTLS_BIGNUM_C && MBEDTLS_RSA_C && MBEDTLS_ENTROPY_C && MBEDTLS_FS_IO && MBEDTLS_CTR_DRBG_C */ From 28abd8e98cab6b4e6f23b7818076f468ba12b28d Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:09:18 +0100 Subject: [PATCH 0522/1100] Fix ret code in gen_random_havege.c --- programs/random/gen_random_havege.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/programs/random/gen_random_havege.c b/programs/random/gen_random_havege.c index 6c31462654..3fb3f01963 100644 --- a/programs/random/gen_random_havege.c +++ b/programs/random/gen_random_havege.c @@ -29,9 +29,12 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#include +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_HAVEGE_C) && defined(MBEDTLS_FS_IO) #include "mbedtls/havege.h" @@ -51,20 +54,21 @@ int main( int argc, char *argv[] ) { FILE *f; time_t t; - int i, k, ret = 0; + int i, k, ret = 1; + int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_havege_state hs; unsigned char buf[1024]; if( argc < 2 ) { mbedtls_fprintf( stderr, "usage: %s \n", argv[0] ); - return( 1 ); + return( exit_code ); } if( ( f = fopen( argv[1], "wb+" ) ) == NULL ) { mbedtls_printf( "failed to open '%s' for writing.\n", argv[1] ); - return( 1 ); + return( exit_code ); } mbedtls_havege_init( &hs ); @@ -73,11 +77,10 @@ int main( int argc, char *argv[] ) for( i = 0, k = 768; i < k; i++ ) { - if( mbedtls_havege_random( &hs, buf, sizeof( buf ) ) != 0 ) + if( ( ret = mbedtls_havege_random( &hs, buf, sizeof( buf ) ) ) != 0 ) { - mbedtls_printf( "Failed to get random from source.\n" ); - - ret = 1; + mbedtls_printf( " failed\n ! mbedtls_havege_random returned -0x%04X", + -ret ); goto exit; } @@ -93,9 +96,11 @@ int main( int argc, char *argv[] ) mbedtls_printf(" \n "); + exit_code = MBEDTLS_EXIT_SUCCESS; + exit: mbedtls_havege_free( &hs ); fclose( f ); - return( ret ); + return( exit_code ); } #endif /* MBEDTLS_HAVEGE_C */ From 7d42965ea8d25f17f38436927bc3aad62cb68596 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:42:33 +0100 Subject: [PATCH 0523/1100] Fix typo in platform macro defines for examples --- programs/aes/aescrypt2.c | 2 +- programs/aes/crypt_and_hash.c | 2 +- programs/hash/generic_sum.c | 2 +- programs/pkey/dh_client.c | 2 +- programs/pkey/dh_genprime.c | 2 +- programs/pkey/dh_server.c | 2 +- programs/pkey/ecdh_curve25519.c | 2 +- programs/pkey/ecdsa.c | 2 +- programs/pkey/gen_key.c | 2 +- programs/pkey/key_app.c | 2 +- programs/pkey/key_app_writer.c | 2 +- programs/pkey/mpi_demo.c | 2 +- programs/pkey/pk_encrypt.c | 2 +- programs/pkey/pk_sign.c | 2 +- programs/pkey/pk_verify.c | 2 +- programs/pkey/rsa_genkey.c | 2 +- programs/pkey/rsa_sign.c | 2 +- programs/pkey/rsa_sign_pss.c | 2 +- programs/pkey/rsa_verify.c | 2 +- programs/pkey/rsa_verify_pss.c | 2 +- programs/random/gen_entropy.c | 2 +- programs/random/gen_random_ctr_drbg.c | 2 +- programs/ssl/ssl_client1.c | 2 +- programs/ssl/ssl_fork_server.c | 2 +- programs/ssl/ssl_mail_client.c | 2 +- programs/test/ssl_cert_test.c | 2 +- programs/test/udp_proxy.c | 2 +- programs/util/pem2der.c | 2 +- programs/x509/cert_req.c | 2 +- programs/x509/cert_write.c | 2 +- programs/x509/crl_app.c | 2 +- programs/x509/req_app.c | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/programs/aes/aescrypt2.c b/programs/aes/aescrypt2.c index 31daf1e2c3..c727f936e1 100644 --- a/programs/aes/aescrypt2.c +++ b/programs/aes/aescrypt2.c @@ -32,7 +32,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c index 9e234e6727..99d30c9a98 100644 --- a/programs/aes/crypt_and_hash.c +++ b/programs/aes/crypt_and_hash.c @@ -33,7 +33,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/hash/generic_sum.c b/programs/hash/generic_sum.c index 3fb215b225..bbe8d92a20 100644 --- a/programs/hash/generic_sum.c +++ b/programs/hash/generic_sum.c @@ -32,7 +32,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c index 68f0df58ea..7ec47acab7 100644 --- a/programs/pkey/dh_client.c +++ b/programs/pkey/dh_client.c @@ -32,7 +32,7 @@ #include #define mbedtls_printf printf #define mbedtls_time_t time_t -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/dh_genprime.c b/programs/pkey/dh_genprime.c index 7884ea6680..dbe9153386 100644 --- a/programs/pkey/dh_genprime.c +++ b/programs/pkey/dh_genprime.c @@ -32,7 +32,7 @@ #include #define mbedtls_printf printf #define mbedtls_time_t time_t -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/dh_server.c b/programs/pkey/dh_server.c index d7765e332a..c4e2c391e2 100644 --- a/programs/pkey/dh_server.c +++ b/programs/pkey/dh_server.c @@ -32,7 +32,7 @@ #include #define mbedtls_printf printf #define mbedtls_time_t time_t -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/ecdh_curve25519.c b/programs/pkey/ecdh_curve25519.c index 1f52126af8..5db04088f9 100644 --- a/programs/pkey/ecdh_curve25519.c +++ b/programs/pkey/ecdh_curve25519.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/ecdsa.c b/programs/pkey/ecdsa.c index 8455bb52bf..c653df9e42 100644 --- a/programs/pkey/ecdsa.c +++ b/programs/pkey/ecdsa.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/gen_key.c b/programs/pkey/gen_key.c index 9a98fda56e..f01bf5fcdd 100644 --- a/programs/pkey/gen_key.c +++ b/programs/pkey/gen_key.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index 56930781fb..7a4cb3976b 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/key_app_writer.c b/programs/pkey/key_app_writer.c index 5c151e119b..bd9eaf6acc 100644 --- a/programs/pkey/key_app_writer.c +++ b/programs/pkey/key_app_writer.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/mpi_demo.c b/programs/pkey/mpi_demo.c index 5b40c51858..365bdc4806 100644 --- a/programs/pkey/mpi_demo.c +++ b/programs/pkey/mpi_demo.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c index b4b7107dd7..400619c5c8 100644 --- a/programs/pkey/pk_encrypt.c +++ b/programs/pkey/pk_encrypt.c @@ -32,7 +32,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/pk_sign.c b/programs/pkey/pk_sign.c index 240be6b927..7ec46752ad 100644 --- a/programs/pkey/pk_sign.c +++ b/programs/pkey/pk_sign.c @@ -32,7 +32,7 @@ #include #define mbedtls_snprintf snprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/pk_verify.c b/programs/pkey/pk_verify.c index 24fcd37611..3c7709f9d5 100644 --- a/programs/pkey/pk_verify.c +++ b/programs/pkey/pk_verify.c @@ -32,7 +32,7 @@ #include #define mbedtls_snprintf snprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/rsa_genkey.c b/programs/pkey/rsa_genkey.c index 1afec559bb..3359e14074 100644 --- a/programs/pkey/rsa_genkey.c +++ b/programs/pkey/rsa_genkey.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/rsa_sign.c b/programs/pkey/rsa_sign.c index c6c7905193..b16fe5d226 100644 --- a/programs/pkey/rsa_sign.c +++ b/programs/pkey/rsa_sign.c @@ -33,7 +33,7 @@ #define mbedtls_fprintf fprintf #define mbedtls_printf printf #define mbedtls_snprintf snprintf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/rsa_sign_pss.c b/programs/pkey/rsa_sign_pss.c index 3b58c297bd..b0b0f7ecf4 100644 --- a/programs/pkey/rsa_sign_pss.c +++ b/programs/pkey/rsa_sign_pss.c @@ -32,7 +32,7 @@ #include #define mbedtls_snprintf snprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/rsa_verify.c b/programs/pkey/rsa_verify.c index 5625abacf6..6f88345f2e 100644 --- a/programs/pkey/rsa_verify.c +++ b/programs/pkey/rsa_verify.c @@ -32,7 +32,7 @@ #include #define mbedtls_printf printf #define mbedtls_snprintf snprintf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/pkey/rsa_verify_pss.c b/programs/pkey/rsa_verify_pss.c index d681e2c5e5..7c9c68f229 100644 --- a/programs/pkey/rsa_verify_pss.c +++ b/programs/pkey/rsa_verify_pss.c @@ -32,7 +32,7 @@ #include #define mbedtls_snprintf snprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/random/gen_entropy.c b/programs/random/gen_entropy.c index bca36e0acc..a1eb3868a4 100644 --- a/programs/random/gen_entropy.c +++ b/programs/random/gen_entropy.c @@ -32,7 +32,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/random/gen_random_ctr_drbg.c b/programs/random/gen_random_ctr_drbg.c index 76d4092dea..5ade946a74 100644 --- a/programs/random/gen_random_ctr_drbg.c +++ b/programs/random/gen_random_ctr_drbg.c @@ -32,7 +32,7 @@ #include #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/ssl/ssl_client1.c b/programs/ssl/ssl_client1.c index 0e49c49aa7..bf7c0132af 100644 --- a/programs/ssl/ssl_client1.c +++ b/programs/ssl/ssl_client1.c @@ -34,7 +34,7 @@ #define mbedtls_time_t time_t #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/ssl/ssl_fork_server.c b/programs/ssl/ssl_fork_server.c index 29a297c402..1c3a80600c 100644 --- a/programs/ssl/ssl_fork_server.c +++ b/programs/ssl/ssl_fork_server.c @@ -33,7 +33,7 @@ #define mbedtls_fprintf fprintf #define mbedtls_printf printf #define mbedtls_time_t time_t -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index a414864439..04f891081d 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -34,7 +34,7 @@ #define mbedtls_time_t time_t #define mbedtls_fprintf fprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/test/ssl_cert_test.c b/programs/test/ssl_cert_test.c index 7e5ed384b2..fd3526f7fe 100644 --- a/programs/test/ssl_cert_test.c +++ b/programs/test/ssl_cert_test.c @@ -32,7 +32,7 @@ #include #define mbedtls_snprintf snprintf #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index cacd4f3033..55e0f249ce 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -40,7 +40,7 @@ #define mbedtls_time time #define mbedtls_time_t time_t #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/util/pem2der.c b/programs/util/pem2der.c index fda5f57811..73a9fb5e09 100644 --- a/programs/util/pem2der.c +++ b/programs/util/pem2der.c @@ -33,7 +33,7 @@ #define mbedtls_free free #define mbedtls_calloc calloc #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/x509/cert_req.c b/programs/x509/cert_req.c index 8b47138a5f..a32ac505f2 100644 --- a/programs/x509/cert_req.c +++ b/programs/x509/cert_req.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index 1cfe1cdcb6..09a91e077f 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/x509/crl_app.c b/programs/x509/crl_app.c index 687752fc68..f8316835fb 100644 --- a/programs/x509/crl_app.c +++ b/programs/x509/crl_app.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ diff --git a/programs/x509/req_app.c b/programs/x509/req_app.c index 131cc293f6..0f20c85f59 100644 --- a/programs/x509/req_app.c +++ b/programs/x509/req_app.c @@ -31,7 +31,7 @@ #include #include #define mbedtls_printf printf -#define MBEDTLS_EXTI_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ From bce5f7882c056d68a9f0e14cfab3ade20ba7bf99 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:43:11 +0100 Subject: [PATCH 0524/1100] Add missing platform macro defines in pk_decrypt.c --- programs/pkey/pk_decrypt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index b60f6caee6..00bd71ed3e 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -29,8 +29,11 @@ #include "mbedtls/platform.h" #else #include -#define mbedtls_printf printf -#endif +#include +#define mbedtls_printf printf +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_BIGNUM_C) && defined(MBEDTLS_PK_PARSE_C) && \ defined(MBEDTLS_FS_IO) && defined(MBEDTLS_ENTROPY_C) && \ From eb8bca65614b793585f87b9403954bf3b2d0b594 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Mon, 30 Apr 2018 22:43:29 +0100 Subject: [PATCH 0525/1100] Add missing platform macro defines in cert_app.c --- programs/x509/cert_app.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/programs/x509/cert_app.c b/programs/x509/cert_app.c index 7ad4e86ffe..c57ecca031 100644 --- a/programs/x509/cert_app.c +++ b/programs/x509/cert_app.c @@ -30,11 +30,13 @@ #else #include #include -#define mbedtls_time time -#define mbedtls_time_t time_t -#define mbedtls_fprintf fprintf -#define mbedtls_printf printf -#endif +#define mbedtls_time time +#define mbedtls_time_t time_t +#define mbedtls_fprintf fprintf +#define mbedtls_printf printf +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif /* MBEDTLS_PLATFORM_C */ #if !defined(MBEDTLS_BIGNUM_C) || !defined(MBEDTLS_ENTROPY_C) || \ !defined(MBEDTLS_SSL_TLS_C) || !defined(MBEDTLS_SSL_CLI_C) || \ From 6b9bcd62676feb1968a81db19c94bce624f3a1e6 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 1 May 2018 19:29:14 +0100 Subject: [PATCH 0526/1100] Remove redundant ret = 1 in dh_client.c --- programs/pkey/dh_client.c | 1 - 1 file changed, 1 deletion(-) diff --git a/programs/pkey/dh_client.c b/programs/pkey/dh_client.c index 7ec47acab7..3dadf48e6f 100644 --- a/programs/pkey/dh_client.c +++ b/programs/pkey/dh_client.c @@ -209,7 +209,6 @@ int main( void ) if( ( n = (size_t) ( end - p ) ) != rsa.len ) { - ret = 1; mbedtls_printf( " failed\n ! Invalid RSA signature size\n\n" ); goto exit; } From d5d983e16830b1a131b08c8f7746398a256a7e58 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 15 Jun 2018 14:05:10 +0200 Subject: [PATCH 0527/1100] ssl_server2: handle mbedtls_x509_dn_gets failure If mbedtls_x509_dn_gets fails, the server could end up calling printf on an uninitialized buffer. Check if the function succeeds. Found by Coverity. --- programs/ssl/ssl_server2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 81041c44d9..3a413ad5e5 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -962,8 +962,9 @@ static int ssl_async_start( mbedtls_ssl_context *ssl, { char dn[100]; - mbedtls_x509_dn_gets( dn, sizeof( dn ), &cert->subject ); - mbedtls_printf( "Async %s callback: looking for DN=%s\n", op_name, dn ); + if( mbedtls_x509_dn_gets( dn, sizeof( dn ), &cert->subject ) > 0 ) + mbedtls_printf( "Async %s callback: looking for DN=%s\n", + op_name, dn ); } /* Look for a private key that matches the public key in cert. From 66a8903f4a84772ec3aae8d19f92226e144803b3 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 15 Jun 2018 18:20:29 +0100 Subject: [PATCH 0528/1100] Fix for missing len var when XTS config'd and CTR not The AES XTS self-test was using a variable len, which was declared only when CTR was enabled. Changed the declaration of len to be conditional on CTR and XTS. --- library/aes.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/aes.c b/library/aes.c index 5cd96ecf50..23efdb8390 100644 --- a/library/aes.c +++ b/library/aes.c @@ -1713,8 +1713,10 @@ int mbedtls_aes_self_test( int verbose ) #if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_CFB) size_t offset; #endif -#if defined(MBEDTLS_CIPHER_MODE_CTR) +#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_XTS) int len; +#endif +#if defined(MBEDTLS_CIPHER_MODE_CTR) unsigned char nonce_counter[16]; unsigned char stream_block[16]; #endif From d9c71dad50042a14dd7a77eb7bcb77f2f0a7d99b Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 15 Jun 2018 20:31:26 +0100 Subject: [PATCH 0529/1100] Revert "Turn on MBEDTLS_SSL_ASYNC_PRIVATE by default" This reverts commit 5ffe41c8f9e53ddde74e63d58bd05fb5e67abca0. Turn off MBEDTLS_SSL_ASYNC_PRIVATE by default because we don't want to change the ABI yet. --- include/mbedtls/config.h | 2 +- tests/scripts/all.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 307b90b1f9..34dbec0bc3 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -1157,7 +1157,7 @@ * operation inside the library. * */ -#define MBEDTLS_SSL_ASYNC_PRIVATE +//#define MBEDTLS_SSL_ASYNC_PRIVATE /** * \def MBEDTLS_SSL_DEBUG_ALL diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 43c27b4bd5..8ae720e817 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -531,8 +531,8 @@ make msg "test: main suites (full config)" # ~ 5s make test -msg "test: ssl-opt.sh default, ECJPAKE (full config)" # ~ 1s -if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE' +msg "test: ssl-opt.sh default, ECJPAKE, SSL async (full config)" # ~ 1s +if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE\|SSL async private' msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' From 600c5e6d20acdc0a52de8a71b11b18296d7ebe4e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 14 Jun 2018 08:58:59 +0100 Subject: [PATCH 0530/1100] Compilation warning fixes on 32b platfrom with IAR Fix compilation warnings with IAR toolchain, on 32 bit platform. Reported by rahmanih in #683 This is based on work by Ron Eldor in PR #750, some of which was independently fixed by Azim Khan and already merged in PR #1646. --- ChangeLog | 2 ++ library/ssl_srv.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ddd56732c7..0646e6c4cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,6 +19,8 @@ Bugfix curves as well as RSA. Fixes #777 found by dbedev. * Fix for redefinition of _WIN32_WINNT to avoid overriding a definition used by user applications. Found and fixed by Fabio Alessandrelli. + * Fix compilation warnings with IAR toolchain, on 32 bit platform. + Reported by rahmanih in #683 Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. diff --git a/library/ssl_srv.c b/library/ssl_srv.c index eb19f58c0f..0ccab588eb 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2888,7 +2888,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, if( ciphersuite_info->key_exchange == MBEDTLS_KEY_EXCHANGE_ECJPAKE ) { int ret; - size_t len; + size_t len = 0; ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, @@ -2928,7 +2928,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, if( mbedtls_ssl_ciphersuite_uses_dhe( ciphersuite_info ) ) { int ret; - size_t len; + size_t len = 0; if( ssl->conf->dhm_P.p == NULL || ssl->conf->dhm_G.p == NULL ) { @@ -2993,7 +2993,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, const mbedtls_ecp_curve_info **curve = NULL; const mbedtls_ecp_group_id *gid; int ret; - size_t len; + size_t len = 0; /* Match our preference list against the offered curves */ for( gid = ssl->conf->curve_list; *gid != MBEDTLS_ECP_DP_NONE; gid++ ) From c7bc9e122f7c9536277234fc484c224d686bb811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 18 Jun 2018 10:30:30 +0200 Subject: [PATCH 0531/1100] Fix a few typos --- include/mbedtls/chacha20.h | 2 +- include/mbedtls/chachapoly.h | 2 +- include/mbedtls/poly1305.h | 8 ++++---- library/chachapoly.c | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index d7a0750c24..47bd7d38b9 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -139,7 +139,7 @@ int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, * \c mbedtls_chacha20_starts() must be called at least once * to setup the context before this function can be called. * - * \note This function can be called mutliple times in a row in + * \note This function can be called multiple times in a row in * order to encrypt of decrypt data piecewise with the same * key and nonce. * diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index 649749a015..42b2b230c5 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -175,7 +175,7 @@ int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, * The Additional Authenticated Data (AAD), also called * Associated Data (AD) is only authenticated but not * encrypted nor included in the encrypted output. It is - * usually transmitted separately fro mthe ciphertext or + * usually transmitted separately from the ciphertext or * computed locally by each party. * * \note This function is called before data is encrypted/decrypted. diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 5c69a813a7..54b50abc25 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -1,7 +1,7 @@ /** * \file poly1305.h * - * \brief This file containts Poly1305 definitions and functions. + * \brief This file contains Poly1305 definitions and functions. * * Poly1305 is a one-time message authenticator that can be used to * authenticate messages. Poly1305-AES was created by Daniel @@ -109,9 +109,9 @@ int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, * \brief This functions feeds an input buffer into an ongoing * Poly1305 computation. * - * It is called between \c mbedtls_cipher_cmac_starts() and - * \c mbedtls_cipher_cmac_finish(). - * Can be called repeatedly to process a stream of data. + * It is called between \c mbedtls_cipher_poly1305_starts() and + * \c mbedtls_cipher_poly1305_finish(). + * It can be called repeatedly to process a stream of data. * * \param ctx The Poly1305 context to use for the Poly1305 operation. * \param ilen The length of the input data (in bytes). Any value is accepted. diff --git a/library/chachapoly.c b/library/chachapoly.c index 80c1ebf8f6..860f877653 100644 --- a/library/chachapoly.c +++ b/library/chachapoly.c @@ -187,7 +187,7 @@ int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, } else if( ctx->state != CHACHAPOLY_STATE_AAD ) { - return(MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); + return( MBEDTLS_ERR_CHACHAPOLY_BAD_STATE ); } ctx->aad_len += aad_len; From b6a5bffc4b10eb6c4083d2d9d6550bdd179caccd Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 18 Jun 2018 11:51:36 +0100 Subject: [PATCH 0532/1100] Add ChangeLog entry for clang version fix. Issue #1072 --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0646e6c4cf..c02dc84075 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,6 +24,9 @@ Bugfix Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. + * Changed the Clang parameters used in the CMake build files to work for + versions later than 3.6. Versions of Clang earlier than this may no longer + work. Fixes #1072 = mbed TLS 2.10.0 branch released 2018-06-06 From d8213d00db781e93ce1e19e3e8f8b4308816bd9c Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 25 May 2016 20:56:48 +1000 Subject: [PATCH 0533/1100] Let MBEDTLS_SSL_MAX_CONTENT_LEN to be split into outward & inward sizes For the situation where the mbedTLS device has limited RAM, but the other end of the connection doesn't support the max_fragment_length extension. To be spec-compliant, mbedTLS has to keep a 16384 byte incoming buffer. However the outgoing buffer can be made smaller without breaking spec compliance, and we save some RAM. See comments in include/mbedtls/config.h for some more details. (The lower limit of outgoing buffer size is the buffer size used during handshake/cert negotiation. As the handshake is half-duplex it might even be possible to store this data in the "incoming" buffer during the handshake, which would save even more RAM - but it would also be a lot hackier and error-prone. I didn't really explore this possibility, but thought I'd mention it here in case someone sees this later on a mission to jam mbedTLS into an even tinier RAM footprint.) --- include/mbedtls/compat-1.3.h | 3 +- include/mbedtls/config.h | 46 +++++++++++++- include/mbedtls/ssl.h | 13 +++- include/mbedtls/ssl_internal.h | 63 +++++++++++++++---- library/ssl_cli.c | 36 +++++------ library/ssl_srv.c | 16 ++--- library/ssl_tls.c | 108 +++++++++++++++++++-------------- 7 files changed, 198 insertions(+), 87 deletions(-) diff --git a/include/mbedtls/compat-1.3.h b/include/mbedtls/compat-1.3.h index 600a0f154c..213b691403 100644 --- a/include/mbedtls/compat-1.3.h +++ b/include/mbedtls/compat-1.3.h @@ -1378,7 +1378,8 @@ #define SSL_ANTI_REPLAY_ENABLED MBEDTLS_SSL_ANTI_REPLAY_ENABLED #define SSL_ARC4_DISABLED MBEDTLS_SSL_ARC4_DISABLED #define SSL_ARC4_ENABLED MBEDTLS_SSL_ARC4_ENABLED -#define SSL_BUFFER_LEN MBEDTLS_SSL_BUFFER_LEN +#define SSL_BUFFER_LEN ( ( ( MBEDTLS_SSL_IN_BUFFER_LEN ) < ( MBEDTLS_SSL_OUT_BUFFER_LEN ) ) \ + ? ( MBEDTLS_SSL_IN_BUFFER_LEN ) : ( MBEDTLS_SSL_OUT_BUFFER_LEN ) ) #define SSL_CACHE_DEFAULT_MAX_ENTRIES MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES #define SSL_CACHE_DEFAULT_TIMEOUT MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT #define SSL_CBC_RECORD_SPLITTING_DISABLED MBEDTLS_SSL_CBC_RECORD_SPLITTING_DISABLED diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 307b90b1f9..667177a556 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2896,7 +2896,51 @@ //#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */ /* SSL options */ -//#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 /**< Maxium fragment length in bytes, determines the size of each of the two internal I/O buffers */ + +/** \def MBEDTLS_SSL_MAX_CONTENT_LEN + * + * Maximum fragment length in bytes. + * + * Determines the size of both the incoming and outgoing TLS I/O buffers. + * + * Uncommenting MBEDTLS_SSL_IN_CONTENT_LEN and/or MBEDTLS_SSL_OUT_CONTENT_LEN + * will override this length by setting maximum incoming and/or outgoing + * fragment length, respectively. + */ +//#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 + +/** \def MBEDTLS_SSL_IN_CONTENT_LEN + * + * Maximum incoming fragment length in bytes. + * + * Uncomment to set the size of the inward TLS buffer independently of the + * outward buffer. + */ +//#define MBEDTLS_SSL_IN_CONTENT_LEN 16384 + +/** \def MBEDTLS_SSL_OUT_CONTENT_LEN + * + * Maximum outgoing fragment length in bytes. + * + * Uncomment to set the size of the outward TLS buffer independently of the + * inward buffer. + * + * It is possible to save RAM by setting a smaller outward buffer, while keeping + * the default inward 16384 byte buffer to conform to the TLS specification. + * + * The minimum required outward buffer size is determined by the handshake + * protocol's usage. Handshaking will fail if the outward buffer is too small. + * The specific size requirement depends on the configured ciphers and any + * certificate data which is sent during the handshake. + * + * For absolute minimum RAM usage, it's best to enable + * MBEDTLS_SSL_MAX_FRAGMENT_LENGTH and reduce MBEDTLS_SSL_MAX_CONTENT_LEN. This + * reduces both incoming and outgoing buffer sizes. However this is only + * guaranteed if the other end of the connection also supports the TLS + * max_fragment_len extension. Otherwise the connection may fail. + */ +//#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384 + //#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ //#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ //#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */ diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 45135500f2..886c14c361 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -220,7 +220,7 @@ #endif /* - * Maxium fragment length in bytes, + * Maximum fragment length in bytes, * determines the size of each of the two internal I/O buffers. * * Note: the RFC defines the default size of SSL / TLS messages. If you @@ -234,6 +234,14 @@ #define MBEDTLS_SSL_MAX_CONTENT_LEN 16384 /**< Size of the input / output buffer */ #endif +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) +#define MBEDTLS_SSL_IN_CONTENT_LEN MBEDTLS_SSL_MAX_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) +#define MBEDTLS_SSL_OUT_CONTENT_LEN MBEDTLS_SSL_MAX_CONTENT_LEN +#endif + /* \} name SECTION: Module settings */ /* @@ -2418,7 +2426,8 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** * \brief Set the maximum fragment length to emit and/or negotiate - * (Default: MBEDTLS_SSL_MAX_CONTENT_LEN, usually 2^14 bytes) + * (Default: the smaller of MBEDTLS_SSL_IN_CONTENT_LEN and + * MBEDTLS_SSL_OUT_CONTENT_LEN, usually 2^14 bytes) * (Server: set maximum fragment length to emit, * usually negotiated by the client during handshake * (Client: set maximum fragment length to emit *and* diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index f48fe90425..d214703d77 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -143,32 +143,73 @@ #define MBEDTLS_SSL_PADDING_ADD 0 #endif -#define MBEDTLS_SSL_PAYLOAD_LEN ( MBEDTLS_SSL_MAX_CONTENT_LEN \ - + MBEDTLS_SSL_COMPRESSION_ADD \ - + MBEDTLS_MAX_IV_LENGTH \ - + MBEDTLS_SSL_MAC_ADD \ - + MBEDTLS_SSL_PADDING_ADD \ - ) +#define MBEDTLS_SSL_PAYLOAD_OVERHEAD ( MBEDTLS_SSL_COMPRESSION_ADD + \ + MBEDTLS_MAX_IV_LENGTH + \ + MBEDTLS_SSL_MAC_ADD + \ + MBEDTLS_SSL_PADDING_ADD \ + ) + +#define MBEDTLS_SSL_IN_PAYLOAD_LEN ( MBEDTLS_SSL_PAYLOAD_OVERHEAD + \ + ( MBEDTLS_SSL_IN_CONTENT_LEN ) ) + +#define MBEDTLS_SSL_OUT_PAYLOAD_LEN ( MBEDTLS_SSL_PAYLOAD_OVERHEAD + \ + ( MBEDTLS_SSL_OUT_CONTENT_LEN ) ) + +/* Maximum length we can advertise as our max content length for + RFC 6066 max_fragment_length extension negotiation purposes + (the lesser of both sizes, if they are unequal.) + */ +#define MBEDTLS_TLS_EXT_ADV_CONTENT_LEN ( \ + (MBEDTLS_SSL_IN_CONTENT_LEN > MBEDTLS_SSL_OUT_CONTENT_LEN) \ + ? ( MBEDTLS_SSL_OUT_CONTENT_LEN ) \ + : ( MBEDTLS_SSL_IN_CONTENT_LEN ) \ + ) /* * Check that we obey the standard's message size bounds */ #if MBEDTLS_SSL_MAX_CONTENT_LEN > 16384 -#error Bad configuration - record content too large. +#error "Bad configuration - record content too large." #endif -#if MBEDTLS_SSL_PAYLOAD_LEN > 16384 + 2048 -#error Bad configuration - protected record payload too large. +#if MBEDTLS_SSL_IN_CONTENT_LEN > MBEDTLS_SSL_MAX_CONTENT_LEN +#error "Bad configuration - incoming record content should not be larger than MBEDTLS_SSL_MAX_CONTENT_LEN." #endif +#if MBEDTLS_SSL_OUT_CONTENT_LEN > MBEDTLS_SSL_MAX_CONTENT_LEN +#error "Bad configuration - outgoing record content should not be larger than MBEDTLS_SSL_MAX_CONTENT_LEN." +#endif + +#if MBEDTLS_SSL_IN_PAYLOAD_LEN > MBEDTLS_SSL_MAX_CONTENT_LEN + 2048 +#error "Bad configuration - incoming protected record payload too large." +#endif + +#if MBEDTLS_SSL_OUT_PAYLOAD_LEN > MBEDTLS_SSL_MAX_CONTENT_LEN + 2048 +#error "Bad configuration - outgoing protected record payload too large." +#endif + +/* Calculate buffer sizes */ + /* Note: Even though the TLS record header is only 5 bytes long, we're internally using 8 bytes to store the implicit sequence number. */ #define MBEDTLS_SSL_HEADER_LEN 13 -#define MBEDTLS_SSL_BUFFER_LEN \ - ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_PAYLOAD_LEN ) ) +#define MBEDTLS_SSL_IN_BUFFER_LEN \ + ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_IN_PAYLOAD_LEN ) ) + +#define MBEDTLS_SSL_OUT_BUFFER_LEN \ + ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_OUT_PAYLOAD_LEN ) ) + +#ifdef MBEDTLS_ZLIB_SUPPORT +/* Compression buffer holds both IN and OUT buffers, so should be size of the larger */ +#define MBEDTLS_SSL_COMPRESS_BUFFER_LEN ( \ + ( MBEDTLS_SSL_IN_BUFFER_LEN > MBEDTLS_SSL_OUT_BUFFER_LEN ) \ + ? MBEDTLS_SSL_IN_BUFFER_LEN \ + : MBEDTLS_SSL_OUT_BUFFER_LEN \ + ) +#endif /* * TLS extension flags (for extensions with outgoing ServerHello content diff --git a/library/ssl_cli.c b/library/ssl_cli.c index e537f9d2e1..09d8a0d7dd 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -57,7 +57,7 @@ static void ssl_write_hostname_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t hostname_len; *olen = 0; @@ -127,7 +127,7 @@ static void ssl_write_renegotiation_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -171,7 +171,7 @@ static void ssl_write_signature_algorithms_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t sig_alg_len = 0; const int *md; #if defined(MBEDTLS_RSA_C) || defined(MBEDTLS_ECDSA_C) @@ -256,7 +256,7 @@ static void ssl_write_supported_elliptic_curves_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; unsigned char *elliptic_curve_list = p + 6; size_t elliptic_curve_len = 0; const mbedtls_ecp_curve_info *info; @@ -329,7 +329,7 @@ static void ssl_write_supported_point_formats_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -362,7 +362,7 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, { int ret; unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t kkpp_len; *olen = 0; @@ -439,7 +439,7 @@ static void ssl_write_max_fragment_length_ext( mbedtls_ssl_context *ssl, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -472,7 +472,7 @@ static void ssl_write_truncated_hmac_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -504,7 +504,7 @@ static void ssl_write_encrypt_then_mac_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -538,7 +538,7 @@ static void ssl_write_extended_ms_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; *olen = 0; @@ -572,7 +572,7 @@ static void ssl_write_session_ticket_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t tlen = ssl->session_negotiate->ticket_len; *olen = 0; @@ -616,7 +616,7 @@ static void ssl_write_alpn_ext( mbedtls_ssl_context *ssl, unsigned char *buf, size_t *olen ) { unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t alpnlen = 0; const char **cur; @@ -2117,7 +2117,7 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, size_t len_bytes = ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 ? 0 : 2; unsigned char *p = ssl->handshake->premaster + pms_offset; - if( offset + len_bytes > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( offset + len_bytes > MBEDTLS_SSL_OUT_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "buffer too small for encrypted pms" ) ); return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); @@ -2160,7 +2160,7 @@ static int ssl_write_encrypted_pms( mbedtls_ssl_context *ssl, if( ( ret = mbedtls_pk_encrypt( &ssl->session_negotiate->peer_cert->pk, p, ssl->handshake->pmslen, ssl->out_msg + offset + len_bytes, olen, - MBEDTLS_SSL_MAX_CONTENT_LEN - offset - len_bytes, + MBEDTLS_SSL_OUT_CONTENT_LEN - offset - len_bytes, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_rsa_pkcs1_encrypt", ret ); @@ -2926,7 +2926,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) i = 4; n = ssl->conf->psk_identity_len; - if( i + 2 + n > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( i + 2 + n > MBEDTLS_SSL_OUT_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "psk identity too long or " "SSL buffer too short" ) ); @@ -2962,7 +2962,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) */ n = ssl->handshake->dhm_ctx.len; - if( i + 2 + n > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( i + 2 + n > MBEDTLS_SSL_OUT_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "psk identity or DHM size too long" " or SSL buffer too short" ) ); @@ -2991,7 +2991,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) * ClientECDiffieHellmanPublic public; */ ret = mbedtls_ecdh_make_public( &ssl->handshake->ecdh_ctx, &n, - &ssl->out_msg[i], MBEDTLS_SSL_MAX_CONTENT_LEN - i, + &ssl->out_msg[i], MBEDTLS_SSL_OUT_CONTENT_LEN - i, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { @@ -3032,7 +3032,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) i = 4; ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, - ssl->out_msg + i, MBEDTLS_SSL_MAX_CONTENT_LEN - i, &n, + ssl->out_msg + i, MBEDTLS_SSL_OUT_CONTENT_LEN - i, &n, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { diff --git a/library/ssl_srv.c b/library/ssl_srv.c index eb19f58c0f..29678e3c0a 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -1303,7 +1303,7 @@ read_record_header: else #endif { - if( msg_len > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( msg_len > MBEDTLS_SSL_IN_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad client hello message" ) ); return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); @@ -2235,7 +2235,7 @@ static void ssl_write_ecjpake_kkpp_ext( mbedtls_ssl_context *ssl, { int ret; unsigned char *p = buf; - const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char *end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; size_t kkpp_len; *olen = 0; @@ -2342,7 +2342,7 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) cookie_len_byte = p++; if( ( ret = ssl->conf->f_cookie_write( ssl->conf->p_cookie, - &p, ssl->out_buf + MBEDTLS_SSL_BUFFER_LEN, + &p, ssl->out_buf + MBEDTLS_SSL_OUT_BUFFER_LEN, ssl->cli_id, ssl->cli_id_len ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "f_cookie_write", ret ); @@ -2638,7 +2638,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) size_t dn_size, total_dn_size; /* excluding length bytes */ size_t ct_len, sa_len; /* including length bytes */ unsigned char *buf, *p; - const unsigned char * const end = ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN; + const unsigned char * const end = ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN; const mbedtls_x509_crt *crt; int authmode; @@ -2839,7 +2839,7 @@ static int ssl_resume_server_key_exchange( mbedtls_ssl_context *ssl, * ssl_write_server_key_exchange also takes care of incrementing * ssl->out_msglen. */ unsigned char *sig_start = ssl->out_msg + ssl->out_msglen + 2; - size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_MAX_CONTENT_LEN + size_t sig_max_len = ( ssl->out_buf + MBEDTLS_SSL_OUT_CONTENT_LEN - sig_start ); int ret = ssl->conf->f_async_resume( ssl, sig_start, signature_len, sig_max_len ); @@ -2893,7 +2893,7 @@ static int ssl_prepare_server_key_exchange( mbedtls_ssl_context *ssl, ret = mbedtls_ecjpake_write_round_two( &ssl->handshake->ecjpake_ctx, ssl->out_msg + ssl->out_msglen, - MBEDTLS_SSL_MAX_CONTENT_LEN - ssl->out_msglen, &len, + MBEDTLS_SSL_OUT_CONTENT_LEN - ssl->out_msglen, &len, ssl->conf->f_rng, ssl->conf->p_rng ); if( ret != 0 ) { @@ -3020,7 +3020,7 @@ curve_matching_done: if( ( ret = mbedtls_ecdh_make_params( &ssl->handshake->ecdh_ctx, &len, ssl->out_msg + ssl->out_msglen, - MBEDTLS_SSL_MAX_CONTENT_LEN - ssl->out_msglen, + MBEDTLS_SSL_OUT_CONTENT_LEN - ssl->out_msglen, ssl->conf->f_rng, ssl->conf->p_rng ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ecdh_make_params", ret ); @@ -4171,7 +4171,7 @@ static int ssl_write_new_session_ticket( mbedtls_ssl_context *ssl ) if( ( ret = ssl->conf->f_ticket_write( ssl->conf->p_ticket, ssl->session_negotiate, ssl->out_msg + 10, - ssl->out_msg + MBEDTLS_SSL_MAX_CONTENT_LEN, + ssl->out_msg + MBEDTLS_SSL_OUT_CONTENT_LEN, &tlen, &lifetime ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_ticket_write", ret ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e5119fcdac..9c1f8859e5 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -141,14 +141,24 @@ static void ssl_reset_retransmit_timeout( mbedtls_ssl_context *ssl ) * } MaxFragmentLength; * and we add 0 -> extension unused */ -static unsigned int mfl_code_to_length[MBEDTLS_SSL_MAX_FRAG_LEN_INVALID] = +static unsigned int ssl_mfl_code_to_length( int mfl ) { - MBEDTLS_SSL_MAX_CONTENT_LEN, /* MBEDTLS_SSL_MAX_FRAG_LEN_NONE */ - 512, /* MBEDTLS_SSL_MAX_FRAG_LEN_512 */ - 1024, /* MBEDTLS_SSL_MAX_FRAG_LEN_1024 */ - 2048, /* MBEDTLS_SSL_MAX_FRAG_LEN_2048 */ - 4096, /* MBEDTLS_SSL_MAX_FRAG_LEN_4096 */ -}; + switch( mfl ) + { + case MBEDTLS_SSL_MAX_FRAG_LEN_NONE: + return ( MBEDTLS_TLS_EXT_ADV_CONTENT_LEN ); + case MBEDTLS_SSL_MAX_FRAG_LEN_512: + return 512; + case MBEDTLS_SSL_MAX_FRAG_LEN_1024: + return 1024; + case MBEDTLS_SSL_MAX_FRAG_LEN_2048: + return 2048; + case MBEDTLS_SSL_MAX_FRAG_LEN_4096: + return 4096; + default: + return ( MBEDTLS_TLS_EXT_ADV_CONTENT_LEN ); + } +} #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ #if defined(MBEDTLS_SSL_CLI_C) @@ -956,11 +966,11 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) if( ssl->compress_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 3, ( "Allocating compression buffer" ) ); - ssl->compress_buf = mbedtls_calloc( 1, MBEDTLS_SSL_BUFFER_LEN ); + ssl->compress_buf = mbedtls_calloc( 1, MBEDTLS_SSL_COMPRESS_BUFFER_LEN ); if( ssl->compress_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", - MBEDTLS_SSL_BUFFER_LEN ) ); + MBEDTLS_SSL_COMPRESS_BUFFER_LEN ) ); return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); } } @@ -1297,11 +1307,11 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 4, "before encrypt: output payload", ssl->out_msg, ssl->out_msglen ); - if( ssl->out_msglen > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( ssl->out_msglen > MBEDTLS_SSL_OUT_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record content %u too large, maximum %d", (unsigned) ssl->out_msglen, - MBEDTLS_SSL_MAX_CONTENT_LEN ) ); + MBEDTLS_SSL_OUT_CONTENT_LEN ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } @@ -1906,14 +1916,14 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) * Padding is guaranteed to be incorrect if: * 1. padlen >= ssl->in_msglen * - * 2. padding_idx >= MBEDTLS_SSL_MAX_CONTENT_LEN + + * 2. padding_idx >= MBEDTLS_SSL_IN_CONTENT_LEN + * ssl->transform_in->maclen * * In both cases we reset padding_idx to a safe value (0) to * prevent out-of-buffer reads. */ correct &= ( ssl->in_msglen >= padlen + 1 ); - correct &= ( padding_idx < MBEDTLS_SSL_MAX_CONTENT_LEN + + correct &= ( padding_idx < MBEDTLS_SSL_IN_CONTENT_LEN + ssl->transform_in->maclen ); padding_idx *= correct; @@ -2126,7 +2136,7 @@ static int ssl_compress_buf( mbedtls_ssl_context *ssl ) ssl->transform_out->ctx_deflate.next_in = msg_pre; ssl->transform_out->ctx_deflate.avail_in = len_pre; ssl->transform_out->ctx_deflate.next_out = msg_post; - ssl->transform_out->ctx_deflate.avail_out = MBEDTLS_SSL_BUFFER_LEN - bytes_written; + ssl->transform_out->ctx_deflate.avail_out = MBEDTLS_SSL_OUT_BUFFER_LEN - bytes_written; ret = deflate( &ssl->transform_out->ctx_deflate, Z_SYNC_FLUSH ); if( ret != Z_OK ) @@ -2135,7 +2145,7 @@ static int ssl_compress_buf( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); } - ssl->out_msglen = MBEDTLS_SSL_BUFFER_LEN - + ssl->out_msglen = MBEDTLS_SSL_OUT_BUFFER_LEN - ssl->transform_out->ctx_deflate.avail_out - bytes_written; MBEDTLS_SSL_DEBUG_MSG( 3, ( "after compression: msglen = %d, ", @@ -2173,7 +2183,7 @@ static int ssl_decompress_buf( mbedtls_ssl_context *ssl ) ssl->transform_in->ctx_inflate.next_in = msg_pre; ssl->transform_in->ctx_inflate.avail_in = len_pre; ssl->transform_in->ctx_inflate.next_out = msg_post; - ssl->transform_in->ctx_inflate.avail_out = MBEDTLS_SSL_BUFFER_LEN - + ssl->transform_in->ctx_inflate.avail_out = MBEDTLS_SSL_IN_BUFFER_LEN - header_bytes; ret = inflate( &ssl->transform_in->ctx_inflate, Z_SYNC_FLUSH ); @@ -2183,7 +2193,7 @@ static int ssl_decompress_buf( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_COMPRESSION_FAILED ); } - ssl->in_msglen = MBEDTLS_SSL_BUFFER_LEN - + ssl->in_msglen = MBEDTLS_SSL_IN_BUFFER_LEN - ssl->transform_in->ctx_inflate.avail_out - header_bytes; MBEDTLS_SSL_DEBUG_MSG( 3, ( "after decompression: msglen = %d, ", @@ -2258,7 +2268,7 @@ int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ) return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - if( nb_want > MBEDTLS_SSL_BUFFER_LEN - (size_t)( ssl->in_hdr - ssl->in_buf ) ) + if( nb_want > MBEDTLS_SSL_IN_BUFFER_LEN - (size_t)( ssl->in_hdr - ssl->in_buf ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "requesting more data than fits" ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); @@ -2344,7 +2354,7 @@ int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ) } else { - len = MBEDTLS_SSL_BUFFER_LEN - ( ssl->in_hdr - ssl->in_buf ); + len = MBEDTLS_SSL_IN_BUFFER_LEN - ( ssl->in_hdr - ssl->in_buf ); if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER ) timeout = ssl->handshake->retransmit_timeout; @@ -2798,12 +2808,12 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) { /* Make room for the additional DTLS fields */ - if( MBEDTLS_SSL_MAX_CONTENT_LEN - ssl->out_msglen < 8 ) + if( MBEDTLS_SSL_OUT_CONTENT_LEN - ssl->out_msglen < 8 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS handshake message too large: " "size %u, maximum %u", (unsigned) ( ssl->in_hslen - 4 ), - (unsigned) ( MBEDTLS_SSL_MAX_CONTENT_LEN - 12 ) ) ); + (unsigned) ( MBEDTLS_SSL_OUT_CONTENT_LEN - 12 ) ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } @@ -3016,7 +3026,7 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", msg_len ) ); - if( ssl->in_hslen > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( ssl->in_hslen > MBEDTLS_SSL_IN_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too large" ) ); return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); @@ -3120,7 +3130,7 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) ssl->next_record_offset = new_remain - ssl->in_hdr; ssl->in_left = ssl->next_record_offset + remain_len; - if( ssl->in_left > MBEDTLS_SSL_BUFFER_LEN - + if( ssl->in_left > MBEDTLS_SSL_IN_BUFFER_LEN - (size_t)( ssl->in_hdr - ssl->in_buf ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "reassembled message too large for buffer" ) ); @@ -3496,7 +3506,7 @@ static int ssl_handle_possible_reconnect( mbedtls_ssl_context *ssl ) ssl->conf->p_cookie, ssl->cli_id, ssl->cli_id_len, ssl->in_buf, ssl->in_left, - ssl->out_buf, MBEDTLS_SSL_MAX_CONTENT_LEN, &len ); + ssl->out_buf, MBEDTLS_SSL_OUT_CONTENT_LEN, &len ); MBEDTLS_SSL_DEBUG_RET( 2, "ssl_check_dtls_clihlo_cookie", ret ); @@ -3593,7 +3603,7 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) } /* Check length against the size of our buffer */ - if( ssl->in_msglen > MBEDTLS_SSL_BUFFER_LEN + if( ssl->in_msglen > MBEDTLS_SSL_IN_BUFFER_LEN - (size_t)( ssl->in_msg - ssl->in_buf ) ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); @@ -3687,7 +3697,7 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) if( ssl->transform_in == NULL ) { if( ssl->in_msglen < 1 || - ssl->in_msglen > MBEDTLS_SSL_MAX_CONTENT_LEN ) + ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); return( MBEDTLS_ERR_SSL_INVALID_RECORD ); @@ -3703,7 +3713,7 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_PROTO_SSL3) if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && - ssl->in_msglen > ssl->transform_in->minlen + MBEDTLS_SSL_MAX_CONTENT_LEN ) + ssl->in_msglen > ssl->transform_in->minlen + MBEDTLS_SSL_IN_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); return( MBEDTLS_ERR_SSL_INVALID_RECORD ); @@ -3716,7 +3726,7 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) */ if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_1 && ssl->in_msglen > ssl->transform_in->minlen + - MBEDTLS_SSL_MAX_CONTENT_LEN + 256 ) + MBEDTLS_SSL_IN_CONTENT_LEN + 256 ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); return( MBEDTLS_ERR_SSL_INVALID_RECORD ); @@ -3764,7 +3774,7 @@ static int ssl_prepare_record_content( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 4, "input payload after decrypt", ssl->in_msg, ssl->in_msglen ); - if( ssl->in_msglen > MBEDTLS_SSL_MAX_CONTENT_LEN ) + if( ssl->in_msglen > MBEDTLS_SSL_IN_CONTENT_LEN ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad message length" ) ); return( MBEDTLS_ERR_SSL_INVALID_RECORD ); @@ -4325,10 +4335,10 @@ int mbedtls_ssl_write_certificate( mbedtls_ssl_context *ssl ) while( crt != NULL ) { n = crt->raw.len; - if( n > MBEDTLS_SSL_MAX_CONTENT_LEN - 3 - i ) + if( n > MBEDTLS_SSL_OUT_CONTENT_LEN - 3 - i ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "certificate too large, %d > %d", - i + 3 + n, MBEDTLS_SSL_MAX_CONTENT_LEN ) ); + i + 3 + n, MBEDTLS_SSL_OUT_CONTENT_LEN ) ); return( MBEDTLS_ERR_SSL_CERTIFICATE_TOO_LARGE ); } @@ -5662,17 +5672,23 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { int ret; - const size_t len = MBEDTLS_SSL_BUFFER_LEN; ssl->conf = conf; /* * Prepare base structures */ - if( ( ssl-> in_buf = mbedtls_calloc( 1, len ) ) == NULL || - ( ssl->out_buf = mbedtls_calloc( 1, len ) ) == NULL ) + ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN ); + if( ssl->in_buf == NULL ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", len ) ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) ); + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } + + ssl->out_buf = mbedtls_calloc( 1, MBEDTLS_SSL_OUT_BUFFER_LEN ); + if( ssl->out_buf == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) ); mbedtls_free( ssl->in_buf ); ssl->in_buf = NULL; return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); @@ -5773,9 +5789,9 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->transform_in = NULL; ssl->transform_out = NULL; - memset( ssl->out_buf, 0, MBEDTLS_SSL_BUFFER_LEN ); + memset( ssl->out_buf, 0, MBEDTLS_SSL_OUT_BUFFER_LEN ); if( partial == 0 ) - memset( ssl->in_buf, 0, MBEDTLS_SSL_BUFFER_LEN ); + memset( ssl->in_buf, 0, MBEDTLS_SSL_IN_BUFFER_LEN ); #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) if( mbedtls_ssl_hw_record_reset != NULL ) @@ -6100,7 +6116,7 @@ int mbedtls_ssl_conf_psk( mbedtls_ssl_config *conf, /* Identity len will be encoded on two bytes */ if( ( psk_identity_len >> 16 ) != 0 || - psk_identity_len > MBEDTLS_SSL_MAX_CONTENT_LEN ) + psk_identity_len > MBEDTLS_SSL_OUT_CONTENT_LEN ) { return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } @@ -6401,7 +6417,7 @@ void mbedtls_ssl_conf_arc4_support( mbedtls_ssl_config *conf, char arc4 ) int mbedtls_ssl_conf_max_frag_len( mbedtls_ssl_config *conf, unsigned char mfl_code ) { if( mfl_code >= MBEDTLS_SSL_MAX_FRAG_LEN_INVALID || - mfl_code_to_length[mfl_code] > MBEDTLS_SSL_MAX_CONTENT_LEN ) + ssl_mfl_code_to_length( mfl_code ) > MBEDTLS_TLS_EXT_ADV_CONTENT_LEN ) { return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } @@ -6679,15 +6695,15 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) /* * Assume mfl_code is correct since it was checked when set */ - max_len = mfl_code_to_length[ssl->conf->mfl_code]; + max_len = ssl_mfl_code_to_length( ssl->conf->mfl_code ); /* * Check if a smaller max length was negotiated */ if( ssl->session_out != NULL && - mfl_code_to_length[ssl->session_out->mfl_code] < max_len ) + ssl_mfl_code_to_length( ssl->session_out->mfl_code ) < max_len ) { - max_len = mfl_code_to_length[ssl->session_out->mfl_code]; + max_len = ssl_mfl_code_to_length( ssl->session_out->mfl_code ); } return max_len; @@ -7241,7 +7257,7 @@ static int ssl_write_real( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) size_t max_len = mbedtls_ssl_get_max_frag_len( ssl ); #else - size_t max_len = MBEDTLS_SSL_MAX_CONTENT_LEN; + size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ if( len > max_len ) { @@ -7543,20 +7559,20 @@ void mbedtls_ssl_free( mbedtls_ssl_context *ssl ) if( ssl->out_buf != NULL ) { - mbedtls_platform_zeroize( ssl->out_buf, MBEDTLS_SSL_BUFFER_LEN ); + mbedtls_platform_zeroize( ssl->out_buf, MBEDTLS_SSL_OUT_BUFFER_LEN ); mbedtls_free( ssl->out_buf ); } if( ssl->in_buf != NULL ) { - mbedtls_platform_zeroize( ssl->in_buf, MBEDTLS_SSL_BUFFER_LEN ); + mbedtls_platform_zeroize( ssl->in_buf, MBEDTLS_SSL_IN_BUFFER_LEN ); mbedtls_free( ssl->in_buf ); } #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->compress_buf != NULL ) { - mbedtls_platform_zeroize( ssl->compress_buf, MBEDTLS_SSL_BUFFER_LEN ); + mbedtls_platform_zeroize( ssl->compress_buf, MBEDTLS_SSL_COMPRESS_BUFFER_LEN ); mbedtls_free( ssl->compress_buf ); } #endif From c4dd07369fd81a1ae584048caf4ae2c4202a85c4 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 11 Apr 2018 16:28:39 +1000 Subject: [PATCH 0534/1100] test: Add test cases for separately reduced inward/outward buffer sizes --- tests/scripts/all.sh | 35 ++++++++ tests/ssl-opt.sh | 184 +++++++++++++++++++++++++------------------ 2 files changed, 142 insertions(+), 77 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 43c27b4bd5..ac71e33b23 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -520,6 +520,28 @@ tests/ssl-opt.sh -f RSA msg "test: RSA_NO_CRT - RSA-related part of compat.sh (ASan build)" # ~ 3 min tests/compat.sh -t RSA +msg "build: small SSL_OUT_CONTENT_LEN (ASan build)" +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl set MBEDTLS_SSL_IN_CONTENT_LEN 16384 +scripts/config.pl set MBEDTLS_SSL_OUT_CONTENT_LEN 4096 +CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . +make + +msg "test: small SSL_OUT_CONTENT_LEN - ssl-opt.sh MFL and large packet tests" +if_build_succeeded tests/ssl-opt.sh -f "Max fragment\|Large packet" + +msg "build: small SSL_IN_CONTENT_LEN (ASan build)" +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl set MBEDTLS_SSL_IN_CONTENT_LEN 4096 +scripts/config.pl set MBEDTLS_SSL_OUT_CONTENT_LEN 16384 +CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . +make + +msg "test: small SSL_IN_CONTENT_LEN - ssl-opt.sh MFL tests" +if_build_succeeded tests/ssl-opt.sh -f "Max fragment" + msg "build: cmake, full config, clang" # ~ 50s cleanup cp "$CONFIG_H" "$CONFIG_BAK" @@ -616,6 +638,7 @@ scripts/config.pl unset MBEDTLS_NET_C # getaddrinfo() undeclared, etc. scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY # uses syscall() on GNU/Linux make CC=gcc CFLAGS='-Werror -Wall -Wextra -O0 -std=c99 -pedantic' lib +# Run max fragment length tests with MFL disabled msg "build: default config except MFL extension (ASan build)" # ~ 30s cleanup cp "$CONFIG_H" "$CONFIG_BAK" @@ -626,6 +649,18 @@ make msg "test: ssl-opt.sh, MFL-related tests" if_build_succeeded tests/ssl-opt.sh -f "Max fragment length" +msg "build: no MFL extension, small SSL_OUT_CONTENT_LEN (ASan build)" +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl unset MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +scripts/config.pl set MBEDTLS_SSL_IN_CONTENT_LEN 16384 +scripts/config.pl set MBEDTLS_SSL_OUT_CONTENT_LEN 4096 +CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . +make + +msg "test: MFL tests (disabled MFL extension case) & large packet tests" +if_build_succeeded tests/ssl-opt.sh -f "Max fragment length\|Large buffer" + msg "build: default config with MBEDTLS_TEST_NULL_ENTROPY (ASan build)" cleanup cp "$CONFIG_H" "$CONFIG_BAK" diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9faeb6703e..34598451d5 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -21,6 +21,11 @@ set -u +if cd $( dirname $0 ); then :; else + echo "cd $( dirname $0 ) failed" >&2 + exit 1 +fi + # default values, can be overriden by the environment : ${P_SRV:=../programs/ssl/ssl_server2} : ${P_CLI:=../programs/ssl/ssl_client2} @@ -178,6 +183,25 @@ requires_ipv6() { fi } +# Calculate the input & output maximum content lengths set in the config +MAX_CONTENT_LEN=$( ../scripts/config.pl get MBEDTLS_SSL_MAX_CONTENT_LEN || echo "16384") +MAX_IN_LEN=$( ../scripts/config.pl get MBEDTLS_SSL_IN_CONTENT_LEN || echo "$MAX_CONTENT_LEN") +MAX_OUT_LEN=$( ../scripts/config.pl get MBEDTLS_SSL_OUT_CONTENT_LEN || echo "$MAX_CONTENT_LEN") + +if [ "$MAX_IN_LEN" -lt "$MAX_CONTENT_LEN" ]; then + MAX_CONTENT_LEN="$MAX_IN_LEN" +fi +if [ "$MAX_OUT_LEN" -lt "$MAX_CONTENT_LEN" ]; then + MAX_CONTENT_LEN="$MAX_OUT_LEN" +fi + +# skip the next test if the SSL output buffer is less than 16KB +requires_full_size_output_buffer() { + if [ "$MAX_OUT_LEN" -ne 16384 ]; then + SKIP_NEXT="YES" + fi +} + # skip the next test if valgrind is in use not_with_valgrind() { if [ "$MEMCHECK" -gt 0 ]; then @@ -626,11 +650,6 @@ cleanup() { # MAIN # -if cd $( dirname $0 ); then :; else - echo "cd $( dirname $0 ) failed" >&2 - exit 1 -fi - get_options "$@" # sanity checks, avoid an avalanche of errors @@ -1416,28 +1435,22 @@ run_test "Session resume using cache: openssl server" \ # Tests for Max Fragment Length extension -MAX_CONTENT_LEN_EXPECT='16384' -MAX_CONTENT_LEN_CONFIG=$( ../scripts/config.pl get MBEDTLS_SSL_MAX_CONTENT_LEN) - -if [ -n "$MAX_CONTENT_LEN_CONFIG" ] && [ "$MAX_CONTENT_LEN_CONFIG" -ne "$MAX_CONTENT_LEN_EXPECT" ]; then - printf "The ${CONFIG_H} file contains a value for the configuration of\n" - printf "MBEDTLS_SSL_MAX_CONTENT_LEN that is different from the script’s\n" - printf "test value of ${MAX_CONTENT_LEN_EXPECT}. \n" - printf "\n" - printf "The tests assume this value and if it changes, the tests in this\n" - printf "script should also be adjusted.\n" - printf "\n" - +if [ "$MAX_CONTENT_LEN" -lt "4096" ]; then + printf "${CONFIG_H} defines MBEDTLS_SSL_MAX_CONTENT_LEN to be less than 4096. Fragment length tests will fail.\n" exit 1 fi +if [ $MAX_CONTENT_LEN -ne 16384 ]; then + printf "Using non-default maximum content length $MAX_CONTENT_LEN\n" +fi + requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "Max fragment length: enabled, default" \ "$P_SRV debug_level=3" \ "$P_CLI debug_level=3" \ 0 \ - -c "Maximum fragment length is 16384" \ - -s "Maximum fragment length is 16384" \ + -c "Maximum fragment length is $MAX_CONTENT_LEN" \ + -s "Maximum fragment length is $MAX_CONTENT_LEN" \ -C "client hello, adding max_fragment_length extension" \ -S "found max fragment length extension" \ -S "server hello, max_fragment_length extension" \ @@ -1446,46 +1459,50 @@ run_test "Max fragment length: enabled, default" \ requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "Max fragment length: enabled, default, larger message" \ "$P_SRV debug_level=3" \ - "$P_CLI debug_level=3 request_size=16385" \ + "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \ 0 \ - -c "Maximum fragment length is 16384" \ - -s "Maximum fragment length is 16384" \ + -c "Maximum fragment length is $MAX_CONTENT_LEN" \ + -s "Maximum fragment length is $MAX_CONTENT_LEN" \ -C "client hello, adding max_fragment_length extension" \ -S "found max fragment length extension" \ -S "server hello, max_fragment_length extension" \ -C "found max_fragment_length extension" \ - -c "16385 bytes written in 2 fragments" \ - -s "16384 bytes read" \ + -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \ + -s "$MAX_CONTENT_LEN bytes read" \ -s "1 bytes read" requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "Max fragment length, DTLS: enabled, default, larger message" \ "$P_SRV debug_level=3 dtls=1" \ - "$P_CLI debug_level=3 dtls=1 request_size=16385" \ + "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \ 1 \ - -c "Maximum fragment length is 16384" \ - -s "Maximum fragment length is 16384" \ + -c "Maximum fragment length is $MAX_CONTENT_LEN" \ + -s "Maximum fragment length is $MAX_CONTENT_LEN" \ -C "client hello, adding max_fragment_length extension" \ -S "found max fragment length extension" \ -S "server hello, max_fragment_length extension" \ -C "found max_fragment_length extension" \ -c "fragment larger than.*maximum " +# Run some tests with MBEDTLS_SSL_MAX_FRAGMENT_LENGTH disabled +# (session fragment length will be 16384 regardless of mbedtls +# content length configuration.) + requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "Max fragment length: disabled, larger message" \ "$P_SRV debug_level=3" \ - "$P_CLI debug_level=3 request_size=16385" \ + "$P_CLI debug_level=3 request_size=$(( $MAX_CONTENT_LEN + 1))" \ 0 \ -C "Maximum fragment length is 16384" \ -S "Maximum fragment length is 16384" \ - -c "16385 bytes written in 2 fragments" \ - -s "16384 bytes read" \ + -c "$(( $MAX_CONTENT_LEN + 1)) bytes written in 2 fragments" \ + -s "$MAX_CONTENT_LEN bytes read" \ -s "1 bytes read" requires_config_disabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "Max fragment length DTLS: disabled, larger message" \ "$P_SRV debug_level=3 dtls=1" \ - "$P_CLI debug_level=3 dtls=1 request_size=16385" \ + "$P_CLI debug_level=3 dtls=1 request_size=$(( $MAX_CONTENT_LEN + 1))" \ 1 \ -C "Maximum fragment length is 16384" \ -S "Maximum fragment length is 16384" \ @@ -1508,7 +1525,7 @@ run_test "Max fragment length: used by server" \ "$P_SRV debug_level=3 max_frag_len=4096" \ "$P_CLI debug_level=3" \ 0 \ - -c "Maximum fragment length is 16384" \ + -c "Maximum fragment length is $MAX_CONTENT_LEN" \ -s "Maximum fragment length is 4096" \ -C "client hello, adding max_fragment_length extension" \ -S "found max fragment length extension" \ @@ -2376,6 +2393,7 @@ if [ -n "$MAX_IM_CA_CONFIG" ] && [ "$MAX_IM_CA_CONFIG" -ne "$MAX_IM_CA" ]; then exit 1 fi +requires_full_size_output_buffer run_test "Authentication: server max_int chain, client default" \ "$P_SRV crt_file=data_files/dir-maxpath/c09.pem \ key_file=data_files/dir-maxpath/09.key" \ @@ -2383,6 +2401,7 @@ run_test "Authentication: server max_int chain, client default" \ 0 \ -C "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: server max_int+1 chain, client default" \ "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \ key_file=data_files/dir-maxpath/10.key" \ @@ -2390,6 +2409,7 @@ run_test "Authentication: server max_int+1 chain, client default" \ 1 \ -c "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: server max_int+1 chain, client optional" \ "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \ key_file=data_files/dir-maxpath/10.key" \ @@ -2398,6 +2418,7 @@ run_test "Authentication: server max_int+1 chain, client optional" \ 1 \ -c "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: server max_int+1 chain, client none" \ "$P_SRV crt_file=data_files/dir-maxpath/c10.pem \ key_file=data_files/dir-maxpath/10.key" \ @@ -2406,6 +2427,7 @@ run_test "Authentication: server max_int+1 chain, client none" \ 0 \ -C "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: client max_int+1 chain, server default" \ "$P_SRV ca_file=data_files/dir-maxpath/00.crt" \ "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \ @@ -2413,6 +2435,7 @@ run_test "Authentication: client max_int+1 chain, server default" \ 0 \ -S "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: client max_int+1 chain, server optional" \ "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=optional" \ "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \ @@ -2420,6 +2443,7 @@ run_test "Authentication: client max_int+1 chain, server optional" \ 1 \ -s "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: client max_int+1 chain, server required" \ "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \ "$P_CLI crt_file=data_files/dir-maxpath/c10.pem \ @@ -2427,6 +2451,7 @@ run_test "Authentication: client max_int+1 chain, server required" \ 1 \ -s "X509 - A fatal error occured" +requires_full_size_output_buffer run_test "Authentication: client max_int chain, server required" \ "$P_SRV ca_file=data_files/dir-maxpath/00.crt auth_mode=required" \ "$P_CLI crt_file=data_files/dir-maxpath/c09.pem \ @@ -3970,14 +3995,19 @@ run_test "SSLv3 with extensions, server side" \ # Test for large packets +# How many fragments do we expect to write $1 bytes? +fragments_for_write() { + echo "$(( ( $1 + $MAX_OUT_LEN - 1 ) / $MAX_OUT_LEN ))" +} + requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 run_test "Large packet SSLv3 BlockCipher" \ "$P_SRV min_version=ssl3" \ "$P_CLI request_size=16384 force_version=ssl3 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 run_test "Large packet SSLv3 StreamCipher" \ @@ -3985,23 +4015,23 @@ run_test "Large packet SSLv3 StreamCipher" \ "$P_CLI request_size=16384 force_version=ssl3 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.0 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.0 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.0 BlockCipher, truncated MAC" \ @@ -4009,8 +4039,8 @@ run_test "Large packet TLS 1.0 BlockCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ @@ -4018,21 +4048,21 @@ run_test "Large packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.0 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.0 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.0 StreamCipher, truncated MAC" \ @@ -4040,7 +4070,7 @@ run_test "Large packet TLS 1.0 StreamCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ @@ -4048,23 +4078,23 @@ run_test "Large packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.1 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.1 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_1 etm=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.1 BlockCipher, truncated MAC" \ @@ -4072,7 +4102,7 @@ run_test "Large packet TLS 1.1 BlockCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ @@ -4080,23 +4110,23 @@ run_test "Large packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.1 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.1 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.1 StreamCipher, truncated MAC" \ @@ -4104,7 +4134,7 @@ run_test "Large packet TLS 1.1 StreamCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ @@ -4112,31 +4142,31 @@ run_test "Large packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 etm=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 BlockCipher larger MAC" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.2 BlockCipher, truncated MAC" \ @@ -4144,7 +4174,7 @@ run_test "Large packet TLS 1.2 BlockCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ @@ -4152,23 +4182,23 @@ run_test "Large packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.2 StreamCipher, truncated MAC" \ @@ -4176,7 +4206,7 @@ run_test "Large packet TLS 1.2 StreamCipher, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ 0 \ - -s "Read from client: 16384 bytes read" + -s "Read from client: $MAX_CONTENT_LEN bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ @@ -4184,24 +4214,24 @@ run_test "Large packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 AEAD" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" run_test "Large packet TLS 1.2 AEAD shorter tag" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \ 0 \ - -c "16384 bytes written in 1 fragments" \ - -s "Read from client: 16384 bytes read" + -c "16384 bytes written in $(fragments_for_write 16384) fragments" \ + -s "Read from client: $MAX_CONTENT_LEN bytes read" # Tests of asynchronous private key support in SSL From 925568a595b289fc441641cd7e5b27ef9d4caf61 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 18 Jun 2018 11:54:44 +0100 Subject: [PATCH 0535/1100] Fix version in ChangeLog for fix for #552 --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c02dc84075..1c176b25f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,7 @@ Bugfix used by user applications. Found and fixed by Fabio Alessandrelli. * Fix compilation warnings with IAR toolchain, on 32 bit platform. Reported by rahmanih in #683 + * Fix braces in mbedtls_memory_buffer_alloc_status(). Found by sbranden, #552. Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. @@ -48,7 +49,6 @@ API Changes Bugfix * Fix an issue with MicroBlaze support in bn_mul.h which was causing the build to fail. Found by zv-io. Fixes #1651. - * Fix braces in mbedtls_memory_buffer_alloc_status(). Found by sbranden, #552. Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. From 2fcd3e4441cb4ebdc848a21145c3b215ab037346 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 18 Jun 2018 14:39:06 +0100 Subject: [PATCH 0536/1100] Change the library version to 2.11.0 * Change the Mbed TLS library version to 2.11.0 * Increase the soversion of libmbedcrypto * Increase the soversion of libmbedtls --- ChangeLog | 2 +- doxygen/input/doc_mainpage.h | 2 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/version.h | 8 ++++---- library/CMakeLists.txt | 6 +++--- library/Makefile | 4 ++-- tests/suites/test_suite_version.data | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1c176b25f6..027a97174e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ mbed TLS ChangeLog (Sorted per branch, date) -= mbed TLS x.x.x branch released xxxx-xx-xx += mbed TLS 2.11.0 branch released 2018-06-18 Features * Add additional block mode, OFB (Output Feedback), to the AES module and diff --git a/doxygen/input/doc_mainpage.h b/doxygen/input/doc_mainpage.h index 9449cbbba9..ed78eb4b57 100644 --- a/doxygen/input/doc_mainpage.h +++ b/doxygen/input/doc_mainpage.h @@ -24,7 +24,7 @@ */ /** - * @mainpage mbed TLS v2.10.0 source code documentation + * @mainpage mbed TLS v2.11.0 source code documentation * * This documentation describes the internal structure of mbed TLS. It was * automatically generated from specially formatted comment blocks in diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index ddcbc2e048..fdeab7a554 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8 # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. -PROJECT_NAME = "mbed TLS v2.10.0" +PROJECT_NAME = "mbed TLS v2.11.0" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or diff --git a/include/mbedtls/version.h b/include/mbedtls/version.h index 83e3c1726b..c8050b9ba1 100644 --- a/include/mbedtls/version.h +++ b/include/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 10 +#define MBEDTLS_VERSION_MINOR 11 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x020A0000 -#define MBEDTLS_VERSION_STRING "2.10.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.10.0" +#define MBEDTLS_VERSION_NUMBER 0x020B0000 +#define MBEDTLS_VERSION_STRING "2.11.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.11.0" #if defined(MBEDTLS_VERSION_C) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 60fa7f8f31..5243baf465 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -144,15 +144,15 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.10.0 SOVERSION 2) + set_target_properties(mbedcrypto PROPERTIES VERSION 2.11.0 SOVERSION 3) target_link_libraries(mbedcrypto ${libs}) add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.10.0 SOVERSION 0) + set_target_properties(mbedx509 PROPERTIES VERSION 2.11.0 SOVERSION 0) target_link_libraries(mbedx509 ${libs} mbedcrypto) add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.10.0 SOVERSION 10) + set_target_properties(mbedtls PROPERTIES VERSION 2.11.0 SOVERSION 11) target_link_libraries(mbedtls ${libs} mbedx509) install(TARGETS mbedtls mbedx509 mbedcrypto diff --git a/library/Makefile b/library/Makefile index 86696b62bf..f7eb89655f 100644 --- a/library/Makefile +++ b/library/Makefile @@ -31,9 +31,9 @@ LOCAL_CFLAGS += -fPIC -fpic endif endif -SOEXT_TLS=so.10 +SOEXT_TLS=so.11 SOEXT_X509=so.0 -SOEXT_CRYPTO=so.2 +SOEXT_CRYPTO=so.3 # Set DLEXT=dylib to compile as a shared library for Mac OS X DLEXT ?= so diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data index 999a93365a..7631791293 100644 --- a/tests/suites/test_suite_version.data +++ b/tests/suites/test_suite_version.data @@ -1,8 +1,8 @@ Check compiletime library version -check_compiletime_version:"2.10.0" +check_compiletime_version:"2.11.0" Check runtime library version -check_runtime_version:"2.10.0" +check_runtime_version:"2.11.0" Check for MBEDTLS_VERSION_C check_feature:"MBEDTLS_VERSION_C":0 From a18034a8e28020ed93a941a9b5c07fecc4e8aec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 19 Jun 2018 11:30:32 +0200 Subject: [PATCH 0537/1100] Adjust to added fields in cipher_base_t This is a follow-up to the previous merge commit: two fields were added in the merged development branch --- library/cipher_wrap.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index 5ab4071e00..e22c172f9a 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -1949,9 +1949,15 @@ static const mbedtls_cipher_base_t chacha20_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) chacha20_stream_wrap, #endif @@ -2015,9 +2021,15 @@ static const mbedtls_cipher_base_t chachapoly_base_info = { #if defined(MBEDTLS_CIPHER_MODE_CFB) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_OFB) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_CTR) NULL, #endif +#if defined(MBEDTLS_CIPHER_MODE_XTS) + NULL, +#endif #if defined(MBEDTLS_CIPHER_MODE_STREAM) NULL, #endif From f57bf8b467b8ca7ce82ffedb9846aa8b1e2f9a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 18 Jun 2018 11:14:09 +0200 Subject: [PATCH 0538/1100] Define specific mode for ChachaPoly The TLS layer is checking for mode, such as GCM, CCM, CBC, STREAM. ChachaPoly needs to have its own mode, even if it's used just one cipher, in order to allow consistent handling of mode in the TLS layer. --- include/mbedtls/cipher.h | 1 + library/cipher_wrap.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index e707808a21..a1f4738a94 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -186,6 +186,7 @@ typedef enum { MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */ MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */ + MBEDTLS_MODE_CHACHAPOLY, /**< The ChaCha-Poly cipher mode. */ } mbedtls_cipher_mode_t; /** Supported cipher padding types. */ diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index e22c172f9a..893490acc8 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -2040,7 +2040,7 @@ static const mbedtls_cipher_base_t chachapoly_base_info = { }; static const mbedtls_cipher_info_t chachapoly_info = { MBEDTLS_CIPHER_CHACHA20_POLY1305, - MBEDTLS_MODE_NONE, + MBEDTLS_MODE_CHACHAPOLY, 256, "CHACHA20-POLY1305", 12, From ce66d5e8e1471bb60d726e4def0520f46e9c0057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 14 Jun 2018 11:11:15 +0200 Subject: [PATCH 0539/1100] Declare ChaCha-Poly ciphersuites Prefer them over AES-GCM as they have better performance and fewer side channel considerations in software implementations. --- include/mbedtls/ssl_ciphersuites.h | 9 ++++ library/ssl_ciphersuites.c | 80 +++++++++++++++++++++++++++++- tests/ssl-opt.sh | 12 ++--- 3 files changed, 91 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/ssl_ciphersuites.h b/include/mbedtls/ssl_ciphersuites.h index 7d5eba0916..cda8b4835b 100644 --- a/include/mbedtls/ssl_ciphersuites.h +++ b/include/mbedtls/ssl_ciphersuites.h @@ -271,6 +271,15 @@ extern "C" { #define MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 0xC0FF /**< experimental */ +/* RFC 7905 */ +#define MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA8 /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 0xCCA9 /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 0xCCAA /**< TLS 1.2 */ +#define MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAB /**< TLS 1.2 */ +#define MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAC /**< TLS 1.2 */ +#define MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAD /**< TLS 1.2 */ +#define MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256 0xCCAE /**< TLS 1.2 */ + /* Reminder: update mbedtls_ssl_premaster_secret when adding a new key exchange. * Reminder: update MBEDTLS_KEY_EXCHANGE__xxx below */ diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c index 2e9a0fd792..59cdc7a806 100644 --- a/library/ssl_ciphersuites.c +++ b/library/ssl_ciphersuites.c @@ -47,7 +47,7 @@ * 1. By key exchange: * Forward-secure non-PSK > forward-secure PSK > ECJPAKE > other non-PSK > other PSK * 2. By key length and cipher: - * AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-128 > 3DES + * ChaCha > AES-256 > Camellia-256 > ARIA-256 > AES-128 > Camellia-128 > ARIA-128 > 3DES * 3. By cipher mode when relevant GCM > CCM > CBC > CCM_8 * 4. By hash function used when relevant * 5. By key exchange/auth again: EC > non-EC @@ -57,6 +57,11 @@ static const int ciphersuite_preference[] = #if defined(MBEDTLS_SSL_CIPHERSUITES) MBEDTLS_SSL_CIPHERSUITES, #else + /* Chacha-Poly ephemeral suites */ + MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, + MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + /* All AES-256 ephemeral suites */ MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, @@ -127,6 +132,8 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, /* The PSK ephemeral suites */ + MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256, + MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256, MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384, MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CCM, MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384, @@ -227,6 +234,7 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, /* The RSA PSK suites */ + MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256, MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384, MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384, MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA, @@ -246,6 +254,7 @@ static const int ciphersuite_preference[] = MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA, /* The PSK suites */ + MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256, MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384, MBEDTLS_TLS_PSK_WITH_AES_256_CCM, MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384, @@ -312,6 +321,75 @@ static const int ciphersuite_preference[] = static const mbedtls_ssl_ciphersuite_t ciphersuite_definitions[] = { +#if defined(MBEDTLS_CHACHAPOLY_C) && \ + defined(MBEDTLS_SHA256_C) && \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) + { MBEDTLS_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + "TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_ECDHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) + { MBEDTLS_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, + "TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) + { MBEDTLS_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256, + "TLS-DHE-RSA-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_DHE_RSA, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) + { MBEDTLS_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256, + "TLS-PSK-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) + { MBEDTLS_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256, + "TLS-ECDHE-PSK-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_ECDHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) + { MBEDTLS_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256, + "TLS-DHE-PSK-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_DHE_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#if defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) + { MBEDTLS_TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256, + "TLS-RSA-PSK-WITH-CHACHA20-POLY1305-SHA256", + MBEDTLS_CIPHER_CHACHA20_POLY1305, MBEDTLS_MD_SHA256, + MBEDTLS_KEY_EXCHANGE_RSA_PSK, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3, + 0 }, +#endif +#endif /* MBEDTLS_CHACHAPOLY_C && + MBEDTLS_SHA256_C && + MBEDTLS_SSL_PROTO_TLS1_2 */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) #if defined(MBEDTLS_AES_C) #if defined(MBEDTLS_SHA1_C) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9faeb6703e..50fb0f94b9 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -723,7 +723,7 @@ run_test "Default" \ "$P_CLI" \ 0 \ -s "Protocol is TLSv1.2" \ - -s "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \ + -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" \ -s "client hello v3, signature_algorithm ext: 6" \ -s "ECDHE curve: secp521r1" \ -S "error" \ @@ -734,20 +734,14 @@ run_test "Default, DTLS" \ "$P_CLI dtls=1" \ 0 \ -s "Protocol is DTLSv1.2" \ - -s "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" + -s "Ciphersuite is TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256" # Test current time in ServerHello requires_config_enabled MBEDTLS_HAVE_TIME -run_test "Default, ServerHello contains gmt_unix_time" \ +run_test "ServerHello contains gmt_unix_time" \ "$P_SRV debug_level=3" \ "$P_CLI debug_level=3" \ 0 \ - -s "Protocol is TLSv1.2" \ - -s "Ciphersuite is TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384" \ - -s "client hello v3, signature_algorithm ext: 6" \ - -s "ECDHE curve: secp521r1" \ - -S "error" \ - -C "error" \ -f "check_server_hello_time" \ -F "check_server_hello_time" From c36b4321083d8f13dbe8873b8180fb118c352cc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 14 Jun 2018 13:14:29 +0200 Subject: [PATCH 0540/1100] Add GnuTLS interop for CCM(-8) ciphersuites I'm going to touch the GCM/CCM/CCM-8 code in the next commit, and so far we didn't have any interop testing for CCM/CCM-8. Our standard development/testing environment currently has GnuTLS 3.4.10, and fortunately support for CCM/CCM-8 was introduced in GnuTLS 3.4.0 Support in OpenSSL was introduced in 1.1.0 which is not yet the default version in the CI. --- tests/compat.sh | 72 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 21 deletions(-) diff --git a/tests/compat.sh b/tests/compat.sh index d383cb4780..fdef98e91f 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -42,6 +42,9 @@ if ( which $GNUTLS_CLI && which $GNUTLS_SERV ) >/dev/null 2>&1; then PEER_GNUTLS="" else PEER_GNUTLS=" GnuTLS" + if [ $MINOR -lt 4 ]; then + GNUTLS_MINOR_LT_FOUR='x' + fi fi fi else @@ -545,12 +548,20 @@ add_gnutls_ciphersuites() TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-CBC-SHA384 \ TLS-ECDHE-ECDSA-WITH-CAMELLIA-128-GCM-SHA256 \ TLS-ECDHE-ECDSA-WITH-CAMELLIA-256-GCM-SHA384 \ + TLS-ECDHE-ECDSA-WITH-AES-128-CCM \ + TLS-ECDHE-ECDSA-WITH-AES-256-CCM \ + TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ + TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8 \ " G_CIPHERS="$G_CIPHERS \ +ECDHE-ECDSA:+CAMELLIA-128-CBC:+SHA256 \ +ECDHE-ECDSA:+CAMELLIA-256-CBC:+SHA384 \ +ECDHE-ECDSA:+CAMELLIA-128-GCM:+AEAD \ +ECDHE-ECDSA:+CAMELLIA-256-GCM:+AEAD \ + +ECDHE-ECDSA:+AES-128-CCM:+AEAD \ + +ECDHE-ECDSA:+AES-256-CCM:+AEAD \ + +ECDHE-ECDSA:+AES-128-CCM-8:+AEAD \ + +ECDHE-ECDSA:+AES-256-CCM-8:+AEAD \ " fi ;; @@ -580,6 +591,14 @@ add_gnutls_ciphersuites() TLS-DHE-RSA-WITH-CAMELLIA-256-GCM-SHA384 \ TLS-RSA-WITH-CAMELLIA-128-GCM-SHA256 \ TLS-RSA-WITH-CAMELLIA-256-GCM-SHA384 \ + TLS-RSA-WITH-AES-128-CCM \ + TLS-RSA-WITH-AES-256-CCM \ + TLS-DHE-RSA-WITH-AES-128-CCM \ + TLS-DHE-RSA-WITH-AES-256-CCM \ + TLS-RSA-WITH-AES-128-CCM-8 \ + TLS-RSA-WITH-AES-256-CCM-8 \ + TLS-DHE-RSA-WITH-AES-128-CCM-8 \ + TLS-DHE-RSA-WITH-AES-256-CCM-8 \ " G_CIPHERS="$G_CIPHERS \ +ECDHE-RSA:+CAMELLIA-128-CBC:+SHA256 \ @@ -594,6 +613,14 @@ add_gnutls_ciphersuites() +DHE-RSA:+CAMELLIA-256-GCM:+AEAD \ +RSA:+CAMELLIA-128-GCM:+AEAD \ +RSA:+CAMELLIA-256-GCM:+AEAD \ + +RSA:+AES-128-CCM:+AEAD \ + +RSA:+AES-256-CCM:+AEAD \ + +RSA:+AES-128-CCM-8:+AEAD \ + +RSA:+AES-256-CCM-8:+AEAD \ + +DHE-RSA:+AES-128-CCM:+AEAD \ + +DHE-RSA:+AES-256-CCM:+AEAD \ + +DHE-RSA:+AES-128-CCM-8:+AEAD \ + +DHE-RSA:+AES-256-CCM-8:+AEAD \ " fi ;; @@ -665,6 +692,14 @@ add_gnutls_ciphersuites() TLS-PSK-WITH-AES-256-GCM-SHA384 \ TLS-DHE-PSK-WITH-AES-128-GCM-SHA256 \ TLS-DHE-PSK-WITH-AES-256-GCM-SHA384 \ + TLS-PSK-WITH-AES-128-CCM \ + TLS-PSK-WITH-AES-256-CCM \ + TLS-DHE-PSK-WITH-AES-128-CCM \ + TLS-DHE-PSK-WITH-AES-256-CCM \ + TLS-PSK-WITH-AES-128-CCM-8 \ + TLS-PSK-WITH-AES-256-CCM-8 \ + TLS-DHE-PSK-WITH-AES-128-CCM-8 \ + TLS-DHE-PSK-WITH-AES-256-CCM-8 \ TLS-RSA-PSK-WITH-CAMELLIA-128-GCM-SHA256 \ TLS-RSA-PSK-WITH-CAMELLIA-256-GCM-SHA384 \ TLS-PSK-WITH-CAMELLIA-128-GCM-SHA256 \ @@ -695,6 +730,14 @@ add_gnutls_ciphersuites() +PSK:+AES-256-GCM:+AEAD \ +DHE-PSK:+AES-128-GCM:+AEAD \ +DHE-PSK:+AES-256-GCM:+AEAD \ + +PSK:+AES-128-CCM:+AEAD \ + +PSK:+AES-256-CCM:+AEAD \ + +DHE-PSK:+AES-128-CCM:+AEAD \ + +DHE-PSK:+AES-256-CCM:+AEAD \ + +PSK:+AES-128-CCM-8:+AEAD \ + +PSK:+AES-256-CCM-8:+AEAD \ + +DHE-PSK:+AES-128-CCM-8:+AEAD \ + +DHE-PSK:+AES-256-CCM-8:+AEAD \ +RSA-PSK:+CAMELLIA-128-GCM:+AEAD \ +RSA-PSK:+CAMELLIA-256-GCM:+AEAD \ +PSK:+CAMELLIA-128-GCM:+AEAD \ @@ -737,10 +780,6 @@ add_mbedtls_ciphersuites() M_CIPHERS="$M_CIPHERS \ TLS-ECDH-ECDSA-WITH-CAMELLIA-128-GCM-SHA256 \ TLS-ECDH-ECDSA-WITH-CAMELLIA-256-GCM-SHA384 \ - TLS-ECDHE-ECDSA-WITH-AES-128-CCM \ - TLS-ECDHE-ECDSA-WITH-AES-256-CCM \ - TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ - TLS-ECDHE-ECDSA-WITH-AES-256-CCM-8 \ TLS-ECDHE-ECDSA-WITH-ARIA-256-CBC-SHA384 \ TLS-ECDHE-ECDSA-WITH-ARIA-128-CBC-SHA256 \ TLS-ECDH-ECDSA-WITH-ARIA-256-GCM-SHA384 \ @@ -755,14 +794,6 @@ add_mbedtls_ciphersuites() if [ `minor_ver "$MODE"` -ge 3 ] then M_CIPHERS="$M_CIPHERS \ - TLS-RSA-WITH-AES-128-CCM \ - TLS-RSA-WITH-AES-256-CCM \ - TLS-DHE-RSA-WITH-AES-128-CCM \ - TLS-DHE-RSA-WITH-AES-256-CCM \ - TLS-RSA-WITH-AES-128-CCM-8 \ - TLS-RSA-WITH-AES-256-CCM-8 \ - TLS-DHE-RSA-WITH-AES-128-CCM-8 \ - TLS-DHE-RSA-WITH-AES-256-CCM-8 \ TLS-ECDHE-RSA-WITH-ARIA-256-CBC-SHA384 \ TLS-DHE-RSA-WITH-ARIA-256-CBC-SHA384 \ TLS-ECDHE-RSA-WITH-ARIA-128-CBC-SHA256 \ @@ -789,14 +820,6 @@ add_mbedtls_ciphersuites() if [ `minor_ver "$MODE"` -ge 3 ] then M_CIPHERS="$M_CIPHERS \ - TLS-PSK-WITH-AES-128-CCM \ - TLS-PSK-WITH-AES-256-CCM \ - TLS-DHE-PSK-WITH-AES-128-CCM \ - TLS-DHE-PSK-WITH-AES-256-CCM \ - TLS-PSK-WITH-AES-128-CCM-8 \ - TLS-PSK-WITH-AES-256-CCM-8 \ - TLS-DHE-PSK-WITH-AES-128-CCM-8 \ - TLS-DHE-PSK-WITH-AES-256-CCM-8 \ TLS-RSA-PSK-WITH-ARIA-256-CBC-SHA384 \ TLS-RSA-PSK-WITH-ARIA-128-CBC-SHA256 \ TLS-PSK-WITH-ARIA-256-CBC-SHA384 \ @@ -842,10 +865,17 @@ setup_arguments() exit 1; esac + # GnuTLS < 3.4 will choke if we try to allow CCM-8 + if [ -z "${GNUTLS_MINOR_LT_FOUR-}" ]; then + G_PRIO_CCM="+AES-256-CCM-8:+AES-128-CCM-8:" + else + G_PRIO_CCM="" + fi + M_SERVER_ARGS="server_port=$PORT server_addr=0.0.0.0 force_version=$MODE arc4=1" O_SERVER_ARGS="-accept $PORT -cipher NULL,ALL -$MODE -dhparam data_files/dhparams.pem" G_SERVER_ARGS="-p $PORT --http $G_MODE" - G_SERVER_PRIO="NORMAL:+ARCFOUR-128:+NULL:+MD5:+PSK:+DHE-PSK:+ECDHE-PSK:+RSA-PSK:-VERS-TLS-ALL:$G_PRIO_MODE" + G_SERVER_PRIO="NORMAL:${G_PRIO_CCM}+ARCFOUR-128:+NULL:+MD5:+PSK:+DHE-PSK:+ECDHE-PSK:+RSA-PSK:-VERS-TLS-ALL:$G_PRIO_MODE" # with OpenSSL 1.0.1h, -www, -WWW and -HTTP break DTLS handshakes if is_dtls "$MODE"; then From 2e58e8ee345894ee224694cf727b1443de3d3423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 18 Jun 2018 11:16:43 +0200 Subject: [PATCH 0541/1100] Implement ChachaPoly mode in TLS --- library/ssl_tls.c | 150 +++++++++++++++++++++++++++++++++------------- 1 file changed, 109 insertions(+), 41 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e5119fcdac..c6e5f97025 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -688,18 +688,32 @@ int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ) transform->keylen = cipher_info->key_bitlen / 8; if( cipher_info->mode == MBEDTLS_MODE_GCM || - cipher_info->mode == MBEDTLS_MODE_CCM ) + cipher_info->mode == MBEDTLS_MODE_CCM || + cipher_info->mode == MBEDTLS_MODE_CHACHAPOLY ) { + size_t taglen, explicit_ivlen; + transform->maclen = 0; mac_key_len = 0; + /* All modes haves 96-bit IVs; + * GCM and CCM has 4 implicit and 8 explicit bytes + * ChachaPoly has all 12 bytes implicit + */ transform->ivlen = 12; - transform->fixed_ivlen = 4; + if( cipher_info->mode == MBEDTLS_MODE_CHACHAPOLY ) + transform->fixed_ivlen = 12; + else + transform->fixed_ivlen = 4; - /* Minimum length is expicit IV + tag */ - transform->minlen = transform->ivlen - transform->fixed_ivlen - + ( transform->ciphersuite_info->flags & - MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16 ); + /* All modes have 128-bit tags, except CCM_8 (ciphersuite flag) */ + taglen = transform->ciphersuite_info->flags & + MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; + + + /* Minimum length of encrypted record */ + explicit_ivlen = transform->ivlen - transform->fixed_ivlen; + transform->minlen = explicit_ivlen + taglen; } else { @@ -1394,17 +1408,26 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) if( mode == MBEDTLS_MODE_GCM || - mode == MBEDTLS_MODE_CCM ) + mode == MBEDTLS_MODE_CCM || + mode == MBEDTLS_MODE_CHACHAPOLY ) { int ret; size_t enc_msglen, olen; unsigned char *enc_msg; unsigned char add_data[13]; - unsigned char taglen = ssl->transform_out->ciphersuite_info->flags & + unsigned char iv[12]; + mbedtls_ssl_transform *transform = ssl->transform_out; + unsigned char taglen = transform->ciphersuite_info->flags & MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; + size_t explicit_ivlen = transform->ivlen - transform->fixed_ivlen; + /* + * Prepare additional authenticated data + */ memcpy( add_data, ssl->out_ctr, 8 ); add_data[8] = ssl->out_msgtype; mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, @@ -1412,44 +1435,57 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) add_data[11] = ( ssl->out_msglen >> 8 ) & 0xFF; add_data[12] = ssl->out_msglen & 0xFF; - MBEDTLS_SSL_DEBUG_BUF( 4, "additional data used for AEAD", - add_data, 13 ); + MBEDTLS_SSL_DEBUG_BUF( 4, "additional data for AEAD", add_data, 13 ); /* * Generate IV */ - if( ssl->transform_out->ivlen - ssl->transform_out->fixed_ivlen != 8 ) + if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) + { + /* GCM and CCM: concatenate fixed + explicit (=seqnum) */ + memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); + memcpy( iv + transform->fixed_ivlen, ssl->out_ctr, 8 ); + memcpy( ssl->out_iv, ssl->out_ctr, 8 ); + + } + else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) + { + /* ChachaPoly: XOR fixed + sequence number */ + unsigned char i; + + memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); + + for( i = 0; i < 8; i++ ) + iv[i+4] ^= ssl->out_ctr[i]; + } + else { /* Reminder if we ever add an AEAD mode with a different size */ MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - memcpy( ssl->transform_out->iv_enc + ssl->transform_out->fixed_ivlen, - ssl->out_ctr, 8 ); - memcpy( ssl->out_iv, ssl->out_ctr, 8 ); - - MBEDTLS_SSL_DEBUG_BUF( 4, "IV used", ssl->out_iv, - ssl->transform_out->ivlen - ssl->transform_out->fixed_ivlen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (internal)", + iv, transform->ivlen ); + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used (transmitted)", + ssl->out_iv, explicit_ivlen ); /* - * Fix pointer positions and message length with added IV + * Fix message length with added IV */ enc_msg = ssl->out_msg; enc_msglen = ssl->out_msglen; - ssl->out_msglen += ssl->transform_out->ivlen - - ssl->transform_out->fixed_ivlen; + ssl->out_msglen += explicit_ivlen; MBEDTLS_SSL_DEBUG_MSG( 3, ( "before encrypt: msglen = %d, " - "including %d bytes of padding", - ssl->out_msglen, 0 ) ); + "including 0 bytes of padding", + ssl->out_msglen ) ); /* * Encrypt and authenticate */ - if( ( ret = mbedtls_cipher_auth_encrypt( &ssl->transform_out->cipher_ctx_enc, - ssl->transform_out->iv_enc, - ssl->transform_out->ivlen, + if( ( ret = mbedtls_cipher_auth_encrypt( &transform->cipher_ctx_enc, + iv, transform->ivlen, add_data, 13, enc_msg, enc_msglen, enc_msg, &olen, @@ -1609,7 +1645,6 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) { - size_t i; mbedtls_cipher_mode_t mode; int auth_done = 0; #if defined(SSL_SOME_MODES_USE_MAC) @@ -1659,20 +1694,27 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */ -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) +#if defined(MBEDTLS_GCM_C) || \ + defined(MBEDTLS_CCM_C) || \ + defined(MBEDTLS_CHACHAPOLY_C) if( mode == MBEDTLS_MODE_GCM || - mode == MBEDTLS_MODE_CCM ) + mode == MBEDTLS_MODE_CCM || + mode == MBEDTLS_MODE_CHACHAPOLY ) { int ret; size_t dec_msglen, olen; unsigned char *dec_msg; unsigned char *dec_msg_result; unsigned char add_data[13]; - unsigned char taglen = ssl->transform_in->ciphersuite_info->flags & + unsigned char iv[12]; + mbedtls_ssl_transform *transform = ssl->transform_in; + unsigned char taglen = transform->ciphersuite_info->flags & MBEDTLS_CIPHERSUITE_SHORT_TAG ? 8 : 16; - size_t explicit_iv_len = ssl->transform_in->ivlen - - ssl->transform_in->fixed_ivlen; + size_t explicit_iv_len = transform->ivlen - transform->fixed_ivlen; + /* + * Compute and update sizes + */ if( ssl->in_msglen < explicit_iv_len + taglen ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "msglen (%d) < explicit_iv_len (%d) " @@ -1686,6 +1728,9 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) dec_msg_result = ssl->in_msg; ssl->in_msglen = dec_msglen; + /* + * Prepare additional authenticated data + */ memcpy( add_data, ssl->in_ctr, 8 ); add_data[8] = ssl->in_msgtype; mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, @@ -1693,23 +1738,43 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) add_data[11] = ( ssl->in_msglen >> 8 ) & 0xFF; add_data[12] = ssl->in_msglen & 0xFF; - MBEDTLS_SSL_DEBUG_BUF( 4, "additional data used for AEAD", - add_data, 13 ); + MBEDTLS_SSL_DEBUG_BUF( 4, "additional data for AEAD", add_data, 13 ); - memcpy( ssl->transform_in->iv_dec + ssl->transform_in->fixed_ivlen, - ssl->in_iv, - ssl->transform_in->ivlen - ssl->transform_in->fixed_ivlen ); + /* + * Prepare IV + */ + if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) + { + /* GCM and CCM: concatenate fixed + explicit (transmitted) */ + memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); + memcpy( iv + transform->fixed_ivlen, ssl->in_iv, 8 ); - MBEDTLS_SSL_DEBUG_BUF( 4, "IV used", ssl->transform_in->iv_dec, - ssl->transform_in->ivlen ); + } + else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) + { + /* ChachaPoly: XOR fixed + sequence number */ + unsigned char i; + + memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); + + for( i = 0; i < 8; i++ ) + iv[i+4] ^= ssl->in_ctr[i]; + } + else + { + /* Reminder if we ever add an AEAD mode with a different size */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + MBEDTLS_SSL_DEBUG_BUF( 4, "IV used", iv, transform->ivlen ); MBEDTLS_SSL_DEBUG_BUF( 4, "TAG used", dec_msg + dec_msglen, taglen ); /* * Decrypt and authenticate */ if( ( ret = mbedtls_cipher_auth_decrypt( &ssl->transform_in->cipher_ctx_dec, - ssl->transform_in->iv_dec, - ssl->transform_in->ivlen, + iv, transform->ivlen, add_data, 13, dec_msg, dec_msglen, dec_msg_result, &olen, @@ -1827,6 +1892,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) */ if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) { + unsigned char i; dec_msglen -= ssl->transform_in->ivlen; ssl->in_msglen -= ssl->transform_in->ivlen; @@ -1901,6 +1967,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) */ size_t pad_count = 0, real_count = 1; size_t padding_idx = ssl->in_msglen - padlen - 1; + size_t i; /* * Padding is guaranteed to be incorrect if: @@ -2077,6 +2144,7 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) else #endif { + unsigned char i; for( i = 8; i > ssl_ep_len( ssl ); i-- ) if( ++ssl->in_ctr[i - 1] != 0 ) break; From 9fece7ee91710c0d1ad5306b2cd3037c2f7b3758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 18 Jun 2018 11:38:22 +0200 Subject: [PATCH 0542/1100] Add ChachaPoly ciphersuites to compat.sh This is disabled by default since it requires OpenSSL >= 1.1.0 and the current default version on the CI is 1.0.2. However, the CI also has 1.1.1-rc which can be used for this. --- tests/compat.sh | 19 ++++++++++++++++++- tests/scripts/all.sh | 4 ++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tests/compat.sh b/tests/compat.sh index fdef98e91f..bf65e5e61f 100755 --- a/tests/compat.sh +++ b/tests/compat.sh @@ -61,7 +61,8 @@ FILTER="" # - RC4, single-DES: requires legacy OpenSSL/GnuTLS versions # avoid plain DES but keep 3DES-EDE-CBC (mbedTLS), DES-CBC3 (OpenSSL) # - ARIA: not in default config.h + requires OpenSSL >= 1.1.1 -EXCLUDE='NULL\|DES-CBC-\|RC4\|ARCFOUR\|ARIA' +# - ChachaPoly: requires OpenSSL >= 1.1.0 +EXCLUDE='NULL\|DES-CBC-\|RC4\|ARCFOUR\|ARIA\|CHACHA20-POLY1305' VERBOSE="" MEMCHECK=0 PEERS="OpenSSL$PEER_GNUTLS mbedTLS" @@ -440,6 +441,9 @@ add_common_ciphersuites() # NOTE: for some reason RSA-PSK doesn't work with OpenSSL, # so RSA-PSK ciphersuites need to go in other sections, see # https://github.com/ARMmbed/mbedtls/issues/1419 +# +# ChachaPoly suites are here rather than in "common", as they were added in +# GnuTLS in 3.5.0 and the CI only has 3.4.x so far. add_openssl_ciphersuites() { case $TYPE in @@ -471,6 +475,7 @@ add_openssl_ciphersuites() TLS-ECDH-ECDSA-WITH-AES-256-GCM-SHA384 \ TLS-ECDHE-ECDSA-WITH-ARIA-256-GCM-SHA384 \ TLS-ECDHE-ECDSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \ " O_CIPHERS="$O_CIPHERS \ ECDH-ECDSA-AES128-SHA256 \ @@ -479,6 +484,7 @@ add_openssl_ciphersuites() ECDH-ECDSA-AES256-GCM-SHA384 \ ECDHE-ECDSA-ARIA256-GCM-SHA384 \ ECDHE-ECDSA-ARIA128-GCM-SHA256 \ + ECDHE-ECDSA-CHACHA20-POLY1305 \ " fi ;; @@ -501,6 +507,8 @@ add_openssl_ciphersuites() TLS-ECDHE-RSA-WITH-ARIA-128-GCM-SHA256 \ TLS-DHE-RSA-WITH-ARIA-128-GCM-SHA256 \ TLS-RSA-WITH-ARIA-128-GCM-SHA256 \ + TLS-DHE-RSA-WITH-CHACHA20-POLY1305-SHA256 \ + TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256 \ " O_CIPHERS="$O_CIPHERS \ ECDHE-ARIA256-GCM-SHA384 \ @@ -509,6 +517,8 @@ add_openssl_ciphersuites() ECDHE-ARIA128-GCM-SHA256 \ DHE-RSA-ARIA128-GCM-SHA256 \ ARIA128-GCM-SHA256 \ + DHE-RSA-CHACHA20-POLY1305 \ + ECDHE-RSA-CHACHA20-POLY1305 \ " fi ;; @@ -521,12 +531,18 @@ add_openssl_ciphersuites() TLS-DHE-PSK-WITH-ARIA-128-GCM-SHA256 \ TLS-PSK-WITH-ARIA-256-GCM-SHA384 \ TLS-PSK-WITH-ARIA-128-GCM-SHA256 \ + TLS-PSK-WITH-CHACHA20-POLY1305-SHA256 \ + TLS-ECDHE-PSK-WITH-CHACHA20-POLY1305-SHA256 \ + TLS-DHE-PSK-WITH-CHACHA20-POLY1305-SHA256 \ " O_CIPHERS="$O_CIPHERS \ DHE-PSK-ARIA256-GCM-SHA384 \ DHE-PSK-ARIA128-GCM-SHA256 \ PSK-ARIA256-GCM-SHA384 \ PSK-ARIA128-GCM-SHA256 \ + DHE-PSK-CHACHA20-POLY1305 \ + ECDHE-PSK-CHACHA20-POLY1305 \ + PSK-CHACHA20-POLY1305 \ " fi ;; @@ -830,6 +846,7 @@ add_mbedtls_ciphersuites() TLS-ECDHE-PSK-WITH-ARIA-128-CBC-SHA256 \ TLS-DHE-PSK-WITH-ARIA-256-CBC-SHA384 \ TLS-DHE-PSK-WITH-ARIA-128-CBC-SHA256 \ + TLS-RSA-PSK-WITH-CHACHA20-POLY1305-SHA256 \ " fi ;; diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 81a26147e8..6d7bbc24f8 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -543,8 +543,8 @@ if_build_succeeded tests/ssl-opt.sh -f 'Default\|ECJPAKE\|SSL async private' msg "test: compat.sh RC4, DES & NULL (full config)" # ~ 2 min if_build_succeeded env OPENSSL_CMD="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_LEGACY_CLI" GNUTLS_SERV="$GNUTLS_LEGACY_SERV" tests/compat.sh -e '3DES\|DES-CBC3' -f 'NULL\|DES\|RC4\|ARCFOUR' -msg "test: compat.sh ARIA" -if_build_succeeded env OPENSSL_CMD="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA' +msg "test: compat.sh ARIA + ChachaPoly" +if_build_succeeded env OPENSSL_CMD="$OPENSSL_NEXT" tests/compat.sh -e '^$' -f 'ARIA\|CHACHA' msg "test/build: curves.pl (gcc)" # ~ 4 min cleanup From 1f092b40a6877ad57bea043cee40328545505dce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 19 Jun 2018 12:48:24 +0200 Subject: [PATCH 0543/1100] Add ChangeLog entry for ChachaPoly ciphersuites fixes #346 --- ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23f4291d91..3cbccd7d64 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,9 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time - authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by - Daniel King (#485). + authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed + by Daniel King (#485). + * Add support for CHACHA20-POLY1305 ciphersuites from RFC 7905. = mbed TLS 2.11.0 branch released 2018-06-18 From e12f0acc4c1bca3d6a171b8392613c0be0541815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 19 Jun 2018 14:54:11 +0200 Subject: [PATCH 0544/1100] Adapt buffer size for minimal CCM config This is useful for testing interop with GnuTLS, which sends records larger than 512 bytes. This change is triggered by the addition of CCM interop testing with GnuTLS a few commits ago. --- configs/config-ccm-psk-tls1_2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/config-ccm-psk-tls1_2.h b/configs/config-ccm-psk-tls1_2.h index a783e6b73b..c9b58dd538 100644 --- a/configs/config-ccm-psk-tls1_2.h +++ b/configs/config-ccm-psk-tls1_2.h @@ -81,7 +81,7 @@ * both ends of the connection! (See comments in "mbedtls/ssl.h".) * The optimal size here depends on the typical size of records. */ -#define MBEDTLS_SSL_MAX_CONTENT_LEN 512 +#define MBEDTLS_SSL_MAX_CONTENT_LEN 1024 #include "mbedtls/check_config.h" From c51d613eac600a9c80d2a97aaf6ccf651f8c820e Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 19 Jun 2018 17:25:34 +0100 Subject: [PATCH 0545/1100] Ensure crosscompiling with make works in Mac OS X --- library/Makefile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/library/Makefile b/library/Makefile index b1ef8d3f6c..857e977e9b 100644 --- a/library/Makefile +++ b/library/Makefile @@ -37,27 +37,29 @@ SOEXT_TLS=so.10 SOEXT_X509=so.0 SOEXT_CRYPTO=so.2 -DLEXT ?= so - # Set AR_DASH= (empty string) to use an ar implentation that does not accept # the - prefix for command line options (e.g. llvm-ar) AR_DASH ?= - +ARFLAGS = $(AR_DASH)src ifdef APPLE_BUILD +ifneq ($(APPLE_BUILD),0) ARFLAGS = $(AR_DASH)Src RLFLAGS = -no_warning_for_no_symbols -c RL ?= ranlib -else -ARFLAGS = $(AR_DASH)src +endif endif +DLEXT ?= so ifdef WINDOWS_BUILD # Windows shared library extension: DLEXT = dll else ifdef APPLE_BUILD +ifneq ($(APPLE_BUILD),0) # Mac OS X shared library extension: DLEXT = dylib endif +endif OBJS_CRYPTO= aes.o aesni.o arc4.o \ asn1parse.o asn1write.o base64.o \ @@ -109,9 +111,11 @@ libmbedtls.a: $(OBJS_TLS) echo " AR $@" $(AR) $(ARFLAGS) $@ $(OBJS_TLS) ifdef APPLE_BUILD +ifneq ($(APPLE_BUILD),0) echo " RL $@" $(RL) $(RLFLAGS) $@ endif +endif libmbedtls.$(SOEXT_TLS): $(OBJS_TLS) libmbedx509.so echo " LD $@" @@ -134,9 +138,11 @@ libmbedx509.a: $(OBJS_X509) echo " AR $@" $(AR) $(ARFLAGS) $@ $(OBJS_X509) ifdef APPLE_BUILD +ifneq ($(APPLE_BUILD),0) echo " RL $@" $(RL) $(RLFLAGS) $@ endif +endif libmbedx509.$(SOEXT_X509): $(OBJS_X509) libmbedcrypto.so echo " LD $@" @@ -159,9 +165,11 @@ libmbedcrypto.a: $(OBJS_CRYPTO) echo " AR $@" $(AR) $(ARFLAGS) $@ $(OBJS_CRYPTO) ifdef APPLE_BUILD +ifneq ($(APPLE_BUILD),0) echo " RL $@" $(RL) $(RLFLAGS) $@ endif +endif libmbedcrypto.$(SOEXT_CRYPTO): $(OBJS_CRYPTO) echo " LD $@" From 21f73b57edf366392643fb53b545c2e566fe3ac7 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Wed, 20 Jun 2018 08:13:24 +0200 Subject: [PATCH 0546/1100] Coding style Commit to be squashed --- library/x509_csr.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/x509_csr.c b/library/x509_csr.c index 40a0f20613..779098d4e9 100644 --- a/library/x509_csr.c +++ b/library/x509_csr.c @@ -279,7 +279,8 @@ int mbedtls_x509_csr_parse( mbedtls_x509_csr *csr, const unsigned char *buf, siz #if defined(MBEDTLS_PEM_PARSE_C) /* Avoid calling mbedtls_pem_read_buffer() on non-null-terminated string */ - if( buf[buflen - 1] == '\0' ) { + if( buf[buflen - 1] == '\0' ) + { mbedtls_pem_init( &pem ); ret = mbedtls_pem_read_buffer( &pem, "-----BEGIN CERTIFICATE REQUEST-----", From 30e731decd2cd4266b74d544ca81294d2947bf97 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 12 Oct 2017 13:50:29 +0200 Subject: [PATCH 0547/1100] Added buffer_size and response_size options for ssl-server2. Added appropriate tests. --- programs/ssl/ssl_server2.c | 64 ++++++++++-- tests/ssl-opt.sh | 193 +++++++++++++++++++++++++++++++------ 2 files changed, 220 insertions(+), 37 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 3a413ad5e5..74d3a1d01b 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -99,6 +99,7 @@ int main( void ) #define DFL_SERVER_ADDR NULL #define DFL_SERVER_PORT "4433" +#define DFL_RESPONSE_SIZE -1 #define DFL_DEBUG_LEVEL 0 #define DFL_NBIO 0 #define DFL_EVENT 0 @@ -171,7 +172,7 @@ int main( void ) * You will need to adapt the mbedtls_ssl_get_bytes_avail() test in ssl-opt.sh * if you change this value to something outside the range <= 100 or > 500 */ -#define IO_BUF_LEN 200 +#define DFL_IO_BUF_LEN 200 #if defined(MBEDTLS_X509_CRT_PARSE_C) #if defined(MBEDTLS_FS_IO) @@ -346,6 +347,11 @@ int main( void ) " server_addr=%%s default: (all interfaces)\n" \ " server_port=%%d default: 4433\n" \ " debug_level=%%d default: 0 (disabled)\n" \ + " buffer_size=%%d default: 200 \n" \ + " (minimum: 1, max: 16385)\n" \ + " response_size=%%d default: about 152 (basic response)\n" \ + " (minimum: 0, max: 16384)\n" \ + " increases buffer_size if bigger\n"\ " nbio=%%d default: 0 (blocking I/O)\n" \ " options: 1 (non-blocking), 2 (added delays)\n" \ " event=%%d default: 0 (loop)\n" \ @@ -421,6 +427,8 @@ struct options int nbio; /* should I/O be blocking? */ int event; /* loop or event-driven IO? level or edge triggered? */ uint32_t read_timeout; /* timeout on mbedtls_ssl_read() in milliseconds */ + int response_size; /* pad response with header to requested size */ + uint16_t buffer_size; /* IO buffer size */ const char *ca_file; /* the file with the CA certificate(s) */ const char *ca_path; /* the path with the CA certificate(s) reside */ const char *crt_file; /* the file with the server certificate */ @@ -1154,7 +1162,7 @@ int main( int argc, char *argv[] ) { int ret = 0, len, written, frags, exchanges_left; int version_suites[4][2]; - unsigned char buf[IO_BUF_LEN]; + unsigned char* buf = 0; #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) unsigned char psk[MBEDTLS_PSK_MAX_LEN]; size_t psk_len = 0; @@ -1285,10 +1293,12 @@ int main( int argc, char *argv[] ) goto exit; } + opt.buffer_size = DFL_IO_BUF_LEN; opt.server_addr = DFL_SERVER_ADDR; opt.server_port = DFL_SERVER_PORT; opt.debug_level = DFL_DEBUG_LEVEL; opt.event = DFL_EVENT; + opt.response_size = DFL_RESPONSE_SIZE; opt.nbio = DFL_NBIO; opt.read_timeout = DFL_READ_TIMEOUT; opt.ca_file = DFL_CA_FILE; @@ -1379,6 +1389,20 @@ int main( int argc, char *argv[] ) } else if( strcmp( p, "read_timeout" ) == 0 ) opt.read_timeout = atoi( q ); + else if( strcmp( p, "buffer_size" ) == 0 ) + { + opt.buffer_size = atoi( q ); + if( opt.buffer_size < 1 || opt.buffer_size > MBEDTLS_SSL_MAX_CONTENT_LEN + 1 ) + goto usage; + } + else if( strcmp( p, "response_size" ) == 0 ) + { + opt.response_size = atoi( q ); + if( opt.response_size < 0 || opt.response_size > MBEDTLS_SSL_MAX_CONTENT_LEN ) + goto usage; + if( opt.buffer_size < opt.response_size ) + opt.buffer_size = opt.response_size; + } else if( strcmp( p, "ca_file" ) == 0 ) opt.ca_file = q; else if( strcmp( p, "ca_path" ) == 0 ) @@ -1700,7 +1724,14 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_DEBUG_C) mbedtls_debug_set_threshold( opt.debug_level ); #endif - + buf = malloc( opt.buffer_size ); + if( buf == NULL ) + { + mbedtls_printf("Could not allocate %u bytes\n", opt.buffer_size); + ret = 3; + goto exit; + } + if( opt.force_ciphersuite[0] > 0 ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info; @@ -2708,8 +2739,8 @@ data_exchange: do { int terminated = 0; - len = sizeof( buf ) - 1; - memset( buf, 0, sizeof( buf ) ); + len = opt.buffer_size - 1; + memset( buf, 0, opt.buffer_size ); ret = mbedtls_ssl_read( &ssl, buf, len ); if( mbedtls_status_is_ssl_in_progress( ret ) ) @@ -2809,8 +2840,8 @@ data_exchange: } else /* Not stream, so datagram */ { - len = sizeof( buf ) - 1; - memset( buf, 0, sizeof( buf ) ); + len = opt.buffer_size - 1; + memset( buf, 0, opt.buffer_size ); do { @@ -2908,6 +2939,25 @@ data_exchange: len = sprintf( (char *) buf, HTTP_RESPONSE, mbedtls_ssl_get_ciphersuite( &ssl ) ); + /* Add padding to the response to reach opt.response_size in length */ + if( opt.response_size != DFL_RESPONSE_SIZE && + len < opt.response_size ) + { + memset( buf + len, 'B', opt.response_size - len ); + len += opt.response_size - len; + } + + /* Truncate if response size is smaller than the "natural" size */ + if( opt.response_size != DFL_RESPONSE_SIZE && + len > opt.response_size ) + { + len = opt.response_size; + + /* Still end with \r\n unless that's really not possible */ + if( len >= 2 ) buf[len - 2] = '\r'; + if( len >= 1 ) buf[len - 1] = '\n'; + } + if( opt.transport == MBEDTLS_SSL_TRANSPORT_STREAM ) { for( written = 0, frags = 0; written < len; written += ret, frags++ ) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9faeb6703e..a9dd5c03fa 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3968,10 +3968,10 @@ run_test "SSLv3 with extensions, server side" \ -S "dumping 'client hello extensions'" \ -S "server hello, total extension length:" -# Test for large packets +# Test for large client packets requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 -run_test "Large packet SSLv3 BlockCipher" \ +run_test "Large client packet SSLv3 BlockCipher" \ "$P_SRV min_version=ssl3" \ "$P_CLI request_size=16384 force_version=ssl3 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3980,7 +3980,7 @@ run_test "Large packet SSLv3 BlockCipher" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 -run_test "Large packet SSLv3 StreamCipher" \ +run_test "Large client packet SSLv3 StreamCipher" \ "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=ssl3 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ @@ -3988,7 +3988,7 @@ run_test "Large packet SSLv3 StreamCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.0 BlockCipher" \ +run_test "Large client packet TLS 1.0 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3996,7 +3996,7 @@ run_test "Large packet TLS 1.0 BlockCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.0 BlockCipher, without EtM" \ +run_test "Large client packet TLS 1.0 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -4004,7 +4004,7 @@ run_test "Large packet TLS 1.0 BlockCipher, without EtM" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.0 BlockCipher, truncated MAC" \ +run_test "Large client packet TLS 1.0 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -4013,21 +4013,21 @@ run_test "Large packet TLS 1.0 BlockCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1 etm=0 recsplit=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ 0 \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.0 StreamCipher" \ +run_test "Large client packet TLS 1.0 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.0 StreamCipher, without EtM" \ +run_test "Large client packet TLS 1.0 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -4035,7 +4035,7 @@ run_test "Large packet TLS 1.0 StreamCipher, without EtM" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.0 StreamCipher, truncated MAC" \ +run_test "Large client packet TLS 1.0 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -4043,7 +4043,7 @@ run_test "Large packet TLS 1.0 StreamCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ @@ -4051,7 +4051,7 @@ run_test "Large packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.1 BlockCipher" \ +run_test "Large client packet TLS 1.1 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -4059,7 +4059,7 @@ run_test "Large packet TLS 1.1 BlockCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.1 BlockCipher, without EtM" \ +run_test "Large client packet TLS 1.1 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_1 etm=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -4067,7 +4067,7 @@ run_test "Large packet TLS 1.1 BlockCipher, without EtM" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.1 BlockCipher, truncated MAC" \ +run_test "Large client packet TLS 1.1 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -4075,14 +4075,14 @@ run_test "Large packet TLS 1.1 BlockCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.1 StreamCipher" \ +run_test "Large client packet TLS 1.1 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ @@ -4090,7 +4090,7 @@ run_test "Large packet TLS 1.1 StreamCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.1 StreamCipher, without EtM" \ +run_test "Large client packet TLS 1.1 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -4099,7 +4099,7 @@ run_test "Large packet TLS 1.1 StreamCipher, without EtM" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.1 StreamCipher, truncated MAC" \ +run_test "Large client packet TLS 1.1 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -4107,7 +4107,7 @@ run_test "Large packet TLS 1.1 StreamCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ @@ -4115,7 +4115,7 @@ run_test "Large packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 BlockCipher" \ +run_test "Large client packet TLS 1.2 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -4123,14 +4123,14 @@ run_test "Large packet TLS 1.2 BlockCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 BlockCipher, without EtM" \ +run_test "Large client packet TLS 1.2 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 etm=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 BlockCipher larger MAC" \ +run_test "Large client packet TLS 1.2 BlockCipher larger MAC" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \ @@ -4139,7 +4139,7 @@ run_test "Large packet TLS 1.2 BlockCipher larger MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.2 BlockCipher, truncated MAC" \ +run_test "Large client packet TLS 1.2 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -4147,7 +4147,7 @@ run_test "Large packet TLS 1.2 BlockCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ @@ -4155,7 +4155,7 @@ run_test "Large packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 StreamCipher" \ +run_test "Large client packet TLS 1.2 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ @@ -4163,7 +4163,7 @@ run_test "Large packet TLS 1.2 StreamCipher" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 StreamCipher, without EtM" \ +run_test "Large client packet TLS 1.2 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -4171,7 +4171,7 @@ run_test "Large packet TLS 1.2 StreamCipher, without EtM" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.2 StreamCipher, truncated MAC" \ +run_test "Large client packet TLS 1.2 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -4179,7 +4179,7 @@ run_test "Large packet TLS 1.2 StreamCipher, truncated MAC" \ -s "Read from client: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Large packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ +run_test "Large client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ @@ -4187,7 +4187,7 @@ run_test "Large packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 AEAD" \ +run_test "Large client packet TLS 1.2 AEAD" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \ @@ -4195,7 +4195,7 @@ run_test "Large packet TLS 1.2 AEAD" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" -run_test "Large packet TLS 1.2 AEAD shorter tag" \ +run_test "Large client packet TLS 1.2 AEAD shorter tag" \ "$P_SRV" \ "$P_CLI request_size=16384 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \ @@ -4203,6 +4203,139 @@ run_test "Large packet TLS 1.2 AEAD shorter tag" \ -c "16384 bytes written in 1 fragments" \ -s "Read from client: 16384 bytes read" +# Test for large server packets + +requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 +run_test "Large server packet SSLv3 BlockCipher" \ + "$P_SRV response_size=16384 min_version=ssl3" \ + "$P_CLI force_version=ssl3 recsplit=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 +run_test "Large server packet SSLv3 StreamCipher" \ + "$P_SRV response_size=16384 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=ssl3 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +# Checking next 2 tests logs for 1n-1 split against BEAST too +run_test "Large server packet TLS 1.0 BlockCipher" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1 recsplit=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read"\ + -c "16383 bytes read"\ + -C "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.0 BlockCipher truncated MAC" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1 recsplit=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read"\ + -c "16383 bytes read"\ + -C "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.0 StreamCipher truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.1 BlockCipher" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.1 StreamCipher" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.1 BlockCipher truncated MAC" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 BlockCipher" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \ + 0 \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.2 BlockCipher truncated MAC" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 StreamCipher" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.2 StreamCipher truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ + trunc_hmac=1" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 AEAD" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 AEAD shorter tag" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \ + 0 \ + -c "Read from server: 16384 bytes read" + # Tests of asynchronous private key support in SSL requires_config_enabled MBEDTLS_SSL_ASYNC_PRIVATE From c19fc55538eff85877ce5aeb9ccbb4c57130d6fc Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 19 Jun 2018 09:37:30 -0400 Subject: [PATCH 0548/1100] Add missing large and small packet tests for ssl_server2 --- tests/ssl-opt.sh | 486 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 443 insertions(+), 43 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index a9dd5c03fa..92151fd87f 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -3669,10 +3669,10 @@ run_test "mbedtls_ssl_get_bytes_avail: extra data" \ 0 \ -s "Read from client: 500 bytes read (.*+.*)" -# Tests for small packets +# Tests for small client packets requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 -run_test "Small packet SSLv3 BlockCipher" \ +run_test "Small client packet SSLv3 BlockCipher" \ "$P_SRV min_version=ssl3" \ "$P_CLI request_size=1 force_version=ssl3 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3680,21 +3680,21 @@ run_test "Small packet SSLv3 BlockCipher" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 -run_test "Small packet SSLv3 StreamCipher" \ +run_test "Small client packet SSLv3 StreamCipher" \ "$P_SRV min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=ssl3 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.0 BlockCipher" \ +run_test "Small client packet TLS 1.0 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.0 BlockCipher, without EtM" \ +run_test "Small client packet TLS 1.0 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1 etm=0 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3702,7 +3702,7 @@ run_test "Small packet TLS 1.0 BlockCipher, without EtM" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.0 BlockCipher, truncated MAC" \ +run_test "Small client packet TLS 1.0 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -3710,21 +3710,21 @@ run_test "Small packet TLS 1.0 BlockCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.0 StreamCipher" \ +run_test "Small client packet TLS 1.0 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.0 StreamCipher, without EtM" \ +run_test "Small client packet TLS 1.0 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -3732,7 +3732,7 @@ run_test "Small packet TLS 1.0 StreamCipher, without EtM" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.0 StreamCipher, truncated MAC" \ +run_test "Small client packet TLS 1.0 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -3740,21 +3740,21 @@ run_test "Small packet TLS 1.0 StreamCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.1 BlockCipher" \ +run_test "Small client packet TLS 1.1 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.1 BlockCipher, without EtM" \ +run_test "Small client packet TLS 1.1 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \ @@ -3762,7 +3762,7 @@ run_test "Small packet TLS 1.1 BlockCipher, without EtM" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.1 BlockCipher, truncated MAC" \ +run_test "Small client packet TLS 1.1 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -3770,21 +3770,21 @@ run_test "Small packet TLS 1.1 BlockCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.1 StreamCipher" \ +run_test "Small client packet TLS 1.1 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.1 StreamCipher, without EtM" \ +run_test "Small client packet TLS 1.1 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -3792,7 +3792,7 @@ run_test "Small packet TLS 1.1 StreamCipher, without EtM" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.1 StreamCipher, truncated MAC" \ +run_test "Small client packet TLS 1.1 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -3800,28 +3800,28 @@ run_test "Small packet TLS 1.1 StreamCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_1 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 BlockCipher" \ +run_test "Small client packet TLS 1.2 BlockCipher" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 BlockCipher, without EtM" \ +run_test "Small client packet TLS 1.2 BlockCipher, without EtM" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 BlockCipher larger MAC" \ +run_test "Small client packet TLS 1.2 BlockCipher larger MAC" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \ @@ -3829,7 +3829,7 @@ run_test "Small packet TLS 1.2 BlockCipher larger MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.2 BlockCipher, truncated MAC" \ +run_test "Small client packet TLS 1.2 BlockCipher, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -3837,21 +3837,21 @@ run_test "Small packet TLS 1.2 BlockCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ "$P_SRV trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 StreamCipher" \ +run_test "Small client packet TLS 1.2 StreamCipher" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 StreamCipher, without EtM" \ +run_test "Small client packet TLS 1.2 StreamCipher, without EtM" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ @@ -3859,7 +3859,7 @@ run_test "Small packet TLS 1.2 StreamCipher, without EtM" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.2 StreamCipher, truncated MAC" \ +run_test "Small client packet TLS 1.2 StreamCipher, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ @@ -3867,31 +3867,31 @@ run_test "Small packet TLS 1.2 StreamCipher, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ +run_test "Small client packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ "$P_SRV arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 AEAD" \ +run_test "Small client packet TLS 1.2 AEAD" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \ 0 \ -s "Read from client: 1 bytes read" -run_test "Small packet TLS 1.2 AEAD shorter tag" \ +run_test "Small client packet TLS 1.2 AEAD shorter tag" \ "$P_SRV" \ "$P_CLI request_size=1 force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \ 0 \ -s "Read from client: 1 bytes read" -# Tests for small packets in DTLS +# Tests for small client packets in DTLS requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -run_test "Small packet DTLS 1.0" \ +run_test "Small client packet DTLS 1.0" \ "$P_SRV dtls=1 force_version=dtls1" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3899,7 +3899,7 @@ run_test "Small packet DTLS 1.0" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -run_test "Small packet DTLS 1.0, without EtM" \ +run_test "Small client packet DTLS 1.0, without EtM" \ "$P_SRV dtls=1 force_version=dtls1 etm=0" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3908,7 +3908,7 @@ run_test "Small packet DTLS 1.0, without EtM" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet DTLS 1.0, truncated hmac" \ +run_test "Small client packet DTLS 1.0, truncated hmac" \ "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1" \ "$P_CLI dtls=1 request_size=1 trunc_hmac=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3917,7 +3917,7 @@ run_test "Small packet DTLS 1.0, truncated hmac" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet DTLS 1.0, without EtM, truncated MAC" \ +run_test "Small client packet DTLS 1.0, without EtM, truncated MAC" \ "$P_SRV dtls=1 force_version=dtls1 trunc_hmac=1 etm=0" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\ @@ -3925,7 +3925,7 @@ run_test "Small packet DTLS 1.0, without EtM, truncated MAC" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -run_test "Small packet DTLS 1.2" \ +run_test "Small client packet DTLS 1.2" \ "$P_SRV dtls=1 force_version=dtls1_2" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3933,7 +3933,7 @@ run_test "Small packet DTLS 1.2" \ -s "Read from client: 1 bytes read" requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -run_test "Small packet DTLS 1.2, without EtM" \ +run_test "Small client packet DTLS 1.2, without EtM" \ "$P_SRV dtls=1 force_version=dtls1_2 etm=0" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ @@ -3942,7 +3942,7 @@ run_test "Small packet DTLS 1.2, without EtM" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet DTLS 1.2, truncated hmac" \ +run_test "Small client packet DTLS 1.2, truncated hmac" \ "$P_SRV dtls=1 force_version=dtls1_2 trunc_hmac=1" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ @@ -3951,13 +3951,302 @@ run_test "Small packet DTLS 1.2, truncated hmac" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC -run_test "Small packet DTLS 1.2, without EtM, truncated MAC" \ +run_test "Small client packet DTLS 1.2, without EtM, truncated MAC" \ "$P_SRV dtls=1 force_version=dtls1_2 trunc_hmac=1 etm=0" \ "$P_CLI dtls=1 request_size=1 \ force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\ 0 \ -s "Read from client: 1 bytes read" +# Tests for small server packets + +requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 +run_test "Small server packet SSLv3 BlockCipher" \ + "$P_SRV response_size=1 min_version=ssl3" \ + "$P_CLI force_version=ssl3 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 +run_test "Small server packet SSLv3 StreamCipher" \ + "$P_SRV response_size=1 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=ssl3 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.0 BlockCipher" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.0 BlockCipher, without EtM" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1 etm=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.0 BlockCipher, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.0 BlockCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.0 StreamCipher" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.0 StreamCipher, without EtM" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.0 StreamCipher, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ + trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.1 BlockCipher" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.1 BlockCipher, without EtM" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.1 BlockCipher, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.1 StreamCipher" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.1 StreamCipher, without EtM" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.1 StreamCipher, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 BlockCipher" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 BlockCipher, without EtM" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 BlockCipher larger MAC" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.2 BlockCipher, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 StreamCipher" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 StreamCipher, without EtM" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.2 StreamCipher, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=1 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 AEAD" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CCM" \ + 0 \ + -c "Read from server: 1 bytes read" + +run_test "Small server packet TLS 1.2 AEAD shorter tag" \ + "$P_SRV response_size=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CCM-8" \ + 0 \ + -c "Read from server: 1 bytes read" + +# Tests for small server packets in DTLS + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +run_test "Small server packet DTLS 1.0" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +run_test "Small server packet DTLS 1.0, without EtM" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1 etm=0" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet DTLS 1.0, truncated hmac" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1" \ + "$P_CLI dtls=1 trunc_hmac=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet DTLS 1.0, without EtM, truncated MAC" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1 trunc_hmac=1 etm=0" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +run_test "Small server packet DTLS 1.2" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1_2" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +run_test "Small server packet DTLS 1.2, without EtM" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 etm=0" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet DTLS 1.2, truncated hmac" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 trunc_hmac=1" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1" \ + 0 \ + -c "Read from server: 1 bytes read" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Small server packet DTLS 1.2, without EtM, truncated MAC" \ + "$P_SRV dtls=1 response_size=1 force_version=dtls1_2 trunc_hmac=1 etm=0" \ + "$P_CLI dtls=1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1"\ + 0 \ + -c "Read from server: 1 bytes read" + # A test for extensions in SSLv3 requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 @@ -4231,6 +4520,15 @@ run_test "Large server packet TLS 1.0 BlockCipher" \ -c "16383 bytes read"\ -C "Read from server: 16384 bytes read" +run_test "Large server packet TLS 1.0 BlockCipher, without EtM" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1 etm=0 recsplit=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read"\ + -c "16383 bytes read"\ + -C "Read from server: 16384 bytes read" + requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large server packet TLS 1.0 BlockCipher truncated MAC" \ "$P_SRV response_size=16384" \ @@ -4249,6 +4547,41 @@ run_test "Large server packet TLS 1.0 StreamCipher truncated MAC" \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA \ trunc_hmac=1" \ 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.0 StreamCipher" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.0 StreamCipher, without EtM" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.0 StreamCipher, truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.0 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ -c "Read from server: 16384 bytes read" run_test "Large server packet TLS 1.1 BlockCipher" \ @@ -4258,11 +4591,12 @@ run_test "Large server packet TLS 1.1 BlockCipher" \ 0 \ -c "Read from server: 16384 bytes read" -run_test "Large server packet TLS 1.1 StreamCipher" \ - "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ - "$P_CLI force_version=tls1_1 \ - force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ +run_test "Large server packet TLS 1.1 BlockCipher, without EtM" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_1 etm=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ 0 \ + -s "16384 bytes written in 1 fragments" \ -c "Read from server: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC @@ -4274,6 +4608,30 @@ run_test "Large server packet TLS 1.1 BlockCipher truncated MAC" \ 0 \ -c "Read from server: 16384 bytes read" +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.1 BlockCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=16384 trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.1 StreamCipher" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + 0 \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.1 StreamCipher, without EtM" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \ "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ @@ -4283,6 +4641,14 @@ run_test "Large server packet TLS 1.1 StreamCipher truncated MAC" \ 0 \ -c "Read from server: 16384 bytes read" +run_test "Large server packet TLS 1.1 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_1 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + run_test "Large server packet TLS 1.2 BlockCipher" \ "$P_SRV response_size=16384" \ "$P_CLI force_version=tls1_2 \ @@ -4290,6 +4656,14 @@ run_test "Large server packet TLS 1.2 BlockCipher" \ 0 \ -c "Read from server: 16384 bytes read" +run_test "Large server packet TLS 1.2 BlockCipher, without EtM" \ + "$P_SRV response_size=16384" \ + "$P_CLI force_version=tls1_2 etm=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + run_test "Large server packet TLS 1.2 BlockCipher larger MAC" \ "$P_SRV response_size=16384" \ "$P_CLI force_version=tls1_2 \ @@ -4306,11 +4680,28 @@ run_test "Large server packet TLS 1.2 BlockCipher truncated MAC" \ 0 \ -c "Read from server: 16384 bytes read" +run_test "Large server packet TLS 1.2 BlockCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=16384 trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA trunc_hmac=1 etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + run_test "Large server packet TLS 1.2 StreamCipher" \ "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ "$P_CLI force_version=tls1_2 \ force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + +run_test "Large server packet TLS 1.2 StreamCipher, without EtM" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ -c "Read from server: 16384 bytes read" requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC @@ -4322,6 +4713,15 @@ run_test "Large server packet TLS 1.2 StreamCipher truncated MAC" \ 0 \ -c "Read from server: 16384 bytes read" +requires_config_enabled MBEDTLS_SSL_TRUNCATED_HMAC +run_test "Large server packet TLS 1.2 StreamCipher, without EtM, truncated MAC" \ + "$P_SRV response_size=16384 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1" \ + "$P_CLI force_version=tls1_2 \ + force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA trunc_hmac=1 etm=0" \ + 0 \ + -s "16384 bytes written in 1 fragments" \ + -c "Read from server: 16384 bytes read" + run_test "Large server packet TLS 1.2 AEAD" \ "$P_SRV response_size=16384" \ "$P_CLI force_version=tls1_2 \ From 95e2ecae95dde7772b1f0e98d572d8a7ba158ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 20 Jun 2018 10:29:47 +0200 Subject: [PATCH 0549/1100] Fix IAR warning The IAR compiler doesn't like it when we assign an int to an enum variable. "C:\builds\ws\mbedtls-restricted-pr\library\ecp.c",509 Error[Pe188]: enumerated type mixed with another type --- library/ecp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ecp.c b/library/ecp.c index 52d6d9c381..bbc1ff0823 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -506,7 +506,7 @@ void mbedtls_ecp_group_init( mbedtls_ecp_group *grp ) if( grp == NULL ) return; - grp->id = 0; + grp->id = MBEDTLS_ECP_DP_NONE; mbedtls_mpi_init( &grp->P ); mbedtls_mpi_init( &grp->A ); mbedtls_mpi_init( &grp->B ); From 7994766581546762745efc0a13dd9a90a8b7787b Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 20 Jun 2018 09:34:54 +0100 Subject: [PATCH 0550/1100] Fix usage of if_build_succeeded in all.sh zeroize test --- tests/scripts/all.sh | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 439a6bf130..01d69c7626 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -357,6 +357,12 @@ if_build_succeeded () { fi } +# to be used instead of ! for commands run with +# record_status or if_build_succeeded +not() { + ! "$@" +} + msg "info: $0 configuration" echo "MEMORY: $MEMORY" echo "FORCE: $FORCE" @@ -907,17 +913,10 @@ for optimization_flag in -O2 -O3 -Ofast -Os; do msg "test: $compiler $optimization_flag, mbedtls_platform_zeroize()" cleanup make programs CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" - if_build_succeeded gdb -x tests/scripts/test_zeroize.gdb -nw -batch -nx > test_zeroize.log 2>&1 - if [ ! -s test_zeroize.log ]; then - err_msg "test_zeroize.log was not found or is empty" - record_status [ -s test_zeroize.log ] - elif ! grep "The buffer was correctly zeroized" test_zeroize.log >/dev/null 2>&1; then - err_msg "test_zeroize.log does not contain pass string" - record_status false - elif grep -i "error" test_zeroize.log >/dev/null 2>&1; then - err_msg "test_zeroize.log contains error string" - record_status false - fi + if_build_succeeded gdb -x tests/scripts/test_zeroize.gdb -nw -batch -nx 2>&1 | tee test_zeroize.log + if_build_succeeded [ -s test_zeroize.log ] + if_build_succeeded grep "The buffer was correctly zeroized" test_zeroize.log + if_build_succeeded not grep -i "error" test_zeroize.log rm -f test_zeroize.log done done From e3402ce44f6286fc07962740b061962d270ed554 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 20 Jun 2018 10:43:21 +0100 Subject: [PATCH 0551/1100] Enable APPLE_BUILD in makefile if using system ar --- library/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/Makefile b/library/Makefile index 857e977e9b..353bd8bec9 100644 --- a/library/Makefile +++ b/library/Makefile @@ -22,8 +22,10 @@ endif ifdef WINDOWS WINDOWS_BUILD=1 else ifeq ($(shell uname -s),Darwin) +ifeq ($(AR),ar) APPLE_BUILD ?= 1 endif +endif # To compile as a shared library: ifdef SHARED From da4029d665a37a290fa4d33e0ed8a3bb29b76f5e Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 20 Jun 2018 07:07:55 -0400 Subject: [PATCH 0552/1100] ssl_server2: add buffer overhead for a termination character Switch to mbedtls style of memory allocation --- programs/ssl/ssl_server2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 74d3a1d01b..b201c8bda7 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1724,7 +1724,7 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_DEBUG_C) mbedtls_debug_set_threshold( opt.debug_level ); #endif - buf = malloc( opt.buffer_size ); + buf = mbedtls_calloc( 1, opt.buffer_size + 1 ); if( buf == NULL ) { mbedtls_printf("Could not allocate %u bytes\n", opt.buffer_size); @@ -3116,6 +3116,7 @@ exit: mbedtls_memory_buffer_alloc_free(); #endif + mbedtls_free(buf); mbedtls_printf( " done.\n" ); #if defined(_WIN32) From 5c7e76eb4a4a9a284066896a40f6e026fbe27f59 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 20 Jun 2018 08:17:04 -0400 Subject: [PATCH 0553/1100] Remove trailing whitespace --- programs/ssl/ssl_server2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index b201c8bda7..a08d6b2f12 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1731,7 +1731,7 @@ int main( int argc, char *argv[] ) ret = 3; goto exit; } - + if( opt.force_ciphersuite[0] > 0 ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info; From 755bb6af5f6fdfcabaddd018d149c2819125d7b3 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 14 Feb 2018 19:30:48 +0200 Subject: [PATCH 0554/1100] Add ecc extensions only if ecc ciphersuite is used Fix compliancy to RFC4492. ECC extensions should be included only if ec ciphersuites are used. Interoperability issue with bouncy castle. #1157 --- library/ssl_ciphersuites.c | 6 ++++-- library/ssl_cli.c | 20 ++++++++++++++++---- library/ssl_srv.c | 8 ++++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/library/ssl_ciphersuites.c b/library/ssl_ciphersuites.c index 2e9a0fd792..dc4f0bbadd 100644 --- a/library/ssl_ciphersuites.c +++ b/library/ssl_ciphersuites.c @@ -2242,7 +2242,8 @@ mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphers #endif /* MBEDTLS_PK_C */ -#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -2252,13 +2253,14 @@ int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ) case MBEDTLS_KEY_EXCHANGE_ECDHE_PSK: case MBEDTLS_KEY_EXCHANGE_ECDH_RSA: case MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA: + case MBEDTLS_KEY_EXCHANGE_ECJPAKE: return( 1 ); default: return( 0 ); } } -#endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C */ +#endif /* MBEDTLS_ECDH_C || MBEDTLS_ECDSA_C || MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED*/ #if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index e537f9d2e1..ad11292a0d 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -766,6 +766,10 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) unsigned char offer_compress; const int *ciphersuites; const mbedtls_ssl_ciphersuite_t *ciphersuite_info; +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + int uses_ec = 0; +#endif MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write client hello" ) ); @@ -917,6 +921,11 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 3, ( "client hello, add ciphersuite: %04x", ciphersuites[i] ) ); +#if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) + uses_ec |= mbedtls_ssl_ciphersuite_uses_ec( ciphersuite_info ); +#endif + n++; *p++ = (unsigned char)( ciphersuites[i] >> 8 ); *p++ = (unsigned char)( ciphersuites[i] ); @@ -1010,11 +1019,14 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) - ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen ); - ext_len += olen; + if( uses_ec ) + { + ssl_write_supported_elliptic_curves_ext( ssl, p + 2 + ext_len, &olen ); + ext_len += olen; - ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); - ext_len += olen; + ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); + ext_len += olen; + } #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 0ccab588eb..91079f17a8 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2564,8 +2564,12 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_ECDH_C) || defined(MBEDTLS_ECDSA_C) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) - ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); - ext_len += olen; + if ( mbedtls_ssl_ciphersuite_uses_ec( + mbedtls_ssl_ciphersuite_from_id( ssl->session_negotiate->ciphersuite ) ) ) + { + ssl_write_supported_point_formats_ext( ssl, p + 2 + ext_len, &olen ); + ext_len += olen; + } #endif #if defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) From 3f38cf7c7b7695d83d9049c630bd63a44d5f45e2 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 21 Jun 2018 16:40:24 +0300 Subject: [PATCH 0555/1100] Add entry in ChangeLog Add an entry in the ChangeLog, describing the fix. --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 027a97174e..c28f806a78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Bugfix + * Add ecc extensions only if an ecc based ciphersuite is used. + Affects interoperability with BouncyCastle and other peers. + Raised by milenamil in #1157. + = mbed TLS 2.11.0 branch released 2018-06-18 Features From a562c2630061c2492082710196928c74984b67c6 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 11 Jul 2017 14:39:30 +0100 Subject: [PATCH 0556/1100] Add ChangeLog entry for mbedtls_ssl_write() docs --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 027a97174e..ca4c0b1a8c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x released xxxx-xx-xx + +Bugfix + * Clarify documentation for mbedtls_ssl_write() to include 0 as a valid + return value. Found by @davidwu2000. #839 + = mbed TLS 2.11.0 branch released 2018-06-18 Features From 7ee25d770d874c59384d31a9d5cf76e423c83e73 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 11 Jul 2017 16:15:54 +0100 Subject: [PATCH 0557/1100] Allow 0 as a valid ret value for mbedtls_ssl_write This patch modifies the documentation for mbedtls_ssl_write() to allow 0 as a valid return value as this is the correct number of bytes that should be returned when an empty TLS Application record is sent. --- include/mbedtls/ssl.h | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 45135500f2..39b7f290aa 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2907,17 +2907,19 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * or MBEDTLS_ERR_SSL_WANT_WRITE or MBEDTLS_ERR_SSL_WANT_READ, * or another negative error code. * - * \note If this function returns something other than a positive value - * or MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop using - * the SSL context for reading or writing, and either free it or - * call \c mbedtls_ssl_session_reset() on it before re-using it - * for a new connection; the current connection must be closed. + * \note If this function returns something other than 0, a positive + * value or MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop + * using the SSL context for reading or writing, and either + * free it or call \c mbedtls_ssl_session_reset() on it before + * re-using it for a new connection; the current connection + * must be closed. * * \note When this function returns MBEDTLS_ERR_SSL_WANT_WRITE/READ, * it must be called later with the *same* arguments, - * until it returns a positive value. When the function returns - * MBEDTLS_ERR_SSL_WANT_WRITE there may be some partial - * data in the output buffer, however this is not yet sent. + * until it returns a value greater that or equal to 0. When + * the function returns MBEDTLS_ERR_SSL_WANT_WRITE there may be + * some partial data in the output buffer, however this is not + * yet sent. * * \note If the requested length is greater than the maximum * fragment length (either the built-in limit or the one set @@ -2926,6 +2928,9 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * - with DTLS, MBEDTLS_ERR_SSL_BAD_INPUT_DATA is returned. * \c mbedtls_ssl_get_max_frag_len() may be used to query the * active maximum fragment length. + * + * \note Attempting to write 0 bytes will result in an empty TLS + * application record being sent. */ int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ); From 5b92352374e50856f6faa229e9986a300fe96796 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 28 Sep 2017 14:41:17 +0100 Subject: [PATCH 0558/1100] Document ssl_write_real() behaviour in detail --- library/ssl_tls.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e5119fcdac..c24a12f979 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -7231,8 +7231,16 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) } /* - * Send application data to be encrypted by the SSL layer, - * taking care of max fragment length and buffer size + * Send application data to be encrypted by the SSL layer, taking care of max + * fragment length and buffer size. + * + * According to RFC 5246 Section 6.2.1: + * + * Zero-length fragments of Application data MAY be sent as they are + * potentially useful as a traffic analysis countermeasure. + * + * Therefore, it is possible that the input message length is 0 and the + * corresponding return code is 0 on success. */ static int ssl_write_real( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) @@ -7260,6 +7268,12 @@ static int ssl_write_real( mbedtls_ssl_context *ssl, if( ssl->out_left != 0 ) { + /* + * The user has previously tried to send the data and + * MBEDTLS_ERR_SSL_WANT_WRITE or the message was only partially + * written. In this case, we expect the high-level write function + * (e.g. mbedtls_ssl_write()) to be called with the same parameters + */ if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); @@ -7268,6 +7282,11 @@ static int ssl_write_real( mbedtls_ssl_context *ssl, } else { + /* + * The user is trying to send a message the first time, so we need to + * copy the data into the internal buffers and setup the data structure + * to keep track of partial writes + */ ssl->out_msglen = len; ssl->out_msgtype = MBEDTLS_SSL_MSG_APPLICATION_DATA; memcpy( ssl->out_msg, buf, len ); From bf7fe4f3f00ed905cbeb207f171735621d1e0a40 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 21 Jun 2018 20:21:38 +0100 Subject: [PATCH 0559/1100] Replace check with APPLE with CMAKE_SYSTEM_NAME --- library/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index cd1857c3da..063a269c4c 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -96,12 +96,12 @@ if(WIN32) set(libs ${libs} ws2_32) endif(WIN32) -if(APPLE) +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") SET(CMAKE_C_ARCHIVE_CREATE " Scr ") SET(CMAKE_CXX_ARCHIVE_CREATE " Scr ") SET(CMAKE_C_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") SET(CMAKE_CXX_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") -endif(APPLE) +endif() if(USE_PKCS11_HELPER_LIBRARY) set(libs ${libs} pkcs11-helper) From 5357164c991e735ef557c04c422709500ee76bc9 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 24 Jun 2018 12:58:31 +0100 Subject: [PATCH 0560/1100] Add ebx to the i386 clobber list for MPI assembly This fix adds the ebx register to the clobber list for the i386 inline assembly for the multiply helper function. ebx was used but not listed, so when the compiler chose to also use it, ebx was getting corrupted. I'm surprised this wasn't spotted sooner. Fixes Github issues #1550. --- include/mbedtls/bn_mul.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index f4b2b561d1..e049260430 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -142,7 +142,7 @@ "movl %%esi, %3 \n\t" \ : "=m" (t), "=m" (c), "=m" (d), "=m" (s) \ : "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \ - : "eax", "ecx", "edx", "esi", "edi" \ + : "eax", "ebx", "ecx", "edx", "esi", "edi" \ ); #else @@ -154,7 +154,7 @@ "movl %%esi, %3 \n\t" \ : "=m" (t), "=m" (c), "=m" (d), "=m" (s) \ : "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \ - : "eax", "ecx", "edx", "esi", "edi" \ + : "eax", "ebx", "ecx", "edx", "esi", "edi" \ ); #endif /* SSE2 */ #endif /* i386 */ From 6a9257bc5719dcdcc44dd2c0f52208012b1bffe9 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 24 Aug 2017 14:20:17 +0300 Subject: [PATCH 0561/1100] Add check for return code of bignumber code Add check for return code of `mbedtls_mpi_write_file` as commented by @sbutcher-arm --- programs/pkey/key_app.c | 50 ++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index f1b548d05f..b93ea8f757 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -105,7 +105,7 @@ int main( int argc, char *argv[] ) { usage: mbedtls_printf( USAGE ); - goto exit; + goto cleanup; } opt.mode = DFL_MODE; @@ -155,13 +155,13 @@ int main( int argc, char *argv[] ) if( ( f = fopen( opt.password_file, "rb" ) ) == NULL ) { mbedtls_printf( " failed\n ! fopen returned NULL\n" ); - goto exit; + goto cleanup; } if( fgets( buf, sizeof(buf), f ) == NULL ) { fclose( f ); mbedtls_printf( "Error: fgets() failed to retrieve password\n" ); - goto exit; + goto cleanup; } fclose( f ); @@ -182,7 +182,7 @@ int main( int argc, char *argv[] ) if( ret != 0 ) { mbedtls_printf( " failed\n ! mbedtls_pk_parse_keyfile returned -0x%04x\n", -ret ); - goto exit; + goto cleanup; } mbedtls_printf( " ok\n" ); @@ -203,14 +203,14 @@ int main( int argc, char *argv[] ) goto exit; } - mbedtls_mpi_write_file( "N: ", &N, 16, NULL ); - mbedtls_mpi_write_file( "E: ", &E, 16, NULL ); - mbedtls_mpi_write_file( "D: ", &D, 16, NULL ); - mbedtls_mpi_write_file( "P: ", &P, 16, NULL ); - mbedtls_mpi_write_file( "Q: ", &Q, 16, NULL ); - mbedtls_mpi_write_file( "DP: ", &DP, 16, NULL ); - mbedtls_mpi_write_file( "DQ: ", &DQ, 16, NULL ); - mbedtls_mpi_write_file( "QP: ", &QP, 16, NULL ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &rsa->E, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "D: ", &rsa->D, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "P: ", &rsa->P, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q: ", &rsa->Q, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DP: ", &rsa->DP, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DQ: ", &rsa->DQ, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "QP: ", &rsa->QP, 16, NULL ) ); } else #endif @@ -218,16 +218,16 @@ int main( int argc, char *argv[] ) if( mbedtls_pk_get_type( &pk ) == MBEDTLS_PK_ECKEY ) { mbedtls_ecp_keypair *ecp = mbedtls_pk_ec( pk ); - mbedtls_mpi_write_file( "Q(X): ", &ecp->Q.X, 16, NULL ); - mbedtls_mpi_write_file( "Q(Y): ", &ecp->Q.Y, 16, NULL ); - mbedtls_mpi_write_file( "Q(Z): ", &ecp->Q.Z, 16, NULL ); - mbedtls_mpi_write_file( "D : ", &ecp->d , 16, NULL ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(X): ", &ecp->Q.X, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(Y): ", &ecp->Q.Y, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(Z): ", &ecp->Q.Z, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "D : ", &ecp->d , 16, NULL ) ); } else #endif { mbedtls_printf("Do not know how to print key information for this type\n" ); - goto exit; + goto cleanup; } } else if( opt.mode == MODE_PUBLIC ) @@ -243,7 +243,7 @@ int main( int argc, char *argv[] ) if( ret != 0 ) { mbedtls_printf( " failed\n ! mbedtls_pk_parse_public_keyfile returned -0x%04x\n", -ret ); - goto exit; + goto cleanup; } mbedtls_printf( " ok\n" ); @@ -260,8 +260,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( " failed\n ! could not export RSA parameters\n\n" ); goto exit; } - mbedtls_mpi_write_file( "N: ", &N, 16, NULL ); - mbedtls_mpi_write_file( "E: ", &E, 16, NULL ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &rsa->E, 16, NULL ) ); } else #endif @@ -269,21 +269,21 @@ int main( int argc, char *argv[] ) if( mbedtls_pk_get_type( &pk ) == MBEDTLS_PK_ECKEY ) { mbedtls_ecp_keypair *ecp = mbedtls_pk_ec( pk ); - mbedtls_mpi_write_file( "Q(X): ", &ecp->Q.X, 16, NULL ); - mbedtls_mpi_write_file( "Q(Y): ", &ecp->Q.Y, 16, NULL ); - mbedtls_mpi_write_file( "Q(Z): ", &ecp->Q.Z, 16, NULL ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(X): ", &ecp->Q.X, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(Y): ", &ecp->Q.Y, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q(Z): ", &ecp->Q.Z, 16, NULL ) ); } else #endif { mbedtls_printf("Do not know how to print key information for this type\n" ); - goto exit; + goto cleanup; } } else goto usage; -exit: +cleanup: #if defined(MBEDTLS_ERROR_C) if( ret != 0 ) From 7a81426a1aecbf156e8b94f496472b59b3eda6e2 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 24 Jun 2018 16:34:15 +0300 Subject: [PATCH 0562/1100] Fix style issue Add space before and after paranthesis. --- programs/pkey/key_app.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index b93ea8f757..4dbbdfbda4 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -288,7 +288,7 @@ cleanup: #if defined(MBEDTLS_ERROR_C) if( ret != 0 ) { - mbedtls_strerror( ret, buf, sizeof(buf) ); + mbedtls_strerror( ret, buf, sizeof( buf ) ); mbedtls_printf( " ! Last error was: %s\n", buf ); } #endif From 6fd941fe4b082433ba100215669003c04557ed23 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 14 May 2017 16:17:33 +0300 Subject: [PATCH 0563/1100] Remove unneeded namesapcing in header files Remove the `mbedtls` namesapcing in the `#include` in header files Resolves issue #857 --- ChangeLog | 6 ++++++ configs/config-ccm-psk-tls1_2.h | 2 +- configs/config-mini-tls1_1.h | 2 +- configs/config-suite-b.h | 2 +- configs/config-thread.h | 2 +- include/mbedtls/cmac.h | 2 +- include/mbedtls/config.h | 2 +- include/mbedtls/ctr_drbg.h | 2 +- include/mbedtls/hmac_drbg.h | 2 +- include/mbedtls/net.h | 4 ++-- include/mbedtls/platform.h | 2 +- include/mbedtls/ssl.h | 2 +- 12 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 027a97174e..38c0d7256a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Bugfix + * Fix namespacing in header files. REmove the `mbedtls` namespacing in + the `#include` in the header files. Resolves #857 + = mbed TLS 2.11.0 branch released 2018-06-18 Features diff --git a/configs/config-ccm-psk-tls1_2.h b/configs/config-ccm-psk-tls1_2.h index a783e6b73b..96515a276e 100644 --- a/configs/config-ccm-psk-tls1_2.h +++ b/configs/config-ccm-psk-tls1_2.h @@ -83,6 +83,6 @@ */ #define MBEDTLS_SSL_MAX_CONTENT_LEN 512 -#include "mbedtls/check_config.h" +#include "check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-mini-tls1_1.h b/configs/config-mini-tls1_1.h index 013bc0300d..a14fc10b4c 100644 --- a/configs/config-mini-tls1_1.h +++ b/configs/config-mini-tls1_1.h @@ -73,6 +73,6 @@ /* For testing with compat.sh */ #define MBEDTLS_FS_IO -#include "mbedtls/check_config.h" +#include "check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-suite-b.h b/configs/config-suite-b.h index 18e2c40369..23b53d612b 100644 --- a/configs/config-suite-b.h +++ b/configs/config-suite-b.h @@ -112,6 +112,6 @@ */ #define MBEDTLS_SSL_MAX_CONTENT_LEN 1024 -#include "mbedtls/check_config.h" +#include "check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-thread.h b/configs/config-thread.h index 25db16bf0f..7c43113332 100644 --- a/configs/config-thread.h +++ b/configs/config-thread.h @@ -89,6 +89,6 @@ /* Save ROM and a few bytes of RAM by specifying our own ciphersuite list */ #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 -#include "mbedtls/check_config.h" +#include "check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/include/mbedtls/cmac.h b/include/mbedtls/cmac.h index 913c05f8a7..a4fd552565 100644 --- a/include/mbedtls/cmac.h +++ b/include/mbedtls/cmac.h @@ -28,7 +28,7 @@ #ifndef MBEDTLS_CMAC_H #define MBEDTLS_CMAC_H -#include "mbedtls/cipher.h" +#include "cipher.h" #ifdef __cplusplus extern "C" { diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 34dbec0bc3..bdaaab2a4d 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2973,7 +2973,7 @@ /* \} name SECTION: Customisation configuration options */ /* Target and application specific configurations */ -//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "mbedtls/target_config.h" +//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "target_config.h" #if defined(TARGET_LIKE_MBED) && defined(YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE) #include YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index dcbc047924..3835d7299b 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -36,7 +36,7 @@ #include "aes.h" #if defined(MBEDTLS_THREADING_C) -#include "mbedtls/threading.h" +#include "threading.h" #endif #define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */ diff --git a/include/mbedtls/hmac_drbg.h b/include/mbedtls/hmac_drbg.h index e0821cf788..2608de8595 100644 --- a/include/mbedtls/hmac_drbg.h +++ b/include/mbedtls/hmac_drbg.h @@ -27,7 +27,7 @@ #include "md.h" #if defined(MBEDTLS_THREADING_C) -#include "mbedtls/threading.h" +#include "threading.h" #endif /* diff --git a/include/mbedtls/net.h b/include/mbedtls/net.h index 28ae8217c0..6c13b53fb9 100644 --- a/include/mbedtls/net.h +++ b/include/mbedtls/net.h @@ -1,7 +1,7 @@ /** * \file net.h * - * \brief Deprecated header file that includes mbedtls/net_sockets.h + * \brief Deprecated header file that includes net_sockets.h * * \deprecated Superseded by mbedtls/net_sockets.h */ @@ -25,7 +25,7 @@ */ #if !defined(MBEDTLS_DEPRECATED_REMOVED) -#include "mbedtls/net_sockets.h" +#include "net_sockets.h" #if defined(MBEDTLS_DEPRECATED_WARNING) #warning "Deprecated header file: Superseded by mbedtls/net_sockets.h" #endif /* MBEDTLS_DEPRECATED_WARNING */ diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index 9d9c5293eb..624cc642ac 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -40,7 +40,7 @@ #endif #if defined(MBEDTLS_HAVE_TIME) -#include "mbedtls/platform_time.h" +#include "platform_time.h" #endif #ifdef __cplusplus diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 45135500f2..a96509ec79 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -62,7 +62,7 @@ #endif #if defined(MBEDTLS_HAVE_TIME) -#include "mbedtls/platform_time.h" +#include "platform_time.h" #endif /* From 6332e368ccff672d332ca9ba40e729e5c50027b7 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 1 Oct 2017 17:11:54 +0300 Subject: [PATCH 0564/1100] Fix typo in ChangeLog Fix typo in ChangeLog discovered in PR review --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 38c0d7256a..58f2ae6570 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,7 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Bugfix - * Fix namespacing in header files. REmove the `mbedtls` namespacing in + * Fix namespacing in header files. Remove the `mbedtls` namespacing in the `#include` in the header files. Resolves #857 = mbed TLS 2.11.0 branch released 2018-06-18 From 6c34442c87596fa50fce1ce7872dd2574cb7c6f5 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 24 Jun 2018 16:20:56 +0100 Subject: [PATCH 0565/1100] Add fix for #1550 and credit to the ChangeLog --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 027a97174e..ede5b93ced 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.xx.x branch released xxxx-xx-xx + +Bugfix + * Fix the inline assembly for the MPI multiply helper function for i386 and + i386 with SSE2. Found by László Langó. Fixes #1550 + = mbed TLS 2.11.0 branch released 2018-06-18 Features From 51d7cfe026fa3f33d86a80d27ea9013830f33992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 25 Jun 2018 11:19:51 +0200 Subject: [PATCH 0566/1100] Fix coverity warnings in benchmark.c Functions time with TIME_AND_TSC() didn't have their return values checked. I'm not sure whether Coverity complained about existing uses, but it did about new ones, since we consistently check their return values everywhere but here, which it rightfully finds suspicious. So, let's check return values. This probably adds a few cycles to existing loop overhead, but on my machine (x86_64) the added overhead is less than the random-looking variation between various runs, so it's acceptable. Some calls had their own particular error checking; remove that in favour of the new general solution. --- programs/test/benchmark.c | 41 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index d577adb998..5277ceb792 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -119,25 +119,34 @@ int main( void ) #define TIME_AND_TSC( TITLE, CODE ) \ do { \ unsigned long ii, jj, tsc; \ + int ret = 0; \ \ mbedtls_printf( HEADER_FORMAT, TITLE ); \ fflush( stdout ); \ \ mbedtls_set_alarm( 1 ); \ - for( ii = 1; ! mbedtls_timing_alarmed; ii++ ) \ + for( ii = 1; ret == 0 && ! mbedtls_timing_alarmed; ii++ ) \ { \ - CODE; \ + ret = CODE; \ } \ \ tsc = mbedtls_timing_hardclock(); \ - for( jj = 0; jj < 1024; jj++ ) \ + for( jj = 0; ret == 0 && jj < 1024; jj++ ) \ { \ - CODE; \ + ret = CODE; \ } \ \ - mbedtls_printf( "%9lu KiB/s, %9lu cycles/byte\n", \ - ii * BUFSIZE / 1024, \ - ( mbedtls_timing_hardclock() - tsc ) / ( jj * BUFSIZE ) ); \ + if( ret != 0 ) \ + { \ + PRINT_ERROR; \ + } \ + else \ + { \ + mbedtls_printf( "%9lu KiB/s, %9lu cycles/byte\n", \ + ii * BUFSIZE / 1024, \ + ( mbedtls_timing_hardclock() - tsc ) \ + / ( jj * BUFSIZE ) ); \ + } \ } while( 0 ) #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_MEMORY_DEBUG) @@ -664,15 +673,13 @@ int main( int argc, char *argv[] ) if( mbedtls_ctr_drbg_seed( &ctr_drbg, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); TIME_AND_TSC( "CTR_DRBG (NOPR)", - if( mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) ); if( mbedtls_ctr_drbg_seed( &ctr_drbg, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); mbedtls_ctr_drbg_set_prediction_resistance( &ctr_drbg, MBEDTLS_CTR_DRBG_PR_ON ); TIME_AND_TSC( "CTR_DRBG (PR)", - if( mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) ); mbedtls_ctr_drbg_free( &ctr_drbg ); } #endif @@ -692,8 +699,7 @@ int main( int argc, char *argv[] ) if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); TIME_AND_TSC( "HMAC_DRBG SHA-1 (NOPR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); mbedtls_hmac_drbg_free( &hmac_drbg ); if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) @@ -701,8 +707,7 @@ int main( int argc, char *argv[] ) mbedtls_hmac_drbg_set_prediction_resistance( &hmac_drbg, MBEDTLS_HMAC_DRBG_PR_ON ); TIME_AND_TSC( "HMAC_DRBG SHA-1 (PR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); mbedtls_hmac_drbg_free( &hmac_drbg ); #endif @@ -713,8 +718,7 @@ int main( int argc, char *argv[] ) if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); TIME_AND_TSC( "HMAC_DRBG SHA-256 (NOPR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); mbedtls_hmac_drbg_free( &hmac_drbg ); if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) @@ -722,8 +726,7 @@ int main( int argc, char *argv[] ) mbedtls_hmac_drbg_set_prediction_resistance( &hmac_drbg, MBEDTLS_HMAC_DRBG_PR_ON ); TIME_AND_TSC( "HMAC_DRBG SHA-256 (PR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); + mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); mbedtls_hmac_drbg_free( &hmac_drbg ); #endif } From 8ee2422ef8d5287f0e236e954992178624478c71 Mon Sep 17 00:00:00 2001 From: niisato Date: Mon, 25 Jun 2018 19:05:48 +0900 Subject: [PATCH 0567/1100] about a issue Replace "new" variable #1782 --- library/ssl_tls.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e5119fcdac..fd33fa41cd 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5995,27 +5995,27 @@ static int ssl_append_key_cert( mbedtls_ssl_key_cert **head, mbedtls_x509_crt *cert, mbedtls_pk_context *key ) { - mbedtls_ssl_key_cert *new; + mbedtls_ssl_key_cert *new_cert; - new = mbedtls_calloc( 1, sizeof( mbedtls_ssl_key_cert ) ); - if( new == NULL ) + new_cert = mbedtls_calloc( 1, sizeof( mbedtls_ssl_key_cert ) ); + if( new_cert == NULL ) return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - new->cert = cert; - new->key = key; - new->next = NULL; + new_cert->cert = cert; + new_cert->key = key; + new_cert->next = NULL; /* Update head is the list was null, else add to the end */ if( *head == NULL ) { - *head = new; + *head = new_cert; } else { mbedtls_ssl_key_cert *cur = *head; while( cur->next != NULL ) cur = cur->next; - cur->next = new; + cur->next = new_cert; } return( 0 ); From 512b4ee9c7421c4d70352d2a37a6ef1038a515b0 Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Tue, 5 Dec 2017 12:07:33 +0000 Subject: [PATCH 0568/1100] Use gmtime_r to fix thread-safety issue, and use mbedtls_time on Windows --- ChangeLog | 7 +++++++ include/mbedtls/threading.h | 3 --- library/threading.c | 9 -------- library/x509.c | 42 +++++++------------------------------ 4 files changed, 14 insertions(+), 47 deletions(-) diff --git a/ChangeLog b/ChangeLog index 027a97174e..517381bc57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Changes + * Allow overriding the time on Windows via the platform-time abstraction. + Fixed by Nick Wilson. + * Use gmtime_r/gmtime_s for thread-safety. Fixed by Nick Wilson. + = mbed TLS 2.11.0 branch released 2018-06-18 Features diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index aeea5d0e1a..c25daa5cdf 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -99,9 +99,6 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); #if defined(MBEDTLS_FS_IO) extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) -extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; -#endif #endif /* MBEDTLS_THREADING_C */ #ifdef __cplusplus diff --git a/library/threading.c b/library/threading.c index f1c37245c7..7a32e672c7 100644 --- a/library/threading.c +++ b/library/threading.c @@ -114,9 +114,6 @@ void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * #if defined(MBEDTLS_FS_IO) mbedtls_mutex_init( &mbedtls_threading_readdir_mutex ); #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) - mbedtls_mutex_init( &mbedtls_threading_gmtime_mutex ); -#endif } /* @@ -127,9 +124,6 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_mutex_free( &mbedtls_threading_readdir_mutex ); #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) - mbedtls_mutex_free( &mbedtls_threading_gmtime_mutex ); -#endif } #endif /* MBEDTLS_THREADING_ALT */ @@ -142,8 +136,5 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex MUTEX_INIT; #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) -mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex MUTEX_INIT; -#endif #endif /* MBEDTLS_THREADING_C */ diff --git a/library/x509.c b/library/x509.c index 371d6da1dc..906d1714b9 100644 --- a/library/x509.c +++ b/library/x509.c @@ -59,14 +59,10 @@ #define mbedtls_snprintf snprintf #endif - #if defined(MBEDTLS_HAVE_TIME) #include "mbedtls/platform_time.h" #endif - -#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) -#include -#else +#if defined(MBEDTLS_HAVE_TIME_DATE) #include #endif @@ -903,36 +899,18 @@ int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ) * Set the time structure to the current time. * Return 0 on success, non-zero on failure. */ -#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) static int x509_get_current_time( mbedtls_x509_time *now ) { - SYSTEMTIME st; - - GetSystemTime( &st ); - - now->year = st.wYear; - now->mon = st.wMonth; - now->day = st.wDay; - now->hour = st.wHour; - now->min = st.wMinute; - now->sec = st.wSecond; - - return( 0 ); -} -#else -static int x509_get_current_time( mbedtls_x509_time *now ) -{ - struct tm *lt; + struct tm *lt, tm_buf; mbedtls_time_t tt; int ret = 0; -#if defined(MBEDTLS_THREADING_C) - if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 ) - return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif - tt = mbedtls_time( NULL ); - lt = gmtime( &tt ); +#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) + lt = gmtime_s( &tm_buf, &tt ) == 0 ? &tm_buf : NULL; +#else + lt = gmtime_r( &tt, &tm_buf ); +#endif if( lt == NULL ) ret = -1; @@ -946,14 +924,8 @@ static int x509_get_current_time( mbedtls_x509_time *now ) now->sec = lt->tm_sec; } -#if defined(MBEDTLS_THREADING_C) - if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 ) - return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif - return( ret ); } -#endif /* _WIN32 && !EFIX64 && !EFI32 */ /* * Return 0 if before <= after, 1 otherwise From 2682edf205177a9639d2126238d6f83e19fd5d71 Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Tue, 5 Dec 2017 12:08:15 +0000 Subject: [PATCH 0569/1100] Fix build using -std=c99 In each place where POSIX/GNU functions are used, the file must declare that it wants POSIX functionality before including any system headers. --- ChangeLog | 1 + library/entropy_poll.c | 5 +++++ library/net_sockets.c | 5 +++++ library/x509.c | 4 ++++ programs/aes/aescrypt2.c | 5 +++++ programs/aes/crypt_and_hash.c | 5 +++++ programs/ssl/ssl_mail_client.c | 5 +++++ tests/CMakeLists.txt | 5 +++++ tests/suites/helpers.function | 1 + 9 files changed, 36 insertions(+) diff --git a/ChangeLog b/ChangeLog index 517381bc57..4d5f5829f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ Changes * Allow overriding the time on Windows via the platform-time abstraction. Fixed by Nick Wilson. * Use gmtime_r/gmtime_s for thread-safety. Fixed by Nick Wilson. + * Fix build using -std=c99. Fixed by Nick Wilson. = mbed TLS 2.11.0 branch released 2018-06-18 diff --git a/library/entropy_poll.c b/library/entropy_poll.c index fd96258ce7..31f608b838 100644 --- a/library/entropy_poll.c +++ b/library/entropy_poll.c @@ -19,6 +19,11 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +#if defined(__linux__) +/* Ensure that syscall() is available even when compiling with -std=c99 */ +#define _GNU_SOURCE +#endif + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/library/net_sockets.c b/library/net_sockets.c index 202da01714..4b267cf359 100644 --- a/library/net_sockets.c +++ b/library/net_sockets.c @@ -19,6 +19,11 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* Enable definition of getaddrinfo() even when compiling with -std=c99. Must + * be set before config.h, which pulls in glibc's features.h indirectly. + * Harmless on other platforms. */ +#define _POSIX_C_SOURCE 200112L + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/library/x509.c b/library/x509.c index 906d1714b9..b47599b0d2 100644 --- a/library/x509.c +++ b/library/x509.c @@ -29,6 +29,10 @@ * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ +/* Ensure gmtime_r is available even with -std=c99; must be included before + * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ +#define _XOPEN_SOURCE 500 + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/programs/aes/aescrypt2.c b/programs/aes/aescrypt2.c index 4acf38dd74..36dabe9403 100644 --- a/programs/aes/aescrypt2.c +++ b/programs/aes/aescrypt2.c @@ -19,6 +19,11 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* Enable definition of fileno() even when compiling with -std=c99. Must be + * set before config.h, which pulls in glibc's features.h indirectly. + * Harmless on other platforms. */ +#define _POSIX_C_SOURCE 1 + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/programs/aes/crypt_and_hash.c b/programs/aes/crypt_and_hash.c index 0e272ebe48..49c43b3216 100644 --- a/programs/aes/crypt_and_hash.c +++ b/programs/aes/crypt_and_hash.c @@ -20,6 +20,11 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* Enable definition of fileno() even when compiling with -std=c99. Must be + * set before config.h, which pulls in glibc's features.h indirectly. + * Harmless on other platforms. */ +#define _POSIX_C_SOURCE 1 + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index 04b847a69a..74d5d72700 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -19,6 +19,11 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* Enable definition of hostname() even when compiling with -std=c99. Must be + * set before config.h, which pulls in glibc's features.h indirectly. + * Harmless on other platforms. */ +#define _POSIX_C_SOURCE 200112L + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f630edb838..084da59f49 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,6 +15,11 @@ if(NOT PERL_FOUND) message(FATAL_ERROR "Cannot build test suites without Perl") endif() +# Enable definition of various functions used throughout the testsuite +# (hostname, strdup, fileno...) even when compiling with -std=c99. Harmless +# on non-POSIX platforms. +add_definitions("-D_POSIX_C_SOURCE=200809L") + function(add_test_suite suite_name) if(ARGV1) set(data_name ${ARGV1}) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index f82694ada1..8f04885a52 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -36,6 +36,7 @@ typedef UINT32 uint32_t; #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) #include +#include #endif /*----------------------------------------------------------------------------*/ From 15550854a372887752a164eed2d451c0c5b31b03 Mon Sep 17 00:00:00 2001 From: niisato Date: Mon, 25 Jun 2018 20:07:10 +0900 Subject: [PATCH 0570/1100] add ChangeLog to this commit. --- ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index 027a97174e..85120e23ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ mbed TLS ChangeLog (Sorted per branch, date) + += mbed TLS x.x.x branch released xxxx-xx-xx + +Bugfix + * Fix Renaming "new" variable #1783. + compile error(new variable) with arm-none-eabi-gcc(c++) on mbed TLS 2.7.0. + + = mbed TLS 2.11.0 branch released 2018-06-18 Features From 99a3e8072138e097df42acabfd9ea49541ac4659 Mon Sep 17 00:00:00 2001 From: niisato Date: Mon, 25 Jun 2018 20:21:19 +0900 Subject: [PATCH 0571/1100] update change log. --- ChangeLog | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 85120e23ff..f223832177 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,9 +4,7 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Bugfix - * Fix Renaming "new" variable #1783. - compile error(new variable) with arm-none-eabi-gcc(c++) on mbed TLS 2.7.0. - + * Fix compilation error on c++, because of a variable named new. Found and fixed by Hirotaka Niisato in #1783 = mbed TLS 2.11.0 branch released 2018-06-18 From b7d39db047bb758897ca4f96b9f2f32b50224ce5 Mon Sep 17 00:00:00 2001 From: niisato Date: Mon, 25 Jun 2018 20:44:57 +0900 Subject: [PATCH 0572/1100] update ChangeLog --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f223832177..70c000a31e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,8 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Bugfix - * Fix compilation error on c++, because of a variable named new. Found and fixed by Hirotaka Niisato in #1783 + * Fix compilation error on C++, because of a variable named new. + Found and fixed by Hirotaka Niisato in #1783 = mbed TLS 2.11.0 branch released 2018-06-18 From 164b9cd025bdfcc2becea310045fae11def65149 Mon Sep 17 00:00:00 2001 From: niisato Date: Mon, 25 Jun 2018 20:47:05 +0900 Subject: [PATCH 0573/1100] update ChangeLog --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 70c000a31e..25facc53fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,7 +5,7 @@ mbed TLS ChangeLog (Sorted per branch, date) Bugfix * Fix compilation error on C++, because of a variable named new. - Found and fixed by Hirotaka Niisato in #1783 + Found and fixed by Hirotaka Niisato in #1783. = mbed TLS 2.11.0 branch released 2018-06-18 From 7972334090f79dd32a133e80eb7003d0741049b6 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Fri, 22 Jun 2018 17:30:52 +0200 Subject: [PATCH 0574/1100] Enable ARIA self test in the unit testing --- tests/suites/test_suite_aria.data | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/suites/test_suite_aria.data b/tests/suites/test_suite_aria.data index 46c6eccc23..43373b8aab 100644 --- a/tests/suites/test_suite_aria.data +++ b/tests/suites/test_suite_aria.data @@ -93,3 +93,7 @@ aria_encrypt_cfb128:"00112233445566778899aabbccddeeff00112233445566778899aabbccd ARIA-256-CFB128 Decrypt - Official Test Vectors 1.0 aria_decrypt_cfb128:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"26834705b0f2c0e2588d4a7f09009635f28bb93d8c31f870ec1e0bdb082b66fa402dd9c202be300c4517d196b14d4ce11dce97f7aaba54341b0d872cc9b63753a3e8556a14be6f7b3e27e3cfc39caf80f2a355aa50dc83c09c7b11828694f8e4aa726c528976b53f2c877f4991a3a8d28adb63bd751846ffb2350265e179d4990753ae8485ff9b4133ddad5875b84a90cbcfa62a045d726df71b6bda0eeca0be":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 + +ARIA Selftest +depends_on:MBEDTLS_SELF_TEST +aria_selftest: From 49221234c8b2832157a4b3b1b1375ea04c18e0a8 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 26 Jun 2018 16:46:21 +0300 Subject: [PATCH 0575/1100] Update the Mbed TLS forum link Update the link to the new Mbed TLS forum --- .github/issue_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/issue_template.md b/.github/issue_template.md index 5e9d83d4fc..7c31353512 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -38,4 +38,4 @@ Version: ## Question -**Please first check for answers in the [Mbed TLS knowledge Base](https://tls.mbed.org/kb), and preferably file an issue in the [Mbed TLS support forum](https://tls.mbed.org/discussions)** +**Please first check for answers in the [Mbed TLS knowledge Base](https://tls.mbed.org/kb), and preferably file an issue in the [Mbed TLS support forum](https://forums.mbed.com/c/mbed-tls)** From a522147f58764a0e9d866445ad63aa4d2f274ef6 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 27 Jun 2018 08:49:00 +0300 Subject: [PATCH 0576/1100] Fix compilation errors after updating Fix compilation errorsthat happened after new code introduced by updating the branch. Replaced `exit` label with `cleanup`. --- programs/pkey/key_app.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index 4dbbdfbda4..f57dba145a 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -200,7 +200,7 @@ int main( int argc, char *argv[] ) ( ret = mbedtls_rsa_export_crt( rsa, &DP, &DQ, &QP ) ) != 0 ) { mbedtls_printf( " failed\n ! could not export RSA parameters\n\n" ); - goto exit; + goto cleanup; } MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); @@ -258,7 +258,7 @@ int main( int argc, char *argv[] ) NULL, &E ) ) != 0 ) { mbedtls_printf( " failed\n ! could not export RSA parameters\n\n" ); - goto exit; + goto cleanup; } MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &rsa->E, 16, NULL ) ); From 755890f5293902086e1ff53d88565c737069d921 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 20 Jun 2018 08:17:04 -0400 Subject: [PATCH 0577/1100] Remove trailing whitespace --- programs/ssl/ssl_server2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index b201c8bda7..cef9100542 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1727,11 +1727,11 @@ int main( int argc, char *argv[] ) buf = mbedtls_calloc( 1, opt.buffer_size + 1 ); if( buf == NULL ) { - mbedtls_printf("Could not allocate %u bytes\n", opt.buffer_size); + mbedtls_printf( "Could not allocate %u bytes\n", opt.buffer_size ); ret = 3; goto exit; } - + if( opt.force_ciphersuite[0] > 0 ) { const mbedtls_ssl_ciphersuite_t *ciphersuite_info; @@ -3116,7 +3116,7 @@ exit: mbedtls_memory_buffer_alloc_free(); #endif - mbedtls_free(buf); + mbedtls_free( buf ); mbedtls_printf( " done.\n" ); #if defined(_WIN32) From bf4709978ce67669a738ede94d498658ac2d7507 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 27 Jun 2018 11:51:46 +0300 Subject: [PATCH 0578/1100] Adjust to new RSA infrastructure Don't access the rsa cotext parameters directly, but use the local `mbedtls_mpi` variable that were exported. --- programs/pkey/key_app.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/programs/pkey/key_app.c b/programs/pkey/key_app.c index f57dba145a..3a74f27703 100644 --- a/programs/pkey/key_app.c +++ b/programs/pkey/key_app.c @@ -203,14 +203,14 @@ int main( int argc, char *argv[] ) goto cleanup; } - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &rsa->E, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "D: ", &rsa->D, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "P: ", &rsa->P, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q: ", &rsa->Q, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DP: ", &rsa->DP, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DQ: ", &rsa->DQ, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "QP: ", &rsa->QP, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &N, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &E, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "D: ", &D, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "P: ", &P, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "Q: ", &Q, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DP: ", &DP, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "DQ: ", &DQ, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "QP: ", &QP, 16, NULL ) ); } else #endif @@ -260,8 +260,8 @@ int main( int argc, char *argv[] ) mbedtls_printf( " failed\n ! could not export RSA parameters\n\n" ); goto cleanup; } - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &rsa->N, 16, NULL ) ); - MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &rsa->E, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "N: ", &N, 16, NULL ) ); + MBEDTLS_MPI_CHK( mbedtls_mpi_write_file( "E: ", &E, 16, NULL ) ); } else #endif From d56654f987dc5bb2a2b53f645d0498fa53ef37af Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 27 Jun 2018 14:36:37 +0300 Subject: [PATCH 0579/1100] Update the forum link in the README file Update the forum link in the readme file as well. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2c3c6f21e..ced36e1921 100644 --- a/README.md +++ b/README.md @@ -211,7 +211,7 @@ To accept the Contributor’s Licence Agreement (CLA), individual contributors c ### Making a Contribution -1. [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://tls.mbed.org/discussions) around a feature idea or a bug. +1. [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://forums.mbed.com/c/mbed-tls) around a feature idea or a bug. 2. Fork the [Mbed TLS repository on GitHub](https://github.com/ARMmbed/mbedtls) to start making your changes. As a general rule, you should use the "development" branch as a basis. 3. Write a test which shows that the bug was fixed or that the feature works as expected. 4. Send a pull request and bug us until it gets merged and published. Contributions may need some modifications, so work with us to get your change accepted. We will include your name in the ChangeLog :) From 597dbf8802757d4b3f636865906584a16cdd4b43 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 27 Jun 2018 16:16:39 +0100 Subject: [PATCH 0580/1100] Adds a filter to run-test-suites.pl to exclude data files The run-test-suites.pl script was executing all files of the form 'test_suite*' which were either executable or ended with a .exe extension. On some filesystems, such as through network shares or VMs, which are abstracting one set of file permissions to Unix permissions, may set the executable permissions on all files, whether they're executable or not. That was leading to the run-test-suites.pl script to attempt to execute the .c intermediate files because they followed the form 'test_suite_*.c'. This change now excludes them, just in case they accidentally have execute permissions. --- tests/scripts/run-test-suites.pl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/scripts/run-test-suites.pl b/tests/scripts/run-test-suites.pl index 7e2974bbcd..02f9a2f6f4 100755 --- a/tests/scripts/run-test-suites.pl +++ b/tests/scripts/run-test-suites.pl @@ -35,8 +35,9 @@ if ( defined($switch) && ( $switch eq "-v" || $switch eq "--verbose" ) ) { # All test suites = executable files, excluding source files, debug # and profiling information, etc. We can't just grep {! /\./} because -#some of our test cases' base names contain a dot. +# some of our test cases' base names contain a dot. my @suites = grep { -x $_ || /\.exe$/ } glob 'test_suite_*'; +@suites = grep { !/\.c$/ && !/\.data$/ } @suites; die "$0: no test suite found\n" unless @suites; # in case test suites are linked dynamically From 84e62f88a2c170e0e1f58d42d3d3bbc9f68d0741 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 28 Jun 2018 11:09:09 +0300 Subject: [PATCH 0581/1100] Update ChangeLog Update ChangeLog with a less ambigous description. --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c28f806a78..380b289c98 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,8 @@ mbed TLS ChangeLog (Sorted per branch, date) Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. - Affects interoperability with BouncyCastle and other peers. - Raised by milenamil in #1157. + This improves compliance to RFC 4492, and as a result, solves + interoperability issues with BouncyCastle. Raised by milenamil in #1157. = mbed TLS 2.11.0 branch released 2018-06-18 From 40741f8ce5841c507155bf7954b08ffdcb64100a Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 14 Mar 2018 17:24:01 -0400 Subject: [PATCH 0582/1100] Add a test with a cpp executable including all mbed TLS headers In case of any problems with the 'extern "C"' directives, building the executable will fail --- CMakeLists.txt | 2 +- programs/.gitignore | 1 + programs/Makefile | 7 ++ programs/test/CMakeLists.txt | 3 + programs/test/header_test.cpp | 123 ++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 programs/test/header_test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ade1d4cb8..2a10d7caf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 2.6) -project("mbed TLS" C) +project("mbed TLS" C CXX) option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF) option(ENABLE_ZLIB_SUPPORT "Build mbed TLS with zlib library." OFF) diff --git a/programs/.gitignore b/programs/.gitignore index ddfa1a4266..5bbe2e8259 100644 --- a/programs/.gitignore +++ b/programs/.gitignore @@ -45,6 +45,7 @@ ssl/mini_client test/benchmark test/ecp-bench test/selftest +test/header_test test/ssl_cert_test test/udp_proxy test/zeroize diff --git a/programs/Makefile b/programs/Makefile index 080e82d88c..c5dd9f9ee8 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -4,9 +4,11 @@ CFLAGS ?= -O2 WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement +WARNING_CXXFLAGS ?= -Wall -W LDFLAGS ?= LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 +LOCAL_CXXFLAGS = $(WARNING_CXXFLAGS) -I../include -D_FILE_OFFSET_BITS=64 LOCAL_LDFLAGS = -L../library \ -lmbedtls$(SHARED_SUFFIX) \ -lmbedx509$(SHARED_SUFFIX) \ @@ -68,6 +70,7 @@ APPS = aes/aescrypt2$(EXEXT) aes/crypt_and_hash$(EXEXT) \ test/ssl_cert_test$(EXEXT) test/benchmark$(EXEXT) \ test/selftest$(EXEXT) test/udp_proxy$(EXEXT) \ test/zeroize$(EXEXT) \ + test/header_test$(EXEXT) \ util/pem2der$(EXEXT) util/strerror$(EXEXT) \ x509/cert_app$(EXEXT) x509/crl_app$(EXEXT) \ x509/cert_req$(EXEXT) x509/cert_write$(EXEXT) \ @@ -242,6 +245,10 @@ test/benchmark$(EXEXT): test/benchmark.c $(DEP) echo " CC test/benchmark.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/benchmark.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test/header_test$(EXEXT): test/header_test.cpp $(DEP) + echo " CXX test/header_test.cpp" + $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) test/header_test.cpp $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test/selftest$(EXEXT): test/selftest.c $(DEP) echo " CC test/selftest.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/selftest.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index 0c5ce27f73..32c141551e 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -16,6 +16,9 @@ target_link_libraries(selftest ${libs}) add_executable(benchmark benchmark.c) target_link_libraries(benchmark ${libs}) +add_executable(header_test header_test.cpp) +target_link_libraries(header_test ${libs}) + add_executable(ssl_cert_test ssl_cert_test.c) target_link_libraries(ssl_cert_test ${libs}) diff --git a/programs/test/header_test.cpp b/programs/test/header_test.cpp new file mode 100644 index 0000000000..d1ddd4ba0e --- /dev/null +++ b/programs/test/header_test.cpp @@ -0,0 +1,123 @@ +/* + * A C++ program that includes all of the mbed TLS header files, in order to + * test if no errors are raised in the process. + * + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/aes.h" +#include "mbedtls/aesni.h" +#include "mbedtls/arc4.h" +#include "mbedtls/aria.h" +#include "mbedtls/asn1.h" +#include "mbedtls/asn1write.h" +#include "mbedtls/base64.h" +#include "mbedtls/bignum.h" +#include "mbedtls/blowfish.h" +#include "mbedtls/bn_mul.h" +#include "mbedtls/camellia.h" +#include "mbedtls/ccm.h" +#include "mbedtls/certs.h" +#include "mbedtls/chacha20.h" +#include "mbedtls/chachapoly.h" +#include "mbedtls/cipher.h" +#include "mbedtls/cipher_internal.h" +#include "mbedtls/cmac.h" +#include "mbedtls/compat-1.3.h" +#include "mbedtls/ctr_drbg.h" +#include "mbedtls/debug.h" +#include "mbedtls/des.h" +#include "mbedtls/dhm.h" +#include "mbedtls/ecdh.h" +#include "mbedtls/ecdsa.h" +#include "mbedtls/ecjpake.h" +#include "mbedtls/ecp.h" +#include "mbedtls/ecp_internal.h" +#include "mbedtls/entropy.h" +#include "mbedtls/entropy_poll.h" +#include "mbedtls/error.h" +#include "mbedtls/gcm.h" +#include "mbedtls/havege.h" +#include "mbedtls/hkdf.h" +#include "mbedtls/hmac_drbg.h" +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/md.h" +#include "mbedtls/md_internal.h" +#include "mbedtls/net.h" +#include "mbedtls/net_sockets.h" +#include "mbedtls/oid.h" +#include "mbedtls/padlock.h" +#include "mbedtls/pem.h" +#include "mbedtls/pkcs11.h" +#include "mbedtls/pkcs12.h" +#include "mbedtls/pkcs5.h" +#include "mbedtls/pk.h" +#include "mbedtls/pk_internal.h" +#include "mbedtls/platform_time.h" +#include "mbedtls/platform_util.h" +#include "mbedtls/poly1305.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/rsa.h" +#include "mbedtls/rsa_internal.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" +#include "mbedtls/ssl_cache.h" +#include "mbedtls/ssl_ciphersuites.h" +#include "mbedtls/ssl_cookie.h" +#include "mbedtls/ssl.h" +#include "mbedtls/ssl_internal.h" +#include "mbedtls/ssl_ticket.h" +#include "mbedtls/threading.h" +#include "mbedtls/timing.h" +#include "mbedtls/version.h" +#include "mbedtls/x509_crl.h" +#include "mbedtls/x509_crt.h" +#include "mbedtls/x509_csr.h" +#include "mbedtls/x509.h" +#include "mbedtls/xtea.h" + +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#include +#define mbedtls_printf printf +#define mbedtls_snprintf snprintf +#define mbedtls_exit exit +#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS +#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE +#endif + +#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) +#include "mbedtls/memory_buffer_alloc.h" +#endif + +int main( int argc, char *argv[] ) +{ + (void) argc; + (void) argv; +} From 0211c32c9af554a816401efa14064f058bd5aeb1 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 15 Mar 2018 05:16:24 -0400 Subject: [PATCH 0583/1100] Change the cpp test to be optional Remove unnecessary defines from the test. Test by defining TEST_CPP using makefiles or cmake. --- CMakeLists.txt | 6 +++++- programs/Makefile | 5 ++++- programs/test/CMakeLists.txt | 8 +++++--- programs/test/header_test.cpp | 8 -------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a10d7caf3..6133d07fad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,9 @@ cmake_minimum_required(VERSION 2.6) -project("mbed TLS" C CXX) +if(TEST_CPP) + project("mbed TLS" C CXX) +else() + project("mbed TLS" C) +endif() option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF) option(ENABLE_ZLIB_SUPPORT "Build mbed TLS with zlib library." OFF) diff --git a/programs/Makefile b/programs/Makefile index c5dd9f9ee8..844d680f2e 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -70,7 +70,6 @@ APPS = aes/aescrypt2$(EXEXT) aes/crypt_and_hash$(EXEXT) \ test/ssl_cert_test$(EXEXT) test/benchmark$(EXEXT) \ test/selftest$(EXEXT) test/udp_proxy$(EXEXT) \ test/zeroize$(EXEXT) \ - test/header_test$(EXEXT) \ util/pem2der$(EXEXT) util/strerror$(EXEXT) \ x509/cert_app$(EXEXT) x509/crl_app$(EXEXT) \ x509/cert_req$(EXEXT) x509/cert_write$(EXEXT) \ @@ -80,6 +79,10 @@ ifdef PTHREAD APPS += ssl/ssl_pthread_server$(EXEXT) endif +ifdef TEST_CPP +APPS += test/header_test$(EXEXT) +endif + .SILENT: .PHONY: all clean list diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index 32c141551e..6791ffdb07 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -16,9 +16,11 @@ target_link_libraries(selftest ${libs}) add_executable(benchmark benchmark.c) target_link_libraries(benchmark ${libs}) -add_executable(header_test header_test.cpp) -target_link_libraries(header_test ${libs}) - +if(TEST_CPP) + add_executable(header_test header_test.cpp) + target_link_libraries(header_test ${libs}) +endif() + add_executable(ssl_cert_test ssl_cert_test.c) target_link_libraries(ssl_cert_test ${libs}) diff --git a/programs/test/header_test.cpp b/programs/test/header_test.cpp index d1ddd4ba0e..69d7c4ac8a 100644 --- a/programs/test/header_test.cpp +++ b/programs/test/header_test.cpp @@ -102,14 +102,6 @@ #if defined(MBEDTLS_PLATFORM_C) #include "mbedtls/platform.h" -#else -#include -#include -#define mbedtls_printf printf -#define mbedtls_snprintf snprintf -#define mbedtls_exit exit -#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS -#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) From 89c048c101930a60f496fde68f21e7fa0831cd84 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Fri, 16 Mar 2018 07:37:44 -0400 Subject: [PATCH 0584/1100] Tests: add a test for cpp linking Change the name of header_test to cpp_dumy_build Update the test description to better reflect its contents --- programs/.gitignore | 2 +- programs/Makefile | 8 ++++---- programs/test/CMakeLists.txt | 4 ++-- .../test/{header_test.cpp => cpp_dummy_build.cpp} | 12 +++++++----- 4 files changed, 14 insertions(+), 12 deletions(-) rename programs/test/{header_test.cpp => cpp_dummy_build.cpp} (91%) diff --git a/programs/.gitignore b/programs/.gitignore index 5bbe2e8259..02418966f8 100644 --- a/programs/.gitignore +++ b/programs/.gitignore @@ -45,7 +45,7 @@ ssl/mini_client test/benchmark test/ecp-bench test/selftest -test/header_test +test/cpp_dummy_build test/ssl_cert_test test/udp_proxy test/zeroize diff --git a/programs/Makefile b/programs/Makefile index 844d680f2e..b6d1fa25b5 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -80,7 +80,7 @@ APPS += ssl/ssl_pthread_server$(EXEXT) endif ifdef TEST_CPP -APPS += test/header_test$(EXEXT) +APPS += test/cpp_dummy_build$(EXEXT) endif .SILENT: @@ -248,9 +248,9 @@ test/benchmark$(EXEXT): test/benchmark.c $(DEP) echo " CC test/benchmark.c" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) test/benchmark.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test/header_test$(EXEXT): test/header_test.cpp $(DEP) - echo " CXX test/header_test.cpp" - $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) test/header_test.cpp $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test/cpp_dummy_build$(EXEXT): test/cpp_dummy_build.cpp $(DEP) + echo " CXX test/cpp_dummy_build.cpp" + $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) test/cpp_dummy_build.cpp $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ test/selftest$(EXEXT): test/selftest.c $(DEP) echo " CC test/selftest.c" diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index 6791ffdb07..994e92c54a 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -17,8 +17,8 @@ add_executable(benchmark benchmark.c) target_link_libraries(benchmark ${libs}) if(TEST_CPP) - add_executable(header_test header_test.cpp) - target_link_libraries(header_test ${libs}) + add_executable(cpp_dummy_build cpp_dummy_build.cpp) + target_link_libraries(cpp_dummy_build ${libs}) endif() add_executable(ssl_cert_test ssl_cert_test.c) diff --git a/programs/test/header_test.cpp b/programs/test/cpp_dummy_build.cpp similarity index 91% rename from programs/test/header_test.cpp rename to programs/test/cpp_dummy_build.cpp index 69d7c4ac8a..03373a917d 100644 --- a/programs/test/header_test.cpp +++ b/programs/test/cpp_dummy_build.cpp @@ -1,6 +1,6 @@ /* - * A C++ program that includes all of the mbed TLS header files, in order to - * test if no errors are raised in the process. + * This program is a dummy C++ program to ensure Mbed TLS library header files + * can be included and built with a C++ compiler. * * Copyright (C) 2018, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 @@ -108,8 +108,10 @@ #include "mbedtls/memory_buffer_alloc.h" #endif -int main( int argc, char *argv[] ) +int main() { - (void) argc; - (void) argv; + mbedtls_platform_context *ctx = NULL; + mbedtls_platform_setup(ctx); + mbedtls_printf("CPP Build test\n"); + mbedtls_platform_teardown(ctx); } From 037ec4b416af07ddd9fa66526da4eeba5bbfbeb0 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 26 Jun 2018 06:57:55 -0400 Subject: [PATCH 0585/1100] Replace tabs with spaces --- CMakeLists.txt | 4 ++-- programs/test/CMakeLists.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6133d07fad..4dbe76ecc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 2.6) if(TEST_CPP) - project("mbed TLS" C CXX) + project("mbed TLS" C CXX) else() - project("mbed TLS" C) + project("mbed TLS" C) endif() option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF) diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt index 994e92c54a..9ca0cb2228 100644 --- a/programs/test/CMakeLists.txt +++ b/programs/test/CMakeLists.txt @@ -17,8 +17,8 @@ add_executable(benchmark benchmark.c) target_link_libraries(benchmark ${libs}) if(TEST_CPP) - add_executable(cpp_dummy_build cpp_dummy_build.cpp) - target_link_libraries(cpp_dummy_build ${libs}) + add_executable(cpp_dummy_build cpp_dummy_build.cpp) + target_link_libraries(cpp_dummy_build ${libs}) endif() add_executable(ssl_cert_test ssl_cert_test.c) From 45a671959476f756608fd975dacc31e5613d0b51 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 26 Jun 2018 07:50:19 -0400 Subject: [PATCH 0586/1100] Add a CXX build to all.sh to execute the C++ dummy test by default --- tests/scripts/all.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index ded43f9c91..1f9d40baf7 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -35,6 +35,7 @@ # * GNU Make # * CMake # * GCC and Clang (recent enough for using ASan with gcc and MemSan with clang, or valgrind) +# * G++, unless invoked with --no-cxx # * arm-gcc and mingw-gcc # * ArmCC 5 and ArmCC 6, unless invoked with --no-armcc # * Yotta build dependencies, unless invoked with --no-yotta @@ -96,6 +97,7 @@ FORCE=0 KEEP_GOING=0 RUN_ARMCC=1 YOTTA=1 +TEST_CXX=1 # Default commands, can be overriden by the environment : ${OPENSSL:="openssl"} @@ -130,6 +132,7 @@ General options: --no-keep-going Stop at the first error (default). --no-memory No additional memory tests (default). --no-yotta Skip yotta module build. + --no-cxx Skip CXX Compiler build. --out-of-source-dir= Directory used for CMake out-of-source build tests. --random-seed Use a random seed value for randomized tests (default). -r|--release-test Run this script in release mode. This fixes the seed value to 1. @@ -580,6 +583,17 @@ msg "test/build: key-exchanges (gcc)" # ~ 1 min cleanup record_status tests/scripts/key-exchanges.pl +if [ $TEST_CXX -ne 0 ]; then + msg "build: Unix make, gcc and g++ test" # ~ 30s + cleanup + make TEST_CPP=1 + + msg "build: cmake, gcc and g++ test" # ~ 30s + cleanup + CC=gcc cmake -D TEST_CPP=YES . + make +fi + msg "build: Unix make, -Os (gcc)" # ~ 30s cleanup make CC=gcc CFLAGS='-Werror -Wall -Wextra -Os' From 05be06cc2dd62a1a1301ce87b72b256ef73fc2ca Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 28 Jun 2018 04:41:50 -0400 Subject: [PATCH 0587/1100] Make the C++ test mandatory by removing the --no-cxx flag from all.sh Remove the cmake test --- tests/scripts/all.sh | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 1f9d40baf7..bbfbfbc1c5 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -35,7 +35,7 @@ # * GNU Make # * CMake # * GCC and Clang (recent enough for using ASan with gcc and MemSan with clang, or valgrind) -# * G++, unless invoked with --no-cxx +# * G++ # * arm-gcc and mingw-gcc # * ArmCC 5 and ArmCC 6, unless invoked with --no-armcc # * Yotta build dependencies, unless invoked with --no-yotta @@ -97,7 +97,6 @@ FORCE=0 KEEP_GOING=0 RUN_ARMCC=1 YOTTA=1 -TEST_CXX=1 # Default commands, can be overriden by the environment : ${OPENSSL:="openssl"} @@ -132,7 +131,6 @@ General options: --no-keep-going Stop at the first error (default). --no-memory No additional memory tests (default). --no-yotta Skip yotta module build. - --no-cxx Skip CXX Compiler build. --out-of-source-dir= Directory used for CMake out-of-source build tests. --random-seed Use a random seed value for randomized tests (default). -r|--release-test Run this script in release mode. This fixes the seed value to 1. @@ -583,16 +581,9 @@ msg "test/build: key-exchanges (gcc)" # ~ 1 min cleanup record_status tests/scripts/key-exchanges.pl -if [ $TEST_CXX -ne 0 ]; then - msg "build: Unix make, gcc and g++ test" # ~ 30s - cleanup - make TEST_CPP=1 - - msg "build: cmake, gcc and g++ test" # ~ 30s - cleanup - CC=gcc cmake -D TEST_CPP=YES . - make -fi +msg "build: Unix make, gcc and g++ test" # ~ 30s +cleanup +make TEST_CPP=1 msg "build: Unix make, -Os (gcc)" # ~ 30s cleanup From 58093c8bec6a410e6f7bbdccf1abd1fa01574b93 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 28 Jun 2018 13:22:05 +0300 Subject: [PATCH 0588/1100] Add ECC extensions test in ssl-opts.sh Add test to verify if an ecc based extension exists or not if an ecc based ciphersuite is used or not. --- tests/ssl-opt.sh | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9faeb6703e..7fade04ec7 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4551,6 +4551,40 @@ run_test "SSL async private: renegotiation: server-initiated; decrypt" \ -s "Async decrypt callback: using key slot " \ -s "Async resume (slot [0-9]): decrypt done, status=0" +# Tests for ECC extensions (rfc 4492) + +run_test "Force a non ECC ciphersuite in the client side" \ + "$P_SRV debug_level=3" \ + "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + 0 \ + -C "client hello, adding supported_elliptic_curves extension" \ + -C "client hello, adding supported_point_formats extension" \ + -S "found supported elliptic curves extension" \ + -S "found supported point formats extension" + +run_test "Force a non ECC ciphersuite in the server side" \ + "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + "$P_CLI debug_level=3" \ + 0 \ + -C "found supported_point_formats extension" \ + -S "server hello, supported_point_formats extension" + +run_test "Force an ECC ciphersuite in the client side" \ + "$P_SRV debug_level=3" \ + "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ + 0 \ + -c "client hello, adding supported_elliptic_curves extension" \ + -c "client hello, adding supported_point_formats extension" \ + -s "found supported elliptic curves extension" \ + -s "found supported point formats extension" + +run_test "Force an ECC ciphersuite in the server side" \ + "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ + "$P_CLI debug_level=3" \ + 0 \ + -c "found supported_point_formats extension" \ + -s "server hello, supported_point_formats extension" + # Tests for DTLS HelloVerifyRequest run_test "DTLS cookie: enabled" \ From b056dd86d001ee96abec4a513d75b75085ec8f22 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Thu, 28 Jun 2018 12:58:56 +0200 Subject: [PATCH 0589/1100] Remove a redundant dependency clause --- tests/suites/test_suite_aria.data | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/suites/test_suite_aria.data b/tests/suites/test_suite_aria.data index 43373b8aab..8cb2d2aa34 100644 --- a/tests/suites/test_suite_aria.data +++ b/tests/suites/test_suite_aria.data @@ -95,5 +95,4 @@ ARIA-256-CFB128 Decrypt - Official Test Vectors 1.0 aria_decrypt_cfb128:"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff":"0f1e2d3c4b5a69788796a5b4c3d2e1f0":"26834705b0f2c0e2588d4a7f09009635f28bb93d8c31f870ec1e0bdb082b66fa402dd9c202be300c4517d196b14d4ce11dce97f7aaba54341b0d872cc9b63753a3e8556a14be6f7b3e27e3cfc39caf80f2a355aa50dc83c09c7b11828694f8e4aa726c528976b53f2c877f4991a3a8d28adb63bd751846ffb2350265e179d4990753ae8485ff9b4133ddad5875b84a90cbcfa62a045d726df71b6bda0eeca0be":"11111111aaaaaaaa11111111bbbbbbbb11111111cccccccc11111111dddddddd22222222aaaaaaaa22222222bbbbbbbb22222222cccccccc22222222dddddddd33333333aaaaaaaa33333333bbbbbbbb33333333cccccccc33333333dddddddd44444444aaaaaaaa44444444bbbbbbbb44444444cccccccc44444444dddddddd55555555aaaaaaaa55555555bbbbbbbb55555555cccccccc55555555dddddddd":0 ARIA Selftest -depends_on:MBEDTLS_SELF_TEST aria_selftest: From 9e02b973f10d9492a957faae41ef10c7d7efac20 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 28 Jun 2018 11:56:57 +0100 Subject: [PATCH 0590/1100] Add ChangeLog entry for #1257 - key_app_writer writes invalid ASN.1 --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 609fa79dd3..99b778e220 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ Features authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by Daniel King (#485). +Bugfix + * Fix the key_app_writer example which was writing a leading zero byte which + was creating an invalid ASN.1 tag. Found by Aryeh R. Fixes #1257. + Changes * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. From 1ab9b5714852c6810c0a0bfd8c3b5c60a9a15482 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 28 Jun 2018 12:10:56 +0100 Subject: [PATCH 0591/1100] Add a ChangeLog entry for memory leak in mbedtls_x509_csr_parse() --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 74cdfd0474..44533d2aed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,8 @@ Bugfix contributed by tabascoeye in pull request #1600. * Clarify documentation for mbedtls_ssl_write() to include 0 as a valid return value. Found by @davidwu2000. #839 + * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, + Philippe Antoine. Fixes #1623. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. From 643df7c8a1003c7a190fab411ba8ac43f5a81210 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 28 Jun 2018 16:17:00 +0300 Subject: [PATCH 0592/1100] Update ssl-opt.sh test to run condition 1. Update the test script to un the ECC tests only if the relevant configurations are defined in `config.h` file 2. Change the HASH of the ciphersuite from SHA1 based to SHA256 for better example --- tests/ssl-opt.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 7fade04ec7..2366117e3f 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4553,22 +4553,34 @@ run_test "SSL async private: renegotiation: server-initiated; decrypt" \ # Tests for ECC extensions (rfc 4492) +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED run_test "Force a non ECC ciphersuite in the client side" \ "$P_SRV debug_level=3" \ - "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + "$P_CLI debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \ 0 \ -C "client hello, adding supported_elliptic_curves extension" \ -C "client hello, adding supported_point_formats extension" \ -S "found supported elliptic curves extension" \ -S "found supported point formats extension" +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_RSA_ENABLED run_test "Force a non ECC ciphersuite in the server side" \ - "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ + "$P_SRV debug_level=3 force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA256" \ "$P_CLI debug_level=3" \ 0 \ -C "found supported_point_formats extension" \ -S "server hello, supported_point_formats extension" +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED run_test "Force an ECC ciphersuite in the client side" \ "$P_SRV debug_level=3" \ "$P_CLI debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ @@ -4578,6 +4590,10 @@ run_test "Force an ECC ciphersuite in the client side" \ -s "found supported elliptic curves extension" \ -s "found supported point formats extension" +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED run_test "Force an ECC ciphersuite in the server side" \ "$P_SRV debug_level=3 force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256" \ "$P_CLI debug_level=3" \ From 470dfbabb9812ac056dd0ace4dcca33241bb3b0c Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Thu, 28 Jun 2018 16:23:39 +0200 Subject: [PATCH 0593/1100] Simplify OID tag parsing in x509_get_cert_ext( ) --- library/x509_crt.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 0885c8e3b7..ca8b4649e6 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -574,14 +574,10 @@ static int x509_get_crt_ext( unsigned char **p, end_ext_data = *p + len; /* Get extension ID */ - if( ( end - *p ) < 1 ) - return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + - MBEDTLS_ERR_ASN1_OUT_OF_DATA ); - extn_oid.tag = **p; - if( ( ret = mbedtls_asn1_get_tag( p, end, &extn_oid.len, MBEDTLS_ASN1_OID ) ) != 0 ) return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); + extn_oid.tag = MBEDTLS_ASN1_OID; extn_oid.p = *p; *p += extn_oid.len; From dcae78a7a9c0fd83bb26f18e30a19551b132c62f Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Thu, 28 Jun 2018 16:32:54 +0200 Subject: [PATCH 0594/1100] Make a buffer limit more specific --- library/x509_crt.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index ca8b4649e6..493d6334f8 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -574,7 +574,8 @@ static int x509_get_crt_ext( unsigned char **p, end_ext_data = *p + len; /* Get extension ID */ - if( ( ret = mbedtls_asn1_get_tag( p, end, &extn_oid.len, MBEDTLS_ASN1_OID ) ) != 0 ) + if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &extn_oid.len, + MBEDTLS_ASN1_OID ) ) != 0 ) return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); extn_oid.tag = MBEDTLS_ASN1_OID; From 5a9cb61d6989d80c878162b54b08f1836c522398 Mon Sep 17 00:00:00 2001 From: Ruini Xue Date: Thu, 28 Jun 2018 23:21:26 +0800 Subject: [PATCH 0595/1100] Use preserve mode to copy headers. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a0fcb2bc56..78c1acb892 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ tests: lib ifndef WINDOWS install: no_test mkdir -p $(DESTDIR)/include/mbedtls - cp -r include/mbedtls $(DESTDIR)/include + cp -rp include/mbedtls $(DESTDIR)/include mkdir -p $(DESTDIR)/lib cp -RP library/libmbedtls.* $(DESTDIR)/lib From 104d85865d1339225f1b706d841597a7430c7e85 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 27 Jun 2018 10:57:33 +0200 Subject: [PATCH 0596/1100] Add ChangeLog entry --- ChangeLog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index 348864c0e9..19bdb79f1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,21 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Security + * Fix a vulnerability in TLS ciphersuites based on CBC and using SHA-384, + in (D)TLS 1.0 to 1.2, that allowed an active network attacker to + partially recover the plaintext of messages under some conditions by + exploiting timing measurements. With DTLS, the attacker could perform + this recovery by sending many messages in the same connection. With TLS + or if mbedtls_ssl_conf_dtls_badmac_limit() was used, the attack only + worked if the same secret (for example a HTTP Cookie) has been repeatedly + sent over connections manipulated by the attacker. Connections using GCM + or CCM instead of CBC, using hash sizes other than SHA-384, or using + Encrypt-then-Mac (RFC 7366) were not affected. The vulnerability was + caused by a miscalculation (for SHA-384) in a countermeasure to the + original Lucky 13 attack. Found by Kenny Paterson, Eyal Ronen and Adi + Shamir. + API Changes * Extend the platform module with a util component that contains functionality shared by multiple Mbed TLS modules. At this stage From 61fa436ad36f9374429a8bb5e5339726fb12553c Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Mon, 25 Jun 2018 12:10:00 +0100 Subject: [PATCH 0597/1100] Address review comments - tidy usage of macros to use minimal values --- programs/ssl/ssl_mail_client.c | 4 ++-- tests/CMakeLists.txt | 2 +- tests/Makefile | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index 74d5d72700..0f2b32ddcf 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -19,8 +19,8 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ -/* Enable definition of hostname() even when compiling with -std=c99. Must be - * set before config.h, which pulls in glibc's features.h indirectly. +/* Enable definition of gethostname() even when compiling with -std=c99. Must + * be set before config.h, which pulls in glibc's features.h indirectly. * Harmless on other platforms. */ #define _POSIX_C_SOURCE 200112L diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 084da59f49..34d6494707 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,7 +16,7 @@ if(NOT PERL_FOUND) endif() # Enable definition of various functions used throughout the testsuite -# (hostname, strdup, fileno...) even when compiling with -std=c99. Harmless +# (gethostname, strdup, fileno...) even when compiling with -std=c99. Harmless # on non-POSIX platforms. add_definitions("-D_POSIX_C_SOURCE=200809L") diff --git a/tests/Makefile b/tests/Makefile index d65cd93a25..37e8cbcbad 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -12,6 +12,11 @@ LOCAL_LDFLAGS = -L../library \ -lmbedx509$(SHARED_SUFFIX) \ -lmbedcrypto$(SHARED_SUFFIX) +# Enable definition of various functions used throughout the testsuite +# (gethostname, strdup, fileno...) even when compiling with -std=c99. Harmless +# on non-POSIX platforms. +LOCAL_CFLAGS += -D_POSIX_C_SOURCE=200809L + ifndef SHARED DEP=../library/libmbedcrypto.a ../library/libmbedx509.a ../library/libmbedtls.a else From a931265509d84c7e0684ff91162a4cb1dd70fb7d Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 29 Jun 2018 15:48:13 +0200 Subject: [PATCH 0598/1100] Fix ssl-opt.sh not starting when lsof is not available $START_DELAY was used before it was defined. --- tests/ssl-opt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9faeb6703e..91f16e1fa4 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -308,7 +308,7 @@ if type lsof >/dev/null 2>/dev/null; then done } else - echo "Warning: lsof not available, wait_server_start = sleep $START_DELAY" + echo "Warning: lsof not available, wait_server_start = sleep" wait_server_start() { sleep "$START_DELAY" } From ab8d58cb2d0653c84ca44a8d9e3486ed8b9de930 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 17 Jun 2018 14:39:30 +0300 Subject: [PATCH 0599/1100] Move definition of MBEDTLS_CIPHER_MODE_STREAM Move definition of `MBEDTLS_CIPHER_MODE_STREAM` to header file (`mbedtls_cipher_internal.h`), because it is used by more than one file. Raised by TrinityTonic in #1719 --- include/mbedtls/cipher_internal.h | 4 ++++ library/cipher.c | 5 ----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/cipher_internal.h b/include/mbedtls/cipher_internal.h index c6def0bef7..56107cfffc 100644 --- a/include/mbedtls/cipher_internal.h +++ b/include/mbedtls/cipher_internal.h @@ -34,6 +34,10 @@ #include "cipher.h" +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) +#define MBEDTLS_CIPHER_MODE_STREAM +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/library/cipher.c b/library/cipher.c index a913913f04..7ae6c4ac5d 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -65,11 +65,6 @@ #define mbedtls_free free #endif -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) -#define MBEDTLS_CIPHER_MODE_STREAM -#endif - - #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) /* Compare the contents of two buffers in constant time. * Returns 0 if the contents are bitwise identical, otherwise returns From da2a31237e341cb1b996d024a480e0270e9ec77d Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 17 Jun 2018 14:51:59 +0300 Subject: [PATCH 0600/1100] Add entry in ChangeLog Add entry in ChangeLog for compilation error fix of #1719 --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 44533d2aed..4ed7490b56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,8 @@ Bugfix return value. Found by @davidwu2000. #839 * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, Philippe Antoine. Fixes #1623. + * Fix compilation error when MBEDTLS_ARC4_C is disabled and + MBEDTLS_CIPHER_NULL_CIPHER is enabled. Found by TrinityTonic in #1719. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. From 3fa6c2760e6546314b80057cbc712fbb1efe8af5 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 27 Jun 2018 18:33:13 +0300 Subject: [PATCH 0601/1100] Move definition to cipher.h Define `MBEDTLS_CIPHER_MODE_STREAM` for `MBEDTLS_CIPHER_NULL_CIPHER` as well, in cipher.h. Remove redundant definition in `cipher_internal.h` --- include/mbedtls/cipher.h | 2 +- include/mbedtls/cipher_internal.h | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index a1f4738a94..ea0ce983f1 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -45,7 +45,7 @@ #define MBEDTLS_CIPHER_MODE_WITH_PADDING #endif -#if defined(MBEDTLS_ARC4_C) +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) #define MBEDTLS_CIPHER_MODE_STREAM #endif diff --git a/include/mbedtls/cipher_internal.h b/include/mbedtls/cipher_internal.h index 56107cfffc..c6def0bef7 100644 --- a/include/mbedtls/cipher_internal.h +++ b/include/mbedtls/cipher_internal.h @@ -34,10 +34,6 @@ #include "cipher.h" -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) -#define MBEDTLS_CIPHER_MODE_STREAM -#endif - #ifdef __cplusplus extern "C" { #endif From 13dfb4e0a983d5e669a7058392841d894c7647d4 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 1 Jul 2018 10:42:54 +0300 Subject: [PATCH 0602/1100] Revert changes in the configs folder Revert the changes in the `configs` folder to align with the `README.txt` file. --- configs/config-ccm-psk-tls1_2.h | 2 +- configs/config-mini-tls1_1.h | 2 +- configs/config-no-entropy.h | 2 +- configs/config-suite-b.h | 2 +- configs/config-thread.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configs/config-ccm-psk-tls1_2.h b/configs/config-ccm-psk-tls1_2.h index 96515a276e..a783e6b73b 100644 --- a/configs/config-ccm-psk-tls1_2.h +++ b/configs/config-ccm-psk-tls1_2.h @@ -83,6 +83,6 @@ */ #define MBEDTLS_SSL_MAX_CONTENT_LEN 512 -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-mini-tls1_1.h b/configs/config-mini-tls1_1.h index a14fc10b4c..013bc0300d 100644 --- a/configs/config-mini-tls1_1.h +++ b/configs/config-mini-tls1_1.h @@ -73,6 +73,6 @@ /* For testing with compat.sh */ #define MBEDTLS_FS_IO -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-no-entropy.h b/configs/config-no-entropy.h index 7d34ad52ec..d8cc1ab412 100644 --- a/configs/config-no-entropy.h +++ b/configs/config-no-entropy.h @@ -87,6 +87,6 @@ /* Miscellaneous options */ #define MBEDTLS_AES_ROM_TABLES -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-suite-b.h b/configs/config-suite-b.h index 23b53d612b..18e2c40369 100644 --- a/configs/config-suite-b.h +++ b/configs/config-suite-b.h @@ -112,6 +112,6 @@ */ #define MBEDTLS_SSL_MAX_CONTENT_LEN 1024 -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/configs/config-thread.h b/configs/config-thread.h index 7c43113332..25db16bf0f 100644 --- a/configs/config-thread.h +++ b/configs/config-thread.h @@ -89,6 +89,6 @@ /* Save ROM and a few bytes of RAM by specifying our own ciphersuite list */ #define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ From 823c915e594c2bbff0b8d77fb1dceb4b3d73341d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 2 Jul 2018 12:05:49 +0200 Subject: [PATCH 0603/1100] Fix mis-merged ChangeLog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1d1ec7c046..ab5a017429 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,10 @@ Features in ECP, ECDSA, PK and X509 (CRL not supported yet), and using existing functions in ECDH and SSL (currently only implemented client-side, for ECDHE-ECDSA ciphersuites with TLS 1.2, including client authentication). + += mbed TLS 2.11.0 branch released 2018-06-18 + +Features * Add additional block mode, OFB (Output Feedback), to the AES module and cipher abstraction module. * Implement the HMAC-based extract-and-expand key derivation function From 4edb9cbbc0a07a650946c0e83c7325093672c902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 2 Jul 2018 12:23:23 +0200 Subject: [PATCH 0604/1100] Justify some max_ops settings in test_suite_pk --- tests/suites/test_suite_pk.function | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index a2158360b1..2cdc363bb3 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -137,7 +137,8 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, rs_ctx = &ctx; mbedtls_pk_restart_init( rs_ctx ); - mbedtls_ecp_set_max_ops( 42 ); + // this setting would ensure restart would happen if ECC was used + mbedtls_ecp_set_max_ops( 1 ); #endif mbedtls_pk_init( &pk ); @@ -385,6 +386,9 @@ void pk_sign_verify( int type, int sign_ret, int verify_ret ) rs_ctx = &ctx; mbedtls_pk_restart_init( rs_ctx ); + /* This value is large enough that the operation will complete in one run. + * See comments at the top of ecp_test_vect_restart in + * test_suite_ecp.function for estimates of operation counts. */ mbedtls_ecp_set_max_ops( 42000 ); #endif From 78d7e8cbc78443660c1a4e4c94ac109edbddf368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 2 Jul 2018 12:33:14 +0200 Subject: [PATCH 0605/1100] Rename internal variable for consistency --- include/mbedtls/x509_crt.h | 2 +- library/x509_crt.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 1c3007d8d1..d794b6630c 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -178,7 +178,7 @@ typedef struct /* for find_parent_in() */ mbedtls_x509_crt *parent; /* non-null iff parent_in in progress */ mbedtls_x509_crt *fallback_parent; - int fallback_sign_good; + int fallback_signature_is_good; /* for find_parent() */ int parent_is_trusted; /* -1 if find_parent is not in progress */ diff --git a/library/x509_crt.c b/library/x509_crt.c index 4022ceee82..588b484f13 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2010,7 +2010,7 @@ static int x509_crt_find_parent_in( { int ret; mbedtls_x509_crt *parent, *fallback_parent; - int signature_is_good, fallback_sign_good; + int signature_is_good, fallback_signature_is_good; #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* did we have something in progress? */ @@ -2019,12 +2019,12 @@ static int x509_crt_find_parent_in( /* restore saved state */ parent = rs_ctx->parent; fallback_parent = rs_ctx->fallback_parent; - fallback_sign_good = rs_ctx->fallback_sign_good; + fallback_signature_is_good = rs_ctx->fallback_signature_is_good; /* clear saved state */ rs_ctx->parent = NULL; rs_ctx->fallback_parent = NULL; - rs_ctx->fallback_sign_good = 0; + rs_ctx->fallback_signature_is_good = 0; /* resume where we left */ goto check_signature; @@ -2032,7 +2032,7 @@ static int x509_crt_find_parent_in( #endif fallback_parent = NULL; - fallback_sign_good = 0; + fallback_signature_is_good = 0; for( parent = candidates; parent != NULL; parent = parent->next ) { @@ -2059,7 +2059,7 @@ check_signature: /* save state */ rs_ctx->parent = parent; rs_ctx->fallback_parent = fallback_parent; - rs_ctx->fallback_sign_good = fallback_sign_good; + rs_ctx->fallback_signature_is_good = fallback_signature_is_good; return( ret ); } @@ -2078,7 +2078,7 @@ check_signature: if( fallback_parent == NULL ) { fallback_parent = parent; - fallback_sign_good = signature_is_good; + fallback_signature_is_good = signature_is_good; } continue; @@ -2095,7 +2095,7 @@ check_signature: else { *r_parent = fallback_parent; - *r_signature_is_good = fallback_sign_good; + *r_signature_is_good = fallback_signature_is_good; } return( 0 ); @@ -2704,7 +2704,7 @@ void mbedtls_x509_crt_restart_init( mbedtls_x509_crt_restart_ctx *ctx ) ctx->parent = NULL; ctx->fallback_parent = NULL; - ctx->fallback_sign_good = 0; + ctx->fallback_signature_is_good = 0; ctx->parent_is_trusted = -1; From 05fa46e6b7638bb7e1d4c5e2810aa6aa50e42a92 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 2 Jul 2018 12:00:54 +0100 Subject: [PATCH 0606/1100] Add ChangeLog entry for #992 fix --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9ee82c6853..4240c85381 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Bugfix + * Remove unused headers included in x509.c. Found by Chris Hanson and fixed + by Brendan Shanks. Part of a fix for #992. + Security * Fix a bug in the X.509 module potentially leading to a buffer overread during CRT verification or to invalid or omitted checks for certificate From c8c12b6007b4249e1fbc67c94bb28b3ec2dadc3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 2 Jul 2018 13:09:39 +0200 Subject: [PATCH 0607/1100] Add NULL pointer check for consistency Most other functions in this module have a similar check. --- library/pk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/pk.c b/library/pk.c index c793fd8e49..ba8950e8d7 100644 --- a/library/pk.c +++ b/library/pk.c @@ -206,8 +206,8 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len static int pk_restart_setup( mbedtls_pk_restart_ctx *ctx, const mbedtls_pk_info_t *info ) { - /* Don't do anything it already set up */ - if( ctx->pk_info != NULL ) + /* Don't do anything if already set up or invalid */ + if( ctx == NULL || ctx->pk_info != NULL ) return( 0 ); /* Should never happen when we're called */ From 991f9fefd9f0db6eeea3ee05076c84a9cccdcb29 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Mon, 2 Jul 2018 09:08:21 -0400 Subject: [PATCH 0608/1100] all_sh: add a check for header inclusion in cpp_dummy_build.cpp change the g++ test to be incremental, to save time reorganize header order in cpp_dummy_build.cpp according to c locale --- programs/test/cpp_dummy_build.cpp | 11 ++++++----- tests/scripts/all.sh | 18 ++++++++++++++---- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/programs/test/cpp_dummy_build.cpp b/programs/test/cpp_dummy_build.cpp index 03373a917d..41c24c9813 100644 --- a/programs/test/cpp_dummy_build.cpp +++ b/programs/test/cpp_dummy_build.cpp @@ -41,6 +41,7 @@ #include "mbedtls/certs.h" #include "mbedtls/chacha20.h" #include "mbedtls/chachapoly.h" +#include "mbedtls/check_config.h" #include "mbedtls/cipher.h" #include "mbedtls/cipher_internal.h" #include "mbedtls/cmac.h" @@ -61,21 +62,21 @@ #include "mbedtls/havege.h" #include "mbedtls/hkdf.h" #include "mbedtls/hmac_drbg.h" +#include "mbedtls/md.h" #include "mbedtls/md2.h" #include "mbedtls/md4.h" #include "mbedtls/md5.h" -#include "mbedtls/md.h" #include "mbedtls/md_internal.h" #include "mbedtls/net.h" #include "mbedtls/net_sockets.h" #include "mbedtls/oid.h" #include "mbedtls/padlock.h" #include "mbedtls/pem.h" +#include "mbedtls/pk.h" +#include "mbedtls/pk_internal.h" #include "mbedtls/pkcs11.h" #include "mbedtls/pkcs12.h" #include "mbedtls/pkcs5.h" -#include "mbedtls/pk.h" -#include "mbedtls/pk_internal.h" #include "mbedtls/platform_time.h" #include "mbedtls/platform_util.h" #include "mbedtls/poly1305.h" @@ -85,19 +86,19 @@ #include "mbedtls/sha1.h" #include "mbedtls/sha256.h" #include "mbedtls/sha512.h" +#include "mbedtls/ssl.h" #include "mbedtls/ssl_cache.h" #include "mbedtls/ssl_ciphersuites.h" #include "mbedtls/ssl_cookie.h" -#include "mbedtls/ssl.h" #include "mbedtls/ssl_internal.h" #include "mbedtls/ssl_ticket.h" #include "mbedtls/threading.h" #include "mbedtls/timing.h" #include "mbedtls/version.h" +#include "mbedtls/x509.h" #include "mbedtls/x509_crl.h" #include "mbedtls/x509_crt.h" #include "mbedtls/x509_csr.h" -#include "mbedtls/x509.h" #include "mbedtls/xtea.h" #if defined(MBEDTLS_PLATFORM_C) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index bbfbfbc1c5..cafb81ccac 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -228,6 +228,14 @@ check_tools() done } +check_headers_in_cpp () { + ls include/mbedtls >headers.txt + ' From 5ffc220f16bd1c30c9f7f48708b657629aebd128 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 17 May 2017 18:59:53 +0300 Subject: [PATCH 0609/1100] Documentation error in `mbedtls_ssl_get_session` Fix Documentation error in `mbedtls_ssl_get_session`. This function supports deep copying of the session, and the peer certificate is not lost anymore, Resolves #926 --- ChangeLog | 3 +++ include/mbedtls/ssl.h | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 44533d2aed..10f07736df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,9 @@ Bugfix return value. Found by @davidwu2000. #839 * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, Philippe Antoine. Fixes #1623. + * Remove wrong documentation for `mbedtls_ssl_get_session`. + This API has deep copy of the session, and the peer + certificate is not lost. #926 Changes * Change the shebang line in Perl scripts to look up perl in the PATH. diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 39b7f290aa..ac9a3f3ce3 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2737,7 +2737,6 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss * \brief Save session in order to resume it later (client-side only) * Session data is copied to presented session structure. * - * \warning Currently, peer certificate is lost in the operation. * * \param ssl SSL context * \param session session context @@ -2747,6 +2746,11 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or * arguments are otherwise invalid * + * \note Only the server certificate is copied, and not the chain + * but this is not a problem because the result of the chain + * verification is stored in `verify_result` and can be checked + * with \c mbedtls_ssl_get_verify_result() + * * \sa mbedtls_ssl_set_session() */ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session *session ); From 21f9afed2b03376a4394e51a8687dbb0d131b97e Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 3 Jul 2018 16:07:29 +0300 Subject: [PATCH 0610/1100] Remove the namespacing from config-no-entropy.h Remove the `mbedtls` namespacing from the `config-no-entropy.h` file, as it is being imported to the include folder. --- configs/config-no-entropy.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/config-no-entropy.h b/configs/config-no-entropy.h index d8cc1ab412..7d34ad52ec 100644 --- a/configs/config-no-entropy.h +++ b/configs/config-no-entropy.h @@ -87,6 +87,6 @@ /* Miscellaneous options */ #define MBEDTLS_AES_ROM_TABLES -#include "mbedtls/check_config.h" +#include "check_config.h" #endif /* MBEDTLS_CONFIG_H */ From d50f7865ea3c8424bcdef07112d5fe40c5a45cb7 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 3 Jul 2018 16:11:44 +0100 Subject: [PATCH 0611/1100] Update the CONTRIBUTING.md file for LTS branches The CONTRIBUTING.md referred to 'legacy' branches instead of LTS branches, and also referenced mbedtls-1.3 which is no longer maintained, and omitted mbedtls-2.7 which is. --- CONTRIBUTING.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c6dc74c81..2257a615d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,19 +26,22 @@ Making a Contribution 1. For quick merging, the contribution should be short, and concentrated on a single feature or topic. The larger the contribution is, the longer it would take to review it and merge it. 1. Mbed TLS is released under the Apache license, and as such, all the added files should include the Apache license header. -Backports ---------- -Mbed TLS maintains some legacy branches, which are released as LTS versions. Mbed TLS should follow backwards compatibility rules, to fit with existing users. As such, backporting to these branches should be handled according to the following rules: - -1. If the contribution is a new feature or enhancement, no backporting is needed. -1. Bug fixes should be backported to the legacy branches containing these bugs. -1. Changes in the API do not require backporting. If a bug fix introduced a new API, such as new error codes, the bug fix should be implemented differently in the legacy branch. +Long Term Support Branches +-------------------------- +Mbed TLS maintains several LTS (Long Term Support) branches, which are maintained continuously for a given period. The LTS branches are provided to allow users of the library to have a maintained version of the library which contains security fixes and fixes for other defects, without encountering any API changes or requiring changes in their own code. To allow users to take advantage of the LTS branches, these branches maintain backwards compatibility for both the public API and ABI. + +When backporting to these branches please observe the following rules: + + 1. Generally, all changes to the library which change the API cannot be backported. + 2. All bug fixes must be backported to the LTS branches if they correct a defect in an LTS branch. If a bug fix introduces a change to the API such as a new function, the fix should be reworked to avoid the API change. API changes without very strong justification are unlikely to be accepted. + 3. If a contribution is a new feature or enhancement, no backporting is required. Exceptions to this may be addtional test cases or quality improvements such as changes to scripts. + +It would be highly appreciated if contributions are backported to LTS branches in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development). + +Currently maintained LTS branches are: -It would be highly appreciated if a contribution would be backported to a legacy branch in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development). -At the moment, the legacy branches are: - -1. [mbedtls-1.3](https://github.com/ARMmbed/mbedtls/tree/mbedtls-1.3) 1. [mbedtls-2.1](https://github.com/ARMmbed/mbedtls/tree/mbedtls-2.1) +1. [mbedtls-2.7](https://github.com/ARMmbed/mbedtls/tree/mbedtls-2.7) Tests ----- From 382c1db6c0a5209416ec66a17e34bc8b3c15fc3c Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 4 Jul 2018 17:42:47 +0300 Subject: [PATCH 0612/1100] Minor fixes 1. Rephrase ChangeLog entry. 2. Add a full stop at the end of the fuinction documentation. --- ChangeLog | 4 ++-- include/mbedtls/ssl.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 10f07736df..c0c4cd2a75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,9 +18,9 @@ Bugfix return value. Found by @davidwu2000. #839 * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, Philippe Antoine. Fixes #1623. - * Remove wrong documentation for `mbedtls_ssl_get_session`. + * Correct the documentation for `mbedtls_ssl_get_session()`. This API has deep copy of the session, and the peer - certificate is not lost. #926 + certificate is not lost. Fixes #926. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index ac9a3f3ce3..4c9f9e8394 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2744,12 +2744,12 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss * \return 0 if successful, * MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed, * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or - * arguments are otherwise invalid + * arguments are otherwise invalid. * * \note Only the server certificate is copied, and not the chain * but this is not a problem because the result of the chain * verification is stored in `verify_result` and can be checked - * with \c mbedtls_ssl_get_verify_result() + * with \c mbedtls_ssl_get_verify_result(). * * \sa mbedtls_ssl_set_session() */ From 1cc1fb05999aea8067e11f5c4f4fdb32dbe91036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 28 Jun 2018 12:10:27 +0200 Subject: [PATCH 0613/1100] Fix Lucky 13 cache attack on MD/SHA padding The basis for the Lucky 13 family of attacks is for an attacker to be able to distinguish between (long) valid TLS-CBC padding and invalid TLS-CBC padding. Since our code sets padlen = 0 for invalid padding, the length of the input to the HMAC function gives information about that. Information about this length (modulo the MD/SHA block size) can be deduced from how much MD/SHA padding (this is distinct from TLS-CBC padding) is used. If MD/SHA padding is read from a (static) buffer, a local attacker could get information about how much is used via a cache attack targeting that buffer. Let's get rid of this buffer. Now the only buffer used is the internal MD/SHA one, which is always read fully by the process() function. --- ChangeLog | 7 ++++++ library/md5.c | 54 +++++++++++++++++++++++++++----------------- library/sha1.c | 51 +++++++++++++++++++++++++++--------------- library/sha256.c | 52 +++++++++++++++++++++++++++---------------- library/sha512.c | 58 ++++++++++++++++++++++++++++-------------------- 5 files changed, 141 insertions(+), 81 deletions(-) diff --git a/ChangeLog b/ChangeLog index 19bdb79f1f..0acb2c6258 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16,6 +16,13 @@ Security caused by a miscalculation (for SHA-384) in a countermeasure to the original Lucky 13 attack. Found by Kenny Paterson, Eyal Ronen and Adi Shamir. + * Fix a vulnerability in TLS ciphersuites based on CBC, in (D)TLS 1.0 to + 1.2, that allowed a local attacker, able to execute code on the local + machine as well as manipulate network packets, to partially recover the + plaintext of messages under some conditions (see previous entry) by using + a cache attack targetting an internal MD/SHA buffer. Connections using + GCM or CCM instead of CBC or using Encrypt-then-Mac (RFC 7366) were not + affected. Found by Kenny Paterson, Eyal Ronen and Adi Shamir. API Changes * Extend the platform module with a util component that contains diff --git a/library/md5.c b/library/md5.c index 8238c2b81a..2a740cda81 100644 --- a/library/md5.c +++ b/library/md5.c @@ -309,14 +309,6 @@ void mbedtls_md5_update( mbedtls_md5_context *ctx, } #endif -static const unsigned char md5_padding[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - /* * MD5 final digest */ @@ -324,26 +316,48 @@ int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx, unsigned char output[16] ) { int ret; - uint32_t last, padn; + uint32_t used; uint32_t high, low; - unsigned char msglen[8]; + /* + * Add padding: 0x80 then 0x00 until 8 bytes remain for the length + */ + used = ctx->total[0] & 0x3F; + + ctx->buffer[used++] = 0x80; + + if( used <= 56 ) + { + /* Enough room for padding + length in current block */ + memset( ctx->buffer + used, 0, 56 - used ); + } + else + { + /* We'll need an extra block */ + memset( ctx->buffer + used, 0, 64 - used ); + + if( ( ret = mbedtls_internal_md5_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + + memset( ctx->buffer, 0, 56 ); + } + + /* + * Add message length + */ high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_LE( low, msglen, 0 ); - PUT_UINT32_LE( high, msglen, 4 ); + PUT_UINT32_LE( low, ctx->buffer, 56 ); + PUT_UINT32_LE( high, ctx->buffer, 60 ); - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); - - if( ( ret = mbedtls_md5_update_ret( ctx, md5_padding, padn ) ) != 0 ) - return( ret ); - - if( ( ret = mbedtls_md5_update_ret( ctx, msglen, 8 ) ) != 0 ) - return( ret ); + if( ( ret = mbedtls_internal_md5_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + /* + * Output final state + */ PUT_UINT32_LE( ctx->state[0], output, 0 ); PUT_UINT32_LE( ctx->state[1], output, 4 ); PUT_UINT32_LE( ctx->state[2], output, 8 ); diff --git a/library/sha1.c b/library/sha1.c index 1587de4805..bab6087c4e 100644 --- a/library/sha1.c +++ b/library/sha1.c @@ -342,14 +342,6 @@ void mbedtls_sha1_update( mbedtls_sha1_context *ctx, } #endif -static const unsigned char sha1_padding[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - /* * SHA-1 final digest */ @@ -357,25 +349,48 @@ int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, unsigned char output[20] ) { int ret; - uint32_t last, padn; + uint32_t used; uint32_t high, low; - unsigned char msglen[8]; + /* + * Add padding: 0x80 then 0x00 until 8 bytes remain for the length + */ + used = ctx->total[0] & 0x3F; + + ctx->buffer[used++] = 0x80; + + if( used <= 56 ) + { + /* Enough room for padding + length in current block */ + memset( ctx->buffer + used, 0, 56 - used ); + } + else + { + /* We'll need an extra block */ + memset( ctx->buffer + used, 0, 64 - used ); + + if( ( ret = mbedtls_internal_sha1_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + + memset( ctx->buffer, 0, 56 ); + } + + /* + * Add message length + */ high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_BE( high, msglen, 0 ); - PUT_UINT32_BE( low, msglen, 4 ); + PUT_UINT32_BE( high, ctx->buffer, 56 ); + PUT_UINT32_BE( low, ctx->buffer, 60 ); - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); - - if( ( ret = mbedtls_sha1_update_ret( ctx, sha1_padding, padn ) ) != 0 ) - return( ret ); - if( ( ret = mbedtls_sha1_update_ret( ctx, msglen, 8 ) ) != 0 ) + if( ( ret = mbedtls_internal_sha1_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); + /* + * Output final state + */ PUT_UINT32_BE( ctx->state[0], output, 0 ); PUT_UINT32_BE( ctx->state[1], output, 4 ); PUT_UINT32_BE( ctx->state[2], output, 8 ); diff --git a/library/sha256.c b/library/sha256.c index 695485d847..dbb4a89861 100644 --- a/library/sha256.c +++ b/library/sha256.c @@ -311,14 +311,6 @@ void mbedtls_sha256_update( mbedtls_sha256_context *ctx, } #endif -static const unsigned char sha256_padding[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - /* * SHA-256 final digest */ @@ -326,26 +318,48 @@ int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, unsigned char output[32] ) { int ret; - uint32_t last, padn; + uint32_t used; uint32_t high, low; - unsigned char msglen[8]; + /* + * Add padding: 0x80 then 0x00 until 8 bytes remain for the length + */ + used = ctx->total[0] & 0x3F; + + ctx->buffer[used++] = 0x80; + + if( used <= 56 ) + { + /* Enough room for padding + length in current block */ + memset( ctx->buffer + used, 0, 56 - used ); + } + else + { + /* We'll need an extra block */ + memset( ctx->buffer + used, 0, 64 - used ); + + if( ( ret = mbedtls_internal_sha256_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + + memset( ctx->buffer, 0, 56 ); + } + + /* + * Add message length + */ high = ( ctx->total[0] >> 29 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT32_BE( high, msglen, 0 ); - PUT_UINT32_BE( low, msglen, 4 ); + PUT_UINT32_BE( high, ctx->buffer, 56 ); + PUT_UINT32_BE( low, ctx->buffer, 60 ); - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); - - if( ( ret = mbedtls_sha256_update_ret( ctx, sha256_padding, padn ) ) != 0 ) - return( ret ); - - if( ( ret = mbedtls_sha256_update_ret( ctx, msglen, 8 ) ) != 0 ) + if( ( ret = mbedtls_internal_sha256_process( ctx, ctx->buffer ) ) != 0 ) return( ret ); + /* + * Output final state + */ PUT_UINT32_BE( ctx->state[0], output, 0 ); PUT_UINT32_BE( ctx->state[1], output, 4 ); PUT_UINT32_BE( ctx->state[2], output, 8 ); diff --git a/library/sha512.c b/library/sha512.c index 6de94e99b4..a9440e8af5 100644 --- a/library/sha512.c +++ b/library/sha512.c @@ -341,18 +341,6 @@ void mbedtls_sha512_update( mbedtls_sha512_context *ctx, } #endif -static const unsigned char sha512_padding[128] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - /* * SHA-512 final digest */ @@ -360,26 +348,48 @@ int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, unsigned char output[64] ) { int ret; - size_t last, padn; + unsigned used; uint64_t high, low; - unsigned char msglen[16]; + /* + * Add padding: 0x80 then 0x00 until 16 bytes remain for the length + */ + used = ctx->total[0] & 0x7F; + + ctx->buffer[used++] = 0x80; + + if( used <= 112 ) + { + /* Enough room for padding + length in current block */ + memset( ctx->buffer + used, 0, 112 - used ); + } + else + { + /* We'll need an extra block */ + memset( ctx->buffer + used, 0, 128 - used ); + + if( ( ret = mbedtls_internal_sha512_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + + memset( ctx->buffer, 0, 112 ); + } + + /* + * Add message length + */ high = ( ctx->total[0] >> 61 ) | ( ctx->total[1] << 3 ); low = ( ctx->total[0] << 3 ); - PUT_UINT64_BE( high, msglen, 0 ); - PUT_UINT64_BE( low, msglen, 8 ); + PUT_UINT64_BE( high, ctx->buffer, 112 ); + PUT_UINT64_BE( low, ctx->buffer, 120 ); - last = (size_t)( ctx->total[0] & 0x7F ); - padn = ( last < 112 ) ? ( 112 - last ) : ( 240 - last ); - - if( ( ret = mbedtls_sha512_update_ret( ctx, sha512_padding, padn ) ) != 0 ) - return( ret ); - - if( ( ret = mbedtls_sha512_update_ret( ctx, msglen, 16 ) ) != 0 ) - return( ret ); + if( ( ret = mbedtls_internal_sha512_process( ctx, ctx->buffer ) ) != 0 ) + return( ret ); + /* + * Output final state + */ PUT_UINT64_BE( ctx->state[0], output, 0 ); PUT_UINT64_BE( ctx->state[1], output, 8 ); PUT_UINT64_BE( ctx->state[2], output, 16 ); From 278af4536ccedd9f5ab9d814ece2a3f5146842c4 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 20 Jun 2018 18:40:21 +0300 Subject: [PATCH 0614/1100] Fix hmac_drbg failure in benchmark, with threading Remove redunadnat calls to `hmac_drbg_free()` between seeding operations, which make the mutex invalid. Fixes #1095 --- ChangeLog | 2 ++ programs/test/benchmark.c | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 44533d2aed..5e00c0eccc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,8 @@ Bugfix Changes * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. + * Fix efailure in hmac_drbg in the benchmark sample application, when + MBEDTLS_THREADING_C is defined. Found by TrinityTonic, #1095 = mbed TLS 2.11.0 branch released 2018-06-18 diff --git a/programs/test/benchmark.c b/programs/test/benchmark.c index 5277ceb792..e7d29c396f 100644 --- a/programs/test/benchmark.c +++ b/programs/test/benchmark.c @@ -700,7 +700,6 @@ int main( int argc, char *argv[] ) mbedtls_exit(1); TIME_AND_TSC( "HMAC_DRBG SHA-1 (NOPR)", mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); @@ -708,7 +707,6 @@ int main( int argc, char *argv[] ) MBEDTLS_HMAC_DRBG_PR_ON ); TIME_AND_TSC( "HMAC_DRBG SHA-1 (PR)", mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); #endif #if defined(MBEDTLS_SHA256_C) @@ -719,7 +717,6 @@ int main( int argc, char *argv[] ) mbedtls_exit(1); TIME_AND_TSC( "HMAC_DRBG SHA-256 (NOPR)", mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) mbedtls_exit(1); @@ -727,8 +724,8 @@ int main( int argc, char *argv[] ) MBEDTLS_HMAC_DRBG_PR_ON ); TIME_AND_TSC( "HMAC_DRBG SHA-256 (PR)", mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); #endif + mbedtls_hmac_drbg_free( &hmac_drbg ); } #endif From 636179a277200cb05bb6b0bcfafb46afec3498cc Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 4 Jul 2018 17:35:29 +0300 Subject: [PATCH 0615/1100] Fix typo Fix typo in ChangeLog entry. --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5e00c0eccc..81dca1a3e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,7 +22,7 @@ Bugfix Changes * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. - * Fix efailure in hmac_drbg in the benchmark sample application, when + * Fix failure in hmac_drbg in the benchmark sample application, when MBEDTLS_THREADING_C is defined. Found by TrinityTonic, #1095 = mbed TLS 2.11.0 branch released 2018-06-18 From 7b42030b5d4b85a662c10024043eeec5349b6adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 28 Jun 2018 10:38:35 +0200 Subject: [PATCH 0616/1100] Add counter-measure to cache-based Lucky 13 The basis for the Lucky 13 family of attacks is for an attacker to be able to distinguish between (long) valid TLS-CBC padding and invalid TLS-CBC padding. Since our code sets padlen = 0 for invalid padding, the length of the input to the HMAC function, and the location where we read the MAC, give information about that. A local attacker could gain information about that by observing via a cache attack whether the bytes at the end of the record (at the location of would-be padding) have been read during MAC verification (computation + comparison). Let's make sure they're always read. --- ChangeLog | 8 ++++++++ library/ssl_tls.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0acb2c6258..e6a5368e6f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,14 @@ Security a cache attack targetting an internal MD/SHA buffer. Connections using GCM or CCM instead of CBC or using Encrypt-then-Mac (RFC 7366) were not affected. Found by Kenny Paterson, Eyal Ronen and Adi Shamir. + * Add a counter-measure against a vulnerability in TLS ciphersuites based + on CBC, in (D)TLS 1.0 to 1.2, that allowed a local attacker, able to + execute code on the local machine as well as manipulate network packets, + to partially recover the plaintext of messages under some conditions (see + previous entry) by using a cache attack targeting the SSL input record + buffer. Connections using GCM or CCM instead of CBC or using + Encrypt-then-Mac (RFC 7366) were not affected. Found by Kenny Paterson, + Eyal Ronen and Adi Shamir. API Changes * Extend the platform module with a util component that contains diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4d50497cde..e362abb787 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1276,6 +1276,27 @@ static void ssl_mac( mbedtls_md_context_t *md_ctx, #define SSL_SOME_MODES_USE_MAC #endif +/* The function below is only used in the Lucky 13 counter-measure in + * ssl_decrypt_buf(). These are the defines that guard the call site. */ +#if defined(SSL_SOME_MODES_USE_MAC) && \ + ( defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_2) ) +/* This function makes sure every byte in the memory region is accessed + * (in ascending addresses order) */ +static void ssl_read_memory( unsigned char *p, size_t len ) +{ + unsigned char acc = 0; + volatile unsigned char force; + + for( ; len != 0; p++, len-- ) + acc ^= *p; + + force = acc; + (void) force; +} +#endif /* SSL_SOME_MODES_USE_MAC && ( TLS1 || TLS1_1 || TLS1_2 ) */ + /* * Encryption/decryption functions */ @@ -2011,6 +2032,20 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) * linking an extra division function in some builds). */ size_t j, extra_run = 0; + + /* + * The next two sizes are the minimum and maximum values of + * in_msglen over all padlen values. + * + * They're independent of padlen, since we previously did + * in_msglen -= padlen. + * + * Note that max_len + maclen is never more than the buffer + * length, as we previously did in_msglen -= maclen too. + */ + const size_t max_len = ssl->in_msglen + padlen; + const size_t min_len = ( max_len > 256 ) ? max_len - 256 : 0; + switch( ssl->transform_in->ciphersuite_info->mac ) { #if defined(MBEDTLS_MD5_C) || defined(MBEDTLS_SHA1_C) || \ @@ -2042,12 +2077,25 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_len, 2 ); mbedtls_md_hmac_update( &ssl->transform_in->md_ctx_dec, ssl->in_msg, ssl->in_msglen ); + /* Make sure we access everything even when padlen > 0. This + * makes the synchronisation requirements for just-in-time + * Prime+Probe attacks much tighter and hopefully impractical. */ + ssl_read_memory( ssl->in_msg + ssl->in_msglen, padlen ); mbedtls_md_hmac_finish( &ssl->transform_in->md_ctx_dec, mac_expect ); - /* Call mbedtls_md_process at least once due to cache attacks */ + + /* Call mbedtls_md_process at least once due to cache attacks + * that observe whether md_process() was called of not */ for( j = 0; j < extra_run + 1; j++ ) mbedtls_md_process( &ssl->transform_in->md_ctx_dec, ssl->in_msg ); mbedtls_md_hmac_reset( &ssl->transform_in->md_ctx_dec ); + + /* Make sure we access all the memory that could contain the MAC, + * before we check it in the next code block. This makes the + * synchronisation requirements for just-in-time Prime+Probe + * attacks much tighter and hopefully impractical. */ + ssl_read_memory( ssl->in_msg + min_len, + max_len - min_len + ssl->transform_in->maclen ); } else #endif /* MBEDTLS_SSL_PROTO_TLS1 || MBEDTLS_SSL_PROTO_TLS1_1 || \ @@ -2057,9 +2105,11 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } +#if defined(MBEDTLS_SSL_DEBUG_ALL) MBEDTLS_SSL_DEBUG_BUF( 4, "expected mac", mac_expect, ssl->transform_in->maclen ); MBEDTLS_SSL_DEBUG_BUF( 4, "message mac", ssl->in_msg + ssl->in_msglen, ssl->transform_in->maclen ); +#endif if( mbedtls_ssl_safer_memcmp( ssl->in_msg + ssl->in_msglen, mac_expect, ssl->transform_in->maclen ) != 0 ) From cdb5cc570c348c0907a32e5a06b3d332f071e0fa Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 6 Jul 2018 11:45:38 +0100 Subject: [PATCH 0617/1100] tests: dhm: Rename Hallman to Hellman Fix typo of Diffie-Hallman to Diffie-Hellman. --- tests/suites/test_suite_dhm.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_dhm.data b/tests/suites/test_suite_dhm.data index e351ebdd41..734fd97ac1 100644 --- a/tests/suites/test_suite_dhm.data +++ b/tests/suites/test_suite_dhm.data @@ -19,10 +19,10 @@ dhm_do_dhm:10:"3":10:"5":MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED Diffie-Hellman zero modulus dhm_do_dhm:10:"0":10:"5":MBEDTLS_ERR_DHM_BAD_INPUT_DATA -Diffie-Hallman load parameters from file +Diffie-Hellman load parameters from file dhm_file:"data_files/dhparams.pem":"9e35f430443a09904f3a39a979797d070df53378e79c2438bef4e761f3c714553328589b041c809be1d6c6b5f1fc9f47d3a25443188253a992a56818b37ba9de5a40d362e56eff0be5417474c125c199272c8fe41dea733df6f662c92ae76556e755d10c64e6a50968f67fc6ea73d0dca8569be2ba204e23580d8bca2f4975b3":"02":128 -Diffie-Hallman load parameters from file +Diffie-Hellman load parameters from file dhm_file:"data_files/dh.optlen.pem":"b3126aeaf47153c7d67f403030b292b5bd5a6c9eae1c137af34087fce2a36a578d70c5c560ad2bdb924c4a4dbee20a1671be7103ce87defa76908936803dbeca60c33e1289c1a03ac2c6c4e49405e5902fa0596a1cbaa895cc402d5213ed4a5f1f5ba8b5e1ed3da951a4c475afeb0ca660b7368c38c8e809f382d96ae19e60dc984e61cb42b5dfd723322acf327f9e413cda6400c15c5b2ea1fa34405d83982fba40e6d852da3d91019bf23511314254dc211a90833e5b1798ee52a78198c555644729ad92f060367c74ded37704adfc273a4a33fec821bd2ebd3bc051730e97a4dd14d2b766062592f5eec09d16bb50efebf2cc00dd3e0e3418e60ec84870f7":"800abfe7dc667aa17bcd7c04614bc221a65482ccc04b604602b0e131908a938ea11b48dc515dab7abcbb1e0c7fd66511edc0d86551b7632496e03df94357e1c4ea07a7ce1e381a2fcafdff5f5bf00df828806020e875c00926e4d011f88477a1b01927d73813cad4847c6396b9244621be2b00b63c659253318413443cd244215cd7fd4cbe796e82c6cf70f89cc0c528fb8e344809b31876e7ef739d5160d095c9684188b0c8755c7a468d47f56d6db9ea012924ecb0556fb71312a8d7c93bb2898ea08ee54eeb594548285f06a973cbbe2a0cb02e90f323fe045521f34c68354a6d3e95dbfff1eb64692edc0a44f3d3e408d0e479a541e779a6054259e2d854":256 Diffie-Hellman selftest From a61d123e0eb38509de08e2b32b696860f02fd4c0 Mon Sep 17 00:00:00 2001 From: Brian J Murray Date: Fri, 6 Jul 2018 10:02:39 -0700 Subject: [PATCH 0618/1100] Minor changes to comments in hkdf.c --- library/hkdf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/library/hkdf.c b/library/hkdf.c index d2e55e869b..41d7d87641 100644 --- a/library/hkdf.c +++ b/library/hkdf.c @@ -114,6 +114,10 @@ int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, n++; } + /* + * Per RFC 5869 Section 2.3, okm_len must not exceed + * 255 times the hash length + */ if( n > 255 ) { return( MBEDTLS_ERR_HKDF_BAD_INPUT_DATA ); @@ -126,7 +130,10 @@ int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, goto exit; } - /* RFC 5869 Section 2.3. */ + /* + * Compute T = T(1) | T(2) | T(3) | ... | T(N) + * Where T(N) is defined in RFC 5869 Section 2.3 + */ for( i = 1; i <= n; i++ ) { size_t num_to_copy; @@ -150,7 +157,7 @@ int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, goto exit; } - /* The constant concatenated to the end of each t(n) is a single octet. + /* The constant concatenated to the end of each T(n) is a single octet. * */ ret = mbedtls_md_hmac_update( &ctx, &c, 1 ); if( ret != 0 ) From a5fbfd7cd89738938ae6982d79956a6cd66d7d02 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Fri, 6 Jul 2018 14:42:22 +0200 Subject: [PATCH 0619/1100] Enable snprintf on FreeBSD --- library/x509.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/x509.c b/library/x509.c index b47599b0d2..58d6a89112 100644 --- a/library/x509.c +++ b/library/x509.c @@ -31,7 +31,7 @@ /* Ensure gmtime_r is available even with -std=c99; must be included before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ -#define _XOPEN_SOURCE 500 +#define _POSIX_C_SOURCE 200112L #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" From 6a25cfae2a7bf34f206232168942bd2db0886742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 10 Jul 2018 11:15:36 +0200 Subject: [PATCH 0620/1100] Avoid debug message that might leak length The length to the debug message could conceivably leak through the time it takes to print it, and that length would in turn reveal whether padding was correct or not. --- library/ssl_tls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e362abb787..d66c9cfcc2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1972,8 +1972,10 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } +#if defined(MBEDTLS_SSL_DEBUG_ALL) MBEDTLS_SSL_DEBUG_BUF( 4, "raw buffer after decryption", ssl->in_msg, ssl->in_msglen ); +#endif /* * Authenticate if not done yet. From 6331cb060726bcab7df4f3235e6a1fa6d6eaf706 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 10 Jul 2018 11:48:42 +0100 Subject: [PATCH 0621/1100] Fix some whitespace issues in ChangeLog and CMakeLists.txt Stray tab in library/CMakeLists.txt and incorrect formatting in ChangeLog. --- ChangeLog | 4 ++-- library/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 44533d2aed..a1d7c8b06e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,8 +4,8 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time - authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by - Daniel King (#485). + authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by + Daniel King (#485). Bugfix * Fix the key_app_writer example which was writing a leading zero byte which diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 28ce0229b5..4aba062bcb 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -109,7 +109,7 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif() if(HAIKU) - set(libs ${libs} network) + set(libs ${libs} network) endif(HAIKU) if(USE_PKCS11_HELPER_LIBRARY) From 231d7e56691e1962f6950126c5ab208e4ce9f055 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 10 Jul 2018 11:56:19 +0100 Subject: [PATCH 0622/1100] Add ChangeLog entry for PR #1567. ChangeLog entry for platform support for the Haiku OS. PR #1567. --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index a1d7c8b06e..9195fac90a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,8 @@ Features * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by Daniel King (#485). + * Add platform support for the Haiku OS. (https://www.haiku-os.org). + Contributed by Augustin Cavalier. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which From 00af447ba814c9a6323c775f455034fdd9be62af Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 10 Jul 2018 15:35:43 +0100 Subject: [PATCH 0623/1100] Add ChangeLog entry for PR #536 --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 77bce4ffee..305eef60b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,11 @@ Features Daniel King (#485). * Add platform support for the Haiku OS. (https://www.haiku-os.org). Contributed by Augustin Cavalier. + * Make the receive and transmit buffers independent sizes, for situations + where the outgoing buffer can be fixed at a smaller size than the incoming + buffer, which can save some RAM. If buffer lengths are kept equal, there + is no functional difference. Contributed by Angus Gratton, and also + independently contributed again by Paul Sokolovsky. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which From 604ccc660847d5ba59db420f3ca2aad6bd71402e Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 10 Jul 2018 15:55:52 +0200 Subject: [PATCH 0624/1100] Add ChangeLog entry --- ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 027a97174e..8c2d90d4f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS 2.xx.xx branch released xxxx-xx-xx + +Changes + * Close a test gap in (D)TLS between the client side and the server side: + test the handling of large packets and small packets on the client side + in the same way as on the server side. + = mbed TLS 2.11.0 branch released 2018-06-18 Features From 4b9a3addb6c9a3d4f6b01d3a71f08b3b2b392dba Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 10 Jul 2018 20:18:29 +0100 Subject: [PATCH 0625/1100] Disable use of the i386 assembly for option -O0 We don't compile in the assembly code if compiler optimisations are disabled as the number of registers used in the assembly code doesn't work with the -O0 option. Also anyone select -O0 probably doesn't want to compile in the assembly code anyway. --- include/mbedtls/bn_mul.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index e049260430..438aa8cea1 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -49,7 +49,14 @@ /* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ #if defined(__GNUC__) && \ ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) -#if defined(__i386__) + +/* + * Disable use of the i386 assembly code below if option -O0, to disable all + * compiler optimisations, is passed, detected with __OPTIMIZE__ + * This is done as the number of registers used in the assembly code doesn't + * work with the -O0 option. + */ +#if defined(__i386__) && !defined(__OPTIMIZE__) #define MULADDC_INIT \ asm( \ From 8744a023577e8d53fbc2aee9e3620b47b6d1d8ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 11 Jul 2018 12:30:40 +0200 Subject: [PATCH 0626/1100] Clarify a few comments The "+" sign could be misinterpreted as addition. --- library/ssl_tls.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index c6e5f97025..9f323c0a79 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1442,7 +1442,7 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) */ if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) { - /* GCM and CCM: concatenate fixed + explicit (=seqnum) */ + /* GCM and CCM: fixed || explicit (=seqnum) */ memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); memcpy( iv + transform->fixed_ivlen, ssl->out_ctr, 8 ); memcpy( ssl->out_iv, ssl->out_ctr, 8 ); @@ -1450,7 +1450,7 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) } else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) { - /* ChachaPoly: XOR fixed + sequence number */ + /* ChachaPoly: fixed XOR sequence number */ unsigned char i; memcpy( iv, transform->iv_enc, transform->fixed_ivlen ); @@ -1745,14 +1745,14 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) */ if( transform->ivlen == 12 && transform->fixed_ivlen == 4 ) { - /* GCM and CCM: concatenate fixed + explicit (transmitted) */ + /* GCM and CCM: fixed || explicit (transmitted) */ memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); memcpy( iv + transform->fixed_ivlen, ssl->in_iv, 8 ); } else if( transform->ivlen == 12 && transform->fixed_ivlen == 12 ) { - /* ChachaPoly: XOR fixed + sequence number */ + /* ChachaPoly: fixed XOR sequence number */ unsigned char i; memcpy( iv, transform->iv_dec, transform->fixed_ivlen ); From 0e2c07e83e6d2b5b82d00b85483a1dbc11c1ca56 Mon Sep 17 00:00:00 2001 From: Dawid Drozd Date: Wed, 11 Jul 2018 15:16:53 +0200 Subject: [PATCH 0627/1100] Remove unnecessary mark as unused #1098 `ret` is used always at line 1305 in statement: `if( ( ret = pk_parse_key_pkcs8_unencrypted_der( pk, key, keylen ) ) == 0 )` --- library/pkparse.c | 1 - 1 file changed, 1 deletion(-) diff --git a/library/pkparse.c b/library/pkparse.c index ccb7f5409d..d6ac987e23 100644 --- a/library/pkparse.c +++ b/library/pkparse.c @@ -1261,7 +1261,6 @@ int mbedtls_pk_parse_key( mbedtls_pk_context *pk, return( ret ); #endif /* MBEDTLS_PKCS12_C || MBEDTLS_PKCS5_C */ #else - ((void) ret); ((void) pwd); ((void) pwdlen); #endif /* MBEDTLS_PEM_PARSE_C */ From a47911cb70d1ff82f43bf7f3497dcda2340362f9 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Wed, 4 Jul 2018 17:41:58 +0200 Subject: [PATCH 0628/1100] Fix memory leak in ssl_setup --- library/ssl_tls.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 185f35ad18..f4a34b17ce 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5671,27 +5671,30 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl ) int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { - int ret; + int err; + const size_t len = MBEDTLS_SSL_BUFFER_LEN; ssl->conf = conf; /* * Prepare base structures */ + ssl->out_buf = NULL; /* Set to NULL in case of an error condition */ + ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN ); if( ssl->in_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + err = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto error; } ssl->out_buf = mbedtls_calloc( 1, MBEDTLS_SSL_OUT_BUFFER_LEN ); if( ssl->out_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) ); - mbedtls_free( ssl->in_buf ); - ssl->in_buf = NULL; - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + err = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto error; } #if defined(MBEDTLS_SSL_PROTO_DTLS) @@ -5725,10 +5728,33 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, ssl->in_msg = ssl->in_buf + 13; } - if( ( ret = ssl_handshake_init( ssl ) ) != 0 ) - return( ret ); + if( ( err = ssl_handshake_init( ssl ) ) != 0 ) + goto error; return( 0 ); + +error: + mbedtls_free( ssl->in_buf ); + mbedtls_free( ssl->out_buf ); + + ssl->conf = NULL; + + ssl->in_buf = NULL; + ssl->out_buf = NULL; + + ssl->in_hdr = NULL; + ssl->in_ctr = NULL; + ssl->in_len = NULL; + ssl->in_iv = NULL; + ssl->in_msg = NULL; + + ssl->out_hdr = NULL; + ssl->out_ctr = NULL; + ssl->out_len = NULL; + ssl->out_iv = NULL; + ssl->out_msg = NULL; + + return( err ); } /* From 21feae58cbc66c675e7ccf40ae1037ec7111cbd1 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Mon, 9 Jul 2018 14:42:35 +0200 Subject: [PATCH 0629/1100] Update change log --- ChangeLog | 5 +++++ library/ssl_tls.c | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 305eef60b2..115f56ec86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,11 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Security + * Fix a potential memory leak in mbedtls_ssl_setup( ) function. An allocation + failure could leave an unreleased buffer. A handshake init failure would + lead to leaving two unreleased buffers. + Features * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed by diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f4a34b17ce..661263abdf 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5672,7 +5672,6 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { int err; - const size_t len = MBEDTLS_SSL_BUFFER_LEN; ssl->conf = conf; From 830ce11ebaad029b06d06fcad1e39a67d1cd1b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 11 Jul 2018 18:27:08 +0200 Subject: [PATCH 0630/1100] Clarify attack conditions in the ChangeLog. Referring to the previous entry could imply that the current one was limited to SHA-384 too, which it isn't. --- ChangeLog | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e6a5368e6f..e4a05c79f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,10 +19,13 @@ Security * Fix a vulnerability in TLS ciphersuites based on CBC, in (D)TLS 1.0 to 1.2, that allowed a local attacker, able to execute code on the local machine as well as manipulate network packets, to partially recover the - plaintext of messages under some conditions (see previous entry) by using - a cache attack targetting an internal MD/SHA buffer. Connections using - GCM or CCM instead of CBC or using Encrypt-then-Mac (RFC 7366) were not - affected. Found by Kenny Paterson, Eyal Ronen and Adi Shamir. + plaintext of messages under some conditions by using a cache attack + targetting an internal MD/SHA buffer. With TLS or if + mbedtls_ssl_conf_dtls_badmac_limit() was used, the attack only worked if + the same secret (for example a HTTP Cookie) has been repeatedly sent over + connections manipulated by the attacker. Connections using GCM or CCM + instead of CBC or using Encrypt-then-Mac (RFC 7366) were not affected. + Found by Kenny Paterson, Eyal Ronen and Adi Shamir. * Add a counter-measure against a vulnerability in TLS ciphersuites based on CBC, in (D)TLS 1.0 to 1.2, that allowed a local attacker, able to execute code on the local machine as well as manipulate network packets, From 6ca436a4576c6b3a02c05fbfaefd159fd999daf2 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Mon, 16 Jul 2018 12:20:10 +0200 Subject: [PATCH 0631/1100] Update change log --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 9ee82c6853..6aeacf1289 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,10 @@ Security a non DER-compliant certificate correctly signed by a trusted CA, or a trusted CA with a non DER-compliant certificate. Found by luocm on GitHub. Fixes #825. + * Fix an issue in the X.509 module which could lead to a buffer overread + during certificate extensions parsing. In case of receiving malformed + input (extensions length field equal to 0), an illegal read of one byte + beyond the input buffer is made. Found and analyzed by Nathan Crandall. Features * Add option MBEDTLS_AES_FEWER_TABLES to dynamically compute 3/4 of the AES tables From 00115034ea00d8df8d3c009c4e76e98cb1dd893d Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 17 Jul 2018 11:21:50 +0300 Subject: [PATCH 0632/1100] Repharse comments Rephrase comments to clarify them. --- include/mbedtls/ssl.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 4c9f9e8394..8b6e0491e8 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2746,10 +2746,16 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss * MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or * arguments are otherwise invalid. * - * \note Only the server certificate is copied, and not the chain - * but this is not a problem because the result of the chain - * verification is stored in `verify_result` and can be checked - * with \c mbedtls_ssl_get_verify_result(). + * \note Only the server certificate is copied, and not the full chain, + * so you should not attempt to validate the certificate again + * by calling \c mbedtls_x509_crt_verify() on it. + * Instead, you should use the results from the verification + * in the original handshake by calling \c mbedtls_ssl_get_verify_result() + * after loading the session again into a new SSL context + * using \c mbedtls_ssl_set_session(). + * + * \note Once the session object is not needed anymore, you should + * free it by calling \c mbedtls_ssl_session_free(). * * \sa mbedtls_ssl_set_session() */ @@ -3027,6 +3033,9 @@ void mbedtls_ssl_session_init( mbedtls_ssl_session *session ); * \brief Free referenced items in an SSL session including the * peer certificate and clear memory * + * \note A session object can be freed even if the SSL context + * that was used to retrieve the session is still in use. + * * \param session SSL session */ void mbedtls_ssl_session_free( mbedtls_ssl_session *session ); From ca33cafab0e3f51c1ab2323020c0f2c80d7705f9 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 18 Jul 2018 17:52:14 +0100 Subject: [PATCH 0633/1100] Add definition of purpose and use of networking module The purpose of the networking module can sometimes be misunderstood. This adds a definition and explanation of what the networking module is and what it can be used for. --- include/mbedtls/net_sockets.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/net_sockets.h b/include/mbedtls/net_sockets.h index 0f9b31ebcb..dd7dc67334 100644 --- a/include/mbedtls/net_sockets.h +++ b/include/mbedtls/net_sockets.h @@ -1,7 +1,22 @@ /** * \file net_sockets.h * - * \brief Network communication functions + * \brief Network sockets abstraction layer to integrate Mbed TLS into a + * BSD-style sockets API. + * + * The network sockets module provides an example integration of the + * Mbed TLS library into a BSD sockets implementation. The module is + * intended to be both an example of how Mbed TLS can be integrated + * into a networking stack, and also act as Mbed TLS's integration on + * the supported platforms. + * + * The module is intended only for the use of the Mbed TLS library and + * is not intended to be used by third party application software. + * + * The supported platforms are as follows: + * * Microsoft Windows and Windows CE + * * POSIX/Unix platforms including Linux, OS X + * */ /* * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved From 4f37bcabf959010bb5bacd0172b518de3b39507e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 19 Jul 2018 19:52:32 +0100 Subject: [PATCH 0634/1100] Fix ChangeLog entry for issue #1663 The ChangeLog entry was under the wrong version, and under Changes, not BugFixes. --- ChangeLog | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3e1cd45c14..b31fd45de9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -58,6 +58,8 @@ Bugfix * Fix compilation warnings with IAR toolchain, on 32 bit platform. Reported by rahmanih in #683 * Fix braces in mbedtls_memory_buffer_alloc_status(). Found by sbranden, #552. + * Added length checks to some TLS parsing functions. Found and fixed by + Philippe Antoine from Catena cyber. #1663. Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. @@ -90,9 +92,6 @@ Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. * Fix redundant declaration of mbedtls_ssl_list_ciphersuites. Raised by TrinityTonic. #1359. - * Adds of lengths checks in different functions (not a security issue as - original buffer is overgrown) thanks to Philippe Antoine from Catena - cyber. #1663. = mbed TLS 2.9.0 branch released 2018-04-30 From 7c1258dc783933b60a6aea8b0144e92a1c820951 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 20 Jul 2018 16:42:14 +0100 Subject: [PATCH 0635/1100] all.sh: Return error on keep-going failure When calling all.sh from a script and using "--keep-going", errors were sometimes missed due to all.sh always returning 0 "success" return code. Return 1 if there is any failure encountered during a "keep-going" run. --- tests/scripts/all.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 1e1cf35972..b8cca1c6a9 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -339,6 +339,7 @@ $text" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "${start_red}FAILED: $failure_count${end_color}$failure_summary" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + exit 1 elif [ -z "${1-}" ]; then echo "SUCCESS :)" fi From 7870ec12c468ca65511b9865ce85200f6e77063e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 20 Jul 2018 19:39:10 +0100 Subject: [PATCH 0636/1100] Add API/ABI section to CONTRIBUTING.md Added a section on API/ABI compatibility on the development branch to the CONTRIBUTING.md guidelines. Also added to the testing section, refined the LTS section and changed some formatting for consistency. --- CONTRIBUTING.md | 62 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2257a615d3..e79feaa3c4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,11 +5,13 @@ We gratefully accept bug reports and contributions from the community. There are - As with any open source project, contributions will be reviewed by the project team and community and may need some modifications to be accepted. - The contribution should not break API or ABI, unless there is a real justification for that. If there is an API change, the contribution, if accepted, will be merged only when there will be a major release. + Contributor License Agreement (CLA) ----------------------------------- - All contributions, whether large or small, require a Contributor's License Agreement (CLA) to be accepted. This is because source code can possibly fall under copyright law and we need your consent to share in the ownership of the copyright. - To accept the Contributor’s License Agreement (CLA), individual contributors can do this by creating an Mbed account and [accepting the online agreement here with a click through](https://developer.mbed.org/contributor_agreement/). Alternatively, for contributions from corporations, or those that do not wish to create an Mbed account, a slightly different agreement can be found [here](https://www.mbed.com/en/about-mbed/contributor-license-agreements/). This agreement should be signed and returned to Arm as described in the instructions given. + Coding Standards ---------------- - We would ask that contributions conform to [our coding standards](https://tls.mbed.org/kb/development/mbedtls-coding-standards), and that contributions are fully tested before submission, as mentioned in the [Tests](#tests) and [Continuous Integration](#continuous-integration-tests) sections. @@ -17,6 +19,7 @@ Coding Standards - The code should be written in a portable generic way, that will benefit the whole community, and not only your own needs. - The code should be secure, and will be reviewed from a security point of view as well. + Making a Contribution --------------------- 1. [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://tls.mbed.org/discussions) around a feature idea or a bug. @@ -26,41 +29,74 @@ Making a Contribution 1. For quick merging, the contribution should be short, and concentrated on a single feature or topic. The larger the contribution is, the longer it would take to review it and merge it. 1. Mbed TLS is released under the Apache license, and as such, all the added files should include the Apache license header. + +API/ABI Compatibility +--------------------- + +API compatibility is maintained between versions of Mbed TLS on the main development branch. This is to ensure that when users of the library upgrade to a newer version of the library, there will be no API changes that may cause their code to fail to compile and it will not be necessary for them to make any changes to their own code. + +Where changes to the interface are necessary, functions in the public interface which need to be removed or replaced will be marked as 'deprecated', with the preprocessor symbols `MBEDTLS_DEPRECATED_WARNING` and `MBEDTLS_DEPRECATED_REMOVED`. Therefore when a build is made with those symbols defined, a compiler warning will be generated to warn a user that the function will be removed at some point in the future. + +It is also desirable to preserve ABI compatibility on the main development branch, and generally ABI changes need to be justifiable by enhancement and new features, to extend the interface. This is to again minimise the impact on users upgrading to newer versions of the library. + +As a consequence, this means there can be no change to the definition of functions in the public API, nor removal of elements in structs that make up part of the public interface. Instead if a function needs to be changed, a new function needs to be created alongside it, with a new name, and whatever change is necessary, such as a new parameter or the addition of a return value. + +Periodically, the library will remove deprecated functions from the library which will be a breaking change in the API, but such changes will be made only in a planned, structured wat that gives sufficient notice to users of the library. + + Long Term Support Branches -------------------------- -Mbed TLS maintains several LTS (Long Term Support) branches, which are maintained continuously for a given period. The LTS branches are provided to allow users of the library to have a maintained version of the library which contains security fixes and fixes for other defects, without encountering any API changes or requiring changes in their own code. To allow users to take advantage of the LTS branches, these branches maintain backwards compatibility for both the public API and ABI. +Mbed TLS maintains several LTS (Long Term Support) branches, which are maintained continuously for a given period. The LTS branches are provided to allow users of the library to have a maintained, stable version of the library which contains only security fixes and fixes for other defects, without encountering additional features or API extensions which may introduce issues or change the code size or RAM usage, which can be significant considerations on some platforms. To allow users to take advantage of the LTS branches, these branches maintain backwards compatibility for both the public API and ABI. When backporting to these branches please observe the following rules: - 1. Generally, all changes to the library which change the API cannot be backported. - 2. All bug fixes must be backported to the LTS branches if they correct a defect in an LTS branch. If a bug fix introduces a change to the API such as a new function, the fix should be reworked to avoid the API change. API changes without very strong justification are unlikely to be accepted. - 3. If a contribution is a new feature or enhancement, no backporting is required. Exceptions to this may be addtional test cases or quality improvements such as changes to scripts. + 1. Any change to the library which changes the API or ABI cannot be backported. -It would be highly appreciated if contributions are backported to LTS branches in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development). + 2. All bug fixes that correct a defect that is also present in an LTS branch must be backported to that LTS branch. If a bug fix introduces a change to the API such as a new function, the fix should be reworked to avoid the API change. API changes without very strong justification are unlikely to be accepted. + + 3. If a contribution is a new feature or enhancement, no backporting is required. Exceptions to this may be addtional test cases or quality improvements such as changes to build or test scripts. + +It would be highly appreciated if contributions are backported to LTS branches +in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development) by contributors. Currently maintained LTS branches are: 1. [mbedtls-2.1](https://github.com/ARMmbed/mbedtls/tree/mbedtls-2.1) -1. [mbedtls-2.7](https://github.com/ARMmbed/mbedtls/tree/mbedtls-2.7) + +2. [mbedtls-2.7](https://github.com/ARMmbed/mbedtls/tree/mbedtls-2.7) + Tests ----- -As mentioned, tests that show the correctness of the feature or bug fix should be added to the pull request, if no such tests exist. -Mbed TLS includes an elaborate test suite in `tests/` that initially requires Perl to generate the tests files (e.g. `test_suite_mpi.c`). These files are generated from a `function file` (e.g. `suites/test_suite_mpi.function`) and a `data file` (e.g. `suites/test_suite_mpi.data`). The function file contains the test functions. The data file contains the test cases, specified as parameters that will be passed to the test function. +As mentioned, tests that show the correctness of the feature or bug fix should be added to the pull request, if no such tests exist. + +Mbed TLS includes a comprehensive set of test suites in the `tests/` directory that are dynamically generated to produce the actual test source files (e.g. `test_suite_mpi.c`). These files are generated from a `function file` (e.g. `suites/test_suite_mpi.function`) and a `data file` (e.g. `suites/test_suite_mpi.data`). The function file contains the test functions. The data file contains the test cases, specified as parameters that will be passed to the test function. + +A test script `tests/scripts/basic-build-test.sh` is available to show test +coverage of the library. New code contributions should provide a similar level +of code coverage to that which already exists for the library. Sample applications, if needed, should be modified as well. + Continuous Integration Tests ---------------------------- -Once a PR has been made, the Continuous Integration (CI) tests are triggered and run. You should follow the result of the CI tests, and fix failures. +Once a PR has been made, the Continuous Integration (CI) tests are triggered and run. You should follow the result of the CI tests, and fix failures. + It is advised to enable the [githooks scripts](https://github.com/ARMmbed/mbedtls/tree/development/tests/git-scripts) prior to pushing your changes, for catching some of the issues as early as possible. + Documentation ------------- Mbed TLS should be well documented. If documentation is needed, speak out! 1. All interfaces should be documented through Doxygen. New APIs should introduce Doxygen documentation. -1. Complex parts in the code should include comments. -1. If needed, a Readme file is advised. -1. If a [Knowledge Base (KB)](https://tls.mbed.org/kb) article should be added, write this as a comment in the PR description. -1. A [ChangeLog](https://github.com/ARMmbed/mbedtls/blob/development/ChangeLog) entry should be added for this contribution. + +2. Complex parts in the code should include comments. + +3. If needed, a Readme file is advised. + +4. If a [Knowledge Base (KB)](https://tls.mbed.org/kb) article should be added, write this as a comment in the PR description. + +5. A [ChangeLog](https://github.com/ARMmbed/mbedtls/blob/development/ChangeLog) entry should be added for this contribution. + From b512bc1d29674a67bddb3ecec4a557e271ab3253 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 19 Jun 2018 15:57:50 +1000 Subject: [PATCH 0637/1100] CBC mode: Allow zero-length message fragments (100% padding) Fixes https://github.com/ARMmbed/mbedtls/issues/1632 --- ChangeLog | 5 +++++ library/ssl_tls.c | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7e6288ee0..3b45660645 100644 --- a/ChangeLog +++ b/ChangeLog @@ -34,6 +34,11 @@ Bugfix i386 with SSE2. Found by László Langó. Fixes #1550 * Fix namespacing in header files. Remove the `mbedtls` namespacing in the `#include` in the header files. Resolves #857 + * Fix decryption of zero length messages (all padding) in some circumstances: + DTLS 1.0 and 1.2, and CBC ciphersuites using encrypt-then-MAC. Most often + seen when communicating with OpenSSL using TLS 1.0. Reported by @kFYatek + (#1632) and by Conor Murphy on the forum. Fix contributed by Espressif + Systems. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 1c35f0dec7..a82ef33572 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1979,28 +1979,28 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) * and fake check up to 256 bytes of padding */ size_t pad_count = 0, real_count = 1; - size_t padding_idx = ssl->in_msglen - padlen - 1; + size_t padding_idx = ssl->in_msglen - padlen; size_t i; /* * Padding is guaranteed to be incorrect if: - * 1. padlen >= ssl->in_msglen + * 1. padlen > ssl->in_msglen * - * 2. padding_idx >= MBEDTLS_SSL_IN_CONTENT_LEN + + * 2. padding_idx > MBEDTLS_SSL_IN_CONTENT_LEN + * ssl->transform_in->maclen * * In both cases we reset padding_idx to a safe value (0) to * prevent out-of-buffer reads. */ - correct &= ( ssl->in_msglen >= padlen + 1 ); - correct &= ( padding_idx < MBEDTLS_SSL_IN_CONTENT_LEN + + correct &= ( padlen <= ssl->in_msglen ); + correct &= ( padding_idx <= MBEDTLS_SSL_IN_CONTENT_LEN + ssl->transform_in->maclen ); padding_idx *= correct; - for( i = 1; i <= 256; i++ ) + for( i = 0; i < 256; i++ ) { - real_count &= ( i <= padlen ); + real_count &= ( i < padlen ); pad_count += real_count * ( ssl->in_msg[padding_idx + i] == padlen - 1 ); } From 34817929ea8716ff212b71b5a59e2307b4696321 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 19 Jun 2018 15:58:22 +1000 Subject: [PATCH 0638/1100] TLSv1.2: Treat zero-length fragments as invalid, unless they are application data TLS v1.2 explicitly disallows other kinds of zero length fragments (earlier standards don't mention zero-length fragments at all). --- library/ssl_tls.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index a82ef33572..b7c8881fb4 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2133,6 +2133,16 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) if( ssl->in_msglen == 0 ) { +#if defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_3 + && ssl->in_msgtype != MBEDTLS_SSL_MSG_APPLICATION_DATA ) + { + /* TLS v1.2 explicitly disallows zero-length messages which are not application data */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid zero-length message type: %d", ssl->in_msgtype ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } +#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */ + ssl->nb_zero++; /* From 1a7a17e5484b3f634c0341905f474ac148b9adfc Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 20 Jun 2018 15:43:50 +1000 Subject: [PATCH 0639/1100] Check for invalid short Alert messages (Short Change Cipher Spec & Handshake messages are already checked for.) --- ChangeLog | 2 ++ library/ssl_tls.c | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/ChangeLog b/ChangeLog index 3b45660645..98ebd2d652 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,6 +39,8 @@ Bugfix seen when communicating with OpenSSL using TLS 1.0. Reported by @kFYatek (#1632) and by Conor Murphy on the forum. Fix contributed by Espressif Systems. + * Fail when receiving a TLS alert message with an invalid length, or invalid + zero-length messages when using TLS 1.2. Contributed by Espressif Systems. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b7c8881fb4..f1856e278e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4187,6 +4187,16 @@ int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ) if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) { + if( ssl->in_msglen != 2 ) + { + /* Note: Standard allows for more than one 2 byte alert + to be packed in a single message, but Mbed TLS doesn't + currently support this. */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid alert message, len: %d", + ssl->in_msglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + MBEDTLS_SSL_DEBUG_MSG( 2, ( "got an alert message, type: [%d:%d]", ssl->in_msg[0], ssl->in_msg[1] ) ); From ce6fbac247b3c44b4138fcd7ec3c36162371676e Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 4 Jul 2018 09:29:34 +0100 Subject: [PATCH 0640/1100] Fix ssl_client2 to send 0-length app data --- programs/ssl/ssl_client2.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 5d8969dbc7..0dd9e3f7b1 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -246,8 +246,12 @@ int main( void ) " server_addr=%%s default: given by name\n" \ " server_port=%%d default: 4433\n" \ " request_page=%%s default: \".\"\n" \ - " request_size=%%d default: about 34 (basic request)\n" \ - " (minimum: 0, max: " MAX_REQUEST_SIZE_STR " )\n" \ + " request_size=%%d default: about 34 (basic request)\n" \ + " (minimum: 0, max: " MAX_REQUEST_SIZE_STR ")\n" \ + " If 0, in the first exchange only an empty\n" \ + " application data message is sent followed by\n" \ + " a second non-empty message before attempting\n" \ + " to read a response from the server\n" \ " debug_level=%%d default: 0 (disabled)\n" \ " nbio=%%d default: 0 (blocking I/O)\n" \ " options: 1 (non-blocking), 2 (added delays)\n" \ @@ -1663,10 +1667,13 @@ send_request: if( opt.transport == MBEDTLS_SSL_TRANSPORT_STREAM ) { - for( written = 0, frags = 0; written < len; written += ret, frags++ ) + written = 0; + frags = 0; + + do { while( ( ret = mbedtls_ssl_write( &ssl, buf + written, - len - written ) ) <= 0 ) + len - written ) ) < 0 ) { if( ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE ) @@ -1686,7 +1693,11 @@ send_request: #endif } } + + frags++; + written += ret; } + while( written < len ); } else /* Not stream, so datagram */ { @@ -1730,6 +1741,13 @@ send_request: mbedtls_printf( " %d bytes written in %d fragments\n\n%s\n", written, frags, (char *) buf ); + /* Send a non-empty request if request_size == 0 */ + if ( len == 0 ) + { + opt.request_size = DFL_REQUEST_SIZE; + goto send_request; + } + /* * 7. Read the HTTP response */ From 81f0633c165e8e60abff58a44d97b5b9f18fc0eb Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 4 Jul 2018 10:01:39 +0100 Subject: [PATCH 0641/1100] Add ChangeLog entry for empty app data fix --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 98ebd2d652..54d914573a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -41,6 +41,9 @@ Bugfix Systems. * Fail when receiving a TLS alert message with an invalid length, or invalid zero-length messages when using TLS 1.2. Contributed by Espressif Systems. + * Fix ssl_client2 example to send application data with 0-length content + when the request_size argument is set to 0 as stated in the documentation. + Fixes #1833. Changes * Change the shebang line in Perl scripts to look up perl in the PATH. From 4c761fab7f990a541cd8ab6d8948be3d04986f80 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 10 Jul 2018 20:08:04 +0100 Subject: [PATCH 0642/1100] Add test for empty app data records to ssl-opt.sh --- tests/ssl-opt.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 0f6153565c..a1c7d04904 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -1170,6 +1170,38 @@ run_test "Fallback SCSV: enabled, max version, openssl client" \ -s "received FALLBACK_SCSV" \ -S "inapropriate fallback" +# Test sending and receiving empty application data records + +run_test "Encrypt then MAC: empty application data record" \ + "$P_SRV auth_mode=none debug_level=4 etm=1" \ + "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \ + -s "dumping 'input payload after decrypt' (0 bytes)" \ + -c "0 bytes written in 1 fragments" + +run_test "Default, no Encrypt then MAC: empty application data record" \ + "$P_SRV auth_mode=none debug_level=4 etm=0" \ + "$P_CLI auth_mode=none etm=0 request_size=0" \ + 0 \ + -s "dumping 'input payload after decrypt' (0 bytes)" \ + -c "0 bytes written in 1 fragments" + +run_test "Encrypt then MAC, DTLS: empty application data record" \ + "$P_SRV auth_mode=none debug_level=4 etm=1 dtls=1" \ + "$P_CLI auth_mode=none etm=1 request_size=0 force_ciphersuite=TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA dtls=1" \ + 0 \ + -S "0000: 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f 0f" \ + -s "dumping 'input payload after decrypt' (0 bytes)" \ + -c "0 bytes written in 1 fragments" + +run_test "Default, no Encrypt then MAC, DTLS: empty application data record" \ + "$P_SRV auth_mode=none debug_level=4 etm=0 dtls=1" \ + "$P_CLI auth_mode=none etm=0 request_size=0 dtls=1" \ + 0 \ + -s "dumping 'input payload after decrypt' (0 bytes)" \ + -c "0 bytes written in 1 fragments" + ## ClientHello generated with ## "openssl s_client -CAfile tests/data_files/test-ca.crt -tls1_1 -connect localhost:4433 -cipher ..." ## then manually twiddling the ciphersuite list. From ccbd46435f455488f55b1fad124b0e25b7cf50cb Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 22 Jul 2018 14:43:39 +0100 Subject: [PATCH 0643/1100] Increase the memory buffer size for ssl_server2.c Newer features in the library have increased the overall RAM usage of the library, when all features are enabled. ssl_server2.c, with all features enabled was running out of memory for the ssl-opt.sh test 'Authentication: client max_int chain, server required'. This commit increases the memory buffer allocation for ssl_server2.c to allow the test to work with all features enabled. --- programs/ssl/ssl_server2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 3a413ad5e5..26f023d7f0 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -1212,7 +1212,7 @@ int main( int argc, char *argv[] ) const char *alpn_list[ALPN_LIST_SIZE]; #endif #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - unsigned char alloc_buf[100000]; + unsigned char alloc_buf[120000]; #endif int i; From 7a6da6ed5e3a3e139e8eec2bd7e1d60dee4cd55e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 27 Jun 2018 21:52:54 +0100 Subject: [PATCH 0644/1100] Expand i386 all.sh tests to full config ASan builds The i386 test builds were only building the default configuration and had no address sanitisation. This commit expands the test configuration to the full configuration in all.sh and builds with ASan for when the test suites are executed. --- tests/scripts/all.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 1e6fd8cd0e..034ca7deed 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -750,15 +750,19 @@ if uname -a | grep -F Linux >/dev/null; then fi if uname -a | grep -F x86_64 >/dev/null; then - msg "build: i386, make, gcc" # ~ 30s + msg "build: i386, make, gcc (ASan build)" # ~ 30s cleanup - make CC=gcc CFLAGS='-Werror -Wall -Wextra -m32' + cp "$CONFIG_H" "$CONFIG_BAK" + scripts/config.pl full + make CC=gcc CFLAGS='-Werror -Wall -Wextra -m32 -fsanitize=address' - msg "test: i386, make, gcc" + msg "test: i386, make, gcc (ASan build)" make test msg "build: 64-bit ILP32, make, gcc" # ~ 30s cleanup + cp "$CONFIG_H" "$CONFIG_BAK" + scripts/config.pl full make CC=gcc CFLAGS='-Werror -Wall -Wextra -mx32' msg "test: 64-bit ILP32, make, gcc" From 8e6a22ac3d8cb1820a0d6a258a2cdaf47ab9c8c5 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 20 Jul 2018 21:27:33 +0100 Subject: [PATCH 0645/1100] Add additional i386 tests to all.sh Added an additional i386 test to all.sh, to allow one test with -O0 which compiles out inline assembly, and one to test with -01 which includes the inline assembly. --- tests/scripts/all.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 034ca7deed..c12b333559 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -750,13 +750,24 @@ if uname -a | grep -F Linux >/dev/null; then fi if uname -a | grep -F x86_64 >/dev/null; then - msg "build: i386, make, gcc (ASan build)" # ~ 30s + # Build once with -O0, to compile out the i386 specific inline assembly + msg "build: i386, make, gcc -O0 (ASan build)" # ~ 30s cleanup cp "$CONFIG_H" "$CONFIG_BAK" scripts/config.pl full - make CC=gcc CFLAGS='-Werror -Wall -Wextra -m32 -fsanitize=address' + make CC=gcc CFLAGS='-O0 -Werror -Wall -Wextra -m32 -fsanitize=address' - msg "test: i386, make, gcc (ASan build)" + msg "test: i386, make, gcc -O0 (ASan build)" + make test + + # Build again with -O1, to compile in the i386 specific inline assembly + msg "build: i386, make, gcc -O1 (ASan build)" # ~ 30s + cleanup + cp "$CONFIG_H" "$CONFIG_BAK" + scripts/config.pl full + make CC=gcc CFLAGS='-O1 -Werror -Wall -Wextra -m32 -fsanitize=address' + + msg "test: i386, make, gcc -O1 (ASan build)" make test msg "build: 64-bit ILP32, make, gcc" # ~ 30s From e459f07b551aef3039c6efc65670a44329884949 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 09:44:42 +0100 Subject: [PATCH 0646/1100] Correct logic to exclude i386 inline assenbly when -O0 The i386 MPI inline assembly code was being incorrectly included when all compiler optimisation was disabled. --- include/mbedtls/bn_mul.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index 438aa8cea1..b587317d95 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -56,7 +56,7 @@ * This is done as the number of registers used in the assembly code doesn't * work with the -O0 option. */ -#if defined(__i386__) && !defined(__OPTIMIZE__) +#if defined(__i386__) && defined(__OPTIMIZE__) #define MULADDC_INIT \ asm( \ From cce68bec1d47bf985f75485df3b77a371679cea5 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 14:26:09 +0100 Subject: [PATCH 0647/1100] Add a macro to define the memory size in ssl_server2.c When MBEDTLS_MEMORY_BUFFER_ALLOC_C was defined, the sample ssl_server2.c was using its own memory buffer for memory allocated by the library. The memory used wasn't obvious, so this adds a macro for the memory buffer allocated to make the allocated memory size more obvious and hence easier to configure. --- programs/ssl/ssl_server2.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 26f023d7f0..7654a6446d 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -97,6 +97,10 @@ int main( void ) #include #endif +/* Size of memory to be allocated for the heap, when using the library's memory + * management and MBEDTLS_MEMORY_BUFFER_ALLOC_C is enabled. */ +#define MEMORY_HEAP_SIZE 120000 + #define DFL_SERVER_ADDR NULL #define DFL_SERVER_PORT "4433" #define DFL_DEBUG_LEVEL 0 @@ -1212,7 +1216,7 @@ int main( int argc, char *argv[] ) const char *alpn_list[ALPN_LIST_SIZE]; #endif #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - unsigned char alloc_buf[120000]; + unsigned char alloc_buf[MEMORY_HEAP_SIZE]; #endif int i; From 5cf4d0694f74496fe9ad1985324eba6b4e3ea63c Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 14:36:40 +0100 Subject: [PATCH 0648/1100] Refine the definition of net_sockets.h Clarified the purport of net_socket.h to make its purpose clearer. --- include/mbedtls/net_sockets.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/net_sockets.h b/include/mbedtls/net_sockets.h index dd7dc67334..9f07eeb4d3 100644 --- a/include/mbedtls/net_sockets.h +++ b/include/mbedtls/net_sockets.h @@ -6,12 +6,13 @@ * * The network sockets module provides an example integration of the * Mbed TLS library into a BSD sockets implementation. The module is - * intended to be both an example of how Mbed TLS can be integrated - * into a networking stack, and also act as Mbed TLS's integration on - * the supported platforms. + * intended to be an example of how Mbed TLS can be integrated into a + * networking stack, as well as to be Mbed TLS's network integration + * for its supported platforms. * - * The module is intended only for the use of the Mbed TLS library and - * is not intended to be used by third party application software. + * The module is intended only to be used with the Mbed TLS library and + * is not intended to be used by third party application software + * directly. * * The supported platforms are as follows: * * Microsoft Windows and Windows CE From 10f9663fcb933421068efdec0ee24bcbd3e9af09 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 16:10:36 +0100 Subject: [PATCH 0649/1100] Added clarification to CONTRIBUTING.md Added rationale as to when API changes are permitted, and clarified why we try to preserve the API/ABI. --- CONTRIBUTING.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e79feaa3c4..f55fc288e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,13 +5,11 @@ We gratefully accept bug reports and contributions from the community. There are - As with any open source project, contributions will be reviewed by the project team and community and may need some modifications to be accepted. - The contribution should not break API or ABI, unless there is a real justification for that. If there is an API change, the contribution, if accepted, will be merged only when there will be a major release. - Contributor License Agreement (CLA) ----------------------------------- - All contributions, whether large or small, require a Contributor's License Agreement (CLA) to be accepted. This is because source code can possibly fall under copyright law and we need your consent to share in the ownership of the copyright. - To accept the Contributor’s License Agreement (CLA), individual contributors can do this by creating an Mbed account and [accepting the online agreement here with a click through](https://developer.mbed.org/contributor_agreement/). Alternatively, for contributions from corporations, or those that do not wish to create an Mbed account, a slightly different agreement can be found [here](https://www.mbed.com/en/about-mbed/contributor-license-agreements/). This agreement should be signed and returned to Arm as described in the instructions given. - Coding Standards ---------------- - We would ask that contributions conform to [our coding standards](https://tls.mbed.org/kb/development/mbedtls-coding-standards), and that contributions are fully tested before submission, as mentioned in the [Tests](#tests) and [Continuous Integration](#continuous-integration-tests) sections. @@ -19,7 +17,6 @@ Coding Standards - The code should be written in a portable generic way, that will benefit the whole community, and not only your own needs. - The code should be secure, and will be reviewed from a security point of view as well. - Making a Contribution --------------------- 1. [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://tls.mbed.org/discussions) around a feature idea or a bug. @@ -29,20 +26,19 @@ Making a Contribution 1. For quick merging, the contribution should be short, and concentrated on a single feature or topic. The larger the contribution is, the longer it would take to review it and merge it. 1. Mbed TLS is released under the Apache license, and as such, all the added files should include the Apache license header. - API/ABI Compatibility --------------------- +The project aims to minimise the impact on users upgrading to newer versions of the library and it should not be necessary for a user to make any changes to their own code to work with a newer version of the library. Unless the user has made an active decision to use newer features, a newer generation of the library or a change has been necessary due to a security issue or other significant software defect, no modifications to their own code should be necessary. To achieve this, API compatibility is maintained between different versions of Mbed TLS on the main development branch and in LTS (Long Term Support) branches. -API compatibility is maintained between versions of Mbed TLS on the main development branch. This is to ensure that when users of the library upgrade to a newer version of the library, there will be no API changes that may cause their code to fail to compile and it will not be necessary for them to make any changes to their own code. +To minimise such disruption to users, where a change to the interface is required, all changes to the ABI or API, even on the main development branch where new features are added, need to be justifiable by either being a significant enhancement, new feature or bug fix which is best resolved by an interface change. -Where changes to the interface are necessary, functions in the public interface which need to be removed or replaced will be marked as 'deprecated', with the preprocessor symbols `MBEDTLS_DEPRECATED_WARNING` and `MBEDTLS_DEPRECATED_REMOVED`. Therefore when a build is made with those symbols defined, a compiler warning will be generated to warn a user that the function will be removed at some point in the future. +Where changes to an existing interface are necessary, functions in the public interface which need to be changed, are marked as 'deprecated'. This is done with the preprocessor symbols `MBEDTLS_DEPRECATED_WARNING` and `MBEDTLS_DEPRECATED_REMOVED`. Then, a new function with a new name but similar if not identical behaviour to the original function containing the necessary changes should be created alongside the existing deprecated function. -It is also desirable to preserve ABI compatibility on the main development branch, and generally ABI changes need to be justifiable by enhancement and new features, to extend the interface. This is to again minimise the impact on users upgrading to newer versions of the library. +When a build is made with the deprecation preprocessor symbols defined, a compiler warning will be generated to warn a user that the function will be removed at some point in the future, notifying users that they should change from the older deprecated function to the newer function at their own convenience. -As a consequence, this means there can be no change to the definition of functions in the public API, nor removal of elements in structs that make up part of the public interface. Instead if a function needs to be changed, a new function needs to be created alongside it, with a new name, and whatever change is necessary, such as a new parameter or the addition of a return value. - -Periodically, the library will remove deprecated functions from the library which will be a breaking change in the API, but such changes will be made only in a planned, structured wat that gives sufficient notice to users of the library. +Therefore, no changes are permitted to the definition of functions in the public interface which will change the API. Instead the interface can only be changed by its extension. As described above, if a function needs to be changed, a new function needs to be created alongside it, with a new name, and whatever change is necessary, such as a new parameter or the addition of a return value. +Periodically, the library will remove deprecated functions from the library which will be a breaking change in the API, but such changes will be made only in a planned, structured way that gives sufficient notice to users of the library. Long Term Support Branches -------------------------- @@ -78,17 +74,15 @@ of code coverage to that which already exists for the library. Sample applications, if needed, should be modified as well. - Continuous Integration Tests ---------------------------- Once a PR has been made, the Continuous Integration (CI) tests are triggered and run. You should follow the result of the CI tests, and fix failures. It is advised to enable the [githooks scripts](https://github.com/ARMmbed/mbedtls/tree/development/tests/git-scripts) prior to pushing your changes, for catching some of the issues as early as possible. - Documentation ------------- -Mbed TLS should be well documented. If documentation is needed, speak out! +Mbed TLS is well documented, but if you think documentation is needed, speak out! 1. All interfaces should be documented through Doxygen. New APIs should introduce Doxygen documentation. From 5a5d03f025dcd170e4580ca5c9c18a6fc85b2f8e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 16:16:04 +0100 Subject: [PATCH 0650/1100] Add test guidelines to CONTRIBUTING.md --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f55fc288e1..83e04f8eee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,6 +68,8 @@ As mentioned, tests that show the correctness of the feature or bug fix should b Mbed TLS includes a comprehensive set of test suites in the `tests/` directory that are dynamically generated to produce the actual test source files (e.g. `test_suite_mpi.c`). These files are generated from a `function file` (e.g. `suites/test_suite_mpi.function`) and a `data file` (e.g. `suites/test_suite_mpi.data`). The function file contains the test functions. The data file contains the test cases, specified as parameters that will be passed to the test function. +[A knowledgebase article describing how to add additional tests is available on the Mbed TLS website](https://tls.mbed.org/kb/development/test_suites). + A test script `tests/scripts/basic-build-test.sh` is available to show test coverage of the library. New code contributions should provide a similar level of code coverage to that which already exists for the library. From 7b01244b993a9d53dfab1937aa333ab30d69ee77 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 25 Sep 2017 17:03:12 +0300 Subject: [PATCH 0651/1100] Add tests for mbedtls_cipher_crypt API 1. Add tests for 'mbedtls_cipher_crypt()' API 2. Resolves #1091, by ignoring IV when the cipher mode is MBEDTLS_MODE_ECB --- ChangeLog | 3 + library/cipher.c | 9 +- tests/suites/test_suite_cipher.aes.data | 620 ++++++++++++++++++++++++ tests/suites/test_suite_cipher.function | 57 ++- 4 files changed, 686 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index a7e6288ee0..2fc5e50289 100644 --- a/ChangeLog +++ b/ChangeLog @@ -34,10 +34,13 @@ Bugfix i386 with SSE2. Found by László Langó. Fixes #1550 * Fix namespacing in header files. Remove the `mbedtls` namespacing in the `#include` in the header files. Resolves #857 + * Ignore iv in mbedtls_cipher_set_iv() when the cipher mode is MBEDTLS_MODE_ECB + Fix for #1091 raised by ezdevelop Changes * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. + * Add tests for the mbedtls_cipher_crypt() API = mbed TLS 2.11.0 branch released 2018-06-18 diff --git a/library/cipher.c b/library/cipher.c index 7ae6c4ac5d..2771b05fcf 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -237,10 +237,15 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len ) { size_t actual_iv_size; - - if( NULL == ctx || NULL == ctx->cipher_info || NULL == iv ) + if( NULL == ctx || NULL == ctx->cipher_info || + ( NULL == iv && ( ctx->cipher_info->mode != MBEDTLS_MODE_ECB ) ) ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + if ( ctx->cipher_info->mode == MBEDTLS_MODE_ECB ) + { + ctx->iv_size = 0; + return ( 0 ); + } /* avoid buffer overflow in ctx->iv */ if( iv_len > MBEDTLS_MAX_IV_LENGTH ) return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index baab3586bd..fbe658b964 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -1510,6 +1510,626 @@ AES-256-ECB Decrypt NIST KAT #12 depends_on:MBEDTLS_AES_C test_vec_ecb:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0 +AES-128-ECB crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0 + +AES-128-ECB crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"9798c4640bad75c7c3227db910174e72":"a9a1631bf4996954ebc093957b234589":0 + +AES-128-ECB crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"96ab5c2ff612d9dfaae8c31f30c42168":"ff4f8391a6a40ca5b25d23bedd44a597":0 + +AES-128-ECB crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"e0000000000000000000000000000000":"":"00000000000000000000000000000000":"72a1da770f5d7ac4c9ef94d822affd97":0 + +AES-128-ECB crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f0000000000000000000000000000000":"":"00000000000000000000000000000000":"970014d634e2b7650777e8e84d03ccd8":0 + +AES-128-ECB crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f8000000000000000000000000000000":"":"00000000000000000000000000000000":"f17e79aed0db7e279e955b5f493875a7":0 + +AES-128-ECB crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffff0000000000000000000":"":"00000000000000000000000000000000":"7b90785125505fad59b13c186dd66ce3":0 + +AES-128-ECB crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffff8000000000000000000":"":"00000000000000000000000000000000":"8b527a6aebdaec9eaef8eda2cb7783e5":0 + +AES-128-ECB crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffffc000000000000000000":"":"00000000000000000000000000000000":"43fdaf53ebbc9880c228617d6a9b548b":0 + +AES-128-ECB crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffc000":"":"00000000000000000000000000000000":"70c46bb30692be657f7eaa93ebad9897":0 + +AES-128-ECB crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0 + +AES-128-ECB crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffff000":"":"00000000000000000000000000000000":"1dbf57877b7b17385c85d0b54851e371":0 + +AES-128-ECB crypt Encrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffc00000000000000000":"3a4d354f02bb5a5e47d39666867f246a":0 + +AES-128-ECB crypt Encrypt NIST KAT #14 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffe00000000000000000":"d451b8d6e1e1a0ebb155fbbf6e7b7dc3":0 + +AES-128-ECB crypt Encrypt NIST KAT #15 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffff00000000000000000":"6898d4f42fa7ba6a10ac05e87b9f2080":0 + +AES-128-ECB crypt Encrypt NIST KAT #16 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffffffffffffe0000000":"082eb8be35f442fb52668e16a591d1d6":0 + +AES-128-ECB crypt Encrypt NIST KAT #17 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffffffffffffff0000000":"e656f9ecf5fe27ec3e4a73d00c282fb3":0 + +AES-128-ECB crypt Encrypt NIST KAT #18 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffffffffffffff8000000":"2ca8209d63274cd9a29bb74bcd77683a":0 + +AES-128-ECB crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"db4f1aa530967d6732ce4715eb0ee24b":"ff000000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"a81738252621dd180a34f3455b4baa2f":"ff800000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"77e2b508db7fd89234caf7939ee5621a":"ffc00000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"dc43be40be0e53712f7e2bf5ca707209":"6a118a874519e64e9963798a503f1d35":0 + +AES-128-ECB crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"92beedab1895a94faa69b632e5cc47ce":"cb9fceec81286ca3e989bd979b0cb284":0 + +AES-128-ECB crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"459264f4798f6a78bacb89c15ed3d601":"b26aeb1874e47ca8358ff22378f09144":0 + +AES-128-ECB crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"b69418a85332240dc82492353956ae0c":"":"a303d940ded8f0baff6f75414cac5243":"00000000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"71b5c08a1993e1362e4d0ce9b22b78d5":"":"c2dabd117f8a3ecabfbb11d12194d9d0":"00000000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"e234cdca2606b81f29408d5f6da21206":"":"fff60a4740086b3b9c56195b98d91a7b":"00000000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"ffffffffffffffff0000000000000000":"":"84be19e053635f09f2665e7bae85b42d":"00000000000000000000000000000000":0 + +AES-128-ECB crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"ffffffffffffffff8000000000000000":"":"32cd652842926aea4aa6137bb2be2b5e":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffff80000000000":"156f07767a85a4312321f63968338a01":0 + +AES-192-ECB crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffffc0000000000":"15eec9ebf42b9ca76897d2cd6c5a12e2":0 + +AES-192-ECB crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffffe0000000000":"db0d3a6fdcc13f915e2b302ceeb70fd8":0 + +AES-192-ECB crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"51719783d3185a535bd75adc65071ce1":"4f354592ff7c8847d2d0870ca9481b7c":0 + +AES-192-ECB crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"26aa49dcfe7629a8901a69a9914e6dfd":"d5e08bf9a182e857cf40b3a36ee248cc":0 + +AES-192-ECB crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"941a4773058224e1ef66d10e0a6ee782":"067cd9d3749207791841562507fa9626":0 + +AES-192-ECB crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3":"":"00000000000000000000000000000000":"dd619e1cf204446112e0af2b9afa8f8c":0 + +AES-192-ECB crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93":"":"00000000000000000000000000000000":"d4f0aae13c8fe9339fbf9e69ed0ad74d":0 + +AES-192-ECB crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9":"":"00000000000000000000000000000000":"19c80ec4a6deb7e5ed1033dda933498f":0 + +AES-192-ECB crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffff800000000000000000000":"":"00000000000000000000000000000000":"8dd274bd0f1b58ae345d9e7233f9b8f3":0 + +AES-192-ECB crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffc00000000000000000000":"":"00000000000000000000000000000000":"9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b":0 + +AES-192-ECB crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffe00000000000000000000":"":"00000000000000000000000000000000":"fd5548bcf3f42565f7efa94562528d46":0 + +AES-192-ECB crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffff000000000000000":"":"bb2852c891c5947d2ed44032c421b85f":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffff800000000000000":"":"1b9f5fbd5e8a4264c0a85b80409afa5e":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffc00000000000000":"":"30dab809f85a917fe924733f424ac589":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79":"":"cfe4d74002696ccf7d87b14a2f9cafc9":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570":"":"d2eafd86f63b109b91f5dbb3a3fb7e13":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6":"":"9b9fdd1c5975655f539998b306a324af":"00000000000000000000000000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0 + +AES-192-ECB crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"c9b8135ff1b5adc413dfd053b21bd96d":"9c2d8842e5f48f57648205d39a239af1":0 + +AES-192-ECB crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"4a3650c3371ce2eb35e389a171427440":"bff52510095f518ecca60af4205444bb":0 + +AES-192-ECB crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"b2099795e88cc158fd75ea133d7e7fbe":"ffffffffffffffffffffc00000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"a6cae46fb6fadfe7a2c302a34242817b":"ffffffffffffffffffffe00000000000":0 + +AES-192-ECB crypt Decrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"026a7024d6a902e0b3ffccbaa910cc3f":"fffffffffffffffffffff00000000000":0 + +AES-256-ECB crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0 + +AES-256-ECB crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627":"":"00000000000000000000000000000000":"4307456a9e67813b452e15fa8fffe398":0 + +AES-256-ECB crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f":"":"00000000000000000000000000000000":"4663446607354989477a5c6f0f007ef4":0 + +AES-256-ECB crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0 + +AES-256-ECB crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"761c1fe41a18acf20d241650611d90f1":"623a52fcea5d443e48d9181ab32c7421":0 + +AES-256-ECB crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"8a560769d605868ad80d819bdba03771":"38f2c7ae10612415d27ca190d27da8b4":0 + +AES-256-ECB crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffff80000000000000000000000000":"36aff0ef7bf3280772cf4cac80a0d2b2":0 + +AES-256-ECB crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffffc0000000000000000000000000":"1f8eedea0f62a1406d58cfc3ecea72cf":0 + +AES-256-ECB crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffffe0000000000000000000000000":"abf4154a3375a1d3e6b1d454438f95a6":0 + +AES-256-ECB crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffff8000000000000000000000000000":"":"00000000000000000000000000000000":"45d089c36d5c5a4efc689e3b0de10dd5":0 + +AES-256-ECB crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffc000000000000000000000000000":"":"00000000000000000000000000000000":"b4da5df4becb5462e03a0ed00d295629":0 + +AES-256-ECB crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffe000000000000000000000000000":"":"00000000000000000000000000000000":"dcf4e129136c1a4b7a0f38935cc34b2b":0 + +AES-256-ECB crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000":"":"edf61ae362e882ddc0167474a7a77f3a":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000":"":"6168b00ba7859e0970ecfd757efecf7c":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000":"":"d1415447866230d28bb1ea18a4cdfd02":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9":"":"a3944b95ca0b52043584ef02151926a8":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e":"":"a74289fe73a4c123ca189ea1e1b49ad5":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707":"":"b91d4ea4488644b56cf0812fa7fcf5fc":"00000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0 + +AES-256-ECB crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"38f2c7ae10612415d27ca190d27da8b4":"8a560769d605868ad80d819bdba03771":0 + +AES-256-ECB crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"1bc704f1bce135ceb810341b216d7abe":"91fbef2d15a97816060bee1feaa49afe":0 + +AES-256-ECB crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0a6bdc6d4c1e6280301fd8e97ddbe601":"c0000000000000000000000000000000":0 + +AES-256-ECB crypt Decrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0 + +AES-128-CBC crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":0 + +AES-128-CBC crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"aae5939c8efdf2f04e60b9fe7117b2c2":0 + +AES-128-CBC crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"f031d4d74f5dcbf39daaf8ca3af6e527":0 + +AES-128-CBC crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"96d9fd5cc4f07441727df0f33e401a36":0 + +AES-128-CBC crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ff000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"b1d758256b28fd850ad4944208cf1155":0 + +AES-128-CBC crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":0 + +AES-128-CBC crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0 + +AES-128-CBC crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":0 + +AES-128-CBC crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"caea65cdbb75e9169ecd22ebe6e54675":"00000000000000000000000000000000":"00000000000000000000000000000000":"6e29201190152df4ee058139def610bb":0 + +AES-128-CBC crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"b6364ac4e1de1e285eaf144a2415f7a0":"00000000000000000000000000000000":"00000000000000000000000000000000":"5d9b05578fc944b3cf1ccf0e746cd581":0 + +AES-128-CBC crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0 + +AES-128-CBC crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"9798c4640bad75c7c3227db910174e72":"a9a1631bf4996954ebc093957b234589":0 + +AES-128-CBC crypt Encrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"96ab5c2ff612d9dfaae8c31f30c42168":"ff4f8391a6a40ca5b25d23bedd44a597":0 + +AES-128-CBC crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":"80000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"aae5939c8efdf2f04e60b9fe7117b2c2":"c0000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f031d4d74f5dcbf39daaf8ca3af6e527":"e0000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"96d9fd5cc4f07441727df0f33e401a36":"f0000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ff000000000000000000000000000000":"00000000000000000000000000000000":"b1d758256b28fd850ad4944208cf1155":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"caea65cdbb75e9169ecd22ebe6e54675":"00000000000000000000000000000000":"6e29201190152df4ee058139def610bb":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"b6364ac4e1de1e285eaf144a2415f7a0":"00000000000000000000000000000000":"5d9b05578fc944b3cf1ccf0e746cd581":"00000000000000000000000000000000":0 + +AES-128-CBC crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"f34481ec3cc627bacd5dc3fb08f273e6":0 + +AES-128-CBC crypt Decrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"a9a1631bf4996954ebc093957b234589":"9798c4640bad75c7c3227db910174e72":0 + +AES-128-CBC crypt Decrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"ff4f8391a6a40ca5b25d23bedd44a597":"96ab5c2ff612d9dfaae8c31f30c42168":0 + +AES-192-CBC crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":0 + +AES-192-CBC crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"2ce1f8b7e30627c1c4519eada44bc436":0 + +AES-192-CBC crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"9946b5f87af446f5796c1fee63a2da24":0 + +AES-192-CBC crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"2a560364ce529efc21788779568d5555":0 + +AES-192-CBC crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ff0000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"833f71258d53036b02952c76c744f5a1":0 + +AES-192-CBC crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ffffc0000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"b2f8b409b0585909aad3a7b5a219072a":0 + +AES-192-CBC crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"75db7cfd4a7b2b62ab78a48f3ddaf4af":0 + +AES-192-CBC crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":0 + +AES-192-CBC crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29":"00000000000000000000000000000000":"00000000000000000000000000000000":"8e4e18424e591a3d5b6f0876f16f8594":0 + +AES-192-CBC crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c":"00000000000000000000000000000000":"00000000000000000000000000000000":"93f3270cfc877ef17e106ce938979cb0":0 + +AES-192-CBC crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1b077a6af4b7f98229de786d7516b639":"275cfc0413d8ccb70513c3859b1d0f72":0 + +AES-192-CBC crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9c2d8842e5f48f57648205d39a239af1":"c9b8135ff1b5adc413dfd053b21bd96d":0 + +AES-192-CBC crypt Encrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"bff52510095f518ecca60af4205444bb":"4a3650c3371ce2eb35e389a171427440":0 + +AES-192-CBC crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":"80000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"2ce1f8b7e30627c1c4519eada44bc436":"c0000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9946b5f87af446f5796c1fee63a2da24":"e0000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"2a560364ce529efc21788779568d5555":"f0000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffe000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7ababc4b3f516c9aafb35f4140b548f9":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffffc0000000000000000000000000000000000000000000":"00000000000000000000000000000000":"b2f8b409b0585909aad3a7b5a219072a":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"75db7cfd4a7b2b62ab78a48f3ddaf4af":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29":"00000000000000000000000000000000":"8e4e18424e591a3d5b6f0876f16f8594":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c":"00000000000000000000000000000000":"93f3270cfc877ef17e106ce938979cb0":"00000000000000000000000000000000":0 + +AES-192-CBC crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0 + +AES-192-CBC crypt Decrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c9b8135ff1b5adc413dfd053b21bd96d":"9c2d8842e5f48f57648205d39a239af1":0 + +AES-192-CBC crypt Decrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"4a3650c3371ce2eb35e389a171427440":"bff52510095f518ecca60af4205444bb":0 + +AES-256-CBC crypt Encrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":0 + +AES-256-CBC crypt Encrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"0a6bdc6d4c1e6280301fd8e97ddbe601":0 + +AES-256-CBC crypt Encrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":0 + +AES-256-CBC crypt Encrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"7f2c5ece07a98d8bee13c51177395ff7":0 + +AES-256-CBC crypt Encrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ff00000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"ec52a212f80a09df6317021bc2a9819e":0 + +AES-256-CBC crypt Encrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ffffc00000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"27ef2495dabf323885aab39c80f18d8b":0 + +AES-256-CBC crypt Encrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"50e6d3c9b6698a7cd276f96b1473f35a":0 + +AES-256-CBC crypt Encrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":0 + +AES-256-CBC crypt Encrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64":"00000000000000000000000000000000":"00000000000000000000000000000000":"4bf3b0a69aeb6657794f2901b1440ad4":0 + +AES-256-CBC crypt Encrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"00000000000000000000000000000000":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0 + +AES-256-CBC crypt Encrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"014730f80ac625fe84f026c60bfd547d":"5c9d844ed46f9885085e5d6a4f94c7d7":0 + +AES-256-CBC crypt Encrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0 + +AES-256-CBC crypt Encrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"761c1fe41a18acf20d241650611d90f1":"623a52fcea5d443e48d9181ab32c7421":0 + +AES-256-CBC crypt Decrypt NIST KAT #1 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #2 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0a6bdc6d4c1e6280301fd8e97ddbe601":"c0000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #3 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #4 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7f2c5ece07a98d8bee13c51177395ff7":"f0000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #5 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffe0000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"d1ccb9b1337002cbac42c520b5d67722":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #6 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffffc00000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"27ef2495dabf323885aab39c80f18d8b":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #7 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"50e6d3c9b6698a7cd276f96b1473f35a":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #8 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #9 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64":"00000000000000000000000000000000":"4bf3b0a69aeb6657794f2901b1440ad4":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #10 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":"00000000000000000000000000000000":0 + +AES-256-CBC crypt Decrypt NIST KAT #11 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5c9d844ed46f9885085e5d6a4f94c7d7":"014730f80ac625fe84f026c60bfd547d":0 + +AES-256-CBC crypt Decrypt NIST KAT #12 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"a9ff75bd7cf6613d3731c77c3b6d0c04":"0b24af36193ce4665f2825d7b4749c98":0 + +AES-256-CBC crypt Decrypt NIST KAT #13 +depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0 + Cipher Corner Case behaviours depends_on:MBEDTLS_AES_C cipher_special_behaviours: diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 52526a898a..9b7c30167a 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -107,7 +107,7 @@ void cipher_special_behaviours( ) memset( iv, 0, sizeof( iv ) ); /* Check and get info structures */ - cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); + cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_CBC ); TEST_ASSERT( NULL != cipher_info ); TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, cipher_info ) ); @@ -120,6 +120,12 @@ void cipher_special_behaviours( ) TEST_ASSERT( mbedtls_cipher_set_iv( &ctx, iv, 0 ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + mbedtls_cipher_free( &ctx ); + cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); + TEST_ASSERT( NULL != cipher_info ); + + TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, cipher_info ) ); + /* Update ECB with partial block */ TEST_ASSERT( mbedtls_cipher_update( &ctx, input, 1, output, &olen ) == MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED ); @@ -690,6 +696,55 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */ +void test_vec_crypt( int cipher_id, int operation, char *hex_key, + char *hex_iv, char *hex_input, char *hex_result, + int finish_result ) +{ + unsigned char key[50]; + unsigned char input[16]; + unsigned char result[16]; + unsigned char iv[16]; + size_t key_len, iv_len, inputlen, resultlen; + mbedtls_cipher_context_t ctx; + unsigned char output[32]; + size_t outlen; + + mbedtls_cipher_init( &ctx ); + + memset( key, 0x00, sizeof( key ) ); + memset( input, 0x00, sizeof( input ) ); + memset( result, 0x00, sizeof( result ) ); + memset( output, 0x00, sizeof( output ) ); + memset( iv, 0x00, sizeof( iv ) ); + + /* Prepare context */ + TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, + mbedtls_cipher_info_from_type( cipher_id ) ) ); + + key_len = unhexify( key, hex_key ); + inputlen = unhexify( input, hex_input ); + resultlen = unhexify( result, hex_result ); + + TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, operation ) ); + if( MBEDTLS_MODE_CBC == ctx.cipher_info->mode ) + TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, MBEDTLS_PADDING_NONE ) ); + + iv_len = unhexify( iv, hex_iv ); + + TEST_ASSERT( finish_result == mbedtls_cipher_crypt( &ctx, iv_len ? iv : NULL, + iv_len, input, inputlen, + output, &outlen ) ); + TEST_ASSERT( resultlen == outlen ); + /* check plaintext only if everything went fine */ + if( 0 == finish_result ) + TEST_ASSERT( 0 == memcmp( output, result, outlen ) ); + +exit: + mbedtls_cipher_free( &ctx ); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */ void set_padding( int cipher_id, int pad_mode, int ret ) { From 4e64e0b9223718a378c0a7ac53fd21bd9dda106c Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 25 Sep 2017 18:22:32 +0300 Subject: [PATCH 0652/1100] Fix after PR comments 1. Don't set IV onECB 2. Fix style issues 3. reduce number of tests --- ChangeLog | 1 - library/cipher.c | 17 +- library/cipher_wrap.c | 6 +- tests/suites/test_suite_cipher.aes.data | 480 ++---------------------- tests/suites/test_suite_cipher.function | 6 +- 5 files changed, 36 insertions(+), 474 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2fc5e50289..b8e4b98513 100644 --- a/ChangeLog +++ b/ChangeLog @@ -40,7 +40,6 @@ Bugfix Changes * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. - * Add tests for the mbedtls_cipher_crypt() API = mbed TLS 2.11.0 branch released 2018-06-18 diff --git a/library/cipher.c b/library/cipher.c index 2771b05fcf..da55206514 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -237,15 +237,11 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, const unsigned char *iv, size_t iv_len ) { size_t actual_iv_size; - if( NULL == ctx || NULL == ctx->cipher_info || - ( NULL == iv && ( ctx->cipher_info->mode != MBEDTLS_MODE_ECB ) ) ) + if( NULL == ctx || NULL == ctx->cipher_info ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + else if( NULL == iv && iv_len != 0 ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - if ( ctx->cipher_info->mode == MBEDTLS_MODE_ECB ) - { - ctx->iv_size = 0; - return ( 0 ); - } /* avoid buffer overflow in ctx->iv */ if( iv_len > MBEDTLS_MAX_IV_LENGTH ) return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); @@ -273,8 +269,11 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, } #endif - memcpy( ctx->iv, iv, actual_iv_size ); - ctx->iv_size = actual_iv_size; + if ( actual_iv_size ) + { + memcpy( ctx->iv, iv, actual_iv_size ); + ctx->iv_size = actual_iv_size; + } return( 0 ); } diff --git a/library/cipher_wrap.c b/library/cipher_wrap.c index 893490acc8..6dd8c5d3a9 100644 --- a/library/cipher_wrap.c +++ b/library/cipher_wrap.c @@ -258,7 +258,7 @@ static const mbedtls_cipher_info_t aes_128_ecb_info = { MBEDTLS_MODE_ECB, 128, "AES-128-ECB", - 16, + 0, 0, 16, &aes_info @@ -269,7 +269,7 @@ static const mbedtls_cipher_info_t aes_192_ecb_info = { MBEDTLS_MODE_ECB, 192, "AES-192-ECB", - 16, + 0, 0, 16, &aes_info @@ -280,7 +280,7 @@ static const mbedtls_cipher_info_t aes_256_ecb_info = { MBEDTLS_MODE_ECB, 256, "AES-256-ECB", - 16, + 0, 0, 16, &aes_info diff --git a/tests/suites/test_suite_cipher.aes.data b/tests/suites/test_suite_cipher.aes.data index fbe658b964..e810863605 100644 --- a/tests/suites/test_suite_cipher.aes.data +++ b/tests/suites/test_suite_cipher.aes.data @@ -1516,113 +1516,21 @@ test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"000000000000000000000 AES-128-ECB crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"9798c4640bad75c7c3227db910174e72":"a9a1631bf4996954ebc093957b234589":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f0000000000000000000000000000000":"":"00000000000000000000000000000000":"970014d634e2b7650777e8e84d03ccd8":0 AES-128-ECB crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"96ab5c2ff612d9dfaae8c31f30c42168":"ff4f8391a6a40ca5b25d23bedd44a597":0 - -AES-128-ECB crypt Encrypt NIST KAT #4 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"e0000000000000000000000000000000":"":"00000000000000000000000000000000":"72a1da770f5d7ac4c9ef94d822affd97":0 - -AES-128-ECB crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f0000000000000000000000000000000":"":"00000000000000000000000000000000":"970014d634e2b7650777e8e84d03ccd8":0 - -AES-128-ECB crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f8000000000000000000000000000000":"":"00000000000000000000000000000000":"f17e79aed0db7e279e955b5f493875a7":0 - -AES-128-ECB crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffff0000000000000000000":"":"00000000000000000000000000000000":"7b90785125505fad59b13c186dd66ce3":0 - -AES-128-ECB crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffff8000000000000000000":"":"00000000000000000000000000000000":"8b527a6aebdaec9eaef8eda2cb7783e5":0 - -AES-128-ECB crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffffc000000000000000000":"":"00000000000000000000000000000000":"43fdaf53ebbc9880c228617d6a9b548b":0 - -AES-128-ECB crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffc000":"":"00000000000000000000000000000000":"70c46bb30692be657f7eaa93ebad9897":0 - -AES-128-ECB crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0 - -AES-128-ECB crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffff000":"":"00000000000000000000000000000000":"1dbf57877b7b17385c85d0b54851e371":0 - -AES-128-ECB crypt Encrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffc00000000000000000":"3a4d354f02bb5a5e47d39666867f246a":0 -AES-128-ECB crypt Encrypt NIST KAT #14 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffe00000000000000000":"d451b8d6e1e1a0ebb155fbbf6e7b7dc3":0 - -AES-128-ECB crypt Encrypt NIST KAT #15 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffff00000000000000000":"6898d4f42fa7ba6a10ac05e87b9f2080":0 - -AES-128-ECB crypt Encrypt NIST KAT #16 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffffffffffffe0000000":"082eb8be35f442fb52668e16a591d1d6":0 - -AES-128-ECB crypt Encrypt NIST KAT #17 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffffffffffffff0000000":"e656f9ecf5fe27ec3e4a73d00c282fb3":0 - -AES-128-ECB crypt Encrypt NIST KAT #18 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"fffffffffffffffffffffffff8000000":"2ca8209d63274cd9a29bb74bcd77683a":0 - AES-128-ECB crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"db4f1aa530967d6732ce4715eb0ee24b":"ff000000000000000000000000000000":0 AES-128-ECB crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"a81738252621dd180a34f3455b4baa2f":"ff800000000000000000000000000000":0 - -AES-128-ECB crypt Decrypt NIST KAT #3 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"77e2b508db7fd89234caf7939ee5621a":"ffc00000000000000000000000000000":0 - -AES-128-ECB crypt Decrypt NIST KAT #4 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"dc43be40be0e53712f7e2bf5ca707209":"6a118a874519e64e9963798a503f1d35":0 - -AES-128-ECB crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"92beedab1895a94faa69b632e5cc47ce":"cb9fceec81286ca3e989bd979b0cb284":0 - -AES-128-ECB crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"459264f4798f6a78bacb89c15ed3d601":"b26aeb1874e47ca8358ff22378f09144":0 - -AES-128-ECB crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"b69418a85332240dc82492353956ae0c":"":"a303d940ded8f0baff6f75414cac5243":"00000000000000000000000000000000":0 -AES-128-ECB crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"71b5c08a1993e1362e4d0ce9b22b78d5":"":"c2dabd117f8a3ecabfbb11d12194d9d0":"00000000000000000000000000000000":0 - -AES-128-ECB crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"e234cdca2606b81f29408d5f6da21206":"":"fff60a4740086b3b9c56195b98d91a7b":"00000000000000000000000000000000":0 - -AES-128-ECB crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"ffffffffffffffff0000000000000000":"":"84be19e053635f09f2665e7bae85b42d":"00000000000000000000000000000000":0 - -AES-128-ECB crypt Decrypt NIST KAT #11 +AES-128-ECB crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"ffffffffffffffff8000000000000000":"":"32cd652842926aea4aa6137bb2be2b5e":"00000000000000000000000000000000":0 @@ -1632,504 +1540,160 @@ test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000 AES-192-ECB crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffffc0000000000":"15eec9ebf42b9ca76897d2cd6c5a12e2":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"51719783d3185a535bd75adc65071ce1":"4f354592ff7c8847d2d0870ca9481b7c":0 AES-192-ECB crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffffe0000000000":"db0d3a6fdcc13f915e2b302ceeb70fd8":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3":"":"00000000000000000000000000000000":"dd619e1cf204446112e0af2b9afa8f8c":0 AES-192-ECB crypt Encrypt NIST KAT #4 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"51719783d3185a535bd75adc65071ce1":"4f354592ff7c8847d2d0870ca9481b7c":0 - -AES-192-ECB crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"26aa49dcfe7629a8901a69a9914e6dfd":"d5e08bf9a182e857cf40b3a36ee248cc":0 - -AES-192-ECB crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"941a4773058224e1ef66d10e0a6ee782":"067cd9d3749207791841562507fa9626":0 - -AES-192-ECB crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3":"":"00000000000000000000000000000000":"dd619e1cf204446112e0af2b9afa8f8c":0 - -AES-192-ECB crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"982215f4e173dfa0fcffe5d3da41c4812c7bcc8ed3540f93":"":"00000000000000000000000000000000":"d4f0aae13c8fe9339fbf9e69ed0ad74d":0 - -AES-192-ECB crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"98c6b8e01e379fbd14e61af6af891596583565f2a27d59e9":"":"00000000000000000000000000000000":"19c80ec4a6deb7e5ed1033dda933498f":0 - -AES-192-ECB crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffff800000000000000000000":"":"00000000000000000000000000000000":"8dd274bd0f1b58ae345d9e7233f9b8f3":0 -AES-192-ECB crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffc00000000000000000000":"":"00000000000000000000000000000000":"9d6bdc8f4ce5feb0f3bed2e4b9a9bb0b":0 - -AES-192-ECB crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffffe00000000000000000000":"":"00000000000000000000000000000000":"fd5548bcf3f42565f7efa94562528d46":0 - AES-192-ECB crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffff000000000000000":"":"bb2852c891c5947d2ed44032c421b85f":"00000000000000000000000000000000":0 AES-192-ECB crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffff800000000000000":"":"1b9f5fbd5e8a4264c0a85b80409afa5e":"00000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79":"":"cfe4d74002696ccf7d87b14a2f9cafc9":"00000000000000000000000000000000":0 AES-192-ECB crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffc00000000000000":"":"30dab809f85a917fe924733f424ac589":"00000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0 AES-192-ECB crypt Decrypt NIST KAT #4 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79":"":"cfe4d74002696ccf7d87b14a2f9cafc9":"00000000000000000000000000000000":0 - -AES-192-ECB crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"b0ab0a6a818baef2d11fa33eac947284fb7d748cfb75e570":"":"d2eafd86f63b109b91f5dbb3a3fb7e13":"00000000000000000000000000000000":0 - -AES-192-ECB crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"ee053aa011c8b428cdcc3636313c54d6a03cac01c71579d6":"":"9b9fdd1c5975655f539998b306a324af":"00000000000000000000000000000000":0 - -AES-192-ECB crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0 - -AES-192-ECB crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"c9b8135ff1b5adc413dfd053b21bd96d":"9c2d8842e5f48f57648205d39a239af1":0 - -AES-192-ECB crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"4a3650c3371ce2eb35e389a171427440":"bff52510095f518ecca60af4205444bb":0 - -AES-192-ECB crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"b2099795e88cc158fd75ea133d7e7fbe":"ffffffffffffffffffffc00000000000":0 -AES-192-ECB crypt Decrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"a6cae46fb6fadfe7a2c302a34242817b":"ffffffffffffffffffffe00000000000":0 - -AES-192-ECB crypt Decrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"026a7024d6a902e0b3ffccbaa910cc3f":"fffffffffffffffffffff00000000000":0 - AES-256-ECB crypt Encrypt NIST KAT #1 depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0 AES-256-ECB crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"984ca75f4ee8d706f46c2d98c0bf4a45f5b00d791c2dfeb191b5ed8e420fd627":"":"00000000000000000000000000000000":"4307456a9e67813b452e15fa8fffe398":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0 AES-256-ECB crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"b43d08a447ac8609baadae4ff12918b9f68fc1653f1269222f123981ded7a92f":"":"00000000000000000000000000000000":"4663446607354989477a5c6f0f007ef4":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffff80000000000000000000000000":"36aff0ef7bf3280772cf4cac80a0d2b2":0 AES-256-ECB crypt Encrypt NIST KAT #4 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0 - -AES-256-ECB crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"761c1fe41a18acf20d241650611d90f1":"623a52fcea5d443e48d9181ab32c7421":0 - -AES-256-ECB crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"8a560769d605868ad80d819bdba03771":"38f2c7ae10612415d27ca190d27da8b4":0 - -AES-256-ECB crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffff80000000000000000000000000":"36aff0ef7bf3280772cf4cac80a0d2b2":0 - -AES-256-ECB crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffffc0000000000000000000000000":"1f8eedea0f62a1406d58cfc3ecea72cf":0 - -AES-256-ECB crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffffe0000000000000000000000000":"abf4154a3375a1d3e6b1d454438f95a6":0 - -AES-256-ECB crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffff8000000000000000000000000000":"":"00000000000000000000000000000000":"45d089c36d5c5a4efc689e3b0de10dd5":0 -AES-256-ECB crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffc000000000000000000000000000":"":"00000000000000000000000000000000":"b4da5df4becb5462e03a0ed00d295629":0 - -AES-256-ECB crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffe000000000000000000000000000":"":"00000000000000000000000000000000":"dcf4e129136c1a4b7a0f38935cc34b2b":0 - AES-256-ECB crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000":"":"edf61ae362e882ddc0167474a7a77f3a":"00000000000000000000000000000000":0 AES-256-ECB crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000":"":"6168b00ba7859e0970ecfd757efecf7c":"00000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9":"":"a3944b95ca0b52043584ef02151926a8":"00000000000000000000000000000000":0 AES-256-ECB crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000":"":"d1415447866230d28bb1ea18a4cdfd02":"00000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0 AES-256-ECB crypt Decrypt NIST KAT #4 depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9":"":"a3944b95ca0b52043584ef02151926a8":"00000000000000000000000000000000":0 - -AES-256-ECB crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"797f8b3d176dac5b7e34a2d539c4ef367a16f8635f6264737591c5c07bf57a3e":"":"a74289fe73a4c123ca189ea1e1b49ad5":"00000000000000000000000000000000":0 - -AES-256-ECB crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"6838d40caf927749c13f0329d331f448e202c73ef52c5f73a37ca635d4c47707":"":"b91d4ea4488644b56cf0812fa7fcf5fc":"00000000000000000000000000000000":0 - -AES-256-ECB crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0 - -AES-256-ECB crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"38f2c7ae10612415d27ca190d27da8b4":"8a560769d605868ad80d819bdba03771":0 - -AES-256-ECB crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"1bc704f1bce135ceb810341b216d7abe":"91fbef2d15a97816060bee1feaa49afe":0 - -AES-256-ECB crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0 -AES-256-ECB crypt Decrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0a6bdc6d4c1e6280301fd8e97ddbe601":"c0000000000000000000000000000000":0 - -AES-256-ECB crypt Decrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C -test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0 - AES-128-CBC crypt Encrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":0 AES-128-CBC crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"aae5939c8efdf2f04e60b9fe7117b2c2":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0 AES-128-CBC crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"f031d4d74f5dcbf39daaf8ca3af6e527":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":0 AES-128-CBC crypt Encrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"96d9fd5cc4f07441727df0f33e401a36":0 - -AES-128-CBC crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ff000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"b1d758256b28fd850ad4944208cf1155":0 - -AES-128-CBC crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":0 - -AES-128-CBC crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0 - -AES-128-CBC crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":0 - -AES-128-CBC crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"caea65cdbb75e9169ecd22ebe6e54675":"00000000000000000000000000000000":"00000000000000000000000000000000":"6e29201190152df4ee058139def610bb":0 - -AES-128-CBC crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"b6364ac4e1de1e285eaf144a2415f7a0":"00000000000000000000000000000000":"00000000000000000000000000000000":"5d9b05578fc944b3cf1ccf0e746cd581":0 - -AES-128-CBC crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0 -AES-128-CBC crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"9798c4640bad75c7c3227db910174e72":"a9a1631bf4996954ebc093957b234589":0 - -AES-128-CBC crypt Encrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"96ab5c2ff612d9dfaae8c31f30c42168":"ff4f8391a6a40ca5b25d23bedd44a597":0 - AES-128-CBC crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":"80000000000000000000000000000000":0 AES-128-CBC crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"aae5939c8efdf2f04e60b9fe7117b2c2":"c0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":"00000000000000000000000000000000":0 AES-128-CBC crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f031d4d74f5dcbf39daaf8ca3af6e527":"e0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":"00000000000000000000000000000000":0 AES-128-CBC crypt Decrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"96d9fd5cc4f07441727df0f33e401a36":"f0000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ff000000000000000000000000000000":"00000000000000000000000000000000":"b1d758256b28fd850ad4944208cf1155":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"caea65cdbb75e9169ecd22ebe6e54675":"00000000000000000000000000000000":"6e29201190152df4ee058139def610bb":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"b6364ac4e1de1e285eaf144a2415f7a0":"00000000000000000000000000000000":"5d9b05578fc944b3cf1ccf0e746cd581":"00000000000000000000000000000000":0 - -AES-128-CBC crypt Decrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"f34481ec3cc627bacd5dc3fb08f273e6":0 -AES-128-CBC crypt Decrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"a9a1631bf4996954ebc093957b234589":"9798c4640bad75c7c3227db910174e72":0 - -AES-128-CBC crypt Decrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"ff4f8391a6a40ca5b25d23bedd44a597":"96ab5c2ff612d9dfaae8c31f30c42168":0 - AES-192-CBC crypt Encrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":0 AES-192-CBC crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"2ce1f8b7e30627c1c4519eada44bc436":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ff0000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"833f71258d53036b02952c76c744f5a1":0 AES-192-CBC crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"9946b5f87af446f5796c1fee63a2da24":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":0 AES-192-CBC crypt Encrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"2a560364ce529efc21788779568d5555":0 - -AES-192-CBC crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ff0000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"833f71258d53036b02952c76c744f5a1":0 - -AES-192-CBC crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ffffc0000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"b2f8b409b0585909aad3a7b5a219072a":0 - -AES-192-CBC crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"75db7cfd4a7b2b62ab78a48f3ddaf4af":0 - -AES-192-CBC crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":0 - -AES-192-CBC crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29":"00000000000000000000000000000000":"00000000000000000000000000000000":"8e4e18424e591a3d5b6f0876f16f8594":0 - -AES-192-CBC crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c":"00000000000000000000000000000000":"00000000000000000000000000000000":"93f3270cfc877ef17e106ce938979cb0":0 - -AES-192-CBC crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1b077a6af4b7f98229de786d7516b639":"275cfc0413d8ccb70513c3859b1d0f72":0 -AES-192-CBC crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9c2d8842e5f48f57648205d39a239af1":"c9b8135ff1b5adc413dfd053b21bd96d":0 - -AES-192-CBC crypt Encrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"bff52510095f518ecca60af4205444bb":"4a3650c3371ce2eb35e389a171427440":0 - AES-192-CBC crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":"80000000000000000000000000000000":0 AES-192-CBC crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"2ce1f8b7e30627c1c4519eada44bc436":"c0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffe000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7ababc4b3f516c9aafb35f4140b548f9":"00000000000000000000000000000000":0 AES-192-CBC crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9946b5f87af446f5796c1fee63a2da24":"e0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":"00000000000000000000000000000000":0 AES-192-CBC crypt Decrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"2a560364ce529efc21788779568d5555":"f0000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffe000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7ababc4b3f516c9aafb35f4140b548f9":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffffc0000000000000000000000000000000000000000000":"00000000000000000000000000000000":"b2f8b409b0585909aad3a7b5a219072a":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"75db7cfd4a7b2b62ab78a48f3ddaf4af":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"15d20f6ebc7e649fd95b76b107e6daba967c8a9484797f29":"00000000000000000000000000000000":"8e4e18424e591a3d5b6f0876f16f8594":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"a8a282ee31c03fae4f8e9b8930d5473c2ed695a347e88b7c":"00000000000000000000000000000000":"93f3270cfc877ef17e106ce938979cb0":"00000000000000000000000000000000":0 - -AES-192-CBC crypt Decrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0 -AES-192-CBC crypt Decrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c9b8135ff1b5adc413dfd053b21bd96d":"9c2d8842e5f48f57648205d39a239af1":0 - -AES-192-CBC crypt Decrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"4a3650c3371ce2eb35e389a171427440":"bff52510095f518ecca60af4205444bb":0 - AES-256-CBC crypt Encrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":0 AES-256-CBC crypt Encrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"c0000000000000000000000000000000":"0a6bdc6d4c1e6280301fd8e97ddbe601":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ff00000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"ec52a212f80a09df6317021bc2a9819e":0 AES-256-CBC crypt Encrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"e0000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":0 AES-256-CBC crypt Encrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"f0000000000000000000000000000000":"7f2c5ece07a98d8bee13c51177395ff7":0 - -AES-256-CBC crypt Encrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ff00000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"ec52a212f80a09df6317021bc2a9819e":0 - -AES-256-CBC crypt Encrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ffffc00000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"27ef2495dabf323885aab39c80f18d8b":0 - -AES-256-CBC crypt Encrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"50e6d3c9b6698a7cd276f96b1473f35a":0 - -AES-256-CBC crypt Encrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":0 - -AES-256-CBC crypt Encrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64":"00000000000000000000000000000000":"00000000000000000000000000000000":"4bf3b0a69aeb6657794f2901b1440ad4":0 - -AES-256-CBC crypt Encrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"00000000000000000000000000000000":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0 - -AES-256-CBC crypt Encrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"014730f80ac625fe84f026c60bfd547d":"5c9d844ed46f9885085e5d6a4f94c7d7":0 -AES-256-CBC crypt Encrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0 - -AES-256-CBC crypt Encrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"761c1fe41a18acf20d241650611d90f1":"623a52fcea5d443e48d9181ab32c7421":0 - AES-256-CBC crypt Decrypt NIST KAT #1 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0 AES-256-CBC crypt Decrypt NIST KAT #2 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"0a6bdc6d4c1e6280301fd8e97ddbe601":"c0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffe0000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"d1ccb9b1337002cbac42c520b5d67722":"00000000000000000000000000000000":0 AES-256-CBC crypt Decrypt NIST KAT #3 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0 +test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":"00000000000000000000000000000000":0 AES-256-CBC crypt Decrypt NIST KAT #4 depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7f2c5ece07a98d8bee13c51177395ff7":"f0000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #5 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffe0000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"d1ccb9b1337002cbac42c520b5d67722":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #6 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffffc00000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"27ef2495dabf323885aab39c80f18d8b":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #7 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"50e6d3c9b6698a7cd276f96b1473f35a":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #8 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #9 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"28d46cffa158533194214a91e712fc2b45b518076675affd910edeca5f41ac64":"00000000000000000000000000000000":"4bf3b0a69aeb6657794f2901b1440ad4":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #10 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":"00000000000000000000000000000000":0 - -AES-256-CBC crypt Decrypt NIST KAT #11 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5c9d844ed46f9885085e5d6a4f94c7d7":"014730f80ac625fe84f026c60bfd547d":0 -AES-256-CBC crypt Decrypt NIST KAT #12 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"a9ff75bd7cf6613d3731c77c3b6d0c04":"0b24af36193ce4665f2825d7b4749c98":0 - -AES-256-CBC crypt Decrypt NIST KAT #13 -depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC -test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0 - Cipher Corner Case behaviours depends_on:MBEDTLS_AES_C cipher_special_behaviours: diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 9b7c30167a..2064474ad6 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -120,8 +120,8 @@ void cipher_special_behaviours( ) TEST_ASSERT( mbedtls_cipher_set_iv( &ctx, iv, 0 ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); - mbedtls_cipher_free( &ctx ); - cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); + mbedtls_cipher_free( &ctx ); + cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); TEST_ASSERT( NULL != cipher_info ); TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, cipher_info ) ); @@ -730,7 +730,7 @@ void test_vec_crypt( int cipher_id, int operation, char *hex_key, if( MBEDTLS_MODE_CBC == ctx.cipher_info->mode ) TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, MBEDTLS_PADDING_NONE ) ); - iv_len = unhexify( iv, hex_iv ); + iv_len = unhexify( iv, hex_iv ); TEST_ASSERT( finish_result == mbedtls_cipher_crypt( &ctx, iv_len ? iv : NULL, iv_len, input, inputlen, From 6f90ed82b9213b7857e18dcb3a28f3db2351f1ee Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 26 Sep 2017 12:08:54 +0300 Subject: [PATCH 0653/1100] Fix CI failure Test IV special cases only if `MBEDTLS_CIPHER_MODE_CBC` is defined --- tests/suites/test_suite_cipher.function | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 2064474ad6..c0aa831ea9 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -98,12 +98,15 @@ void cipher_special_behaviours( ) mbedtls_cipher_context_t ctx; unsigned char input[32]; unsigned char output[32]; +#if defined (MBEDTLS_CIPHER_MODE_CBC) unsigned char iv[32]; +#endif size_t olen = 0; mbedtls_cipher_init( &ctx ); memset( input, 0, sizeof( input ) ); memset( output, 0, sizeof( output ) ); +#if defined (MBEDTLS_CIPHER_MODE_CBC) memset( iv, 0, sizeof( iv ) ); /* Check and get info structures */ @@ -121,6 +124,7 @@ void cipher_special_behaviours( ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); mbedtls_cipher_free( &ctx ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); TEST_ASSERT( NULL != cipher_info ); From bb4bbbbbb481991b72575e2180ea86489e52d834 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 1 Oct 2017 17:04:54 +0300 Subject: [PATCH 0654/1100] Resolve PR review comments Address review comments: 1. add `mbedtls_cipher_init()` after freeing context, in test code 2. style comments 3. set `ctx->iv_size = 0` in case `IV == NULL && iv_len == 0` --- library/cipher.c | 5 ++++- tests/suites/test_suite_cipher.function | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/library/cipher.c b/library/cipher.c index da55206514..d7acf34ee5 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -242,6 +242,9 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, else if( NULL == iv && iv_len != 0 ) return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + if( NULL == iv && iv_len == 0 ) + ctx->iv_size = 0; + /* avoid buffer overflow in ctx->iv */ if( iv_len > MBEDTLS_MAX_IV_LENGTH ) return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); @@ -269,7 +272,7 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, } #endif - if ( actual_iv_size ) + if ( actual_iv_size != 0 ) { memcpy( ctx->iv, iv, actual_iv_size ); ctx->iv_size = actual_iv_size; diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index c0aa831ea9..1536c9d315 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -106,7 +106,7 @@ void cipher_special_behaviours( ) mbedtls_cipher_init( &ctx ); memset( input, 0, sizeof( input ) ); memset( output, 0, sizeof( output ) ); -#if defined (MBEDTLS_CIPHER_MODE_CBC) +#if defined(MBEDTLS_CIPHER_MODE_CBC) memset( iv, 0, sizeof( iv ) ); /* Check and get info structures */ @@ -124,6 +124,7 @@ void cipher_special_behaviours( ) == MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); mbedtls_cipher_free( &ctx ); + mbedtls_cipher_init( &ctx ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB ); TEST_ASSERT( NULL != cipher_info ); From ca2ea4e217bab5fac250a256d4011899982332ba Mon Sep 17 00:00:00 2001 From: Brian J Murray Date: Fri, 6 Jul 2018 10:03:58 -0700 Subject: [PATCH 0655/1100] Fix issue if salt = NULL and salt_len !=0 in mbedtls_hkdf_extract() --- library/hkdf.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/hkdf.c b/library/hkdf.c index 41d7d87641..82d8a429f4 100644 --- a/library/hkdf.c +++ b/library/hkdf.c @@ -62,6 +62,11 @@ int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, { size_t hash_len; + if( salt_len != 0 ) + { + return MBEDTLS_ERR_HKDF_BAD_INPUT_DATA; + } + hash_len = mbedtls_md_get_size( md ); if( hash_len == 0 ) From 4736e96568b2991e5ff0b38af1d3a27773eec258 Mon Sep 17 00:00:00 2001 From: Brian J Murray Date: Fri, 6 Jul 2018 10:05:22 -0700 Subject: [PATCH 0656/1100] add myself to changelog --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 44533d2aed..f56859ec5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18,6 +18,9 @@ Bugfix return value. Found by @davidwu2000. #839 * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, Philippe Antoine. Fixes #1623. + * Change the default behaviour of mbedtls_hkdf_extract() to return an error + when calling with a NULL salt and non-zero salt_len. Contributed by + Brian J Murray Changes * Change the shebang line in Perl scripts to look up perl in the PATH. From 6965f771de04408d4050d75576c64b7188ecd3f1 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 23 Jul 2018 23:57:07 +0100 Subject: [PATCH 0657/1100] Fix use of Knowledge Base in documentation Made the use of 'Knowledge Base' consistent in the CONTRIBUTING.md and README.md files. --- CONTRIBUTING.md | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 83e04f8eee..8fb8ab8fab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,7 +68,7 @@ As mentioned, tests that show the correctness of the feature or bug fix should b Mbed TLS includes a comprehensive set of test suites in the `tests/` directory that are dynamically generated to produce the actual test source files (e.g. `test_suite_mpi.c`). These files are generated from a `function file` (e.g. `suites/test_suite_mpi.function`) and a `data file` (e.g. `suites/test_suite_mpi.data`). The function file contains the test functions. The data file contains the test cases, specified as parameters that will be passed to the test function. -[A knowledgebase article describing how to add additional tests is available on the Mbed TLS website](https://tls.mbed.org/kb/development/test_suites). +[A Knowledge Base article describing how to add additional tests is available on the Mbed TLS website](https://tls.mbed.org/kb/development/test_suites). A test script `tests/scripts/basic-build-test.sh` is available to show test coverage of the library. New code contributions should provide a similar level diff --git a/README.md b/README.md index ced36e1921..6345848d25 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Please note that setting `CFLAGS` overrides its default value of `-O2` and setti Depending on your platform, you might run into some issues. Please check the Makefiles in `library/`, `programs/` and `tests/` for options to manually add or remove for specific platforms. You can also check [the Mbed TLS Knowledge Base](https://tls.mbed.org/kb) for articles on your platform or issue. -In case you find that you need to do something else as well, please let us know what, so we can add it to the [Mbed TLS knowledge base](https://tls.mbed.org/kb). +In case you find that you need to do something else as well, please let us know what, so we can add it to the [Mbed TLS Knowledge Base](https://tls.mbed.org/kb). ### CMake @@ -192,7 +192,7 @@ We provide some non-standard configurations focused on specific use cases in the Porting Mbed TLS ---------------- -Mbed TLS can be ported to many different architectures, OS's and platforms. Before starting a port, you may find the following knowledge base articles useful: +Mbed TLS can be ported to many different architectures, OS's and platforms. Before starting a port, you may find the following Knowledge Base articles useful: - [Porting Mbed TLS to a new environment or OS](https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS) - [What external dependencies does Mbed TLS rely on?](https://tls.mbed.org/kb/development/what-external-dependencies-does-mbedtls-rely-on) From 428cc52a73fc3b6ef934c7e4fe94222c30c3f52d Mon Sep 17 00:00:00 2001 From: Dawid Drozd Date: Tue, 24 Jul 2018 10:02:47 +0200 Subject: [PATCH 0658/1100] Allow to forward declare of public structs #1215 Thanks to forward declare we can declare `struct` in our header file instead making #include --- include/mbedtls/aes.h | 4 ++-- include/mbedtls/arc4.h | 2 +- include/mbedtls/aria.h | 2 +- include/mbedtls/bignum.h | 2 +- include/mbedtls/blowfish.h | 2 +- include/mbedtls/camellia.h | 2 +- include/mbedtls/ccm.h | 3 ++- include/mbedtls/chacha20.h | 2 +- include/mbedtls/chachapoly.h | 2 +- include/mbedtls/cipher.h | 6 ++++-- include/mbedtls/ctr_drbg.h | 2 +- include/mbedtls/des.h | 4 ++-- include/mbedtls/dhm.h | 2 +- include/mbedtls/ecdh.h | 2 +- include/mbedtls/ecjpake.h | 2 +- include/mbedtls/ecp.h | 8 ++++---- include/mbedtls/entropy.h | 4 ++-- include/mbedtls/gcm.h | 3 ++- include/mbedtls/havege.h | 2 +- include/mbedtls/hmac_drbg.h | 2 +- include/mbedtls/md.h | 3 ++- include/mbedtls/md2.h | 2 +- include/mbedtls/md4.h | 2 +- include/mbedtls/md5.h | 2 +- include/mbedtls/net_sockets.h | 2 +- include/mbedtls/oid.h | 3 ++- include/mbedtls/pem.h | 2 +- include/mbedtls/pk.h | 6 +++--- include/mbedtls/pkcs11.h | 3 ++- include/mbedtls/platform.h | 3 ++- include/mbedtls/poly1305.h | 2 +- include/mbedtls/ripemd160.h | 2 +- include/mbedtls/rsa.h | 2 +- include/mbedtls/sha1.h | 2 +- include/mbedtls/sha256.h | 2 +- include/mbedtls/sha512.h | 2 +- include/mbedtls/ssl_cookie.h | 2 +- include/mbedtls/ssl_ticket.h | 4 ++-- include/mbedtls/threading.h | 2 +- include/mbedtls/timing.h | 2 +- include/mbedtls/x509_crt.h | 2 +- include/mbedtls/xtea.h | 2 +- 42 files changed, 60 insertions(+), 52 deletions(-) diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h index f6603d5962..4c8dab3151 100644 --- a/include/mbedtls/aes.h +++ b/include/mbedtls/aes.h @@ -79,7 +79,7 @@ extern "C" { /** * \brief The AES context-type definition. */ -typedef struct +typedef struct mbedtls_aes_context { int nr; /*!< The number of rounds. */ uint32_t *rk; /*!< AES round keys. */ @@ -98,7 +98,7 @@ mbedtls_aes_context; /** * \brief The AES XTS context-type definition. */ -typedef struct +typedef struct mbedtls_aes_xts_context { mbedtls_aes_context crypt; /*!< The AES context to use for AES block encryption or decryption. */ diff --git a/include/mbedtls/arc4.h b/include/mbedtls/arc4.h index f11fc5be0a..83a7461f3f 100644 --- a/include/mbedtls/arc4.h +++ b/include/mbedtls/arc4.h @@ -53,7 +53,7 @@ extern "C" { * security risk. We recommend considering stronger ciphers instead. * */ -typedef struct +typedef struct mbedtls_arc4_context { int x; /*!< permutation index */ int y; /*!< permutation index */ diff --git a/include/mbedtls/aria.h b/include/mbedtls/aria.h index bae0621b23..4a79c13872 100644 --- a/include/mbedtls/aria.h +++ b/include/mbedtls/aria.h @@ -62,7 +62,7 @@ extern "C" { /** * \brief The ARIA context-type definition. */ -typedef struct +typedef struct mbedtls_aria_context { unsigned char nr; /*!< The number of rounds (12, 14 or 16) */ /*! The ARIA round keys. */ diff --git a/include/mbedtls/bignum.h b/include/mbedtls/bignum.h index 31383b1eb5..732ecbef1c 100644 --- a/include/mbedtls/bignum.h +++ b/include/mbedtls/bignum.h @@ -177,7 +177,7 @@ extern "C" { /** * \brief MPI structure */ -typedef struct +typedef struct mbedtls_mpi { int s; /*!< integer sign */ size_t n; /*!< total # of limbs */ diff --git a/include/mbedtls/blowfish.h b/include/mbedtls/blowfish.h index 985faa43f0..eea6882f75 100644 --- a/include/mbedtls/blowfish.h +++ b/include/mbedtls/blowfish.h @@ -55,7 +55,7 @@ extern "C" { /** * \brief Blowfish context structure */ -typedef struct +typedef struct mbedtls_blowfish_context { uint32_t P[MBEDTLS_BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ uint32_t S[4][256]; /*!< key dependent S-boxes */ diff --git a/include/mbedtls/camellia.h b/include/mbedtls/camellia.h index 7e4721af78..fa1e05ee7f 100644 --- a/include/mbedtls/camellia.h +++ b/include/mbedtls/camellia.h @@ -51,7 +51,7 @@ extern "C" { /** * \brief CAMELLIA context structure */ -typedef struct +typedef struct mbedtls_camellia_context { int nr; /*!< number of rounds */ uint32_t rk[68]; /*!< CAMELLIA round keys */ diff --git a/include/mbedtls/ccm.h b/include/mbedtls/ccm.h index 5d727e7cca..e1dc124b89 100644 --- a/include/mbedtls/ccm.h +++ b/include/mbedtls/ccm.h @@ -68,7 +68,8 @@ extern "C" { * \brief The CCM context-type definition. The CCM context is passed * to the APIs called. */ -typedef struct { +typedef struct mbedtls_ccm_context +{ mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ } mbedtls_ccm_context; diff --git a/include/mbedtls/chacha20.h b/include/mbedtls/chacha20.h index 47bd7d38b9..cfea40a574 100644 --- a/include/mbedtls/chacha20.h +++ b/include/mbedtls/chacha20.h @@ -52,7 +52,7 @@ extern "C" { #if !defined(MBEDTLS_CHACHA20_ALT) -typedef struct +typedef struct mbedtls_chacha20_context { uint32_t state[16]; /*! The state (before round operations). */ uint8_t keystream8[64]; /*! Leftover keystream bytes. */ diff --git a/include/mbedtls/chachapoly.h b/include/mbedtls/chachapoly.h index 42b2b230c5..7de6f4e8c6 100644 --- a/include/mbedtls/chachapoly.h +++ b/include/mbedtls/chachapoly.h @@ -60,7 +60,7 @@ mbedtls_chachapoly_mode_t; #include "chacha20.h" -typedef struct +typedef struct mbedtls_chachapoly_context { mbedtls_chacha20_context chacha20_ctx; /**< The ChaCha20 context. */ mbedtls_poly1305_context poly1305_ctx; /**< The Poly1305 context. */ diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index ea0ce983f1..3ac17f6a0c 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -235,7 +235,8 @@ typedef struct mbedtls_cmac_context_t mbedtls_cmac_context_t; * Cipher information. Allows calling cipher functions * in a generic way. */ -typedef struct { +typedef struct mbedtls_cipher_info_t +{ /** Full cipher identifier. For example, * MBEDTLS_CIPHER_AES_256_CBC. */ @@ -276,7 +277,8 @@ typedef struct { /** * Generic cipher context. */ -typedef struct { +typedef struct mbedtls_cipher_context_t +{ /** Information about the associated cipher. */ const mbedtls_cipher_info_t *cipher_info; diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index 3835d7299b..3a4b7f3f13 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -108,7 +108,7 @@ extern "C" { /** * \brief The CTR_DRBG context structure. */ -typedef struct +typedef struct mbedtls_ctr_drbg_context { unsigned char counter[16]; /*!< The counter (V). */ int reseed_counter; /*!< The reseed counter. */ diff --git a/include/mbedtls/des.h b/include/mbedtls/des.h index 6eb7d03bae..91d16b6fb4 100644 --- a/include/mbedtls/des.h +++ b/include/mbedtls/des.h @@ -61,7 +61,7 @@ extern "C" { * security risk. We recommend considering stronger ciphers * instead. */ -typedef struct +typedef struct mbedtls_des_context { uint32_t sk[32]; /*!< DES subkeys */ } @@ -70,7 +70,7 @@ mbedtls_des_context; /** * \brief Triple-DES context structure */ -typedef struct +typedef struct mbedtls_des3_context { uint32_t sk[96]; /*!< 3DES subkeys */ } diff --git a/include/mbedtls/dhm.h b/include/mbedtls/dhm.h index 75317a8e6d..3e1178940a 100644 --- a/include/mbedtls/dhm.h +++ b/include/mbedtls/dhm.h @@ -96,7 +96,7 @@ extern "C" { /** * \brief The DHM context structure. */ -typedef struct +typedef struct mbedtls_dhm_context { size_t len; /*!< The size of \p P in Bytes. */ mbedtls_mpi P; /*!< The prime modulus. */ diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 5fdf55a88a..95f39805c6 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -52,7 +52,7 @@ typedef enum /** * \brief The ECDH context structure. */ -typedef struct +typedef struct mbedtls_ecdh_context { mbedtls_ecp_group grp; /*!< The elliptic curve used. */ mbedtls_mpi d; /*!< The private key. */ diff --git a/include/mbedtls/ecjpake.h b/include/mbedtls/ecjpake.h index cc2b316f5e..59d12f080f 100644 --- a/include/mbedtls/ecjpake.h +++ b/include/mbedtls/ecjpake.h @@ -68,7 +68,7 @@ typedef enum { * convetion from the Thread v1.0 spec. Correspondance is indicated in the * description as a pair C: client name, S: server name */ -typedef struct +typedef struct mbedtls_ecjpake_context { const mbedtls_md_info_t *md_info; /**< Hash to use */ mbedtls_ecp_group grp; /**< Elliptic curve */ diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 3a407986dd..ed1b9d7368 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -92,7 +92,7 @@ typedef enum /** * Curve information, for use by other modules. */ -typedef struct +typedef struct mbedtls_ecp_curve_info { mbedtls_ecp_group_id grp_id; /*!< An internal identifier. */ uint16_t tls_id; /*!< The TLS NamedCurve identifier. */ @@ -111,7 +111,7 @@ typedef struct * Otherwise, \p X and \p Y are its standard (affine) * coordinates. */ -typedef struct +typedef struct mbedtls_ecp_point { mbedtls_mpi X; /*!< The X coordinate of the ECP point. */ mbedtls_mpi Y; /*!< The Y coordinate of the ECP point. */ @@ -156,7 +156,7 @@ mbedtls_ecp_point; * reduction. It must return 0 on success and non-zero on failure. * */ -typedef struct +typedef struct mbedtls_ecp_group { mbedtls_ecp_group_id id; /*!< An internal group identifier. */ mbedtls_mpi P; /*!< The prime modulus of the base field. */ @@ -251,7 +251,7 @@ mbedtls_ecp_group; * \note Members are deliberately in the same order as in the * ::mbedtls_ecdsa_context structure. */ -typedef struct +typedef struct mbedtls_ecp_keypair { mbedtls_ecp_group grp; /*!< Elliptic curve and base point */ mbedtls_mpi d; /*!< our secret value */ diff --git a/include/mbedtls/entropy.h b/include/mbedtls/entropy.h index a5cb05a584..ca06dc3c58 100644 --- a/include/mbedtls/entropy.h +++ b/include/mbedtls/entropy.h @@ -107,7 +107,7 @@ typedef int (*mbedtls_entropy_f_source_ptr)(void *data, unsigned char *output, s /** * \brief Entropy source state */ -typedef struct +typedef struct mbedtls_entropy_source_state { mbedtls_entropy_f_source_ptr f_source; /**< The entropy source callback */ void * p_source; /**< The callback data pointer */ @@ -120,7 +120,7 @@ mbedtls_entropy_source_state; /** * \brief Entropy context structure */ -typedef struct +typedef struct mbedtls_entropy_context { int accumulator_started; #if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) diff --git a/include/mbedtls/gcm.h b/include/mbedtls/gcm.h index 87535ab957..d2098eb9f9 100644 --- a/include/mbedtls/gcm.h +++ b/include/mbedtls/gcm.h @@ -53,7 +53,8 @@ extern "C" { /** * \brief The GCM context structure. */ -typedef struct { +typedef struct mbedtls_gcm_context +{ mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ uint64_t HL[16]; /*!< Precalculated HTable low. */ uint64_t HH[16]; /*!< Precalculated HTable high. */ diff --git a/include/mbedtls/havege.h b/include/mbedtls/havege.h index d4cb3ed38d..57e8c40943 100644 --- a/include/mbedtls/havege.h +++ b/include/mbedtls/havege.h @@ -35,7 +35,7 @@ extern "C" { /** * \brief HAVEGE state structure */ -typedef struct +typedef struct mbedtls_havege_state { int PT1, PT2, offset[2]; int pool[MBEDTLS_HAVEGE_COLLECT_SIZE]; diff --git a/include/mbedtls/hmac_drbg.h b/include/mbedtls/hmac_drbg.h index 2608de8595..3bc675ec7c 100644 --- a/include/mbedtls/hmac_drbg.h +++ b/include/mbedtls/hmac_drbg.h @@ -74,7 +74,7 @@ extern "C" { /** * HMAC_DRBG context. */ -typedef struct +typedef struct mbedtls_hmac_drbg_context { /* Working state: the key K is not stored explicitely, * but is implied by the HMAC context */ diff --git a/include/mbedtls/md.h b/include/mbedtls/md.h index 6b6f5c53dd..bf29524983 100644 --- a/include/mbedtls/md.h +++ b/include/mbedtls/md.h @@ -80,7 +80,8 @@ typedef struct mbedtls_md_info_t mbedtls_md_info_t; /** * The generic message-digest context. */ -typedef struct { +typedef struct mbedtls_md_context_t +{ /** Information about the associated message digest. */ const mbedtls_md_info_t *md_info; diff --git a/include/mbedtls/md2.h b/include/mbedtls/md2.h index 08e75b247b..a46bddb74b 100644 --- a/include/mbedtls/md2.h +++ b/include/mbedtls/md2.h @@ -55,7 +55,7 @@ extern "C" { * stronger message digests instead. * */ -typedef struct +typedef struct mbedtls_md2_context { unsigned char cksum[16]; /*!< checksum of the data block */ unsigned char state[48]; /*!< intermediate digest state */ diff --git a/include/mbedtls/md4.h b/include/mbedtls/md4.h index 8ee4e5cabf..1672e9074e 100644 --- a/include/mbedtls/md4.h +++ b/include/mbedtls/md4.h @@ -56,7 +56,7 @@ extern "C" { * stronger message digests instead. * */ -typedef struct +typedef struct mbedtls_md4_context { uint32_t total[2]; /*!< number of bytes processed */ uint32_t state[4]; /*!< intermediate digest state */ diff --git a/include/mbedtls/md5.h b/include/mbedtls/md5.h index 43ead4b747..4c9509010b 100644 --- a/include/mbedtls/md5.h +++ b/include/mbedtls/md5.h @@ -55,7 +55,7 @@ extern "C" { * stronger message digests instead. * */ -typedef struct +typedef struct mbedtls_md5_context { uint32_t total[2]; /*!< number of bytes processed */ uint32_t state[4]; /*!< intermediate digest state */ diff --git a/include/mbedtls/net_sockets.h b/include/mbedtls/net_sockets.h index 0f9b31ebcb..40f331737b 100644 --- a/include/mbedtls/net_sockets.h +++ b/include/mbedtls/net_sockets.h @@ -68,7 +68,7 @@ extern "C" { * (eg two file descriptors for combined IPv4 + IPv6 support, or additional * structures for hand-made UDP demultiplexing). */ -typedef struct +typedef struct mbedtls_net_context { int fd; /**< The underlying file descriptor */ } diff --git a/include/mbedtls/oid.h b/include/mbedtls/oid.h index 408645ece7..bd4f179f6c 100644 --- a/include/mbedtls/oid.h +++ b/include/mbedtls/oid.h @@ -388,7 +388,8 @@ extern "C" { /** * \brief Base OID descriptor structure */ -typedef struct { +typedef struct mbedtls_oid_descriptor_t +{ const char *asn1; /*!< OID ASN.1 representation */ size_t asn1_len; /*!< length of asn1 */ const char *name; /*!< official name (e.g. from RFC) */ diff --git a/include/mbedtls/pem.h b/include/mbedtls/pem.h index 2cf4c0a709..fa82f7bdbd 100644 --- a/include/mbedtls/pem.h +++ b/include/mbedtls/pem.h @@ -51,7 +51,7 @@ extern "C" { /** * \brief PEM context structure */ -typedef struct +typedef struct mbedtls_pem_context { unsigned char *buf; /*!< buffer for decoded data */ size_t buflen; /*!< length of the buffer */ diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index ee06b2fd20..db54c6a6ef 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -87,7 +87,7 @@ typedef enum { * \brief Options for RSASSA-PSS signature verification. * See \c mbedtls_rsa_rsassa_pss_verify_ext() */ -typedef struct +typedef struct mbedtls_pk_rsassa_pss_options { mbedtls_md_type_t mgf1_hash_id; int expected_salt_len; @@ -107,7 +107,7 @@ typedef enum /** * \brief Item to send to the debug module */ -typedef struct +typedef struct mbedtls_pk_debug_item { mbedtls_pk_debug_type type; const char *name; @@ -125,7 +125,7 @@ typedef struct mbedtls_pk_info_t mbedtls_pk_info_t; /** * \brief Public key container */ -typedef struct +typedef struct mbedtls_pk_context { const mbedtls_pk_info_t * pk_info; /**< Public key informations */ void * pk_ctx; /**< Underlying public key context */ diff --git a/include/mbedtls/pkcs11.h b/include/mbedtls/pkcs11.h index bf65c55a79..02427ddc1e 100644 --- a/include/mbedtls/pkcs11.h +++ b/include/mbedtls/pkcs11.h @@ -50,7 +50,8 @@ extern "C" { /** * Context for PKCS #11 private keys. */ -typedef struct { +typedef struct mbedtls_pkcs11_context +{ pkcs11h_certificate_t pkcs11h_cert; int len; } mbedtls_pkcs11_context; diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index 624cc642ac..a40a64f9c6 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -315,7 +315,8 @@ int mbedtls_platform_set_nv_seed( * \note This structure may be used to assist platform-specific * setup or teardown operations. */ -typedef struct { +typedef struct mbedtls_platform_context +{ char dummy; /**< A placeholder member, as empty structs are not portable. */ } mbedtls_platform_context; diff --git a/include/mbedtls/poly1305.h b/include/mbedtls/poly1305.h index 54b50abc25..c490cdf2bd 100644 --- a/include/mbedtls/poly1305.h +++ b/include/mbedtls/poly1305.h @@ -52,7 +52,7 @@ extern "C" { #if !defined(MBEDTLS_POLY1305_ALT) -typedef struct +typedef struct mbedtls_poly1305_context { uint32_t r[4]; /** The value for 'r' (low 128 bits of the key). */ uint32_t s[4]; /** The value for 's' (high 128 bits of the key). */ diff --git a/include/mbedtls/ripemd160.h b/include/mbedtls/ripemd160.h index a0dac0c360..0c8e568b9e 100644 --- a/include/mbedtls/ripemd160.h +++ b/include/mbedtls/ripemd160.h @@ -46,7 +46,7 @@ extern "C" { /** * \brief RIPEMD-160 context structure */ -typedef struct +typedef struct mbedtls_ripemd160_context { uint32_t total[2]; /*!< number of bytes processed */ uint32_t state[5]; /*!< intermediate digest state */ diff --git a/include/mbedtls/rsa.h b/include/mbedtls/rsa.h index 19eb2ee74c..6eea5af2f0 100644 --- a/include/mbedtls/rsa.h +++ b/include/mbedtls/rsa.h @@ -92,7 +92,7 @@ extern "C" { * is deprecated. All manipulation should instead be done through * the public interface functions. */ -typedef struct +typedef struct mbedtls_rsa_context { int ver; /*!< Always 0.*/ size_t len; /*!< The size of \p N in Bytes. */ diff --git a/include/mbedtls/sha1.h b/include/mbedtls/sha1.h index 65a124c94b..7a19da0a48 100644 --- a/include/mbedtls/sha1.h +++ b/include/mbedtls/sha1.h @@ -58,7 +58,7 @@ extern "C" { * stronger message digests instead. * */ -typedef struct +typedef struct mbedtls_sha1_context { uint32_t total[2]; /*!< The number of Bytes processed. */ uint32_t state[5]; /*!< The intermediate digest state. */ diff --git a/include/mbedtls/sha256.h b/include/mbedtls/sha256.h index adf31a82ed..33aff28314 100644 --- a/include/mbedtls/sha256.h +++ b/include/mbedtls/sha256.h @@ -53,7 +53,7 @@ extern "C" { * checksum calculations. The choice between these two is * made in the call to mbedtls_sha256_starts_ret(). */ -typedef struct +typedef struct mbedtls_sha256_context { uint32_t total[2]; /*!< The number of Bytes processed. */ uint32_t state[8]; /*!< The intermediate digest state. */ diff --git a/include/mbedtls/sha512.h b/include/mbedtls/sha512.h index 5bb83f43bd..0145890424 100644 --- a/include/mbedtls/sha512.h +++ b/include/mbedtls/sha512.h @@ -52,7 +52,7 @@ extern "C" { * checksum calculations. The choice between these two is * made in the call to mbedtls_sha512_starts_ret(). */ -typedef struct +typedef struct mbedtls_sha512_context { uint64_t total[2]; /*!< The number of Bytes processed. */ uint64_t state[8]; /*!< The intermediate digest state. */ diff --git a/include/mbedtls/ssl_cookie.h b/include/mbedtls/ssl_cookie.h index 80b65bbbb9..6a0ad4fa96 100644 --- a/include/mbedtls/ssl_cookie.h +++ b/include/mbedtls/ssl_cookie.h @@ -50,7 +50,7 @@ extern "C" { /** * \brief Context for the default cookie functions. */ -typedef struct +typedef struct mbedtls_ssl_cookie_ctx { mbedtls_md_context_t hmac_ctx; /*!< context for the HMAC portion */ #if !defined(MBEDTLS_HAVE_TIME) diff --git a/include/mbedtls/ssl_ticket.h b/include/mbedtls/ssl_ticket.h index 93ad46ac9c..b2686df09f 100644 --- a/include/mbedtls/ssl_ticket.h +++ b/include/mbedtls/ssl_ticket.h @@ -44,7 +44,7 @@ extern "C" { /** * \brief Information for session ticket protection */ -typedef struct +typedef struct mbedtls_ssl_ticket_key { unsigned char name[4]; /*!< random key identifier */ uint32_t generation_time; /*!< key generation timestamp (seconds) */ @@ -55,7 +55,7 @@ mbedtls_ssl_ticket_key; /** * \brief Context for session ticket handling functions */ -typedef struct +typedef struct mbedtls_ssl_ticket_context { mbedtls_ssl_ticket_key keys[2]; /*!< ticket protection keys */ unsigned char active; /*!< index of the currently active key */ diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index aeea5d0e1a..d45d613616 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -42,7 +42,7 @@ extern "C" { #if defined(MBEDTLS_THREADING_PTHREAD) #include -typedef struct +typedef struct mbedtls_threading_mutex_t { pthread_mutex_t mutex; char is_valid; diff --git a/include/mbedtls/timing.h b/include/mbedtls/timing.h index bbcb90688a..a965fe0d35 100644 --- a/include/mbedtls/timing.h +++ b/include/mbedtls/timing.h @@ -51,7 +51,7 @@ struct mbedtls_timing_hr_time /** * \brief Context for mbedtls_timing_set/get_delay() */ -typedef struct +typedef struct mbedtls_timing_delay_context { struct mbedtls_timing_hr_time timer; uint32_t int_ms; diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index ac23cffe84..d41ec93a66 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -105,7 +105,7 @@ mbedtls_x509_crt; * * All lists are bitfields, built by ORing flags from MBEDTLS_X509_ID_FLAG(). */ -typedef struct +typedef struct mbedtls_x509_crt_profile { uint32_t allowed_mds; /**< MDs for signatures */ uint32_t allowed_pks; /**< PK algs for signatures */ diff --git a/include/mbedtls/xtea.h b/include/mbedtls/xtea.h index 8df708a3a5..c70c3fe265 100644 --- a/include/mbedtls/xtea.h +++ b/include/mbedtls/xtea.h @@ -50,7 +50,7 @@ extern "C" { /** * \brief XTEA context structure */ -typedef struct +typedef struct mbedtls_xtea_context { uint32_t k[4]; /*!< key */ } From ecb635efca154a929039e9b40f212fed923f79e2 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 24 Jul 2018 10:03:41 +0100 Subject: [PATCH 0659/1100] Add ChangeLog entry for #1098 fix. --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 305eef60b2..2b19e3547e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -29,6 +29,9 @@ Bugfix by Brendan Shanks. Part of a fix for #992. * Fix compilation error when MBEDTLS_ARC4_C is disabled and MBEDTLS_CIPHER_NULL_CIPHER is enabled. Found by TrinityTonic in #1719. + * Fix compiler warning of 'use before initialisation' in + mbedtls_pk_parse_key(). Found by Martin Boye Petersen and fixed by Dawid + Drozd. #1098 Changes * Change the shebang line in Perl scripts to look up perl in the PATH. From 463928a74b05219eb42f130eb94e1ea7a0d16821 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Tue, 24 Jul 2018 12:50:59 +0200 Subject: [PATCH 0660/1100] Fix code formatting --- library/x509_crt.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 493d6334f8..2e7701d4fa 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -575,10 +575,10 @@ static int x509_get_crt_ext( unsigned char **p, /* Get extension ID */ if( ( ret = mbedtls_asn1_get_tag( p, end_ext_data, &extn_oid.len, - MBEDTLS_ASN1_OID ) ) != 0 ) + MBEDTLS_ASN1_OID ) ) != 0 ) return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS + ret ); - extn_oid.tag = MBEDTLS_ASN1_OID; + extn_oid.tag = MBEDTLS_ASN1_OID; extn_oid.p = *p; *p += extn_oid.len; @@ -729,7 +729,7 @@ static int x509_crt_parse_der_core( mbedtls_x509_crt *crt, const unsigned char * memcpy( p, buf, crt->raw.len ); - // Direct pointers to the new buffer + // Direct pointers to the new buffer p += crt->raw.len - len; end = crt_end = p + len; From c9a5f02eabff9ee2440352b6c7fe084f713a6a27 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Tue, 24 Jul 2018 13:53:31 +0200 Subject: [PATCH 0661/1100] Move comment to a separate line --- library/ssl_tls.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 661263abdf..87af274023 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5678,7 +5678,9 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, /* * Prepare base structures */ - ssl->out_buf = NULL; /* Set to NULL in case of an error condition */ + + /* Set to NULL in case of an error condition */ + ssl->out_buf = NULL; ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN ); if( ssl->in_buf == NULL ) From 05330541eaf9037c92706eea311e9f971da03193 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 24 Jul 2018 12:54:15 +0100 Subject: [PATCH 0662/1100] Revise ChangeLog entry for empty data records fixes --- ChangeLog | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index e0e2ea952f..8888f994b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -37,11 +37,12 @@ Bugfix * Fix compiler warning of 'use before initialisation' in mbedtls_pk_parse_key(). Found by Martin Boye Petersen and fixed by Dawid Drozd. #1098 - * Fix decryption of zero length messages (all padding) in some circumstances: - DTLS 1.0 and 1.2, and CBC ciphersuites using encrypt-then-MAC. Most often - seen when communicating with OpenSSL using TLS 1.0. Reported by @kFYatek - (#1632) and by Conor Murphy on the forum. Fix contributed by Espressif - Systems. + * Fix decryption for zero length messages (which contain all padding) when a + CBC based ciphersuite is used together with Encrypt-then-MAC. Previously, + such a message was wrongly reported as an invalid record and therefore lead + to the connection being terminated. Seen most often with OpenSSL using + TLS 1.0. Reported by @kFYatek and by Conor Murphy on the forum. Fix + contributed by Espressif Systems. Fixes #1632 * Fail when receiving a TLS alert message with an invalid length, or invalid zero-length messages when using TLS 1.2. Contributed by Espressif Systems. * Fix ssl_client2 example to send application data with 0-length content From 466a57fbbe5f88dd8ac0b4ff4b617296d728eacc Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 3 May 2018 16:54:28 +0300 Subject: [PATCH 0663/1100] Key wrapping API definition Define the Key Wrapping API --- include/mbedtls/check_config.h | 5 + include/mbedtls/config.h | 14 +++ include/mbedtls/nist_kw.h | 178 +++++++++++++++++++++++++++++++++ library/version_features.c | 6 ++ 4 files changed, 203 insertions(+) create mode 100644 include/mbedtls/nist_kw.h diff --git a/include/mbedtls/check_config.h b/include/mbedtls/check_config.h index 4689f3a4d2..9e6bb8a46a 100644 --- a/include/mbedtls/check_config.h +++ b/include/mbedtls/check_config.h @@ -87,6 +87,11 @@ #error "MBEDTLS_CMAC_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_NIST_KW_C) && \ + ( !defined(MBEDTLS_AES_C) || !defined(MBEDTLS_CIPHER_C) ) +#error "MBEDTLS_NIST_KW_C defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_ECDH_C) && !defined(MBEDTLS_ECP_C) #error "MBEDTLS_ECDH_C defined, but not all prerequisites" #endif diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 17208b5895..70820be56f 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -308,6 +308,7 @@ //#define MBEDTLS_DHM_ALT //#define MBEDTLS_ECJPAKE_ALT //#define MBEDTLS_GCM_ALT +//#define MBEDTLS_NIST_KW_ALT //#define MBEDTLS_MD2_ALT //#define MBEDTLS_MD4_ALT //#define MBEDTLS_MD5_ALT @@ -2248,6 +2249,19 @@ */ #define MBEDTLS_HMAC_DRBG_C +/** + * \def MBEDTLS_NIST_KW_C + * + * Enable the Key Wrapping mode for 128-bit block ciphers, + * as defined in NIST SP 800-38F. Only KW and KWP modes + * are supported. At the moment, only AES is approved by NIST. + * + * Module: library/nist_kw.c + * + * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C + */ +//#define MBEDTLS_NIST_KW_C + /** * \def MBEDTLS_MD_C * diff --git a/include/mbedtls/nist_kw.h b/include/mbedtls/nist_kw.h new file mode 100644 index 0000000000..5a0f656a8f --- /dev/null +++ b/include/mbedtls/nist_kw.h @@ -0,0 +1,178 @@ +/** + * \file nist_kw.h + * + * \brief This file provides an API for key wrapping (KW) and key wrapping with + * padding (KWP) as defined in NIST SP 800-38F. + * https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf + * + * Key wrapping specifies a deterministic authenticated-encryption mode + * of operation, according to NIST SP 800-38F: Recommendation for + * Block Cipher Modes of Operation: Methods for Key Wrapping. Its + * purpose is to protect cryptographic keys. + * + * Its equivalent is RFC 3394 for KW, and RFC 5649 for KWP. + * https://tools.ietf.org/html/rfc3394 + * https://tools.ietf.org/html/rfc5649 + * + */ +/* + * Copyright (C) 2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_NIST_KW_H +#define MBEDTLS_NIST_KW_H + +#include "cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum +{ + MBEDTLS_KW_MODE_KW = 0, + MBEDTLS_KW_MODE_KWP = 1 +} mbedtls_nist_kw_mode_t; + +#if !defined(MBEDTLS_NIST_KW_ALT) +// Regular implementation +// + +/** + * \brief The key wrapping context-type definition. The key wrapping context is passed + * to the APIs called. + * + * \note The definition of this type may change in future library versions. + * Don't make any assumptions on this context! + */ +typedef struct { + mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ +} mbedtls_nist_kw_context; + +#else /* MBEDTLS_NIST_key wrapping_ALT */ +#include "nist_kw_alt.h" +#endif /* MBEDTLS_NIST_KW_ALT */ + +/** + * \brief This function initializes the specified key wrapping context + * to make references valid and prepare the context + * for mbedtls_nist_kw_setkey() or mbedtls_nist_kw_free(). + * + * \param ctx The key wrapping context to initialize. + * + */ +void mbedtls_nist_kw_init( mbedtls_nist_kw_context *ctx ); + +/** + * \brief This function initializes the key wrapping context set in the + * \p ctx parameter and sets the encryption key. + * + * \param ctx The key wrapping context. + * \param cipher The 128-bit block cipher to use. Only AES is supported. + * \param key The Key Encryption Key (KEK). + * \param keybits The KEK size in bits. This must be acceptable by the cipher. + * \param is_wrap Specify whether the operation within the context is wrapping or unwrapping + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for any invalid input. + * \return \c MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE for 128-bit block ciphers + * which are not supported. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_setkey( mbedtls_nist_kw_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits, + const int is_wrap ); + +/** + * \brief This function releases and clears the specified key wrapping context + * and underlying cipher sub-context. + * + * \param ctx The key wrapping context to clear. + */ +void mbedtls_nist_kw_free( mbedtls_nist_kw_context *ctx ); + +/** + * \brief This function encrypts a buffer using key wrapping. + * + * \param ctx The key wrapping context to use for encryption. + * \param mode The key wrapping mode to use (MBEDTLS_KW_MODE_KW or MBEDTLS_KW_MODE_KWP) + * \param input The buffer holding the input data. + * \param in_len The length of the input data in Bytes. + * The input uses units of 8 Bytes called semiblocks. + *
    • For KW mode: a multiple of 8 bytes between 16 and 2^57-8 inclusive.
    • + *
    • For KWP mode: any length between 1 and 2^32-1 inclusive.
    + * \param[out] output The buffer holding the output data. + *
    • For KW mode: Must be at least 8 bytes larger than \p in_len.
    • + *
    • For KWP mode: Must be at least 8 bytes larger rounded up to a multiple of + * 8 bytes for KWP (15 bytes at most).
    + * \param[out] out_len The number of bytes written to the output buffer. \c 0 on failure. + * \param[in] out_size The capacity of the output buffer. + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for invalid input length. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t* out_len, size_t out_size ); + +/** + * \brief This function decrypts a buffer using key wrapping. + * + * \param ctx The key wrapping context to use for decryption. + * \param mode The key wrapping mode to use (MBEDTLS_KW_MODE_KW or MBEDTLS_KW_MODE_KWP) + * \param input The buffer holding the input data. + * \param in_len The length of the input data in Bytes. + * The input uses units of 8 Bytes called semiblocks. + * The input must be a multiple of semiblocks. + *
    • For KW mode: a multiple of 8 bytes between 24 and 2^57 inclusive.
    • + *
    • For KWP mode: a multiple of 8 bytes between 16 and 2^32 inclusive.
    + * \param[out] output The buffer holding the output data. + * The output buffer's minimal length is 8 bytes shorter than \p in_len. + * \param[out] out_len The number of bytes written to the output buffer. \c 0 on failure. + * For KWP mode, the length could be up to 15 bytes shorter than \p in_len, + * depending on how much padding was added to the data. + * \param[in] out_size The capacity of the output buffer. + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for invalid input length. + * \return \c MBEDTLS_ERR_CIPHER_AUTH_FAILED for verification failure of the ciphertext. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_unwrap( mbedtls_nist_kw_context *ctx, mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t* out_len, size_t out_size); + + +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) +/** + * \brief The key wrapping checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_nist_kw_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_NIST_KW_H */ diff --git a/library/version_features.c b/library/version_features.c index b6135462f0..777b6034c4 100644 --- a/library/version_features.c +++ b/library/version_features.c @@ -126,6 +126,9 @@ static const char *features[] = { #if defined(MBEDTLS_GCM_ALT) "MBEDTLS_GCM_ALT", #endif /* MBEDTLS_GCM_ALT */ +#if defined(MBEDTLS_NIST_KW_ALT) + "MBEDTLS_NIST_KW_ALT", +#endif /* MBEDTLS_NIST_KW_ALT */ #if defined(MBEDTLS_MD2_ALT) "MBEDTLS_MD2_ALT", #endif /* MBEDTLS_MD2_ALT */ @@ -618,6 +621,9 @@ static const char *features[] = { #if defined(MBEDTLS_HMAC_DRBG_C) "MBEDTLS_HMAC_DRBG_C", #endif /* MBEDTLS_HMAC_DRBG_C */ +#if defined(MBEDTLS_NIST_KW_C) + "MBEDTLS_NIST_KW_C", +#endif /* MBEDTLS_NIST_KW_C */ #if defined(MBEDTLS_MD_C) "MBEDTLS_MD_C", #endif /* MBEDTLS_MD_C */ From cb349ac27943c06283290a498653925995351572 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 15 Jul 2018 09:29:47 +0300 Subject: [PATCH 0664/1100] Implement the KW and KWP algorithm 1. Add kw to the Makefiles 2. Implement the algorithms as defined in SP800-38F, and RFC 3394. --- library/CMakeLists.txt | 1 + library/Makefile | 10 +- library/nist_kw.c | 537 +++++++++++++++++++++++++++++++++ visualc/VS2010/mbedTLS.vcxproj | 2 + 4 files changed, 545 insertions(+), 5 deletions(-) create mode 100644 library/nist_kw.c diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 4aba062bcb..70fff520a2 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -40,6 +40,7 @@ set(src_crypto md5.c md_wrap.c memory_buffer_alloc.c + nist_kw.c oid.c padlock.c pem.c diff --git a/library/Makefile b/library/Makefile index b1597e0e51..ac88d4c3f1 100644 --- a/library/Makefile +++ b/library/Makefile @@ -76,11 +76,11 @@ OBJS_CRYPTO= aes.o aesni.o arc4.o \ hkdf.o \ hmac_drbg.o md.o md2.o \ md4.o md5.o md_wrap.o \ - memory_buffer_alloc.o oid.o \ - padlock.o pem.o pk.o \ - pk_wrap.o pkcs12.o pkcs5.o \ - pkparse.o pkwrite.o platform.o \ - platform_util.o poly1305.o \ + memory_buffer_alloc.o nist_kw.o \ + oid.o padlock.o pem.o \ + pk.o pk_wrap.o pkcs12.o \ + pkcs5.o pkparse.o pkwrite.o \ + platform.o platform_util.o poly1305.o \ ripemd160.o rsa_internal.o rsa.o \ sha1.o sha256.o sha512.o \ threading.o timing.o version.o \ diff --git a/library/nist_kw.c b/library/nist_kw.c new file mode 100644 index 0000000000..b7790d73c2 --- /dev/null +++ b/library/nist_kw.c @@ -0,0 +1,537 @@ +/* + * Implementation of NIST SP 800-38F key wrapping, supporting KW and KWP modes + * only + * + * Copyright (C) 2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +/* + * Definition of Key Wrapping: + * https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf + * RFC 3394 "Advanced Encryption Standard (AES) Key Wrap Algorithm" + * RFC 5649 "Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm" + * + * Note: RFC 3394 defines different methodology for intermediate operations for + * the wrapping and unwrapping operation than the definition in NIST SP 800-38F. + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_NIST_KW_C) + +#include "mbedtls/nist_kw.h" +#include "mbedtls/platform_util.h" + +#include +#include + +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#else +#include +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_C */ +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ + +#if !defined(MBEDTLS_NIST_KW_ALT) + +#define KW_SEMIBLOCK_LENGTH 8 +#define MIN_SEMIBLOCKS_COUNT 3 + +/* constant-time buffer comparison */ +static inline unsigned char mbedtls_nist_kw_safer_memcmp( const void *a, const void *b, size_t n ) +{ + size_t i; + volatile const unsigned char *A = (volatile const unsigned char *) a; + volatile const unsigned char *B = (volatile const unsigned char *) b; + volatile unsigned char diff = 0; + + for( i = 0; i < n; i++ ) + { + /* Read volatile data in order before computing diff. + * This avoids IAR compiler warning: + * 'the order of volatile accesses is undefined ..' */ + unsigned char x = A[i], y = B[i]; + diff |= x ^ y; + } + + return( diff ); +} + +/*! The 64-bit default integrity check value (ICV) for KW mode. */ +static const unsigned char NIST_KW_ICV1[] = {0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6}; +/*! The 32-bit default integrity check value (ICV) for KWP mode. */ +static const unsigned char NIST_KW_ICV2[] = {0xA6, 0x59, 0x59, 0xA6}; + +#ifndef GET_UINT32_BE +#define GET_UINT32_BE(n,b,i) \ +do { \ + (n) = ( (uint32_t) (b)[(i) ] << 24 ) \ + | ( (uint32_t) (b)[(i) + 1] << 16 ) \ + | ( (uint32_t) (b)[(i) + 2] << 8 ) \ + | ( (uint32_t) (b)[(i) + 3] ); \ +} while( 0 ) +#endif + +#ifndef PUT_UINT32_BE +#define PUT_UINT32_BE(n,b,i) \ +do { \ + (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \ + (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \ + (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \ + (b)[(i) + 3] = (unsigned char) ( (n) ); \ +} while( 0 ) +#endif + +/* + * Initialize context + */ +void mbedtls_nist_kw_init( mbedtls_nist_kw_context *ctx ) +{ + memset( ctx, 0, sizeof( mbedtls_nist_kw_context ) ); +} + +int mbedtls_nist_kw_setkey( mbedtls_nist_kw_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits, + const int is_wrap ) +{ + int ret; + const mbedtls_cipher_info_t *cipher_info; + + cipher_info = mbedtls_cipher_info_from_values( cipher, + keybits, + MBEDTLS_MODE_ECB ); + if( cipher_info == NULL ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + if( cipher_info->block_size != 16 ) + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + + /* + * SP 800-38F currently defines AES cipher as the only block cipher allowed: + * "For KW and KWP, the underlying block cipher shall be approved, and the + * block size shall be 128 bits. Currently, the AES block cipher, with key + * lengths of 128, 192, or 256 bits, is the only block cipher that fits + * this profile." + * Currently we don't support other 128 bit block ciphers for key wrapping, + * such as Camellia and Aria. + */ + if( cipher != MBEDTLS_CIPHER_ID_AES ) + return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE ); + + mbedtls_cipher_free( &ctx->cipher_ctx ); + + if( ( ret = mbedtls_cipher_setup( &ctx->cipher_ctx, cipher_info ) ) != 0 ) + return( ret ); + + if( ( ret = mbedtls_cipher_setkey( &ctx->cipher_ctx, key, keybits, + is_wrap ? MBEDTLS_ENCRYPT : + MBEDTLS_DECRYPT ) + ) != 0 ) + { + return( ret ); + } + + return( 0 ); +} + +/* + * Free context + */ +void mbedtls_nist_kw_free( mbedtls_nist_kw_context *ctx ) +{ + mbedtls_cipher_free( &ctx->cipher_ctx ); + mbedtls_platform_zeroize( ctx, sizeof( mbedtls_nist_kw_context ) ); +} + +/* + * Helper function for Xoring the uint64_t "t" with the encrypted A. + * Defined in NIST SP 800-38F section 6.1 + */ +static void calc_a_xor_t( unsigned char A[KW_SEMIBLOCK_LENGTH], uint64_t t ) +{ + size_t i = 0; + for( i = 0; i < sizeof( t ); i++ ) + { + A[i] ^= ( t >> ( ( sizeof( t ) - 1 - i ) * 8 ) ) & 0xff; + } +} + +/* + * KW-AE as defined in SP 800-38F section 6.2 + * KWP-AE as defined in SP 800-38F section 6.3 + */ +int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, + mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t *out_len, size_t out_size ) +{ + int ret = 0; + size_t semiblocks = 0; + size_t s; + size_t olen, padlen = 0; + uint64_t t = 0; + unsigned char outbuff[KW_SEMIBLOCK_LENGTH * 2]; + unsigned char inbuff[KW_SEMIBLOCK_LENGTH * 2]; + unsigned char *R2 = output + KW_SEMIBLOCK_LENGTH; + unsigned char *A = output; + + *out_len = 0; + /* + * Generate the String to work on + */ + if( mode == MBEDTLS_KW_MODE_KW ) + { + if( out_size < in_len + KW_SEMIBLOCK_LENGTH ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + /* + * According to SP 800-38F Table 1, the plaintext length for KW + * must be between 2 to 2^54-1 semiblocks inclusive. + */ + if( in_len < 16 || +#if SIZE_MAX > 0x1FFFFFFFFFFFFF8 + in_len > 0x1FFFFFFFFFFFFF8 || +#endif + in_len % KW_SEMIBLOCK_LENGTH != 0 ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + memcpy( output, NIST_KW_ICV1, KW_SEMIBLOCK_LENGTH ); + memmove( output + KW_SEMIBLOCK_LENGTH, input, in_len ); + } + else + { + if( in_len % 8 != 0 ) + { + padlen = ( 8 - ( in_len % 8 ) ); + } + + if( out_size < in_len + KW_SEMIBLOCK_LENGTH + padlen ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + /* + * According to SP 800-38F Table 1, the plaintext length for KWP + * must be between 1 and 2^32-1 octets inclusive. + */ + if( in_len < 1 +#if SIZE_MAX > 0xFFFFFFFF + || in_len > 0xFFFFFFFF +#endif + ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + memcpy( output, NIST_KW_ICV2, KW_SEMIBLOCK_LENGTH / 2 ); + PUT_UINT32_BE( ( in_len & 0xffffffff ), output, + KW_SEMIBLOCK_LENGTH / 2 ); + + memcpy( output + KW_SEMIBLOCK_LENGTH, input, in_len ); + memset( output + KW_SEMIBLOCK_LENGTH + in_len, 0, padlen ); + } + semiblocks = ( ( in_len + padlen ) / KW_SEMIBLOCK_LENGTH ) + 1; + + s = 6 * ( semiblocks - 1 ); + + if( mode == MBEDTLS_KW_MODE_KWP + && in_len <= KW_SEMIBLOCK_LENGTH ) + { + memcpy( inbuff, output, 16 ); + ret = mbedtls_cipher_update( &ctx->cipher_ctx, + inbuff, 16, output, &olen ); + if( ret != 0 ) + goto cleanup; + } + else + { + /* + * Do the wrapping function W, as defined in RFC 3394 section 2.2.1 + */ + if( semiblocks < MIN_SEMIBLOCKS_COUNT ) + { + ret = MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA; + goto cleanup; + } + + /* Calculate intermediate values */ + for( t = 1; t <= s; t++ ) + { + memcpy( inbuff, A, KW_SEMIBLOCK_LENGTH ); + memcpy( inbuff + KW_SEMIBLOCK_LENGTH, R2, KW_SEMIBLOCK_LENGTH ); + + ret = mbedtls_cipher_update( &ctx->cipher_ctx, + inbuff, 16, outbuff, &olen ); + if( ret != 0 ) + goto cleanup; + + memcpy( A, outbuff, KW_SEMIBLOCK_LENGTH ); + calc_a_xor_t( A, t ); + + memcpy( R2, outbuff + KW_SEMIBLOCK_LENGTH, KW_SEMIBLOCK_LENGTH ); + R2 += KW_SEMIBLOCK_LENGTH; + if( R2 >= output + ( semiblocks * KW_SEMIBLOCK_LENGTH ) ) + R2 = output + KW_SEMIBLOCK_LENGTH; + } + } + + *out_len = semiblocks * KW_SEMIBLOCK_LENGTH; + +cleanup: + + if( ret != 0) + { + memset( output, 0, semiblocks * KW_SEMIBLOCK_LENGTH ); + } + mbedtls_platform_zeroize( inbuff, KW_SEMIBLOCK_LENGTH * 2 ); + mbedtls_platform_zeroize( outbuff, KW_SEMIBLOCK_LENGTH * 2 ); + mbedtls_cipher_finish( &ctx->cipher_ctx, NULL, &olen ); + return( ret ); +} + +/* + * W-1 function as defined in RFC 3394 section 2.2.2 + * This function assumes the following: + * 1. Output buffer is at least of size ( semiblocks - 1 ) * KW_SEMIBLOCK_LENGTH. + * 2. The input buffer is of size semiblocks * KW_SEMIBLOCK_LENGTH. + * 3. Minimal number of semiblocks is 3. + * 4. A is a buffer to hold the first semiblock of the input buffer. + */ +static int unwrap( mbedtls_nist_kw_context *ctx, + const unsigned char *input, size_t semiblocks, + unsigned char A[KW_SEMIBLOCK_LENGTH], + unsigned char *output, size_t* out_len ) +{ + int ret = 0; + const size_t s = 6 * ( semiblocks - 1 ); + size_t olen; + uint64_t t = 0; + unsigned char outbuff[KW_SEMIBLOCK_LENGTH * 2]; + unsigned char inbuff[KW_SEMIBLOCK_LENGTH * 2]; + unsigned char *R = output + ( semiblocks - 2 ) * KW_SEMIBLOCK_LENGTH; + *out_len = 0; + + if( semiblocks < MIN_SEMIBLOCKS_COUNT ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + memcpy( A, input, KW_SEMIBLOCK_LENGTH ); + memmove( output, input + KW_SEMIBLOCK_LENGTH, ( semiblocks - 1 ) * KW_SEMIBLOCK_LENGTH ); + + /* Calculate intermediate values */ + for( t = s; t >= 1; t-- ) + { + calc_a_xor_t( A, t ); + + memcpy( inbuff, A, KW_SEMIBLOCK_LENGTH ); + memcpy( inbuff + KW_SEMIBLOCK_LENGTH, R, KW_SEMIBLOCK_LENGTH ); + + ret = mbedtls_cipher_update( &ctx->cipher_ctx, + inbuff, 16, outbuff, &olen ); + if( ret != 0 ) + goto cleanup; + + memcpy( A, outbuff, KW_SEMIBLOCK_LENGTH ); + + /* Set R as LSB64 of outbuff */ + memcpy( R, outbuff + KW_SEMIBLOCK_LENGTH, KW_SEMIBLOCK_LENGTH ); + + if( R == output ) + R = output + ( semiblocks - 2 ) * KW_SEMIBLOCK_LENGTH; + else + R -= KW_SEMIBLOCK_LENGTH; + } + + *out_len = ( semiblocks - 1 ) * KW_SEMIBLOCK_LENGTH; + +cleanup: + if( ret != 0) + memset( output, 0, ( semiblocks - 1 ) * KW_SEMIBLOCK_LENGTH ); + mbedtls_platform_zeroize( inbuff, sizeof( inbuff ) ); + mbedtls_platform_zeroize( outbuff, sizeof( outbuff ) ); + + return( ret ); +} + +/* + * KW-AD as defined in SP 800-38F section 6.2 + * KWP-AD as defined in SP 800-38F section 6.3 + */ +int mbedtls_nist_kw_unwrap( mbedtls_nist_kw_context *ctx, + mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t *out_len, size_t out_size ) +{ + int ret = 0; + size_t i, olen; + unsigned char A[KW_SEMIBLOCK_LENGTH]; + unsigned char diff, bad_padding = 0; + + *out_len = 0; + if( out_size < in_len - KW_SEMIBLOCK_LENGTH ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + if( mode == MBEDTLS_KW_MODE_KW ) + { + /* + * According to SP 800-38F Table 1, the ciphertext length for KW + * must be between 3 to 2^54 semiblocks inclusive. + */ + if( in_len < 24 || +#if SIZE_MAX > 0x200000000000000 + in_len > 0x200000000000000 || +#endif + in_len % KW_SEMIBLOCK_LENGTH != 0 ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + ret = unwrap( ctx, input, in_len / KW_SEMIBLOCK_LENGTH, + A, output, out_len ); + if( ret != 0 ) + goto cleanup; + + /* Check ICV in "constant-time" */ + diff = mbedtls_nist_kw_safer_memcmp( NIST_KW_ICV1, A, KW_SEMIBLOCK_LENGTH ); + + if( diff != 0 ) + { + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + goto cleanup; + } + + } + else if( mode == MBEDTLS_KW_MODE_KWP ) + { + size_t padlen = 0; + uint32_t Plen; + /* + * According to SP 800-38F Table 1, the ciphertext length for KWP + * must be between 2 to 2^29 semiblocks inclusive. + */ + if( in_len < KW_SEMIBLOCK_LENGTH * 2 || +#if SIZE_MAX > 0x100000000 + in_len > 0x100000000 || +#endif + in_len % KW_SEMIBLOCK_LENGTH != 0 ) + { + return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA ); + } + + if( in_len == KW_SEMIBLOCK_LENGTH * 2 ) + { + unsigned char outbuff[KW_SEMIBLOCK_LENGTH * 2]; + ret = mbedtls_cipher_update( &ctx->cipher_ctx, + input, 16, outbuff, &olen ); + if( ret != 0 ) + goto cleanup; + + memcpy( A, outbuff, KW_SEMIBLOCK_LENGTH ); + memcpy( output, outbuff + KW_SEMIBLOCK_LENGTH, KW_SEMIBLOCK_LENGTH ); + mbedtls_platform_zeroize( outbuff, sizeof( outbuff ) ); + *out_len = KW_SEMIBLOCK_LENGTH; + } + else + { + /* in_len >= KW_SEMIBLOCK_LENGTH * 3 */ + ret = unwrap( ctx, input, in_len / KW_SEMIBLOCK_LENGTH, + A, output, out_len ); + if( ret != 0 ) + goto cleanup; + } + + /* Check ICV in "constant-time" */ + diff = mbedtls_nist_kw_safer_memcmp( NIST_KW_ICV2, A, KW_SEMIBLOCK_LENGTH / 2 ); + + if( diff != 0 ) + { + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + } + + GET_UINT32_BE( Plen, A, KW_SEMIBLOCK_LENGTH / 2 ); + + /* + * Plen is the length of the plaintext, when the input is valid. + * If Plen is larger than the plaintext and padding, padlen will be + * larger than 8, because of the type wrap around. + */ + padlen = in_len - KW_SEMIBLOCK_LENGTH - Plen; + if ( padlen > 7 ) + { + padlen &= 7; + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + } + + /* Check padding in "constant-time" */ + for( diff = 0, i = 0; i < KW_SEMIBLOCK_LENGTH; i++ ) + { + if( i >= KW_SEMIBLOCK_LENGTH - padlen ) + diff |= output[*out_len - KW_SEMIBLOCK_LENGTH + i]; + else + bad_padding |= output[*out_len - KW_SEMIBLOCK_LENGTH + i]; + } + + if( diff != 0 ) + { + ret = MBEDTLS_ERR_CIPHER_AUTH_FAILED; + } + + if( ret != 0 ) + { + goto cleanup; + } + memset( output + Plen, 0, padlen ); + *out_len = Plen; + } + else + { + ret = MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE; + goto cleanup; + } + +cleanup: + if( ret != 0 ) + { + memset( output, 0, *out_len ); + *out_len = 0; + } + + mbedtls_platform_zeroize( &bad_padding, sizeof( bad_padding) ); + mbedtls_platform_zeroize( &diff, sizeof( diff ) ); + mbedtls_platform_zeroize( A, sizeof( A ) ); + mbedtls_cipher_finish( &ctx->cipher_ctx, NULL, &olen ); + return( ret ); +} + +#endif /* !MBEDTLS_NIST_KW_ALT */ + +#endif /* MBEDTLS_NIST_KW_C */ diff --git a/visualc/VS2010/mbedTLS.vcxproj b/visualc/VS2010/mbedTLS.vcxproj index e58a2fbc2f..73c92bda55 100644 --- a/visualc/VS2010/mbedTLS.vcxproj +++ b/visualc/VS2010/mbedTLS.vcxproj @@ -191,6 +191,7 @@ + @@ -265,6 +266,7 @@ + From 9ab746c7c95b7658a8f71e7063a9f715043da64a Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 15 Jul 2018 09:33:07 +0300 Subject: [PATCH 0665/1100] Add selftests Add selftests for key wrapping --- library/nist_kw.c | 218 +++++++++++++++++++++++++++++++++++++++ programs/test/selftest.c | 4 + 2 files changed, 222 insertions(+) diff --git a/library/nist_kw.c b/library/nist_kw.c index b7790d73c2..176af9fe08 100644 --- a/library/nist_kw.c +++ b/library/nist_kw.c @@ -534,4 +534,222 @@ cleanup: #endif /* !MBEDTLS_NIST_KW_ALT */ +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) + +#define KW_TESTS 3 + +/* + * Test vectors taken from NIST + * https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program/CAVP-TESTING-BLOCK-CIPHER-MODES#KW + */ +static const unsigned int key_len[KW_TESTS] = { 16, 24, 32 }; + +static const unsigned char kw_key[KW_TESTS][32] = { + { 0x75, 0x75, 0xda, 0x3a, 0x93, 0x60, 0x7c, 0xc2, + 0xbf, 0xd8, 0xce, 0xc7, 0xaa, 0xdf, 0xd9, 0xa6 }, + { 0x2d, 0x85, 0x26, 0x08, 0x1d, 0x02, 0xfb, 0x5b, + 0x85, 0xf6, 0x9a, 0xc2, 0x86, 0xec, 0xd5, 0x7d, + 0x40, 0xdf, 0x5d, 0xf3, 0x49, 0x47, 0x44, 0xd3 }, + { 0x11, 0x2a, 0xd4, 0x1b, 0x48, 0x56, 0xc7, 0x25, + 0x4a, 0x98, 0x48, 0xd3, 0x0f, 0xdd, 0x78, 0x33, + 0x5b, 0x03, 0x9a, 0x48, 0xa8, 0x96, 0x2c, 0x4d, + 0x1c, 0xb7, 0x8e, 0xab, 0xd5, 0xda, 0xd7, 0x88 } +}; + +static const unsigned char kw_msg[KW_TESTS][40] = { + { 0x42, 0x13, 0x6d, 0x3c, 0x38, 0x4a, 0x3e, 0xea, + 0xc9, 0x5a, 0x06, 0x6f, 0xd2, 0x8f, 0xed, 0x3f }, + { 0x95, 0xc1, 0x1b, 0xf5, 0x35, 0x3a, 0xfe, 0xdb, + 0x98, 0xfd, 0xd6, 0xc8, 0xca, 0x6f, 0xdb, 0x6d, + 0xa5, 0x4b, 0x74, 0xb4, 0x99, 0x0f, 0xdc, 0x45, + 0xc0, 0x9d, 0x15, 0x8f, 0x51, 0xce, 0x62, 0x9d, + 0xe2, 0xaf, 0x26, 0xe3, 0x25, 0x0e, 0x6b, 0x4c }, + { 0x1b, 0x20, 0xbf, 0x19, 0x90, 0xb0, 0x65, 0xd7, + 0x98, 0xe1, 0xb3, 0x22, 0x64, 0xad, 0x50, 0xa8, + 0x74, 0x74, 0x92, 0xba, 0x09, 0xa0, 0x4d, 0xd1 } +}; + +static const size_t kw_msg_len[KW_TESTS] = { 16, 40, 24 }; +static const size_t kw_out_len[KW_TESTS] = { 24, 48, 32 }; +static const unsigned char kw_res[KW_TESTS][48] = { + { 0x03, 0x1f, 0x6b, 0xd7, 0xe6, 0x1e, 0x64, 0x3d, + 0xf6, 0x85, 0x94, 0x81, 0x6f, 0x64, 0xca, 0xa3, + 0xf5, 0x6f, 0xab, 0xea, 0x25, 0x48, 0xf5, 0xfb }, + { 0x44, 0x3c, 0x6f, 0x15, 0x09, 0x83, 0x71, 0x91, + 0x3e, 0x5c, 0x81, 0x4c, 0xa1, 0xa0, 0x42, 0xec, + 0x68, 0x2f, 0x7b, 0x13, 0x6d, 0x24, 0x3a, 0x4d, + 0x6c, 0x42, 0x6f, 0xc6, 0x97, 0x15, 0x63, 0xe8, + 0xa1, 0x4a, 0x55, 0x8e, 0x09, 0x64, 0x16, 0x19, + 0xbf, 0x03, 0xfc, 0xaf, 0x90, 0xb1, 0xfc, 0x2d }, + { 0xba, 0x8a, 0x25, 0x9a, 0x47, 0x1b, 0x78, 0x7d, + 0xd5, 0xd5, 0x40, 0xec, 0x25, 0xd4, 0x3d, 0x87, + 0x20, 0x0f, 0xda, 0xdc, 0x6d, 0x1f, 0x05, 0xd9, + 0x16, 0x58, 0x4f, 0xa9, 0xf6, 0xcb, 0xf5, 0x12 } +}; + +static const unsigned char kwp_key[KW_TESTS][32] = { + { 0x78, 0x65, 0xe2, 0x0f, 0x3c, 0x21, 0x65, 0x9a, + 0xb4, 0x69, 0x0b, 0x62, 0x9c, 0xdf, 0x3c, 0xc4 }, + { 0xf5, 0xf8, 0x96, 0xa3, 0xbd, 0x2f, 0x4a, 0x98, + 0x23, 0xef, 0x16, 0x2b, 0x00, 0xb8, 0x05, 0xd7, + 0xde, 0x1e, 0xa4, 0x66, 0x26, 0x96, 0xa2, 0x58 }, + { 0x95, 0xda, 0x27, 0x00, 0xca, 0x6f, 0xd9, 0xa5, + 0x25, 0x54, 0xee, 0x2a, 0x8d, 0xf1, 0x38, 0x6f, + 0x5b, 0x94, 0xa1, 0xa6, 0x0e, 0xd8, 0xa4, 0xae, + 0xf6, 0x0a, 0x8d, 0x61, 0xab, 0x5f, 0x22, 0x5a } +}; + +static const unsigned char kwp_msg[KW_TESTS][31] = { + { 0xbd, 0x68, 0x43, 0xd4, 0x20, 0x37, 0x8d, 0xc8, + 0x96 }, + { 0x6c, 0xcd, 0xd5, 0x85, 0x18, 0x40, 0x97, 0xeb, + 0xd5, 0xc3, 0xaf, 0x3e, 0x47, 0xd0, 0x2c, 0x19, + 0x14, 0x7b, 0x4d, 0x99, 0x5f, 0x96, 0x43, 0x66, + 0x91, 0x56, 0x75, 0x8c, 0x13, 0x16, 0x8f }, + { 0xd1 } +}; +static const size_t kwp_msg_len[KW_TESTS] = { 9, 31, 1 }; + +static const unsigned char kwp_res[KW_TESTS][48] = { + { 0x41, 0xec, 0xa9, 0x56, 0xd4, 0xaa, 0x04, 0x7e, + 0xb5, 0xcf, 0x4e, 0xfe, 0x65, 0x96, 0x61, 0xe7, + 0x4d, 0xb6, 0xf8, 0xc5, 0x64, 0xe2, 0x35, 0x00 }, + { 0x4e, 0x9b, 0xc2, 0xbc, 0xbc, 0x6c, 0x1e, 0x13, + 0xd3, 0x35, 0xbc, 0xc0, 0xf7, 0x73, 0x6a, 0x88, + 0xfa, 0x87, 0x53, 0x66, 0x15, 0xbb, 0x8e, 0x63, + 0x8b, 0xcc, 0x81, 0x66, 0x84, 0x68, 0x17, 0x90, + 0x67, 0xcf, 0xa9, 0x8a, 0x9d, 0x0e, 0x33, 0x26 }, + { 0x06, 0xba, 0x7a, 0xe6, 0xf3, 0x24, 0x8c, 0xfd, + 0xcf, 0x26, 0x75, 0x07, 0xfa, 0x00, 0x1b, 0xc4 } +}; +static const size_t kwp_out_len[KW_TESTS] = { 24, 40, 16 }; + +int mbedtls_nist_kw_self_test( int verbose ) +{ + mbedtls_nist_kw_context ctx; + unsigned char out[48]; + size_t olen; + int i; + int ret = 0; + mbedtls_nist_kw_init( &ctx ); + + for( i = 0; i < KW_TESTS; i++ ) + { + if( verbose != 0 ) + mbedtls_printf( " KW-AES-%u ", (unsigned int) key_len[i] * 8 ); + + ret = mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + kw_key[i], key_len[i] * 8, 1 ); + if( ret != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( " KW: setup failed " ); + + goto end; + } + + ret = mbedtls_nist_kw_wrap( &ctx, MBEDTLS_KW_MODE_KW, kw_msg[i], + kw_msg_len[i], out, &olen, sizeof( out ) ); + if( ret != 0 || kw_out_len[i] != olen || + memcmp( out, kw_res[i], kw_out_len[i] ) != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( "failed. "); + + ret = 1; + goto end; + } + + if( ( ret = mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + kw_key[i], key_len[i] * 8, 0 ) ) + != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( " KW: setup failed "); + + goto end; + } + + ret = mbedtls_nist_kw_unwrap( &ctx, MBEDTLS_KW_MODE_KW, + out, olen, out, &olen, sizeof( out ) ); + + if( ret != 0 || olen != kw_msg_len[i] || + memcmp( out, kw_msg[i], kw_msg_len[i] ) != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( "failed\n" ); + + ret = 1; + goto end; + } + + if( verbose != 0 ) + mbedtls_printf( " passed\n" ); + } + + for( i = 0; i < KW_TESTS; i++ ) + { + olen = sizeof( out ); + if( verbose != 0 ) + mbedtls_printf( " KWP-AES-%u ", (unsigned int) key_len[i] * 8 ); + + ret = mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, kwp_key[i], + key_len[i] * 8, 1 ); + if( ret != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( " KWP: setup failed " ); + + goto end; + } + ret = mbedtls_nist_kw_wrap( &ctx, MBEDTLS_KW_MODE_KWP, kwp_msg[i], + kwp_msg_len[i], out, &olen, sizeof( out ) ); + + if( ret != 0 || kwp_out_len[i] != olen || + memcmp( out, kwp_res[i], kwp_out_len[i] ) != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( "failed. "); + + ret = 1; + goto end; + } + + if( ( ret = mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + kwp_key[i], key_len[i] * 8, 0 ) ) + != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( " KWP: setup failed "); + + goto end; + } + + ret = mbedtls_nist_kw_unwrap( &ctx, MBEDTLS_KW_MODE_KWP, out, + olen, out, &olen, sizeof( out ) ); + + if( ret != 0 || olen != kwp_msg_len[i] || + memcmp( out, kwp_msg[i], kwp_msg_len[i] ) != 0 ) + { + if( verbose != 0 ) + mbedtls_printf( "failed. "); + + ret = 1; + goto end; + } + + if( verbose != 0 ) + mbedtls_printf( " passed\n" ); + } +end: + mbedtls_nist_kw_free( &ctx ); + + if( verbose != 0 ) + mbedtls_printf( "\n" ); + + return( ret ); +} + +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ + #endif /* MBEDTLS_NIST_KW_C */ diff --git a/programs/test/selftest.c b/programs/test/selftest.c index df5634de5c..f923a43f52 100644 --- a/programs/test/selftest.c +++ b/programs/test/selftest.c @@ -57,6 +57,7 @@ #include "mbedtls/ecp.h" #include "mbedtls/ecjpake.h" #include "mbedtls/timing.h" +#include "mbedtls/nist_kw.h" #include @@ -208,6 +209,9 @@ const selftest_t selftests[] = #if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C) {"ccm", mbedtls_ccm_self_test}, #endif +#if defined(MBEDTLS_NIST_KW_C) && defined(MBEDTLS_AES_C) + {"nist_kw", mbedtls_nist_kw_self_test}, +#endif #if defined(MBEDTLS_CMAC_C) {"cmac", mbedtls_cmac_self_test}, #endif From 9cf0d53adc701dfbae80d766c10168931bbffaf9 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 15 Jul 2018 09:34:35 +0300 Subject: [PATCH 0666/1100] Add ChangeLog Add entry in ChangeLog for the Key Wrapping feature. --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index a7e6288ee0..8e20dccee9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,6 +14,8 @@ Features buffer, which can save some RAM. If buffer lengths are kept equal, there is no functional difference. Contributed by Angus Gratton, and also independently contributed again by Paul Sokolovsky. + * Add support for key wrapping modes based on AES as defined by + NIST SP 800-38F algorithms KW and KWP and by RFC's 3394 and 5649. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which From 8dd03cd1aa1c1e903106d59099cbbda97d1f52e9 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 15 Jul 2018 09:37:28 +0300 Subject: [PATCH 0667/1100] Add tests for the nist key wrapping feature Add tests for Key wrapping. Test vectors taken from the standards. --- tests/CMakeLists.txt | 1 + tests/Makefile | 5 + tests/suites/test_suite_nist_kw.data | 462 +++++++++++++++++++++++ tests/suites/test_suite_nist_kw.function | 343 +++++++++++++++++ 4 files changed, 811 insertions(+) create mode 100644 tests/suites/test_suite_nist_kw.data create mode 100644 tests/suites/test_suite_nist_kw.function diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1377dc6551..28331ba23d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -96,6 +96,7 @@ add_test_suite(md) add_test_suite(mdx) add_test_suite(memory_buffer_alloc) add_test_suite(mpi) +add_test_suite(nist_kw) add_test_suite(pem) add_test_suite(pkcs1_v15) add_test_suite(pkcs1_v21) diff --git a/tests/Makefile b/tests/Makefile index 281e82c0bd..a592d9e8ba 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -83,6 +83,7 @@ APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ test_suite_md$(EXEXT) test_suite_mdx$(EXEXT) \ test_suite_memory_buffer_alloc$(EXEXT) \ test_suite_mpi$(EXEXT) \ + test_suite_nist_kw$(EXEXT) \ test_suite_pem$(EXEXT) test_suite_pkcs1_v15$(EXEXT) \ test_suite_pkcs1_v21$(EXEXT) test_suite_pkcs5$(EXEXT) \ test_suite_pkparse$(EXEXT) test_suite_pkwrite$(EXEXT) \ @@ -428,6 +429,10 @@ test_suite_mpi$(EXEXT): test_suite_mpi.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +test_suite_nist_kw$(EXEXT): test_suite_nist_kw.c $(DEP) + echo " CC $<" + $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ + test_suite_pem$(EXEXT): test_suite_pem.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ diff --git a/tests/suites/test_suite_nist_kw.data b/tests/suites/test_suite_nist_kw.data new file mode 100644 index 0000000000..eee45743ed --- /dev/null +++ b/tests/suites/test_suite_nist_kw.data @@ -0,0 +1,462 @@ +NIST KW self test +mbedtls_nist_kw_self_test: + +NIST KW mix contexts and modes +mbedtls_nist_kw_mix_contexts: + +NIST KW init #1 wrapping AES-128: OK +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_setkey:MBEDTLS_CIPHER_ID_AES:128:1:0 + +NIST KW init #2 unwrapping AES-128: OK +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_setkey:MBEDTLS_CIPHER_ID_AES:128:1:0 + +NIST KW init #3 CAMELLIA-256: unsupported cipher +depends_on:MBEDTLS_CAMELLIA_C +mbedtls_nist_kw_setkey:MBEDTLS_CIPHER_ID_CAMELLIA:256:0:MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE + +NIST KW init #4 AES-224: bad key size +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_setkey:MBEDTLS_CIPHER_ID_AES:224:1:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW init #5 BLOWFISH-128: bad cipher +depends_on:MBEDTLS_BLOWFISH_C +mbedtls_nist_kw_setkey:MBEDTLS_CIPHER_ID_BLOWFISH:128:0:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #1 KW plaintext OK (2 to 2^54 - 1 semiblocks) +nist_kw_plaintext_lengths:16:24:MBEDTLS_KW_MODE_KW:0 + +NIST KW lengths #2 KWP plaintext OK (1 to 2^32 - 1 octets) +nist_kw_plaintext_lengths:5:16:MBEDTLS_KW_MODE_KWP:0 + +NIST KW lengths #3 KW ciphertext OK (3 to 2^54 semiblocks) +nist_kw_ciphertext_lengths:32:24:MBEDTLS_KW_MODE_KW:0 + +NIST KW lengths #4 KWP ciphertext OK (2 to 2^29 semiblocks) +nist_kw_ciphertext_lengths:24:16:MBEDTLS_KW_MODE_KWP:0 + +NIST KW lengths #5 KW plaintext too short (2 to 2^54 - 1 semiblocks) +nist_kw_plaintext_lengths:5:13:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #6 KWP plaintext too short (1 to 2^32 - 1 octets) +nist_kw_plaintext_lengths:0:8:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #8 KW ciphertext too short (3 to 2^54 semiblocks) +nist_kw_ciphertext_lengths:16:8:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #9 KWP ciphertext too short (2 to 2^29 semiblocks) +nist_kw_ciphertext_lengths:8:8:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #10 KW plaintext not a multiple of semiblocks. +nist_kw_plaintext_lengths:21:29:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #11 KW ciphertext not a multiple of semiblocks. +nist_kw_ciphertext_lengths:34:26:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #12 KWP ciphertext not a multiple of semiblocks. +nist_kw_ciphertext_lengths:30:22:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #13 KW wrapping output buffer too short +nist_kw_plaintext_lengths:16:16:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #14 KWP wrapping output buffer too short +nist_kw_plaintext_lengths:5:10:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #15 KW unwrapping output buffer too short +nist_kw_ciphertext_lengths:32:16:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #16 KWP unwrapping output buffer too short +nist_kw_ciphertext_lengths:24:12:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 128 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"095e293f31e317ba6861114b95c90792":"64349d506ae85ecd84459c7a5c423f55":"97de4425572274bd7fb2d6688d5afd4454d992348d42a643" + +NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 256 count 11 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"ca8f6c56a9c9300549e9eae75a4604b8":"1542b8662136245162c64d45af1a982302f69f1d01a1a6bc29ef8facafbeaea0":"4d340c10bbbddf5b2014ded264bffce49901bd22adaee074b0f25a2d19c134eb3c7f38c5d0444766" + +NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 192 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"b4902b13ea73f17829b4e334fb359ec4":"2073399c7794c8b73dd782dc250dab31c80a8cba33477ab2":"37eda4eec3096135f5193c37bdeaf498b71e3a205c5638682fe746f236566b11" + +NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 320 count 14 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"579448a3d638f093742ae6b24d729849":"464d3162469899955d8bc8bfc0a22555bce609b2415bedf17a942abfe96ad4e124d4a832fbcff49f":"dadd1440a06946eabddf18e784b7719d36caa33cb626aa03aca057585584ea07a8714ecb90ceb232d6b0760845105fbb" + +NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"98311985c4661d7e811ee56070e6fecf":"18840c96813864ef3093b48cdde6ac5d78248b96d4a2cd1f15f0b56f98213dbf87e1ccad04e0d4f1954c233ea3e48fdad8f2b1156e54e19e3b5f4a66d2e9149032b876c51249165fe8c28e112a685b2d228a8ac308017574274af36a4ea3877bcc9850bafe8fc0e0a712faca0dea98396f9143bc5819fe4933a806e9b965133e3c695a45f0fbd6961798c400d7477287df64798b651e0d3009c13f7a2246c28f983509b9e5339919f2cdffcdfc550693cba9491c00334c4a62d878c4d0ca57b1104bc0174968ea8e3730b9e68db49678b23cd508ebe3e12e94b0ad3791023a8ef95473f0b32f906738f34e94e45a4480ad768072e1853adb63996b9ac27a1dade70804b82290a2274c6dcc3ccd40a8b38a56a5eb03f59075de015e8f9096f53549f6374e02da947fb849287a447f757cc340b6bded71d480988b6d2fcd984fba841470519830304667fef0a577b4cf84f76aef9deb84dde36abfbd76673c17113dbea7a3e24bf9b57a8fd17173a1ef91497b732b3fa8889bed58a503a0d3e20bc27ec4dbf5d13a93cbad05495e3df15e1fe34a3a6d6f648ea4aa60b2f114f30944ae593675dac2db188f90a3c483fb82cec0f0d295544d798b62cdcb51c6c036af1a341d78babf87b92609c1d866e311a46abccc8ba8c6a41420359bb061d7e752c0ed25990eef57c9f9e190572203f8c473edf8cfc8c26d34e37240f45ded97":"625aea9122b7b57b9f36446f9053acc42c6435a7f69d91b41547026f833291d488e477c7ccba698c143633a304f463d6af4a3e72c189234fcfc360013e65b07b7f7a36c529d3fdbbdbd6224bf100c14bc5354893b44790f54c739a2b1f5bda82d70fb600ed9b0606dbddea52e508b492b72d8779856274aaaaddc0a3edb6cfc788b603101bedfcc3f44baa62336bd950c2e349d5daf04f2e23ec2628893d214e277569c565e5e6aa8b72ffa14118a3b57f814b4deb179980b5eeefa4fd93f1751850466e929be537801babc2120f3ff1ffe5fea813ec7788eaf43f5ef657e5af48395c3ad11aaf741549090b58670695f7c95c68e00576ca18ef0313f2b4b757219fc8db3dc2db28721d6f912547ebfebcd96935c3100aa4e4df9955acae1b4e2c10df1166d46c4285ab631c6d2ce58ad3ae99c07c019dcd15958694055281ccd6f803af290431f188cc4c429e84a4c30fd9c63968dfd0951c417efb71921c207de172a9546bdd3e2bb35b45e140892c649f88c31a438f864e801a69f8010aa3d77a26601a7a89067c81b0f7e70d8e82f21f88c7d0bb0c8ca0db875d6c3f8c6f6d709bbb31c7da2e31f3571daa2c5ab13bfc16624cf35abd526e84269fb45bbd2fcd8c383d6fbb700bc4b5205b3ef8c4323dc0d9e0370e56a3d1e5e76aa4de082e4c2a0afd092845bd5dab52a45943181461b76e3984b95f48bea80a94944241d04b5634c86274e7" + +NIST KW wrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 128 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"13df8fa68a6e096b9b5bbaebb64ace2e6a05485b5cb7e43f":"3ee9367f631fb375ba47241966ad4ab8":"d0309b1291a06c595fcaa6dcf97817dbd7b7ad2cf48ddec2" + +NIST KW wrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 256 count 11 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"17c25023ac76a8af777a6f71c0c0f97931554b0a15a79222":"15227ef52412346e83a18c54a75374f69a24de6a07cfba9082596eeb5d758bb0":"0f8e2fe4f3a28c1fcebf20fef2bfd3489deb284e03d057337496285f4ffe62f074bafa0a0a6e44e4" + +NIST KW wrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 192 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"49d1c4ec51f2695ad7e47554efd24170ab03f628eba7d5fb":"8bf961097a6fa75694cf0ea47cfda23928fc433d5fc762e6":"dc72c58faca0dd662e5fefd05cd714987cc2470219db77baf779fca865f31529" + +NIST KW wrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 320 count 14 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e06ebf0145b178ea45687abe366fdec559877dbc9300a653":"f0104e9546628d801c4f7e875f1ca4f385e915b0c7bd52ed158b6b42d7301f1df6dd5bfc80d0318a":"5b4b1d4ef349fcf5eb7d720d84b2e79fbabf3db18277ada0752b9883c21f0e24281854420e6751af8fbcc4b98be0c1d7" + +NIST KW wrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"932ed6ee1db1c4cf7fd81efce5609641cb5f3409563089dc":"da8dd9c1dc8cbf95b0fa280747c1007ecb086b7c944b0db4dfa3bdf6ed0c9725901cb838c2e30131250188c22bd92b068aa0871ce58a0c22307671612fc4884a655329851d54afd48a9d3a7f97976850d6fd842034548aee67df1272b06f155eb21966858731c3c35d4bb94a1ea351ef5a8c4779c077d648ec1c4f27cfaa48f47541a8f36831e35a961b076307bea928e1856e448d7695a0f7fbcd8c82800d12f530c2086f3b67bc5081d384010b47d327120def5c92f815aaae31d32893cdd18a71ba4e208445ff3a2f68a0a46689458b0f2d6d9cd3726284e56b4c020b97a82d4463f74098cfd7bd7a5f12157a0bc812266b8f2c215933cb67518f900602f0825538e05765318b6d31150007e410b92d5d957e119c5d94aadba193cf6da230387b1c5e6448515f9789a8867571ea82ad34dc5b912d6cd243bd4fc2f19d132bd8f1f5cef00a141e30ec4d3f7a546a215d5b0c7e70c3b0ec4fc34b66c4170bf403ef910dd3897caef33405827a55f943904c4e1b1aee4cc3ffd0ad27e316c164e2b5bbcf73df60d8859201b6602be01ba638aff468f3136120c117ca848ae161ecafade668e2d04b227437d4b91c6fc40ebd9490f211bcd21fd7005d200ef584f37aa2c4c769174551cec0d7f2936ae78f6c389382212703d0e7c82aef1a736056ed9c45e71439731537a2edb8a63741825c678a11c42e5b2281b43e203b0523":"76b6772984932bb6314d1eab8f625e044920f9494789e9a0ac2affd9a209cabb72ee83331a30472934e02ef28697d541a071eff9eb5c7dd49862f11384d46e8f4c2ddb084e76ef382117a285993e4a9f89e1e0ba6612f63b3c8a54784f940d7e6baf12cb67d27038e91d1ad4feceb5bc44daf7444f76fd140ec7a94869b4f99b9fcf6dd68e78c6a0a4794d55a1c91756ceb9d28b43d9c72b26fafc25c71e63dc175b29282d4a70813b833c35354983f29796909a9ba515cc5c37c58e95aa6f35b850500ea933b27a5922188c2da64680362602d71d169f853af0564b53bc613c15772ed82f89c2f8625670179a83536972332509e7ae4e0726271c5381501d3d88a3cc34a56d80e3e553b9b595e358615e92f361d695837734cdaddd7068c441b310aa511407b53806f1fed984a73862ea2ded1ee67d14feb5d8661ed94a62f5768829d6feea30db392bf24f0ea103fd2a60acf1fcd4bb2465641712113375bc2c8d73650795689f9061608b65e0e608f9948f5efcc0fba62c50b8cd97f67df2b0eec4f5a0cd354e982ae6a62070f4127b6556714bb2267d558112638f10c78be201ba165e57ac9cab6f3e35a762b7fe83b3c7c050b77174a4bf14eb2cac4d6d58a94f0c02727ad020a6a05d9ed145151d4f1ed41d5a6d06c50c0e1d5c24d09100d4f06c50d06a332a95845f4192ef577dc484e7acb91f0b2a57c1f8bef97c23294c59099eea13b3" + +NIST KW wrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 128 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e823c6ef53b110eeb3f178871cf436887cca9df061d1f26409ec3b410033d967":"f90c279e9e6423804a6505e8effd924c":"0abb50b222af66058646156d106df7c85c28b708395eb9dd" + +NIST KW wrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 256 count 11 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e5cca71056548467bc9c2849aba67cfe0fd74c44d514535d2314022a3f3e6ec8":"326b6da4dce95c94226b63c2d38c4e005c566191b00028b59cc788e0af5261cc":"2a4f331f451589fd103d9a9cbbeae5d5f5be7acf15aa6e21c45e09362263cf34b0ccab7c8a28dfed" + +NIST KW wrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 192 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"6a077f95496aba1bb80831280e7563f3a187e6d014342028349f766b791108ce":"a77b3ddac0e78c9176b7445f9ec349b2d85aa2f57e6cb362":"7c065be0a2173e0f14a3418779e7f3eb6eb7fbb7a3c20fd6c08b37d408bd9423" + +NIST KW wrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 320 count 14 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"752b21422647f1006de116360e88e2f6601eeb5aafd27cba56c20193fc1b941a":"a5948c20bc611187d688cb03caa04fb17774aa4f99ae3da5d821bcccfae950d72ca74b3a870008aa":"d71109224edc4233db8819aaca4db9c61ab5aad2806d0e985f1830acd8adde23ce75046b2057e0a23dec7a053bac6c4c" + +NIST KW wrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"931bf2c55eac657ae56fc0a9505a6ea7cc9af5162d844ccf01f19debfad09cbe":"aa8074a195abd88930825b947cbf3cca9810eb829d2e7a09f9e9cb1f8271986d00c5be478150fbbe990de8c61af879495274a60d83f98cfecb2473a35d86fba6ce839d259ede318a362e7abc1f8a18168606d5e680f456f1ca19942e67e5aee382536df7c28204b7842b99023336b735a861cf28363e7773d7b0bcf32b5fab14cb524249863fd7ce49a7a7882b53728f7ecd020393852494df09d9a69189ea713e730e002252af18864b948a642d7c0fb17b0cd5671f14ae340fb0e83b4bda920445927b8de8a82ac93158edbbd57fddcc1d908688770a07c27d2bdb7151d986e85cdf1606b0c1c959542e75090d8fdce9c2a9c162e6fd988746c9bc916ff3f20f054690173d143212b74c5a8961cd46663958744ca1334f6c1dfc13fa83c0a9cc229a1030c6c84d01751ffef54d0f9edb2a4851a187d02f097a5c716f8fbae29eae76738239516ed08c14f24f9378451e9e696742a4bcdd9e0ecba49fd05eb93698afaa1b0d5558521c7b4e77b15ca2612619bbd78f670a1562a9a0a0215fe64211115e60476525444b351a4f8ff5551dd198655423f3fcfb5967c4f77e25d3911504de1d034176d3ccecaeb31bd29677c7569c858ea24d7017ce0b31f1911f4fa14b2afa429c06115bc285ea8b90bbedbcc63f5f0829dddcb17e8f9d21bd71501679e514147e1957ccf986e7e96a0e63ded70a9d017162658a901f55b1001d":"6b75fa8070291ef7c89f5cc2060c56270f5077a6df65a8095cc76b717167e67af70dcce96de4aa32293c17d0812f666e1f42e7e662cef7a3148486d2be7f314631ed6606f326e9781c3ed6be1735bef8cd5d3ac7d2b45c4419ea61462baccc0ff87b83b9b6cc85278c0b20bc15e6baa0a15eedd9e99df82c8e61476529c98aebbc9d40d417f9af26e6da5d115acdd6007d83206c616a39fbe21c6331cc45af11c578532a7cac50aaba21f3cf317534564c2ee093ef127484aea62c7a90327fe9bbe8e45627974306d8cc7452e96033f0c8c30ba2d7fb644796a49c9b502d3db7d4995f920fe21962fd2b634c15be0d82e9cf0ae3fd2b6d45524e1003ab9788ee56cff3e2e62c5784061a5ff586b5907098b8ab54bb70fbc6cb066b071fedce10e013014d82162e3cc6f9be3b4067555907a4df55012a9b1001888c55dd94b4f8528bb29e7985ecb8a7958fc8559831db05002479b1f39e5de3659f3a6e8289d9b8ff4eaa3f864b1ea101d84b4c6138aa6ffb95dea4f825d23f5d368727ca0a8cacb74f7bfd70fccbc951db99f2f4a580425c31a8552fa27397cf8b7f420f13fdcddca553a5f31d8645615b98a88795fb4472bc7cd6e8e54707d7be1f3dd7d4871725f6bc0e65762f1e42e22c411fee6dfd8139068798c7ae9781c8e5bcf4732a83f9142edce36e1ee6e20142adf46c5abaea0ca78f61e16b6875927d4141f6b215da1f48748bd33c" + +NIST KWP wrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 8 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"d060e5faa705b6c600ecfcd5252bbfba":"3d":"28ccc6da03cd79b78c7207946fcee402" + +NIST KWP wrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"663ee3d40628059fe01a9766d5c1c31f":"1c6ccd67438f20de":"c2717ed6e51bb4314388cd26464f4d18" + +NIST KWP wrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"7865e20f3c21659ab4690b629cdf3cc4":"bd6843d420378dc896":"41eca956d4aa047eb5cf4efe659661e74db6f8c564e23500" + +NIST KWP wrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 248 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"02a92285d0baa874ac94f6648988d44f":"6ac78aff505805e3145fac44eaeb6ac92945ca12d9bc0b6fee8b1e5b983f37":"18b251cf54d2a51ac903af2fd008f6aa2b1bf491fa2e0458dba272866821e98ad037eae4af654811" + +NIST KWP wrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"6b8ba9cc9b31068ba175abfcc60c1338":"8af887c58dfbc38ee0423eefcc0e032dcc79dd116638ca65ad75dca2a2459f13934dbe61a62cb26d8bbddbabf9bf52bbe137ef1d3e30eacf0fe456ec808d6798dc29fe54fa1f784aa3c11cf39405009581d3f1d596843813a6685e503fac8535e0c06ecca8561b6a1f22c578eefb691912be2e1667946101ae8c3501e6c66eb17e14f2608c9ce6fbab4a1597ed49ccb3930b1060f98c97d8dc4ce81e35279c4d30d1bf86c9b919a3ce4f0109e77929e58c4c3aeb5de1ec5e0afa38ae896df9121c72c255141f2f5c9a51be5072547cf8a3b067404e62f9615a02479cf8c202e7feb2e258314e0ebe62878a5c4ecd4e9df7dab2e1fa9a7b532c2169acedb7998d5cd8a7118848ce7ee9fb2f68e28c2b279ddc064db70ad73c6dbe10c5e1c56a709c1407f93a727cce1075103a4009ae2f7731b7d71756eee119b828ef4ed61eff164935532a94fa8fe62dc2e22cf20f168ae65f4b6785286c253f365f29453a479dc2824b8bdabd962da3b76ae9c8a720155e158fe389c8cc7fa6ad522c951b5c236bf964b5b1bfb098a39835759b95404b72b17f7dbcda936177ae059269f41ecdac81a49f5bbfd2e801392a043ef06873550a67fcbc039f0b5d30ce490baa979dbbaf9e53d45d7e2dff26b2f7e6628ded694217a39f454b288e7906b79faf4a407a7d207646f93096a157f0d1dca05a7f92e318fc1ff62ce2de7f129b187053":"aea19443d7f8ad7d4501c1ecadc6b5e3f1c23c29eca608905f9cabdd46e34a55e1f7ac8308e75c903675982bda99173a2ba57d2ccf2e01a02589f89dfd4b3c7fd229ec91c9d0c46ea5dee3c048cd4611bfeadc9bf26daa1e02cb72e222cf3dab120dd1e8c2dd9bd58bbefa5d14526abd1e8d2170a6ba8283c243ec2fd5ef07030b1ef5f69f9620e4b17a3639341005887b9ffc793533594703e5dcae67bd0ce7a3c98ca65815a4d067f27e6e66d6636cebb789732566a52ac3970e14c37310dc2fcee0e739a16291029fd2b4d534e30445474b26711a8b3e1ee3cc88b09e8b1745b6cc0f067624ecb232db750b01fe5457fdea77b251b10fe95d3eeedb083bdf109c41dba26cc9654f787bf95735ff07070b175cea8b62302e6087b91a0415474605691099f1a9e2b626c4b3bb7aeb8ead9922bc3617cb427c669b88be5f98aea7edb8b0063bec80af4c081f89778d7c7242ddae88e8d3aff1f80e575e1aab4a5d115bc27636fd14d19bc59433f697635ecd870d17e7f5b004dee4001cddc34ab6e377eeb3fb08e9476970765105d93e4558fe3d4fc6fe053aab9c6cf032f1116e70c2d65f7c8cdeb6ad63ac4291f93d467ebbb29ead265c05ac684d20a6bef09b71830f717e08bcb4f9d3773bec928f66eeb64dc451e958e357ebbfef5a342df28707ac4b8e3e8c854e8d691cb92e87c0d57558e44cd754424865c229c9e1abb28e003b6819400b" + +NIST KWP wrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 8 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"959b4595778d7b860e08fcb5e24b11f118fd5d67089f2ea4":"65":"1cf986a0fb2208977c37a4c3830eba72" + +NIST KWP wrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"02dfb6662e0c1b95d34aaba7eb6c1fdd41c52b89213d5b18":"27361c34c2601fe6":"089f835f3210734aa1a2282c6ff30ef9" + +NIST KWP wrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"9464f1af6aabad076661328bcfd15777da16a288a2660009":"431527c3a644c106bb":"d9b257b400d808a0b0386af3be9154fc7f2fb2d7edc06201" + +NIST KWP wrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 248 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"df419ca84650ef28a1c5d1cb47917e4480a3aca4bd29dd5e":"3d84df372bc0b854c058441e952738ec79474b673c94e32dc78d23745fb5e7":"497e966414475938204c3b3d606d5160461c54dfdfe903b6624208d7cfc90bb403f384bfd54d1ed2" + +NIST KWP wrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"a85b4359ebd240012ec749459bc928eaa52c84e887ababb9":"9db71e2a2d40f6fcc1b8311167ae13fb101bdf7b5c4e078373c0c3cb3f3a3ca39a91a6985d3fdd48d93f2b5a09b2a69350da2846ce6a37d018dda95ddac93a92fda7b7c3bb6518dd78f367f70e34e0bf19dbba46fd13d3f3e0a1776350f27138c64b177aa39c54dc06184b320016b6305c2dea19fa6da634cd613d5a4f71bc045f555a1ccee39b8f1ab90840b5bae555932e08719bf38f72bc1057875e8c077a70629f46be91281b977ed6f2a71171a7cbaf8e0566e55da6220a85a7655758de3b372144ef76d0337d3133004c0db096b2c41f524f95706247a331d08a6ff72b425395fee8e1ad308ccfe5b0525c40803e529db72063731fe1644891bdc0d5961397006e1f5d6521ad4e5aee3544da101fd3cf6bcf879220a612b7016e5eefe7369f136086e8f5109ae83e8687519f2008406d20992b64ba1d27b436ea5db1fd734340f3b2279e026a96e3f9c5c7b99553e35ada9e1d7d708a73774718f9b7073c0889a298f212d47ff5960e04743070338f99b11687396da2120b8f132535c0911b04505c0e6c32590c82bf59486fadfbdc0f16a224b2f52082eb66201f041d64b34809e5e91cda89d80d78fe1e15862bcf84f65a301ae68d097c9be09f3411c11cf83225733dbc9306ad2630eb7994a0d112ba83dc542966414137fd008fbb7995f649edf844fe5ee86b94acade1a04f42dae21928b9b0cdde8cc66095772d":"72880f9f173f0ef4d99e3ae71f6f3b94f66a08aaa22be1d206faf431718c1a29bd0a574b1a28b69f0e64d56d3e43617dc73506a939b7de9005ef0ee3f02b9265e91a32aaec58b7ab990f39774f6769c9be9ced3339f6bf0159055abe237c4c755613a6c03271abea3bc89527f284a3e1557ae26b3910b779a77a128e773d11d7d641479d02f4888c989cbb8d928da0136b965531730a3c0c32404351f4c2390d996dff58985ed1d4f4021a5d6ccedf4555066a826a04055cdf8c9c44bdae26619390b3e22b064f86b28382094a3e299d55ab335ade601699e85f19d6f6f12407caf84ad47f03d75198691f1a9b2aa9ed95e508d8551b19601418922f3289fc1efc3abb1ebc2f4886dfe325cddfe25dd908e5aef8ad197ce2703e692b9c46a12201fa71ebc2e323ff8926ecc059ffeeacc0446d3f28496f17f1b4ad6504e4e24188862e25f3dfc36adc7f79920d88e6c53269cc4e5dbbebbba1a2347154683c840d178476ae11d6ce574c26b8b895957b8623807e8831b87b5639aeb415adf1bbef394046deb3bbe91a5c17f2f67131ae5f696352a488e3bed40df025e0a0846e0037847350fe8ae3cf73141d0ec550d82b89c05bbff7337bfe846411d3f0bd012e4de2fe5b83c7210214c0404b40e08abdd3f4bc441f9b6e1efdaa4ac13b85d139f670a6060a1ba8d2528bcd19f241d9ee5077d20c120f2b484c67c9c598b1b209824c3b8aec2b7b" + +NIST KWP wrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 8 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"0070492ff3aaa190496c72bb0affdb6fac7fa9cb32e6e91a46ea34863422f807":"39":"643a9706af6bd06410b70ee38f546bc2" + +NIST KWP wrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"c6e882f5b8e361e43bb3e54d5a7b8c690f485bcbec2dd2183c7e623f6b02c5fc":"99ae80eec64630ed":"de0680b34f7374539ad9b75f08f4d8e6" + +NIST KWP wrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"70da43aac823c6dd37d1109f5b18feb4503c973288989745e2cc1cc21d9570c6":"edf17d966ed896aee3":"d67b5b2ad15c645450e23b5e7b6d682f8ae20e716d470db7" + +NIST KWP wrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 248 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"e941febe4b683c02dce56194a86b72d4c569e1fc84bc7a6f24c3ae2b39bf5440":"c168cf12acb6679c24d424baa62ed56559caee163a4efa946478ad43d7dbd6":"4ad9979caa72fddff0876c0295a57fcf74e5980fec2cf622191ec6b5aebb75e0adebb12d0862ffae" + +NIST KWP wrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"20f31cded60b8ed8d9d3fd1e1fa6244e76c7cb7628bfd28a5d63ce8aa2c9494d":"f07225202842c8dede42215301e44b9bb7e625d3812f74f9b6ddbcd024ebd1f33e2cbf280b9004941f3cbf86c880a2357f88f92a6dcf8dad9da7dddcd00f3635efdff0af4382024e93c2af66b991e565eacca6b886f07178c9b4adad6f0d6ada5ff6aa7cd0712519a947a8089cea5e1e3e40ffe1806010b0149f9ffc7c4dd3c31b3d08d5ae1997c52369393d58611dff9bec501c1ab35e6ed3e7f9445a34e211010a8236686f154e0a5ae3433d6a844eb3884961aa6592216d93952b46bb58a4195aa80966ad0ccd4a7e23823912556a90d5ee9c3bb952ecbb9d895dabd3b11ab4f2e3a6c2582de50403289230ef4dc46e7c0d870a3f0cba9d643a0349503c1b162ddb6350e699589eb47bd563999f55a1adb6b78b52f006901b0427ea7d3394bb0adae4637b4f1ad5d5425e2c8ff3083506d7ad7ba4c7405a778b0a3a11760c96900a5256956cc9710091d073a19f46a985d004651fe2b6448ed761bf9bc81619cf273a6783d868d090753bf01318be21afd88d9f3a961a69f93e9d9fb822c80acc7b48cf14a08b5b7ef15c66975721b7cde9761a145b679155472a44dea8fedc0f86ae7ebf6283ecfde5f2444b51569e6723a7a19e28cdf8dec6791ccc14af95abad018f741575b343cb1a20a2a9adf4248f99728069a1e2e78ad8966c41c9918fb7019ef56c153a183a6247d22d9956564bb03075cbfd1b43d96818b28484":"a5b63618fc0c4512960f00a1f226d9837a90480baea75265453b9553b12a58c72153080842d7f8710f317f88fbbbf97caf879ab4bf416ba767ee9aeb34357f4a2d0e8b9571054d98e28804a70bc4d74807f2bfd95ee955bfdbb6f4d6969a0c3c3b541a514647d5cd8c9740ac3496095c3f145c50c97ec98b935158fbdf89705d5330015e48ece89188b8c1bcb2ad6825d865b375a9b9056b743dac720feeac033c9f757f6fe73dd7c4a747661b64cf490a0dd43b547cd791a5d78dac97efcd355f7ebac248fa2a33e4fad640dc34e0d40b0d36588aa32f0864c9446739a6b44ff84666d723bd7d646c5172cda932fec34ddaaba342b02a9604087ef042a2be4774194b5d32cb3fb112438fbf2801050b5424635fa2d3d3fb10332965c73e6669e65195310a3a30602640e9809179cdfc50de585aa1c0072423c626815d281a06eac3b6ffa137716318e288e3f9970e415ef0451bdc557968febf9eb6772c1f77cb8e95701246d9c567048142bb25e340351b87d7391822d9ee7fe51378bc0d08135f9f39cf44b348b87937939dc61f430dfe308cada632722e23aed5a0699e039cf0563ab8025163744b136a13ce3c62c748c89f5e17540f105e7c6ec9ba13515b504342f9e6dc7d65b9a633d8c0b5c9fa858dbb9b3a594406d478a81bb9abfa289730408c1e303c663a61d5caca00f615065312580042862397b9aa8c80ca812887664c439c8c68" + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 128 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e63c2cb1a2c1282d473b66753494a591":"084532f86949dfb7be2cdf09d2b7505418e7bca5185661e1":"a26e8ee007ab90f599a1bc31cdabd5fe":0 + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 256 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"83da6e02404d5abfd47d15da591840e2":"3f4cbf3a98029243da87a756b3c52553f91366f4ff4b103b2c73e68aa8ca81f01ebda35d718741ac":"67dfd627346ebd217849a5ba5bca6e9ce07a7747bed1ba119ec01503202a075a":0 + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 192 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e5c2fc20f9263da4f15b817874dd987d":"0538fdca42f1fd72afadbe689fa8a396996d734e4f082c8c4ef41ef11dc6246e":"35a261169f240dffe4701ce41f6dff986764afa6e84f63c9":0 + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 320 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"3f5501341f617cae30dd0afbfa247c09":"72fcc9e5942344d11c3b23503b170e39cd635da3a83aa9ffb196cfb1d6eeae6dc5f5683238da6e9b49edbf95819bbbdf":"e2a34da9ea2ad66e130251f8a7798b87d7bd7601abc5ae8f7305b024ddb4b3e00351484165e16d25":0 + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"adf44a10a05e64f2df87db52f3ae18d3":"a940cfea67b90c81b4ccd793f186dd7c6a3c0ff5a6feb5bbef99eaae2b14a979f1acee92b5e4cd750f40571804d380f470e1f5201a389476f97bf29f6699053f468bf102975895f4c1a679a46cf627b22c8d956679ce53775702899afa223c87621f859dccb876d317f2a486d0a4d4ad6ab7e2d9ebf7a956c394ffcff423377e21b274f8ca3a379273dc8de738c97bfd318871330abfe2539a49d4f03d0eef65856c01ebd426f2e76fab90466acbed8c4c9dc09898929d80244eed4fd51e7eff567c2b340e928f298ec00cc8839e1ce9ccdff40a7edd04e01440f2288c384c673de8a758ba50f6f910b8002e0786d2eb633da0ef7eff025f37b45f7c9b918863a56e2da1f3fcd12b990f959051289a1113054c38c135336f19672c86a51200763678cc4ef50ed290d96fec4afaa53af165aa7ebc11d787ab1c535a0abd00b477b914855759477df2afd516a85a66f8b91fb5f5e98232e601e249b3faa856bc6b26f1945f48542601bb4ff1c0dc46f44ae023c0a33ec9faa7467b1cdf1c08df7d00b800ef28e2f77f1e6941db9ce8e71fcf82a14cc8983614e2ce3cb4b3e976a8dec76e4309492ca68486d119cd566b9692d1a513ff30675737d1777a3a1a95b6588685b5a64d890cb8f79578fae8f1d22b83747bf876da582e56e5267ee8e734e0fa9271f5455c40fd599082c0acb442927643aeefffa5bca0a88c38671db14899adbb4819dd1e2d":"a2b43c25c5f530a6a29c5314319bee95e0ad5a630aa8dd614b3751205118e35117c31de7d1ac41f9d782ae8456ef0387cff49eecfbcedf2d9c0b18182f5e043e3202c527be77e6f0404a9746ea1b18978a916cd47d40093813a3b0ba1cb22280fd7f00a7fb4f8def6a0cc1ef848a45106fc389e0ea00652151b1e61dff2cf2be83fccfbccd4fdce86f19859ac927a3dd08645cf072c3525624b3845a532e5a37d99db5cc943a0a9d42be4bc81134f314fd9e22ebd386e7a896bc2d56c933326edb18120c072579989c5bbb1991993a698f2a19387612b25a303e699d12003072fbea6e45569444107ff9a17675f5454440a6c3cc02c1ba513e26502b74a0cb6d397ff6d7d11877100fbfb5370fd882892ba09635fa3fa78d5344fa00008f488395f04a7185ec7819dbf3b165ee52b35bb4ebd10354f2d85514b2fdc1f825a4a2968ba44b3ff2812d1acc13c24ac49c22343b6080f2a7e7efafe86c6435195cb742c35d8178fe20ede0ca08278db49faeca90f95b9b17fc1ffb9d7b1d064f2266d32bbb6f3e28f3b17deeb9faa64f7c127c90241579399294eaf1dac93346943a3cadfd84d7cae1aec66877e892cfa31b5ae35eaf7c35faa6f4cd9212ef7cb2cf9df5748ed8194c380c3298734e1ccb87d0feaf49be1d275142f8421727b5a6c3415fb30ca44ab598597d136bd6d12435ae6ec3db72f6b85462878d833dfe5e6f":0 + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 128 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"5d4899ee66beff1bda1fc717a1ad4c50":"bb7fd0bce778bd775e4e88d904d26a7134364c53a6c493a0":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 256 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"84bc6ce7ee4fd9db512536669d0686da":"c383db930ffd02c0073ac2cc79ec289e6866bdcc6a135a3b776aa42f14ee04f9cca06ed6c0b22901":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 192 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"266b009e911bb55f9aa0661539a6fdd5":"db9c94e7236ec56982d7ddeb9427c24580bc1fb96db98ab19340e03670045b7a":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 320 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"51c2e3d090a74bfa10db090b63ae53aa":"598a16c226e6c848a78ca30fa514edc9467f704b529c02c5522d1890b4dc21588ed6c3b070ed952adc733d865eb9d468":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 4 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"6a7814a80acae9d03eda69cad200ffe5":"e1ebfaad7f6d46cd03c50ce4e9543ff01150e9a9a69c4bc8198fc08601ed71203e39375d600f69fd762b196bf50a7dee2be55574196005c8ad53234d789a9fa6f2f0eb7d7b53c7e39a7c70e9ef93c58bcd45c0f592fbcda19b5ea9a118bc2a0d49c8cf367d4c90823eafab86165db3aaa22eee9323de7d23b7729f7f088be9db421fc8256c20e5874bd0c8348c4a6e50436fc94136e568d0aa4c29d7b65136bb378ef010db091085c9c0802466d565eace2c0bd91648fa82f8045c57cc25c46bd8c9e4060ceb00e092f7beeaece1d4f8a2a01b5b1dc9de3c7d2ada7a44d4600085b7e76929198b9823b5ae0f74c652fb8793cae7c16cf062f39136789b213d1d500d560bda89bfc0df0e6bcb07fb4a48914e1af9058b73751aa4d98ef0363e48f9d1ed42230eca1b7b24631cbad80b2d4bfbc00ad1ab797c1c459214be8f64470b4d267ab576fc1d3c86a42610b8282437dc071336c325e606c2d36de1b24595f4888cfb2ddffb46557c964a4ac53ccc1d214d44ac84b8322c93db03bdf2a04b303de4f8482b8e7ee25030aa5ad8a8bfc5dd683726a0286486356f5a965599313a2c39034774ebf646fa7ccbda35316c54d443c6da466d9c95d716016326603c3989bd7545e3506333ab3e2ad7b45b225bc43ecb37e4c301b389e06b95f09b1a10beb5fd5320234fd6d488d5691ae2e078630f9f57dd0870cd617c30bd67ac8dbf4b3a8cf61067f7":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 128 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"26045402548ee6196fc0a60208ffde21137ddb1c6c5d2ba0":"fcd55c2c60ff6de19ec3e6b13490c2821f0c565abf10be2d":"94b8276743184d086962ce6c4e63bd53":0 + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 256 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"b3a0aa60fb14b658e1eb1c1a5a8e1f60307c9b9faa2f1587":"fdeda2a10e51da1817af2ba4c9f200414aec67545f5e71c608e85d14da8c5567bf51dec4ff2d8c05":"65986b3a6a3658a66cb5beb302540bb032b36c76d040b24fe278a1473ad4c32f":0 + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 192 count 6 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"f0ee8ab6f804a2629e163b58c1a9e9039b53ac60493df11d":"3593dda0daead2dcf850f8670b7d0692332f57068213a772a8244d058e5634d7":"401df0c06aa4c58a71b9438e11a11a239f577b6037adf350":0 + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 320 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"579e58b2bf9c34c31e8c644faef6b698131624063fb2d795":"b39acd09d9bf9daaa89304f76402065cc3d863e12df8a966f037146db9619e7be5ccbf50206773c5eca35e36492ef4b7":"9c1f66267c2083a42f3da4e754a073c1ff151681e2bc070e6e4682065fd109088a096e72024fdcb0":0 + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"366af2c7a1d7a1ee5a7c239fd526024472f674ab039bba25":"36fb77bd3890aa0a4a4d6f65d671156683c48214a327e5b2b0916c0031f9f4f2c643ca721aa22e84853096bcedd7ef57ab2ae05628099bdbb55111358a06c1e99233b94a568a3f59b06d8a64332acf888cb5bd1fe8ed344937137eff629bee3ad57c73344df80b303994889bbfcd0ec08b13b687ec909cc847f383d3ba91d108c84254af4ab4c22df19897fef44b62d88b0c1b269163de9a2db56a26c4dbd0481026d27e5003153eec761f21c02f4d04898dd3ed961ab158e572aaf3b828a30eedf62a8a7b0911eff27db48ce1b7bb79b14ba43d7ecc1f87c82664c99ea857746c99a993db5807f0fb06114c00428b85ddeb9cfb698d282b1d70eb7c17d4d12575e58103ef1ed37c558d7c312f0fb1d72cbadb84561a41e4745492c8b1eea557efb9f1e9664ee995aa82e7f2a1c86dabed0b2fecd9e938c796dbf2f9b4dc269545ece94e354ca3436e4c6936b51cea7abcd2e49fa263f79757c4b5a8d18c2c6a26435fbbaf3fc759bb323ffb962bdd445dc7e5c84f9d98812e7eae254d19a06ea378b1b262daf22b634dc30aaf9d911cfff0905e5e2cfdd7dde4dbca75729bf33ef6d27d5993f19c9a3e60fccf5fa201963cea0e7caec99d79f83435d11e3a90905103c302851c8d33cef77b39c104ad4d8f45abdb111780c46784e6fd6a78e57862350a671ecbf01dd936b8dae4ce4a91d86efad8b04724d7c17a89b1d43d8abd650f88e17f5df1":"40bc409ed0ba1966e733be4b2ff9d23691e6a9f44b0abebe971a47b4ebd51bb13bcf70bc1359f6b5e670be2e6b008ce9d219abd61ad20edd97aff7458b81e6114ea6d9c85a03400477b1a32f09ac5cd1a963731246011ef4908bacdbfae5e5921cba143b9395d17386e924db6ce40361740c6ae5acfdc979d45c8af70b443878adbb04bad439c9937a30bbecfc50b7005782bd01e3a87538220ca149286855129bd189f9bdb55ed1f7ab786f99c289032123c814e683db2f10970db79d2ef87f5a8a2cbbf7b9e2c447cb22d2a9d0f8c2b093a4d8aee57f0b05c2ac4f4ef780bad406b847d3c9d175f659105795236b072e96738043cbb8499292ad45acf7e576d8decdb635aeda6611da6c00a1badc11962dfa0643a83b865099de79416c86448280aad32f6797ef2fd879ba46abf36c9da45da4d0c936f6e25240cf30ffc79647720bf10ee18743f1ee3397dc0ed967445bb7b0df8eff0887d3f84abf20f0b2036837dd0308ed4a01f9d6447a9eccc9c471e75bd32f7d760216c326901ecd8590afcc2e697311e29f9d704dbeec409cc8c7fecc12fcf70cf9f718c12579fd17cef1e6bb44f89ad418005c2629a96275965f08c54a53e31cabcd4fb17021889bdcd4851ad33bb0d5438e55ba3b759dbf3c50fe20e6f3b8f1989f560818db1f2079b91b1e2d8bb22a7523c3137e9a30ab970f6019eca225e4b42bbe061f3b7b43":0 + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 128 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"9200a0f688d86c0b6bfd9abeff66341684a373fe3f9a3057":"5c685c8596e374710fe327bafc45cd09190215fdcc03d010":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 256 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"95c9e644559919cace6f93f545dbfe48b130808ed66d0964":"7b8d1307e992221f6ffdcc7909d972d5f02e92187139cfd77f79345cb998bbdbabedb3ac00a6cdc4":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 192 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"ffdbcbd0abc94c7f15e5b6e8a7190f1ed4f01be11f4f7ccb":"e9ad95c8e9185a001509c50ae0098d45f7032575c7b8fd90a561716d2e5804fb":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 320 count 9 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"253a5cbe79a291c0af1a3d7460e7f284bd672cd026753fc4":"f71014ba711602df5cff2b93e86253775ea308bf83fde65fbc9a9a7852f87357330450072aaa3d6ef8dffbee20d2de7c":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-192 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"ff8666e4e538a6cf0a2a002b63716b06ec5f187785c2fc1b":"f5bfda19b535cf39e240d5b42db06f385fb002be273e46d9e5ceed6be4b5f636031bd0622ea0b3abd0087a7280844ce7260594201214e601ada0f686da6e9b45fedbe36c7d13db025746fa6bba2e540a417a29cdde32f9a7ff56325233bf60929bfd49f80e21acc23f3abf572d81e96b556f6f4f20a7e00c1cacd6fad07df30d40de593c99f73dbd61bf9d9d5269a56006ae85d588324f7e140d9775403af631e695f7856b1bcaa377aa7f4f12c68096a974ef703435102d7110f4eeaca787744c942be1186d132bff2b39f160157617bcead75ae59288880fc0e7db9877d854f553e90e1c917a99b8f357082c50bf3b71cd30d016f164ccb85bff50212bab13cca8dcfff0be984daead905ab13054eb12908a73f37ed42c5638a5a410ba182a2bee2caa84e76af2a715ddd24e837988ec475e506faa130f0241e08d92567a69c9645fc2be3945d65a77387cfa307562c9b6c7055f98956c547ccc109da9277292f47cf43e3cbc0d2e91c916e4fbd70df4a980e9430f5c1c8cfbd6c83f0f756c436bc07e86d5c75aec7e4c039349f71fbb959db709427a33869c523c3486be0095c1fd61ac912cafb9065b94916afd9166d73678ffbcc396a037ebe75e44cd824b2196903950b528f537c8baa70530251bfd8a6f37b202453993534c06aada0d1dbf760879d0898026997f1baf63e343e94ae076da7d41ea325dd23ff2a9cbee74baca05a538543d":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 128 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e594f0067cedb74e883e7746d29ba725c884c25375323f367cf49d17ad0f567b":"3b51ae2b0e3ddeed94efd7bfdc22630187e1f7624d15ed78":"587e3f6c75644bb5c3db9c74714f5556":0 + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 256 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"049c7bcba03e04395c2a22e6a9215cdae0f762b077b1244b443147f5695799fa":"776b1e91e935d1f80a537902186d6b00dfc6afc12000f1bde913df5d67407061db8227fcd08953d4":"e617831c7db8038fda4c59403775c3d435136a566f3509c273e1da1ef9f50aea":0 + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 192 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"e86b9c1f74cc87ab8ca6a2fa1723fef173077e684345b90dacd3d485f587d320":"c97e8c25d498430300982cdcef592e34176e33e45cd59b19f7605f52e3c7b997":"261313cbea4b246e53affe1f84bd4c900c9b1d1842d79337":0 + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 320 count 8 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"5b7f48b8ce77007481667e9900f3077a0c9407a70082b0de29bbfbd716a07149":"3ed16c7e4fed98d76092936e94fa5696c787ab63cb764e930fd37f917be4e7e60c90f327f0865d279e6c449b96301ed7":"4e0e6c45137efbf858ce896c815268a10d9869ef5668a90739b7eff99617691fe63b911afa53feca":0 + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"9e92fc974e09541e6cdf1415575511436ac04a56db186bc0e60f0fac9bd58c6a":"201010a2a33fac1d20230bf5254204801de29e66cc44eb391b8e77284b3dbcfa3fabbdd4d9423d96af64ee0dde35786d79b7433021da27d6be753f91d2c1d63b40e9dc265b4a27cb2a61018a60ba5e29813c012b6acbf7d7d101ce227e45b5bc8a16c604c83a99ef35aaaa44fcd2033cddb6122db2dfb944d4b5c16dce911c5f4a1d8db46785534e7a090e31fd2192be64fe5b72efaa8b7965552bab4a20c8eac9a9e7b35e77df0277a90b0b1167e14a8be8d0bc37757354eff920ef93ad65c5a49b04bd553883efe9376811986002d4270d25c5749ee1454270a191084fdca53ae693f5a31b13929fbfd68b331a4fdd2259031f812ecf50d042a55fab302375057cb5b36735bcd2d75f745fd4a92580ecfd0fec44313ba9ca8cb1893f7a329638c17608c170de0ef68123c2233fea878fb1b49ec7478d9cf70591101bfd2d6b0328a27f7c497061b79289b6db4e46199c5db8121e9e1adcc8d64c85c27e329883775073d5f61b0bc470169ce8837b61fc23bbbe7e07d265b32cda5a94acea4bb2e52af17e13818a7ea424ca7fae7677caf405f04e37c2cad0c77eadfb4ead593f79ecbd8292e47b7838d775af9d9e252c6ceb147ccc2aadb01f8541871e5080109f9d94afc9103579bc9dbfcff8791d5eaa68521806590eeea74f411731b920a91c4f4542a60e6ffccb1285dd30e74292d5f37f33d4cb74742ac98c7a0475e069828dcd7d8301fc":"4b6f2257197b0692e6026d531bbe2f222a6764fe1cf277b0320a6bdf9efea0a3f304e94fd22372712f751aa377264b1600f3c1e7e0ada846082ab4885a5c9a51b1b25a593a269a7ca1b62a28f1a11b80fde57f0b9c0fc0e38e8edea8a294e18b4b1e0e24a5ae0e9d9fa0d8cf02378e592b322ff04c5a487332b5f58ad3fe9a0c20a205f6872c9e2d0c52c5b29c5c2f008444a3e8400b4822d39f646f9ed390c352615c4cca8cc0099ac1ec23ad7ef581ed33f9fd4a8a58eb240fc79bfc2df7c1606cc52fb97493fa59a0dc8dc01fdd9fc9fb51a2f1e9fd6a89cba67f001d105c456d99c3b1fd68dc9d01b1b8e0e4c2ed4eed63c0110ea6ee96b54eebcd56c5446dda210a9e143366014e72d5e4bf78bacc230641789ae7caa0e37682190d8007aad0a0983e7c970a6feb1112ee5920f628ba03493cc3b340aa9452e6698f818e6e409cd0a7f660094df05646ea0e6c6aa94e933f4fa4feae6207eb473f9d80e335d6020138f1fcd085a336bdea158823cd47079a89ac18bc8541918ccb6bbbe1aab5ba7d9c6b5fc9ba17cae707a556c2bf7d1f991f9a8ebe0f9aa6e395defecbb508cbbf68db8da443ce8fc40149c3c84314986615ca5685e5e2162ebc617929a7e402a6262a28e646d7f503253c30ff2e37ed6580676a9978aa2f5b4fe82e1c2fb83754fa855ee54a61e64a16b64a680732b14671ff55b3f2a6415233206188":0 + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 128 count 4 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"08c936b25b567a0aa679c29f201bf8b190327df0c2563e39cee061f149f4d91b":"e227eb8ae9d239ccd8928adec39c28810ca9b3dc1f366444":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 256 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"605b22935f1eee56ba884bc7a869febc159ac306b66fb9767a7cc6ab7068dffa":"6607f5a64c8f9fd96dc6f9f735b06a193762cdbacfc367e410926c1bfe6dd715490adbad5b9697a6":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 192 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"81c93da5baa5157bf700fd38d7d67662670778b690cfbca9fe11e06268b35605":"875e1ca385586f83d1e23e44ca201006df04e1854e41b933fd607a7383ae1a39":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 320 count 4 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"c42c53da9bd5393e63818ecc1336ec6dfcf1d633e51ebb51c68fb0997c979e7a":"52f7b481f72bc2d41edade5388d38c2ff75765939576e49bab400040a14ff488848bef57d1502c06a3faad471f5c3178":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KW unwrap AES-256 CAVS 17.4 PLAINTEXT LENGTH = 4096 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"7b51259246dd7252f6a7215fb11fbeabfabafb0f8856afae525af8feb81d3490":"c625853da9fdb8665264c30539a258ba61da8bbd214f3f493e292f686dce73c003aea5c4070ea94b19e486019b18a2f3f1d836b85414bab14eb99baa283cafffabc8498cf1151489a6a6a0d01e7041633c94f9cc6cc3dfcd661c9c4a0bf77d9be168eec29cb0efef33c74d2dad18ae2ac2b5efb519f4c1f12eaa7a7d7959e7a6dec681e4d1878b20054b7925d2da0b2f8730604445ff3fca3a06285a4a2d86648f10a2bc3cd422646f70224ec9025e7ce701c8b521c0392fd7d2ac883f2a37bb7e4d53a92a620e65e090b91dbcdd616a13b3948eb1b5a6b1bde80f03dad61aba3223fd91ca3df68b0749fd049813a7ab0268445793b16677bc1af00f877097cb14798777ac817d0df82507aec246f755ddf95b19bb56ef9f2e730bcf2863648d8b164656df37977d54eaf05063b0ee8ba61c2a2ba7dda8fae337d5f6ba965d9e643b4534ed9f4eea7b2b26680fff50260e245fa0d63139b40e2f152da3a976589e957be22cb0885cd582aa9468b08f08a22b486767a6b99c1778ecbd763ebfe2bd83c6191f4e8a84972e4920452b2b2dd28be5d7bda05dc3422419793ca8c26defd3b42b2cc99bbad98e7461f034abf137d7b3166c94e20bdba091653c6a17ccc4faf86a7ba6d2abc0ecada9103e73d9ee4659b6e991a1a209d2ebd96c24759c69ad13a03431ddc05abc20dc8581b1e526f4d98f6352ca4c77f5479db234125fa585ba275fbcbdbf":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 8 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"20501013aa1578ab32704a4287029098":"382179a39d75756f57763486d038b50f":"14":0 + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"a099fff482dbaeb53aad84f81b916da0":"b831c7137facaed059cbf268767e230f":"0d24299443bcc444":0 + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"4d49e260348172c38a79eb925b189b12":"54755a93ff5173aec60d1eaa8fd7d4090f00f638c2831aa9":"2bbe64479da7c45976":0 + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 248 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"6a5a5ac4ccedf055d7562ac58ee7819c":"46904a5583e8a22f4b2f5aa8d071f5cbfc938130f1b33f2e6401aee7cccdef2159a89c9b682cfaf4":"33ac6837955300e569b29958985cdbd434c18208779a949d20b110b0b719e1":0 + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"1dd51f0d3a0a784174ba81b2c9f89005":"e1bde6d2df3b8e48ca127f97b56b5dc2672b3736cc3157c7b80a0316ef1efbdbbce19fea23da831836ccd2e002b2c1dfad206b5cec358446b8434d7f4c39e65b0e0b50897642ffc34bfb3cb3e233aa9c1058ff0d4fd48e98bc8cc3d214c06d514dd97db2278093a308f91f4ae92626d85771fb1447b36a3467fff02ac7e81ddbd0fdbcd02d1acd4f053c989ef3dcc2c01e23bc2f6090f3e8c0ba5f0082341200b1c37b99daa9cb6fec78bce3429aec5badb9fd28fdbdbdc5d53570675a9e39535b4594095658ef950ecd79a162223b60d2eb91765e022dc6e1bbdd86f1bcc280ed9df350da08a801fa16a1bf2701947acfb08f19fdfcaa1d76f466a5de2458a78fb82f6af3e1be68f405a4289f25896f4c9830005c9e895c86e67eceab0ad544856071b8d9585835b5e85a07ab01515f7ab54f98dffb4ca49a15068eefc6a01f7f52fd1adbe3631c59f6f43f79d2b4f2a691e2b30bb1d43a848dc3ee39c7f2e50f0c9deb7ab51e33bf40903ac255bb1510fd61676a6c13c3c776b8aacc6cefb95e24973ebb11192e2692dd0c6a085b58f86e11cc28ee2194988c123e3666da7339c0a4ac6afbacc83f1f100fbb39efff7cc605c9213828224a17c476395aeb9bb0a3150fb8889a8c2a494c8c526203f261642bfa69a94b86de9e6d3d932fe20fffe4bd76d502c0d437a3e1d0d8727b7a8dc0e361967109e93566326b6c517663731c4c9bdd0295d8":"1a4eed4bf5b8d2e2a58f1f1277f164cc32cdadaed848f76fe634034082ff9aa1711870bf3936d01a2aa48de30de5143b9148cf56f4490f9d480dda0b672e8e17a012cd26cec3c68837bd5b2f9beb13e0110f21c6c36343e09e027f39557d1596d4ca406e3e7aa113e9bb8623106bae25f0ea23d46bc29970ba2596f83fe4f73a6f978a4d949fa7c271570a2ae5d2b50792d5ab5c43d455f359fb83c35ca3da37cd73cd66b6adce94d78ecdeabf667daa47ea70799af299e1d898ccf3fca6c42c6fff8cf2ec992f596fed4a0cdb502a00f9b5689302931d15cba691e2f8079a0411332438b714ace5234b91e4aebee8f8dda0e1968c2016fed350430a65d8d206c9436f40b79ce03083b8dc207d6960be1ce97007ed22a388ebb7b3d8f7d2b7d9f8f49731fbcb21e21db0cdd15674c795d5af2b2cd727f83e634e8c47157ed0c6873a5c9419e683f16f4a7827b444967812f9d1adb9201b89a0e66bbcf0591465f5d7036a21cdda0e10099feb819dfc37fdd3105120044dab716882d3971f312e3f4459006fd5a1eab08ff63edf6718f47ddaa37f7f40c9c372995f3aec97bc45e287b64fc8cf5559ab04a4d4d3ed482f5d61d3abd99cc87ee406da3ab9c9cd22ba3b8d191b26754aa94a2412f39e332d77fe72210adb0cbb5c96adebdbde036f1f1aaafad74a7ac2594f81efa734054e2e16dc931d49b970b81756862705fcd4":0 + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 8 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"30be7ff51227f0eef786cb7be2482510":"7f61a0a8b2fe7803f2947d233ec3a255":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 64 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"9ad15907cd05d77b844816b1dd806c92":"7aa0e5d322363afbdd71b531e50d4935":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 72 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"2005cbe9cc66a35cafdff1af119ae6ce":"60f9c736ec3619efdcc7cccc6b90ae5cdb8bb9eceea5dd96":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 248 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"2c3b49efbf60ed01a3ef27ee24ac90b0":"5fa5a87bec09a3e05864656f8966cd38e1c4af48a06b1dab4ec9cca35dd0f92b54015fe5332bdef9":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-128 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"4b4c43c9de4fb4a2a7a7adafeabe2dbd":"6e4d08b8124f7d3e23303fac1a842014f95e3d71c438f8f1990307842796dc5e404ad81802e35c183fe000390a12c81ee684c5cf26c1d90e414cfffe6931b0f352936fcf0b31429eb5c7612cc359a15371390e518cf5c6a6bff1bb0348d14e2c39b98c9f30672ed2af1d96296df8b5567db25b9510a2083461810e119735490058ed1b46b7fdfa885041d8749f90a072b43ba49f2f51fbcda0dbf3cf99fca1d8f46330e5f6fe079d6679cfa26214c8831b782aaa023a2e0ea91050d277dab876aa6865f2bb3fc1a4a77db52f6179d5e5325993280948b6b7002b572829641d35ed3d735d8423e5b24673c4570ca25064fc2c2ad4840632536bcfaf2a7a814f3eaed92b4d501bc51c1719a0d8d8f420b66db845682bb41c88038cfedf13417143a3a701b521a9bf0bb639875a728c3b5ce6ca7e7a45bc75285c193902e6b5e7a4c6e720493d3937bf485e587bff894f70fd6165a1d0129cc673a992e0a4f5489d228a066b1df60002ec0521924f8d672cd1452fec927e58e75807b2a390256f920743fa4d0fc8f59f2469a595ef65095ca0c80adfc843e9e69b6d4a3f824af47b2bfbf2a7a6c1b650378f096f6f0bfabc752c8f279d4f45d56d09dce97962c119de3a64d83b93ea55066f24d4238a229ae86e6a7857af1d8aba823370a72fe358046049a84a70213ef31d9e77a722def8e21480e79b71299438070946bd459a7251707446c911e381":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 8 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"716da5cce5877d8f305b5478d671f6c73eb1bff4de15df07":"dbd5247ad2445575cafb00ee7707c218":"bf":0 + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"b94bc10b85a8c2f74a66fa723a25ea1b398a4f627efe1ce0":"18eef64a022b2c7db27648cbb5f1d5e6":"19c0f2f78606fae7":0 + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"f61cde8e515d59a8ca95efb1a98ed4216c4a9649151babf2":"83fce85e9bfc6ed784b052472e5780fee662f17a91faf1a9":"1c6883862ede37b31b":0 + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 248 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"1c883af75147bae6f34205cd656ad30ec97e617456591ce6":"f24f6747711cf72fab0422026c6d548ccdba786d77ab900ac3fb8f39f116d38e92c82d5fd9a045dd":"bdd793f086d8733f69055bd79bbc448be857286e918fd4c54be4acf4eca5e4":0 + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"1b38d4b366f844e71a8db6be2b77a05a9e81720d2d3f31ee":"62ddc158ecb048250bde439dc7aad34dbe7667d330a349026266c24cee9742953b623d1e247e501641b45b60cfbab665e68040ce06ebce478d9d77f5f344943a1edb14f0d9f165ecfe407031707961fedcd016559228bff5761cd6542944a5d86f9acf4e0a4114682c2312b8d4e8285d3efe1a7c1526642c73c332a9e484377a1c86714e3cb687781928c8a5fe28b4aa74e79f53ecd00793e00041b39b172e5fedef3d4164dcc6b2d2e47994e73f2ab048a4adb8cd94fcd7767314ae40f8cdbef2b26d25f74277a2f88f1de56342a0ec97fde4df2d052e6ebc62622f65725d845f670a647808666c7325725a3428e26fefe725c2badb8a8b8f04e30456bd1fd39fd0f7c782b7a2bc9d8c53922a54c5f103551271af6d7243133b96cd1c108811e4beb9a56472c1f9823a1e88832c5505e07cb93b9041f4b8d69cd27403680a18bb3848c269babbc52aaf568ee8245f4f72e177257103dd4bdffeee9b48e0660d6c2f4dfdce52462d0ed5cc5114dc0aa5a35601c9a644a1fdd3c57c3153e65a108eb94eea3bc9979a67a2f569eb7398a4bd24547c15faa361bb2950a379a1cad1737f56e7c210652aaea7581f39f07ee09a101fde8c34c3cfc404f2b8f682735fc4c721eceb4bd2295d8a74ee3cb858329509eba9049e7e791e04d8452b50c6e6225b94a8cc10ec1d262588fd2f05eee08113414e770c83caa84d310559286c393799117c177089a2":"b1c88d3e5648218ee085abcfcaf7f362f33e4d6de363cb84182af9f18a31475f0e14ae8eff76ca67455726392a110ca262b90d040abf49beb036db096be053d493787a67e983b63945277044acf648172c75b38d7f81dcd58e3bbcecb963dc95863877784ac04eba83481152c30b1ca9e9b78fe537deee6c95933e1b5fb414cfaf7ca1dbbae8b114f0538f4cbf433ef214b776faec9ce1d29f680f4c88ff7b9ba0e964898dd253f5f82ec9f25663ece9dbff5e284f63b0e0fd07fb13b41aa8359f1ba1666bcb26e65d28b1f899952beb28b8f902f048e31efb6ab4817cafc6d84c7f4676b50936715667a67df7ca965b3ab2a5fc472375b1446c810242eb1cb78b9ac496ed4715e0f89a4e1ae0e2724edd59c954f54196ab55ac1947528fa14e716b7707aeb023bd0a2242da7ac97f3feb7795d9be05cd5b1cc33095599ab4c4d8d583c9e2a4d4ed12b836722370569737fae2d6fa60c8a5b8a80fd71129fe29395746eb746528a8845c5a9d50e7bc4372e7f3f9c6333feec791529a6ae1bc0f620feb604f56969e4ea3445810c72dd0772856feb58f09796f461f7ab1b454c303c810eec7526aeb397520b6114f57a4d906e974e8d4a910afafbb0f030b18887b951052d18578022cb7e33408578cdca34f32012f62d3dd35cb74e9d0fecac52231c5cf5a34d470d3b5413644c4e2af1f1613093a3b0550f8df26d033a35b9b":0 + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 8 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"df8f5124b1e03228f2b96f0df31924bac1d3b5d094da22e6":"230bb26c1ea9d5c8fcf7c122ea994f41":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 64 count 7 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"94c8dae772a43b5e00468e0947699b239dfe30ab5f90e2f6":"239c6bceee3583fe7825011e02f01cc0":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 72 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"d81b7162dc6e9e18bea6e258bddb53a1c9f22a4a7177d9dd":"4f3a2b7b229a665776f9cfa42e0c2a615a81f69cc0f0f465":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 248 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"688833d56cf1a0f492bf1f7e35c2fa6299a2b1b5ca2a2823":"4b7c17d7a7189e7955c03abb0ca95fc0c780953787972097ae596d46fe2a8cd75995e6309780ae5f":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-192 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"4b0faa630930b0ff8e624aeb4ddfa018a858cfa653132675":"1640db081e87ef7797a9f17509f5bc67d40beaef096131748f413cac3d2500462b61140b31bc3965958af51351903549e4a71db589a6bc67d72ec33b8605a25a539a2043704389e3e0781152dffa9b64d6ec186ed144847434345e6dccefbe26626eebc4c22e3957b2145c46fa11d7819d4195cb43a9db8d2de507c023607548b56a07628ce4c706939fde1bdef8364b2b8fb7db30fc5c8e99f29876130d9f71a8486d99f2c7fc09f646918d4c60e53c7b9f9a8a1e9a023d70448f6b79c3f35cc6b9ace0535147f7f27be66d918895b9106cc83eda1aacdc2bfb7daa75b2867ae63109ecbf9423526511c64c4261e395d9b5a68dd2503ada57cf1b8a18336b8d63d248ec4dedb6e30662336546c86ef83b53504bc3bedd85a027b6b9f0323bd9380d9ba696b77072d98f96b77f9b3ad9e219715122b2dd033529eaf7ecced8be6d1e6467b8e4a61105be9b7a7ce208b6dd6bd34481f80b3bf534fb87904d45986931a088480a8040047c681dc4e8ec1c625a5449d9ab28709d04989c4b1a4ef0f1e379d37fe6f0641b9e705207e9a0652463cd5da71cd50321116d4ff1cbae08063df336482eadc0d117bf119e01f2577afe182e7fa477ec53b754e347a2c742960b9bd355f969e6ae1df2210e75bb44c598b683dd4c8692f4cd1b92125ac9ed10ec4cef6289d3f815cb894e74dff0bb72d51c43cb420d74a31c681c10ad7f9258d77f1f186c926a":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 8 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"da862b25a629d328cf9fac7be0d6ead1cb2404e9bab87a2381a46eb1a81187c5":"5e01a2b9b8413f303a3578d2cc255fda":"d4":0 + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 64 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"362586d516d38e4d58b50a441443e75064cf6d6cdb6420862932ba7b0480b0fd":"ea7ee0f5af3a271a9777838ed13c61af":"f1b92d0db744bfee":0 + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 72 count 1 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"0e6d542f960c7e61ca190d7fd719fda157030a0a013164613a8c522b52ae685d":"b5cae8a82095abb3478ab167dbc0201d2f4dfc5f81bbe44e":"a957eb4ea02e68ba8b":0 + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 248 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"0445b86d13b7b76c0089a63dec70c32fded9607af63714b7c3cc724f49c1c6e2":"7f63167976e71e43b7b135c8cd12148f826f56e73f6fb6e7f6cefa23c34302ff374d44dd66b6bb01":"7af8c3b32e61f8b5c027383a273927b8fd09b75692bd0b713ec8ecec0bdd2c":0 + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"08f5c088acec18e6cf1f03a8f85d772e327e7fb07f8c2939eb554e84c42ab93d":"dff30fd43647d4be54cf2dfd6187e2ddffb55267313f980fb09c833a9c2bfa558a95861711f0acb2a5c7e731ba22f24a9c4dfdd9e9b0216e9088f817a175b9835b0e17615687a20f68c067205626494cd04fbabc0b3eea7c0a4cd6236bc8b3e52e721dfc357fb8a3722bfcc4c690d8f63dbb864bb6e3a15805aea7270f8eb748deebaa2d066fcda11c2e67221f9a91d2c29a6c79ffae76aa80a2590b4f9e35f623fbf2f8ceb2a205493077556a186e25e5bd52dcff7bcc6909b37a66c1d1431be1b363bb40da25386eaaf5fcabc7be6422a04434a21d1d3105328e7c56770b9f59b03395e4138f5f06fc7e6b80dab87b08caa7bfffc45a095c15263efd3f06c651ded6f58074efc20620d704997fc84721a0a8e9e5b9f5cd330bbb156b31d9d1b1c260e4a24535f30404dc5b2dd6b35d916a1391b25a7d8790be09d85483ed1522074a2785812005bda10dd55acb245b3bd3d9bb777dd23f9b02538ba1a114ba53386d7ca4d9524b2f8a18e0ffb21580b560540bb2146f08f04974b90eb324547d56222df95f44bc6e5f183bef283e4816fb1b2933f9c7c6726a245a495e304d8318d0008c51b0be8090f8f668fbc3f31e073be4b9e97468f4dd8c798e9d682868df493db8a85738b58cfd005190f365849072577772672c6f82555c65046eb34e86fe61103327a063bacbbe33cea7eaa3d1de45471b7269e1b6b38608626e323447a3d5fe0599a6":"8b68f66a3d2f59d419851b94d9a6f2f0e667f8125e11d463a6bc2cea46b12dcc40ce8018b204972c735fdd6d2d05b628f4905c6690f5ac5b1b51e12f3af2dc3ae9b9dab616f0a2a66a1ac197592fd5b15900547f32f54110b58d51a0340aa80e9eeb7b2e0eb97e80aa22ba918f2fe1c678c730ed5c3d8d24774f17d8ab6e01a06243d36e764df1dbb8af1faadbc55281f0242abd7a162c984fd0b05ab8b0bcaedffb2962024f009a8d7c9e71281c09f52ec0707ee3bbeb1ecb918be6ae3e9c1fabbcd3512af928db3ba6c109ff9e9839a616b2a53f092160a48222b84d53cd52490515ef93e1ebb33897263492ab8ec6fad2e633276ae367f76d7f926309478c0205d4f22506a451795dc98f5410d8f5d3e049cbedf381620861e7b4ae08f2d8a71abc1f230248cb636a2d7b4e7717ab2b7b5f2dc6e5b5a18e8043254208b50fd6f8929eaf974c48551233661ad67321b64d69245d536d9a8ca2a6a10966dddb9d2ce36641c9281c460ae524b077867258f638e6ac872cb5f5c6fb216b1ae60a9d0c5ea0dbcd060f255da26111175af4e9935df59ddade6a2a70cddff8cae6a98e4f3843c2dd59d09053b07b648a46f5de0eb21ebb192828279a386ea3eedf2cdc355d73d51111e8c1d522e059752bc56226a4225bcab713bfaaaec78167d7cfd33e913b26fda93ca7524aa8a8b17977c88ff9bc23ea810b4de59eac18d1523b":0 + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 8 count 5 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"5fc3ef43eef256993fb00e6ccc90f60319f10a3bc9fe5ca4ec876c165e2a7720":"f3d922a948969acca293bc3daa027e48":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 64 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"398444df32841be9e699c64faa92630c834564b8384876dceb471c4056fc8299":"30032c9a3ed00d29512d8c725fa86a4b":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 72 count 0 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"64b69233fe392c0bcda28a931cc3527b1a8f29235c1adf6256556c685cb89b9f":"6b5fd75ad16eda04a8b29f1bc0411ae28befbad9e474f2d8":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 248 count 2 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"8c35fb77766d04f48d5b52275c5c5f31f568078419e5c2335918965fbe53cedd":"bacccb1714dbaa4908c2654aa8dbb1ddbddd8ab819429b026619fb1c0fa75a8247372b2feeab1e1d":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +NIST KWP unwrap AES-256 CAVS 21.4 PLAINTEXT LENGTH = 4096 count 3 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"1726706350c11e6883955f24ea11ab247ce3b2ab54d05e67ad9770b5564483dd":"b006f26a67d0e1e2cbeb5c23b6b300adc1526d1f17bbe964fe8237ae244878158e6b04cb488786b5258ac973c3a2eafd7fcf3a7ca6c825155659fbc53d112bc78b3a770cf059fdd5e68f2b4bfa36de3721231102e5041c947fba3d906bff39592ec3901a398da23035f1190e99b58659330cc2e856ee87ad4197dcc7d16e1f062275bced1ed5cd82163ae3e58da7368dc2aadac855385bd4fa0b8baadef608d0a5c27172d12b88c70b136eeccf37f36364361a990dc50815743cab1636e661bff04ca8345520c30b935a060b450526b1d6ac09170e5b0a327b88f42327b85c9a621d2ca745963c2815a2bfcf509d50b6058ed6e67f369b5608d2aa885238b67d1b8e0d83f9464aa473bf109350fcc02e360c2619236cbfbf895b607895530d8d3d2e41450750dad05b1c37ef15db7fb4707597ac252e8e58d4c1ab2713b427643d198164c908b5d8ff36e9700157284009c7b283633d8b27b378bb65eff8aa59b5fe5e6437a1d53a99c106c2c4d033d3d23950e313a10eb31d68524ae9f8e4f56437acf66db3e8f77407a15bbff4b393e5559908993146d93c673d2aeb7d4cb8fc8d0169de7ed6e2bbe6ce9958a0f5d201419e7acb17e47da827ba380d6b3ad3b5a8c2101c5fb501110c727169065f23297947f538ab3ec165d61edc1f6a9e1735e9b7fc06d4d3406cf8f9c6a68b196cf262324a986705fbc802cdd2e6b4ebcf68e6bb9e793ae644":"":MBEDTLS_ERR_CIPHER_AUTH_FAILED + +KW AES-128 wrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F":"00112233445566778899AABBCCDDEEFF":"1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5" + +KW AES-192 wrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F1011121314151617":"00112233445566778899AABBCCDDEEFF":"96778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D" + +KW AES-256 wrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F":"00112233445566778899AABBCCDDEEFF":"64E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7" + +KW AES-128 unwrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F":"1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5":"00112233445566778899AABBCCDDEEFF":0 + +KW AES-192 unwrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F1011121314151617":"031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2":"00112233445566778899AABBCCDDEEFF0001020304050607":0 + +KW AES-256 unwrap rfc 3394 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_unwrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F":"A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1":"00112233445566778899AABBCCDDEEFF0001020304050607":0 + +KWP AES-192 wrap rfc 5649 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"5840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8":"c37b7e6492584340bed12207808941155068f738":"138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a" + +KWP AES-192 wrap rfc 5649 +depends_on:MBEDTLS_AES_C +mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KWP:"5840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8":"466f7250617369":"afbeb0f07dfbf5419200f2ccb50bb24f" diff --git a/tests/suites/test_suite_nist_kw.function b/tests/suites/test_suite_nist_kw.function new file mode 100644 index 0000000000..eb67c03f0c --- /dev/null +++ b/tests/suites/test_suite_nist_kw.function @@ -0,0 +1,343 @@ +/* BEGIN_HEADER */ +#include "mbedtls/nist_kw.h" +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_NIST_KW_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:MBEDTLS_AES_C */ +void mbedtls_nist_kw_self_test( ) +{ + TEST_ASSERT( mbedtls_nist_kw_self_test( 1 ) == 0 ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_AES_C */ +void mbedtls_nist_kw_mix_contexts( ) +{ + mbedtls_nist_kw_context ctx1, ctx2; + unsigned char key[16]; + unsigned char plaintext[32]; + unsigned char ciphertext1[40]; + unsigned char ciphertext2[40]; + size_t output_len, i; + + memset( plaintext, 0, sizeof( plaintext ) ); + memset( ciphertext1, 0, sizeof( ciphertext1 ) ); + memset( ciphertext2, 0, sizeof( ciphertext2 ) ); + memset( key, 0, sizeof( key ) ); + + /* + * 1. Check wrap and unwrap with two seperate contexts + */ + mbedtls_nist_kw_init( &ctx1 ); + mbedtls_nist_kw_init( &ctx2 ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx1, + MBEDTLS_CIPHER_ID_AES, + key, sizeof( key ) * 8, + 1 ) == 0 ); + + TEST_ASSERT( mbedtls_nist_kw_wrap( &ctx1, MBEDTLS_KW_MODE_KW, + plaintext, sizeof( plaintext ), + ciphertext1, &output_len, + sizeof( ciphertext1 ) ) == 0 ); + TEST_ASSERT( output_len == sizeof( ciphertext1 ) ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx2, + MBEDTLS_CIPHER_ID_AES, + key, sizeof( key ) * 8, + 0 ) == 0 ); + + TEST_ASSERT( mbedtls_nist_kw_unwrap( &ctx2, MBEDTLS_KW_MODE_KW, + ciphertext1, output_len, + plaintext, &output_len, + sizeof( plaintext ) ) == 0 ); + + TEST_ASSERT( output_len == sizeof( plaintext ) ); + for( i = 0; i < sizeof( plaintext ); i++ ) + { + TEST_ASSERT( plaintext[i] == 0 ); + } + mbedtls_nist_kw_free( &ctx1 ); + mbedtls_nist_kw_free( &ctx2 ); + + /* + * 2. Check wrapping with two modes, on same context + */ + mbedtls_nist_kw_init( &ctx1 ); + mbedtls_nist_kw_init( &ctx2 ); + output_len = sizeof( ciphertext1 ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx1, + MBEDTLS_CIPHER_ID_AES, + key, sizeof( key ) * 8, + 1 ) == 0 ); + + TEST_ASSERT( mbedtls_nist_kw_wrap( &ctx1, MBEDTLS_KW_MODE_KW, + plaintext, sizeof( plaintext ), + ciphertext1, &output_len, + sizeof( ciphertext1 ) ) == 0 ); + TEST_ASSERT( output_len == sizeof( ciphertext1 ) ); + + TEST_ASSERT( mbedtls_nist_kw_wrap( &ctx1, MBEDTLS_KW_MODE_KWP, + plaintext, sizeof( plaintext ), + ciphertext2, &output_len, + sizeof( ciphertext2 ) ) == 0 ); + + TEST_ASSERT( output_len == sizeof( ciphertext2 ) ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx2, + MBEDTLS_CIPHER_ID_AES, + key, sizeof( key ) * 8, + 0 ) == 0 ); + + TEST_ASSERT( mbedtls_nist_kw_unwrap( &ctx2, MBEDTLS_KW_MODE_KW, + ciphertext1, sizeof( ciphertext1 ), + plaintext, &output_len, + sizeof( plaintext ) ) == 0 ); + + TEST_ASSERT( output_len == sizeof( plaintext ) ); + + for( i = 0; i < sizeof( plaintext ); i++ ) + { + TEST_ASSERT( plaintext[i] == 0 ); + } + + TEST_ASSERT( mbedtls_nist_kw_unwrap( &ctx2, MBEDTLS_KW_MODE_KWP, + ciphertext2, sizeof( ciphertext2 ), + plaintext, &output_len, + sizeof( plaintext ) ) == 0 ); + + TEST_ASSERT( output_len == sizeof( plaintext ) ); + + for( i = 0; i < sizeof( plaintext ); i++ ) + { + TEST_ASSERT( plaintext[i] == 0 ); + } + +exit: + mbedtls_nist_kw_free( &ctx1 ); + mbedtls_nist_kw_free( &ctx2 ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_nist_kw_setkey( int cipher_id, int key_size, + int is_wrap, int result ) +{ + mbedtls_nist_kw_context ctx; + unsigned char key[32]; + int ret; + + mbedtls_nist_kw_init( &ctx ); + + memset( key, 0x2A, sizeof( key ) ); + TEST_ASSERT( (unsigned) key_size <= 8 * sizeof( key ) ); + + ret = mbedtls_nist_kw_setkey( &ctx, cipher_id, key, key_size, is_wrap ); + TEST_ASSERT( ret == result ); + +exit: + mbedtls_nist_kw_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_AES_C */ +void nist_kw_plaintext_lengths( int in_len, int out_len, int mode, int res ) +{ + mbedtls_nist_kw_context ctx; + unsigned char key[16]; + unsigned char *plaintext = NULL; + unsigned char *ciphertext = NULL; + size_t output_len = out_len; + + mbedtls_nist_kw_init( &ctx ); + + memset( key, 0, sizeof( key ) ); + + if (in_len == 0) + { + /* mbedtls_calloc can return NULL for zero-length buffers. Make sure we + * always have a plaintext buffer, even if the length is 0. */ + plaintext = mbedtls_calloc( 1, 1 ); + } + else + { + plaintext = mbedtls_calloc( 1, in_len ); + } + TEST_ASSERT( plaintext != NULL ); + ciphertext = mbedtls_calloc( 1, output_len ); + TEST_ASSERT( ciphertext != NULL ); + + memset( plaintext, 0, in_len ); + memset( ciphertext, 0, output_len ); + + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + key, 8 * sizeof( key ), 1 ) == 0 ); + + TEST_ASSERT( mbedtls_nist_kw_wrap( &ctx, mode, plaintext, in_len, + ciphertext, &output_len, + output_len ) == res ); + if( res == 0 ) + { + if( mode == MBEDTLS_KW_MODE_KWP ) + TEST_ASSERT( output_len == (size_t) in_len + 8 - + ( in_len % 8 ) + 8 ); + else + TEST_ASSERT( output_len == (size_t) in_len + 8 ); + } + else + { + TEST_ASSERT( output_len == 0 ); + } + +exit: + mbedtls_free( ciphertext ); + mbedtls_free( plaintext ); + mbedtls_nist_kw_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_AES_C */ +void nist_kw_ciphertext_lengths( int in_len, int out_len, int mode, int res ) +{ + mbedtls_nist_kw_context ctx; + unsigned char key[16]; + unsigned char *plaintext = NULL; + unsigned char *ciphertext = NULL; + int unwrap_ret; + size_t output_len = out_len; + + mbedtls_nist_kw_init( &ctx ); + + memset( key, 0, sizeof( key ) ); + + plaintext = mbedtls_calloc( 1, output_len ); + TEST_ASSERT( plaintext != NULL ); + ciphertext = mbedtls_calloc( 1, in_len ); + TEST_ASSERT( ciphertext != NULL ); + + memset( plaintext, 0, output_len ); + memset( ciphertext, 0, in_len ); + + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx, MBEDTLS_CIPHER_ID_AES, + key, 8 * sizeof( key ), 0 ) == 0 ); + unwrap_ret = mbedtls_nist_kw_unwrap( &ctx, mode, ciphertext, in_len, + plaintext, &output_len, + output_len ); + + if( res == 0 ) + TEST_ASSERT( unwrap_ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ); + else + TEST_ASSERT( unwrap_ret == res ); + + TEST_ASSERT( output_len == 0 ); + +exit: + mbedtls_free( ciphertext ); + mbedtls_free( plaintext ); + mbedtls_nist_kw_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_nist_kw_wrap( int cipher_id, int mode, + char *key_hex, char *msg_hex, + char *result_hex ) +{ + unsigned char key[32]; + unsigned char msg[512]; + unsigned char result[528]; + unsigned char expected_result[528]; + mbedtls_nist_kw_context ctx; + size_t key_len, msg_len, output_len, result_len, i, padlen; + + mbedtls_nist_kw_init( &ctx ); + + memset( key, 0x00, sizeof( key ) ); + memset( msg, 0x00, sizeof( msg ) ); + memset( result, '+', sizeof( result ) ); + + key_len = unhexify( key, key_hex ); + msg_len = unhexify( msg, msg_hex ); + result_len = unhexify( expected_result, result_hex ); + output_len = sizeof( result ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx, cipher_id, key, key_len * 8, 1 ) + == 0 ); + + /* Test with input == output */ + TEST_ASSERT( mbedtls_nist_kw_wrap( &ctx, mode, msg, msg_len, + result, &output_len, sizeof( result ) ) == 0 ); + + TEST_ASSERT( output_len == result_len ); + + TEST_ASSERT( memcmp( expected_result, result, result_len ) == 0 ); + + padlen = ( msg_len % 8 != 0 ) ? 8 - (msg_len % 8 ) : 0; + /* Check that the function didn't write beyond the end of the buffer. */ + for( i = msg_len + 8 + padlen; i < sizeof( result ); i++ ) + { + TEST_ASSERT( result[i] == '+' ); + } + +exit: + mbedtls_nist_kw_free( &ctx ); +} +/* END_CASE */ + +/* BEGIN_CASE */ +void mbedtls_nist_kw_unwrap( int cipher_id, int mode, + char *key_hex, char *msg_hex, + char *result_hex, int expected_ret ) +{ + unsigned char key[32]; + unsigned char msg[528]; + unsigned char result[528]; + unsigned char expected_result[528]; + mbedtls_nist_kw_context ctx; + size_t key_len, msg_len, output_len, result_len, i; + + mbedtls_nist_kw_init( &ctx ); + + memset( key, 0x00, sizeof( key ) ); + memset( msg, 0x00, sizeof( msg ) ); + memset( result, '+', sizeof( result ) ); + memset( expected_result, 0x00, sizeof( expected_result ) ); + + key_len = unhexify( key, key_hex ); + msg_len = unhexify( msg, msg_hex ); + result_len = unhexify( expected_result, result_hex ); + output_len = sizeof( result ); + + TEST_ASSERT( mbedtls_nist_kw_setkey( &ctx, cipher_id, key, key_len * 8, 0 ) + == 0 ); + + /* Test with input == output */ + TEST_ASSERT( mbedtls_nist_kw_unwrap( &ctx, mode, msg, msg_len, + result, &output_len, sizeof( result ) ) == expected_ret ); + if( expected_ret == 0 ) + { + TEST_ASSERT( output_len == result_len ); + TEST_ASSERT( memcmp( expected_result, result, result_len ) == 0 ); + } + else + { + TEST_ASSERT( output_len == 0 ); + } + + /* Check that the function didn't write beyond the end of the buffer. */ + for( i = msg_len - 8; i < sizeof( result ); i++ ) + { + TEST_ASSERT( result[i] == '+' ); + } + +exit: + mbedtls_nist_kw_free( &ctx ); +} +/* END_CASE */ From 488fd08e11b9e3f24838bdda341e514370b5dc19 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Sun, 15 Jul 2018 09:38:39 +0300 Subject: [PATCH 0668/1100] Add aes KW OIDs as defined Add the KW and KWP OIDs for aes, as defined in RFC 5649. --- include/mbedtls/oid.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/oid.h b/include/mbedtls/oid.h index 408645ece7..f82554844c 100644 --- a/include/mbedtls/oid.h +++ b/include/mbedtls/oid.h @@ -97,6 +97,8 @@ /* ISO arc for standard certificate and CRL extensions */ #define MBEDTLS_OID_ID_CE MBEDTLS_OID_ISO_CCITT_DS "\x1D" /**< id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} */ +#define MBEDTLS_OID_NIST_ALG MBEDTLS_OID_GOV "\x03\x04" /** { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) */ + /** * Private Internet Extensions * { iso(1) identified-organization(3) dod(6) internet(1) @@ -219,12 +221,12 @@ #define MBEDTLS_OID_DIGEST_ALG_MD4 MBEDTLS_OID_RSA_COMPANY "\x02\x04" /**< id-mbedtls_md4 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 4 } */ #define MBEDTLS_OID_DIGEST_ALG_MD5 MBEDTLS_OID_RSA_COMPANY "\x02\x05" /**< id-mbedtls_md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } */ #define MBEDTLS_OID_DIGEST_ALG_SHA1 MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_SHA1 /**< id-mbedtls_sha1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 } */ -#define MBEDTLS_OID_DIGEST_ALG_SHA224 MBEDTLS_OID_GOV "\x03\x04\x02\x04" /**< id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } */ -#define MBEDTLS_OID_DIGEST_ALG_SHA256 MBEDTLS_OID_GOV "\x03\x04\x02\x01" /**< id-mbedtls_sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA224 MBEDTLS_OID_NIST_ALG "\x02\x04" /**< id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA256 MBEDTLS_OID_NIST_ALG "\x02\x01" /**< id-mbedtls_sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } */ -#define MBEDTLS_OID_DIGEST_ALG_SHA384 MBEDTLS_OID_GOV "\x03\x04\x02\x02" /**< id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA384 MBEDTLS_OID_NIST_ALG "\x02\x02" /**< id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } */ -#define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_GOV "\x03\x04\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_NIST_ALG "\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ #define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */ @@ -241,7 +243,20 @@ */ #define MBEDTLS_OID_DES_CBC MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_ALG "\x07" /**< desCBC OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 7 } */ #define MBEDTLS_OID_DES_EDE3_CBC MBEDTLS_OID_RSA_COMPANY "\x03\x07" /**< des-ede3-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) -- us(840) rsadsi(113549) encryptionAlgorithm(3) 7 } */ +#define MBEDTLS_OID_AES MBEDTLS_OID_NIST_ALG "\x01" /** aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 1 } */ +/* + * Key Wrapping algorithms + */ +/* + * RFC 5649 + */ +#define MBEDTLS_OID_AES128_KW MBEDTLS_OID_AES "\x05" /** id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } */ +#define MBEDTLS_OID_AES128_KWP MBEDTLS_OID_AES "\x08" /** id-aes128-wrap-pad OBJECT IDENTIFIER ::= { aes 8 } */ +#define MBEDTLS_OID_AES192_KW MBEDTLS_OID_AES "\x19" /** id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } */ +#define MBEDTLS_OID_AES192_KWP MBEDTLS_OID_AES "\x1c" /** id-aes192-wrap-pad OBJECT IDENTIFIER ::= { aes 28 } */ +#define MBEDTLS_OID_AES256_KW MBEDTLS_OID_AES "\x2d" /** id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } */ +#define MBEDTLS_OID_AES256_KWP MBEDTLS_OID_AES "\x30" /** id-aes256-wrap-pad OBJECT IDENTIFIER ::= { aes 48 } */ /* * PKCS#5 OIDs */ From 4ed32d065bb389f1a954a806b74bf8eed1f625d7 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Tue, 24 Jul 2018 16:51:09 +0100 Subject: [PATCH 0669/1100] cpp_dummy_build: Add NIST key wrapping header --- programs/test/cpp_dummy_build.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/programs/test/cpp_dummy_build.cpp b/programs/test/cpp_dummy_build.cpp index 41c24c9813..c652884046 100644 --- a/programs/test/cpp_dummy_build.cpp +++ b/programs/test/cpp_dummy_build.cpp @@ -69,6 +69,7 @@ #include "mbedtls/md_internal.h" #include "mbedtls/net.h" #include "mbedtls/net_sockets.h" +#include "mbedtls/nist_kw.h" #include "mbedtls/oid.h" #include "mbedtls/padlock.h" #include "mbedtls/pem.h" From 269e999a359fd095a48e2aea92c2cf2006c5f39b Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 24 Jul 2018 14:41:02 +0100 Subject: [PATCH 0670/1100] Remove unnecessary newlines in CONTRIBUTING.md --- CONTRIBUTING.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8fb8ab8fab..3433ed0017 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,8 +52,7 @@ When backporting to these branches please observe the following rules: 3. If a contribution is a new feature or enhancement, no backporting is required. Exceptions to this may be addtional test cases or quality improvements such as changes to build or test scripts. -It would be highly appreciated if contributions are backported to LTS branches -in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development) by contributors. +It would be highly appreciated if contributions are backported to LTS branches in addition to the [development branch](https://github.com/ARMmbed/mbedtls/tree/development) by contributors. Currently maintained LTS branches are: @@ -70,9 +69,7 @@ Mbed TLS includes a comprehensive set of test suites in the `tests/` directory t [A Knowledge Base article describing how to add additional tests is available on the Mbed TLS website](https://tls.mbed.org/kb/development/test_suites). -A test script `tests/scripts/basic-build-test.sh` is available to show test -coverage of the library. New code contributions should provide a similar level -of code coverage to that which already exists for the library. +A test script `tests/scripts/basic-build-test.sh` is available to show test coverage of the library. New code contributions should provide a similar level of code coverage to that which already exists for the library. Sample applications, if needed, should be modified as well. From 193c86425e69dadc935addfa71c4847a0c1cf071 Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Wed, 25 Jul 2018 15:33:39 +0100 Subject: [PATCH 0671/1100] Update version to 2.12.0 --- ChangeLog | 2 +- doxygen/input/doc_mainpage.h | 2 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/version.h | 8 ++++---- library/CMakeLists.txt | 6 +++--- tests/suites/test_suite_version.data | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index c997b2c3bb..44558256cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ mbed TLS ChangeLog (Sorted per branch, date) -= mbed TLS x.x.x branch released xxxx-xx-xx += mbed TLS 2.12.0 branch released 2018-07-25 Security * Fix a vulnerability in TLS ciphersuites based on CBC and using SHA-384, diff --git a/doxygen/input/doc_mainpage.h b/doxygen/input/doc_mainpage.h index ed78eb4b57..f695dd232c 100644 --- a/doxygen/input/doc_mainpage.h +++ b/doxygen/input/doc_mainpage.h @@ -24,7 +24,7 @@ */ /** - * @mainpage mbed TLS v2.11.0 source code documentation + * @mainpage mbed TLS v2.12.0 source code documentation * * This documentation describes the internal structure of mbed TLS. It was * automatically generated from specially formatted comment blocks in diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index fdeab7a554..317eb0dc94 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8 # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. -PROJECT_NAME = "mbed TLS v2.11.0" +PROJECT_NAME = "mbed TLS v2.12.0" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or diff --git a/include/mbedtls/version.h b/include/mbedtls/version.h index c8050b9ba1..eaf25d908c 100644 --- a/include/mbedtls/version.h +++ b/include/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 11 +#define MBEDTLS_VERSION_MINOR 12 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x020B0000 -#define MBEDTLS_VERSION_STRING "2.11.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.11.0" +#define MBEDTLS_VERSION_NUMBER 0x020C0000 +#define MBEDTLS_VERSION_STRING "2.12.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.12.0" #if defined(MBEDTLS_VERSION_C) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 70fff520a2..5115b961fc 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -159,15 +159,15 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.11.0 SOVERSION 3) + set_target_properties(mbedcrypto PROPERTIES VERSION 2.12.0 SOVERSION 3) target_link_libraries(mbedcrypto ${libs}) add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.11.0 SOVERSION 0) + set_target_properties(mbedx509 PROPERTIES VERSION 2.12.0 SOVERSION 0) target_link_libraries(mbedx509 ${libs} mbedcrypto) add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.11.0 SOVERSION 11) + set_target_properties(mbedtls PROPERTIES VERSION 2.12.0 SOVERSION 11) target_link_libraries(mbedtls ${libs} mbedx509) install(TARGETS mbedtls mbedx509 mbedcrypto diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data index 7631791293..402c8b89ad 100644 --- a/tests/suites/test_suite_version.data +++ b/tests/suites/test_suite_version.data @@ -1,8 +1,8 @@ Check compiletime library version -check_compiletime_version:"2.11.0" +check_compiletime_version:"2.12.0" Check runtime library version -check_runtime_version:"2.11.0" +check_runtime_version:"2.12.0" Check for MBEDTLS_VERSION_C check_feature:"MBEDTLS_VERSION_C":0 From f11a7cda73e46efd2b73b45745d43a523da3bb17 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 25 Jul 2018 17:26:56 +0100 Subject: [PATCH 0672/1100] Clarify Changelog entries Corrected the Changelog to move an entry in the wrong place after a merge, some entries which were Changes not bugfixes, and corrected style issues. --- ChangeLog | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index c997b2c3bb..e4ae7aa4c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -38,7 +38,7 @@ Security Features * Add new crypto primitives from RFC 7539: stream cipher Chacha20, one-time authenticator Poly1305 and AEAD construct Chacha20-Poly1305. Contributed - by Daniel King (#485). + by Daniel King. * Add support for CHACHA20-POLY1305 ciphersuites from RFC 7905. * Add platform support for the Haiku OS. (https://www.haiku-os.org). Contributed by Augustin Cavalier. @@ -48,7 +48,7 @@ Features is no functional difference. Contributed by Angus Gratton, and also independently contributed again by Paul Sokolovsky. * Add support for key wrapping modes based on AES as defined by - NIST SP 800-38F algorithms KW and KWP and by RFC's 3394 and 5649. + NIST SP 800-38F algorithms KW and KWP and by RFC 3394 and RFC 5649. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which @@ -56,7 +56,7 @@ Bugfix * Fix compilation error on C++, because of a variable named new. Found and fixed by Hirotaka Niisato in #1783. * Fix "no symbols" warning issued by ranlib when building on Mac OS X. Fix - contributed by tabascoeye in pull request #1600. + contributed by tabascoeye. * Clarify documentation for mbedtls_ssl_write() to include 0 as a valid return value. Found by @davidwu2000. #839 * Fix a memory leak in mbedtls_x509_csr_parse(), found by catenacyber, @@ -65,6 +65,8 @@ Bugfix by Brendan Shanks. Part of a fix for #992. * Fix compilation error when MBEDTLS_ARC4_C is disabled and MBEDTLS_CIPHER_NULL_CIPHER is enabled. Found by TrinityTonic in #1719. + * Added length checks to some TLS parsing functions. Found and fixed by + Philippe Antoine from Catena cyber. #1663. * Fix the inline assembly for the MPI multiply helper function for i386 and i386 with SSE2. Found by László Langó. Fixes #1550 * Fix namespacing in header files. Remove the `mbedtls` namespacing in @@ -78,20 +80,19 @@ Bugfix to the connection being terminated. Seen most often with OpenSSL using TLS 1.0. Reported by @kFYatek and by Conor Murphy on the forum. Fix contributed by Espressif Systems. Fixes #1632 - * Fail when receiving a TLS alert message with an invalid length, or invalid - zero-length messages when using TLS 1.2. Contributed by Espressif Systems. * Fix ssl_client2 example to send application data with 0-length content when the request_size argument is set to 0 as stated in the documentation. Fixes #1833. - * Change the default behaviour of mbedtls_hkdf_extract() to return an error - when calling with a NULL salt and non-zero salt_len. Contributed by - Brian J Murray - * Correct the documentation for `mbedtls_ssl_get_session()`. - This API has deep copy of the session, and the peer - certificate is not lost. Fixes #926. + * Correct the documentation for `mbedtls_ssl_get_session()`. This API has + deep copy of the session, and the peer certificate is not lost. Fixes #926. * Fix build using -std=c99. Fixed by Nick Wilson. Changes + * Fail when receiving a TLS alert message with an invalid length, or invalid + zero-length messages when using TLS 1.2. Contributed by Espressif Systems. + * Change the default behaviour of mbedtls_hkdf_extract() to return an error + when calling with a NULL salt and non-zero salt_len. Contributed by + Brian J Murray * Change the shebang line in Perl scripts to look up perl in the PATH. Contributed by fbrosson. * Allow overriding the time on Windows via the platform-time abstraction. @@ -120,8 +121,6 @@ Bugfix * Fix compilation warnings with IAR toolchain, on 32 bit platform. Reported by rahmanih in #683 * Fix braces in mbedtls_memory_buffer_alloc_status(). Found by sbranden, #552. - * Added length checks to some TLS parsing functions. Found and fixed by - Philippe Antoine from Catena cyber. #1663. Changes * Changed CMake defaults for IAR to treat all compiler warnings as errors. From 608a487b9cf1b40fed7c02d18296b3224a8dd4b1 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 6 Sep 2017 15:07:17 +1000 Subject: [PATCH 0673/1100] Fix memory leak in ecp_mul_comb() if ecp_precompute_comb() fails In ecp_mul_comb(), if (!p_eq_g && grp->T == NULL) and then ecp_precompute_comb() fails (which can happen due to OOM), then the new array of points T will be leaked (as it's newly allocated, but hasn't been asigned to grp->T yet). Symptom was a memory leak in ECDHE key exchange under low memory conditions. --- ChangeLog | 2 ++ library/ecp.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 4c09593b7a..7ea276b1ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -86,6 +86,8 @@ Bugfix * Correct the documentation for `mbedtls_ssl_get_session()`. This API has deep copy of the session, and the peer certificate is not lost. Fixes #926. * Fix build using -std=c99. Fixed by Nick Wilson. + * Fix a memory leak in ecp_mul_comb() if ecp_precompute_comb() fails. + Fix contributed by Espressif Systems. Changes * Fail when receiving a TLS alert message with an invalid length, or invalid diff --git a/library/ecp.c b/library/ecp.c index 41db3fbe5b..68c6f4914e 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1446,7 +1446,12 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, cleanup: - if( T != NULL && ! p_eq_g ) + /* There are two cases where T is not stored in grp: + * - P != G + * - An intermediate operation failed before setting grp->T + * In either case, T must be freed. + */ + if( T != NULL && T != grp->T ) { for( i = 0; i < pre_len; i++ ) mbedtls_ecp_point_free( &T[i] ); From c796573487178f527654e871d71352b40ca01caa Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 27 Jul 2018 17:13:39 +0100 Subject: [PATCH 0674/1100] Add Chacha dependency to the stream cipher field When MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER were disabled, the stream cipher function wasn't being include in the cipher struct, yet Chacha20 requires it. --- include/mbedtls/cipher.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/cipher.h b/include/mbedtls/cipher.h index ea0ce983f1..7f3477a426 100644 --- a/include/mbedtls/cipher.h +++ b/include/mbedtls/cipher.h @@ -45,7 +45,8 @@ #define MBEDTLS_CIPHER_MODE_WITH_PADDING #endif -#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ + defined(MBEDTLS_CHACHA20_C) #define MBEDTLS_CIPHER_MODE_STREAM #endif From 5f26b11ffa23f242fc52b51299c28cf6e7e06fd9 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 27 Jul 2018 17:15:39 +0100 Subject: [PATCH 0675/1100] Change test dependencies to RC4 from DES Some tests were dependent on DES yet actually used RC4. Likely a copy and paste error. This change fixes them. --- tests/suites/test_suite_pkparse.data | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/suites/test_suite_pkparse.data b/tests/suites/test_suite_pkparse.data index cbbbd5b78e..4add252df7 100644 --- a/tests/suites/test_suite_pkparse.data +++ b/tests/suites/test_suite_pkparse.data @@ -207,15 +207,15 @@ depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS12_C pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbe_sha1_4096_rc4_128.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED Parse RSA Key #35 (PKCS#8 encrypted SHA1-RC4-128 DER) -depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC +depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbe_sha1_1024_rc4_128.der":"PolarSSLTest":0 Parse RSA Key #36 (PKCS#8 encrypted SHA1-RC4-128 DER, 2048-bit) -depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC +depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbe_sha1_2048_rc4_128.der":"PolarSSLTest":0 Parse RSA Key #37 (PKCS#8 encrypted SHA1-RC4-128 DER, 4096-bit) -depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC +depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS12_C:MBEDTLS_CIPHER_MODE_CBC pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbe_sha1_4096_rc4_128.der":"PolarSSLTest":0 Parse RSA Key #38 (PKCS#8 encrypted v2 PBKDF2 3DES) @@ -1033,11 +1033,11 @@ depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED pk_parse_keyfile_ec:"data_files/ec_prv.pk8param.pem":"NULL":0 Parse EC Key #6 (PKCS8 encrypted DER) -depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP192R1_ENABLED +depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP192R1_ENABLED pk_parse_keyfile_ec:"data_files/ec_prv.pk8.pw.der":"polar":0 Parse EC Key #7 (PKCS8 encrypted PEM) -depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP192R1_ENABLED +depends_on:MBEDTLS_ARC4_C:MBEDTLS_SHA1_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP192R1_ENABLED pk_parse_keyfile_ec:"data_files/ec_prv.pk8.pw.pem":"polar":0 Parse EC Key #8 (SEC1 PEM, secp224r1) From 1b9b217abffd67db8bba3d06c74cbbb94740060b Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Thu, 26 Apr 2018 14:15:01 +0300 Subject: [PATCH 0676/1100] enforce input and output of ccm selftest on stack In `mbedtls_ccm_self_test()`, enforce input and output buffers sent to the ccm API to be contigous and aligned, by copying the test vectors to buffers on the stack. --- library/ccm.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/library/ccm.c b/library/ccm.c index 804eaf80f1..90cab8e147 100644 --- a/library/ccm.c +++ b/library/ccm.c @@ -381,7 +381,8 @@ int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, */ #define NB_TESTS 3 - +#define CCM_SELFTEST_PT_MAX_LEN 24 +#define CCM_SELFTEST_CT_MAX_LEN 32 /* * The data is the same for all tests, only the used length changes */ @@ -401,7 +402,7 @@ static const unsigned char ad[] = { 0x10, 0x11, 0x12, 0x13 }; -static const unsigned char msg[] = { +static const unsigned char msg[CCM_SELFTEST_PT_MAX_LEN] = { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, @@ -412,7 +413,7 @@ static const size_t add_len[NB_TESTS] = { 8, 16, 20 }; static const size_t msg_len[NB_TESTS] = { 4, 16, 24 }; static const size_t tag_len[NB_TESTS] = { 4, 6, 8 }; -static const unsigned char res[NB_TESTS][32] = { +static const unsigned char res[NB_TESTS][CCM_SELFTEST_CT_MAX_LEN] = { { 0x71, 0x62, 0x01, 0x5b, 0x4d, 0xac, 0x25, 0x5d }, { 0xd2, 0xa1, 0xf0, 0xe0, 0x51, 0xea, 0x5f, 0x62, 0x08, 0x1a, 0x77, 0x92, 0x07, 0x3d, 0x59, 0x3d, @@ -426,7 +427,13 @@ static const unsigned char res[NB_TESTS][32] = { int mbedtls_ccm_self_test( int verbose ) { mbedtls_ccm_context ctx; - unsigned char out[32]; + /* + * Some hardware accelerators require the input and output buffers + * would be in RAM, because the flash is not accessible. + * Use buffers on the stack to hold the test vectors data. + */ + unsigned char plaintext[CCM_SELFTEST_PT_MAX_LEN]; + unsigned char ciphertext[CCM_SELFTEST_CT_MAX_LEN]; size_t i; int ret; @@ -445,27 +452,32 @@ int mbedtls_ccm_self_test( int verbose ) if( verbose != 0 ) mbedtls_printf( " CCM-AES #%u: ", (unsigned int) i + 1 ); + memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN ); + memset( ciphertext, 0, CCM_SELFTEST_CT_MAX_LEN ); + memcpy( plaintext, msg, msg_len[i] ); + ret = mbedtls_ccm_encrypt_and_tag( &ctx, msg_len[i], - iv, iv_len[i], ad, add_len[i], - msg, out, - out + msg_len[i], tag_len[i] ); + iv, iv_len[i], ad, add_len[i], + plaintext, ciphertext, + ciphertext + msg_len[i], tag_len[i] ); if( ret != 0 || - memcmp( out, res[i], msg_len[i] + tag_len[i] ) != 0 ) + memcmp( ciphertext, res[i], msg_len[i] + tag_len[i] ) != 0 ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); return( 1 ); } + memset( plaintext, 0, CCM_SELFTEST_PT_MAX_LEN ); ret = mbedtls_ccm_auth_decrypt( &ctx, msg_len[i], - iv, iv_len[i], ad, add_len[i], - res[i], out, - res[i] + msg_len[i], tag_len[i] ); + iv, iv_len[i], ad, add_len[i], + ciphertext, plaintext, + ciphertext + msg_len[i], tag_len[i] ); if( ret != 0 || - memcmp( out, msg, msg_len[i] ) != 0 ) + memcmp( plaintext, msg, msg_len[i] ) != 0 ) { if( verbose != 0 ) mbedtls_printf( "failed\n" ); From 6b9cbb86855541cc7975fb3551fbe1def4682687 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Jul 2018 20:06:19 +0200 Subject: [PATCH 0677/1100] Copyediting --- programs/README.md | 58 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/programs/README.md b/programs/README.md index fec8a60e4f..31b7e2a2ff 100644 --- a/programs/README.md +++ b/programs/README.md @@ -20,15 +20,15 @@ This subdirectory mostly contains sample programs that illustrate specific featu ### Generic public-key cryptography (`pk`) examples -* [`pkey/gen_key.c`](pkey/gen_key.c): generate a key for any of the supported public-key algorithms (RSA or ECC) and write it to a file that can be used by the other pk sample programs. +* [`pkey/gen_key.c`](pkey/gen_key.c): generates a key for any of the supported public-key algorithms (RSA or ECC) and writes it to a file that can be used by the other pk sample programs. -* [`pkey/key_app.c`](pkey/key_app.c): Load a PEM or DER public key or private key file and dump its content. +* [`pkey/key_app.c`](pkey/key_app.c): loads a PEM or DER public key or private key file and dumps its content. -* [`pkey/key_app_writer.c`](pkey/key_app_writer.c): Load a PEM or DER public key or private key file and write it to a new PEM or DER file. +* [`pkey/key_app_writer.c`](pkey/key_app_writer.c): loads a PEM or DER public key or private key file and writes it to a new PEM or DER file. -* [`pkey/pk_encrypt.c`](pkey/pk_encrypt.c), [`pkey/pk_decrypt.c`](pkey/pk_decrypt.c): Load a PEM or DER public/private key file and use the key to encrypt/decrypt a short string through the generic public-key interface. +* [`pkey/pk_encrypt.c`](pkey/pk_encrypt.c), [`pkey/pk_decrypt.c`](pkey/pk_decrypt.c): load a PEM or DER public/private key file and use the key to encrypt/decrypt a short string through the generic public-key interface. -* [`pkey/pk_sign.c`](pkey/pk_sign.c), [`pkey/pk_verify.c`](pkey/pk_verify.c): Load a PEM or DER private/public key file and use the key to sign/verify a short string. +* [`pkey/pk_sign.c`](pkey/pk_sign.c), [`pkey/pk_verify.c`](pkey/pk_verify.c): load a PEM or DER private/public key file and use the key to sign/verify a short string. ### ECDSA and RSA signature examples @@ -44,80 +44,80 @@ This subdirectory mostly contains sample programs that illustrate specific featu ### Diffie-Hellman key exchange examples -* [`pkey/dh_client.c`](pkey/dh_client.c), [`pkey/dh_server.c`](pkey/dh_server.c): secure channel demonstrator (client, server). Illustrates how to set up a secure channel using RSA for authentication and Diffie-Hellman to set up a shared AES session key. +* [`pkey/dh_client.c`](pkey/dh_client.c), [`pkey/dh_server.c`](pkey/dh_server.c): secure channel demonstrators (client, server). Illustrates how to set up a secure channel using RSA for authentication and Diffie-Hellman to generate a shared AES session key. * [`pkey/ecdh_curve25519.c`](pkey/ecdh_curve25519.c): demonstration of a elliptic curve Diffie-Hellman (ECDH) key agreement. ### Bignum (`mpi`) usage examples -* [`pkey/dh_genprime.c`](pkey/dh_genprime.c): illustrates the bignum (`mpi`) interface by generating Diffie-Hellman parameters. +* [`pkey/dh_genprime.c`](pkey/dh_genprime.c): shows how to use the bignum (`mpi`) interface to generate Diffie-Hellman parameters. * [`pkey/mpi_demo.c`](pkey/mpi_demo.c): demonstrates operations on big integers. ## Random number generator (RNG) examples -* [`random/gen_entropy.c`](random/gen_entropy.c): illustrates using the default entropy sources to generate random data. - Note: most applications should use the entropy generator only to seed a cryptographic pseudorandom generator, as illustrated by `random/gen_random_ctr_drbg.c`. +* [`random/gen_entropy.c`](random/gen_entropy.c): shows how to use the default entropy sources to generate random data. + Note: most applications should only use the entropy generator to seed a cryptographic pseudorandom generator, as illustrated by `random/gen_random_ctr_drbg.c`. -* [`random/gen_random_ctr_drbg.c`](random/gen_random_ctr_drbg.c): illustrates using the default entropy sources to seed a pseudorandom generator, and using the resulting random generator to generate random data. +* [`random/gen_random_ctr_drbg.c`](random/gen_random_ctr_drbg.c): shows how to use the default entropy sources to seed a pseudorandom generator, and using the resulting random generator to generate random data. -* [`random/gen_random_havege.c`](random/gen_random_havege.c): illustrates the HAVEGE entropy collector. +* [`random/gen_random_havege.c`](random/gen_random_havege.c): demonstrates the HAVEGE entropy collector. ## SSL/TLS examples ### SSL/TLS sample applications -* [`ssl/dtls_client.c`](ssl/dtls_client.c): a simple DTLS client program which sends one datagram to the server and reads one datagram in response. +* [`ssl/dtls_client.c`](ssl/dtls_client.c): a simple DTLS client program, which sends one datagram to the server and reads one datagram in response. -* [`ssl/dtls_server.c`](ssl/dtls_server.c): a simple DTLS server program which expects one datagram from the client and writes one datagram in response. This program supports DTLS cookies for hello verification. +* [`ssl/dtls_server.c`](ssl/dtls_server.c): a simple DTLS server program, which expects one datagram from the client and writes one datagram in response. This program supports DTLS cookies for hello verification. -* [`ssl/mini_client.c`](ssl/mini_client.c): a minimalistic SSL client which sends a short string and disconnects. This is intended more as a benchmark; for a better example of a typical TLS client, see `ssl/ssl_client1.c`. +* [`ssl/mini_client.c`](ssl/mini_client.c): a minimalistic SSL client, which sends a short string and disconnects. This is primarily intended as a benchmark; for a better example of a typical TLS client, see `ssl/ssl_client1.c`. * [`ssl/ssl_client1.c`](ssl/ssl_client1.c): a simple HTTPS client that sends a fixed request and displays the response. * [`ssl/ssl_fork_server.c`](ssl/ssl_fork_server.c): a simple HTTPS server using one process per client to send a fixed response. This program requires a Unix/POSIX environment implementing the `fork` system call. -* [`ssl/ssl_mail_client.c`](ssl/ssl_mail_client.c): a simple SMTP-over-TLS or SMTP-STARTTLS client. This client sends an email with a fixed content. +* [`ssl/ssl_mail_client.c`](ssl/ssl_mail_client.c): a simple SMTP-over-TLS or SMTP-STARTTLS client. This client sends an email with fixed content. -* [`ssl/ssl_pthread_server.c`](ssl/ssl_pthread_server.c): a simple HTTPS server using one thread per client to send a fixed response. This program requires a the pthread library. +* [`ssl/ssl_pthread_server.c`](ssl/ssl_pthread_server.c): a simple HTTPS server using one thread per client to send a fixed response. This program requires the pthread library. -* [`ssl/ssl_server.c`](ssl/ssl_server.c): a simple HTTPS server that sends a fixed response. This server serves a single client at a time. +* [`ssl/ssl_server.c`](ssl/ssl_server.c): a simple HTTPS server that sends a fixed response. This server accepts a single client at a time. ### SSL/TLS feature demonstrators -Note: unlike most of the other programs under the `programs/` directory, these two programs are not intended as a basis to start writing an application. They combine most of the features supported by the library, and most applications require only a few features. It is recommended to start with `ssl_client1.c` or `ssl_server.c`, and to look inside `ssl/ssl_client2.c` or `ssl/ssl_server2.c` to see how to use the specific features that your application needs. +Note: unlike most of the other programs under the `programs/` directory, these two programs are not intended as a basis for writing an application. They combine most of the features supported by the library, and most applications require only a few features. To write a new application, we recommended that you start with `ssl_client1.c` or `ssl_server.c`, and then look inside `ssl/ssl_client2.c` or `ssl/ssl_server2.c` to see how to use the specific features that your application needs. * [`ssl/ssl_client2.c`](ssl/ssl_client2.c): an HTTPS client that sends a fixed request and displays the response, with options to select TLS protocol features and Mbed TLS library features. * [`ssl/ssl_server2.c`](ssl/ssl_server2.c): an HTTPS server that sends a fixed response, with options to select TLS protocol features and Mbed TLS library features. -These programs have options to trigger certain behaviors (e.g. reconnection, renegotiation) so the `ssl_server2` program can be useful to test features in your TLS client and the `ssl_client2` program can be useful to test features in your TLS server. +In addition to providing options for testing client-side features, the `ssl_client2` program has options to exercise certain behaviors in the server (for example, to select ciphersuites, or to force a renegotiation), which are useful to test the corresponding features in a TLS server. Likewise, `ssl_server2` has options to activate certain behaviors that are useful to test a TLS client. ## Test utilities * [`test/benchmark.c`](test/benchmark.c): benchmark for cryptographic algorithms. -* [`test/selftest.c`](test/selftest.c): runs the self-test functions in all the library modules. +* [`test/selftest.c`](test/selftest.c): runs the self-test function in each library module. -* [`test/ssl_cert_test.c`](test/ssl_cert_test.c): verify some X.509 certificates, and verify that each certificate matches the corresponding private key (supported for RSA keys only). +* [`test/ssl_cert_test.c`](test/ssl_cert_test.c): demonstrates how to verify X.509 certificates, and (for RSA keys only) how to check that each certificate matches the corresponding private key. This program requires some test data which is not provided. -* [`test/udp_proxy.c`](test/udp_proxy.c): a UDP proxy that can inject certain failures (delay, duplicate, drop). Useful to test DTLS. +* [`test/udp_proxy.c`](test/udp_proxy.c): a UDP proxy that can inject certain failures (delay, duplicate, drop). Useful for testing DTLS. ## Development utilities -* [`util/pem2der.c`](util/pem2der.c): a PEM to DER converter. Mbed TLS can read PEM files directly, but this utility can be useful to interact with other tools or with minimal Mbed TLS builds that lack PEM support. +* [`util/pem2der.c`](util/pem2der.c): a PEM to DER converter. Mbed TLS can read PEM files directly, but this utility can be useful for interacting with other tools or with minimal Mbed TLS builds that lack PEM support. -* [`util/strerror.c`](util/strerror.c): print the error description corresponding to an integer status returned by an Mbed TLS function. +* [`util/strerror.c`](util/strerror.c): prints the error description corresponding to an integer status returned by an Mbed TLS function. ## X.509 certificate examples -* [`x509/cert_app.c`](x509/cert_app.c): connect to a TLS server and verify its certificate chain. +* [`x509/cert_app.c`](x509/cert_app.c): connects to a TLS server and verifies its certificate chain. -* [`x509/cert_req.c`](x509/cert_req.c): generate a certificate signing request (CSR) for a private key. +* [`x509/cert_req.c`](x509/cert_req.c): generates a certificate signing request (CSR) for a private key. -* [`x509/cert_write.c`](x509/cert_write.c): sign a certificate signing request, or self-sign a certificate. +* [`x509/cert_write.c`](x509/cert_write.c): signs a certificate signing request, or self-sign a certificate. -* [`x509/crl_app.c`](x509/crl_app.c): load and dump a certificate revocation list (CRL). +* [`x509/crl_app.c`](x509/crl_app.c): loads and dumps a certificate revocation list (CRL). -* [`x509/req_app.c`](x509/req_app.c): load and dump a certificate signing request (CSR). +* [`x509/req_app.c`](x509/req_app.c): loads and dumps a certificate signing request (CSR). From c2e5cdd536c16f460555e00cf90ec51512db79ae Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 30 Jul 2018 20:11:05 +0200 Subject: [PATCH 0678/1100] Explain aescrypt2 better and warn that it doesn't do things properly --- programs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/README.md b/programs/README.md index 31b7e2a2ff..7075ae2dd5 100644 --- a/programs/README.md +++ b/programs/README.md @@ -5,8 +5,8 @@ This subdirectory mostly contains sample programs that illustrate specific featu ## Symmetric cryptography (AES) examples -* [`aes/aescrypt2.c`](aes/aescrypt2.c): file encryption and authentication, demonstrating the low-level AES interface and HMAC. - Warning: this program illustrates how to roll your own block cipher mode. Most applications should not do this and should instead use the standard library functions (e.g. `mbedtls_aes_crypt_cbc`). +* [`aes/aescrypt2.c`](aes/aescrypt2.c): file encryption and authentication with a key derived from a low-entropy secret, demonstrating the low-level AES interface, the digest interface and HMAC. + Warning: this program illustrates how to use low-level functions in the library. It should not be taken as an example of how to build a secure encryption mechanism. To derive a key from a low-entropy secret such as a password, use a standard key stretching mechanism such as PBKDF2 (provided by the `pkcs5` module). To encrypt and authenticate data, use a standard mode such as GCM or CCM (both available as library module). * [`aes/crypt_and_hash.c`](aes/crypt_and_hash.c): file encryption and authentication, demonstrating the generic cipher interface and the generic hash interface. From b363382ba4c0489b6045112dbaf100758ec72cc2 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Mon, 30 Jul 2018 22:10:48 +0100 Subject: [PATCH 0679/1100] Add ChangeLog entry for bug #1890 --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4c09593b7a..bda3de8f5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Bugfix + * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if + MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 + = mbed TLS 2.12.0 branch released 2018-07-25 Security From 9f7798ed3ffdc23359576ca84238cf4eef830599 Mon Sep 17 00:00:00 2001 From: k-stachowiak Date: Tue, 31 Jul 2018 16:52:32 +0200 Subject: [PATCH 0680/1100] Revert change of a return variable name --- library/ssl_tls.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 87af274023..3327b2ca0a 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5671,7 +5671,7 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl ) int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { - int err; + int ret; ssl->conf = conf; @@ -5686,7 +5686,7 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, if( ssl->in_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) ); - err = MBEDTLS_ERR_SSL_ALLOC_FAILED; + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; goto error; } @@ -5694,7 +5694,7 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, if( ssl->out_buf == NULL ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) ); - err = MBEDTLS_ERR_SSL_ALLOC_FAILED; + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; goto error; } @@ -5729,7 +5729,7 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, ssl->in_msg = ssl->in_buf + 13; } - if( ( err = ssl_handshake_init( ssl ) ) != 0 ) + if( ( ret = ssl_handshake_init( ssl ) ) != 0 ) goto error; return( 0 ); @@ -5755,7 +5755,7 @@ error: ssl->out_iv = NULL; ssl->out_msg = NULL; - return( err ); + return( ret ); } /* From 5b559ac7ab88849a340e652022f991ebbd8f076b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 3 Aug 2018 09:40:07 +0100 Subject: [PATCH 0681/1100] Fix mbedtls_ssl_get_record_expansion() for ChaChaPoly and CBC `mbedtls_ssl_get_record_expansion()` is supposed to return the maximum difference between the size of a protected record and the size of the encapsulated plaintext. It had the following two bugs: (1) It did not consider the new ChaChaPoly ciphersuites, returning the error code #MBEDTLS_ERR_SSL_INTERNAL_ERROR in this case. (2) It did not correctly estimate the maximum record expansion in case of CBC ciphersuites in (D)TLS versions 1.1 and higher, in which case the ciphertext is prefixed by an explicit IV. This commit fixes both bugs. --- library/ssl_tls.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 91f96c8ab6..5905a6d921 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6841,6 +6841,7 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) { size_t transform_expansion; const mbedtls_ssl_transform *transform = ssl->transform_out; + unsigned block_size; #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) @@ -6854,13 +6855,33 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) { case MBEDTLS_MODE_GCM: case MBEDTLS_MODE_CCM: + case MBEDTLS_MODE_CHACHAPOLY: case MBEDTLS_MODE_STREAM: transform_expansion = transform->minlen; break; case MBEDTLS_MODE_CBC: - transform_expansion = transform->maclen - + mbedtls_cipher_get_block_size( &transform->cipher_ctx_enc ); + + block_size = mbedtls_cipher_get_block_size( + &transform->cipher_ctx_enc ); + +#if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) + if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + /* Expansion due to addition of + * - MAC + * - CBC padding (theoretically up to 256 bytes, but + * we never use more than block_size) + * - explicit IV + */ + transform_expansion = transform->maclen + 2 * block_size; + } + else +#endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ + { + /* No explicit IV prior to TLS 1.1. */ + transform_expansion = transform->maclen + block_size; + } break; default: From 448146407f9d02aaf577700817fefea123067181 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 3 Aug 2018 09:53:48 +0100 Subject: [PATCH 0682/1100] Adapt ChangeLog --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index bda3de8f5c..d5101f4094 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ mbed TLS ChangeLog (Sorted per branch, date) Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 + * Fix a miscalculation of the maximum record expansion in + mbedtls_ssl_get_record_expansion() in case of ChachaPoly ciphersuites, + or CBC ciphersuites in (D)TLS versions 1.1 or higher. Fixes #1913, #1914. = mbed TLS 2.12.0 branch released 2018-07-25 From 94aefaf314c026035ee21c1d88df5018c8de49d6 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 23 Mar 2017 12:32:54 +0000 Subject: [PATCH 0683/1100] Optimise makefile targets --- tests/Makefile | 574 +++++++++++-------------------------------------- 1 file changed, 131 insertions(+), 443 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 3632554499..975be94a23 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -7,7 +7,7 @@ WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement -Wno-unused-function -W LDFLAGS ?= LOCAL_CFLAGS = $(WARNING_CFLAGS) -I../include -D_FILE_OFFSET_BITS=64 -LOCAL_LDFLAGS = -L../library \ +LOCAL_LDFLAGS = -L../library \ -lmbedtls$(SHARED_SUFFIX) \ -lmbedx509$(SHARED_SUFFIX) \ -lmbedcrypto$(SHARED_SUFFIX) @@ -50,465 +50,153 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aes.ecb$(EXEXT) test_suite_aes.cbc$(EXEXT) \ - test_suite_aes.cfb$(EXEXT) test_suite_aes.ofb$(EXEXT) \ - test_suite_aes.xts$(EXEXT) \ - test_suite_aes.rest$(EXEXT) test_suite_arc4$(EXEXT) \ - test_suite_aria$(EXEXT) test_suite_asn1write$(EXEXT) \ - test_suite_base64$(EXEXT) test_suite_blowfish$(EXEXT) \ - test_suite_camellia$(EXEXT) test_suite_ccm$(EXEXT) \ - test_suite_chacha20$(EXEXT) test_suite_chachapoly$(EXEXT) \ - test_suite_cmac$(EXEXT) \ - test_suite_cipher.chachapoly$(EXEXT) \ - test_suite_cipher.aes$(EXEXT) \ - test_suite_cipher.arc4$(EXEXT) test_suite_cipher.ccm$(EXEXT) \ - test_suite_cipher.chacha20$(EXEXT) \ - test_suite_cipher.gcm$(EXEXT) \ - test_suite_cipher.blowfish$(EXEXT) \ - test_suite_cipher.camellia$(EXEXT) \ - test_suite_cipher.des$(EXEXT) test_suite_cipher.null$(EXEXT) \ - test_suite_cipher.padding$(EXEXT) \ - test_suite_ctr_drbg$(EXEXT) test_suite_debug$(EXEXT) \ - test_suite_des$(EXEXT) test_suite_dhm$(EXEXT) \ - test_suite_ecdh$(EXEXT) test_suite_ecdsa$(EXEXT) \ - test_suite_ecjpake$(EXEXT) test_suite_ecp$(EXEXT) \ - test_suite_error$(EXEXT) test_suite_entropy$(EXEXT) \ - test_suite_gcm.aes128_de$(EXEXT) \ - test_suite_gcm.aes192_de$(EXEXT) \ - test_suite_gcm.aes256_de$(EXEXT) \ - test_suite_gcm.aes128_en$(EXEXT) \ - test_suite_gcm.aes192_en$(EXEXT) \ - test_suite_gcm.aes256_en$(EXEXT) \ - test_suite_gcm.camellia$(EXEXT) \ - test_suite_hkdf$(EXEXT) \ - test_suite_hmac_drbg.misc$(EXEXT) \ - test_suite_hmac_drbg.no_reseed$(EXEXT) \ - test_suite_hmac_drbg.nopr$(EXEXT) \ - test_suite_hmac_drbg.pr$(EXEXT) \ - test_suite_md$(EXEXT) test_suite_mdx$(EXEXT) \ - test_suite_memory_buffer_alloc$(EXEXT) \ - test_suite_mpi$(EXEXT) \ - test_suite_nist_kw$(EXEXT) \ - test_suite_pem$(EXEXT) test_suite_pkcs1_v15$(EXEXT) \ - test_suite_pkcs1_v21$(EXEXT) test_suite_pkcs5$(EXEXT) \ - test_suite_pkparse$(EXEXT) test_suite_pkwrite$(EXEXT) \ - test_suite_pk$(EXEXT) \ - test_suite_poly1305$(EXEXT) \ - test_suite_rsa$(EXEXT) test_suite_shax$(EXEXT) \ - test_suite_ssl$(EXEXT) test_suite_timing$(EXEXT) \ - test_suite_x509parse$(EXEXT) test_suite_x509write$(EXEXT) \ - test_suite_xtea$(EXEXT) test_suite_version$(EXEXT) +APPS = test_suite_aes.ecb test_suite_aes.cbc \ + test_suite_aes.cfb test_suite_aes.ofb \ + test_suite_aes.xts \ + test_suite_aes.rest test_suite_arc4 \ + test_suite_aria test_suite_asn1write \ + test_suite_base64 test_suite_blowfish \ + test_suite_camellia test_suite_ccm \ + test_suite_chacha20 test_suite_chachapoly \ + test_suite_cmac \ + test_suite_cipher.chachapoly \ + test_suite_cipher.aes \ + test_suite_cipher.arc4 test_suite_cipher.ccm \ + test_suite_cipher.chacha20 \ + test_suite_cipher.gcm \ + test_suite_cipher.blowfish \ + test_suite_cipher.camellia \ + test_suite_cipher.des test_suite_cipher.null \ + test_suite_cipher.padding \ + test_suite_ctr_drbg test_suite_debug \ + test_suite_des test_suite_dhm \ + test_suite_ecdh test_suite_ecdsa \ + test_suite_ecjpake test_suite_ecp \ + test_suite_error test_suite_entropy \ + test_suite_gcm.aes128_de \ + test_suite_gcm.aes192_de \ + test_suite_gcm.aes256_de \ + test_suite_gcm.aes128_en \ + test_suite_gcm.aes192_en \ + test_suite_gcm.aes256_en \ + test_suite_gcm.camellia \ + test_suite_hkdf \ + test_suite_hmac_drbg.misc \ + test_suite_hmac_drbg.no_reseed \ + test_suite_hmac_drbg.nopr \ + test_suite_hmac_drbg.pr \ + test_suite_md test_suite_mdx \ + test_suite_memory_buffer_alloc \ + test_suite_mpi \ + test_suite_nist_kw \ + test_suite_pem test_suite_pkcs1_v15 \ + test_suite_pkcs1_v21 test_suite_pkcs5 \ + test_suite_pkparse test_suite_pkwrite \ + test_suite_pk \ + test_suite_poly1305 \ + test_suite_rsa test_suite_shax \ + test_suite_ssl test_suite_timing \ + test_suite_x509parse test_suite_x509write \ + test_suite_xtea test_suite_version + +BINARIES := $(addsuffix $(EXEXT),$(APPS)) + +# Look up for associated function files +func.test_suite_aes.ecb.c := test_suite_aes +func.test_suite_aes.cbc.c := test_suite_aes +func.test_suite_aes.cfb.c := test_suite_aes +func.test_suite_aes.ofb.c := test_suite_aes +func.test_suite_aes.xts.c := test_suite_aes +func.test_suite_aes.rest.c := test_suite_aes +func.test_suite_arc4.c := test_suite_arc4 +func.test_suite_aria.c := test_suite_aria +func.test_suite_asn1write.c := test_suite_asn1write +func.test_suite_base64.c := test_suite_base64 +func.test_suite_blowfish.c := test_suite_blowfish +func.test_suite_camellia.c := test_suite_camellia +func.test_suite_ccm.c := test_suite_ccm +func.test_suite_chacha20.c := test_suite_chacha20 +func.test_suite_chachapoly.c := test_suite_chachapoly +func.test_suite_cmac.c := test_suite_cmac +func.test_suite_cipher.chachapoly.c := test_suite_cipher +func.test_suite_cipher.aes.c := test_suite_cipher +func.test_suite_cipher.arc4.c := test_suite_cipher +func.test_suite_cipher.ccm.c := test_suite_cipher +func.test_suite_cipher.chacha20.c := test_suite_cipher +func.test_suite_cipher.gcm.c := test_suite_cipher +func.test_suite_cipher.blowfish.c := test_suite_cipher +func.test_suite_cipher.camellia.c := test_suite_cipher +func.test_suite_cipher.des.c := test_suite_cipher +func.test_suite_cipher.null.c := test_suite_cipher +func.test_suite_cipher.padding.c := test_suite_cipher +func.test_suite_ctr_drbg.c := test_suite_ctr_drbg +func.test_suite_debug.c := test_suite_debug +func.test_suite_des.c := test_suite_des +func.test_suite_dhm.c := test_suite_dhm +func.test_suite_ecdh.c := test_suite_ecdh +func.test_suite_ecdsa.c := test_suite_ecdsa +func.test_suite_ecjpake.c := test_suite_ecjpake +func.test_suite_ecp.c := test_suite_ecp +func.test_suite_error.c := test_suite_error +func.test_suite_entropy.c := test_suite_entropy +func.test_suite_gcm.aes128_de.c := test_suite_gcm +func.test_suite_gcm.aes192_de.c := test_suite_gcm +func.test_suite_gcm.aes256_de.c := test_suite_gcm +func.test_suite_gcm.aes128_en.c := test_suite_gcm +func.test_suite_gcm.aes192_en.c := test_suite_gcm +func.test_suite_gcm.aes256_en.c := test_suite_gcm +func.test_suite_gcm.camellia.c := test_suite_gcm +func.test_suite_hkdf.c := test_suite_hkdf +func.test_suite_hmac_drbg.misc.c := test_suite_hmac_drbg +func.test_suite_hmac_drbg.no_reseed.c := test_suite_hmac_drbg +func.test_suite_hmac_drbg.nopr.c := test_suite_hmac_drbg +func.test_suite_hmac_drbg.pr.c := test_suite_hmac_drbg +func.test_suite_md.c := test_suite_md +func.test_suite_mdx.c := test_suite_mdx +func.test_suite_memory_buffer_alloc.c := test_suite_memory_buffer_alloc +func.test_suite_mpi.c := test_suite_mpi +func.test_suite_nist_kw.c := test_suite_nist_kw +func.test_suite_pem.c := test_suite_pem +func.test_suite_pkcs1_v15.c := test_suite_pkcs1_v15 +func.test_suite_pkcs1_v21.c := test_suite_pkcs1_v21 +func.test_suite_pkcs5.c := test_suite_pkcs5 +func.test_suite_pkparse.c := test_suite_pkparse +func.test_suite_pkwrite.c := test_suite_pkwrite +func.test_suite_pk.c := test_suite_pk +func.test_suite_poly1305.c := test_suite_poly1305 +func.test_suite_rsa.c := test_suite_rsa +func.test_suite_shax.c := test_suite_shax +func.test_suite_ssl.c := test_suite_ssl +func.test_suite_timing.c := test_suite_timing +func.test_suite_x509parse.c := test_suite_x509parse +func.test_suite_x509write.c := test_suite_x509write +func.test_suite_xtea.c := test_suite_xtea +func.test_suite_version.c := test_suite_version .SILENT: .PHONY: all check test clean -all: $(APPS) - $(DEP): $(MAKE) -C ../library # invoke perl explicitly for the sake of mingw32-make -test_suite_aes.ecb.c : suites/test_suite_aes.function suites/test_suite_aes.ecb.data scripts/generate_code.pl suites/helpers.function suites/main_test.function +C_FILES := $(addsuffix .c,$(APPS)) + +.SECONDEXPANSION: +$(C_FILES): %.c: suites/$$(func.$$*.c).function suites/%.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.ecb + perl scripts/generate_code.pl suites $(func.$@) $* -test_suite_aes.cbc.c : suites/test_suite_aes.function suites/test_suite_aes.cbc.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.cbc -test_suite_aes.cfb.c : suites/test_suite_aes.function suites/test_suite_aes.cfb.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.cfb - -test_suite_aes.ofb.c : suites/test_suite_aes.function suites/test_suite_aes.ofb.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.ofb - -test_suite_aes.rest.c : suites/test_suite_aes.function suites/test_suite_aes.rest.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.rest - -test_suite_aes.xts.c : suites/test_suite_aes.function suites/test_suite_aes.xts.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_aes test_suite_aes.xts - -test_suite_cipher.aes.c : suites/test_suite_cipher.function suites/test_suite_cipher.aes.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.aes - -test_suite_cipher.arc4.c : suites/test_suite_cipher.function suites/test_suite_cipher.arc4.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.arc4 - -test_suite_cipher.ccm.c : suites/test_suite_cipher.function suites/test_suite_cipher.ccm.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.ccm - -test_suite_cipher.chacha20.c : suites/test_suite_cipher.function suites/test_suite_cipher.chacha20.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.chacha20 - -test_suite_cipher.chachapoly.c : suites/test_suite_cipher.function suites/test_suite_cipher.chachapoly.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.chachapoly - -test_suite_cipher.gcm.c : suites/test_suite_cipher.function suites/test_suite_cipher.gcm.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.gcm - -test_suite_cipher.blowfish.c : suites/test_suite_cipher.function suites/test_suite_cipher.blowfish.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.blowfish - -test_suite_cipher.camellia.c : suites/test_suite_cipher.function suites/test_suite_cipher.camellia.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.camellia - -test_suite_cipher.des.c : suites/test_suite_cipher.function suites/test_suite_cipher.des.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.des - -test_suite_cipher.null.c : suites/test_suite_cipher.function suites/test_suite_cipher.null.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.null - -test_suite_cipher.padding.c : suites/test_suite_cipher.function suites/test_suite_cipher.padding.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_cipher test_suite_cipher.padding - -test_suite_gcm.aes128_de.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes128_de.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes128_de - -test_suite_gcm.aes192_de.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes192_de.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes192_de - -test_suite_gcm.aes256_de.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes256_de.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes256_de - -test_suite_gcm.aes128_en.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes128_en.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes128_en - -test_suite_gcm.aes192_en.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes192_en.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes192_en - -test_suite_gcm.aes256_en.c : suites/test_suite_gcm.function suites/test_suite_gcm.aes256_en.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.aes256_en - -test_suite_gcm.camellia.c : suites/test_suite_gcm.function suites/test_suite_gcm.camellia.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_gcm test_suite_gcm.camellia - -test_suite_hkdf.c : suites/test_suite_hkdf.function suites/test_suite_hkdf.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_hkdf test_suite_hkdf - -test_suite_hmac_drbg.misc.c : suites/test_suite_hmac_drbg.function suites/test_suite_hmac_drbg.misc.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_hmac_drbg test_suite_hmac_drbg.misc - -test_suite_hmac_drbg.no_reseed.c : suites/test_suite_hmac_drbg.function suites/test_suite_hmac_drbg.no_reseed.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_hmac_drbg test_suite_hmac_drbg.no_reseed - -test_suite_hmac_drbg.nopr.c : suites/test_suite_hmac_drbg.function suites/test_suite_hmac_drbg.nopr.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_hmac_drbg test_suite_hmac_drbg.nopr - -test_suite_hmac_drbg.pr.c : suites/test_suite_hmac_drbg.function suites/test_suite_hmac_drbg.pr.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites test_suite_hmac_drbg test_suite_hmac_drbg.pr - -%.c : suites/%.function suites/%.data scripts/generate_code.pl suites/helpers.function suites/main_test.function - echo " Gen $@" - perl scripts/generate_code.pl suites $* $* - -test_suite_aes.ecb$(EXEXT): test_suite_aes.ecb.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aes.cbc$(EXEXT): test_suite_aes.cbc.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aes.cfb$(EXEXT): test_suite_aes.cfb.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aes.ofb$(EXEXT): test_suite_aes.ofb.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aes.rest$(EXEXT): test_suite_aes.rest.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aes.xts$(EXEXT): test_suite_aes.xts.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_arc4$(EXEXT): test_suite_arc4.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_asn1write$(EXEXT): test_suite_asn1write.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_base64$(EXEXT): test_suite_base64.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_blowfish$(EXEXT): test_suite_blowfish.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_camellia$(EXEXT): test_suite_camellia.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ccm$(EXEXT): test_suite_ccm.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_chacha20$(EXEXT): test_suite_chacha20.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_chachapoly$(EXEXT): test_suite_chachapoly.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cmac$(EXEXT): test_suite_cmac.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.aes$(EXEXT): test_suite_cipher.aes.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.arc4$(EXEXT): test_suite_cipher.arc4.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.ccm$(EXEXT): test_suite_cipher.ccm.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.chacha20$(EXEXT): test_suite_cipher.chacha20.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.chachapoly$(EXEXT): test_suite_cipher.chachapoly.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.gcm$(EXEXT): test_suite_cipher.gcm.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.blowfish$(EXEXT): test_suite_cipher.blowfish.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.camellia$(EXEXT): test_suite_cipher.camellia.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.des$(EXEXT): test_suite_cipher.des.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.null$(EXEXT): test_suite_cipher.null.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_cipher.padding$(EXEXT): test_suite_cipher.padding.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ctr_drbg$(EXEXT): test_suite_ctr_drbg.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_des$(EXEXT): test_suite_des.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_dhm$(EXEXT): test_suite_dhm.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ecdh$(EXEXT): test_suite_ecdh.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ecdsa$(EXEXT): test_suite_ecdsa.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ecjpake$(EXEXT): test_suite_ecjpake.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_ecp$(EXEXT): test_suite_ecp.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_entropy$(EXEXT): test_suite_entropy.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_error$(EXEXT): test_suite_error.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes128_de$(EXEXT): test_suite_gcm.aes128_de.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes192_de$(EXEXT): test_suite_gcm.aes192_de.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes256_de$(EXEXT): test_suite_gcm.aes256_de.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes128_en$(EXEXT): test_suite_gcm.aes128_en.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes192_en$(EXEXT): test_suite_gcm.aes192_en.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.aes256_en$(EXEXT): test_suite_gcm.aes256_en.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_gcm.camellia$(EXEXT): test_suite_gcm.camellia.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_hkdf$(EXEXT): test_suite_hkdf.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_hmac_drbg.misc$(EXEXT): test_suite_hmac_drbg.misc.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_hmac_drbg.no_reseed$(EXEXT): test_suite_hmac_drbg.no_reseed.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_hmac_drbg.nopr$(EXEXT): test_suite_hmac_drbg.nopr.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_hmac_drbg.pr$(EXEXT): test_suite_hmac_drbg.pr.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_md$(EXEXT): test_suite_md.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_mdx$(EXEXT): test_suite_mdx.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_memory_buffer_alloc$(EXEXT): test_suite_memory_buffer_alloc.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_mpi$(EXEXT): test_suite_mpi.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_nist_kw$(EXEXT): test_suite_nist_kw.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pem$(EXEXT): test_suite_pem.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pkcs1_v15$(EXEXT): test_suite_pkcs1_v15.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pkcs1_v21$(EXEXT): test_suite_pkcs1_v21.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pkcs5$(EXEXT): test_suite_pkcs5.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pkparse$(EXEXT): test_suite_pkparse.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pkwrite$(EXEXT): test_suite_pkwrite.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_pk$(EXEXT): test_suite_pk.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_poly1305$(EXEXT): test_suite_poly1305.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_rsa$(EXEXT): test_suite_rsa.c $(DEP) +$(BINARIES): %$(EXEXT): %.c $(DEP) echo " CC $<" $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test_suite_shax$(EXEXT): test_suite_shax.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -test_suite_ssl$(EXEXT): test_suite_ssl.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_timing$(EXEXT): test_suite_timing.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_x509parse$(EXEXT): test_suite_x509parse.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ +all: $(BINARIES) -test_suite_x509write$(EXEXT): test_suite_x509write.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_xtea$(EXEXT): test_suite_xtea.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_debug$(EXEXT): test_suite_debug.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_version$(EXEXT): test_suite_version.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ - -test_suite_aria$(EXEXT): test_suite_aria.c $(DEP) - echo " CC $<" - $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ clean: ifndef WINDOWS @@ -517,7 +205,7 @@ else del /Q /F *.c *.exe endif -check: $(APPS) +check: $(BINARIES) perl scripts/run-test-suites.pl test: check From 1f29be724106c80abbf386df887b9a07e8d67ce3 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Mon, 20 Mar 2017 22:21:22 +0000 Subject: [PATCH 0684/1100] Make target for on mbed testing New target gen-mbed-test generates mebdtls tests in mbed-os test format. i.e. a dir tree like TESTS//[/]. The TESTS dir can then be imported into mbed-os to compile tests with mbed-os. --- tests/Makefile | 169 ++++++++++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 73 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 975be94a23..a21a0b9a9b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -102,76 +102,75 @@ APPS = test_suite_aes.ecb test_suite_aes.cbc \ BINARIES := $(addsuffix $(EXEXT),$(APPS)) # Look up for associated function files -func.test_suite_aes.ecb.c := test_suite_aes -func.test_suite_aes.cbc.c := test_suite_aes -func.test_suite_aes.cfb.c := test_suite_aes -func.test_suite_aes.ofb.c := test_suite_aes -func.test_suite_aes.xts.c := test_suite_aes -func.test_suite_aes.rest.c := test_suite_aes -func.test_suite_arc4.c := test_suite_arc4 -func.test_suite_aria.c := test_suite_aria -func.test_suite_asn1write.c := test_suite_asn1write -func.test_suite_base64.c := test_suite_base64 -func.test_suite_blowfish.c := test_suite_blowfish -func.test_suite_camellia.c := test_suite_camellia -func.test_suite_ccm.c := test_suite_ccm -func.test_suite_chacha20.c := test_suite_chacha20 -func.test_suite_chachapoly.c := test_suite_chachapoly -func.test_suite_cmac.c := test_suite_cmac -func.test_suite_cipher.chachapoly.c := test_suite_cipher -func.test_suite_cipher.aes.c := test_suite_cipher -func.test_suite_cipher.arc4.c := test_suite_cipher -func.test_suite_cipher.ccm.c := test_suite_cipher -func.test_suite_cipher.chacha20.c := test_suite_cipher -func.test_suite_cipher.gcm.c := test_suite_cipher -func.test_suite_cipher.blowfish.c := test_suite_cipher -func.test_suite_cipher.camellia.c := test_suite_cipher -func.test_suite_cipher.des.c := test_suite_cipher -func.test_suite_cipher.null.c := test_suite_cipher -func.test_suite_cipher.padding.c := test_suite_cipher -func.test_suite_ctr_drbg.c := test_suite_ctr_drbg -func.test_suite_debug.c := test_suite_debug -func.test_suite_des.c := test_suite_des -func.test_suite_dhm.c := test_suite_dhm -func.test_suite_ecdh.c := test_suite_ecdh -func.test_suite_ecdsa.c := test_suite_ecdsa -func.test_suite_ecjpake.c := test_suite_ecjpake -func.test_suite_ecp.c := test_suite_ecp -func.test_suite_error.c := test_suite_error -func.test_suite_entropy.c := test_suite_entropy -func.test_suite_gcm.aes128_de.c := test_suite_gcm -func.test_suite_gcm.aes192_de.c := test_suite_gcm -func.test_suite_gcm.aes256_de.c := test_suite_gcm -func.test_suite_gcm.aes128_en.c := test_suite_gcm -func.test_suite_gcm.aes192_en.c := test_suite_gcm -func.test_suite_gcm.aes256_en.c := test_suite_gcm -func.test_suite_gcm.camellia.c := test_suite_gcm -func.test_suite_hkdf.c := test_suite_hkdf -func.test_suite_hmac_drbg.misc.c := test_suite_hmac_drbg -func.test_suite_hmac_drbg.no_reseed.c := test_suite_hmac_drbg -func.test_suite_hmac_drbg.nopr.c := test_suite_hmac_drbg -func.test_suite_hmac_drbg.pr.c := test_suite_hmac_drbg -func.test_suite_md.c := test_suite_md -func.test_suite_mdx.c := test_suite_mdx -func.test_suite_memory_buffer_alloc.c := test_suite_memory_buffer_alloc -func.test_suite_mpi.c := test_suite_mpi -func.test_suite_nist_kw.c := test_suite_nist_kw -func.test_suite_pem.c := test_suite_pem -func.test_suite_pkcs1_v15.c := test_suite_pkcs1_v15 -func.test_suite_pkcs1_v21.c := test_suite_pkcs1_v21 -func.test_suite_pkcs5.c := test_suite_pkcs5 -func.test_suite_pkparse.c := test_suite_pkparse -func.test_suite_pkwrite.c := test_suite_pkwrite -func.test_suite_pk.c := test_suite_pk -func.test_suite_poly1305.c := test_suite_poly1305 -func.test_suite_rsa.c := test_suite_rsa -func.test_suite_shax.c := test_suite_shax -func.test_suite_ssl.c := test_suite_ssl -func.test_suite_timing.c := test_suite_timing -func.test_suite_x509parse.c := test_suite_x509parse -func.test_suite_x509write.c := test_suite_x509write -func.test_suite_xtea.c := test_suite_xtea -func.test_suite_version.c := test_suite_version +func.test_suite_aes.ecb := test_suite_aes +func.test_suite_aes.cbc := test_suite_aes +func.test_suite_aes.cfb := test_suite_aes +func.test_suite_aes.ofb := test_suite_aes +func.test_suite_aes.xts := test_suite_aes +func.test_suite_aes.rest := test_suite_aes +func.test_suite_arc4 := test_suite_arc4 +func.test_suite_aria := test_suite_aria +func.test_suite_asn1write := test_suite_asn1write +func.test_suite_base64 := test_suite_base64 +func.test_suite_blowfish := test_suite_blowfish +func.test_suite_camellia := test_suite_camellia +func.test_suite_ccm := test_suite_ccm +func.test_suite_chacha20 := test_suite_chacha20 +func.test_suite_chachapoly := test_suite_chachapoly +func.test_suite_cmac := test_suite_cmac +func.test_suite_cipher.chachapoly := test_suite_cipher +func.test_suite_cipher.aes := test_suite_cipher +func.test_suite_cipher.arc4 := test_suite_cipher +func.test_suite_cipher.ccm := test_suite_cipher +func.test_suite_cipher.chacha20 := test_suite_cipher +func.test_suite_cipher.gcm := test_suite_cipher +func.test_suite_cipher.blowfish := test_suite_cipher +func.test_suite_cipher.camellia := test_suite_cipher +func.test_suite_cipher.des := test_suite_cipher +func.test_suite_cipher.null := test_suite_cipher +func.test_suite_cipher.padding := test_suite_cipher +func.test_suite_ctr_drbg := test_suite_ctr_drbg +func.test_suite_debug := test_suite_debug +func.test_suite_des := test_suite_des +func.test_suite_dhm := test_suite_dhm +func.test_suite_ecdh := test_suite_ecdh +func.test_suite_ecdsa := test_suite_ecdsa +func.test_suite_ecjpake := test_suite_ecjpake +func.test_suite_ecp := test_suite_ecp +func.test_suite_error := test_suite_error +func.test_suite_entropy := test_suite_entropy +func.test_suite_gcm.aes128_de := test_suite_gcm +func.test_suite_gcm.aes192_de := test_suite_gcm +func.test_suite_gcm.aes256_de := test_suite_gcm +func.test_suite_gcm.aes128_en := test_suite_gcm +func.test_suite_gcm.aes192_en := test_suite_gcm +func.test_suite_gcm.aes256_en := test_suite_gcm +func.test_suite_gcm.camellia := test_suite_gcm +func.test_suite_hkdf := test_suite_hkdf +func.test_suite_hmac_drbg.misc := test_suite_hmac_drbg +func.test_suite_hmac_drbg.no_reseed := test_suite_hmac_drbg +func.test_suite_hmac_drbg.nopr := test_suite_hmac_drbg +func.test_suite_hmac_drbg.pr := test_suite_hmac_drbg +func.test_suite_md := test_suite_md +func.test_suite_mdx := test_suite_mdx +func.test_suite_memory_buffer_alloc := test_suite_memory_buffer_alloc +func.test_suite_mpi := test_suite_mpi +func.test_suite_nist_kw := test_suite_nist_kw +func.test_suite_pem := test_suite_pem +func.test_suite_pkcs1_v15 := test_suite_pkcs1_v15 +func.test_suite_pkcs1_v21 := test_suite_pkcs1_v21 +func.test_suite_pkcs5 := test_suite_pkcs5 +func.test_suite_pkparse := test_suite_pkparse +func.test_suite_pkwrite := test_suite_pkwrite +func.test_suite_pk := test_suite_pk +func.test_suite_rsa := test_suite_rsa +func.test_suite_shax := test_suite_shax +func.test_suite_ssl := test_suite_ssl +func.test_suite_timing := test_suite_timing +func.test_suite_x509parse := test_suite_x509parse +func.test_suite_x509write := test_suite_x509write +func.test_suite_xtea := test_suite_xtea +func.test_suite_version := test_suite_version .SILENT: @@ -185,9 +184,9 @@ $(DEP): C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*.c).function suites/%.data scripts/generate_code.pl suites/helpers.function suites/main_test.function +$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.pl suites/helpers.function suites/main_test.function echo " Gen $@" - perl scripts/generate_code.pl suites $(func.$@) $* + perl scripts/generate_code.pl suites $(func.$*) $* $(BINARIES): %$(EXEXT): %.c $(DEP) @@ -200,12 +199,36 @@ all: $(BINARIES) clean: ifndef WINDOWS - rm -f $(APPS) *.c + rm -rf $(APPS) *.c TESTS else del /Q /F *.c *.exe + rmdir /Q /S TESTS endif check: $(BINARIES) perl scripts/run-test-suites.pl test: check + +# Create separate targets for generating mbed-os tests. +MBED_APPS := $(addprefix mbed_,$(APPS)) + +# FIXME: description needs change +# Each test suite name is stripped off of prefix test_suite_. mbed-os test dir +# structure requires format TESTS/[/]/ +# Test app names are split on "." and end part is used as the test dir name. +# Prevous parts are used as the test group dirs. For tests without "." same +# name is used as the test group dir. + +.SECONDEXPANSION: +$(MBED_APPS): mbed_%: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/main_test.function + echo " Gen ./TESTS/mbedtls/$*/main.c" + python scripts/gen_mbed_code.py -f suites/$(func.$*).function \ + -d suites/$*.data \ + -t suites/mbed_test.function \ + -s suites \ + --help-file suites/helpers.function \ + -o ./TESTS + +gen-mbed-test: $(MBED_APPS) + From fff4904e6bfd5f1eb245fc34ddce88f16c70b1ef Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 28 Mar 2017 01:48:31 +0100 Subject: [PATCH 0685/1100] mbed-os test code generator --- tests/Makefile | 24 +- tests/scripts/gen_mbed_code.py | 623 +++++++++++++++++ tests/suites/desktop_test.function | 644 ++++++++++++++++++ tests/suites/embedded_test.function | 364 ++++++++++ tests/suites/mbed_test.function | 173 +++++ .../suites/test_suite_cipher.chachapoly.data | 2 +- 6 files changed, 1821 insertions(+), 9 deletions(-) create mode 100644 tests/scripts/gen_mbed_code.py create mode 100644 tests/suites/desktop_test.function create mode 100644 tests/suites/embedded_test.function create mode 100644 tests/suites/mbed_test.function diff --git a/tests/Makefile b/tests/Makefile index a21a0b9a9b..f0da1cf241 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -2,7 +2,7 @@ # To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS # To compile with PKCS11: add "-lpkcs11-helper" to LDFLAGS -CFLAGS ?= -O2 +CFLAGS ?= -g3 #-O2 WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement -Wno-unused-function -Wno-unused-value LDFLAGS ?= @@ -184,9 +184,16 @@ $(DEP): C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.pl suites/helpers.function suites/main_test.function +$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/mbed_test.function suites/desktop_test.function echo " Gen $@" - perl scripts/generate_code.pl suites $(func.$*) $* +# perl scripts/generate_code.pl suites $(func.$*) $* + python scripts/gen_mbed_code.py -f suites/$(func.$*).function \ + -d suites/$*.data \ + -t suites/mbed_test.function \ + -p suites/desktop_test.function \ + -s suites \ + --help-file suites/helpers.function \ + -o . $(BINARIES): %$(EXEXT): %.c $(DEP) @@ -199,9 +206,9 @@ all: $(BINARIES) clean: ifndef WINDOWS - rm -rf $(APPS) *.c TESTS + rm -rf $(APPS) *.c *.data TESTS else - del /Q /F *.c *.exe + del /Q /F *.c *.exe *.data rmdir /Q /S TESTS endif @@ -221,14 +228,15 @@ MBED_APPS := $(addprefix mbed_,$(APPS)) # name is used as the test group dir. .SECONDEXPANSION: -$(MBED_APPS): mbed_%: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/main_test.function - echo " Gen ./TESTS/mbedtls/$*/main.c" +$(MBED_APPS): mbed_%: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/mbed_test.function suites/embedded_test.function + echo " Gen ./TESTS/mbedtls/$*/$*.c" python scripts/gen_mbed_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/mbed_test.function \ + -p suites/embedded_test.function \ -s suites \ --help-file suites/helpers.function \ - -o ./TESTS + -o ./TESTS/mbedtls/$* gen-mbed-test: $(MBED_APPS) diff --git a/tests/scripts/gen_mbed_code.py b/tests/scripts/gen_mbed_code.py new file mode 100644 index 0000000000..9fd9a00454 --- /dev/null +++ b/tests/scripts/gen_mbed_code.py @@ -0,0 +1,623 @@ +""" +mbed SDK +Copyright (c) 2017-2018 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import os +import re +import argparse +import shutil + + +""" +Generates code in following structure. + +/ +|-- host_tests/ +| |-- mbedtls_test.py +| |-- suites/ +| | |-- *.data files +| |-- mbedtls/ +| | |-- / +| | | |-- main.c +| | ... +| | |-- / +| | | |-- main.c +| | | +""" + + +BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/' +END_HEADER_REGEX = '/\*\s*END_HEADER\s*\*/' + +BEGIN_DEP_REGEX = 'BEGIN_DEPENDENCIES' +END_DEP_REGEX = 'END_DEPENDENCIES' + +BEGIN_CASE_REGEX = '/\*\s*BEGIN_CASE\s*(.*?)\s*\*/' +END_CASE_REGEX = '/\*\s*END_CASE\s*\*/' + + +class InvalidFileFormat(Exception): + """ + Exception to indicate invalid file format. + """ + pass + + +def gen_deps(deps): + """ + Generates dependency i.e. if def and endif code + + :param deps: + :return: + """ + dep_start = '' + dep_end = '' + for dep in deps: + if dep[0] == '!': + noT = '!' + dep = dep[1:] + else: + noT = '' + dep_start += '#if %sdefined(%s)\n' % (noT, dep) + dep_end = '#endif /* %s%s */\n' % (noT, dep) + dep_end + return dep_start, dep_end + + +def gen_deps_one_line(deps): + """ + Generates dependency checks in one line. Useful for writing code in #else case. + + :param deps: + :return: + """ + defines = [] + for dep in deps: + if dep[0] == '!': + noT = '!' + dep = dep[1:] + else: + noT = '' + defines.append('%sdefined(%s)' % (noT, dep)) + return '#if ' + ' && '.join(defines) + + +def gen_function_wrapper(name, args_dispatch): + """ + Creates test function code + + :param name: + :param args_dispatch: + :return: + """ + # Then create the wrapper + wrapper = ''' +void {name}_wrapper( void ** params ) +{{ + {unused_params} + {name}( {args} ); +}} +'''.format(name=name, unused_params='(void)params;' if len(args_dispatch) == 0 else '', args=', '.join(args_dispatch)) + return wrapper + + +def gen_dispatch(name, deps): + """ + Generates dispatch condition for the functions. + + :param name: + :param deps: + :return: + """ + if len(deps): + ifdef = gen_deps_one_line(deps) + dispatch_code = ''' +{ifdef} + {name}_wrapper, +#else + NULL, +#endif +'''.format(ifdef=ifdef, name=name) + else: + dispatch_code = ''' + {name}_wrapper, +'''.format(name=name) + + return dispatch_code + + +def parse_suite_headers(line_no, funcs_f): + """ + Parses function headers. + + :param line_no: + :param funcs_f: + :return: + """ + headers = '#line %d "%s"\n' % (line_no + 1, funcs_f.name) + for line in funcs_f: + line_no += 1 + if re.search(END_HEADER_REGEX, line): + break + headers += line + else: + raise InvalidFileFormat("file: %s - end header pattern [%s] not found!" % (funcs_f.name, END_HEADER_REGEX)) + + return line_no, headers + + +def parse_suite_deps(line_no, funcs_f): + """ + Parses function dependencies. + + :param line_no: + :param funcs_f: + :return: + """ + deps = [] + for line in funcs_f: + line_no += 1 + m = re.search('depends_on\:(.*)', line.strip()) + if m: + deps += [x.strip() for x in m.group(1).split(':')] + if re.search(END_DEP_REGEX, line): + break + else: + raise InvalidFileFormat("file: %s - end dependency pattern [%s] not found!" % (funcs_f.name, END_DEP_REGEX)) + + return line_no, deps + + +def parse_function_deps(line): + """ + + :param line: + :return: + """ + deps = [] + m = re.search(BEGIN_CASE_REGEX, line) + dep_str = m.group(1) + if len(dep_str): + m = re.search('depends_on:(.*)', dep_str) + if m: + deps = m.group(1).strip().split(':') + return deps + + +def parse_function_signature(line): + """ + Parsing function signature + + :param line: + :return: + """ + args = [] + args_dispatch = [] + m = re.search('\s*void\s+(\w+)\s*\(', line, re.I) + if not m: + raise ValueError("Test function should return 'void'\n%s" % line) + name = m.group(1) + line = line[len(m.group(0)):] + arg_idx = 0 + for arg in line[:line.find(')')].split(','): + arg = arg.strip() + if arg == '': + continue + if re.search('int\s+.*', arg.strip()): + args.append('int') + args_dispatch.append('*( (int *) params[%d] )' % arg_idx) + elif re.search('char\s*\*\s*.*', arg.strip()): + args.append('char*') + args_dispatch.append('(char *) params[%d]' % arg_idx) + else: + raise ValueError("Test function arguments can only be 'int' or 'char *'\n%s" % line) + arg_idx += 1 + + return name, args, args_dispatch + + +def parse_function_code(line_no, funcs_f, deps, suite_deps): + """ + + :param line_no: + :param funcs_f: + :param deps: + :param suite_deps: + :return: + """ + code = '#line %d "%s"\n' % (line_no + 1, funcs_f.name) + for line in funcs_f: + line_no += 1 + # Check function signature + m = re.match('.*?\s+(\w+)\s*\(', line, re.I) + if m: + # check if we have full signature i.e. split in more lines + if not re.match('.*\)', line): + for lin in funcs_f: + line += lin + line_no += 1 + if re.search('.*?\)', line): + break + name, args, args_dispatch = parse_function_signature(line) + code += line.replace(name, 'test_' + name) + name = 'test_' + name + break + else: + raise InvalidFileFormat("file: %s - Test functions not found!" % funcs_f.name) + + for line in funcs_f: + line_no += 1 + if re.search(END_CASE_REGEX, line): + break + code += line + else: + raise InvalidFileFormat("file: %s - end case pattern [%s] not found!" % (funcs_f.name, END_CASE_REGEX)) + + # Add exit label if not present + if code.find('exit:') == -1: + s = code.rsplit('}', 1) + if len(s) == 2: + code = """ +exit: + ;; +} +""".join(s) + + code += gen_function_wrapper(name, args_dispatch) + ifdef, endif = gen_deps(deps) + dispatch_code = gen_dispatch(name, suite_deps + deps) + return line_no, name, args, ifdef + code + endif, dispatch_code + + +def parse_functions(funcs_f): + """ + Returns functions code pieces + + :param funcs_f: + :return: + """ + line_no = 0 + suite_headers = '' + suite_deps = [] + suite_functions = '' + func_info = {} + function_idx = 0 + dispatch_code = '' + for line in funcs_f: + line_no += 1 + if re.search(BEGIN_HEADER_REGEX, line): + line_no, headers = parse_suite_headers(line_no, funcs_f) + suite_headers += headers + elif re.search(BEGIN_DEP_REGEX, line): + line_no, deps = parse_suite_deps(line_no, funcs_f) + suite_deps += deps + elif re.search(BEGIN_CASE_REGEX, line): + deps = parse_function_deps(line) + line_no, func_name, args, func_code, func_dispatch = parse_function_code(line_no, funcs_f, deps, suite_deps) + suite_functions += func_code + # Generate dispatch code and enumeration info + assert func_name not in func_info, "file: %s - function %s re-declared at line %d" % \ + (funcs_f.name, func_name, line_no) + func_info[func_name] = (function_idx, args) + dispatch_code += '/* Function Id: %d */\n' % function_idx + dispatch_code += func_dispatch + function_idx += 1 + + ifdef, endif = gen_deps(suite_deps) + func_code = ifdef + suite_functions + endif + return dispatch_code, suite_headers, func_code, func_info + + +def escaped_split(str, ch): + """ + Split str on character ch but ignore escaped \{ch} + + :param str: + :param ch: + :return: + """ + if len(ch) > 1: + raise ValueError('Expected split character. Found string!') + out = [] + part = '' + escape = False + for i in range(len(str)): + if not escape and str[i] == ch: + out.append(part) + part = '' + else: + part += str[i] + escape = not escape and str[i] == '\\' + if len(part): + out.append(part) + return out + + +def parse_test_data(data_f): + """ + Parses .data file + + :param data_f: + :return: + """ + STATE_READ_NAME = 0 + STATE_READ_ARGS = 1 + state = STATE_READ_NAME + deps = [] + + for line in data_f: + line = line.strip() + if len(line) and line[0] == '#': # Skip comments + continue + + # skip blank lines + if len(line) == 0: + continue + + if state == STATE_READ_NAME: + # Read test name + name = line + state = STATE_READ_ARGS + elif state == STATE_READ_ARGS: + # Check dependencies + m = re.search('depends_on\:(.*)', line) + if m: + deps = m.group(1).split(':') + else: + # Read test vectors + parts = escaped_split(line, ':') + function = parts[0] + args = parts[1:] + yield name, function, deps, args + deps = [] + state = STATE_READ_NAME + + +def gen_dep_check(dep_id, dep): + """ + Generate code for the dependency. + + :param dep_id: + :param dep: + :return: + """ + if dep[0] == '!': + noT = '!' + dep = dep[1:] + else: + noT = '' + dep_check = ''' +if ( dep_id == {id} ) +{{ +#if {noT}defined({macro}) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +}} +else +'''.format(noT=noT, macro=dep, id=dep_id) + + return dep_check + + +def gen_expression_check(exp_id, exp): + """ + Generates code for expression check + + :param exp_id: + :param exp: + :return: + """ + exp_code = ''' +if ( exp_id == {exp_id} ) +{{ + *out_value = {expression}; +}} +else +'''.format(exp_id=exp_id, expression=exp) + return exp_code + + +def gen_from_test_data(data_f, out_data_f, func_info): + """ + Generates dependency checks, expression code and intermediate data file from test data file. + + :param data_f: + :param out_data_f: + :param func_info: + :return: + """ + unique_deps = [] + unique_expressions = [] + dep_check_code = '' + expression_code = '' + for test_name, function_name, test_deps, test_args in parse_test_data(data_f): + out_data_f.write(test_name + '\n') + + func_id, func_args = func_info['test_' + function_name] + if len(test_deps): + out_data_f.write('depends_on') + for dep in test_deps: + if dep not in unique_deps: + unique_deps.append(dep) + dep_id = unique_deps.index(dep) + dep_check_code += gen_dep_check(dep_id, dep) + else: + dep_id = unique_deps.index(dep) + out_data_f.write(':' + str(dep_id)) + out_data_f.write('\n') + + assert len(test_args) == len(func_args), \ + "Invalid number of arguments in test %s. See function %s signature." % (test_name, function_name) + out_data_f.write(str(func_id)) + for i in xrange(len(test_args)): + typ = func_args[i] + val = test_args[i] + + # check if val is a non literal int val + if typ == 'int' and not re.match('\d+', val): # its an expression # FIXME: Handle hex format. Tip: instead try converting int(str, 10) and int(str, 16) + typ = 'exp' + if val not in unique_expressions: + unique_expressions.append(val) + # exp_id can be derived from len(). But for readability and consistency with case of existing let's + # use index(). + exp_id = unique_expressions.index(val) + expression_code += gen_expression_check(exp_id, val) + val = exp_id + else: + val = unique_expressions.index(val) + out_data_f.write(':' + typ + ':' + str(val)) + out_data_f.write('\n\n') + + # void unused params + if len(dep_check_code) == 0: + dep_check_code = '(void) dep_id;\n' + if len(expression_code) == 0: + expression_code = '(void) exp_id;\n' + expression_code += '(void) out_value;\n' + + return dep_check_code, expression_code + + +def gen_mbed_code(funcs_file, data_file, template_file, platform_file, help_file, suites_dir, c_file, out_data_file): + """ + Generate mbed-os test code. + + :param funcs_file: + :param dat a_file: + :param template_file: + :param platform_file: + :param help_file: + :param suites_dir: + :param c_file: + :param out_data_file: + :return: + """ + for name, path in [('Functions file', funcs_file), + ('Data file', data_file), + ('Template file', template_file), + ('Platform file', platform_file), + ('Help code file', help_file), + ('Suites dir', suites_dir)]: + if not os.path.exists(path): + raise IOError("ERROR: %s [%s] not found!" % (name, path)) + + snippets = {'generator_script' : os.path.basename(__file__)} + + # Read helpers + with open(help_file, 'r') as help_f, open(platform_file, 'r') as platform_f: + snippets['test_common_helper_file'] = help_file + snippets['test_common_helpers'] = help_f.read() + snippets['test_platform_file'] = platform_file + snippets['platform_code'] = platform_f.read().replace('DATA_FILE', + out_data_file.replace('\\', '\\\\')) # escape '\' + + # Function code + with open(funcs_file, 'r') as funcs_f, open(data_file, 'r') as data_f, open(out_data_file, 'w') as out_data_f: + dispatch_code, func_headers, func_code, func_info = parse_functions(funcs_f) + snippets['function_headers'] = func_headers + snippets['functions_code'] = func_code + snippets['dispatch_code'] = dispatch_code + dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info) + snippets['dep_check_code'] = dep_check_code + snippets['expression_code'] = expression_code + + snippets['test_file'] = c_file + snippets['test_main_file'] = template_file + snippets['test_case_file'] = funcs_file + snippets['test_case_data_file'] = data_file + # Read Template + # Add functions + # + with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f: + line_no = 1 + for line in template_f.readlines(): + snippets['line_no'] = line_no + 1 # Increment as it sets next line number + code = line.format(**snippets) + c_f.write(code) + line_no += 1 + + +def check_cmd(): + """ + Command line parser. + + :return: + """ + parser = argparse.ArgumentParser(description='Generate code for mbed-os tests.') + + parser.add_argument("-f", "--functions-file", + dest="funcs_file", + help="Functions file", + metavar="FUNCTIONS", + required=True) + + parser.add_argument("-d", "--data-file", + dest="data_file", + help="Data file", + metavar="DATA", + required=True) + + parser.add_argument("-t", "--template-file", + dest="template_file", + help="Template file", + metavar="TEMPLATE", + required=True) + + parser.add_argument("-s", "--suites-dir", + dest="suites_dir", + help="Suites dir", + metavar="SUITES", + required=True) + + parser.add_argument("--help-file", + dest="help_file", + help="Help file", + metavar="HELPER", + required=True) + + parser.add_argument("-p", "--platform-file", + dest="platform_file", + help="Platform code file", + metavar="PLATFORM_FILE", + required=True) + + parser.add_argument("-o", "--out-dir", + dest="out_dir", + help="Dir where generated code and scripts are copied", + metavar="OUT_DIR", + required=True) + + args = parser.parse_args() + + data_file_name = os.path.basename(args.data_file) + data_name = os.path.splitext(data_file_name)[0] + + out_c_file = os.path.join(args.out_dir, data_name + '.c') + out_data_file = os.path.join(args.out_dir, data_file_name) + + out_c_file_dir = os.path.dirname(out_c_file) + out_data_file_dir = os.path.dirname(out_data_file) + for d in [out_c_file_dir, out_data_file_dir]: + if not os.path.exists(d): + os.makedirs(d) + + gen_mbed_code(args.funcs_file, args.data_file, args.template_file, args.platform_file, + args.help_file, args.suites_dir, out_c_file, out_data_file) + + +if __name__ == "__main__": + check_cmd() diff --git a/tests/suites/desktop_test.function b/tests/suites/desktop_test.function new file mode 100644 index 0000000000..6e7fd075c7 --- /dev/null +++ b/tests/suites/desktop_test.function @@ -0,0 +1,644 @@ +#line 2 "suites/desktop_test.function" + +/** + * \brief Varifies that string is in string parameter format i.e. "" + * It also strips enclosing '"' from the input string. + * + * \param str String parameter. + * + * \return 0 if success else 1 + */ +int verify_string( char **str ) +{ + if( (*str)[0] != '"' || + (*str)[strlen( *str ) - 1] != '"' ) + { + mbedtls_fprintf( stderr, + "Expected string (with \"\") for parameter and got: %s\n", *str ); + return( -1 ); + } + + (*str)++; + (*str)[strlen( *str ) - 1] = '\0'; + + return( 0 ); +} + +/** + * \brief Varifies that string is an integer. Also gives the converted + * integer value. + * + * \param str Input string. + * \param value Pointer to int for output value. + * + * \return 0 if success else 1 + */ +int verify_int( char *str, int *value ) +{ + size_t i; + int minus = 0; + int digits = 1; + int hex = 0; + + for( i = 0; i < strlen( str ); i++ ) + { + if( i == 0 && str[i] == '-' ) + { + minus = 1; + continue; + } + + if( ( ( minus && i == 2 ) || ( !minus && i == 1 ) ) && + str[i - 1] == '0' && str[i] == 'x' ) + { + hex = 1; + continue; + } + + if( ! ( ( str[i] >= '0' && str[i] <= '9' ) || + ( hex && ( ( str[i] >= 'a' && str[i] <= 'f' ) || + ( str[i] >= 'A' && str[i] <= 'F' ) ) ) ) ) + { + digits = 0; + break; + } + } + + if( digits ) + { + if( hex ) + *value = strtol( str, NULL, 16 ); + else + *value = strtol( str, NULL, 10 ); + + return( 0 ); + } + + mbedtls_fprintf( stderr, + "Expected integer for parameter and got: %s\n", str ); + return( KEY_VALUE_MAPPING_NOT_FOUND ); +} + + +/** + * \brief Usage string. + * + */ +#define USAGE \ + "Usage: %s [OPTIONS] files...\n\n" \ + " Command line arguments:\n" \ + " files... One or more test data file. If no file is specified\n" \ + " the followimg default test case is used:\n" \ + " %s\n\n" \ + " Options:\n" \ + " -v | --verbose Display full information about each test\n" \ + " -h | --help Display this information\n\n", \ + argv[0], \ + "TESTCASE_FILENAME" + + +/** + * \brief Read a line from the passed file pointer. + * + * \param f FILE pointer + * \param buf Pointer to memory to hold read line. + * \param len Length of the buf. + * + * \return 0 if success else -1 + */ +int get_line( FILE *f, char *buf, size_t len ) +{ + char *ret; + int i = 0, str_len = 0, has_string = 0; + + /* Read until we get a valid line */ + do + { + ret = fgets( buf, len, f ); + if( ret == NULL ) + return( -1 ); + + str_len = strlen( buf ); + + /* Skip empty line and comment */ + if ( str_len == 0 || buf[0] == '#' ) + continue; + has_string = 0; + for ( i = 0; i < str_len; i++ ) + { + char c = buf[i]; + if ( c != ' ' && c != '\t' && c != '\n' && + c != '\v' && c != '\f' && c != '\r' ) + { + has_string = 1; + break; + } + } + } while( !has_string ); + + /* Strip new line and carriage return */ + ret = buf + strlen( buf ); + if( ret-- > buf && *ret == '\n' ) + *ret = '\0'; + if( ret-- > buf && *ret == '\r' ) + *ret = '\0'; + + return( 0 ); +} + +/** + * \brief Splits string delimited by ':'. Ignores '\:'. + * + * \param buf Input string + * \param len Input string length + * \param params Out params found + * \param params_len Out params array len + * + * \return Count of strings found. + */ +static int parse_arguments( char *buf, size_t len, char **params, + size_t params_len ) +{ + size_t cnt = 0, i; + char *cur = buf; + char *p = buf, *q; + + params[cnt++] = cur; + + while( *p != '\0' && p < buf + len ) + { + if( *p == '\\' ) + { + p++; + p++; + continue; + } + if( *p == ':' ) + { + if( p + 1 < buf + len ) + { + cur = p + 1; + assert( cnt < params_len ); + params[cnt++] = cur; + } + *p = '\0'; + } + + p++; + } + + /* Replace newlines, question marks and colons in strings */ + for( i = 0; i < cnt; i++ ) + { + p = params[i]; + q = params[i]; + + while( *p != '\0' ) + { + if( *p == '\\' && *(p + 1) == 'n' ) + { + p += 2; + *(q++) = '\n'; + } + else if( *p == '\\' && *(p + 1) == ':' ) + { + p += 2; + *(q++) = ':'; + } + else if( *p == '\\' && *(p + 1) == '?' ) + { + p += 2; + *(q++) = '?'; + } + else + *(q++) = *(p++); + } + *q = '\0'; + } + + return( cnt ); +} + +/** + * \brief Converts parameters into test function consumable parameters. + * Example: Input: {"int", "0", "char*", "Hello", + * "hex", "abef", "exp", "1"} + * Output: { + * 0, // Verified int + * "Hello", // Verified string + * 2, { 0xab, 0xef },// Converted len,hex pair + * 9600 // Evaluated expression + * } + * + * + * \param cnt Input string. + * \param params Out array of found strings. + * \param int_params_store Memory for storing processed integer parameters. + * + * \return 0 for success else 1 + */ +static int convert_params( size_t cnt , char ** params , int * int_params_store ) +{ + char ** cur = params; + char ** out = params; + int ret = ( DISPATCH_TEST_SUCCESS ); + + while ( cur - params < (int) cnt ) + { + char * type = *cur++; + char * val = *cur++; + + if ( strcmp( type, "char*" ) == 0 ) + { + if ( verify_string( &val ) == 0 ) + { + *out++ = val; + } + else + { + ret = ( DISPATCH_INVALID_TEST_DATA ); + break; + } + } + else if ( strcmp( type, "int" ) == 0 ) + { + if ( verify_int ( val, int_params_store ) == 0 ) + { + *out++ = (char *) int_params_store++; + } + else + { + ret = ( DISPATCH_INVALID_TEST_DATA ); + break; + } + } + else if ( strcmp( type, "hex" ) == 0 ) + { + *int_params_store = unhexify( (unsigned char *) val, val ); + *out++ = (char *)int_params_store++; + *out++ = val; + } + else if ( strcmp( type, "exp" ) == 0 ) + { + int exp_id = strtol( val, NULL, 10 ); + if ( get_expression ( exp_id, int_params_store ) == 0 ) + { + *out++ = (char *)int_params_store++; + } + else + { + ret = ( DISPATCH_INVALID_TEST_DATA ); + break; + } + } + else + { + ret = ( DISPATCH_INVALID_TEST_DATA ); + break; + } + } + return( ret ); +} + +/** + * \brief Tests snprintf implementation with test input. + * + * \param n Buffer test length. + * \param ref_buf Expected buffer. + * \param ref_ret Expected snprintf return value. + * + * \return 0 for success else 1 + */ +static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) +{ + int ret; + char buf[10] = "xxxxxxxxx"; + const char ref[10] = "xxxxxxxxx"; + + ret = mbedtls_snprintf( buf, n, "%s", "123" ); + if( ret < 0 || (size_t) ret >= n ) + ret = -1; + + if( strncmp( ref_buf, buf, sizeof( buf ) ) != 0 || + ref_ret != ret || + memcmp( buf + n, ref + n, sizeof( buf ) - n ) != 0 ) + { + return( 1 ); + } + + return( 0 ); +} + +/** + * \brief Tests snprintf implementation. + * + * \param none + * + * \return 0 for success else 1 + */ +static int run_test_snprintf( void ) +{ + return( test_snprintf( 0, "xxxxxxxxx", -1 ) != 0 || + test_snprintf( 1, "", -1 ) != 0 || + test_snprintf( 2, "1", -1 ) != 0 || + test_snprintf( 3, "12", -1 ) != 0 || + test_snprintf( 4, "123", 3 ) != 0 || + test_snprintf( 5, "123", 3 ) != 0 ); +} + + +/** + * \brief Desktop implementation of execute_tests(). + * Parses command line and executes tests from + * supplied or default data file. + * + * \param argc Command line argument count. + * \param argv Argument array. + * + * \return Program exit status. + */ +int execute_tests( int argc , const char ** argv ) +{ + /* Local Configurations and options */ + const char *default_filename = "DATA_FILE"; + const char *test_filename = NULL; + const char **test_files = NULL; + int testfile_count = 0; + int option_verbose = 0; + + /* Other Local variables */ + int arg_index = 1; + const char *next_arg; + int testfile_index, ret, i, cnt; + int total_errors = 0, total_tests = 0, total_skipped = 0; + FILE *file; + char buf[5000]; + char *params[50]; + int int_params[50]; // Store for proccessed integer params. + void *pointer; +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + int stdout_fd = -1; +#endif /* __unix__ || __APPLE__ __MACH__ */ + +#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ + !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) + unsigned char alloc_buf[1000000]; + mbedtls_memory_buffer_alloc_init( alloc_buf, sizeof( alloc_buf ) ); +#endif + + /* + * The C standard doesn't guarantee that all-bits-0 is the representation + * of a NULL pointer. We do however use that in our code for initializing + * structures, which should work on every modern platform. Let's be sure. + */ + memset( &pointer, 0, sizeof( void * ) ); + if( pointer != NULL ) + { + mbedtls_fprintf( stderr, "all-bits-zero is not a NULL pointer\n" ); + return( 1 ); + } + + /* + * Make sure we have a snprintf that correctly zero-terminates + */ + if( run_test_snprintf() != 0 ) + { + mbedtls_fprintf( stderr, "the snprintf implementation is broken\n" ); + return( 0 ); + } + + while( arg_index < argc ) + { + next_arg = argv[ arg_index ]; + + if( strcmp(next_arg, "--verbose" ) == 0 || + strcmp(next_arg, "-v" ) == 0 ) + { + option_verbose = 1; + } + else if( strcmp(next_arg, "--help" ) == 0 || + strcmp(next_arg, "-h" ) == 0 ) + { + mbedtls_fprintf( stdout, USAGE ); + mbedtls_exit( EXIT_SUCCESS ); + } + else + { + /* Not an option, therefore treat all further arguments as the file + * list. + */ + test_files = &argv[ arg_index ]; + testfile_count = argc - arg_index; + } + + arg_index++; + } + + /* If no files were specified, assume a default */ + if ( test_files == NULL || testfile_count == 0 ) + { + test_files = &default_filename; + testfile_count = 1; + } + + /* Initialize the struct that holds information about the last test */ + memset( &test_info, 0, sizeof( test_info ) ); + + /* Now begin to execute the tests in the testfiles */ + for ( testfile_index = 0; + testfile_index < testfile_count; + testfile_index++ ) + { + int unmet_dep_count = 0; + char *unmet_dependencies[20]; + + test_filename = test_files[ testfile_index ]; + + file = fopen( test_filename, "r" ); + if( file == NULL ) + { + mbedtls_fprintf( stderr, "Failed to open test file: %s\n", + test_filename ); + return( 1 ); + } + + while( !feof( file ) ) + { + if( unmet_dep_count > 0 ) + { + mbedtls_fprintf( stderr, + "FATAL: Dep count larger than zero at start of loop\n" ); + mbedtls_exit( MBEDTLS_EXIT_FAILURE ); + } + unmet_dep_count = 0; + + if( ( ret = get_line( file, buf, sizeof(buf) ) ) != 0 ) + break; + mbedtls_fprintf( stdout, "%s%.66s", test_info.failed ? "\n" : "", buf ); + mbedtls_fprintf( stdout, " " ); + for( i = strlen( buf ) + 1; i < 67; i++ ) + mbedtls_fprintf( stdout, "." ); + mbedtls_fprintf( stdout, " " ); + fflush( stdout ); + + total_tests++; + + if( ( ret = get_line( file, buf, sizeof( buf ) ) ) != 0 ) + break; + cnt = parse_arguments( buf, strlen( buf ), params, + sizeof( params ) / sizeof( params[0] ) ); + + if( strcmp( params[0], "depends_on" ) == 0 ) + { + for( i = 1; i < cnt; i++ ) + { + int dep_id = strtol( params[i], NULL, 10 ); + if( dep_check( dep_id ) != DEPENDENCY_SUPPORTED ) + { + if( 0 == option_verbose ) + { + /* Only one count is needed if not verbose */ + unmet_dep_count++; + break; + } + + unmet_dependencies[ unmet_dep_count ] = strdup( params[i] ); + if( unmet_dependencies[ unmet_dep_count ] == NULL ) + { + mbedtls_fprintf( stderr, "FATAL: Out of memory\n" ); + mbedtls_exit( MBEDTLS_EXIT_FAILURE ); + } + unmet_dep_count++; + } + } + + if( ( ret = get_line( file, buf, sizeof( buf ) ) ) != 0 ) + break; + cnt = parse_arguments( buf, strlen( buf ), params, + sizeof( params ) / sizeof( params[0] ) ); + } + + // If there are no unmet dependencies execute the test + if( unmet_dep_count == 0 ) + { + test_info.failed = 0; + +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + /* Suppress all output from the library unless we're verbose + * mode + */ + if( !option_verbose ) + { + stdout_fd = redirect_output( &stdout, "/dev/null" ); + if( stdout_fd == -1 ) + { + /* Redirection has failed with no stdout so exit */ + exit( 1 ); + } + } +#endif /* __unix__ || __APPLE__ __MACH__ */ + + ret = convert_params( cnt - 1, params + 1, int_params ); + if ( DISPATCH_TEST_SUCCESS == ret ) + { + int function_id = strtol( params[0], NULL, 10 ); + ret = dispatch_test( function_id, (void **)( params + 1 ) ); + } + +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + if( !option_verbose && restore_output( &stdout, stdout_fd ) ) + { + /* Redirection has failed with no stdout so exit */ + exit( 1 ); + } +#endif /* __unix__ || __APPLE__ __MACH__ */ + + } + + if( unmet_dep_count > 0 || ret == DISPATCH_UNSUPPORTED_SUITE ) + { + total_skipped++; + mbedtls_fprintf( stdout, "----" ); + + if( 1 == option_verbose && ret == DISPATCH_UNSUPPORTED_SUITE ) + { + mbedtls_fprintf( stdout, "\n Test Suite not enabled" ); + } + + if( 1 == option_verbose && unmet_dep_count > 0 ) + { + mbedtls_fprintf( stdout, "\n Unmet dependencies: " ); + for( i = 0; i < unmet_dep_count; i++ ) + { + mbedtls_fprintf( stdout, "%s ", + unmet_dependencies[i] ); + free( unmet_dependencies[i] ); + } + } + mbedtls_fprintf( stdout, "\n" ); + fflush( stdout ); + + unmet_dep_count = 0; + } + else if( ret == DISPATCH_TEST_SUCCESS ) + { + if( test_info.failed == 0 ) + { + mbedtls_fprintf( stdout, "PASS\n" ); + } + else + { + total_errors++; + mbedtls_fprintf( stdout, "FAILED\n" ); + mbedtls_fprintf( stdout, " %s\n at line %d, %s\n", + test_info.test, test_info.line_no, + test_info.filename ); + } + fflush( stdout ); + } + else if( ret == DISPATCH_INVALID_TEST_DATA ) + { + mbedtls_fprintf( stderr, "FAILED: FATAL PARSE ERROR\n" ); + fclose( file ); + mbedtls_exit( 2 ); + } + else if( ret == DISPATCH_TEST_FN_NOT_FOUND ) + { + mbedtls_fprintf( stderr, "FAILED: FATAL TEST FUNCTION NOT FUND\n" ); + fclose( file ); + mbedtls_exit( 2 ); + } + else + total_errors++; + } + fclose( file ); + + /* In case we encounter early end of file */ + for( i = 0; i < unmet_dep_count; i++ ) + free( unmet_dependencies[i] ); + } + + mbedtls_fprintf( stdout, "\n----------------------------------------------------------------------------\n\n"); + if( total_errors == 0 ) + mbedtls_fprintf( stdout, "PASSED" ); + else + mbedtls_fprintf( stdout, "FAILED" ); + + mbedtls_fprintf( stdout, " (%d / %d tests (%d skipped))\n", + total_tests - total_errors, total_tests, total_skipped ); + +#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ + !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if defined(MBEDTLS_MEMORY_DEBUG) + mbedtls_memory_buffer_alloc_status(); +#endif + mbedtls_memory_buffer_alloc_free(); +#endif + +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + if( stdout_fd != -1 ) + close_output( stdout ); +#endif /* __unix__ || __APPLE__ __MACH__ */ + + return( total_errors != 0 ); +} diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function new file mode 100644 index 0000000000..21a5caba70 --- /dev/null +++ b/tests/suites/embedded_test.function @@ -0,0 +1,364 @@ +#line 2 "embedded_test.function" + +#include "greentea-client/test_env_c.h" + +/** + * \brief Increments pointer and asserts that it does not overflow. + * + * \param p Pointer to byte array + * \param start Pointer to start of byte array + * \param len Length of byte array + * \param step Increment size + * + */ +#define INCR_ASSERT(p, start, len, step) do \ +{ \ + assert( p >= start ); \ + assert( sizeof( *p ) == sizeof( *start ) ); \ + /* <= is checked to support use inside a loop where \ + pointer is incremented after reading data. */ \ + assert( (uint32_t)( (p - start) + step ) <= len ); \ + p += step; \ +} \ +while( 0 ) + + +/** + * \brief 4 byte align unsigned char pointer + * + * \param p Pointer to byte array + * \param start Pointer to start of byte array + * \param len Length of byte array + * + */ +#define ALIGN_32BIT(p, start, len) do \ +{ \ + uint32_t align = ( - (uintptr_t)p ) % 4; \ + INCR_ASSERT(p, start, len, align); \ +} \ +while( 0 ) + + +/** + * \brief Verify dependencies. Dependency identifiers are + * encoded in the buffer as 8 bit unsigned integers. + * + * \param count Number of dependencies. + * \param dep_p Pointer to buffer. + * + * \return DEPENDENCY_SUPPORTED if success else DEPENDENCY_NOT_SUPPORTED. + */ +int verify_dependencies( uint8_t count, uint8_t * dep_p ) +{ + uint8_t i; + for ( i = 0; i < count; i++ ) + { + if ( dep_check( (int)(dep_p[i]) ) != DEPENDENCY_SUPPORTED ) + return( DEPENDENCY_NOT_SUPPORTED ); + } + return( DEPENDENCY_SUPPORTED ); +} + + +/** + * \brief Receives unsigned integer on serial interface. + * Integers are encoded in network order. + * + * \param none + * + * \return unsigned int + */ +uint32_t receive_uint32() +{ + uint32_t value; + value = (uint8_t)greentea_getc() << 24; + value |= (uint8_t)greentea_getc() << 16; + value |= (uint8_t)greentea_getc() << 8; + value |= (uint8_t)greentea_getc(); + return( (uint32_t)value ); +} + +/** + * \brief Parses out an unsigned 32 int value from the byte array. + * Integers are encoded in network order. + * + * \param p Pointer to byte array + * + * \return unsigned int + */ +uint32_t parse_uint32( uint8_t * p ) +{ + uint32_t value; + value = *p++ << 24; + value |= *p++ << 16; + value |= *p++ << 8; + value |= *p; + return( value ); +} + + +/** + * \brief Receives test data on serial as greentea key,value pair: + * {{;}} + * + * \param data_len Out pointer to hold received data length. + * + * \return Byte array. + */ +uint8_t * receive_data( uint32_t * data_len ) +{ + uint32_t i = 0, errors = 0; + char c; + uint8_t * data = NULL; + + /* Read opening braces */ + i = 0; + while ( i < 2 ) + { + c = greentea_getc(); + /* Ignore any prevous CR LF characters */ + if ( c == '\n' || c == '\r' ) + continue; + i++; + if ( c != '{' ) + return( NULL ); + } + + /* Read data length */ + *data_len = receive_uint32(); + data = (uint8_t *)malloc( *data_len ); + assert( data != NULL ); + + greentea_getc(); // read ';' received after key i.e. *data_len + + for( i = 0; i < *data_len; i++ ) + data[i] = greentea_getc(); + + /* Read closing braces */ + for( i = 0; i < 2; i++ ) + { + c = greentea_getc(); + if ( c != '}' ) + { + errors++; + break; + } + } + + if ( errors ) + { + free( data ); + data = NULL; + *data_len = 0; + } + + return( data ); +} + +/** + * \brief Parses received byte array for test parameters. + * + * \param count Parameter count + * \param data Received Byte array + * \param data_len Byte array length + * \param error Parsing error out variable. + * + * \return Array of parsed parameters allocated on heap. + * Note: Caller has the responsibility to delete + * the memory after use. + */ +void ** parse_parameters( uint8_t count, uint8_t * data, uint32_t data_len, + int * error ) +{ + uint32_t i = 0; + char c; + void ** params = NULL; + void ** cur = NULL; + uint8_t * p = NULL; + + params = (void **)malloc( sizeof( void *) * ( count + 1 ) ); + assert( params != NULL ); + params[count] = NULL; + cur = params; + + p = data; + + /* Parameters */ + for( i = 0; i < count; i++ ) + { + c = (char)*p; + INCR_ASSERT( p, data, data_len, 1 ); + + /* Align p to 4 bytes for int, expression, string len or hex length */ + ALIGN_32BIT( p, data, data_len ); + + /* Network to host conversion */ + *( (int32_t *)p ) = (int32_t)parse_uint32( p ); + + switch( c ) + { + case 'E': + { + if ( get_expression( *( (int32_t *)p ), (int32_t *)p ) ) + { + *error = KEY_VALUE_MAPPING_NOT_FOUND; + goto exit; + } + } /* Intentional fall through */ + case 'I': + { + *cur++ = (void *)p; + INCR_ASSERT( p, data, data_len, sizeof( int32_t ) ); + } + break; + case 'H': + { + *cur++ = (void *)p; + } /* Intentional fall through */ + case 'S': + { + uint32_t sz = *( (int32_t *)p ); + INCR_ASSERT( p, data, data_len, sizeof( int32_t ) ); + *cur++ = (void *)p; + INCR_ASSERT( p, data, data_len, sz ); + } + break; + default: + { + *error = DISPATCH_INVALID_TEST_DATA; + goto exit; + } + break; + } + } + +exit: + if ( *error ) + { + free( params ); + params = NULL; + } + + return( params ); +} + +/** + * \brief Sends greentea key and int value pair to host. + * + * \param key key string + * \param value integer value + * + * \return void + */ +void send_key_integer( char * key, int value ) +{ + char str[50]; + snprintf( str, sizeof( str ), "%d", value ); + greentea_send_kv_c( key, str ); +} + +/** + * \brief Sends test setup failure to the host. + * + * \param failure Test set failure + * + * \return void + */ +void send_failure( int failure ) +{ + send_key_integer( "F", failure ); +} + +/** + * \brief Sends test status to the host. + * + * \param status Test status (PASS=0/FAIL=!0) + * + * \return void + */ +void send_status( int status ) +{ + send_key_integer( "R", status ); +} + + +/** + * \brief Embedded implementation of execute_tests(). + * Ignores command line and received test data + * on serial. + * + * \param argc not used + * \param argv not used + * + * \return Program exit status. + */ +int execute_tests( int args, const char ** argv ) +{ + int ret = 0; + uint32_t data_len = 0; + uint8_t count = 0, function_id; + void ** params = NULL; + uint8_t * data = NULL, * p = NULL; + + GREENTEA_SETUP_C( 180, "mbedtls_test" ); + greentea_send_kv_c( "GO", " " ); + + while ( 1 ) + { + ret = 0; + test_info.failed = 0; + data_len = 0; + + data = receive_data( &data_len ); + if ( data == NULL ) + continue; + p = data; + + do + { + /* Read dependency count */ + count = *p; + assert( count < data_len ); + INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); + ret = verify_dependencies( count, p ); + if ( ret != DEPENDENCY_SUPPORTED ) + break; + + INCR_ASSERT( p, data, data_len, count ); + + /* Read function id */ + function_id = *p; + INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); + + /* Read number of parameters */ + count = *p; + INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); + + params = parse_parameters( count, p, data_len - (p - data), &ret ); + if ( ret ) + break; + + ret = dispatch_test( function_id, params ); + } + while ( 0 ); + + if ( data ) + { + free(data); + data = NULL; + } + + if ( params ) + { + free( params ); + params = NULL; + } + + if ( ret ) + send_failure( ret ); + else + send_status( test_info.failed ); + } + return( 0 ); +} + diff --git a/tests/suites/mbed_test.function b/tests/suites/mbed_test.function new file mode 100644 index 0000000000..e09ed705c3 --- /dev/null +++ b/tests/suites/mbed_test.function @@ -0,0 +1,173 @@ +#line 2 "suites/mbed_test.function" +/* + * *** THIS FILE HAS BEEN MACHINE GENERATED *** + * + * This file has been machine generated using the script: + * {generator_script} + * + * Test file : {test_file} + * + * The following files were used to create this file. + * + * Main code file : {test_main_file} + * Platform code file : {test_platform_file} + * Helper file : {test_common_helper_file} + * Test suite file : {test_case_file} + * Test suite data : {test_case_data_file} + * + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#if !defined(MBEDTLS_CONFIG_FILE) +#include +#else +#include MBEDTLS_CONFIG_FILE +#endif + + +/*----------------------------------------------------------------------------*/ +/* Common helper code */ + +{test_common_helpers} + +#line {line_no} "suites/mbed_test.function" + + +/*----------------------------------------------------------------------------*/ +/* Test Suite Code */ + + +#define TEST_SUITE_ACTIVE + +{function_headers} + +{functions_code} + +#line {line_no} "suites/mbed_test.function" + + +/*----------------------------------------------------------------------------*/ +/* Test dispatch code */ + + +/** + * \brief Evaluates an expression/macro into its literal integer value. + * For optimizing space for embedded targets each expression/macro + * is identified by a unique identifier instead of string literals. + * Identifiers and evaluation code is generated by script: + * {generator_script} + * + * \param exp_id Expression identifier. + * \param out_value Pointer to int to hold the integer. + * + * \return 0 if exp_id is found. 1 otherwise. + */ +int get_expression( int32_t exp_id, int32_t * out_value ) +{{ +{expression_code} +#line {line_no} "suites/mbed_test.function" + {{ + return( KEY_VALUE_MAPPING_NOT_FOUND ); + }} + return( KEY_VALUE_MAPPING_FOUND ); +}} + + +/** + * \brief Checks if the dependency i.e. the compile flag is set. + * For optimizing space for embedded targets each dependency + * is identified by a unique identifier instead of string literals. + * Identifiers and check code is generated by script: + * {generator_script} + * + * \param exp_id Dependency identifier. + * + * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED + */ +int dep_check( int dep_id ) +{{ +{dep_check_code} +#line {line_no} "suites/mbed_test.function" + {{ + return( DEPENDENCY_NOT_SUPPORTED ); + }} +}} + + +/** + * \brief Function pointer type for test function wrappers. + * + * + * \param void ** Pointer to void pointers. Represents an array of test + * function parameters. + * + * \return void + */ +typedef void (*TestWrapper_t)( void ** ); + + +/** + * \brief Table of test function wrappers. Used by dispatch_test(). + * This table is populated by script: + * {generator_script} + * + */ +TestWrapper_t test_funcs[] = +{{ +{dispatch_code} +#line {line_no} "suites/mbed_test.function" +}}; + + +/** + * \brief Dispatches test functions based on function index. + * + * \param exp_id Test function index. + * + * \return DISPATCH_TEST_SUCCESS if found + * DISPATCH_TEST_FN_NOT_FOUND if not found + * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. + */ +int dispatch_test( int func_idx, void ** params ) +{{ + int ret = DISPATCH_TEST_SUCCESS; + TestWrapper_t fp = NULL; + + if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) + {{ + fp = test_funcs[func_idx]; + if ( fp ) + fp( params ); + else + ret = ( DISPATCH_UNSUPPORTED_SUITE ); + }} else + {{ + ret = ( DISPATCH_TEST_FN_NOT_FOUND ); + }} + + return( ret ); +}} + + +{platform_code} + +#line {line_no} "suites/mbed_test.function" + +/*----------------------------------------------------------------------------*/ +/* Main Test code */ + + +/** + * \brief Program main. Invokes platform specific execute_tests(). + * + * \param argc Command line arguments count. + * \param argv Array of command line arguments. + * + * \return Exit code. + */ +int main( int argc, const char *argv[] ) +{{ + return execute_tests( argc, argv ); +}} + diff --git a/tests/suites/test_suite_cipher.chachapoly.data b/tests/suites/test_suite_cipher.chachapoly.data index 1760dc09dd..ed2455fd54 100644 --- a/tests/suites/test_suite_cipher.chachapoly.data +++ b/tests/suites/test_suite_cipher.chachapoly.data @@ -1,5 +1,5 @@ Decrypt empty buffer -depends_on:MBEDTLS_CHACHAPOLY_C: +depends_on:MBEDTLS_CHACHAPOLY_C dec_empty_buf: ChaCha20+Poly1305 Encrypt and decrypt 0 bytes From 7a0d84fccc9f8ee86db5de0c9d06d620f2e74c2b Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Sat, 1 Apr 2017 03:18:20 +0100 Subject: [PATCH 0686/1100] On target test host test script --- tests/scripts/mbedtls_test.py | 243 ++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 tests/scripts/mbedtls_test.py diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py new file mode 100644 index 0000000000..32521a8f93 --- /dev/null +++ b/tests/scripts/mbedtls_test.py @@ -0,0 +1,243 @@ +""" +mbed SDK +Copyright (c) 2011-2013 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +import re +import os +import time +from mbed_host_tests import BaseHostTest, event_callback + + +class TestDataParser(object): + """ + parser for mbedtls test data files. + """ + + def __init__(self): + """ + Constructor + """ + self.tests = [] + + def parse(self, data_file): + """ + + """ + with open(data_file, 'r') as f: + self.__parse(f) + + @staticmethod + def __escaped_split(str, ch): + """ + """ + if len(ch) > 1: + raise ValueError('Expected split character. Found string!') + out = [] + part = '' + escape = False + for i in range(len(str)): + if not escape and str[i] == ch: + out.append(part) + part = '' + else: + part += str[i] + escape = not escape and str[i] == '\\' + if len(part): + out.append(part) + return out + + def __parse(self, file): + """ + """ + line = file.readline().strip() + while line: + line = line.strip() + if len(line) == 0: + line = file.readline() + continue + # Read test name + name = line + + # Check dependencies + deps = [] + line = file.readline().strip() + m = re.search('depends_on\:(.*)', line) + if m: + deps = [int(x) for x in m.group(1).split(':')] + line = file.readline().strip() + + # Read test vectors + line = line.replace('\\n', '\n#') + parts = self.__escaped_split(line, ':') + function = int(parts[0]) + x = parts[1:] + l = len(x) + assert l % 2 == 0, "Number of test arguments should be even: %s" % line + args = [(x[i * 2], x[(i * 2) + 1]) for i in range(len(x)/2)] + self.tests.append((name, function, deps, args)) + line = file.readline() + + def get_test_data(self): + """ + """ + return self.tests + + +class MbedTlsTest(BaseHostTest): + """ + Host test for mbed-tls target tests. + """ + # From suites/helpers.function + DEPENDENCY_SUPPORTED = 0 + KEY_VALUE_MAPPING_FOUND = DEPENDENCY_SUPPORTED + DISPATCH_TEST_SUCCESS = DEPENDENCY_SUPPORTED + + KEY_VALUE_MAPPING_NOT_FOUND = -1 + DEPENDENCY_NOT_SUPPORTED = -2 + DISPATCH_TEST_FN_NOT_FOUND = -3 + DISPATCH_INVALID_TEST_DATA = -4 + DISPATCH_UNSUPPORTED_SUITE = -5 + + def __init__(self): + """ + """ + super(MbedTlsTest, self).__init__() + self.tests = [] + self.test_index = -1 + self.dep_index = 0 + self.error_str = dict() + self.error_str[self.DEPENDENCY_SUPPORTED] = 'DEPENDENCY_SUPPORTED' + self.error_str[self.KEY_VALUE_MAPPING_NOT_FOUND] = 'KEY_VALUE_MAPPING_NOT_FOUND' + self.error_str[self.DEPENDENCY_NOT_SUPPORTED] = 'DEPENDENCY_NOT_SUPPORTED' + self.error_str[self.DISPATCH_TEST_FN_NOT_FOUND] = 'DISPATCH_TEST_FN_NOT_FOUND' + self.error_str[self.DISPATCH_INVALID_TEST_DATA] = 'DISPATCH_INVALID_TEST_DATA' + self.error_str[self.DISPATCH_UNSUPPORTED_SUITE] = 'DISPATCH_UNSUPPORTED_SUITE' + + def setup(self): + """ + """ + binary_path = self.get_config_item('image_path') + script_dir = os.path.split(os.path.abspath(__file__))[0] + suite_name = os.path.splitext(os.path.basename(binary_path))[0] + data_file = ".".join((suite_name, 'data')) + data_file = os.path.join(script_dir, '..', 'mbedtls', suite_name, data_file) + if os.path.exists(data_file): + self.log("Running tests from %s" % data_file) + parser = TestDataParser() + parser.parse(data_file) + self.tests = parser.get_test_data() + self.print_test_info() + else: + self.log("Data file not found: %s" % data_file) + self.notify_complete(False) + + def print_test_info(self): + """ + """ + self.log('{{__testcase_count;%d}}' % len(self.tests)) + for name, _, _, _ in self.tests: + self.log('{{__testcase_name;%s}}' % name) + + @staticmethod + def align_32bit(b): + """ + 4 byte aligns byte array. + + :return: + """ + b += bytearray((4 - (len(b))) % 4) + + def parameters_to_bytes(self, b, parameters): + for typ, param in parameters: + if typ == 'int' or typ == 'exp': + i = int(param) + b += 'I' if typ == 'int' else 'E' + self.align_32bit(b) + b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + elif typ == 'char*': + param = param.strip('"') + i = len(param) + 1 # + 1 for null termination + b += 'S' + self.align_32bit(b) + b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + b += bytearray(list(param)) + b += '\0' # Null terminate + return b + + def run_next_test(self): + """ + Send next test function to the target. + + """ + self.test_index += 1 + self.dep_index = 0 + if self.test_index < len(self.tests): + name, function, deps, args = self.tests[self.test_index] + self.log("Running: %s" % name) + bytes = bytearray([len(deps)]) + if len(deps): + bytes += bytearray(deps) + bytes += bytearray([function, len(args)]) + self.parameters_to_bytes(bytes, args) + key = bytearray([((len(bytes) >> x) & 0xff) for x in [24, 16, 8, 0]]) + #self.log("Bytes: " + " ".join(["%x '%c'" % (x, x) for x in bytes])) + self.send_kv(key, bytes) + else: + self.notify_complete(True) + + @staticmethod + def get_result(value): + try: + return int(value) + except ValueError: + ValueError("Result should return error number. Instead received %s" % value) + return 0 + + @event_callback('GO') + def on_go(self, key, value, timestamp): + self.run_next_test() + + @event_callback("R") + def on_result(self, key, value, timestamp): + """ + Handle result. + + """ + int_val = self.get_result(value) + name, function, deps, args = self.tests[self.test_index] + self.log('{{__testcase_finish;%s;%d;%d}}' % (name, int_val == 0, + int_val != 0)) + self.run_next_test() + + @event_callback("F") + def on_failure(self, key, value, timestamp): + """ + Handles test execution failure. Hence marking test as skipped. + + :param key: + :param value: + :param timestamp: + :return: + """ + int_val = self.get_result(value) + name, function, deps, args = self.tests[self.test_index] + if int_val in self.error_str: + err = self.error_str[int_val] + else: + err = 'Unknown error' + # For skip status, do not write {{__testcase_finish;...}} + self.log("Error: %s" % err) + self.run_next_test() From 67735d540bc53acaa8e678ab9a1a5381d6692fe7 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 6 Apr 2017 11:55:43 +0100 Subject: [PATCH 0687/1100] Fix name conflict and implicit use of functions from string.h --- tests/suites/test_suite_ctr_drbg.function | 1 + tests/suites/test_suite_debug.function | 1 + tests/suites/test_suite_entropy.function | 1 + tests/suites/test_suite_hmac_drbg.function | 1 + tests/suites/test_suite_x509parse.function | 1 + 5 files changed, 5 insertions(+) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index d8ffebe46a..73f63b9764 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -1,5 +1,6 @@ /* BEGIN_HEADER */ #include "mbedtls/ctr_drbg.h" +#include "string.h" static int test_offset_idx; static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len ) diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function index 98f98b061b..a32eba0c2a 100644 --- a/tests/suites/test_suite_debug.function +++ b/tests/suites/test_suite_debug.function @@ -1,5 +1,6 @@ /* BEGIN_HEADER */ #include "mbedtls/debug.h" +#include "string.h" struct buffer_data { diff --git a/tests/suites/test_suite_entropy.function b/tests/suites/test_suite_entropy.function index 2bab796d1c..9930c0386f 100644 --- a/tests/suites/test_suite_entropy.function +++ b/tests/suites/test_suite_entropy.function @@ -1,6 +1,7 @@ /* BEGIN_HEADER */ #include "mbedtls/entropy.h" #include "mbedtls/entropy_poll.h" +#include "string.h" /* * Number of calls made to entropy_dummy_source() diff --git a/tests/suites/test_suite_hmac_drbg.function b/tests/suites/test_suite_hmac_drbg.function index a413f5e182..21b300e7c9 100644 --- a/tests/suites/test_suite_hmac_drbg.function +++ b/tests/suites/test_suite_hmac_drbg.function @@ -1,5 +1,6 @@ /* BEGIN_HEADER */ #include "mbedtls/hmac_drbg.h" +#include "string.h" typedef struct { diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index 06f0108280..d02068d5f6 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -6,6 +6,7 @@ #include "mbedtls/pem.h" #include "mbedtls/oid.h" #include "mbedtls/base64.h" +#include "string.h" #if MBEDTLS_X509_MAX_INTERMEDIATE_CA > 19 #error "The value of MBEDTLS_X509_MAX_INTERMEDIATE_C is larger \ From ec024483ae80e68f5e055fb0a6f12d4dda09e5cc Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 9 May 2017 17:20:21 +0100 Subject: [PATCH 0688/1100] Fix line no. directive --- tests/suites/helpers.function | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 8f04885a52..6234cb361d 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -1,4 +1,4 @@ -#line 1 "helpers.function" +#line 2 "suites/helpers.function" /*----------------------------------------------------------------------------*/ /* Headers */ From ee6c0189df92f8994eb8006ded7cdb588088a6de Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 19 May 2017 17:34:17 +0100 Subject: [PATCH 0689/1100] Unify test setup errors for sending to host --- tests/suites/helpers.function | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 6234cb361d..1df450d055 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -42,16 +42,15 @@ typedef UINT32 uint32_t; /*----------------------------------------------------------------------------*/ /* Constants */ -#define DEPENDENCY_SUPPORTED 0 -#define DEPENDENCY_NOT_SUPPORTED 1 +#define DEPENDENCY_SUPPORTED 0 +#define KEY_VALUE_MAPPING_FOUND 0 +#define DISPATCH_TEST_SUCCESS 0 -#define KEY_VALUE_MAPPING_FOUND 0 -#define KEY_VALUE_MAPPING_NOT_FOUND -1 - -#define DISPATCH_TEST_SUCCESS 0 -#define DISPATCH_TEST_FN_NOT_FOUND 1 -#define DISPATCH_INVALID_TEST_DATA 2 -#define DISPATCH_UNSUPPORTED_SUITE 3 +#define KEY_VALUE_MAPPING_NOT_FOUND -1 +#define DEPENDENCY_NOT_SUPPORTED -2 +#define DISPATCH_TEST_FN_NOT_FOUND -3 +#define DISPATCH_INVALID_TEST_DATA -4 +#define DISPATCH_UNSUPPORTED_SUITE -5 /*----------------------------------------------------------------------------*/ From 0574632b304ef722d49732ddd089952ed35aa8d0 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 23 May 2017 13:00:35 +0100 Subject: [PATCH 0690/1100] Update Greentea client API calls --- tests/suites/embedded_test.function | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function index 21a5caba70..e885a0e99f 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/embedded_test.function @@ -254,7 +254,7 @@ void send_key_integer( char * key, int value ) { char str[50]; snprintf( str, sizeof( str ), "%d", value ); - greentea_send_kv_c( key, str ); + greentea_send_kv( key, str ); } /** @@ -300,8 +300,8 @@ int execute_tests( int args, const char ** argv ) void ** params = NULL; uint8_t * data = NULL, * p = NULL; - GREENTEA_SETUP_C( 180, "mbedtls_test" ); - greentea_send_kv_c( "GO", " " ); + GREENTEA_SETUP( 180, "mbedtls_test" ); + greentea_send_kv( "GO", " " ); while ( 1 ) { From 3499a9e41b8d4fe4813bebf269efd5d07e51c8ff Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 30 May 2017 00:06:49 +0100 Subject: [PATCH 0691/1100] Add hex comparison function --- tests/suites/helpers.function | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 1df450d055..6bab65f657 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -441,3 +441,23 @@ static void test_fail( const char *test, int line_no, const char* filename ) test_info.line_no = line_no; test_info.filename = filename; } + +int hexcmp( uint8_t * a, uint8_t * b, uint32_t a_len, uint32_t b_len) +{ + int ret = 0; + uint32_t i = 0; + + if ( a_len != b_len ) + return( a_len - b_len ); + + for( i = 0; i < a_len; i++ ) + { + if ( a[i] != b[i] ) + { + ret = -1; + break; + } + } + return ret; +} + From 9079170f6e71cd4b3e6822ee472ecad06b272f32 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 30 May 2017 00:57:11 +0100 Subject: [PATCH 0692/1100] Adapt code for scripting out hexify/unhexify code --- tests/suites/test_suite_asn1write.function | 12 +++++++++--- tests/suites/test_suite_rsa.function | 6 ++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/suites/test_suite_asn1write.function b/tests/suites/test_suite_asn1write.function index fc5fd8a2eb..40f1fed0fc 100644 --- a/tests/suites/test_suite_asn1write.function +++ b/tests/suites/test_suite_asn1write.function @@ -18,7 +18,9 @@ void mbedtls_asn1_write_octet_string( char *hex_str, char *hex_asn1, unsigned char buf[150]; unsigned char str[150] = { 0 }; unsigned char asn1[150] = { 0 }; - size_t str_len, asn1_len, i; + size_t str_len; + size_t asn1_len; + size_t i; unsigned char *p; memset( buf, GUARD_VAL, sizeof( buf ) ); @@ -54,7 +56,9 @@ void mbedtls_asn1_write_ia5_string( char *str, char *hex_asn1, int ret; unsigned char buf[150]; unsigned char asn1[150] = { 0 }; - size_t str_len, asn1_len, i; + size_t str_len; + size_t asn1_len; + size_t i; unsigned char *p; memset( buf, GUARD_VAL, sizeof( buf ) ); @@ -91,7 +95,9 @@ void mbedtls_asn1_write_len( int len, char *check_str, int buf_len, unsigned char buf[150]; unsigned char asn1[150]; unsigned char *p; - size_t asn1_len, i, read_len; + size_t asn1_len; + size_t i; + size_t read_len; memset( buf, GUARD_VAL, sizeof( buf ) ); memset( asn1, 0, sizeof( asn1 ) ); diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index fd632dad6a..4d58049dfa 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -519,8 +519,7 @@ void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char * { hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, - result_hex_str ) == 0 ); + TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); } } @@ -539,8 +538,7 @@ void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char * { hexify( output_str, output, ctx2.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, - result_hex_str ) == 0 ); + TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); } exit: From f1aaec9888bfb341f2f80fdf136d108e6887a256 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 30 May 2017 14:23:15 +0100 Subject: [PATCH 0693/1100] Intermediate hexify out change --- tests/suites/test_suite_aes.function | 166 ++++---------- tests/suites/test_suite_arc4.function | 20 +- tests/suites/test_suite_asn1write.function | 30 +-- tests/suites/test_suite_base64.function | 14 +- tests/suites/test_suite_blowfish.function | 148 ++++--------- tests/suites/test_suite_camellia.function | 128 +++-------- tests/suites/test_suite_ccm.function | 56 ++--- tests/suites/test_suite_cipher.function | 105 +++------ tests/suites/test_suite_cmac.function | 90 ++++---- tests/suites/test_suite_ctr_drbg.function | 55 ++--- tests/suites/test_suite_debug.function | 26 +-- tests/suites/test_suite_des.function | 166 ++++---------- tests/suites/test_suite_dhm.function | 4 +- tests/suites/test_suite_ecdh.function | 14 +- tests/suites/test_suite_ecdsa.function | 19 +- tests/suites/test_suite_ecjpake.function | 8 +- tests/suites/test_suite_ecp.function | 62 +++--- tests/suites/test_suite_entropy.function | 13 +- tests/suites/test_suite_error.function | 2 +- tests/suites/test_suite_gcm.function | 76 ++----- tests/suites/test_suite_hmac_drbg.function | 72 ++---- tests/suites/test_suite_md.function | 107 +++------ tests/suites/test_suite_mdx.function | 40 ++-- .../test_suite_memory_buffer_alloc.function | 11 +- tests/suites/test_suite_mpi.function | 156 ++++++------- tests/suites/test_suite_pem.function | 10 +- tests/suites/test_suite_pk.function | 84 +++---- tests/suites/test_suite_pkcs1_v15.function | 82 +++---- tests/suites/test_suite_pkcs1_v21.function | 102 ++++----- tests/suites/test_suite_pkcs5.function | 25 +-- tests/suites/test_suite_pkparse.function | 17 +- tests/suites/test_suite_pkwrite.function | 4 +- tests/suites/test_suite_rsa.function | 209 +++++++----------- tests/suites/test_suite_shax.function | 66 ++---- tests/suites/test_suite_timing.function | 1 + tests/suites/test_suite_version.function | 4 +- tests/suites/test_suite_x509parse.function | 68 +++--- tests/suites/test_suite_x509write.function | 7 +- tests/suites/test_suite_xtea.function | 76 ++----- 39 files changed, 780 insertions(+), 1563 deletions(-) diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index e346dc7c32..ad65a1b367 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -8,32 +8,23 @@ */ /* BEGIN_CASE */ -void aes_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void aes_encrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, + uint32_t src_str_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_ENCRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); } exit: @@ -42,32 +33,23 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void aes_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void aes_decrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, + uint32_t src_str_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_aes_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_DECRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); } exit: @@ -76,36 +58,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void aes_encrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, + uint32_t iv_str_len, uint8_t * src_str, + uint32_t data_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -114,36 +84,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void aes_decrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, + uint32_t iv_str_len, uint8_t * src_str, + uint32_t data_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_dec( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -276,34 +234,24 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void aes_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len + ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; size_t iv_offset = 0; - int key_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_ENCRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -311,34 +259,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void aes_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len + ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; size_t iv_offset = 0; - int key_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_DECRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -346,33 +284,22 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb8( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void aes_encrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, + uint32_t iv_str_len, uint8_t * src_str, + uint32_t src_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len, src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_ENCRYPT, src_len, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -380,33 +307,22 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb8( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void aes_decrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, + uint32_t iv_str_len, uint8_t * src_str, + uint32_t src_len, uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_aes_context ctx; - int key_len, src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_aes_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_DECRYPT, src_len, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -471,7 +387,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void aes_selftest() +void aes_selftest( ) { TEST_ASSERT( mbedtls_aes_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_arc4.function b/tests/suites/test_suite_arc4.function index a4b401b62b..e3ff303765 100644 --- a/tests/suites/test_suite_arc4.function +++ b/tests/suites/test_suite_arc4.function @@ -8,30 +8,22 @@ */ /* BEGIN_CASE */ -void mbedtls_arc4_crypt( char *hex_src_string, char *hex_key_string, - char *hex_dst_string ) +void mbedtls_arc4_crypt( uint8_t * src_str, uint32_t src_len, + uint8_t * key_str, uint32_t key_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len + ) { - unsigned char src_str[1000]; - unsigned char key_str[1000]; unsigned char dst_str[1000]; - unsigned char dst_hexstr[2000]; - int src_len, key_len; mbedtls_arc4_context ctx; - memset(src_str, 0x00, 1000); - memset(key_str, 0x00, 1000); memset(dst_str, 0x00, 1000); - memset(dst_hexstr, 0x00, 2000); mbedtls_arc4_init( &ctx ); - src_len = unhexify( src_str, hex_src_string ); - key_len = unhexify( key_str, hex_key_string ); mbedtls_arc4_setup(&ctx, key_str, key_len); TEST_ASSERT( mbedtls_arc4_crypt(&ctx, src_len, src_str, dst_str ) == 0 ); - hexify( dst_hexstr, dst_str, src_len ); - TEST_ASSERT( strcmp( (char *) dst_hexstr, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( dst_str, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_arc4_free( &ctx ); @@ -39,7 +31,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void arc4_selftest() +void arc4_selftest( ) { TEST_ASSERT( mbedtls_arc4_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_asn1write.function b/tests/suites/test_suite_asn1write.function index 40f1fed0fc..3befa44d26 100644 --- a/tests/suites/test_suite_asn1write.function +++ b/tests/suites/test_suite_asn1write.function @@ -11,22 +11,17 @@ */ /* BEGIN_CASE */ -void mbedtls_asn1_write_octet_string( char *hex_str, char *hex_asn1, - int buf_len, int result ) +void mbedtls_asn1_write_octet_string( uint8_t * str, uint32_t str_len, + uint8_t * asn1, uint32_t asn1_len, + int buf_len, int result ) { int ret; unsigned char buf[150]; - unsigned char str[150] = { 0 }; - unsigned char asn1[150] = { 0 }; - size_t str_len; - size_t asn1_len; size_t i; unsigned char *p; memset( buf, GUARD_VAL, sizeof( buf ) ); - str_len = unhexify( str, hex_str ); - asn1_len = unhexify( asn1, hex_asn1 ); p = buf + GUARD_LEN + buf_len; @@ -41,7 +36,6 @@ void mbedtls_asn1_write_octet_string( char *hex_str, char *hex_asn1, if( result >= 0 ) { - TEST_ASSERT( (size_t) ret == asn1_len ); TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); @@ -50,21 +44,19 @@ void mbedtls_asn1_write_octet_string( char *hex_str, char *hex_asn1, /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_ia5_string( char *str, char *hex_asn1, - int buf_len, int result ) +void mbedtls_asn1_write_ia5_string( char * str, uint8_t * asn1, + uint32_t asn1_len, int buf_len, int result + ) { int ret; unsigned char buf[150]; - unsigned char asn1[150] = { 0 }; size_t str_len; - size_t asn1_len; size_t i; unsigned char *p; memset( buf, GUARD_VAL, sizeof( buf ) ); str_len = strlen( str ); - asn1_len = unhexify( asn1, hex_asn1 ); p = buf + GUARD_LEN + buf_len; @@ -79,7 +71,6 @@ void mbedtls_asn1_write_ia5_string( char *str, char *hex_asn1, if( result >= 0 ) { - TEST_ASSERT( (size_t) ret == asn1_len ); TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); @@ -88,20 +79,16 @@ void mbedtls_asn1_write_ia5_string( char *str, char *hex_asn1, /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_len( int len, char *check_str, int buf_len, - int result ) +void mbedtls_asn1_write_len( int len, uint8_t * asn1, uint32_t asn1_len, + int buf_len, int result ) { int ret; unsigned char buf[150]; - unsigned char asn1[150]; unsigned char *p; - size_t asn1_len; size_t i; size_t read_len; memset( buf, GUARD_VAL, sizeof( buf ) ); - memset( asn1, 0, sizeof( asn1 ) ); - asn1_len = unhexify( asn1, check_str ); p = buf + GUARD_LEN + buf_len; @@ -118,7 +105,6 @@ void mbedtls_asn1_write_len( int len, char *check_str, int buf_len, if( result >= 0 ) { - TEST_ASSERT( (size_t) ret == asn1_len ); TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); diff --git a/tests/suites/test_suite_base64.function b/tests/suites/test_suite_base64.function index 77fa7fdedf..3077f16aaa 100644 --- a/tests/suites/test_suite_base64.function +++ b/tests/suites/test_suite_base64.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void mbedtls_base64_encode( char *src_string, char *dst_string, int dst_buf_size, - int result ) +void mbedtls_base64_encode( char * src_string, char * dst_string, + int dst_buf_size, int result ) { unsigned char src_str[1000]; unsigned char dst_str[1000]; @@ -28,7 +28,7 @@ void mbedtls_base64_encode( char *src_string, char *dst_string, int dst_buf_size /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_base64_decode( char *src_string, char *dst_string, int result ) +void mbedtls_base64_decode( char * src_string, char * dst_string, int result ) { unsigned char src_str[1000]; unsigned char dst_str[1000]; @@ -49,7 +49,7 @@ void mbedtls_base64_decode( char *src_string, char *dst_string, int result ) /* END_CASE */ /* BEGIN_CASE */ -void base64_encode_hex( char *src_hex, char *dst, int dst_buf_size, +void base64_encode_hex( char * src_hex, char * dst, int dst_buf_size, int result ) { unsigned char *src = NULL, *res = NULL; @@ -72,7 +72,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex( char *src, char *dst_hex, int dst_buf_size, +void base64_decode_hex( char * src, char * dst_hex, int dst_buf_size, int result ) { unsigned char *dst = NULL, *res = NULL; @@ -96,7 +96,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex_src( char *src_hex, char *dst_ref, int result ) +void base64_decode_hex_src( char * src_hex, char * dst_ref, int result ) { unsigned char dst[1000] = { 0 }; unsigned char *src; @@ -117,7 +117,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void base64_selftest() +void base64_selftest( ) { TEST_ASSERT( mbedtls_base64_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_blowfish.function b/tests/suites/test_suite_blowfish.function index e3c2252906..55ab619fcc 100644 --- a/tests/suites/test_suite_blowfish.function +++ b/tests/suites/test_suite_blowfish.function @@ -8,32 +8,24 @@ */ /* BEGIN_CASE */ -void blowfish_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void blowfish_encrypt_ecb( uint8_t * key_str, uint32_t key_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); } exit: @@ -42,32 +34,24 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void blowfish_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void blowfish_decrypt_ecb( uint8_t * key_str, uint32_t key_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); } exit: @@ -76,37 +60,26 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void blowfish_encrypt_cbc( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t data_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, data_len , iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -115,36 +88,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void blowfish_decrypt_cbc( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t data_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_DECRYPT, data_len , iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -153,34 +115,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_encrypt_cfb64( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void blowfish_encrypt_cfb64( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; size_t iv_offset = 0; - int key_len, src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); @@ -188,34 +140,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_decrypt_cfb64( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void blowfish_decrypt_cfb64( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; size_t iv_offset = 0; - int key_len, src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); @@ -223,36 +165,26 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ -void blowfish_encrypt_ctr( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void blowfish_encrypt_ctr( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; unsigned char stream_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_blowfish_context ctx; size_t iv_offset = 0; - int key_len, src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); memset(stream_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_blowfish_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_blowfish_crypt_ctr( &ctx, src_len, &iv_offset, iv_str, stream_str, src_str, output ) == 0 ); - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); diff --git a/tests/suites/test_suite_camellia.function b/tests/suites/test_suite_camellia.function index 9df6482a8d..96d25a2514 100644 --- a/tests/suites/test_suite_camellia.function +++ b/tests/suites/test_suite_camellia.function @@ -8,32 +8,24 @@ */ /* BEGIN_CASE */ -void camellia_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void camellia_encrypt_ecb( uint8_t * key_str, uint32_t key_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); } exit: @@ -42,32 +34,24 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void camellia_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string, int setkey_result ) +void camellia_decrypt_ecb( uint8_t * key_str, uint32_t key_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int setkey_result ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; - int key_len; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_camellia_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); if( setkey_result == 0 ) { TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); } exit: @@ -76,36 +60,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void camellia_encrypt_cbc( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t data_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, data_len, iv_str, src_str, output) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -114,36 +87,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, - int cbc_result ) +void camellia_decrypt_cbc( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t data_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; - int key_len, data_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - data_len = unhexify( src_str, hex_src_string ); mbedtls_camellia_setkey_dec( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_DECRYPT, data_len, iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, data_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); } exit: @@ -152,34 +114,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_encrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void camellia_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; size_t iv_offset = 0; - int key_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - unhexify( src_str, hex_src_string ); mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); exit: mbedtls_camellia_free( &ctx ); @@ -187,34 +139,24 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_decrypt_cfb128( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void camellia_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_camellia_context ctx; size_t iv_offset = 0; - int key_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_camellia_init( &ctx ); - key_len = unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - unhexify( src_str, hex_src_string ); mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_DECRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, 16 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); exit: mbedtls_camellia_free( &ctx ); @@ -222,7 +164,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void camellia_selftest() +void camellia_selftest( ) { TEST_ASSERT( mbedtls_camellia_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index 58c8569850..c845f44fff 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -8,7 +8,7 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:MBEDTLS_AES_C */ -void mbedtls_ccm_self_test( ) +void mbedtls_ccm_self_test( ) { TEST_ASSERT( mbedtls_ccm_self_test( 1 ) == 0 ); } @@ -116,32 +116,19 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_encrypt_and_tag( int cipher_id, - char *key_hex, char *msg_hex, - char *iv_hex, char *add_hex, - char *result_hex ) +void mbedtls_ccm_encrypt_and_tag( int cipher_id, uint8_t * key, + uint32_t key_len, uint8_t * msg, + uint32_t msg_len, uint8_t * iv, + uint32_t iv_len, uint8_t * add, + uint32_t add_len, uint8_t * result, + uint32_t result_len ) { - unsigned char key[32]; - unsigned char msg[50]; - unsigned char iv[13]; - unsigned char add[32]; - unsigned char result[50]; mbedtls_ccm_context ctx; - size_t key_len, msg_len, iv_len, add_len, tag_len, result_len; + size_t tag_len; mbedtls_ccm_init( &ctx ); - memset( key, 0x00, sizeof( key ) ); - memset( msg, 0x00, sizeof( msg ) ); - memset( iv, 0x00, sizeof( iv ) ); - memset( add, 0x00, sizeof( add ) ); - memset( result, 0x00, sizeof( result ) ); - key_len = unhexify( key, key_hex ); - msg_len = unhexify( msg, msg_hex ); - iv_len = unhexify( iv, iv_hex ); - add_len = unhexify( add, add_hex ); - result_len = unhexify( result, result_hex ); tag_len = result_len - msg_len; TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); @@ -161,38 +148,24 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_auth_decrypt( int cipher_id, - char *key_hex, char *msg_hex, - char *iv_hex, char *add_hex, - int tag_len, char *result_hex ) +void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, + uint8_t * msg, uint32_t msg_len, uint8_t * iv, + uint32_t iv_len, uint8_t * add, + uint32_t add_len, int tag_len, + uint8_t * result, uint32_t result_len ) { - unsigned char key[32]; - unsigned char msg[50]; - unsigned char iv[13]; - unsigned char add[32]; unsigned char tag[16]; - unsigned char result[50]; mbedtls_ccm_context ctx; - size_t key_len, msg_len, iv_len, add_len, result_len; int ret; mbedtls_ccm_init( &ctx ); - memset( key, 0x00, sizeof( key ) ); - memset( msg, 0x00, sizeof( msg ) ); - memset( iv, 0x00, sizeof( iv ) ); - memset( add, 0x00, sizeof( add ) ); memset( tag, 0x00, sizeof( tag ) ); - memset( result, 0x00, sizeof( result ) ); - key_len = unhexify( key, key_hex ); - msg_len = unhexify( msg, msg_hex ); - iv_len = unhexify( iv, iv_hex ); - add_len = unhexify( add, add_hex ); msg_len -= tag_len; memcpy( tag, msg + msg_len, tag_len ); - if( strcmp( "FAIL", result_hex ) == 0 ) + if( strcmp( "FAIL", (char *)result ) == 0 ) { ret = MBEDTLS_ERR_CCM_AUTH_FAILED; result_len = -1; @@ -200,7 +173,6 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, else { ret = 0; - result_len = unhexify( result, result_hex ); } TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 52526a898a..e2463a8fcc 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -12,7 +12,7 @@ */ /* BEGIN_CASE */ -void mbedtls_cipher_list( ) +void mbedtls_cipher_list( ) { const int *cipher_type; @@ -22,7 +22,7 @@ void mbedtls_cipher_list( ) /* END_CASE */ /* BEGIN_CASE */ -void cipher_null_args( ) +void cipher_null_args( ) { mbedtls_cipher_context_t ctx; const mbedtls_cipher_info_t *info = mbedtls_cipher_info_from_type( *( mbedtls_cipher_list() ) ); @@ -92,7 +92,7 @@ void cipher_null_args( ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_AES_C */ -void cipher_special_behaviours( ) +void cipher_special_behaviours( ) { const mbedtls_cipher_info_t *cipher_info; mbedtls_cipher_context_t ctx; @@ -130,7 +130,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void enc_dec_buf( int cipher_id, char *cipher_string, int key_len, +void enc_dec_buf( int cipher_id, char * cipher_string, int key_len, int length_val, int pad_mode ) { size_t length = length_val, outlen, total_len, i, block_size; @@ -255,8 +255,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void enc_fail( int cipher_id, int pad_mode, int key_len, - int length_val, int ret ) +void enc_fail( int cipher_id, int pad_mode, int key_len, int length_val, + int ret ) { size_t length = length_val; unsigned char key[32]; @@ -307,7 +307,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void dec_empty_buf() +void dec_empty_buf( ) { unsigned char key[32]; unsigned char iv[16]; @@ -471,44 +471,22 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void decrypt_test_vec( int cipher_id, int pad_mode, - char *hex_key, char *hex_iv, - char *hex_cipher, char *hex_clear, - char *hex_ad, char *hex_tag, - int finish_result, int tag_result ) +void decrypt_test_vec( int cipher_id, int pad_mode, uint8_t * key, + uint32_t key_len, uint8_t * iv, uint32_t iv_len, + uint8_t * cipher, uint32_t cipher_len, uint8_t * clear, + uint32_t clear_len, uint8_t * ad, uint32_t ad_len, + uint8_t * tag, uint32_t tag_len, int finish_result, + int tag_result ) { - unsigned char key[50]; - unsigned char iv[50]; - unsigned char cipher[265]; /* max length of test data so far */ - unsigned char clear[265]; unsigned char output[265]; - unsigned char ad[200]; - unsigned char tag[20]; - size_t key_len, iv_len, cipher_len, clear_len; -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) - size_t ad_len, tag_len; -#endif mbedtls_cipher_context_t ctx; size_t outlen, total_len; mbedtls_cipher_init( &ctx ); - memset( key, 0x00, sizeof( key ) ); - memset( iv, 0x00, sizeof( iv ) ); - memset( cipher, 0x00, sizeof( cipher ) ); - memset( clear, 0x00, sizeof( clear ) ); - memset( ad, 0x00, sizeof( ad ) ); - memset( tag, 0x00, sizeof( tag ) ); memset( output, 0x00, sizeof( output ) ); - key_len = unhexify( key, hex_key ); - iv_len = unhexify( iv, hex_iv ); - cipher_len = unhexify( cipher, hex_cipher ); - clear_len = unhexify( clear, hex_clear ); -#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) - ad_len = unhexify( ad, hex_ad ); - tag_len = unhexify( tag, hex_tag ); -#else +#if !defined(MBEDTLS_GCM_C) && !defined(MBEDTLS_CHACHAPOLY_C) ((void) hex_ad); ((void) hex_tag); #endif @@ -553,39 +531,22 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_AEAD */ -void auth_crypt_tv( int cipher_id, char *hex_key, char *hex_iv, - char *hex_ad, char *hex_cipher, - char *hex_tag, char *hex_clear ) +void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, + uint8_t * iv, uint32_t iv_len, uint8_t * ad, + uint32_t ad_len, uint8_t * cipher, uint32_t cipher_len, + uint8_t * tag, uint32_t tag_len, uint8_t * clear, + uint32_t clear_len ) { int ret; - unsigned char key[50]; - unsigned char iv[50]; - unsigned char cipher[265]; /* max size of test data so far */ - unsigned char clear[265]; unsigned char output[267]; /* above + 2 (overwrite check) */ - unsigned char ad[200]; - unsigned char tag[20]; unsigned char my_tag[20]; - size_t key_len, iv_len, cipher_len, clear_len, ad_len, tag_len; mbedtls_cipher_context_t ctx; size_t outlen; mbedtls_cipher_init( &ctx ); - memset( key, 0x00, sizeof( key ) ); - memset( iv, 0x00, sizeof( iv ) ); - memset( cipher, 0x00, sizeof( cipher ) ); - memset( clear, 0x00, sizeof( clear ) ); - memset( ad, 0x00, sizeof( ad ) ); - memset( tag, 0x00, sizeof( tag ) ); - memset( my_tag, 0xFF, sizeof( my_tag ) ); memset( output, 0xFF, sizeof( output ) ); - key_len = unhexify( key, hex_key ); - iv_len = unhexify( iv, hex_iv ); - cipher_len = unhexify( cipher, hex_cipher ); - ad_len = unhexify( ad, hex_ad ); - tag_len = unhexify( tag, hex_tag ); /* Prepare context */ TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, @@ -602,7 +563,7 @@ void auth_crypt_tv( int cipher_id, char *hex_key, char *hex_iv, TEST_ASSERT( output[outlen + 1] == 0xFF ); /* make sure the message is rejected if it should be */ - if( strcmp( hex_clear, "FAIL" ) == 0 ) + if( strcmp( clear, "FAIL" ) == 0 ) { TEST_ASSERT( ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ); goto exit; @@ -611,7 +572,6 @@ void auth_crypt_tv( int cipher_id, char *hex_key, char *hex_iv, /* otherwise, make sure it was decrypted properly */ TEST_ASSERT( ret == 0 ); - clear_len = unhexify( clear, hex_clear ); TEST_ASSERT( outlen == clear_len ); TEST_ASSERT( memcmp( output, clear, clear_len ) == 0 ); @@ -641,34 +601,22 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void test_vec_ecb( int cipher_id, int operation, char *hex_key, - char *hex_input, char *hex_result, - int finish_result ) +void test_vec_ecb( int cipher_id, int operation, uint8_t * key, + uint32_t key_len, uint8_t * input, uint32_t input_len, + uint8_t * result, uint32_t result_len, int finish_result ) { - unsigned char key[50]; - unsigned char input[16]; - unsigned char result[16]; - size_t key_len; mbedtls_cipher_context_t ctx; unsigned char output[32]; size_t outlen; mbedtls_cipher_init( &ctx ); - memset( key, 0x00, sizeof( key ) ); - memset( input, 0x00, sizeof( input ) ); - memset( result, 0x00, sizeof( result ) ); memset( output, 0x00, sizeof( output ) ); /* Prepare context */ TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, mbedtls_cipher_info_from_type( cipher_id ) ) ); - key_len = unhexify( key, hex_key ); - TEST_ASSERT( unhexify( input, hex_input ) == - (int) mbedtls_cipher_get_block_size( &ctx ) ); - TEST_ASSERT( unhexify( result, hex_result ) == - (int) mbedtls_cipher_get_block_size( &ctx ) ); TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, operation ) ); @@ -710,12 +658,12 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void check_padding( int pad_mode, char *input_str, int ret, int dlen_check ) +void check_padding( int pad_mode, uint8_t * input, uint32_t ilen, int ret, + int dlen_check ) { mbedtls_cipher_info_t cipher_info; mbedtls_cipher_context_t ctx; - unsigned char input[16]; - size_t ilen, dlen; + size_t dlen; /* build a fake context just for getting access to get_padding */ mbedtls_cipher_init( &ctx ); @@ -724,7 +672,6 @@ void check_padding( int pad_mode, char *input_str, int ret, int dlen_check ) TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, pad_mode ) ); - ilen = unhexify( input, input_str ); TEST_ASSERT( ret == ctx.get_padding( input, ilen, &dlen ) ); if( 0 == ret ) diff --git a/tests/suites/test_suite_cmac.function b/tests/suites/test_suite_cmac.function index 4b31ab2ffd..7bae762e95 100644 --- a/tests/suites/test_suite_cmac.function +++ b/tests/suites/test_suite_cmac.function @@ -9,14 +9,14 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void mbedtls_cmac_self_test( ) +void mbedtls_cmac_self_test( ) { TEST_ASSERT( mbedtls_cmac_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_cmac_null_args( ) +void mbedtls_cmac_null_args( ) { mbedtls_cipher_context_t ctx; const mbedtls_cipher_info_t *cipher_info; @@ -99,8 +99,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_cmac_setkey( int cipher_type, int key_size, - int result ) +void mbedtls_cmac_setkey( int cipher_type, int key_size, int result ) { const mbedtls_cipher_info_t *cipher_info; unsigned char key[32]; @@ -120,32 +119,22 @@ void mbedtls_cmac_setkey( int cipher_type, int key_size, /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_cmac_multiple_blocks( int cipher_type, - char *key_string, int keybits, - int block_size, - char *block1_string, int block1_len, - char *block2_string, int block2_len, - char *block3_string, int block3_len, - char *block4_string, int block4_len, - char *expected_result_string ) +void mbedtls_cmac_multiple_blocks( int cipher_type, uint8_t * key, + uint32_t key_len, int keybits, + int block_size, uint8_t * block1, + uint32_t block1_len, int block1_len, + uint8_t * block2, uint32_t block2_len, + int block2_len, uint8_t * block3, + uint32_t block3_len, int block3_len, + uint8_t * block4, uint32_t block4_len, + int block4_len, uint8_t * expected_result, + uint32_t expected_result_len ) { - unsigned char key[100]; - unsigned char block1[100]; - unsigned char block2[100]; - unsigned char block3[100]; - unsigned char block4[100]; - unsigned char expected_result[100]; const mbedtls_cipher_info_t *cipher_info; mbedtls_cipher_context_t ctx; unsigned char output[MBEDTLS_CIPHER_BLKSIZE_MAX]; /* Convert the test parameters to binary data */ - unhexify( key, key_string ); - unhexify( block1, block1_string ); - unhexify( block2, block2_string ); - unhexify( block3, block3_string ); - unhexify( block4, block4_string ); - unhexify( expected_result, expected_result_string ); mbedtls_cipher_init( &ctx ); @@ -198,41 +187,40 @@ exit: /* BEGIN_CASE */ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, - char *key_string, int keybits, - int block_size, - char *block_a1_string, int block_a1_len, - char *block_a2_string, int block_a2_len, - char *block_a3_string, int block_a3_len, - char *expected_result_a_string, - char *block_b1_string, int block_b1_len, - char *block_b2_string, int block_b2_len, - char *block_b3_string, int block_b3_len, - char *expected_result_b_string ) + uint8_t * key, + uint32_t key_len, int keybits, + int block_size, + uint8_t * block_a1, + uint32_t block_a1_len, + int block_a1_len, + uint8_t * block_a2, + uint32_t block_a2_len, + int block_a2_len, + uint8_t * block_a3, + uint32_t block_a3_len, + int block_a3_len, + uint8_t * expected_result_a, + uint32_t expected_result_a_len, + uint8_t * block_b1, + uint32_t block_b1_len, + int block_b1_len, + uint8_t * block_b2, + uint32_t block_b2_len, + int block_b2_len, + uint8_t * block_b3, + uint32_t block_b3_len, + int block_b3_len, + uint8_t * expected_result_b, + uint32_t expected_result_b_len + ) { - unsigned char key[100]; - unsigned char block_a1[100]; - unsigned char block_a2[100]; - unsigned char block_a3[100]; - unsigned char block_b1[100]; - unsigned char block_b2[100]; - unsigned char block_b3[100]; - unsigned char expected_result_a[100], expected_result_b[100]; const mbedtls_cipher_info_t *cipher_info; mbedtls_cipher_context_t ctx; unsigned char output[MBEDTLS_CIPHER_BLKSIZE_MAX]; /* Convert the test parameters to binary data */ - unhexify( key, key_string ); - unhexify( block_a1, block_a1_string ); - unhexify( block_a2, block_a2_string ); - unhexify( block_a3, block_a3_string ); - unhexify( block_b1, block_b1_string ); - unhexify( block_b2, block_b2_string ); - unhexify( block_b3, block_b3_string ); - unhexify( expected_result_a, expected_result_a_string ); - unhexify( expected_result_b, expected_result_b_string ); mbedtls_cipher_init( &ctx ); diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 73f63b9764..7dd3d5c39c 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -18,7 +18,7 @@ static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len */ /* BEGIN_CASE */ -void ctr_drbg_special_behaviours( ) +void ctr_drbg_special_behaviours( ) { mbedtls_ctr_drbg_context ctx; unsigned char output[512]; @@ -51,26 +51,17 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_pr( char *add_init_string, char *entropy_string, - char *add1_string, char *add2_string, - char *result_str ) +void ctr_drbg_validate_pr( uint8_t * add_init, uint32_t add_init_len, + uint8_t * entropy, uint32_t entropy_len, + uint8_t * add1, uint32_t add1_len, uint8_t * add2, + uint32_t add2_len, uint8_t * result_str, + uint32_t result_str_len ) { - unsigned char entropy[512]; - unsigned char add_init[512]; - unsigned char add1[512]; - unsigned char add2[512]; mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; - unsigned char output_str[512]; - int add_init_len, add1_len, add2_len; mbedtls_ctr_drbg_init( &ctx ); - memset( output_str, 0, 512 ); - unhexify( entropy, entropy_string ); - add_init_len = unhexify( add_init, add_init_string ); - add1_len = unhexify( add1, add1_string ); - add2_len = unhexify( add2, add2_string ); test_offset_idx = 0; TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, 32 ) == 0 ); @@ -78,8 +69,7 @@ void ctr_drbg_validate_pr( char *add_init_string, char *entropy_string, TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 ); TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 ); - hexify( output_str, buf, 16 ); - TEST_ASSERT( strcmp( (char *) output_str, result_str ) == 0 ); + TEST_ASSERT( hexcmp( buf, result_str, 16, result_str_len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); @@ -87,28 +77,18 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_nopr( char *add_init_string, char *entropy_string, - char *add1_string, char *add_reseed_string, - char *add2_string, char *result_str ) +void ctr_drbg_validate_nopr( uint8_t * add_init, uint32_t add_init_len, + uint8_t * entropy, uint32_t entropy_len, + uint8_t * add1, uint32_t add1_len, + uint8_t * add_reseed, uint32_t add_reseed_len, + uint8_t * add2, uint32_t add2_len, + uint8_t * result_str, uint32_t result_str_len ) { - unsigned char entropy[512]; - unsigned char add_init[512]; - unsigned char add1[512]; - unsigned char add_reseed[512]; - unsigned char add2[512]; mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; - unsigned char output_str[512]; - int add_init_len, add1_len, add_reseed_len, add2_len; mbedtls_ctr_drbg_init( &ctx ); - memset( output_str, 0, 512 ); - unhexify( entropy, entropy_string ); - add_init_len = unhexify( add_init, add_init_string ); - add1_len = unhexify( add1, add1_string ); - add_reseed_len = unhexify( add_reseed, add_reseed_string ); - add2_len = unhexify( add2, add2_string ); test_offset_idx = 0; TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, 32 ) == 0 ); @@ -116,8 +96,7 @@ void ctr_drbg_validate_nopr( char *add_init_string, char *entropy_string, TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 ); TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 ); TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 ); - hexify( output_str, buf, 16 ); - TEST_ASSERT( strcmp( (char *) output_str, result_str ) == 0 ); + TEST_ASSERT( hexcmp( buf, result_str, 16, result_str_len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); @@ -125,7 +104,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_entropy_usage( ) +void ctr_drbg_entropy_usage( ) { unsigned char out[16]; unsigned char add[16]; @@ -204,7 +183,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void ctr_drbg_seed_file( char *path, int ret ) +void ctr_drbg_seed_file( char * path, int ret ) { mbedtls_ctr_drbg_context ctx; @@ -220,7 +199,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void ctr_drbg_selftest( ) +void ctr_drbg_selftest( ) { TEST_ASSERT( mbedtls_ctr_drbg_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function index a32eba0c2a..cebfe2c9d2 100644 --- a/tests/suites/test_suite_debug.function +++ b/tests/suites/test_suite_debug.function @@ -48,8 +48,8 @@ void string_debug(void *data, int level, const char *file, int line, const char */ /* BEGIN_CASE */ -void debug_print_msg_threshold( int threshold, int level, char *file, int line, - char *result_str ) +void debug_print_msg_threshold( int threshold, int level, char * file, + int line, char * result_str ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; @@ -77,8 +77,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_debug_print_ret( char *file, int line, char *text, int value, - char *result_str ) +void mbedtls_debug_print_ret( char * file, int line, char * text, int value, + char * result_str ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; @@ -104,28 +104,24 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_debug_print_buf( char *file, int line, char *text, - char *data_string, char *result_str ) +void mbedtls_debug_print_buf( char * file, int line, char * text, + uint8_t * data, uint32_t data_len, + char * result_str ) { - unsigned char data[10000]; mbedtls_ssl_context ssl; mbedtls_ssl_config conf; struct buffer_data buffer; - size_t data_len; mbedtls_ssl_init( &ssl ); mbedtls_ssl_config_init( &conf ); - memset( &data, 0, sizeof( data ) ); memset( buffer.buf, 0, 2000 ); buffer.ptr = buffer.buf; - data_len = unhexify( data, data_string ); TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 ); mbedtls_ssl_conf_dbg( &conf, string_debug, &buffer); - mbedtls_debug_print_buf( &ssl, 0, file, line, text, data, data_len ); TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 ); @@ -136,8 +132,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_debug_print_crt( char *crt_file, char *file, int line, - char *prefix, char *result_str ) +void mbedtls_debug_print_crt( char * crt_file, char * file, int line, + char * prefix, char * result_str ) { mbedtls_x509_crt crt; mbedtls_ssl_context ssl; @@ -167,8 +163,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_BIGNUM_C */ -void mbedtls_debug_print_mpi( int radix, char *value, char *file, int line, - char *prefix, char *result_str ) +void mbedtls_debug_print_mpi( int radix, char * value, char * file, int line, + char * prefix, char * result_str ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; diff --git a/tests/suites/test_suite_des.function b/tests/suites/test_suite_des.function index 2e73a77681..3d1bb9235c 100644 --- a/tests/suites/test_suite_des.function +++ b/tests/suites/test_suite_des.function @@ -8,42 +8,28 @@ */ /* BEGIN_CASE */ -void des_check_weak( char *key_hex, int ret ) +void des_check_weak( uint8_t * key, uint32_t key_len, int ret ) { - unsigned char key[MBEDTLS_DES_KEY_SIZE]; - - memset( key, 0, sizeof key ); - - unhexify( key, key_hex ); - TEST_ASSERT( mbedtls_des_key_check_weak( key ) == ret ); } /* END_CASE */ /* BEGIN_CASE */ -void des_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string ) +void des_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); mbedtls_des_setkey_enc( &ctx, key_str ); TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); exit: mbedtls_des_free( &ctx ); @@ -51,29 +37,21 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string ) +void des_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); mbedtls_des_setkey_dec( &ctx, key_str ); TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); exit: mbedtls_des_free( &ctx ); @@ -81,35 +59,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, int cbc_result ) +void des_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len, + int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des_context ctx; - int src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_des_setkey_enc( &ctx, key_str ); TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_len, iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); } exit: @@ -118,35 +86,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string, int cbc_result ) +void des_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len, + int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des_context ctx; - int src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); mbedtls_des_setkey_dec( &ctx, key_str ); TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_len, iv_str, src_str, output ) == cbc_result ); if( cbc_result == 0 ) { - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); } exit: @@ -155,23 +113,16 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_encrypt_ecb( int key_count, char *hex_key_string, - char *hex_src_string, char *hex_dst_string ) +void des3_encrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des3_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des3_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); if( key_count == 2 ) mbedtls_des3_set2key_enc( &ctx, key_str ); @@ -181,9 +132,8 @@ void des3_encrypt_ecb( int key_count, char *hex_key_string, TEST_ASSERT( 0 ); TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); exit: mbedtls_des3_free( &ctx ); @@ -191,23 +141,16 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_decrypt_ecb( int key_count, char *hex_key_string, - char *hex_src_string, char *hex_dst_string ) +void des3_decrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des3_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des3_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); if( key_count == 2 ) mbedtls_des3_set2key_dec( &ctx, key_str ); @@ -217,9 +160,8 @@ void des3_decrypt_ecb( int key_count, char *hex_key_string, TEST_ASSERT( 0 ); TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); exit: mbedtls_des3_free( &ctx ); @@ -227,28 +169,18 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_encrypt_cbc( int key_count, char *hex_key_string, - char *hex_iv_string, char *hex_src_string, - char *hex_dst_string, int cbc_result ) +void des3_encrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len, + int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des3_context ctx; - int src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des3_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); if( key_count == 2 ) mbedtls_des3_set2key_enc( &ctx, key_str ); @@ -261,9 +193,8 @@ void des3_encrypt_cbc( int key_count, char *hex_key_string, if( cbc_result == 0 ) { - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); } exit: @@ -272,28 +203,18 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_decrypt_cbc( int key_count, char *hex_key_string, - char *hex_iv_string, char *hex_src_string, - char *hex_dst_string, int cbc_result ) +void des3_decrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t src_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len, + int cbc_result ) { - unsigned char key_str[100]; - unsigned char iv_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_des3_context ctx; - int src_len; - memset(key_str, 0x00, 100); - memset(iv_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); mbedtls_des3_init( &ctx ); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - src_len = unhexify( src_str, hex_src_string ); if( key_count == 2 ) mbedtls_des3_set2key_dec( &ctx, key_str ); @@ -306,9 +227,8 @@ void des3_decrypt_cbc( int key_count, char *hex_key_string, if( cbc_result == 0 ) { - hexify( dst_str, output, src_len ); - TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); } exit: @@ -317,7 +237,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des_key_parity_run() +void des_key_parity_run( ) { int i, j, cnt; unsigned char key[MBEDTLS_DES_KEY_SIZE]; @@ -360,7 +280,7 @@ void des_key_parity_run() /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void des_selftest() +void des_selftest( ) { TEST_ASSERT( mbedtls_des_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_dhm.function b/tests/suites/test_suite_dhm.function index 4fd8fff237..9a4c99c9a4 100644 --- a/tests/suites/test_suite_dhm.function +++ b/tests/suites/test_suite_dhm.function @@ -100,7 +100,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void dhm_file( char *filename, char *p, char *g, int len ) +void dhm_file( char * filename, char * p, char * g, int len ) { mbedtls_dhm_context ctx; mbedtls_mpi P, G; @@ -124,7 +124,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void dhm_selftest() +void dhm_selftest( ) { TEST_ASSERT( mbedtls_dhm_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_ecdh.function b/tests/suites/test_suite_ecdh.function index 4c6a97baf0..0b88e653f0 100644 --- a/tests/suites/test_suite_ecdh.function +++ b/tests/suites/test_suite_ecdh.function @@ -43,15 +43,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecdh_primitive_testvec( int id, char *dA_str, char *xA_str, char *yA_str, - char *dB_str, char *xB_str, char *yB_str, - char *z_str ) +void ecdh_primitive_testvec( int id, uint8_t * rnd_buf_A, + uint32_t rnd_buf_A_len, char * xA_str, + char * yA_str, uint8_t * rnd_buf_B, + uint32_t rnd_buf_B_len, char * xB_str, + char * yB_str, char * z_str ) { mbedtls_ecp_group grp; mbedtls_ecp_point qA, qB; mbedtls_mpi dA, dB, zA, zB, check; - unsigned char rnd_buf_A[MBEDTLS_ECP_MAX_BYTES]; - unsigned char rnd_buf_B[MBEDTLS_ECP_MAX_BYTES]; rnd_buf_info rnd_info_A, rnd_info_B; mbedtls_ecp_group_init( &grp ); @@ -62,7 +62,7 @@ void ecdh_primitive_testvec( int id, char *dA_str, char *xA_str, char *yA_str, TEST_ASSERT( mbedtls_ecp_group_load( &grp, id ) == 0 ); rnd_info_A.buf = rnd_buf_A; - rnd_info_A.length = unhexify( rnd_buf_A, dA_str ); + rnd_info_A.length = rnd_buf_A_len; /* Fix rnd_buf_A by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) @@ -78,7 +78,7 @@ void ecdh_primitive_testvec( int id, char *dA_str, char *xA_str, char *yA_str, } rnd_info_B.buf = rnd_buf_B; - rnd_info_B.length = unhexify( rnd_buf_B, dB_str ); + rnd_info_B.length = rnd_buf_B_len; /* Fix rnd_buf_B by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index b730953881..5398ab5bef 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -40,32 +40,29 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecdsa_prim_test_vectors( int id, char *d_str, char *xQ_str, char *yQ_str, - char *k_str, char *hash_str, char *r_str, - char *s_str, int result ) +void ecdsa_prim_test_vectors( int id, char * d_str, char * xQ_str, + char * yQ_str, uint8_t * rnd_buf, + uint32_t rnd_buf_len, uint8_t * hash, + uint32_t hlen, char * r_str, char * s_str, + int result ) { mbedtls_ecp_group grp; mbedtls_ecp_point Q; mbedtls_mpi d, r, s, r_check, s_check; - unsigned char hash[66], rnd_buf[66]; - size_t hlen; rnd_buf_info rnd_info; mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &Q ); mbedtls_mpi_init( &d ); mbedtls_mpi_init( &r ); mbedtls_mpi_init( &s ); mbedtls_mpi_init( &r_check ); mbedtls_mpi_init( &s_check ); - memset( hash, 0, sizeof( hash ) ); - memset( rnd_buf, 0, sizeof( rnd_buf ) ); TEST_ASSERT( mbedtls_ecp_group_load( &grp, id ) == 0 ); TEST_ASSERT( mbedtls_ecp_point_read_string( &Q, 16, xQ_str, yQ_str ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &d, 16, d_str ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &r_check, 16, r_str ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &s_check, 16, s_str ) == 0 ); - hlen = unhexify(hash, hash_str); rnd_info.buf = rnd_buf; - rnd_info.length = unhexify( rnd_buf, k_str ); + rnd_info.length = rnd_buf_len; /* Fix rnd_buf by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) @@ -99,8 +96,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECDSA_DETERMINISTIC */ -void ecdsa_det_test_vectors( int id, char *d_str, int md_alg, - char *msg, char *r_str, char *s_str ) +void ecdsa_det_test_vectors( int id, char * d_str, int md_alg, char * msg, + char * r_str, char * s_str ) { mbedtls_ecp_group grp; mbedtls_mpi d, r, s, r_check, s_check; diff --git a/tests/suites/test_suite_ecjpake.function b/tests/suites/test_suite_ecjpake.function index 5c8856b16d..e108a89a72 100644 --- a/tests/suites/test_suite_ecjpake.function +++ b/tests/suites/test_suite_ecjpake.function @@ -99,14 +99,14 @@ cleanup: */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void ecjpake_selftest() +void ecjpake_selftest( ) { TEST_ASSERT( mbedtls_ecjpake_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_one( int role, char *data, int ref_ret ) +void read_round_one( int role, char * data, int ref_ret ) { mbedtls_ecjpake_context ctx; @@ -133,7 +133,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_cli( char *data, int ref_ret ) +void read_round_two_cli( char * data, int ref_ret ) { mbedtls_ecjpake_context ctx; @@ -166,7 +166,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_srv( char *data, int ref_ret ) +void read_round_two_srv( char * data, int ref_ret ) { mbedtls_ecjpake_context ctx; diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 99780c0dec..dc6fac5cb0 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -10,7 +10,7 @@ */ /* BEGIN_CASE */ -void mbedtls_ecp_curve_info( int id, int tls_id, int size, char *name ) +void mbedtls_ecp_curve_info( int id, int tls_id, int size, char * name ) { const mbedtls_ecp_curve_info *by_id, *by_tls, *by_name; @@ -29,7 +29,8 @@ void mbedtls_ecp_curve_info( int id, int tls_id, int size, char *name ) /* END_CASE */ /* BEGIN_CASE */ -void ecp_check_pub( int grp_id, char *x_hex, char *y_hex, char *z_hex, int ret ) +void ecp_check_pub( int grp_id, char * x_hex, char * y_hex, char * z_hex, + int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; @@ -52,9 +53,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_test_vect( int id, char *dA_str, char *xA_str, char *yA_str, - char *dB_str, char *xB_str, char *yB_str, char *xZ_str, - char *yZ_str ) +void ecp_test_vect( int id, char * dA_str, char * xA_str, char * yA_str, + char * dB_str, char * xB_str, char * yB_str, + char * xZ_str, char * yZ_str ) { mbedtls_ecp_group grp; mbedtls_ecp_point R; @@ -107,8 +108,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_test_vec_x( int id, char *dA_hex, char *xA_hex, - char *dB_hex, char *xB_hex, char *xS_hex ) +void ecp_test_vec_x( int id, char * dA_hex, char * xA_hex, char * dB_hex, + char * xB_hex, char * xS_hex ) { mbedtls_ecp_group grp; mbedtls_ecp_point R; @@ -158,7 +159,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_fast_mod( int id, char *N_str ) +void ecp_fast_mod( int id, char * N_str ) { mbedtls_ecp_group grp; mbedtls_mpi N, R; @@ -191,16 +192,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_write_binary( int id, char *x, char *y, char *z, int format, - char *out, int blen, int ret ) +void ecp_write_binary( int id, char * x, char * y, char * z, int format, + uint8_t * out, uint32_t out_len, int blen, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; - unsigned char buf[256], str[512]; + unsigned char buf[256]; size_t olen; memset( buf, 0, sizeof( buf ) ); - memset( str, 0, sizeof( str ) ); mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &P ); @@ -215,8 +215,7 @@ void ecp_write_binary( int id, char *x, char *y, char *z, int format, if( ret == 0 ) { - hexify( str, buf, olen ); - TEST_ASSERT( strcasecmp( (char *) str, out ) == 0 ); + TEST_ASSERT( hexcmp( buf, out, olen, out_len ) == 0 ); } exit: @@ -225,16 +224,13 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_read_binary( int id, char *input, char *x, char *y, char *z, - int ret ) +void ecp_read_binary( int id, uint8_t * buf, uint32_t ilen, char * x, + char * y, char * z, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; mbedtls_mpi X, Y, Z; - int ilen; - unsigned char buf[256]; - memset( buf, 0, sizeof( buf ) ); mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &P ); mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); @@ -245,9 +241,7 @@ void ecp_read_binary( int id, char *input, char *x, char *y, char *z, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - ilen = unhexify( buf, input ); - TEST_ASSERT( mbedtls_ecp_point_read_binary( &grp, &P, buf, ilen ) == ret ); if( ret == 0 ) { @@ -263,17 +257,14 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_point( int id, char *input, char *x, char *y, char *z, - int ret ) +void mbedtls_ecp_tls_read_point( int id, uint8_t * buf, uint32_t ilen, + char * x, char * y, char * z, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; mbedtls_mpi X, Y, Z; - size_t ilen; - unsigned char buf[256]; const unsigned char *vbuf = buf; - memset( buf, 0, sizeof( buf ) ); mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &P ); mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); @@ -284,9 +275,7 @@ void mbedtls_ecp_tls_read_point( int id, char *input, char *x, char *y, char *z, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - ilen = unhexify( buf, input ); - TEST_ASSERT( mbedtls_ecp_tls_read_point( &grp, &P, &vbuf, ilen ) == ret ); if( ret == 0 ) { @@ -355,17 +344,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_group( char *record, int result, int bits ) +void mbedtls_ecp_tls_read_group( uint8_t * buf, uint32_t len, int result, + int bits ) { mbedtls_ecp_group grp; - unsigned char buf[10]; const unsigned char *vbuf = buf; - int len, ret; + int ret; mbedtls_ecp_group_init( &grp ); - memset( buf, 0x00, sizeof( buf ) ); - len = unhexify( buf, record ); ret = mbedtls_ecp_tls_read_group( &grp, &vbuf, len ); @@ -413,7 +400,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_check_privkey( int id, char *key_hex, int ret ) +void mbedtls_ecp_check_privkey( int id, char * key_hex, int ret ) { mbedtls_ecp_group grp; mbedtls_mpi d; @@ -433,8 +420,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_check_pub_priv( int id_pub, char *Qx_pub, char *Qy_pub, - int id, char *d, char *Qx, char *Qy, int ret ) +void mbedtls_ecp_check_pub_priv( int id_pub, char * Qx_pub, char * Qy_pub, + int id, char * d, char * Qx, char * Qy, + int ret ) { mbedtls_ecp_keypair pub, prv; @@ -506,7 +494,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void ecp_selftest() +void ecp_selftest( ) { TEST_ASSERT( mbedtls_ecp_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_entropy.function b/tests/suites/test_suite_entropy.function index 9930c0386f..c34c1854ac 100644 --- a/tests/suites/test_suite_entropy.function +++ b/tests/suites/test_suite_entropy.function @@ -125,7 +125,7 @@ static int read_nv_seed( unsigned char *buf, size_t buf_len ) */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ -void entropy_seed_file( char *path, int ret ) +void entropy_seed_file( char * path, int ret ) { mbedtls_entropy_context ctx; @@ -140,7 +140,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void entropy_too_many_sources( ) +void entropy_too_many_sources( ) { mbedtls_entropy_context ctx; size_t i; @@ -194,7 +194,7 @@ void entropy_func_len( int len, int ret ) /* END_CASE */ /* BEGIN_CASE */ -void entropy_source_fail( char *path ) +void entropy_source_fail( char * path ) { mbedtls_entropy_context ctx; int fail = -1; @@ -261,7 +261,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ -void nv_seed_file_create() +void nv_seed_file_create( ) { unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; @@ -272,7 +272,7 @@ void nv_seed_file_create() /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO:MBEDTLS_PLATFORM_NV_SEED_ALT */ -void entropy_nv_seed_std_io() +void entropy_nv_seed_std_io( ) { unsigned char io_seed[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char check_seed[MBEDTLS_ENTROPY_BLOCK_SIZE]; @@ -302,7 +302,7 @@ void entropy_nv_seed_std_io() /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_PLATFORM_NV_SEED_ALT:MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */ -void entropy_nv_seed( char *read_seed_str ) +void entropy_nv_seed( uint8_t * read_seed, uint32_t read_seed_len ) { mbedtls_sha512_context accumulator; mbedtls_entropy_context ctx; @@ -323,7 +323,6 @@ void entropy_nv_seed( char *read_seed_str ) memset( check_entropy, 3, MBEDTLS_ENTROPY_BLOCK_SIZE ); // Set the initial NV seed to read - unhexify( read_seed, read_seed_str ); memcpy( buffer_seed, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ); // Make sure we read/write NV seed from our buffers diff --git a/tests/suites/test_suite_error.function b/tests/suites/test_suite_error.function index c99b1fd15c..68831ce51d 100644 --- a/tests/suites/test_suite_error.function +++ b/tests/suites/test_suite_error.function @@ -8,7 +8,7 @@ */ /* BEGIN_CASE */ -void error_strerror( int code, char *result_str ) +void error_strerror( int code, char * result_str ) { char buf[500]; diff --git a/tests/suites/test_suite_gcm.function b/tests/suites/test_suite_gcm.function index 3d0830e98e..782a896879 100644 --- a/tests/suites/test_suite_gcm.function +++ b/tests/suites/test_suite_gcm.function @@ -51,49 +51,33 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_encrypt_and_tag( int cipher_id, - char *hex_key_string, char *hex_src_string, - char *hex_iv_string, char *hex_add_string, - char *hex_dst_string, int tag_len_bits, - char *hex_tag_string, int init_result ) +void gcm_encrypt_and_tag( int cipher_id, uint8_t * key_str, uint32_t key_len, + uint8_t * src_str, uint32_t pt_len, + uint8_t * iv_str, uint32_t iv_len, + uint8_t * add_str, uint32_t add_len, + uint8_t * hex_dst_string, + uint32_t hex_dst_string_len, int tag_len_bits, + uint8_t * hex_tag_string, + uint32_t hex_tag_string_len, int init_result ) { - unsigned char key_str[128]; - unsigned char src_str[128]; - unsigned char dst_str[257]; - unsigned char iv_str[128]; - unsigned char add_str[128]; - unsigned char tag_str[128]; unsigned char output[128]; unsigned char tag_output[16]; mbedtls_gcm_context ctx; - unsigned int key_len; - size_t pt_len, iv_len, add_len, tag_len = tag_len_bits / 8; + size_t tag_len = tag_len_bits / 8; mbedtls_gcm_init( &ctx ); - memset(key_str, 0x00, 128); - memset(src_str, 0x00, 128); - memset(dst_str, 0x00, 257); - memset(iv_str, 0x00, 128); - memset(add_str, 0x00, 128); - memset(tag_str, 0x00, 128); memset(output, 0x00, 128); memset(tag_output, 0x00, 16); - key_len = unhexify( key_str, hex_key_string ); - pt_len = unhexify( src_str, hex_src_string ); - iv_len = unhexify( iv_str, hex_iv_string ); - add_len = unhexify( add_str, hex_add_string ); TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str, key_len * 8 ) == init_result ); if( init_result == 0 ) { TEST_ASSERT( mbedtls_gcm_crypt_and_tag( &ctx, MBEDTLS_GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 ); - hexify( dst_str, output, pt_len ); - hexify( tag_str, tag_output, tag_len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); - TEST_ASSERT( strcmp( (char *) tag_str, hex_tag_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, pt_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( tag_output, hex_tag_string, tag_len, hex_tag_string_len ) == 0 ); } exit: @@ -102,39 +86,24 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_decrypt_and_verify( int cipher_id, - char *hex_key_string, char *hex_src_string, - char *hex_iv_string, char *hex_add_string, - int tag_len_bits, char *hex_tag_string, - char *pt_result, int init_result ) +void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, + uint32_t key_len, uint8_t * src_str, + uint32_t pt_len, uint8_t * iv_str, + uint32_t iv_len, uint8_t * add_str, + uint32_t add_len, int tag_len_bits, + uint8_t * tag_str, uint32_t tag_str_len, + uint8_t * pt_result, uint32_t pt_result_len, + int init_result ) { - unsigned char key_str[128]; - unsigned char src_str[128]; - unsigned char dst_str[257]; - unsigned char iv_str[128]; - unsigned char add_str[128]; - unsigned char tag_str[128]; unsigned char output[128]; mbedtls_gcm_context ctx; - unsigned int key_len; - size_t pt_len, iv_len, add_len, tag_len = tag_len_bits / 8; int ret; + size_t tag_len = tag_len_bits / 8; mbedtls_gcm_init( &ctx ); - memset(key_str, 0x00, 128); - memset(src_str, 0x00, 128); - memset(dst_str, 0x00, 257); - memset(iv_str, 0x00, 128); - memset(add_str, 0x00, 128); - memset(tag_str, 0x00, 128); memset(output, 0x00, 128); - key_len = unhexify( key_str, hex_key_string ); - pt_len = unhexify( src_str, hex_src_string ); - iv_len = unhexify( iv_str, hex_iv_string ); - add_len = unhexify( add_str, hex_add_string ); - unhexify( tag_str, hex_tag_string ); TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str, key_len * 8 ) == init_result ); if( init_result == 0 ) @@ -148,9 +117,8 @@ void gcm_decrypt_and_verify( int cipher_id, else { TEST_ASSERT( ret == 0 ); - hexify( dst_str, output, pt_len ); - TEST_ASSERT( strcmp( (char *) dst_str, pt_result ) == 0 ); + TEST_ASSERT( hexcmp( output, pt_result, pt_len, pt_result_len ) == 0 ); } } @@ -160,7 +128,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void gcm_selftest() +void gcm_selftest( ) { TEST_ASSERT( mbedtls_gcm_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_hmac_drbg.function b/tests/suites/test_suite_hmac_drbg.function index 21b300e7c9..cf1f3683aa 100644 --- a/tests/suites/test_suite_hmac_drbg.function +++ b/tests/suites/test_suite_hmac_drbg.function @@ -110,7 +110,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void hmac_drbg_seed_file( int md_alg, char *path, int ret ) +void hmac_drbg_seed_file( int md_alg, char * path, int ret ) { const mbedtls_md_info_t *md_info; mbedtls_hmac_drbg_context ctx; @@ -161,32 +161,23 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_no_reseed( int md_alg, - char *entropy_hex, char *custom_hex, - char *add1_hex, char *add2_hex, - char *output_hex ) +void hmac_drbg_no_reseed( int md_alg, uint8_t * entropy, + uint32_t entropy_len, uint8_t * custom, + uint32_t custom_len, uint8_t * add1, + uint32_t add1_len, uint8_t * add2, + uint32_t add2_len, uint8_t * output, + uint32_t out_len ) { unsigned char data[1024]; - unsigned char entropy[512]; - unsigned char custom[512]; - unsigned char add1[512]; - unsigned char add2[512]; - unsigned char output[512]; unsigned char my_output[512]; - size_t custom_len, add1_len, add2_len, out_len; entropy_ctx p_entropy; const mbedtls_md_info_t *md_info; mbedtls_hmac_drbg_context ctx; mbedtls_hmac_drbg_init( &ctx ); - memset( my_output, 0, sizeof my_output ); - custom_len = unhexify( custom, custom_hex ); - add1_len = unhexify( add1, add1_hex ); - add2_len = unhexify( add2, add2_hex ); - out_len = unhexify( output, output_hex ); - p_entropy.len = unhexify( entropy, entropy_hex ); p_entropy.p = entropy; + p_entropy.len = entropy_len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); @@ -221,33 +212,21 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_nopr( int md_alg, - char *entropy_hex, char *custom_hex, - char *add1_hex, char *add2_hex, char *add3_hex, - char *output_hex ) +void hmac_drbg_nopr( int md_alg, uint8_t * entropy, uint32_t entropy_len, + uint8_t * custom, uint32_t custom_len, uint8_t * add1, + uint32_t add1_len, uint8_t * add2, uint32_t add2_len, + uint8_t * add3, uint32_t add3_len, uint8_t * output, + uint32_t out_len ) { - unsigned char entropy[512]; - unsigned char custom[512]; - unsigned char add1[512]; - unsigned char add2[512]; - unsigned char add3[512]; - unsigned char output[512]; unsigned char my_output[512]; - size_t custom_len, add1_len, add2_len, add3_len, out_len; entropy_ctx p_entropy; const mbedtls_md_info_t *md_info; mbedtls_hmac_drbg_context ctx; mbedtls_hmac_drbg_init( &ctx ); - memset( my_output, 0, sizeof my_output ); - custom_len = unhexify( custom, custom_hex ); - add1_len = unhexify( add1, add1_hex ); - add2_len = unhexify( add2, add2_hex ); - add3_len = unhexify( add3, add3_hex ); - out_len = unhexify( output, output_hex ); - p_entropy.len = unhexify( entropy, entropy_hex ); p_entropy.p = entropy; + p_entropy.len = entropy_len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); @@ -268,31 +247,20 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_pr( int md_alg, - char *entropy_hex, char *custom_hex, - char *add1_hex, char *add2_hex, - char *output_hex ) +void hmac_drbg_pr( int md_alg, uint8_t * entropy, uint32_t entropy_len, + uint8_t * custom, uint32_t custom_len, uint8_t * add1, + uint32_t add1_len, uint8_t * add2, uint32_t add2_len, + uint8_t * output, uint32_t out_len ) { - unsigned char entropy[512]; - unsigned char custom[512]; - unsigned char add1[512]; - unsigned char add2[512]; - unsigned char output[512]; unsigned char my_output[512]; - size_t custom_len, add1_len, add2_len, out_len; entropy_ctx p_entropy; const mbedtls_md_info_t *md_info; mbedtls_hmac_drbg_context ctx; mbedtls_hmac_drbg_init( &ctx ); - memset( my_output, 0, sizeof my_output ); - custom_len = unhexify( custom, custom_hex ); - add1_len = unhexify( add1, add1_hex ); - add2_len = unhexify( add2, add2_hex ); - out_len = unhexify( output, output_hex ); - p_entropy.len = unhexify( entropy, entropy_hex ); p_entropy.p = entropy; + p_entropy.len = entropy_len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); @@ -313,7 +281,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void hmac_drbg_selftest( ) +void hmac_drbg_selftest( ) { TEST_ASSERT( mbedtls_hmac_drbg_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_md.function b/tests/suites/test_suite_md.function index 6ac834e1e0..a700b33e8f 100644 --- a/tests/suites/test_suite_md.function +++ b/tests/suites/test_suite_md.function @@ -8,7 +8,7 @@ */ /* BEGIN_CASE */ -void mbedtls_md_process( ) +void mbedtls_md_process( ) { const int *md_type_ptr; const mbedtls_md_info_t *info; @@ -40,7 +40,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void md_null_args( ) +void md_null_args( ) { mbedtls_md_context_t ctx; const mbedtls_md_info_t *info = mbedtls_md_info_from_type( *( mbedtls_md_list() ) ); @@ -103,7 +103,7 @@ void md_null_args( ) /* END_CASE */ /* BEGIN_CASE */ -void md_info( int md_type, char *md_name, int md_size ) +void md_info( int md_type, char * md_name, int md_size ) { const mbedtls_md_info_t *md_info; const int *md_type_ptr; @@ -126,17 +126,16 @@ void md_info( int md_type, char *md_name, int md_size ) /* END_CASE */ /* BEGIN_CASE */ -void md_text( char *text_md_name, char *text_src_string, char *hex_hash_string ) +void md_text( char * text_md_name, char * text_src_string, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; unsigned char src_str[1000]; - unsigned char hash_str[1000]; unsigned char output[100]; const mbedtls_md_info_t *md_info = NULL; memset( md_name, 0x00, 100 ); memset( src_str, 0x00, 1000 ); - memset( hash_str, 0x00, 1000 ); memset( output, 0x00, 100 ); strncpy( (char *) src_str, text_src_string, sizeof( src_str ) - 1 ); @@ -145,47 +144,40 @@ void md_text( char *text_md_name, char *text_src_string, char *hex_hash_string ) TEST_ASSERT( md_info != NULL ); TEST_ASSERT ( 0 == mbedtls_md( md_info, src_str, strlen( (char *) src_str ), output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void md_hex( char *text_md_name, char *hex_src_string, char *hex_hash_string ) +void md_hex( char * text_md_name, uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[100]; - int src_len; const mbedtls_md_info_t *md_info = NULL; memset( md_name, 0x00, 100 ); - memset( src_str, 0x00, 10000 ); - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); strncpy( (char *) md_name, text_md_name, sizeof( md_name ) - 1 ); md_info = mbedtls_md_info_from_string( md_name ); TEST_ASSERT( md_info != NULL ); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT ( 0 == mbedtls_md( md_info, src_str, src_len, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, + mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void md_text_multi( char *text_md_name, char *text_src_string, - char *hex_hash_string ) +void md_text_multi( char * text_md_name, char * text_src_string, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; unsigned char src_str[1000]; - unsigned char hash_str[1000]; unsigned char output[100]; int halfway, len; @@ -197,7 +189,6 @@ void md_text_multi( char *text_md_name, char *text_src_string, memset( md_name, 0x00, 100 ); memset( src_str, 0x00, 1000 ); - memset( hash_str, 0x00, 1000 ); memset( output, 0x00, 100 ); strncpy( (char *) src_str, text_src_string, sizeof(src_str) - 1 ); @@ -217,17 +208,15 @@ void md_text_multi( char *text_md_name, char *text_src_string, TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str + halfway, len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, + mbedtls_md_get_size( md_info ), hex_hash_string_len) == 0 ); /* Test clone */ - memset( hash_str, 0x00, 1000 ); memset( output, 0x00, 100 ); TEST_ASSERT ( 0 == mbedtls_md_update( &ctx_copy, src_str + halfway, len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx_copy, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -236,23 +225,19 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void md_hex_multi( char *text_md_name, char *hex_src_string, - char *hex_hash_string ) +void md_hex_multi( char * text_md_name, uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[100]; - int src_len, halfway; const mbedtls_md_info_t *md_info = NULL; mbedtls_md_context_t ctx, ctx_copy; + int halfway; mbedtls_md_init( &ctx ); mbedtls_md_init( &ctx_copy ); memset( md_name, 0x00, 100 ); - memset( src_str, 0x00, 10000 ); - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); strncpy( (char *) md_name, text_md_name, sizeof( md_name ) - 1 ); @@ -261,7 +246,6 @@ void md_hex_multi( char *text_md_name, char *hex_src_string, TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx, md_info, 0 ) ); TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx_copy, md_info, 0 ) ); - src_len = unhexify( src_str, hex_src_string ); halfway = src_len / 2; TEST_ASSERT ( 0 == mbedtls_md_starts( &ctx ) ); @@ -271,17 +255,14 @@ void md_hex_multi( char *text_md_name, char *hex_src_string, TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str + halfway, src_len - halfway) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); /* Test clone */ - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); TEST_ASSERT ( 0 == mbedtls_md_update( &ctx_copy, src_str + halfway, src_len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx_copy, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -290,56 +271,42 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_md_hmac( char *text_md_name, int trunc_size, char *hex_key_string, - char *hex_src_string, char *hex_hash_string ) +void mbedtls_md_hmac( char * text_md_name, int trunc_size, uint8_t * key_str, + uint32_t key_len, uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; - unsigned char src_str[10000]; - unsigned char key_str[10000]; - unsigned char hash_str[10000]; unsigned char output[100]; - int key_len, src_len; const mbedtls_md_info_t *md_info = NULL; memset( md_name, 0x00, 100 ); - memset( src_str, 0x00, 10000 ); - memset( key_str, 0x00, 10000 ); - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); strncpy( (char *) md_name, text_md_name, sizeof( md_name ) - 1 ); md_info = mbedtls_md_info_from_string( md_name ); TEST_ASSERT( md_info != NULL ); - key_len = unhexify( key_str, hex_key_string ); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT ( mbedtls_md_hmac( md_info, key_str, key_len, src_str, src_len, output ) == 0 ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strncmp( (char *) hash_str, hex_hash_string, trunc_size * 2 ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void md_hmac_multi( char *text_md_name, int trunc_size, char *hex_key_string, - char *hex_src_string, char *hex_hash_string ) +void md_hmac_multi( char * text_md_name, int trunc_size, uint8_t * key_str, + uint32_t key_len, uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { char md_name[100]; - unsigned char src_str[10000]; - unsigned char key_str[10000]; - unsigned char hash_str[10000]; unsigned char output[100]; - int key_len, src_len, halfway; const mbedtls_md_info_t *md_info = NULL; mbedtls_md_context_t ctx; + int halfway; mbedtls_md_init( &ctx ); memset( md_name, 0x00, 100 ); - memset( src_str, 0x00, 10000 ); - memset( key_str, 0x00, 10000 ); - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); strncpy( (char *) md_name, text_md_name, sizeof( md_name ) - 1 ); @@ -347,8 +314,6 @@ void md_hmac_multi( char *text_md_name, int trunc_size, char *hex_key_string, TEST_ASSERT( md_info != NULL ); TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx, md_info, 1 ) ); - key_len = unhexify( key_str, hex_key_string ); - src_len = unhexify( src_str, hex_src_string ); halfway = src_len / 2; TEST_ASSERT ( 0 == mbedtls_md_hmac_starts( &ctx, key_str, key_len ) ); @@ -357,11 +322,9 @@ void md_hmac_multi( char *text_md_name, int trunc_size, char *hex_key_string, TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strncmp( (char *) hash_str, hex_hash_string, trunc_size * 2 ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); /* Test again, for reset() */ - memset( hash_str, 0x00, 10000 ); memset( output, 0x00, 100 ); TEST_ASSERT ( 0 == mbedtls_md_hmac_reset( &ctx ) ); @@ -369,8 +332,7 @@ void md_hmac_multi( char *text_md_name, int trunc_size, char *hex_key_string, TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strncmp( (char *) hash_str, hex_hash_string, trunc_size * 2 ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -378,15 +340,15 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void mbedtls_md_file( char *text_md_name, char *filename, char *hex_hash_string ) +void mbedtls_md_file( char * text_md_name, char * filename, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len + ) { char md_name[100]; - unsigned char hash_str[1000]; unsigned char output[100]; const mbedtls_md_info_t *md_info = NULL; memset( md_name, 0x00, 100 ); - memset( hash_str, 0x00, 1000 ); memset( output, 0x00, 100 ); strncpy( (char *) md_name, text_md_name, sizeof( md_name ) - 1 ); @@ -394,8 +356,7 @@ void mbedtls_md_file( char *text_md_name, char *filename, char *hex_hash_string TEST_ASSERT( md_info != NULL ); TEST_ASSERT( mbedtls_md_file( md_info, filename, output ) == 0 ); - hexify( hash_str, output, mbedtls_md_get_size( md_info ) ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_mdx.function b/tests/suites/test_suite_mdx.function index 648a9cc35d..7fe5e06f74 100644 --- a/tests/suites/test_suite_mdx.function +++ b/tests/suites/test_suite_mdx.function @@ -6,116 +6,108 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_MD2_C */ -void md2_text( char *text_src_string, char *hex_hash_string ) +void md2_text( char * text_src_string, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { int ret; unsigned char src_str[100]; - unsigned char hash_str[33]; unsigned char output[16]; memset( src_str, 0x00, sizeof src_str ); - memset( hash_str, 0x00, sizeof hash_str ); memset( output, 0x00, sizeof output ); strncpy( (char *) src_str, text_src_string, sizeof(src_str) - 1 ); ret = mbedtls_md2_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ) ; - hexify( hash_str, output, sizeof output ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD4_C */ -void md4_text( char *text_src_string, char *hex_hash_string ) +void md4_text( char * text_src_string, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { int ret; unsigned char src_str[100]; - unsigned char hash_str[33]; unsigned char output[16]; memset( src_str, 0x00, sizeof src_str ); - memset( hash_str, 0x00, sizeof hash_str ); memset( output, 0x00, sizeof output ); strncpy( (char *) src_str, text_src_string, sizeof(src_str) - 1 ); ret = mbedtls_md4_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - hexify( hash_str, output, sizeof output ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD5_C */ -void md5_text( char *text_src_string, char *hex_hash_string ) +void md5_text( char * text_src_string, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { int ret; unsigned char src_str[100]; - unsigned char hash_str[33]; unsigned char output[16]; memset( src_str, 0x00, sizeof src_str ); - memset( hash_str, 0x00, sizeof hash_str ); memset( output, 0x00, sizeof output ); strncpy( (char *) src_str, text_src_string, sizeof(src_str) - 1 ); ret = mbedtls_md5_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - hexify( hash_str, output, sizeof output ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RIPEMD160_C */ -void ripemd160_text( char *text_src_string, char *hex_hash_string ) +void ripemd160_text( char * text_src_string, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { int ret; unsigned char src_str[100]; - unsigned char hash_str[41]; unsigned char output[20]; memset(src_str, 0x00, sizeof src_str); - memset(hash_str, 0x00, sizeof hash_str); memset(output, 0x00, sizeof output); strncpy( (char *) src_str, text_src_string, sizeof(src_str) - 1 ); ret = mbedtls_ripemd160_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - hexify( hash_str, output, sizeof output ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD2_C:MBEDTLS_SELF_TEST */ -void md2_selftest() +void md2_selftest( ) { TEST_ASSERT( mbedtls_md2_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD4_C:MBEDTLS_SELF_TEST */ -void md4_selftest() +void md4_selftest( ) { TEST_ASSERT( mbedtls_md4_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD5_C:MBEDTLS_SELF_TEST */ -void md5_selftest() +void md5_selftest( ) { TEST_ASSERT( mbedtls_md5_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RIPEMD160_C:MBEDTLS_SELF_TEST */ -void ripemd160_selftest() +void ripemd160_selftest( ) { TEST_ASSERT( mbedtls_ripemd160_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_memory_buffer_alloc.function b/tests/suites/test_suite_memory_buffer_alloc.function index 09684c1d41..bc034367a6 100644 --- a/tests/suites/test_suite_memory_buffer_alloc.function +++ b/tests/suites/test_suite_memory_buffer_alloc.function @@ -23,7 +23,7 @@ static int check_pointer( void *p ) /* END_SUITE_HELPERS */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void mbedtls_memory_buffer_alloc_self_test( ) +void mbedtls_memory_buffer_alloc_self_test( ) { TEST_ASSERT( mbedtls_memory_buffer_alloc_self_test( 1 ) == 0 ); } @@ -31,10 +31,9 @@ void mbedtls_memory_buffer_alloc_self_test( ) /* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */ void memory_buffer_alloc_free_alloc( int a_bytes, int b_bytes, int c_bytes, - int d_bytes, - int free_a, int free_b, int free_c, - int free_d, - int e_bytes, int f_bytes ) + int d_bytes, int free_a, int free_b, + int free_c, int free_d, int e_bytes, + int f_bytes ) { unsigned char buf[1024]; unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL, *ptr_d = NULL, @@ -190,7 +189,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MEMORY_DEBUG */ -void memory_buffer_alloc_oom_test() +void memory_buffer_alloc_oom_test( ) { unsigned char buf[1024]; unsigned char *ptr_a = NULL, *ptr_b = NULL, *ptr_c = NULL; diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function index 6ae27af5b1..da0d5e4150 100644 --- a/tests/suites/test_suite_mpi.function +++ b/tests/suites/test_suite_mpi.function @@ -8,7 +8,7 @@ */ /* BEGIN_CASE */ -void mpi_null( ) +void mpi_null( ) { mbedtls_mpi X, Y, Z; @@ -27,8 +27,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mpi_read_write_string( int radix_X, char *input_X, int radix_A, - char *input_A, int output_size, int result_read, +void mpi_read_write_string( int radix_X, char * input_X, int radix_A, + char * input_A, int output_size, int result_read, int result_write ) { mbedtls_mpi X; @@ -53,17 +53,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_read_binary( char *input_X, int radix_A, char *input_A ) +void mbedtls_mpi_read_binary( uint8_t * buf, uint32_t input_len, int radix_A, + char * input_A ) { mbedtls_mpi X; unsigned char str[1000]; - unsigned char buf[1000]; size_t len; - size_t input_len; mbedtls_mpi_init( &X ); - input_len = unhexify( buf, input_X ); TEST_ASSERT( mbedtls_mpi_read_binary( &X, buf, input_len ) == 0 ); TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, (char *) str, sizeof( str ), &len ) == 0 ); @@ -75,16 +73,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_write_binary( int radix_X, char *input_X, char *input_A, - int output_size, int result ) +void mbedtls_mpi_write_binary( int radix_X, char * input_X, uint8_t * input_A, + uint32_t input_A_len, int output_size, + int result ) { mbedtls_mpi X; - unsigned char str[1000]; unsigned char buf[1000]; size_t buflen; memset( buf, 0x00, 1000 ); - memset( str, 0x00, 1000 ); mbedtls_mpi_init( &X ); @@ -97,9 +94,8 @@ void mbedtls_mpi_write_binary( int radix_X, char *input_X, char *input_A, TEST_ASSERT( mbedtls_mpi_write_binary( &X, buf, buflen ) == result ); if( result == 0) { - hexify( str, buf, buflen ); - TEST_ASSERT( strcasecmp( (char *) str, input_A ) == 0 ); + TEST_ASSERT( hexcmp( buf, input_A, buflen, input_A_len ) == 0 ); } exit: @@ -108,18 +104,16 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void mbedtls_mpi_read_file( int radix_X, char *input_file, char *input_A, - int result ) +void mbedtls_mpi_read_file( int radix_X, char * input_file, uint8_t * input_A, + uint32_t input_A_len, int result ) { mbedtls_mpi X; - unsigned char str[1000]; unsigned char buf[1000]; size_t buflen; FILE *file; int ret; memset( buf, 0x00, 1000 ); - memset( str, 0x00, 1000 ); mbedtls_mpi_init( &X ); @@ -134,9 +128,8 @@ void mbedtls_mpi_read_file( int radix_X, char *input_file, char *input_A, buflen = mbedtls_mpi_size( &X ); TEST_ASSERT( mbedtls_mpi_write_binary( &X, buf, buflen ) == 0 ); - hexify( str, buf, buflen ); - TEST_ASSERT( strcasecmp( (char *) str, input_A ) == 0 ); + TEST_ASSERT( hexcmp( buf, input_A, buflen, input_A_len ) == 0 ); } exit: @@ -145,8 +138,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void mbedtls_mpi_write_file( int radix_X, char *input_X, int output_radix, - char *output_file ) +void mbedtls_mpi_write_file( int radix_X, char * input_X, int output_radix, + char * output_file ) { mbedtls_mpi X, Y; FILE *file_out, *file_in; @@ -176,7 +169,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_get_bit( int radix_X, char *input_X, int pos, int val ) +void mbedtls_mpi_get_bit( int radix_X, char * input_X, int pos, int val ) { mbedtls_mpi X; mbedtls_mpi_init( &X ); @@ -189,8 +182,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_set_bit( int radix_X, char *input_X, int pos, int val, - int radix_Y, char *output_Y, int result ) +void mbedtls_mpi_set_bit( int radix_X, char * input_X, int pos, int val, + int radix_Y, char * output_Y, int result ) { mbedtls_mpi X, Y; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); @@ -210,7 +203,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_lsb( int radix_X, char *input_X, int nr_bits ) +void mbedtls_mpi_lsb( int radix_X, char * input_X, int nr_bits ) { mbedtls_mpi X; mbedtls_mpi_init( &X ); @@ -224,7 +217,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_bitlen( int radix_X, char *input_X, int nr_bits ) +void mbedtls_mpi_bitlen( int radix_X, char * input_X, int nr_bits ) { mbedtls_mpi X; mbedtls_mpi_init( &X ); @@ -238,8 +231,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_gcd( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A ) +void mbedtls_mpi_gcd( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi A, X, Y, Z; mbedtls_mpi_init( &A ); mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); @@ -270,8 +263,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_cmp_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int input_A ) +void mbedtls_mpi_cmp_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int input_A ) { mbedtls_mpi X, Y; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); @@ -286,8 +279,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_cmp_abs( int radix_X, char *input_X, int radix_Y, char *input_Y, - int input_A ) +void mbedtls_mpi_cmp_abs( int radix_X, char * input_X, int radix_Y, + char * input_Y, int input_A ) { mbedtls_mpi X, Y; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); @@ -354,8 +347,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_safe_cond_assign( int x_sign, char *x_str, - int y_sign, char *y_str ) +void mbedtls_mpi_safe_cond_assign( int x_sign, char * x_str, int y_sign, + char * y_str ) { mbedtls_mpi X, Y, XX; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &XX ); @@ -378,8 +371,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_safe_cond_swap( int x_sign, char *x_str, - int y_sign, char *y_str ) +void mbedtls_mpi_safe_cond_swap( int x_sign, char * x_str, int y_sign, + char * y_str ) { mbedtls_mpi X, Y, XX, YY; @@ -409,7 +402,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_swap( int input_X, int input_Y ) +void mbedtls_mpi_swap( int input_X, int input_Y ) { mbedtls_mpi X, Y, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &A ); @@ -429,8 +422,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_add_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A ) +void mbedtls_mpi_add_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -447,7 +440,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_add_mpi_inplace( int radix_X, char *input_X, int radix_A, char *input_A ) +void mbedtls_mpi_add_mpi_inplace( int radix_X, char * input_X, int radix_A, + char * input_A ) { mbedtls_mpi X, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &A ); @@ -473,8 +467,8 @@ exit: /* BEGIN_CASE */ -void mbedtls_mpi_add_abs( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A ) +void mbedtls_mpi_add_abs( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -491,8 +485,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mpi_add_abs_add_first( int radix_X, char *input_X, int radix_Y, - char *input_Y, int radix_A, char *input_A ) +void mpi_add_abs_add_first( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &A ); @@ -509,8 +503,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mpi_add_abs_add_second( int radix_X, char *input_X, int radix_Y, - char *input_Y, int radix_A, char *input_A ) +void mpi_add_abs_add_second( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &A ); @@ -527,8 +521,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_add_int( int radix_X, char *input_X, int input_Y, int radix_A, - char *input_A ) +void mbedtls_mpi_add_int( int radix_X, char * input_X, int input_Y, + int radix_A, char * input_A ) { mbedtls_mpi X, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -544,8 +538,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_sub_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A ) +void mbedtls_mpi_sub_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -562,8 +556,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_sub_abs( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A, int sub_result ) +void mbedtls_mpi_sub_abs( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A, + int sub_result ) { mbedtls_mpi X, Y, Z, A; int res; @@ -584,8 +579,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_sub_int( int radix_X, char *input_X, int input_Y, int radix_A, - char *input_A ) +void mbedtls_mpi_sub_int( int radix_X, char * input_X, int input_Y, + int radix_A, char * input_A ) { mbedtls_mpi X, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -601,8 +596,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_mul_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A ) +void mbedtls_mpi_mul_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A ) { mbedtls_mpi X, Y, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Y ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -619,8 +614,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_mul_int( int radix_X, char *input_X, int input_Y, int radix_A, - char *input_A, char *result_comparison ) +void mbedtls_mpi_mul_int( int radix_X, char * input_X, int input_Y, + int radix_A, char * input_A, + char * result_comparison ) { mbedtls_mpi X, Z, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &Z ); mbedtls_mpi_init( &A ); @@ -641,9 +637,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_div_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A, int radix_B, char *input_B, - int div_result ) +void mbedtls_mpi_div_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A, + int radix_B, char * input_B, int div_result ) { mbedtls_mpi X, Y, Q, R, A, B; int res; @@ -669,8 +665,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_div_int( int radix_X, char *input_X, int input_Y, int radix_A, - char *input_A, int radix_B, char *input_B, int div_result ) +void mbedtls_mpi_div_int( int radix_X, char * input_X, int input_Y, + int radix_A, char * input_A, int radix_B, + char * input_B, int div_result ) { mbedtls_mpi X, Q, R, A, B; int res; @@ -695,8 +692,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_mod_mpi( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A, int div_result ) +void mbedtls_mpi_mod_mpi( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A, + int div_result ) { mbedtls_mpi X, Y, A; int res; @@ -718,8 +716,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_mod_int( int radix_X, char *input_X, int input_Y, int input_A, - int div_result ) +void mbedtls_mpi_mod_int( int radix_X, char * input_X, int input_Y, + int input_A, int div_result ) { mbedtls_mpi X; int res; @@ -740,9 +738,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_exp_mod( int radix_A, char *input_A, int radix_E, char *input_E, - int radix_N, char *input_N, int radix_RR, char *input_RR, - int radix_X, char *input_X, int div_result ) +void mbedtls_mpi_exp_mod( int radix_A, char * input_A, int radix_E, + char * input_E, int radix_N, char * input_N, + int radix_RR, char * input_RR, int radix_X, + char * input_X, int div_result ) { mbedtls_mpi A, E, N, RR, Z, X; int res; @@ -771,8 +770,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_inv_mod( int radix_X, char *input_X, int radix_Y, char *input_Y, - int radix_A, char *input_A, int div_result ) +void mbedtls_mpi_inv_mod( int radix_X, char * input_X, int radix_Y, + char * input_Y, int radix_A, char * input_A, + int div_result ) { mbedtls_mpi X, Y, Z, A; int res; @@ -794,7 +794,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_GENPRIME */ -void mbedtls_mpi_is_prime( int radix_X, char *input_X, int div_result ) +void mbedtls_mpi_is_prime( int radix_X, char * input_X, int div_result ) { mbedtls_mpi X; int res; @@ -842,8 +842,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_shift_l( int radix_X, char *input_X, int shift_X, int radix_A, - char *input_A) +void mbedtls_mpi_shift_l( int radix_X, char * input_X, int shift_X, + int radix_A, char * input_A ) { mbedtls_mpi X, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &A ); @@ -859,8 +859,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_shift_r( int radix_X, char *input_X, int shift_X, int radix_A, - char *input_A ) +void mbedtls_mpi_shift_r( int radix_X, char * input_X, int shift_X, + int radix_A, char * input_A ) { mbedtls_mpi X, A; mbedtls_mpi_init( &X ); mbedtls_mpi_init( &A ); @@ -876,7 +876,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void mpi_selftest() +void mpi_selftest( ) { TEST_ASSERT( mbedtls_mpi_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_pem.function b/tests/suites/test_suite_pem.function index c24595d47c..222d581c0a 100644 --- a/tests/suites/test_suite_pem.function +++ b/tests/suites/test_suite_pem.function @@ -6,16 +6,13 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ -void mbedtls_pem_write_buffer( char *start, char *end, char *buf_str, char *result_str ) +void mbedtls_pem_write_buffer( char * start, char * end, uint8_t * buf, + uint32_t buf_len, char * result_str ) { - unsigned char buf[5000]; unsigned char *check_buf = NULL; int ret; - size_t buf_len, olen = 0, olen2 = 0; + size_t olen = 0, olen2 = 0; - memset( buf, 0, sizeof( buf ) ); - - buf_len = unhexify( buf, buf_str ); ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, NULL, 0, &olen ); TEST_ASSERT( ret == MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL ); @@ -23,7 +20,6 @@ void mbedtls_pem_write_buffer( char *start, char *end, char *buf_str, char *resu check_buf = (unsigned char *) mbedtls_calloc( 1, olen ); TEST_ASSERT( check_buf != NULL ); - memset( check_buf, 0, olen ); ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, check_buf, olen, &olen2 ); TEST_ASSERT( olen2 <= olen ); diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index c0c987d5c3..4219c9d8d3 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -70,7 +70,7 @@ size_t mbedtls_rsa_key_len_func( void *ctx ) */ /* BEGIN_CASE */ -void pk_utils( int type, int size, int len, char *name ) +void pk_utils( int type, int size, int len, char * name ) { mbedtls_pk_context pk; @@ -91,7 +91,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_PK_PARSE_C:MBEDTLS_FS_IO */ -void mbedtls_pk_check_pair( char *pub_file, char *prv_file, int ret ) +void mbedtls_pk_check_pair( char * pub_file, char * prv_file, int ret ) { mbedtls_pk_context pub, prv, alt; @@ -121,22 +121,19 @@ void mbedtls_pk_check_pair( char *pub_file, char *prv_file, int ret ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_test_vec( char *message_hex_string, int digest, - int mod, int radix_N, char *input_N, int radix_E, - char *input_E, char *result_hex_str, int result ) +void pk_rsa_verify_test_vec( uint8_t * message_str, uint32_t msg_len, + int digest, int mod, int radix_N, char * input_N, + int radix_E, char * input_E, + uint8_t * result_str, uint32_t result_str_len, + int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context *rsa; mbedtls_pk_context pk; - int msg_len; mbedtls_pk_init( &pk ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( MBEDTLS_PK_RSA ) ) == 0 ); rsa = mbedtls_pk_rsa( pk ); @@ -145,8 +142,6 @@ void pk_rsa_verify_test_vec( char *message_hex_string, int digest, TEST_ASSERT( mbedtls_mpi_read_string( &rsa->N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &rsa->E, radix_E, input_E ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); @@ -160,27 +155,23 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_ext_test_vec( char *message_hex_string, int digest, - int mod, int radix_N, char *input_N, int radix_E, - char *input_E, char *result_hex_str, - int pk_type, int mgf1_hash_id, int salt_len, - int result ) +void pk_rsa_verify_ext_test_vec( uint8_t * message_str, uint32_t msg_len, + int digest, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + uint8_t * result_str, + uint32_t result_str_len, int pk_type, + int mgf1_hash_id, int salt_len, int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context *rsa; mbedtls_pk_context pk; mbedtls_pk_rsassa_pss_options pss_opts; void *options; - int msg_len; size_t hash_len; mbedtls_pk_init( &pk ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( MBEDTLS_PK_RSA ) ) == 0 ); rsa = mbedtls_pk_rsa( pk ); @@ -189,8 +180,6 @@ void pk_rsa_verify_ext_test_vec( char *message_hex_string, int digest, TEST_ASSERT( mbedtls_mpi_read_string( &rsa->N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &rsa->E, radix_E, input_E ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( digest != MBEDTLS_MD_NONE ) { @@ -226,19 +215,15 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECDSA_C */ -void pk_ec_test_vec( int type, int id, char *key_str, - char *hash_str, char * sig_str, int ret ) +void pk_ec_test_vec( int type, int id, uint8_t * key, uint32_t key_len, + uint8_t * hash, uint32_t hash_len, uint8_t * sig, + uint32_t sig_len, int ret ) { mbedtls_pk_context pk; mbedtls_ecp_keypair *eckey; - unsigned char hash[100], sig[500], key[500]; - size_t hash_len, sig_len, key_len; mbedtls_pk_init( &pk ); - memset( hash, 0, sizeof( hash ) ); hash_len = unhexify(hash, hash_str); - memset( sig, 0, sizeof( sig ) ); sig_len = unhexify(sig, sig_str); - memset( key, 0, sizeof( key ) ); key_len = unhexify(key, key_str); TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( type ) ) == 0 ); @@ -284,26 +269,20 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_encrypt_test_vec( char *message_hex, int mod, - int radix_N, char *input_N, - int radix_E, char *input_E, - char *result_hex, int ret ) +void pk_rsa_encrypt_test_vec( uint8_t * message, uint32_t msg_len, int mod, + int radix_N, char * input_N, int radix_E, + char * input_E, uint8_t * result, + uint32_t res_len, int ret ) { - unsigned char message[1000]; unsigned char output[1000]; - unsigned char result[1000]; - size_t msg_len, olen, res_len; rnd_pseudo_info rnd_info; mbedtls_rsa_context *rsa; mbedtls_pk_context pk; + size_t olen; memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); - memset( message, 0, sizeof( message ) ); memset( output, 0, sizeof( output ) ); - memset( result, 0, sizeof( result ) ); - msg_len = unhexify( message, message_hex ); - res_len = unhexify( result, result_hex ); mbedtls_pk_init( &pk ); TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( MBEDTLS_PK_RSA ) ) == 0 ); @@ -325,32 +304,25 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_decrypt_test_vec( char *cipher_hex, int mod, - int radix_P, char *input_P, - int radix_Q, char *input_Q, - int radix_N, char *input_N, - int radix_E, char *input_E, - char *clear_hex, int ret ) +void pk_rsa_decrypt_test_vec( uint8_t * cipher, uint32_t cipher_len, int mod, + int radix_P, char * input_P, int radix_Q, + char * input_Q, int radix_N, char * input_N, + int radix_E, char * input_E, uint8_t * clear, + uint32_t clear_len, int ret ) { - unsigned char clear[1000]; unsigned char output[1000]; - unsigned char cipher[1000]; - size_t clear_len, olen, cipher_len; rnd_pseudo_info rnd_info; mbedtls_mpi N, P, Q, E; mbedtls_rsa_context *rsa; mbedtls_pk_context pk; + size_t olen; mbedtls_pk_init( &pk ); mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); - memset( clear, 0, sizeof( clear ) ); - memset( cipher, 0, sizeof( cipher ) ); - clear_len = unhexify( clear, clear_hex ); - cipher_len = unhexify( cipher, cipher_hex ); /* init pk-rsa context */ TEST_ASSERT( mbedtls_pk_setup( &pk, mbedtls_pk_info_from_type( MBEDTLS_PK_RSA ) ) == 0 ); @@ -453,7 +425,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_PK_RSA_ALT_SUPPORT */ -void pk_rsa_alt( ) +void pk_rsa_alt( ) { /* * An rsa_alt context can only do private operations (decrypt, sign). diff --git a/tests/suites/test_suite_pkcs1_v15.function b/tests/suites/test_suite_pkcs1_v15.function index 7f8b1c82ef..47539ca322 100644 --- a/tests/suites/test_suite_pkcs1_v15.function +++ b/tests/suites/test_suite_pkcs1_v15.function @@ -9,28 +9,24 @@ */ /* BEGIN_CASE */ -void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char *input_N, int radix_E, - char *input_E, int hash, - char *message_hex_string, char *seed, - char *result_hex_str, int result ) +void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char * input_N, + int radix_E, char * input_E, int hash, + uint8_t * message_str, uint32_t msg_len, + uint8_t * rnd_buf, uint32_t rnd_buf_len, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; - unsigned char rnd_buf[1000]; mbedtls_rsa_context ctx; - size_t msg_len; rnd_buf_info info; mbedtls_mpi N, E; - info.length = unhexify( rnd_buf, seed ); info.buf = rnd_buf; + info.length = rnd_buf_len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, hash ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -38,14 +34,12 @@ void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char *input_N, int radix_E, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -55,15 +49,14 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char *input_P, - int radix_Q, char *input_Q, int radix_N, - char *input_N, int radix_E, char *input_E, - int hash, char *result_hex_str, char *seed, - char *message_hex_string, int result ) +void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char * input_P, + int radix_Q, char * input_Q, int radix_N, + char * input_N, int radix_E, char * input_E, + int hash, uint8_t * result_hex_str, uint32_t result_hex_str_len, + char * seed, uint8_t * message_str, uint32_t message_str_len, + int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; size_t output_len; rnd_pseudo_info rnd_info; @@ -74,9 +67,7 @@ void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char *input_P, mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, hash ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); @@ -89,14 +80,12 @@ void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char *input_P, TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, 1000 ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strncasecmp( (char *) output_str, result_hex_str, strlen( result_hex_str ) ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len) == 0 ); } exit: @@ -107,33 +96,29 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsassa_v15_sign( int mod, int radix_P, char *input_P, int radix_Q, - char *input_Q, int radix_N, char *input_N, - int radix_E, char *input_E, int digest, int hash, - char *message_hex_string, char *salt, - char *result_hex_str, int result ) +void pkcs1_rsassa_v15_sign( int mod, int radix_P, char * input_P, int radix_Q, + char * input_Q, int radix_N, char * input_N, + int radix_E, char * input_E, int digest, int hash, + uint8_t * message_str, uint32_t msg_len, + uint8_t * rnd_buf, uint32_t rnd_buf_len, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; - unsigned char rnd_buf[1000]; mbedtls_rsa_context ctx; mbedtls_mpi N, P, Q, E; - size_t msg_len; rnd_buf_info info; - info.length = unhexify( rnd_buf, salt ); info.buf = rnd_buf; + info.length = rnd_buf_len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, hash ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Q, radix_Q, input_Q ) == 0 ); @@ -145,7 +130,6 @@ void pkcs1_rsassa_v15_sign( int mod, int radix_P, char *input_P, int radix_Q, TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); @@ -153,9 +137,8 @@ void pkcs1_rsassa_v15_sign( int mod, int radix_P, char *input_P, int radix_Q, TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PRIVATE, digest, 0, hash_result, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -166,24 +149,21 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsassa_v15_verify( int mod, int radix_N, char *input_N, int radix_E, - char *input_E, int digest, int hash, - char *message_hex_string, char *salt, - char *result_hex_str, int result ) +void pkcs1_rsassa_v15_verify( int mod, int radix_N, char * input_N, + int radix_E, char * input_E, int digest, + int hash, uint8_t * message_str, + uint32_t msg_len, char * salt, + uint8_t * result_str, uint32_t result_str_len, + int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context ctx; - size_t msg_len; mbedtls_mpi N, E; ((void) salt); mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, hash ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -191,8 +171,6 @@ void pkcs1_rsassa_v15_verify( int mod, int radix_N, char *input_N, int radix_E, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function index 50da2ff1bb..5fdca81282 100644 --- a/tests/suites/test_suite_pkcs1_v21.function +++ b/tests/suites/test_suite_pkcs1_v21.function @@ -9,28 +9,24 @@ */ /* BEGIN_CASE */ -void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char *input_N, int radix_E, - char *input_E, int hash, - char *message_hex_string, char *seed, - char *result_hex_str, int result ) +void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char * input_N, + int radix_E, char * input_E, int hash, + uint8_t * message_str, uint32_t msg_len, + uint8_t * rnd_buf, uint32_t rnd_buf_len, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; - unsigned char rnd_buf[1000]; mbedtls_rsa_context ctx; - size_t msg_len; rnd_buf_info info; mbedtls_mpi N, E; - info.length = unhexify( rnd_buf, seed ); info.buf = rnd_buf; + info.length = rnd_buf_len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -38,14 +34,12 @@ void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char *input_N, int radix_E, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -55,15 +49,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char *input_P, - int radix_Q, char *input_Q, int radix_N, - char *input_N, int radix_E, char *input_E, - int hash, char *result_hex_str, char *seed, - char *message_hex_string, int result ) +void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char * input_P, + int radix_Q, char * input_Q, int radix_N, + char * input_N, int radix_E, char * input_E, + int hash, uint8_t * result_hex_str, + uint32_t result_hex_str_len, char * seed, + uint8_t * message_str, + uint32_t message_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; size_t output_len; rnd_pseudo_info rnd_info; @@ -75,9 +69,7 @@ void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char *input_P, mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); @@ -90,14 +82,12 @@ void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char *input_P, TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, 1000 ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strncasecmp( (char *) output_str, result_hex_str, strlen( result_hex_str ) ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -108,33 +98,29 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsassa_pss_sign( int mod, int radix_P, char *input_P, int radix_Q, - char *input_Q, int radix_N, char *input_N, - int radix_E, char *input_E, int digest, int hash, - char *message_hex_string, char *salt, - char *result_hex_str, int result ) +void pkcs1_rsassa_pss_sign( int mod, int radix_P, char * input_P, int radix_Q, + char * input_Q, int radix_N, char * input_N, + int radix_E, char * input_E, int digest, int hash, + uint8_t * message_str, uint32_t msg_len, + uint8_t * rnd_buf, uint32_t rnd_buf_len, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; - unsigned char rnd_buf[1000]; mbedtls_rsa_context ctx; - size_t msg_len; rnd_buf_info info; mbedtls_mpi N, P, Q, E; - info.length = unhexify( rnd_buf, salt ); info.buf = rnd_buf; + info.length = rnd_buf_len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Q, radix_Q, input_Q ) == 0 ); @@ -146,7 +132,6 @@ void pkcs1_rsassa_pss_sign( int mod, int radix_P, char *input_P, int radix_Q, TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, @@ -156,9 +141,8 @@ void pkcs1_rsassa_pss_sign( int mod, int radix_P, char *input_P, int radix_Q, digest, 0, hash_result, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -169,24 +153,21 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsassa_pss_verify( int mod, int radix_N, char *input_N, int radix_E, - char *input_E, int digest, int hash, - char *message_hex_string, char *salt, - char *result_hex_str, int result ) +void pkcs1_rsassa_pss_verify( int mod, int radix_N, char * input_N, + int radix_E, char * input_E, int digest, + int hash, uint8_t * message_str, + uint32_t msg_len, char * salt, + uint8_t * result_str, uint32_t result_str_len, + int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context ctx; - size_t msg_len; mbedtls_mpi N, E; ((void) salt); mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -195,8 +176,6 @@ void pkcs1_rsassa_pss_verify( int mod, int radix_N, char *input_N, int radix_E, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, @@ -212,28 +191,23 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void pkcs1_rsassa_pss_verify_ext( int mod, - int radix_N, char *input_N, - int radix_E, char *input_E, +void pkcs1_rsassa_pss_verify_ext( int mod, int radix_N, char * input_N, + int radix_E, char * input_E, int msg_digest_id, int ctx_hash, int mgf_hash, int salt_len, - char *message_hex_string, - char *result_hex_str, - int result_simple, + uint8_t * message_str, uint32_t msg_len, + uint8_t * result_str, + uint32_t result_str_len, int result_simple, int result_full ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context ctx; - size_t msg_len, hash_len; + size_t hash_len; mbedtls_mpi N, E; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, ctx_hash ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -242,8 +216,6 @@ void pkcs1_rsassa_pss_verify_ext( int mod, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( ( mod + 7 ) / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( msg_digest_id != MBEDTLS_MD_NONE ) { diff --git a/tests/suites/test_suite_pkcs5.function b/tests/suites/test_suite_pkcs5.function index 98546cb731..29e87cbfe2 100644 --- a/tests/suites/test_suite_pkcs5.function +++ b/tests/suites/test_suite_pkcs5.function @@ -8,38 +8,25 @@ */ /* BEGIN_CASE */ -void pbkdf2_hmac( int hash, char *hex_password_string, - char *hex_salt_string, int it_cnt, int key_len, - char *result_key_string ) +void pbkdf2_hmac( int hash, uint8_t * pw_str, uint32_t pw_len, + uint8_t * salt_str, uint32_t salt_len, int it_cnt, + int key_len, uint8_t * result_key_string, + uint32_t result_key_string_len ) { - unsigned char pw_str[100]; - unsigned char salt_str[100]; - unsigned char dst_str[200]; - mbedtls_md_context_t ctx; const mbedtls_md_info_t *info; - int pw_len, salt_len; unsigned char key[100]; mbedtls_md_init( &ctx ); - memset(pw_str, 0x00, sizeof(pw_str)); - memset(salt_str, 0x00, sizeof(salt_str)); - memset(dst_str, 0x00, sizeof(dst_str)); - - pw_len = unhexify( pw_str, hex_password_string ); - salt_len = unhexify( salt_str, hex_salt_string ); - - info = mbedtls_md_info_from_type( hash ); TEST_ASSERT( info != NULL ); TEST_ASSERT( mbedtls_md_setup( &ctx, info, 1 ) == 0 ); TEST_ASSERT( mbedtls_pkcs5_pbkdf2_hmac( &ctx, pw_str, pw_len, salt_str, salt_len, it_cnt, key_len, key ) == 0 ); - hexify( dst_str, key, key_len ); - TEST_ASSERT( strcmp( (char *) dst_str, result_key_string ) == 0 ); + TEST_ASSERT( hexcmp( key, result_key_string, key_len, result_key_string_len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -80,7 +67,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void pkcs5_selftest( ) +void pkcs5_selftest( ) { TEST_ASSERT( mbedtls_pkcs5_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_pkparse.function b/tests/suites/test_suite_pkparse.function index 94d25e7eb0..8607305690 100644 --- a/tests/suites/test_suite_pkparse.function +++ b/tests/suites/test_suite_pkparse.function @@ -10,7 +10,7 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_FS_IO */ -void pk_parse_keyfile_rsa( char *key_file, char *password, int result ) +void pk_parse_keyfile_rsa( char * key_file, char * password, int result ) { mbedtls_pk_context ctx; int res; @@ -39,7 +39,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C:MBEDTLS_FS_IO */ -void pk_parse_public_keyfile_rsa( char *key_file, int result ) +void pk_parse_public_keyfile_rsa( char * key_file, int result ) { mbedtls_pk_context ctx; int res; @@ -64,7 +64,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_ECP_C */ -void pk_parse_public_keyfile_ec( char *key_file, int result ) +void pk_parse_public_keyfile_ec( char * key_file, int result ) { mbedtls_pk_context ctx; int res; @@ -89,7 +89,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_ECP_C */ -void pk_parse_keyfile_ec( char *key_file, char *password, int result ) +void pk_parse_keyfile_ec( char * key_file, char * password, int result ) { mbedtls_pk_context ctx; int res; @@ -113,21 +113,18 @@ exit: } /* END_CASE */ -/* BEGIN_CASE */ -void pk_parse_key( char *key_data, char *result_str, int result ) +/* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ +void pk_parse_key( uint8_t * buf, uint32_t data_len, char * result_str, + int result ) { mbedtls_pk_context pk; - unsigned char buf[2000]; unsigned char output[2000]; - int data_len; ((void) result_str); mbedtls_pk_init( &pk ); - memset( buf, 0, 2000 ); memset( output, 0, 2000 ); - data_len = unhexify( buf, key_data ); TEST_ASSERT( mbedtls_pk_parse_key( &pk, buf, data_len, NULL, 0 ) == ( result ) ); if( ( result ) == 0 ) diff --git a/tests/suites/test_suite_pkwrite.function b/tests/suites/test_suite_pkwrite.function index 8b20640f30..3ad782d33e 100644 --- a/tests/suites/test_suite_pkwrite.function +++ b/tests/suites/test_suite_pkwrite.function @@ -10,7 +10,7 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ -void pk_write_pubkey_check( char *key_file ) +void pk_write_pubkey_check( char * key_file ) { mbedtls_pk_context key; unsigned char buf[5000]; @@ -42,7 +42,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ -void pk_write_key_check( char *key_file ) +void pk_write_key_check( char * key_file ) { mbedtls_pk_context key; unsigned char buf[5000]; diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index 4d58049dfa..e13735b3dd 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -18,28 +18,26 @@ */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_sign( char *message_hex_string, int padding_mode, int digest, - int mod, int radix_P, char *input_P, int radix_Q, - char *input_Q, int radix_N, char *input_N, int radix_E, - char *input_E, char *result_hex_str, int result ) +void mbedtls_rsa_pkcs1_sign( uint8_t * message_str, uint32_t msg_len, + int padding_mode, int digest, int mod, + int radix_P, char * input_P, int radix_Q, + char * input_Q, int radix_N, char * input_N, + int radix_E, char * input_E, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; mbedtls_mpi N, P, Q, E; - int msg_len; rnd_pseudo_info rnd_info; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); @@ -52,7 +50,6 @@ void mbedtls_rsa_pkcs1_sign( char *message_hex_string, int padding_mode, int dig TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), @@ -63,9 +60,8 @@ void mbedtls_rsa_pkcs1_sign( char *message_hex_string, int padding_mode, int dig hash_result, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -76,23 +72,20 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_verify( char *message_hex_string, int padding_mode, int digest, - int mod, int radix_N, char *input_N, int radix_E, - char *input_E, char *result_hex_str, int result ) +void mbedtls_rsa_pkcs1_verify( uint8_t * message_str, uint32_t msg_len, + int padding_mode, int digest, int mod, + int radix_N, char * input_N, int radix_E, + char * input_E, uint8_t * result_str, + uint32_t result_str_len, int result ) { - unsigned char message_str[1000]; unsigned char hash_result[1000]; - unsigned char result_str[1000]; mbedtls_rsa_context ctx; - int msg_len; mbedtls_mpi N, E; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -100,8 +93,6 @@ void mbedtls_rsa_pkcs1_verify( char *message_hex_string, int padding_mode, int d TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( mod / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); - unhexify( result_str, result_hex_str ); if( mbedtls_md_info_from_type( digest ) != NULL ) TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); @@ -116,29 +107,24 @@ exit: /* BEGIN_CASE */ -void rsa_pkcs1_sign_raw( char *message_hex_string, char *hash_result_string, - int padding_mode, int mod, int radix_P, char *input_P, - int radix_Q, char *input_Q, int radix_N, - char *input_N, int radix_E, char *input_E, - char *result_hex_str ) +void rsa_pkcs1_sign_raw( uint8_t * message_str, uint32_t message_str_len, + uint8_t * hash_result, uint32_t hash_len, + int padding_mode, int mod, int radix_P, + char * input_P, int radix_Q, char * input_Q, + int radix_N, char * input_N, int radix_E, + char * input_E, uint8_t * result_hex_str, + uint32_t result_hex_str_len ) { - unsigned char message_str[1000]; - unsigned char hash_result[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; mbedtls_mpi N, P, Q, E; - int hash_len; rnd_pseudo_info rnd_info; mbedtls_rsa_init( &ctx, padding_mode, 0 ); mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); - memset( message_str, 0x00, 1000 ); - memset( hash_result, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); @@ -151,16 +137,13 @@ void rsa_pkcs1_sign_raw( char *message_hex_string, char *hash_result_string, TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); - hash_len = unhexify( hash_result, hash_result_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, MBEDTLS_MD_NONE, hash_len, hash_result, output ) == 0 ); - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); #if defined(MBEDTLS_PKCS1_V15) /* For PKCS#1 v1.5, there is an alternative way to generate signatures */ @@ -168,7 +151,6 @@ void rsa_pkcs1_sign_raw( char *message_hex_string, char *hash_result_string, { int res; memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); res = mbedtls_rsa_rsaes_pkcs1_v15_encrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, @@ -183,8 +165,7 @@ void rsa_pkcs1_sign_raw( char *message_hex_string, char *hash_result_string, if( res == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } } #endif /* MBEDTLS_PKCS1_V15 */ @@ -198,25 +179,20 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_verify_raw( char *message_hex_string, char *hash_result_string, +void rsa_pkcs1_verify_raw( uint8_t * message_str, uint32_t message_str_len, + uint8_t * hash_result, uint32_t hash_len, int padding_mode, int mod, int radix_N, - char *input_N, int radix_E, char *input_E, - char *result_hex_str, int correct ) + char * input_N, int radix_E, char * input_E, + uint8_t * result_str, uint32_t result_str_len, + int correct ) { - unsigned char message_str[1000]; - unsigned char hash_result[1000]; - unsigned char result_str[1000]; unsigned char output[1000]; mbedtls_rsa_context ctx; - size_t hash_len; mbedtls_mpi N, E; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); - memset( hash_result, 0x00, 1000 ); - memset( result_str, 0x00, 1000 ); memset( output, 0x00, sizeof( output ) ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); @@ -226,9 +202,6 @@ void rsa_pkcs1_verify_raw( char *message_hex_string, char *hash_result_string, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( mod / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); - hash_len = unhexify( hash_result, hash_result_string ); - unhexify( result_str, result_hex_str ); TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, MBEDTLS_MD_NONE, @@ -272,15 +245,14 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_encrypt( char *message_hex_string, int padding_mode, int mod, - int radix_N, char *input_N, int radix_E, char *input_E, - char *result_hex_str, int result ) +void mbedtls_rsa_pkcs1_encrypt( uint8_t * message_str, uint32_t msg_len, + int padding_mode, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; - size_t msg_len; rnd_pseudo_info rnd_info; mbedtls_mpi N, E; @@ -289,9 +261,7 @@ void mbedtls_rsa_pkcs1_encrypt( char *message_hex_string, int padding_mode, int memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -300,16 +270,14 @@ void mbedtls_rsa_pkcs1_encrypt( char *message_hex_string, int padding_mode, int TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( mod / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -319,24 +287,20 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_encrypt_bad_rng( char *message_hex_string, int padding_mode, - int mod, int radix_N, char *input_N, - int radix_E, char *input_E, - char *result_hex_str, int result ) +void rsa_pkcs1_encrypt_bad_rng( uint8_t * message_str, uint32_t msg_len, + int padding_mode, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; - size_t msg_len; mbedtls_mpi N, E; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -345,16 +309,14 @@ void rsa_pkcs1_encrypt_bad_rng( char *message_hex_string, int padding_mode, TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( mod / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - msg_len = unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_zero_rand, NULL, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -364,14 +326,15 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_decrypt( char *message_hex_string, int padding_mode, int mod, - int radix_P, char *input_P, int radix_Q, char *input_Q, - int radix_N, char *input_N, int radix_E, char *input_E, - int max_output, char *result_hex_str, int result ) +void mbedtls_rsa_pkcs1_decrypt( uint8_t * message_str, + uint32_t message_str_len, int padding_mode, + int mod, int radix_P, char * input_P, + int radix_Q, char * input_Q, int radix_N, + char * input_N, int radix_E, char * input_E, + int max_output, uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx; size_t output_len; rnd_pseudo_info rnd_info; @@ -382,9 +345,7 @@ void mbedtls_rsa_pkcs1_decrypt( char *message_hex_string, int padding_mode, int mbedtls_rsa_init( &ctx, padding_mode, 0 ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); @@ -398,15 +359,13 @@ void mbedtls_rsa_pkcs1_decrypt( char *message_hex_string, int padding_mode, int TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); output_len = 0; TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, max_output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strncasecmp( (char *) output_str, result_hex_str, strlen( result_hex_str ) ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: @@ -417,12 +376,12 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_public( char *message_hex_string, int mod, int radix_N, char *input_N, - int radix_E, char *input_E, char *result_hex_str, int result ) +void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, + int mod, int radix_N, char * input_N, int radix_E, + char * input_E, uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */ mbedtls_mpi N, E; @@ -430,9 +389,7 @@ void mbedtls_rsa_public( char *message_hex_string, int mod, int radix_N, char *i mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, 0 ); mbedtls_rsa_init( &ctx2, MBEDTLS_RSA_PKCS_V15, 0 ); - memset( message_str, 0x00, 1000 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_mpi_read_string( &N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &E, radix_E, input_E ) == 0 ); @@ -441,14 +398,12 @@ void mbedtls_rsa_public( char *message_hex_string, int mod, int radix_N, char *i TEST_ASSERT( mbedtls_rsa_get_len( &ctx ) == (size_t) ( mod / 8 ) ); TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); TEST_ASSERT( mbedtls_rsa_public( &ctx, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); } /* And now with the copy */ @@ -459,13 +414,11 @@ void mbedtls_rsa_public( char *message_hex_string, int mod, int radix_N, char *i TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx2 ) == 0 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_rsa_public( &ctx2, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx2.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); } exit: @@ -476,13 +429,14 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char *input_P, - int radix_Q, char *input_Q, int radix_N, char *input_N, - int radix_E, char *input_E, char *result_hex_str, int result ) +void mbedtls_rsa_private( uint8_t * message_str, uint32_t message_str_len, + int mod, int radix_P, char * input_P, int radix_Q, + char * input_Q, int radix_N, char * input_N, + int radix_E, char * input_E, + uint8_t * result_hex_str, + uint32_t result_hex_str_len, int result ) { - unsigned char message_str[1000]; unsigned char output[1000]; - unsigned char output_str[1000]; mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */ mbedtls_mpi N, P, Q, E; rnd_pseudo_info rnd_info; @@ -493,7 +447,6 @@ void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char * mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, 0 ); mbedtls_rsa_init( &ctx2, MBEDTLS_RSA_PKCS_V15, 0 ); - memset( message_str, 0x00, 1000 ); memset( &rnd_info, 0, sizeof( rnd_pseudo_info ) ); TEST_ASSERT( mbedtls_mpi_read_string( &P, radix_P, input_P ) == 0 ); @@ -506,20 +459,17 @@ void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char * TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - unhexify( message_str, message_hex_string ); /* repeat three times to test updating of blinding values */ for( i = 0; i < 3; i++ ) { memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_rsa_private( &ctx, rnd_pseudo_rand, &rnd_info, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); } } @@ -531,14 +481,12 @@ void mbedtls_rsa_private( char *message_hex_string, int mod, int radix_P, char * TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx2 ) == 0 ); memset( output, 0x00, 1000 ); - memset( output_str, 0x00, 1000 ); TEST_ASSERT( mbedtls_rsa_private( &ctx2, rnd_pseudo_rand, &rnd_info, message_str, output ) == result ); if( result == 0 ) { - hexify( output_str, output, ctx2.len ); - TEST_ASSERT( strcasecmp( (char *) output_str, result_hex_str ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); } exit: @@ -550,7 +498,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_check_privkey_null() +void rsa_check_privkey_null( ) { mbedtls_rsa_context ctx; memset( &ctx, 0x00, sizeof( mbedtls_rsa_context ) ); @@ -560,8 +508,8 @@ void rsa_check_privkey_null() /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_check_pubkey( int radix_N, char *input_N, int radix_E, char *input_E, - int result ) +void mbedtls_rsa_check_pubkey( int radix_N, char * input_N, int radix_E, + char * input_E, int result ) { mbedtls_rsa_context ctx; mbedtls_mpi N, E; @@ -588,12 +536,13 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_check_privkey( int mod, int radix_P, char *input_P, int radix_Q, - char *input_Q, int radix_N, char *input_N, - int radix_E, char *input_E, int radix_D, char *input_D, - int radix_DP, char *input_DP, int radix_DQ, - char *input_DQ, int radix_QP, char *input_QP, - int result ) +void mbedtls_rsa_check_privkey( int mod, int radix_P, char * input_P, + int radix_Q, char * input_Q, int radix_N, + char * input_N, int radix_E, char * input_E, + int radix_D, char * input_D, int radix_DP, + char * input_DP, int radix_DQ, + char * input_DQ, int radix_QP, + char * input_QP, int result ) { mbedtls_rsa_context ctx; @@ -647,13 +596,13 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_check_pubpriv( int mod, int radix_Npub, char *input_Npub, - int radix_Epub, char *input_Epub, - int radix_P, char *input_P, int radix_Q, - char *input_Q, int radix_N, char *input_N, - int radix_E, char *input_E, int radix_D, char *input_D, - int radix_DP, char *input_DP, int radix_DQ, - char *input_DQ, int radix_QP, char *input_QP, +void rsa_check_pubpriv( int mod, int radix_Npub, char * input_Npub, + int radix_Epub, char * input_Epub, int radix_P, + char * input_P, int radix_Q, char * input_Q, + int radix_N, char * input_N, int radix_E, + char * input_E, int radix_D, char * input_D, + int radix_DP, char * input_DP, int radix_DQ, + char * input_DQ, int radix_QP, char * input_QP, int result ) { mbedtls_rsa_context pub, prv; @@ -1465,7 +1414,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void rsa_selftest() +void rsa_selftest( ) { TEST_ASSERT( mbedtls_rsa_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_shax.function b/tests/suites/test_suite_shax.function index d704b388b8..02ac47378c 100644 --- a/tests/suites/test_suite_shax.function +++ b/tests/suites/test_suite_shax.function @@ -5,126 +5,96 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */ -void mbedtls_sha1( char *hex_src_string, char *hex_hash_string ) +void mbedtls_sha1( uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[41]; - int src_len; - memset(src_str, 0x00, 10000); - memset(hash_str, 0x00, 10000); memset(output, 0x00, 41); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_sha1_ret( src_str, src_len, output ) == 0 ); - hexify( hash_str, output, 20 ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, 20, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void sha224(char *hex_src_string, char *hex_hash_string ) +void sha224( uint8_t * src_str, uint32_t src_len, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[57]; - int src_len; - memset(src_str, 0x00, 10000); - memset(hash_str, 0x00, 10000); memset(output, 0x00, 57); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_sha256_ret( src_str, src_len, output, 1 ) == 0 ); - hexify( hash_str, output, 28 ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, 28, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void mbedtls_sha256(char *hex_src_string, char *hex_hash_string ) +void mbedtls_sha256( uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[65]; - int src_len; - memset(src_str, 0x00, 10000); - memset(hash_str, 0x00, 10000); memset(output, 0x00, 65); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_sha256_ret( src_str, src_len, output, 0 ) == 0 ); - hexify( hash_str, output, 32 ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, 32, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void sha384(char *hex_src_string, char *hex_hash_string ) +void sha384( uint8_t * src_str, uint32_t src_len, uint8_t * hex_hash_string, + uint32_t hex_hash_string_len ) { - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[97]; - int src_len; - memset(src_str, 0x00, 10000); - memset(hash_str, 0x00, 10000); memset(output, 0x00, 97); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_sha512_ret( src_str, src_len, output, 1 ) == 0 ); - hexify( hash_str, output, 48 ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, 48, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void mbedtls_sha512(char *hex_src_string, char *hex_hash_string ) +void mbedtls_sha512( uint8_t * src_str, uint32_t src_len, + uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) { - unsigned char src_str[10000]; - unsigned char hash_str[10000]; unsigned char output[129]; - int src_len; - memset(src_str, 0x00, 10000); - memset(hash_str, 0x00, 10000); memset(output, 0x00, 129); - src_len = unhexify( src_str, hex_src_string ); TEST_ASSERT( mbedtls_sha512_ret( src_str, src_len, output, 0 ) == 0 ); - hexify( hash_str, output, 64 ); - TEST_ASSERT( strcmp( (char *) hash_str, hex_hash_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, 64, hex_hash_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */ -void sha1_selftest() +void sha1_selftest( ) { TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */ -void sha256_selftest() +void sha256_selftest( ) { TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */ -void sha512_selftest() +void sha512_selftest( ) { TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_timing.function b/tests/suites/test_suite_timing.function index 1610155fbf..6e949c86ba 100644 --- a/tests/suites/test_suite_timing.function +++ b/tests/suites/test_suite_timing.function @@ -53,6 +53,7 @@ static int timers_are_badly_broken = 0; * END_DEPENDENCIES */ +<<<<<<< HEAD /* BEGIN_CASE */ void timing_timer_simple( ) { diff --git a/tests/suites/test_suite_version.function b/tests/suites/test_suite_version.function index a4847f92c5..10f9e1154e 100644 --- a/tests/suites/test_suite_version.function +++ b/tests/suites/test_suite_version.function @@ -8,7 +8,7 @@ */ /* BEGIN_CASE */ -void check_compiletime_version( char *version_str ) +void check_compiletime_version( char * version_str ) { char build_str[100]; char build_str_full[100]; @@ -35,7 +35,7 @@ void check_compiletime_version( char *version_str ) /* END_CASE */ /* BEGIN_CASE */ -void check_runtime_version( char *version_str ) +void check_runtime_version( char * version_str ) { char build_str[100]; char get_str[100]; diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index d02068d5f6..4d36027f17 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -162,7 +162,7 @@ int verify_print( void *data, mbedtls_x509_crt *crt, int certificate_depth, uint */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void x509_cert_info( char *crt_file, char *result_str ) +void x509_cert_info( char * crt_file, char * result_str ) { mbedtls_x509_crt crt; char buf[2000]; @@ -185,7 +185,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRL_PARSE_C */ -void mbedtls_x509_crl_info( char *crl_file, char *result_str ) +void mbedtls_x509_crl_info( char * crl_file, char * result_str ) { mbedtls_x509_crl crl; char buf[2000]; @@ -208,7 +208,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRL_PARSE_C */ -void mbedtls_x509_crl_parse( char *crl_file, int result ) +void mbedtls_x509_crl_parse( char * crl_file, int result ) { mbedtls_x509_crl crl; char buf[2000]; @@ -224,7 +224,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CSR_PARSE_C */ -void mbedtls_x509_csr_info( char *csr_file, char *result_str ) +void mbedtls_x509_csr_info( char * csr_file, char * result_str ) { mbedtls_x509_csr csr; char buf[2000]; @@ -247,7 +247,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C */ -void x509_verify_info( int flags, char *prefix, char *result_str ) +void x509_verify_info( int flags, char * prefix, char * result_str ) { char buf[2000]; int res; @@ -355,7 +355,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_x509_dn_gets( char *crt_file, char *entity, char *result_str ) +void mbedtls_x509_dn_gets( char * crt_file, char * entity, char * result_str ) { mbedtls_x509_crt crt; char buf[2000]; @@ -383,7 +383,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_x509_time_is_past( char *crt_file, char *entity, int result ) +void mbedtls_x509_time_is_past( char * crt_file, char * entity, int result ) { mbedtls_x509_crt crt; @@ -404,7 +404,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_x509_time_is_future( char *crt_file, char *entity, int result ) +void mbedtls_x509_time_is_future( char * crt_file, char * entity, int result ) { mbedtls_x509_crt crt; @@ -425,7 +425,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_FS_IO */ -void x509parse_crt_file( char *crt_file, int result ) +void x509parse_crt_file( char * crt_file, int result ) { mbedtls_x509_crt crt; @@ -439,18 +439,16 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C */ -void x509parse_crt( char *crt_data, char *result_str, int result ) +void x509parse_crt( uint8_t * buf, uint32_t data_len, char * result_str, + int result ) { mbedtls_x509_crt crt; - unsigned char buf[2000]; unsigned char output[2000]; - int data_len, res; + int res; mbedtls_x509_crt_init( &crt ); - memset( buf, 0, 2000 ); memset( output, 0, 2000 ); - data_len = unhexify( buf, crt_data ); TEST_ASSERT( mbedtls_x509_crt_parse( &crt, buf, data_len ) == ( result ) ); if( ( result ) == 0 ) @@ -469,18 +467,16 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRL_PARSE_C */ -void x509parse_crl( char *crl_data, char *result_str, int result ) +void x509parse_crl( uint8_t * buf, uint32_t data_len, char * result_str, + int result ) { mbedtls_x509_crl crl; - unsigned char buf[2000]; unsigned char output[2000]; - int data_len, res; + int res; mbedtls_x509_crl_init( &crl ); - memset( buf, 0, 2000 ); memset( output, 0, 2000 ); - data_len = unhexify( buf, crl_data ); TEST_ASSERT( mbedtls_x509_crl_parse( &crl, buf, data_len ) == ( result ) ); if( ( result ) == 0 ) @@ -499,7 +495,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CSR_PARSE_C */ -void mbedtls_x509_csr_parse( char *csr_der_hex, char *ref_out, int ref_ret ) +void mbedtls_x509_csr_parse( char * csr_der_hex, char * ref_out, int ref_ret ) { mbedtls_x509_csr csr; unsigned char *csr_der = NULL; @@ -528,7 +524,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C */ -void mbedtls_x509_crt_parse_path( char *crt_path, int ret, int nb_crt ) +void mbedtls_x509_crt_parse_path( char * crt_path, int ret, int nb_crt ) { mbedtls_x509_crt chain, *cur; int i; @@ -630,18 +626,16 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_desc( char *oid_str, char *ref_desc ) +void x509_oid_desc( uint8_t * buf, uint32_t buf_len, char * ref_desc ) { mbedtls_x509_buf oid; const char *desc = NULL; - unsigned char buf[20]; int ret; - memset( buf, 0, sizeof buf ); oid.tag = MBEDTLS_ASN1_OID; - oid.len = unhexify( buf, oid_str ); oid.p = buf; + oid.len = buf_len; ret = mbedtls_oid_get_extended_key_usage( &oid, &desc ); @@ -660,18 +654,17 @@ void x509_oid_desc( char *oid_str, char *ref_desc ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_numstr( char *oid_str, char *numstr, int blen, int ret ) +void x509_oid_numstr( uint8_t * oid_buf, uint32_t oid_buf_len, char * numstr, + int blen, int ret ) { mbedtls_x509_buf oid; - unsigned char oid_buf[20]; char num_buf[100]; - memset( oid_buf, 0x00, sizeof oid_buf ); memset( num_buf, 0x2a, sizeof num_buf ); oid.tag = MBEDTLS_ASN1_OID; - oid.len = unhexify( oid_buf, oid_str ); oid.p = oid_buf; + oid.len = oid_buf_len; TEST_ASSERT( (size_t) blen <= sizeof num_buf ); @@ -686,7 +679,7 @@ void x509_oid_numstr( char *oid_str, char *numstr, int blen, int ret ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CHECK_KEY_USAGE */ -void x509_check_key_usage( char *crt_file, int usage, int ret ) +void x509_check_key_usage( char * crt_file, int usage, int ret ) { mbedtls_x509_crt crt; @@ -702,15 +695,13 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */ -void x509_check_extended_key_usage( char *crt_file, char *usage_hex, int ret ) +void x509_check_extended_key_usage( char * crt_file, uint8_t * oid, + uint32_t len, int ret ) { mbedtls_x509_crt crt; - char oid[50]; - size_t len; mbedtls_x509_crt_init( &crt ); - len = unhexify( (unsigned char *) oid, usage_hex ); TEST_ASSERT( mbedtls_x509_crt_parse_file( &crt, crt_file ) == 0 ); @@ -722,9 +713,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_get_time( int tag, char *time_str, int ret, - int year, int mon, int day, - int hour, int min, int sec ) +void x509_get_time( int tag, char * time_str, int ret, int year, int mon, + int day, int hour, int min, int sec ) { mbedtls_x509_time time; unsigned char buf[21]; @@ -753,7 +743,7 @@ void x509_get_time( int tag, char *time_str, int ret, /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_RSASSA_PSS_SUPPORT */ -void x509_parse_rsassa_pss_params( char *hex_params, int params_tag, +void x509_parse_rsassa_pss_params( char * hex_params, int params_tag, int ref_msg_md, int ref_mgf_md, int ref_salt_len, int ref_ret ) { @@ -783,7 +773,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_SELF_TEST */ -void x509_selftest() +void x509_selftest( ) { TEST_ASSERT( mbedtls_x509_self_test( 1 ) == 0 ); } diff --git a/tests/suites/test_suite_x509write.function b/tests/suites/test_suite_x509write.function index 62f82e8a05..f9ba57623c 100644 --- a/tests/suites/test_suite_x509write.function +++ b/tests/suites/test_suite_x509write.function @@ -35,8 +35,8 @@ size_t mbedtls_rsa_key_len_func( void *ctx ) */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C:MBEDTLS_X509_CSR_WRITE_C */ -void x509_csr_check( char *key_file, char *cert_req_check_file, - int md_type, int key_usage, int cert_type ) +void x509_csr_check( char * key_file, char * cert_req_check_file, int md_type, + int key_usage, int cert_type ) { mbedtls_pk_context key; mbedtls_x509write_csr req; @@ -209,7 +209,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CREATE_C:MBEDTLS_X509_USE_C */ -void mbedtls_x509_string_to_names( char *name, char *parsed_name, int result ) +void mbedtls_x509_string_to_names( char * name, char * parsed_name, int result + ) { int ret; size_t len = 0; diff --git a/tests/suites/test_suite_xtea.function b/tests/suites/test_suite_xtea.function index cbc714a12f..7da890acbf 100644 --- a/tests/suites/test_suite_xtea.function +++ b/tests/suites/test_suite_xtea.function @@ -8,121 +8,83 @@ */ /* BEGIN_CASE */ -void xtea_encrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string ) +void xtea_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_xtea_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); mbedtls_xtea_setup( &ctx, key_str ); TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_ENCRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void xtea_decrypt_ecb( char *hex_key_string, char *hex_src_string, - char *hex_dst_string ) +void xtea_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, + uint8_t * src_str, uint32_t src_str_len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; unsigned char output[100]; mbedtls_xtea_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); memset(output, 0x00, 100); - unhexify( key_str, hex_key_string ); - unhexify( src_str, hex_src_string ); mbedtls_xtea_setup( &ctx, key_str ); TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_DECRYPT, src_str, output ) == 0 ); - hexify( dst_str, output, 8 ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_encrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void xtea_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; - unsigned char iv_str[100]; unsigned char output[100]; - size_t len; mbedtls_xtea_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); - memset(iv_str, 0x00, 100); memset(output, 0x00, 100); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - len = unhexify( src_str, hex_src_string ); mbedtls_xtea_setup( &ctx, key_str ); TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_ENCRYPT, len, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, len, hex_dst_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_decrypt_cbc( char *hex_key_string, char *hex_iv_string, - char *hex_src_string, char *hex_dst_string ) +void xtea_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, + uint8_t * iv_str, uint32_t iv_str_len, + uint8_t * src_str, uint32_t len, + uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) { - unsigned char key_str[100]; - unsigned char src_str[100]; - unsigned char dst_str[100]; - unsigned char iv_str[100]; unsigned char output[100]; - size_t len; mbedtls_xtea_context ctx; - memset(key_str, 0x00, 100); - memset(src_str, 0x00, 100); - memset(dst_str, 0x00, 100); - memset(iv_str, 0x00, 100); memset(output, 0x00, 100); - unhexify( key_str, hex_key_string ); - unhexify( iv_str, hex_iv_string ); - len = unhexify( src_str, hex_src_string ); mbedtls_xtea_setup( &ctx, key_str ); TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_DECRYPT, len, iv_str, src_str, output ) == 0 ); - hexify( dst_str, output, len ); - TEST_ASSERT( strcmp( (char *) dst_str, hex_dst_string ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string, len, hex_dst_string_len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */ -void xtea_selftest() +void xtea_selftest( ) { TEST_ASSERT( mbedtls_xtea_self_test( 1 ) == 0 ); } From 184447e7e4f1399d9411f94a14ab9b9ebff32a08 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 31 May 2017 20:29:36 +0100 Subject: [PATCH 0694/1100] Add proper handling of hex data --- tests/suites/desktop_test.function | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/suites/desktop_test.function b/tests/suites/desktop_test.function index 6e7fd075c7..b2906a8dce 100644 --- a/tests/suites/desktop_test.function +++ b/tests/suites/desktop_test.function @@ -274,9 +274,22 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store } else if ( strcmp( type, "hex" ) == 0 ) { - *int_params_store = unhexify( (unsigned char *) val, val ); - *out++ = (char *)int_params_store++; - *out++ = val; + if ( verify_string( &val ) == 0 ) + { + int j; + *int_params_store = unhexify( (unsigned char *) val, val ); + printf ("\n"); + for (j = 0; j < *int_params_store; j++) + printf ("%02x ", (uint8_t)val[j]); + printf ("\n len %d\n", *int_params_store); + *out++ = val; + *out++ = (char *)(int_params_store++); + } + else + { + ret = ( DISPATCH_INVALID_TEST_DATA ); + break; + } } else if ( strcmp( type, "exp" ) == 0 ) { From a57a420985e1f536de7dccbe4b4cc13a022b2df4 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 31 May 2017 20:32:32 +0100 Subject: [PATCH 0695/1100] Add hex parameter dispatch --- tests/scripts/gen_mbed_code.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/scripts/gen_mbed_code.py b/tests/scripts/gen_mbed_code.py index 9fd9a00454..c63555de78 100644 --- a/tests/scripts/gen_mbed_code.py +++ b/tests/scripts/gen_mbed_code.py @@ -211,6 +211,7 @@ def parse_function_signature(line): name = m.group(1) line = line[len(m.group(0)):] arg_idx = 0 + last_was_hex = False for arg in line[:line.find(')')].split(','): arg = arg.strip() if arg == '': @@ -221,6 +222,13 @@ def parse_function_signature(line): elif re.search('char\s*\*\s*.*', arg.strip()): args.append('char*') args_dispatch.append('(char *) params[%d]' % arg_idx) + elif re.search('uint8_t\s*\*\s*.*', arg.strip()): + args.append('hex') + args_dispatch.append('(uint8_t *) params[%d]' % arg_idx) + last_was_hex = True + elif re.search('uint32_t\s+.*', arg.strip()) and last_was_hex: + last_was_hex = False + args_dispatch.append('*( (uint32_t *) params[%d] )' % arg_idx) else: raise ValueError("Test function arguments can only be 'int' or 'char *'\n%s" % line) arg_idx += 1 From 5e7f8df800a3b2d596e6f7aef2d416ef27ed3c82 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 31 May 2017 20:33:39 +0100 Subject: [PATCH 0696/1100] Print Greentea __testcase_name indicator for Greentea to mark the test --- tests/scripts/mbedtls_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 32521a8f93..19893ffb48 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -218,6 +218,7 @@ class MbedTlsTest(BaseHostTest): """ int_val = self.get_result(value) name, function, deps, args = self.tests[self.test_index] + self.log('{{__testcase_start;%s}}' % name) self.log('{{__testcase_finish;%s;%d;%d}}' % (name, int_val == 0, int_val != 0)) self.run_next_test() From 46c9b1f196f16a868ac98e08530f4c4d31fe1b5d Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 31 May 2017 20:46:35 +0100 Subject: [PATCH 0697/1100] Fix test functions and data after moving hexify/unhexify out - Separate string and hex parameter as unhexify is moved out of the function. It's input should only be hex. - Fix test mbedtls_ccm_encrypt_and_tag that grows input message buffer with tag - Add missing expected length parameter in ECP TLS tests - Add deleted TEST_ASSERT and mbedtls calls that got removed in script based code generation --- tests/suites/test_suite_ccm.data | 192 +++++----- tests/suites/test_suite_ccm.function | 18 +- tests/suites/test_suite_cipher.ccm.data | 240 ++++++------- .../suites/test_suite_cipher.chachapoly.data | 4 +- tests/suites/test_suite_cipher.function | 7 +- tests/suites/test_suite_debug.function | 1 + tests/suites/test_suite_ecp.data | 10 +- tests/suites/test_suite_ecp.function | 11 +- tests/suites/test_suite_gcm.aes128_de.data | 336 +++++++++--------- tests/suites/test_suite_gcm.aes192_de.data | 336 +++++++++--------- tests/suites/test_suite_gcm.aes256_de.data | 336 +++++++++--------- tests/suites/test_suite_gcm.camellia.data | 72 ++-- tests/suites/test_suite_gcm.function | 6 +- tests/suites/test_suite_md.function | 6 +- tests/suites/test_suite_mpi.data | 2 +- tests/suites/test_suite_pkcs1_v15.function | 2 +- tests/suites/test_suite_pkcs1_v21.function | 2 +- tests/suites/test_suite_rsa.function | 4 +- 18 files changed, 795 insertions(+), 790 deletions(-) diff --git a/tests/suites/test_suite_ccm.data b/tests/suites/test_suite_ccm.data index cad40d59c8..85bc3db417 100644 --- a/tests/suites/test_suite_ccm.data +++ b/tests/suites/test_suite_ccm.data @@ -1036,387 +1036,387 @@ mbedtls_ccm_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"2e6e34070caf1b8820ed39edfa834 CCM auth decrypt tag NIST DVPT AES-128 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"02209f55":"5a8aa485c316e9":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"02209f55":"5a8aa485c316e9":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-128 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"9a04c241":"3796cf51b87266":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"9a04c241":"3796cf51b87266":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"75d582db43ce9b13ab4b6f7f14341330":"5a8aa485c316e9":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"75d582db43ce9b13ab4b6f7f14341330":"5a8aa485c316e9":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-128 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3a65e03af37b81d05acc7ec1bc39deb0":"3796cf51b87266":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3a65e03af37b81d05acc7ec1bc39deb0":"3796cf51b87266":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"90156f3f":"5a8aa485c316e9403aff859fbb":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"90156f3f":"5a8aa485c316e9403aff859fbb":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-128 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"88909016":"a16a2e741f1cd9717285b6d882":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"88909016":"a16a2e741f1cd9717285b6d882":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"fb04dc5a44c6bb000f2440f5154364b4":"5a8aa485c316e9403aff859fbb":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"fb04dc5a44c6bb000f2440f5154364b4":"5a8aa485c316e9403aff859fbb":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-128 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"5447075bf42a59b91f08064738b015ab":"a16a2e741f1cd9717285b6d882":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"5447075bf42a59b91f08064738b015ab":"a16a2e741f1cd9717285b6d882":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb703e1fa6b":"5a8aa485c316e9":"":4:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb703e1fa6b":"5a8aa485c316e9":"":4:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-128 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f23e5d81c":"31f8fa25827d48":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f23e5d81c":"31f8fa25827d48":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f2d9a3fbc210595b7b8b1b41523111a8e":"5a8aa485c316e9":"":16:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f2d9a3fbc210595b7b8b1b41523111a8e":"5a8aa485c316e9":"":16:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-128 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd2463af747cc88a001fa94e060290f209c4":"31f8fa25827d48":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd2463af747cc88a001fa94e060290f209c4":"31f8fa25827d48":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134a3e138b9":"5a8aa485c316e9403aff859fbb":"":4:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134a3e138b9":"5a8aa485c316e9403aff859fbb":"":4:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-128 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654091a5ae9":"49004912fdd7269279b1f06a89":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654091a5ae9":"49004912fdd7269279b1f06a89":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb6a9a970b9beb2ac1bd4fd62168f8378a":"5a8aa485c316e9403aff859fbb":"":16:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb6a9a970b9beb2ac1bd4fd62168f8378a":"5a8aa485c316e9403aff859fbb":"":16:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-128 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065a65666144994bad0c8195bcb4ade1337":"49004912fdd7269279b1f06a89":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065a65666144994bad0c8195bcb4ade1337":"49004912fdd7269279b1f06a89":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"782e4318":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"782e4318":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"" CCM auth decrypt tag NIST DVPT AES-128 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"a04f270a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"a04f270a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"41b476013f45e4a781f253a6f3b1e530":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"41b476013f45e4a781f253a6f3b1e530":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"" CCM auth decrypt tag NIST DVPT AES-128 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"f9f018fcd125822616083fffebc4c8e6":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"f9f018fcd125822616083fffebc4c8e6":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"9f69f24f":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"9f69f24f":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"" CCM auth decrypt tag NIST DVPT AES-128 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"e17afaa4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"e17afaa4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"1859ac36a40a6b28b34266253627797a":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"1859ac36a40a6b28b34266253627797a":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"" CCM auth decrypt tag NIST DVPT AES-128 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"edf8b46eb69ac0044116019dec183072":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"edf8b46eb69ac0044116019dec183072":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b338f125fa":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b338f125fa":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-128 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c728a66b69":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c728a66b69":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b512cf3a20b7fd7c49e6e79bef475c2906f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b512cf3a20b7fd7c49e6e79bef475c2906f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-128 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a3081d18ca149d6766bfaccec88f194eb5b":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a3081d18ca149d6766bfaccec88f194eb5b":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"934f893824e880f743d196b22d1f340a52608155087bd28ac25e5329":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"934f893824e880f743d196b22d1f340a52608155087bd28ac25e5329":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-128 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a6559b3b3ee":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a6559b3b3ee":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-128 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375c0a458bfcafa3b2609afe0f825cbf503":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375c0a458bfcafa3b2609afe0f825cbf503":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-128 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c390042ba8bb5f6798dab01c5afad7306":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c390042ba8bb5f6798dab01c5afad7306":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"9d4b7f3b":"5a8aa485c316e9":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"9d4b7f3b":"5a8aa485c316e9":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-192 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"80745de9":"3796cf51b87266":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"80745de9":"3796cf51b87266":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"17223038fa99d53681ca1beabe78d1b4":"5a8aa485c316e9":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"17223038fa99d53681ca1beabe78d1b4":"5a8aa485c316e9":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-192 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"d0e1eeef4d2a264536bb1c2c1bde7c35":"3796cf51b87266":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"d0e1eeef4d2a264536bb1c2c1bde7c35":"3796cf51b87266":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"fe69ed84":"5a8aa485c316e9403aff859fbb":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"fe69ed84":"5a8aa485c316e9403aff859fbb":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-192 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"db7ffc82":"a16a2e741f1cd9717285b6d882":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"db7ffc82":"a16a2e741f1cd9717285b6d882":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"5a8aa485c316e9403aff859fbb":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"5a8aa485c316e9403aff859fbb":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-192 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"38757b3a61a4dc97ca3ab88bf1240695":"a16a2e741f1cd9717285b6d882":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"38757b3a61a4dc97ca3ab88bf1240695":"a16a2e741f1cd9717285b6d882":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"411986d04d6463100bff03f7d0bde7ea2c3488784378138cddc93a54":"5a8aa485c316e9":"":4:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"411986d04d6463100bff03f7d0bde7ea2c3488784378138cddc93a54":"5a8aa485c316e9":"":4:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-192 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"32b649ab56162e55d4148a1292d6a225a988eb1308298273b6889036":"31f8fa25827d48":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"32b649ab56162e55d4148a1292d6a225a988eb1308298273b6889036":"31f8fa25827d48":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8c5a5ebecf7ac8607fe412189e83d9d20":"5a8aa485c316e9":"":16:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8c5a5ebecf7ac8607fe412189e83d9d20":"5a8aa485c316e9":"":16:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-192 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6e699f15f14d34dcaf9ba8ed4b877c97d":"31f8fa25827d48":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6e699f15f14d34dcaf9ba8ed4b877c97d":"31f8fa25827d48":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a34fad277":"5a8aa485c316e9403aff859fbb":"":4:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a34fad277":"5a8aa485c316e9403aff859fbb":"":4:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-192 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5a35df775":"49004912fdd7269279b1f06a89":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5a35df775":"49004912fdd7269279b1f06a89":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671ea7ade30a07d185692ab0ebdf4c78cf7a":"5a8aa485c316e9403aff859fbb":"":16:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671ea7ade30a07d185692ab0ebdf4c78cf7a":"5a8aa485c316e9403aff859fbb":"":16:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-192 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312ef042c86363cc05afb98c66e16be8a445":"49004912fdd7269279b1f06a89":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312ef042c86363cc05afb98c66e16be8a445":"49004912fdd7269279b1f06a89":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"1d089a5f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"1d089a5f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"" CCM auth decrypt tag NIST DVPT AES-192 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"2f46022a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"2f46022a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5280a2137fee3deefcfe9b63a1199fb3":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5280a2137fee3deefcfe9b63a1199fb3":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"" CCM auth decrypt tag NIST DVPT AES-192 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"d40a7318c5f2d82f838c0beeefe0d598":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"d40a7318c5f2d82f838c0beeefe0d598":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5e0eaebd":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5e0eaebd":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"" CCM auth decrypt tag NIST DVPT AES-192 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"71b7fc33":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"71b7fc33":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"d07ccf9fdc3d33aa94cda3d230da707c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"d07ccf9fdc3d33aa94cda3d230da707c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"" CCM auth decrypt tag NIST DVPT AES-192 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"65fe32b649dc328c9f531584897e85b3":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"65fe32b649dc328c9f531584897e85b3":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"9f6ca4af9b159148c889a6584d1183ea26e2614874b0504575dea8d1":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"9f6ca4af9b159148c889a6584d1183ea26e2614874b0504575dea8d1":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-192 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1ebd7965825":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1ebd7965825":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd14d1d980d6fe0fb44b421992662b97975":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd14d1d980d6fe0fb44b421992662b97975":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-192 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa206603c51d36c826f01384100886198a7f6a3":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa206603c51d36c826f01384100886198a7f6a3":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854cccc25e9fce":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854cccc25e9fce":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-192 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae98ecedb3e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae98ecedb3e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-192 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f3178464a6f7fa2b76744e8e8d95691cecb8":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f3178464a6f7fa2b76744e8e8d95691cecb8":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-192 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c06bd6dc2e6bcc3436cffb969ae900388":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c06bd6dc2e6bcc3436cffb969ae900388":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"469c90bb":"a544218dadd3c1":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"469c90bb":"a544218dadd3c1":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-256 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"46a908ed":"d3d5424e20fbec":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"46a908ed":"d3d5424e20fbec":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8207eb14d33855a52acceed17dbcbf6e":"a544218dadd3c1":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8207eb14d33855a52acceed17dbcbf6e":"a544218dadd3c1":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-256 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"60f8e127cb4d30db6df0622158cd931d":"d3d5424e20fbec":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"60f8e127cb4d30db6df0622158cd931d":"d3d5424e20fbec":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8a19a133":"a544218dadd3c10583db49cf39":"":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8a19a133":"a544218dadd3c10583db49cf39":"":4:"":"" CCM auth decrypt tag NIST DVPT AES-256 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"2e317f1b":"3c0e2815d37d844f7ac240ba9d":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"2e317f1b":"3c0e2815d37d844f7ac240ba9d":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"97e1a8dd4259ccd2e431e057b0397fcf":"a544218dadd3c10583db49cf39":"":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"97e1a8dd4259ccd2e431e057b0397fcf":"a544218dadd3c10583db49cf39":"":16:"":"" CCM auth decrypt tag NIST DVPT AES-256 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"5a9596c511ea6a8671adefc4f2157d8b":"3c0e2815d37d844f7ac240ba9d":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"5a9596c511ea6a8671adefc4f2157d8b":"3c0e2815d37d844f7ac240ba9d":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b722aa8d59":"a544218dadd3c1":"":4:"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b722aa8d59":"a544218dadd3c1":"":4:"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" CCM auth decrypt tag NIST DVPT AES-256 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a20277d00a75":"bfcda8b5a2d0d2":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a20277d00a75":"bfcda8b5a2d0d2":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd374f3bb6db8377ebfc79674858c4f305":"a544218dadd3c1":"":16:"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd374f3bb6db8377ebfc79674858c4f305":"a544218dadd3c1":"":16:"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" CCM auth decrypt tag NIST DVPT AES-256 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"afa1fa8e8a70e26b02161150556d604101fdf423f332c3363275f2a4907d51b734fe7238cebbd48f":"bfcda8b5a2d0d2":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"afa1fa8e8a70e26b02161150556d604101fdf423f332c3363275f2a4907d51b734fe7238cebbd48f":"bfcda8b5a2d0d2":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f4123d14fb3f":"a544218dadd3c10583db49cf39":"":4:"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f4123d14fb3f":"a544218dadd3c10583db49cf39":"":4:"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" CCM auth decrypt tag NIST DVPT AES-256 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d8d0c0099":"894dcaa61008eb8fb052c60d41":"":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d8d0c0099":"894dcaa61008eb8fb052c60d41":"":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c423a578d179902f912f9ea1afbce1120b3":"a544218dadd3c10583db49cf39":"":16:"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c423a578d179902f912f9ea1afbce1120b3":"a544218dadd3c10583db49cf39":"":16:"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" CCM auth decrypt tag NIST DVPT AES-256 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae769084607b83bd06e6442eac8dacf583cc":"894dcaa61008eb8fb052c60d41":"":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae769084607b83bd06e6442eac8dacf583cc":"894dcaa61008eb8fb052c60d41":"":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"92d00fbe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"92d00fbe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"":"" CCM auth decrypt tag NIST DVPT AES-256 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"9143e5c4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"9143e5c4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"93af11a08379eb37a16aa2837f09d69d":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"93af11a08379eb37a16aa2837f09d69d":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"":"" CCM auth decrypt tag NIST DVPT AES-256 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"d19b0c14ec686a7961ca7c386d125a65":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"d19b0c14ec686a7961ca7c386d125a65":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"866d4227":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"866d4227":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"":"" CCM auth decrypt tag NIST DVPT AES-256 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"94cb1127":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"94cb1127":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"867b0d87cf6e0f718200a97b4f6d5ad5":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"867b0d87cf6e0f718200a97b4f6d5ad5":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"":"" CCM auth decrypt tag NIST DVPT AES-256 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"677a040d46ee3f2b7838273bdad14f16":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"677a040d46ee3f2b7838273bdad14f16":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc56083ebc7720":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc56083ebc7720":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" CCM auth decrypt tag NIST DVPT AES-256 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81c44db2c9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81c44db2c9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce1ac68bd42f5ec7fa7e068cc0ecd79c2a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce1ac68bd42f5ec7fa7e068cc0ecd79c2a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" CCM auth decrypt tag NIST DVPT AES-256 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"d543acda712b898cbb27b8f598b2e4438ce587a836e2785147c3338a2400809e739b63ba8227d2f9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"d543acda712b898cbb27b8f598b2e4438ce587a836e2785147c3338a2400809e739b63ba8227d2f9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":16:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69ef891339":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69ef891339":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" CCM auth decrypt tag NIST DVPT AES-256 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f63d488623":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":4:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f63d488623":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":4:"FAIL":"" CCM auth decrypt tag NIST DVPT AES-256 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781367f30f2eaad8c063ca50795acd90203":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781367f30f2eaad8c063ca50795acd90203":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" CCM auth decrypt tag NIST DVPT AES-256 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc4b41096dfdbe9cc1ab610f8f3e038d16":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":16:"FAIL" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc4b41096dfdbe9cc1ab610f8f3e038d16":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":16:"FAIL":"" CCM-Camellia encrypt and tag RFC 5528 #1 depends_on:MBEDTLS_CAMELLIA_C diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index c845f44fff..5dbc837e42 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -125,9 +125,12 @@ void mbedtls_ccm_encrypt_and_tag( int cipher_id, uint8_t * key, { mbedtls_ccm_context ctx; size_t tag_len; + uint8_t * msg_n_tag = (uint8_t *)malloc( result_len + 2 ); mbedtls_ccm_init( &ctx ); + memset( msg_n_tag, 0, result_len + 2 ); + memcpy( msg_n_tag, msg, msg_len ); tag_len = result_len - msg_len; @@ -135,15 +138,16 @@ void mbedtls_ccm_encrypt_and_tag( int cipher_id, uint8_t * key, /* Test with input == output */ TEST_ASSERT( mbedtls_ccm_encrypt_and_tag( &ctx, msg_len, iv, iv_len, add, add_len, - msg, msg, msg + msg_len, tag_len ) == 0 ); + msg_n_tag, msg_n_tag, msg_n_tag + msg_len, tag_len ) == 0 ); - TEST_ASSERT( memcmp( msg, result, result_len ) == 0 ); + TEST_ASSERT( memcmp( msg_n_tag, result, result_len ) == 0 ); /* Check we didn't write past the end */ - TEST_ASSERT( msg[result_len] == 0 && msg[result_len + 1] == 0 ); + TEST_ASSERT( msg_n_tag[result_len] == 0 && msg_n_tag[result_len + 1] == 0 ); exit: mbedtls_ccm_free( &ctx ); + free( msg_n_tag ); } /* END_CASE */ @@ -152,7 +156,8 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, uint8_t * msg, uint32_t msg_len, uint8_t * iv, uint32_t iv_len, uint8_t * add, uint32_t add_len, int tag_len, - uint8_t * result, uint32_t result_len ) + char * result, uint8_t * hex_msg, + uint32_t hex_msg_len ) { unsigned char tag[16]; mbedtls_ccm_context ctx; @@ -165,10 +170,9 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, msg_len -= tag_len; memcpy( tag, msg + msg_len, tag_len ); - if( strcmp( "FAIL", (char *)result ) == 0 ) + if( strcmp( "FAIL", result ) == 0 ) { ret = MBEDTLS_ERR_CCM_AUTH_FAILED; - result_len = -1; } else { @@ -183,7 +187,7 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, if( ret == 0 ) { - TEST_ASSERT( memcmp( msg, result, result_len ) == 0 ); + TEST_ASSERT( memcmp( msg, hex_msg, hex_msg_len ) == 0 ); } else { diff --git a/tests/suites/test_suite_cipher.ccm.data b/tests/suites/test_suite_cipher.ccm.data index dc44091927..264ce9925e 100644 --- a/tests/suites/test_suite_cipher.ccm.data +++ b/tests/suites/test_suite_cipher.ccm.data @@ -1,480 +1,480 @@ AES-128-CCM test vector NIST #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4ae701103c63deca5b5a3939d7d05992":"5a8aa485c316e9":"":"":"02209f55":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4ae701103c63deca5b5a3939d7d05992":"5a8aa485c316e9":"":"":"02209f55":"":"" AES-128-CCM test vector NIST #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4ae701103c63deca5b5a3939d7d05992":"3796cf51b87266":"":"":"9a04c241":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4ae701103c63deca5b5a3939d7d05992":"3796cf51b87266":"":"":"9a04c241":"FAIL":"" AES-128-CCM test vector NIST #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"5a8aa485c316e9":"":"":"75d582db43ce9b13ab4b6f7f14341330":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"5a8aa485c316e9":"":"":"75d582db43ce9b13ab4b6f7f14341330":"":"" AES-128-CCM test vector NIST #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3796cf51b87266":"":"":"3a65e03af37b81d05acc7ec1bc39deb0":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3796cf51b87266":"":"":"3a65e03af37b81d05acc7ec1bc39deb0":"FAIL":"" AES-128-CCM test vector NIST #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"5a8aa485c316e9403aff859fbb":"":"":"90156f3f":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"5a8aa485c316e9403aff859fbb":"":"":"90156f3f":"":"" AES-128-CCM test vector NIST #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"a16a2e741f1cd9717285b6d882":"":"":"88909016":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3":"a16a2e741f1cd9717285b6d882":"":"":"88909016":"FAIL":"" AES-128-CCM test vector NIST #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"5a8aa485c316e9403aff859fbb":"":"":"fb04dc5a44c6bb000f2440f5154364b4":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"5a8aa485c316e9403aff859fbb":"":"":"fb04dc5a44c6bb000f2440f5154364b4":"":"" AES-128-CCM test vector NIST #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"a16a2e741f1cd9717285b6d882":"":"":"5447075bf42a59b91f08064738b015ab":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"a16a2e741f1cd9717285b6d882":"":"":"5447075bf42a59b91f08064738b015ab":"FAIL":"" AES-128-CCM test vector NIST #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"5a8aa485c316e9":"":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb7":"03e1fa6b":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"5a8aa485c316e9":"":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb7":"03e1fa6b":"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" AES-128-CCM test vector NIST #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"31f8fa25827d48":"":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f":"23e5d81c":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"19ebfde2d5468ba0a3031bde629b11fd":"31f8fa25827d48":"":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f":"23e5d81c":"FAIL":"" AES-128-CCM test vector NIST #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"5a8aa485c316e9":"":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f":"2d9a3fbc210595b7b8b1b41523111a8e":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"5a8aa485c316e9":"":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f":"2d9a3fbc210595b7b8b1b41523111a8e":"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" AES-128-CCM test vector NIST #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"31f8fa25827d48":"":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd24":"63af747cc88a001fa94e060290f209c4":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"31f8fa25827d48":"":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd24":"63af747cc88a001fa94e060290f209c4":"FAIL":"" AES-128-CCM test vector NIST #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"5a8aa485c316e9403aff859fbb":"":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134":"a3e138b9":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"5a8aa485c316e9403aff859fbb":"":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134":"a3e138b9":"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" AES-128-CCM test vector NIST #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"49004912fdd7269279b1f06a89":"":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654":"091a5ae9":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"197afb02ffbd8f699dacae87094d5243":"49004912fdd7269279b1f06a89":"":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654":"091a5ae9":"FAIL":"" AES-128-CCM test vector NIST #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"5a8aa485c316e9403aff859fbb":"":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb":"6a9a970b9beb2ac1bd4fd62168f8378a":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"5a8aa485c316e9403aff859fbb":"":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb":"6a9a970b9beb2ac1bd4fd62168f8378a":"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" AES-128-CCM test vector NIST #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"49004912fdd7269279b1f06a89":"":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065":"a65666144994bad0c8195bcb4ade1337":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"49004912fdd7269279b1f06a89":"":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065":"a65666144994bad0c8195bcb4ade1337":"FAIL":"" AES-128-CCM test vector NIST #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"782e4318":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"782e4318":"":"" AES-128-CCM test vector NIST #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"a04f270a":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"90929a4b0ac65b350ad1591611fe4829":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"a04f270a":"FAIL":"" AES-128-CCM test vector NIST #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"41b476013f45e4a781f253a6f3b1e530":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"41b476013f45e4a781f253a6f3b1e530":"":"" AES-128-CCM test vector NIST #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"f9f018fcd125822616083fffebc4c8e6":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"f9f018fcd125822616083fffebc4c8e6":"FAIL":"" AES-128-CCM test vector NIST #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"9f69f24f":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"9f69f24f":"":"" AES-128-CCM test vector NIST #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"e17afaa4":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"e17afaa4":"FAIL":"" AES-128-CCM test vector NIST #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"1859ac36a40a6b28b34266253627797a":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"1859ac36a40a6b28b34266253627797a":"":"" AES-128-CCM test vector NIST #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"edf8b46eb69ac0044116019dec183072":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"edf8b46eb69ac0044116019dec183072":"FAIL":"" AES-128-CCM test vector NIST #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b3":"38f125fa":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b3":"38f125fa":"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" AES-128-CCM test vector NIST #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c7":"28a66b69":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"f9fdca4ac64fe7f014de0f43039c7571":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c7":"28a66b69":"FAIL":"" AES-128-CCM test vector NIST #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b51":"2cf3a20b7fd7c49e6e79bef475c2906f":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b51":"2cf3a20b7fd7c49e6e79bef475c2906f":"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" AES-128-CCM test vector NIST #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a30":"81d18ca149d6766bfaccec88f194eb5b":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a30":"81d18ca149d6766bfaccec88f194eb5b":"FAIL":"" AES-128-CCM test vector NIST #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"934f893824e880f743d196b22d1f340a52608155087bd28a":"c25e5329":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"934f893824e880f743d196b22d1f340a52608155087bd28a":"c25e5329":"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" AES-128-CCM test vector NIST #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a65":"59b3b3ee":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"a7aa635ea51b0bb20a092bd5573e728c":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a65":"59b3b3ee":"FAIL":"" AES-128-CCM test vector NIST #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"26511fb51fcfa75cb4b44da75a6e5a0e":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375":"c0a458bfcafa3b2609afe0f825cbf503":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"26511fb51fcfa75cb4b44da75a6e5a0e":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375":"c0a458bfcafa3b2609afe0f825cbf503":"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" AES-128-CCM test vector NIST #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"26511fb51fcfa75cb4b44da75a6e5a0e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c":"390042ba8bb5f6798dab01c5afad7306":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_128_CCM:"26511fb51fcfa75cb4b44da75a6e5a0e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c":"390042ba8bb5f6798dab01c5afad7306":"FAIL":"" AES-192-CCM test vector NIST #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"5a8aa485c316e9":"":"":"9d4b7f3b":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"5a8aa485c316e9":"":"":"9d4b7f3b":"":"" AES-192-CCM test vector NIST #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"3796cf51b87266":"":"":"80745de9":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"3796cf51b87266":"":"":"80745de9":"FAIL":"" AES-192-CCM test vector NIST #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"5a8aa485c316e9":"":"":"17223038fa99d53681ca1beabe78d1b4":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"5a8aa485c316e9":"":"":"17223038fa99d53681ca1beabe78d1b4":"":"" AES-192-CCM test vector NIST #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"3796cf51b87266":"":"":"d0e1eeef4d2a264536bb1c2c1bde7c35":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"3796cf51b87266":"":"":"d0e1eeef4d2a264536bb1c2c1bde7c35":"FAIL":"" AES-192-CCM test vector NIST #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"5a8aa485c316e9403aff859fbb":"":"":"fe69ed84":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"5a8aa485c316e9403aff859fbb":"":"":"fe69ed84":"":"" AES-192-CCM test vector NIST #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"a16a2e741f1cd9717285b6d882":"":"":"db7ffc82":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"a16a2e741f1cd9717285b6d882":"":"":"db7ffc82":"FAIL":"" AES-192-CCM test vector NIST #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"5a8aa485c316e9403aff859fbb":"":"":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"5a8aa485c316e9403aff859fbb":"":"":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"":"" AES-192-CCM test vector NIST #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"a16a2e741f1cd9717285b6d882":"":"":"38757b3a61a4dc97ca3ab88bf1240695":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"a16a2e741f1cd9717285b6d882":"":"":"38757b3a61a4dc97ca3ab88bf1240695":"FAIL":"" AES-192-CCM test vector NIST #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"5a8aa485c316e9":"":"411986d04d6463100bff03f7d0bde7ea2c3488784378138c":"ddc93a54":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"5a8aa485c316e9":"":"411986d04d6463100bff03f7d0bde7ea2c3488784378138c":"ddc93a54":"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" AES-192-CCM test vector NIST #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"31f8fa25827d48":"":"32b649ab56162e55d4148a1292d6a225a988eb1308298273":"b6889036":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"31f8fa25827d48":"":"32b649ab56162e55d4148a1292d6a225a988eb1308298273":"b6889036":"FAIL":"" AES-192-CCM test vector NIST #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"5a8aa485c316e9":"":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8":"c5a5ebecf7ac8607fe412189e83d9d20":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"5a8aa485c316e9":"":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8":"c5a5ebecf7ac8607fe412189e83d9d20":"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" AES-192-CCM test vector NIST #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"31f8fa25827d48":"":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6":"e699f15f14d34dcaf9ba8ed4b877c97d":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"31f8fa25827d48":"":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6":"e699f15f14d34dcaf9ba8ed4b877c97d":"FAIL":"" AES-192-CCM test vector NIST #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"5a8aa485c316e9403aff859fbb":"":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a":"34fad277":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"5a8aa485c316e9403aff859fbb":"":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a":"34fad277":"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" AES-192-CCM test vector NIST #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"49004912fdd7269279b1f06a89":"":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5":"a35df775":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"49004912fdd7269279b1f06a89":"":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5":"a35df775":"FAIL":"" AES-192-CCM test vector NIST #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"5a8aa485c316e9403aff859fbb":"":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671e":"a7ade30a07d185692ab0ebdf4c78cf7a":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"5a8aa485c316e9403aff859fbb":"":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671e":"a7ade30a07d185692ab0ebdf4c78cf7a":"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" AES-192-CCM test vector NIST #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"49004912fdd7269279b1f06a89":"":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312e":"f042c86363cc05afb98c66e16be8a445":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"49004912fdd7269279b1f06a89":"":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312e":"f042c86363cc05afb98c66e16be8a445":"FAIL":"" AES-192-CCM test vector NIST #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"1d089a5f":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"1d089a5f":"":"" AES-192-CCM test vector NIST #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"2f46022a":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"2f46022a":"FAIL":"" AES-192-CCM test vector NIST #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"5280a2137fee3deefcfe9b63a1199fb3":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"":"5280a2137fee3deefcfe9b63a1199fb3":"":"" AES-192-CCM test vector NIST #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"d40a7318c5f2d82f838c0beeefe0d598":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":"":"d40a7318c5f2d82f838c0beeefe0d598":"FAIL":"" AES-192-CCM test vector NIST #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"5e0eaebd":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"5e0eaebd":"":"" AES-192-CCM test vector NIST #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"71b7fc33":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"71b7fc33":"FAIL":"" AES-192-CCM test vector NIST #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"d07ccf9fdc3d33aa94cda3d230da707c":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"":"d07ccf9fdc3d33aa94cda3d230da707c":"":"" AES-192-CCM test vector NIST #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"65fe32b649dc328c9f531584897e85b3":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":"":"65fe32b649dc328c9f531584897e85b3":"FAIL":"" AES-192-CCM test vector NIST #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"9f6ca4af9b159148c889a6584d1183ea26e2614874b05045":"75dea8d1":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"9f6ca4af9b159148c889a6584d1183ea26e2614874b05045":"75dea8d1":"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" AES-192-CCM test vector NIST #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1eb":"d7965825":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1eb":"d7965825":"FAIL":"" AES-192-CCM test vector NIST #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd1":"4d1d980d6fe0fb44b421992662b97975":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd1":"4d1d980d6fe0fb44b421992662b97975":"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" AES-192-CCM test vector NIST #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa20660":"3c51d36c826f01384100886198a7f6a3":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa20660":"3c51d36c826f01384100886198a7f6a3":"FAIL":"" AES-192-CCM test vector NIST #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854ccc":"c25e9fce":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854ccc":"c25e9fce":"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" AES-192-CCM test vector NIST #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae9":"8ecedb3e":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae9":"8ecedb3e":"FAIL":"" AES-192-CCM test vector NIST #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f317":"8464a6f7fa2b76744e8e8d95691cecb8":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f317":"8464a6f7fa2b76744e8e8d95691cecb8":"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" AES-192-CCM test vector NIST #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c":"06bd6dc2e6bcc3436cffb969ae900388":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_192_CCM:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c":"06bd6dc2e6bcc3436cffb969ae900388":"FAIL":"" AES-256-CCM test vector NIST #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"a544218dadd3c1":"":"":"469c90bb":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"a544218dadd3c1":"":"":"469c90bb":"":"" AES-256-CCM test vector NIST #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"d3d5424e20fbec":"":"":"46a908ed":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"d3d5424e20fbec":"":"":"46a908ed":"FAIL":"" AES-256-CCM test vector NIST #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"a544218dadd3c1":"":"":"8207eb14d33855a52acceed17dbcbf6e":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"a544218dadd3c1":"":"":"8207eb14d33855a52acceed17dbcbf6e":"":"" AES-256-CCM test vector NIST #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"d3d5424e20fbec":"":"":"60f8e127cb4d30db6df0622158cd931d":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"d3d5424e20fbec":"":"":"60f8e127cb4d30db6df0622158cd931d":"FAIL":"" AES-256-CCM test vector NIST #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"a544218dadd3c10583db49cf39":"":"":"8a19a133":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"a544218dadd3c10583db49cf39":"":"":"8a19a133":"":"" AES-256-CCM test vector NIST #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"3c0e2815d37d844f7ac240ba9d":"":"":"2e317f1b":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"3c0e2815d37d844f7ac240ba9d":"":"":"2e317f1b":"FAIL":"" AES-256-CCM test vector NIST #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"a544218dadd3c10583db49cf39":"":"":"97e1a8dd4259ccd2e431e057b0397fcf":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"a544218dadd3c10583db49cf39":"":"":"97e1a8dd4259ccd2e431e057b0397fcf":"":"" AES-256-CCM test vector NIST #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"3c0e2815d37d844f7ac240ba9d":"":"":"5a9596c511ea6a8671adefc4f2157d8b":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"3c0e2815d37d844f7ac240ba9d":"":"":"5a9596c511ea6a8671adefc4f2157d8b":"FAIL":"" AES-256-CCM test vector NIST #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"a544218dadd3c1":"":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b7":"22aa8d59":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"a544218dadd3c1":"":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b7":"22aa8d59":"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" AES-256-CCM test vector NIST #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"bfcda8b5a2d0d2":"":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a202":"77d00a75":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"bfcda8b5a2d0d2":"":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a202":"77d00a75":"FAIL":"" AES-256-CCM test vector NIST #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"a544218dadd3c1":"":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd":"374f3bb6db8377ebfc79674858c4f305":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"a544218dadd3c1":"":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd":"374f3bb6db8377ebfc79674858c4f305":"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" AES-256-CCM test vector NIST #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bfcda8b5a2d0d2":"":"afa1fa8e8a70e26b02161150556d604101fdf423f332c336":"3275f2a4907d51b734fe7238cebbd48f":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bfcda8b5a2d0d2":"":"afa1fa8e8a70e26b02161150556d604101fdf423f332c336":"3275f2a4907d51b734fe7238cebbd48f":"FAIL":"" AES-256-CCM test vector NIST #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"a544218dadd3c10583db49cf39":"":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f412":"3d14fb3f":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"a544218dadd3c10583db49cf39":"":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f412":"3d14fb3f":"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" AES-256-CCM test vector NIST #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"894dcaa61008eb8fb052c60d41":"":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d":"8d0c0099":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"894dcaa61008eb8fb052c60d41":"":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d":"8d0c0099":"FAIL":"" AES-256-CCM test vector NIST #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"a544218dadd3c10583db49cf39":"":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c42":"3a578d179902f912f9ea1afbce1120b3":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"a544218dadd3c10583db49cf39":"":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c42":"3a578d179902f912f9ea1afbce1120b3":"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" AES-256-CCM test vector NIST #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"894dcaa61008eb8fb052c60d41":"":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae76":"9084607b83bd06e6442eac8dacf583cc":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"894dcaa61008eb8fb052c60d41":"":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae76":"9084607b83bd06e6442eac8dacf583cc":"FAIL":"" AES-256-CCM test vector NIST #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"":"92d00fbe":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"":"92d00fbe":"":"" AES-256-CCM test vector NIST #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":"":"9143e5c4":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":"":"9143e5c4":"FAIL":"" AES-256-CCM test vector NIST #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"":"93af11a08379eb37a16aa2837f09d69d":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"":"93af11a08379eb37a16aa2837f09d69d":"":"" AES-256-CCM test vector NIST #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":"":"d19b0c14ec686a7961ca7c386d125a65":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":"":"d19b0c14ec686a7961ca7c386d125a65":"FAIL":"" AES-256-CCM test vector NIST #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"":"866d4227":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"":"866d4227":"":"" AES-256-CCM test vector NIST #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":"":"94cb1127":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":"":"94cb1127":"FAIL":"" AES-256-CCM test vector NIST #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"":"867b0d87cf6e0f718200a97b4f6d5ad5":"" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"":"867b0d87cf6e0f718200a97b4f6d5ad5":"":"" AES-256-CCM test vector NIST #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":"":"677a040d46ee3f2b7838273bdad14f16":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":"":"677a040d46ee3f2b7838273bdad14f16":"FAIL":"" AES-256-CCM test vector NIST #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc5608":"3ebc7720":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc5608":"3ebc7720":"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" AES-256-CCM test vector NIST #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81":"c44db2c9":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81":"c44db2c9":"FAIL":"" AES-256-CCM test vector NIST #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce":"1ac68bd42f5ec7fa7e068cc0ecd79c2a":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce":"1ac68bd42f5ec7fa7e068cc0ecd79c2a":"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" AES-256-CCM test vector NIST #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":"d543acda712b898cbb27b8f598b2e4438ce587a836e27851":"47c3338a2400809e739b63ba8227d2f9":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":"d543acda712b898cbb27b8f598b2e4438ce587a836e27851":"47c3338a2400809e739b63ba8227d2f9":"FAIL":"" AES-256-CCM test vector NIST #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69":"ef891339":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69":"ef891339":"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" AES-256-CCM test vector NIST #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f6":"3d488623":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f6":"3d488623":"FAIL":"" AES-256-CCM test vector NIST #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781":"367f30f2eaad8c063ca50795acd90203":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781":"367f30f2eaad8c063ca50795acd90203":"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" AES-256-CCM test vector NIST #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc":"4b41096dfdbe9cc1ab610f8f3e038d16":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_AES_256_CCM:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc":"4b41096dfdbe9cc1ab610f8f3e038d16":"FAIL":"" Camellia-CCM test vector RFC 5528 #1 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000003020100A0A1A2A3A4A5":"0001020304050607":"BA737185E719310492F38A5F1251DA55FAFBC949848A0D":"FCAECE746B3DB9AD":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000003020100A0A1A2A3A4A5":"0001020304050607":"BA737185E719310492F38A5F1251DA55FAFBC949848A0D":"FCAECE746B3DB9AD":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E" Camellia-CCM test vector RFC 5528 #2 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000004030201A0A1A2A3A4A5":"0001020304050607":"5D2564BF8EAFE1D99526EC016D1BF0424CFBD2CD62848F33":"60B2295DF24283E8":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000004030201A0A1A2A3A4A5":"0001020304050607":"5D2564BF8EAFE1D99526EC016D1BF0424CFBD2CD62848F33":"60B2295DF24283E8":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" Camellia-CCM test vector RFC 5528 #3 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000005040302A0A1A2A3A4A5":"0001020304050607":"81F663D6C7787817F9203608B982AD15DC2BBD87D756F79204":"F551D6682F23AA46":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000005040302A0A1A2A3A4A5":"0001020304050607":"81F663D6C7787817F9203608B982AD15DC2BBD87D756F79204":"F551D6682F23AA46":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20" Camellia-CCM test vector RFC 5528 #4 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000006050403A0A1A2A3A4A5":"000102030405060708090A0B":"CAEF1E827211B08F7BD90F08C77288C070A4A0":"8B3A933A63E497A0":"0C0D0E0F101112131415161718191A1B1C1D1E" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000006050403A0A1A2A3A4A5":"000102030405060708090A0B":"CAEF1E827211B08F7BD90F08C77288C070A4A0":"8B3A933A63E497A0":"":"0C0D0E0F101112131415161718191A1B1C1D1E" Camellia-CCM test vector RFC 5528 #5 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000007060504A0A1A2A3A4A5":"000102030405060708090A0B":"2AD3BAD94FC52E92BE438E827C1023B96A8A7725":"8FA17BA7F331DB09":"0C0D0E0F101112131415161718191A1B1C1D1E1F" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000007060504A0A1A2A3A4A5":"000102030405060708090A0B":"2AD3BAD94FC52E92BE438E827C1023B96A8A7725":"8FA17BA7F331DB09":"":"0C0D0E0F101112131415161718191A1B1C1D1E1F" Camellia-CCM test vector RFC 5528 #6 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000008070605A0A1A2A3A4A5":"000102030405060708090A0B":"FEA5480BA53FA8D3C34422AACE4DE67FFA3BB73BAB":"AB36A1EE4FE0FE28":"0C0D0E0F101112131415161718191A1B1C1D1E1F20" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000008070605A0A1A2A3A4A5":"000102030405060708090A0B":"FEA5480BA53FA8D3C34422AACE4DE67FFA3BB73BAB":"AB36A1EE4FE0FE28":"":"0C0D0E0F101112131415161718191A1B1C1D1E1F20" Camellia-CCM test vector RFC 5528 #7 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000009080706A0A1A2A3A4A5":"0001020304050607":"54532026E54C119A8D36D9EC6E1ED97416C8708C4B5C2C":"ACAFA3BCCF7A4EBF9573":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"00000009080706A0A1A2A3A4A5":"0001020304050607":"54532026E54C119A8D36D9EC6E1ED97416C8708C4B5C2C":"ACAFA3BCCF7A4EBF9573":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E" Camellia-CCM test vector RFC 5528 #8 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000A090807A0A1A2A3A4A5":"0001020304050607":"8AD19B001A87D148F4D92BEF34525CCCE3A63C6512A6F575":"7388E4913EF14701F441":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000A090807A0A1A2A3A4A5":"0001020304050607":"8AD19B001A87D148F4D92BEF34525CCCE3A63C6512A6F575":"7388E4913EF14701F441":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" Camellia-CCM test vector RFC 5528 #9 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000B0A0908A0A1A2A3A4A5":"0001020304050607":"5DB08D62407E6E31D60F9CA2C60474219AC0BE50C0D4A57787":"94D6E230CD25C9FEBF87":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000B0A0908A0A1A2A3A4A5":"0001020304050607":"5DB08D62407E6E31D60F9CA2C60474219AC0BE50C0D4A57787":"94D6E230CD25C9FEBF87":"":"08090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20" Camellia-CCM test vector RFC 5528 #10 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000C0B0A09A0A1A2A3A4A5":"000102030405060708090A0B":"DB118CCEC1B8761C877CD8963A67D6F3BBBC5C":"D09299EB11F312F23237":"0C0D0E0F101112131415161718191A1B1C1D1E" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000C0B0A09A0A1A2A3A4A5":"000102030405060708090A0B":"DB118CCEC1B8761C877CD8963A67D6F3BBBC5C":"D09299EB11F312F23237":"":"0C0D0E0F101112131415161718191A1B1C1D1E" Camellia-CCM test vector RFC 5528 #11 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000D0C0B0AA0A1A2A3A4A5":"000102030405060708090A0B":"7CC83D8DC49103525B483DC5CA7EA9AB812B7056":"079DAFFADA16CCCF2C4E":"0C0D0E0F101112131415161718191A1B1C1D1E1F" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000D0C0B0AA0A1A2A3A4A5":"000102030405060708090A0B":"7CC83D8DC49103525B483DC5CA7EA9AB812B7056":"079DAFFADA16CCCF2C4E":"":"0C0D0E0F101112131415161718191A1B1C1D1E1F" Camellia-CCM test vector RFC 5528 #12 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000E0D0C0BA0A1A2A3A4A5":"000102030405060708090A0B":"2CD35B8820D23E7AA351B0E92FC79367238B2CC748":"CBB94C2947793D64AF75":"0C0D0E0F101112131415161718191A1B1C1D1E1F20" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF":"0000000E0D0C0BA0A1A2A3A4A5":"000102030405060708090A0B":"2CD35B8820D23E7AA351B0E92FC79367238B2CC748":"CBB94C2947793D64AF75":"":"0C0D0E0F101112131415161718191A1B1C1D1E1F20" Camellia-CCM test vector RFC 5528 #13 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00A970110E1927B160B6A31C1C":"6B7F464507FAE496":"A435D727348DDD22907F7EB8F5FDBB4D939DA6524DB4F6":"4558C02D25B127EE":"C6B5F3E6CA2311AEF7472B203E735EA561ADB17D56C5A3" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00A970110E1927B160B6A31C1C":"6B7F464507FAE496":"A435D727348DDD22907F7EB8F5FDBB4D939DA6524DB4F6":"4558C02D25B127EE":"":"C6B5F3E6CA2311AEF7472B203E735EA561ADB17D56C5A3" Camellia-CCM test vector RFC 5528 #14 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"0083CD8CE0CB42B160B6A31C1C":"986605B43DF15DE7":"8AE052508FBECA932E346F05E0DC0DFBCF939EAFFA3E587C":"867D6E1C48703806":"01F6CE6764C574483BB02E6BBF1E0ABD26A22572B4D80EE7" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"0083CD8CE0CB42B160B6A31C1C":"986605B43DF15DE7":"8AE052508FBECA932E346F05E0DC0DFBCF939EAFFA3E587C":"867D6E1C48703806":"":"01F6CE6764C574483BB02E6BBF1E0ABD26A22572B4D80EE7" Camellia-CCM test vector RFC 5528 #15 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"005F54950B18F2B160B6A31C1C":"48F2E7E1A7671A51":"08B67EE21C8BF26E473E408599E9C0836D6AF0BB18DF55466C":"A80878A790476DE5":"CDF1D8406FC2E9014953897005FBFB8BA57276F92404608E08" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"005F54950B18F2B160B6A31C1C":"48F2E7E1A7671A51":"08B67EE21C8BF26E473E408599E9C0836D6AF0BB18DF55466C":"A80878A790476DE5":"":"CDF1D8406FC2E9014953897005FBFB8BA57276F92404608E08" Camellia-CCM test vector RFC 5528 #16 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00EC600863319AB160B6A31C1C":"DE97DF3B8CBD6D8E5030DA4C":"63B78B4967B19EDBB733CD1114F64EB2260893":"68C354828D950CC5":"B005DCFA0B59181426A961685A993D8C43185B" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00EC600863319AB160B6A31C1C":"DE97DF3B8CBD6D8E5030DA4C":"63B78B4967B19EDBB733CD1114F64EB2260893":"68C354828D950CC5":"":"B005DCFA0B59181426A961685A993D8C43185B" Camellia-CCM test vector RFC 5528 #17 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"0060CFF1A31EA1B160B6A31C1C":"A5EE93E457DF05466E782DCF":"0BC6BBE2A8B909F4629EE6DC148DA44410E18AF4":"3147383276F66A9F":"2E20211298105F129D5ED95B93F72D30B2FACCD7" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"0060CFF1A31EA1B160B6A31C1C":"A5EE93E457DF05466E782DCF":"0BC6BBE2A8B909F4629EE6DC148DA44410E18AF4":"3147383276F66A9F":"":"2E20211298105F129D5ED95B93F72D30B2FACCD7" Camellia-CCM test vector RFC 5528 #18 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"000F85CD995C97B160B6A31C1C":"24AA1BF9A5CD876182A25074":"222AD632FA31D6AF970C345F7E77CA3BD0DC25B340":"A1A3D31F8D4B44B7":"2645941E75632D3491AF0FC0C9876C3BE4AA7468C9" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"000F85CD995C97B160B6A31C1C":"24AA1BF9A5CD876182A25074":"222AD632FA31D6AF970C345F7E77CA3BD0DC25B340":"A1A3D31F8D4B44B7":"":"2645941E75632D3491AF0FC0C9876C3BE4AA7468C9" Camellia-CCM test vector RFC 5528 #19 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00C29B2CAAC4CDB160B6A31C1C":"691946B9CA07BE87":"05B8E1B9C49CFD56CF130AA6251DC2ECC06CCC508FE697":"A0066D57C84BEC182768":"070135A6437C9DB120CD61D8F6C39C3EA125FD95A0D23D" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00C29B2CAAC4CDB160B6A31C1C":"691946B9CA07BE87":"05B8E1B9C49CFD56CF130AA6251DC2ECC06CCC508FE697":"A0066D57C84BEC182768":"":"070135A6437C9DB120CD61D8F6C39C3EA125FD95A0D23D" Camellia-CCM test vector RFC 5528 #20 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"002C6B7595EE62B160B6A31C1C":"D0C54ECB84627DC4":"54CEB968DEE23611575EC003DFAA1CD48849BDF5AE2EDB6B":"7FA775B150ED4383C5A9":"C8C0880E6C636E20093DD6594217D2E18877DB264E71A5CC" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"002C6B7595EE62B160B6A31C1C":"D0C54ECB84627DC4":"54CEB968DEE23611575EC003DFAA1CD48849BDF5AE2EDB6B":"7FA775B150ED4383C5A9":"":"C8C0880E6C636E20093DD6594217D2E18877DB264E71A5CC" Camellia-CCM test vector RFC 5528 #21 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00C53CD4C2AA24B160B6A31C1C":"E285E0E4808CDA3D":"B1404546BF667210CA28E309B39BD6CA7E9FC8285FE698D43C":"D20A02E0BDCAED2010D3":"F75DAA0710C4E64297794DC2B7D2A20757B1AA4E448002FFAB" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00C53CD4C2AA24B160B6A31C1C":"E285E0E4808CDA3D":"B1404546BF667210CA28E309B39BD6CA7E9FC8285FE698D43C":"D20A02E0BDCAED2010D3":"":"F75DAA0710C4E64297794DC2B7D2A20757B1AA4E448002FFAB" Camellia-CCM test vector RFC 5528 #22 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00BEE9267FBADCB160B6A31C1C":"6CAEF9941141570D7C813405":"94C8959C11569A297831A721005857AB61B87A":"2DEA0936B6EB5F625F5D":"C238822FAC5F98FF929405B0AD127A4E41854E" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00BEE9267FBADCB160B6A31C1C":"6CAEF9941141570D7C813405":"94C8959C11569A297831A721005857AB61B87A":"2DEA0936B6EB5F625F5D":"":"C238822FAC5F98FF929405B0AD127A4E41854E" Camellia-CCM test vector RFC 5528 #23 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00DFA8B1245007B160B6A31C1C":"36A52CF16B19A2037AB7011E":"5869E3AAD2447C74E0FC05F9A4EA74577F4DE8CA":"8924764296AD04119CE7":"4DBF3E774AD245E5D5891F9D1C32A0AE022C85D7" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"00DFA8B1245007B160B6A31C1C":"36A52CF16B19A2037AB7011E":"5869E3AAD2447C74E0FC05F9A4EA74577F4DE8CA":"8924764296AD04119CE7":"":"4DBF3E774AD245E5D5891F9D1C32A0AE022C85D7" Camellia-CCM test vector RFC 5528 #24 depends_on:MBEDTLS_CAMELLIA_C:MBEDTLS_CCM_C -auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"003B8FD8D3A937B160B6A31C1C":"A4D499F78419728C19178B0C":"4B198156393B0F7796086AAFB454F8C3F034CCA966":"945F1FCEA7E11BEE6A2F":"9DC9EDAE2FF5DF8636E8C6DE0EED55F7867E33337D" +auth_crypt_tv:MBEDTLS_CIPHER_CAMELLIA_128_CCM:"D75C2778078CA93D971F96FDE720F4CD":"003B8FD8D3A937B160B6A31C1C":"A4D499F78419728C19178B0C":"4B198156393B0F7796086AAFB454F8C3F034CCA966":"945F1FCEA7E11BEE6A2F":"":"9DC9EDAE2FF5DF8636E8C6DE0EED55F7867E33337D" diff --git a/tests/suites/test_suite_cipher.chachapoly.data b/tests/suites/test_suite_cipher.chachapoly.data index ed2455fd54..9d74d56633 100644 --- a/tests/suites/test_suite_cipher.chachapoly.data +++ b/tests/suites/test_suite_cipher.chachapoly.data @@ -112,11 +112,11 @@ enc_dec_buf_multipart:MBEDTLS_CIPHER_CHACHA20_POLY1305:256:16:16:-1:16:16:16:16 ChaCha20+Poly1305 RFC 7539 Test Vector #1 depends_on:MBEDTLS_CHACHAPOLY_C -auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d" +auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"eead9d67890cbb22392336fea1851f38":"":"496e7465726e65742d4472616674732061726520647261667420646f63756d656e74732076616c696420666f722061206d6178696d756d206f6620736978206d6f6e74687320616e64206d617920626520757064617465642c207265706c616365642c206f72206f62736f6c65746564206279206f7468657220646f63756d656e747320617420616e792074696d652e20497420697320696e617070726f70726961746520746f2075736520496e7465726e65742d447261667473206173207265666572656e6365206d6174657269616c206f7220746f2063697465207468656d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67726573732e2fe2809d" ChaCha20+Poly1305 RFC 7539 Test Vector #1 Unauthentic (1st bit flipped) depends_on:MBEDTLS_CHACHAPOLY_C -auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"6ead9d67890cbb22392336fea1851f38":"FAIL" +auth_crypt_tv:MBEDTLS_CIPHER_CHACHA20_POLY1305:"1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0":"000000000102030405060708":"f33388860000000000004e91":"64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb24c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c8559797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523eaf4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a1049e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29a6ad5cb4022b02709b":"6ead9d67890cbb22392336fea1851f38":"FAIL":"" Chacha20+Poly1305 RFC 7539 Test Vector #1 (streaming) depends_on:MBEDTLS_CHACHAPOLY_C diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index e2463a8fcc..435c9a384d 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -534,8 +534,8 @@ exit: void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, uint8_t * iv, uint32_t iv_len, uint8_t * ad, uint32_t ad_len, uint8_t * cipher, uint32_t cipher_len, - uint8_t * tag, uint32_t tag_len, uint8_t * clear, - uint32_t clear_len ) + uint8_t * tag, uint32_t tag_len, char * result, + uint8_t * clear, uint32_t clear_len ) { int ret; unsigned char output[267]; /* above + 2 (overwrite check) */ @@ -546,6 +546,7 @@ void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, mbedtls_cipher_init( &ctx ); memset( output, 0xFF, sizeof( output ) ); + memset( my_tag, 0xFF, sizeof( my_tag ) ); /* Prepare context */ @@ -563,7 +564,7 @@ void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, TEST_ASSERT( output[outlen + 1] == 0xFF ); /* make sure the message is rejected if it should be */ - if( strcmp( clear, "FAIL" ) == 0 ) + if( strcmp( result, "FAIL" ) == 0 ) { TEST_ASSERT( ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED ); goto exit; diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function index cebfe2c9d2..8c51bf20af 100644 --- a/tests/suites/test_suite_debug.function +++ b/tests/suites/test_suite_debug.function @@ -122,6 +122,7 @@ void mbedtls_debug_print_buf( char * file, int line, char * text, mbedtls_ssl_conf_dbg( &conf, string_debug, &buffer); + mbedtls_debug_print_buf( &ssl, 0, file, line, text, data, data_len ); TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 ); diff --git a/tests/suites/test_suite_ecp.data b/tests/suites/test_suite_ecp.data index 8e9d9fa49a..e168090316 100644 --- a/tests/suites/test_suite_ecp.data +++ b/tests/suites/test_suite_ecp.data @@ -135,21 +135,21 @@ depends_on:MBEDTLS_ECP_DP_SECP521R1_ENABLED ecp_tls_write_read_point:MBEDTLS_ECP_DP_SECP521R1 ECP tls read group #1 (record too short) -mbedtls_ecp_tls_read_group:"0313":MBEDTLS_ERR_ECP_BAD_INPUT_DATA:0 +mbedtls_ecp_tls_read_group:"0313":MBEDTLS_ERR_ECP_BAD_INPUT_DATA:0:0 ECP tls read group #2 (bad curve_type) -mbedtls_ecp_tls_read_group:"010013":MBEDTLS_ERR_ECP_BAD_INPUT_DATA:0 +mbedtls_ecp_tls_read_group:"010013":MBEDTLS_ERR_ECP_BAD_INPUT_DATA:0:0 ECP tls read group #3 (unknown curve) -mbedtls_ecp_tls_read_group:"030010":MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE:0 +mbedtls_ecp_tls_read_group:"030010":MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE:0:0 ECP tls read group #4 (OK, buffer just fits) depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED -mbedtls_ecp_tls_read_group:"030017":0:256 +mbedtls_ecp_tls_read_group:"030017":0:256:3 ECP tls read group #5 (OK, buffer continues) depends_on:MBEDTLS_ECP_DP_SECP384R1_ENABLED -mbedtls_ecp_tls_read_group:"0300180000":0:384 +mbedtls_ecp_tls_read_group:"0300180000":0:384:3 ECP tls write-read group #1 depends_on:MBEDTLS_ECP_DP_SECP192R1_ENABLED diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index dc6fac5cb0..8c8dac04a3 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -241,7 +241,7 @@ void ecp_read_binary( int id, uint8_t * buf, uint32_t ilen, char * x, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - + TEST_ASSERT( mbedtls_ecp_point_read_binary( &grp, &P, buf, ilen ) == ret ); if( ret == 0 ) { @@ -275,14 +275,14 @@ void mbedtls_ecp_tls_read_point( int id, uint8_t * buf, uint32_t ilen, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - + TEST_ASSERT( mbedtls_ecp_tls_read_point( &grp, &P, &vbuf, ilen ) == ret ); if( ret == 0 ) { TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.X, &X ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.Y, &Y ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.Z, &Z ) == 0 ); - TEST_ASSERT( *vbuf == 0x00 ); + TEST_ASSERT( vbuf - buf == ilen ); } exit: @@ -345,7 +345,7 @@ exit: /* BEGIN_CASE */ void mbedtls_ecp_tls_read_group( uint8_t * buf, uint32_t len, int result, - int bits ) + int bits, int record_len ) { mbedtls_ecp_group grp; const unsigned char *vbuf = buf; @@ -353,14 +353,13 @@ void mbedtls_ecp_tls_read_group( uint8_t * buf, uint32_t len, int result, mbedtls_ecp_group_init( &grp ); - ret = mbedtls_ecp_tls_read_group( &grp, &vbuf, len ); TEST_ASSERT( ret == result ); if( ret == 0) { TEST_ASSERT( mbedtls_mpi_bitlen( &grp.P ) == (size_t) bits ); - TEST_ASSERT( *vbuf == 0x00 ); + TEST_ASSERT( vbuf - buf == record_len); } exit: diff --git a/tests/suites/test_suite_gcm.aes128_de.data b/tests/suites/test_suite_gcm.aes128_de.data index 2a2e32f0d3..a42fe859d8 100644 --- a/tests/suites/test_suite_gcm.aes128_de.data +++ b/tests/suites/test_suite_gcm.aes128_de.data @@ -1,674 +1,674 @@ AES-GCM NIST Validation (AES-128,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d785dafea3e966731ef6fc6202262584":"":"d91a46205ee94058b3b8403997592dd2":"":128:"3b92a17c1b9c3578a68cffea5a5b6245":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d785dafea3e966731ef6fc6202262584":"":"d91a46205ee94058b3b8403997592dd2":"":128:"3b92a17c1b9c3578a68cffea5a5b6245":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aec963833b9098de1ababc853ab74d96":"":"4e0ffd93beffd732c6f7d6ad606a2d24":"":128:"e9fcedc176dfe587dc61b2011010cdf1":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aec963833b9098de1ababc853ab74d96":"":"4e0ffd93beffd732c6f7d6ad606a2d24":"":128:"e9fcedc176dfe587dc61b2011010cdf1":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c4fb9e3393681da9cec5ec96f87c5c31":"":"845e910bc055d895879f62101d08b4c7":"":128:"99fb783c497416e4b6e2a5de7c782057":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c4fb9e3393681da9cec5ec96f87c5c31":"":"845e910bc055d895879f62101d08b4c7":"":128:"99fb783c497416e4b6e2a5de7c782057":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2a930f2e09beceacd9919cb76f2ac8d3":"":"340d9af44f6370eff534c653033a785a":"":120:"0c1e5e9c8fe5edfd11f114f3503d63":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2a930f2e09beceacd9919cb76f2ac8d3":"":"340d9af44f6370eff534c653033a785a":"":120:"0c1e5e9c8fe5edfd11f114f3503d63":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe71177e02073b1c407b5724e2263a5e":"":"83c23d20d2a9d4b8f92da96587c96b18":"":120:"43b2ca795420f35f6cb39f5dfa47a2":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe71177e02073b1c407b5724e2263a5e":"":"83c23d20d2a9d4b8f92da96587c96b18":"":120:"43b2ca795420f35f6cb39f5dfa47a2":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b02392fd7f228888c281e59d1eaa15fb":"":"2726344ba8912c737e195424e1e6679e":"":120:"a10b601ca8053536a2af2cc255d2b6":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b02392fd7f228888c281e59d1eaa15fb":"":"2726344ba8912c737e195424e1e6679e":"":120:"a10b601ca8053536a2af2cc255d2b6":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"21895cbafc16b7b8bf5867e88e0853d4":"":"f987ce1005d9bbd31d2452fb80957753":"":112:"952a7e265830d58a6778d68b9450":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"21895cbafc16b7b8bf5867e88e0853d4":"":"f987ce1005d9bbd31d2452fb80957753":"":112:"952a7e265830d58a6778d68b9450":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bb9742bf47f68caf64963d7c10a97b0":"":"34a85669de64e1cd44731905fddbcbc5":"":112:"e9b6be928aa77b2de28b480ae74c":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bb9742bf47f68caf64963d7c10a97b0":"":"34a85669de64e1cd44731905fddbcbc5":"":112:"e9b6be928aa77b2de28b480ae74c":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4e9708e4b37e2e1b5feaf4f5ab54e2a6":"":"1c53a9fdd23919b036d99560619a9939":"":112:"6611b50d6fbca83047f9f5fe1768":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4e9708e4b37e2e1b5feaf4f5ab54e2a6":"":"1c53a9fdd23919b036d99560619a9939":"":112:"6611b50d6fbca83047f9f5fe1768":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"82fede79db25f00be96eb050a22cea87":"":"e9c50b517ab26c89b83c1f0cac50162c":"":104:"d0c0ce9db60b77b0e31d05e048":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"82fede79db25f00be96eb050a22cea87":"":"e9c50b517ab26c89b83c1f0cac50162c":"":104:"d0c0ce9db60b77b0e31d05e048":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1d98566fca5201abb12914311a8bd532":"":"590aef4b46a9023405d075edab7e6849":"":104:"a1cfd1a27b341f49eda2ca8305":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1d98566fca5201abb12914311a8bd532":"":"590aef4b46a9023405d075edab7e6849":"":104:"a1cfd1a27b341f49eda2ca8305":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3038771820c2e1319f02a74b8a7a0c08":"":"e556d9f07fb69d7e9a644261c80fac92":"":104:"4d2f005d662b6a8787f231c5e1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3038771820c2e1319f02a74b8a7a0c08":"":"e556d9f07fb69d7e9a644261c80fac92":"":104:"4d2f005d662b6a8787f231c5e1":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0fb7eef50de598d7d8b508d019a30d5a":"":"a2a2617040116c2c7e4236d2d8278213":"":96:"68413c58df7bb5f067197ca0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0fb7eef50de598d7d8b508d019a30d5a":"":"a2a2617040116c2c7e4236d2d8278213":"":96:"68413c58df7bb5f067197ca0":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8cc58b609204215c8ab4908286e56e5c":"":"fb83ea637279332677b5f68081173e99":"":96:"a2a9160d82739a55d8cd419f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8cc58b609204215c8ab4908286e56e5c":"":"fb83ea637279332677b5f68081173e99":"":96:"a2a9160d82739a55d8cd419f":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81a5fd184742a478432963f6477e8f92":"":"da297cbb53b11d7c379e0566299b4d5a":"":96:"200bee49466fdda2f21f0062":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81a5fd184742a478432963f6477e8f92":"":"da297cbb53b11d7c379e0566299b4d5a":"":96:"200bee49466fdda2f21f0062":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f604ac66d626959e595cbb7b4128e096":"":"269d2a49d533c6bb38008711f38e0b39":"":64:"468200fa4683e8be":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f604ac66d626959e595cbb7b4128e096":"":"269d2a49d533c6bb38008711f38e0b39":"":64:"468200fa4683e8be":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2e308ba7903e925f768c1d00ff3eb623":"":"335acd2aa48a47a37cfe21e491f1b141":"":64:"4872bfd5e2ff55f6":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2e308ba7903e925f768c1d00ff3eb623":"":"335acd2aa48a47a37cfe21e491f1b141":"":64:"4872bfd5e2ff55f6":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1304e2a5a3520454a5109df61a67da7a":"":"dbe8b452acf4fa1444c3668e9ee72d26":"":64:"83a0d3440200ca95":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1304e2a5a3520454a5109df61a67da7a":"":"dbe8b452acf4fa1444c3668e9ee72d26":"":64:"83a0d3440200ca95":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ecf1ec2c9a8f2e9cc799f9b9fddb3232":"":"ddf0b695aef5df2b594fcaae72b7e41c":"":32:"2819aedf":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ecf1ec2c9a8f2e9cc799f9b9fddb3232":"":"ddf0b695aef5df2b594fcaae72b7e41c":"":32:"2819aedf":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9ab5c8ca905b5fe50461f4a68941144b":"":"96dd3927a96e16123f2e9d6b367d303f":"":32:"6e0c53ef":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9ab5c8ca905b5fe50461f4a68941144b":"":"96dd3927a96e16123f2e9d6b367d303f":"":32:"6e0c53ef":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5fc7af605721a9cfe61c1ee6a4b3e22":"":"6b757d4055823d1035d01077666037d6":"":32:"e8c09ddd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5fc7af605721a9cfe61c1ee6a4b3e22":"":"6b757d4055823d1035d01077666037d6":"":32:"e8c09ddd":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"03c0b4a6e508a8490db0d086a82c9db7":"":"ac52f6c1a05030321fa39f87e89fdb5e":"33316ca79d10a79f4fd038593e8eef09625089dc4e0ffe4bc1f2871554fa6666ab3e7fe7885edef694b410456f3ec0e513bb25f1b48d95e4820c5972c1aabb25c84c08566002dadc36df334c1ce86847964a122016d389ac873bca8c335a7a99bcef91e1b985ae5d488a2d7f78b4bf14e0c2dc715e814f4e24276057cf668172":128:"756292d8b4653887edef51679b161812":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"03c0b4a6e508a8490db0d086a82c9db7":"":"ac52f6c1a05030321fa39f87e89fdb5e":"33316ca79d10a79f4fd038593e8eef09625089dc4e0ffe4bc1f2871554fa6666ab3e7fe7885edef694b410456f3ec0e513bb25f1b48d95e4820c5972c1aabb25c84c08566002dadc36df334c1ce86847964a122016d389ac873bca8c335a7a99bcef91e1b985ae5d488a2d7f78b4bf14e0c2dc715e814f4e24276057cf668172":128:"756292d8b4653887edef51679b161812":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b228d3d15219ea9ad5651fce02c8374d":"":"5c7eafaead029c3fe3cf3835fe758d0e":"8c35dd805c08686b9b4d460f81b4dcb8c46c6d57842dc3e72ba90952e2bebf17fe7184445b02f801800a944486d662a127d01d3b7f42679052cdc73ce533129af8d13957415c5495142157d6ce8a68aa977e56f562fed98e468e42522767656ce50369471060381bb752dd5e77c79677a4cadffa39e518e30a789e793b07ea21":128:"a4dde1ab93c84937c3bbc3ad5237818d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b228d3d15219ea9ad5651fce02c8374d":"":"5c7eafaead029c3fe3cf3835fe758d0e":"8c35dd805c08686b9b4d460f81b4dcb8c46c6d57842dc3e72ba90952e2bebf17fe7184445b02f801800a944486d662a127d01d3b7f42679052cdc73ce533129af8d13957415c5495142157d6ce8a68aa977e56f562fed98e468e42522767656ce50369471060381bb752dd5e77c79677a4cadffa39e518e30a789e793b07ea21":128:"a4dde1ab93c84937c3bbc3ad5237818d":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"776afcbabedd5577fe660a60f920b536":"":"5bbb7f1b14084e520408dd87b97705e9":"44631fc9d4a07416b0dfb4e2b42071e3e2be45502c9ddf72b3e61810eeda31a7d685ebb2ee43a2c06af374569f439ee1668c550067de2dece9ec46ee72b260858d6033f814e85275c5ae669b60803a8c516de32804fa34d3a213ccfaf6689046e25eeb30b9e1608e689f4d31cc664b83a468a51165f5625f12f098a6bf7ddab2":128:"a5347d41d93b587240651bcd5230264f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"776afcbabedd5577fe660a60f920b536":"":"5bbb7f1b14084e520408dd87b97705e9":"44631fc9d4a07416b0dfb4e2b42071e3e2be45502c9ddf72b3e61810eeda31a7d685ebb2ee43a2c06af374569f439ee1668c550067de2dece9ec46ee72b260858d6033f814e85275c5ae669b60803a8c516de32804fa34d3a213ccfaf6689046e25eeb30b9e1608e689f4d31cc664b83a468a51165f5625f12f098a6bf7ddab2":128:"a5347d41d93b587240651bcd5230264f":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"20abeafa25fc4ea7d0592cb3e9b4d5fe":"":"3aba79a58c5aa664856b41d552c7a8d3":"98cfecaae9eb9a7c3b17e6bc5f80d8a4bf7a9f4fa5e01b74cae15ee6af14633205aafe3b28fb7b7918e12322ea27352056a603746d728a61361134a561619400ff2bf679045bac2e0fbc2c1d41f8faba4b27c7827bceda4e9bf505df4185515dd3a5e26f7639c8ad5a38bc5906a44be062f02cc53862678ae36fa3de3c02c982":120:"2a67ad1471a520fe09a304f0975f31":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"20abeafa25fc4ea7d0592cb3e9b4d5fe":"":"3aba79a58c5aa664856b41d552c7a8d3":"98cfecaae9eb9a7c3b17e6bc5f80d8a4bf7a9f4fa5e01b74cae15ee6af14633205aafe3b28fb7b7918e12322ea27352056a603746d728a61361134a561619400ff2bf679045bac2e0fbc2c1d41f8faba4b27c7827bceda4e9bf505df4185515dd3a5e26f7639c8ad5a38bc5906a44be062f02cc53862678ae36fa3de3c02c982":120:"2a67ad1471a520fe09a304f0975f31":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2bc73fba942ff105823b5dccf6befb1c":"":"902c3e3b69b1ef8395d7281ff74cce38":"4adec0b4ac00325a860044d9f9519daa4f7c163229a75819b0fd7d8e23319f030e61dfa8eadabff42ea27bc36bdb6cad249e801ca631b656836448b7172c11126bad2781e6a1aa4f62c4eda53409408b008c057e0b81215cc13ddabbb8f1915f4bbab854f8b00763a530ad5055d265778cd3080d0bd35b76a329bdd5b5a2d268":120:"ebdd7c8e87fe733138a433543542d1":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2bc73fba942ff105823b5dccf6befb1c":"":"902c3e3b69b1ef8395d7281ff74cce38":"4adec0b4ac00325a860044d9f9519daa4f7c163229a75819b0fd7d8e23319f030e61dfa8eadabff42ea27bc36bdb6cad249e801ca631b656836448b7172c11126bad2781e6a1aa4f62c4eda53409408b008c057e0b81215cc13ddabbb8f1915f4bbab854f8b00763a530ad5055d265778cd3080d0bd35b76a329bdd5b5a2d268":120:"ebdd7c8e87fe733138a433543542d1":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"356a4c245868243d61756cabe86da887":"":"b442f2ec6d45a17144c258fd59fe5b3b":"12cccc3c60474b0a1579c5006c2134850724fa6c9da3a7022d4f65fd238b052bdf34ea34aa7dbadad64996065acee588ab6bd29726d07ed24ffae2d33aadf3e66ebb87f57e689fd85128be1c9e3d8362fad1f8096ee391f75b576fb213d394cef6f091fc5488d9aa152be69475b9167abd6dd4fd93bbbc7b8ca316c952eb19c6":120:"ed26080dcb670590613d97d7c47cf4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"356a4c245868243d61756cabe86da887":"":"b442f2ec6d45a17144c258fd59fe5b3b":"12cccc3c60474b0a1579c5006c2134850724fa6c9da3a7022d4f65fd238b052bdf34ea34aa7dbadad64996065acee588ab6bd29726d07ed24ffae2d33aadf3e66ebb87f57e689fd85128be1c9e3d8362fad1f8096ee391f75b576fb213d394cef6f091fc5488d9aa152be69475b9167abd6dd4fd93bbbc7b8ca316c952eb19c6":120:"ed26080dcb670590613d97d7c47cf4":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dfa7e93aff73600fc552324253066e2c":"":"c20001e93f1cd05253c277a9445d61e4":"a64d1e20058a1f7e698622a02f7ff8dc11886717ede17bbdc3c4645a66a71d8b04346fb389a251ffb0a7f445a25faf642bb7e4697d2cacf925e78c4be98457996afb25b0516b50f179441d1923312364947f8f1e0f5715b43bd537727bf943d7b4679b0b0b28b94e56e7bbf554d9cf79fcee4387f32bb6f91efdd23620035be6":112:"6ba5e4dace9a54b50b901d9b73ad":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dfa7e93aff73600fc552324253066e2c":"":"c20001e93f1cd05253c277a9445d61e4":"a64d1e20058a1f7e698622a02f7ff8dc11886717ede17bbdc3c4645a66a71d8b04346fb389a251ffb0a7f445a25faf642bb7e4697d2cacf925e78c4be98457996afb25b0516b50f179441d1923312364947f8f1e0f5715b43bd537727bf943d7b4679b0b0b28b94e56e7bbf554d9cf79fcee4387f32bb6f91efdd23620035be6":112:"6ba5e4dace9a54b50b901d9b73ad":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2ecea80b48d2ecd194a7699aa7d8ccfc":"":"8b4db08bafc23b65ae50a2d20661d270":"efc2ca1a3b41b90f8ddf74291d68f072a6e025d0c91c3ce2b133525943c73ebadc71f150be20afeb097442fa51be31a641df65d90ebd81dcbaf32711ed31f5e0271421377ffe14ddafea3ca60a600588d484856a98de73f56a766ae60bae384a4ae01a1a06821cf0c7a6b4ee4c8f413748457b3777283d3310218fb55c107293":112:"246a9d37553088b6411ebb62aa16":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2ecea80b48d2ecd194a7699aa7d8ccfc":"":"8b4db08bafc23b65ae50a2d20661d270":"efc2ca1a3b41b90f8ddf74291d68f072a6e025d0c91c3ce2b133525943c73ebadc71f150be20afeb097442fa51be31a641df65d90ebd81dcbaf32711ed31f5e0271421377ffe14ddafea3ca60a600588d484856a98de73f56a766ae60bae384a4ae01a1a06821cf0c7a6b4ee4c8f413748457b3777283d3310218fb55c107293":112:"246a9d37553088b6411ebb62aa16":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d38fee3fd3d6d08224c3c83529a25d08":"":"a942ccb11cf9468186fabfc18c899801":"1c92a4ce0a1dae27e720d6f9b1e460276538de437f3812ab1177cf0273b05908f296f33ba0f4c790abe2ce958b1d92b930a0d81243e6ad09ef86ee8e3270243095096537cb1054fcfcf537d828b65af9b6cf7c50f5b8470f7908f314d0859107eed772ee1732c78e8a2e35b2493f3e8c1e601b08aeab8d9729e0294dca168c62":112:"803a08700ec86fdeb88f7a388921":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d38fee3fd3d6d08224c3c83529a25d08":"":"a942ccb11cf9468186fabfc18c899801":"1c92a4ce0a1dae27e720d6f9b1e460276538de437f3812ab1177cf0273b05908f296f33ba0f4c790abe2ce958b1d92b930a0d81243e6ad09ef86ee8e3270243095096537cb1054fcfcf537d828b65af9b6cf7c50f5b8470f7908f314d0859107eed772ee1732c78e8a2e35b2493f3e8c1e601b08aeab8d9729e0294dca168c62":112:"803a08700ec86fdeb88f7a388921":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1899b0cbae41d705c6eed3226afb5bc0":"":"82d0910aa53e300a487d880d018d0dea":"6bf5583cc1007d74f3529db63b8d4e085400ccf3725eab8e19cb145f3910c61465a21486740a26f74691866a9f632af9fae81f5f0bffedf0c28a6ce0fd520bb4db04a3cd1a7d29d8801e05e4b9c9374fd89bcb539489c2f7f1f801c253a1cc737408669bcd133b62da357f7399a52179125aa59fae6707d340846886d730a835":104:"c5d58870fee9ce157f5ec1fa8f":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1899b0cbae41d705c6eed3226afb5bc0":"":"82d0910aa53e300a487d880d018d0dea":"6bf5583cc1007d74f3529db63b8d4e085400ccf3725eab8e19cb145f3910c61465a21486740a26f74691866a9f632af9fae81f5f0bffedf0c28a6ce0fd520bb4db04a3cd1a7d29d8801e05e4b9c9374fd89bcb539489c2f7f1f801c253a1cc737408669bcd133b62da357f7399a52179125aa59fae6707d340846886d730a835":104:"c5d58870fee9ce157f5ec1fa8f":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8b95323d86d02754f4c2874b42ec6eb0":"":"4f76084acbdef9999c71dcc794238d7c":"ebc75788377c0b264818a6f97c19cf92c29f1c7cdeb6b5f0a92d238fa4614bc35d0cfe4ec9d045cd628ff6262c460679ac15b0c6366d9289bbd217e5012279e0af0fb2cfcbdf51fe16935968cbb727f725fe5bcd4428905849746c8493600ce8b2cfc1b61b04c8b752b915fed611d6b54ef73ec4e3950d6db1807b1ce7ed1dcc":104:"c4724ff1d2c57295eb733e9cad":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8b95323d86d02754f4c2874b42ec6eb0":"":"4f76084acbdef9999c71dcc794238d7c":"ebc75788377c0b264818a6f97c19cf92c29f1c7cdeb6b5f0a92d238fa4614bc35d0cfe4ec9d045cd628ff6262c460679ac15b0c6366d9289bbd217e5012279e0af0fb2cfcbdf51fe16935968cbb727f725fe5bcd4428905849746c8493600ce8b2cfc1b61b04c8b752b915fed611d6b54ef73ec4e3950d6db1807b1ce7ed1dcc":104:"c4724ff1d2c57295eb733e9cad":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30da555559eb11cf7e0eff9d99e9607d":"":"7799275bf12335f281ec94a870f90a0b":"e735d556e15aec78d9736016c8c99db753ed14d4e4adaaa1dd7eaad702ea5dc337433f8c2b45afdf2f385fdf6c55574425571e079ca759b6235f877ed11618ff212bafd865a22b80b76b3b5cf1acfd24d92fd41607bbb7382f26cd703757088d497b16b32de80e1256c734a9b83356b6fced207177de75458481eaef59a431d7":104:"3c82272130e17c4a0a007a908e":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30da555559eb11cf7e0eff9d99e9607d":"":"7799275bf12335f281ec94a870f90a0b":"e735d556e15aec78d9736016c8c99db753ed14d4e4adaaa1dd7eaad702ea5dc337433f8c2b45afdf2f385fdf6c55574425571e079ca759b6235f877ed11618ff212bafd865a22b80b76b3b5cf1acfd24d92fd41607bbb7382f26cd703757088d497b16b32de80e1256c734a9b83356b6fced207177de75458481eaef59a431d7":104:"3c82272130e17c4a0a007a908e":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ed2ac74af896c5190c271cfa6af02fd2":"":"e0226e2d8da47badad1fb78b9a797f27":"8f11353ae476ff923013e6e736ffc9d23101a1c471ccc07ad372a8430d6559c376075efce2e318cdf4c9443dbf132e7e6da5524045028c97e904633b44c4d189a4b64237ac7692dd03c0e751ce9f04d0fdbd8a96074cd7dfa2fd441a52328b4ac3974b4902db45663f7b6f24947dba618f8b9769e927faf84c9f49ad8239b9fb":96:"db8af7a0d548fc54d9457c73":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ed2ac74af896c5190c271cfa6af02fd2":"":"e0226e2d8da47badad1fb78b9a797f27":"8f11353ae476ff923013e6e736ffc9d23101a1c471ccc07ad372a8430d6559c376075efce2e318cdf4c9443dbf132e7e6da5524045028c97e904633b44c4d189a4b64237ac7692dd03c0e751ce9f04d0fdbd8a96074cd7dfa2fd441a52328b4ac3974b4902db45663f7b6f24947dba618f8b9769e927faf84c9f49ad8239b9fb":96:"db8af7a0d548fc54d9457c73":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0225b73fe5fbbe52f838d873173959d8":"":"02a048764f48d9aed1147ee922395bbf":"9b46a57b06e156c877e94c089814493ead879397dab3dfcab2db349ef387efcd0cc339a7e79131a2c580188fc7429044a465b8329d74cd8f47272a4ed32582b1c5c7e3d32341ae902ea4923dc33df8062bc24bb51a11d2ecc82f464f615041387f9c82bd2135d4e240fe56fa8a68e6a9a417e6702430a434b14d70cf02db3181":96:"e2c2ce4022c49a95c9ac9026":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0225b73fe5fbbe52f838d873173959d8":"":"02a048764f48d9aed1147ee922395bbf":"9b46a57b06e156c877e94c089814493ead879397dab3dfcab2db349ef387efcd0cc339a7e79131a2c580188fc7429044a465b8329d74cd8f47272a4ed32582b1c5c7e3d32341ae902ea4923dc33df8062bc24bb51a11d2ecc82f464f615041387f9c82bd2135d4e240fe56fa8a68e6a9a417e6702430a434b14d70cf02db3181":96:"e2c2ce4022c49a95c9ac9026":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"89ca3771a0ef3287568b4ac036120198":"":"7e83d2ffa8af8c554cfd71a0db56ef5b":"1bd7a9d6262882bd12c62bd50942965b3cdcadf5e0fab2dc4d0daf0ee4b16e92c6e2464c0caa423cdce88e4d843490609716ec5e44c41672c656ac0e444d3622557ea8420c94deae3ad190ddaf859f6f8c23e4e2e32a46d28df23de4f99bd6c34f69e06eddfdfa5f263dbe8baf9d4296b2c543e4c4847271e7590374edf46234":96:"06b2bf62591dc7ec1b814705":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"89ca3771a0ef3287568b4ac036120198":"":"7e83d2ffa8af8c554cfd71a0db56ef5b":"1bd7a9d6262882bd12c62bd50942965b3cdcadf5e0fab2dc4d0daf0ee4b16e92c6e2464c0caa423cdce88e4d843490609716ec5e44c41672c656ac0e444d3622557ea8420c94deae3ad190ddaf859f6f8c23e4e2e32a46d28df23de4f99bd6c34f69e06eddfdfa5f263dbe8baf9d4296b2c543e4c4847271e7590374edf46234":96:"06b2bf62591dc7ec1b814705":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a41a297bd96e224942998fe2192934a1":"":"6827f2c5a0b7ecd6bbc696abb0adf556":"f32041abd8543415cbac423d945dda5378a16a7e94d9ab5dbd2d32eb1c5048cc7c8e4df3ca84ec725f18c34cfdeaa7595392aabfd66d9e2f37c1165369cd806cd9d2110def6f5fad4345e5a6e2326c9300199438fcc078cd9fcf4d76872cac77fc9a0a8ac7e4d63995078a9addecf798460ff5910861b76c71bccfb6b629d722":64:"49a4917eef61f78e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a41a297bd96e224942998fe2192934a1":"":"6827f2c5a0b7ecd6bbc696abb0adf556":"f32041abd8543415cbac423d945dda5378a16a7e94d9ab5dbd2d32eb1c5048cc7c8e4df3ca84ec725f18c34cfdeaa7595392aabfd66d9e2f37c1165369cd806cd9d2110def6f5fad4345e5a6e2326c9300199438fcc078cd9fcf4d76872cac77fc9a0a8ac7e4d63995078a9addecf798460ff5910861b76c71bccfb6b629d722":64:"49a4917eef61f78e":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a9372c058f42e0a1d019bdb528313919":"":"8d03f423230c8f00a5b6b712d426a2af":"cfef4e70fcc1821eeccf7c7b5eb3c0c3b5f72dc762426e0bd26242f8aa68c5b716ab97eded5e5720caccc1965da603d556d8214d5828f2cf276d95bf552d47313876796221f62ccb818a6d801088755d58cfb751bfed0d5a19718d4e0f94b850e0279b3a69295d1837cba958a6cc56e7594080b9e5b954a199fdc9e54ddc8583":64:"b82cd11cd3575c8d":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a9372c058f42e0a1d019bdb528313919":"":"8d03f423230c8f00a5b6b712d426a2af":"cfef4e70fcc1821eeccf7c7b5eb3c0c3b5f72dc762426e0bd26242f8aa68c5b716ab97eded5e5720caccc1965da603d556d8214d5828f2cf276d95bf552d47313876796221f62ccb818a6d801088755d58cfb751bfed0d5a19718d4e0f94b850e0279b3a69295d1837cba958a6cc56e7594080b9e5b954a199fdc9e54ddc8583":64:"b82cd11cd3575c8d":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6302b7338f8fa84195ad9abbacd89b4e":"":"e1bed5c53547cbc85f3411fbb43bb08b":"bcd329c076e8da2797d50dcdcf271cecf3ce12f3c136ed746edc722f907be6133276ee099038fdc5d73eec812739c7489d4bcc275f95451b44890416e3ffe5a1b6fa3986b84eee3adad774c6feaecb1f785053eeda2cfc18953b8547866d98918dbe0a6abc168ac7d77467a367f11c284924d9d186ef64ef0fd54eacd75156d2":64:"5222d092e9e8bd6c":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6302b7338f8fa84195ad9abbacd89b4e":"":"e1bed5c53547cbc85f3411fbb43bb08b":"bcd329c076e8da2797d50dcdcf271cecf3ce12f3c136ed746edc722f907be6133276ee099038fdc5d73eec812739c7489d4bcc275f95451b44890416e3ffe5a1b6fa3986b84eee3adad774c6feaecb1f785053eeda2cfc18953b8547866d98918dbe0a6abc168ac7d77467a367f11c284924d9d186ef64ef0fd54eacd75156d2":64:"5222d092e9e8bd6c":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78b5c28d62e4b2097873a1180bd5a3a5":"":"c93902c2819ee494f0fc4b259ee65dd8":"e6b1192674a02083a6cf36d4ba93ba40a5331fadf63fd1eb2efa2ee9c0d8818472aaaf2b4705746011753f30f447c8f58dd34d29606daf57eadc172529837058cb78a378b19da8d63c321f550dfa256b5fd9f30e93d8f377443bfcd125f86a079a1765d2010be73d060f24eebae8d05e644688b2149bc39e18bd527bc066f2ba":32:"eae48137":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78b5c28d62e4b2097873a1180bd5a3a5":"":"c93902c2819ee494f0fc4b259ee65dd8":"e6b1192674a02083a6cf36d4ba93ba40a5331fadf63fd1eb2efa2ee9c0d8818472aaaf2b4705746011753f30f447c8f58dd34d29606daf57eadc172529837058cb78a378b19da8d63c321f550dfa256b5fd9f30e93d8f377443bfcd125f86a079a1765d2010be73d060f24eebae8d05e644688b2149bc39e18bd527bc066f2ba":32:"eae48137":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d84130578070e036c9e3df5b5509473":"":"3b9b4950523a19c6866fd2b0cde541fd":"a764931e1b21a140c54a8619aacdb4358834987fb6e263cec525f888f9e9764c165aaa7db74f2c42273f912daeae6d72b232a872ac2c652d7cd3af3a5753f58331c11b6c866475697876dbc4c6ca0e52a00ba015ee3c3b7fb444c6e50a4b4b9bbe135fc0632d32a3f79f333d8f487771ed12522e664b9cf90e66da267f47a74d":32:"79987692":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d84130578070e036c9e3df5b5509473":"":"3b9b4950523a19c6866fd2b0cde541fd":"a764931e1b21a140c54a8619aacdb4358834987fb6e263cec525f888f9e9764c165aaa7db74f2c42273f912daeae6d72b232a872ac2c652d7cd3af3a5753f58331c11b6c866475697876dbc4c6ca0e52a00ba015ee3c3b7fb444c6e50a4b4b9bbe135fc0632d32a3f79f333d8f487771ed12522e664b9cf90e66da267f47a74d":32:"79987692":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08428605ab4742a3e8a55354d4764620":"":"128f5f4a817e4af04113847a223adeb0":"464b484ed79d93a48e0f804e04df69d7ca10ad04ba7188d69e6549ab50503baaec67e0acba5537d1163c868fd3e350e9d0ae9123046bc76815c201a947aa4a7e4ed239ce889d4ff9c8d043877de06df5fc27cf67442b729b02e9c30287c0821ef9fa15d4cccbc53a95fa9ec3ed432ca960ebbf5a169ccada95a5bf4c7c968830":32:"3eb3e3a2":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08428605ab4742a3e8a55354d4764620":"":"128f5f4a817e4af04113847a223adeb0":"464b484ed79d93a48e0f804e04df69d7ca10ad04ba7188d69e6549ab50503baaec67e0acba5537d1163c868fd3e350e9d0ae9123046bc76815c201a947aa4a7e4ed239ce889d4ff9c8d043877de06df5fc27cf67442b729b02e9c30287c0821ef9fa15d4cccbc53a95fa9ec3ed432ca960ebbf5a169ccada95a5bf4c7c968830":32:"3eb3e3a2":"":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dd358bc3f992f26e81e3a2f3aa2d517":"87cc4fd75788c9d5cc83bae5d764dd249d178ab23224049795d4288b5ed9ea3f317068a39a7574b300c8544226e87b08e008fbe241d094545c211d56ac44437d41491a438272738968c8d371aa7787b5f606c8549a9d868d8a71380e9657d3c0337979feb01de5991fc1470dfc59eb02511efbbff3fcb479a862ba3844a25aaa":"d8c750bb443ee1a169dfe97cfe4d855b":"":128:"a81d13973baa22a751833d7d3f94b3b1":"77949b29f085bb3abb71a5386003811233056d3296eb093370f7777dadd306d93d59dcb9754d3857cf2758091ba661f845ef0582f6ae0e134328106f0d5d16b541cd74fdc756dc7b53f4f8a194daeea9369ebb1630c01ccb307b848e9527da20a39898d748fd59206f0b79d0ed946a8958033a45bd9ae673518b32606748eb65":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dd358bc3f992f26e81e3a2f3aa2d517":"87cc4fd75788c9d5cc83bae5d764dd249d178ab23224049795d4288b5ed9ea3f317068a39a7574b300c8544226e87b08e008fbe241d094545c211d56ac44437d41491a438272738968c8d371aa7787b5f606c8549a9d868d8a71380e9657d3c0337979feb01de5991fc1470dfc59eb02511efbbff3fcb479a862ba3844a25aaa":"d8c750bb443ee1a169dfe97cfe4d855b":"":128:"a81d13973baa22a751833d7d3f94b3b1":"":"77949b29f085bb3abb71a5386003811233056d3296eb093370f7777dadd306d93d59dcb9754d3857cf2758091ba661f845ef0582f6ae0e134328106f0d5d16b541cd74fdc756dc7b53f4f8a194daeea9369ebb1630c01ccb307b848e9527da20a39898d748fd59206f0b79d0ed946a8958033a45bd9ae673518b32606748eb65":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"43b5f18227e5c74288dbeff03801acd6":"f58d630f10cfca61d4644d4f6505bab629e8e8faf1673e64417f9b79e622966a7011cfb3ff74db5cebf09ad3f41643d4437d213204a6c8397e7d59b8a5b1970aed2b6bb5ea1933c72c351f6ba96c0b0b98188f6e373f5db6c5ebece911ec7a1848abd3ae335515c774e0027dab7d1c07d047d3b8825ff94222dbaf6f9ab597ee":"08ee12246cf7edb81da3d610f3ebd167":"":128:"82d83b2f7da218d1d1441a5b37bcb065":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"43b5f18227e5c74288dbeff03801acd6":"f58d630f10cfca61d4644d4f6505bab629e8e8faf1673e64417f9b79e622966a7011cfb3ff74db5cebf09ad3f41643d4437d213204a6c8397e7d59b8a5b1970aed2b6bb5ea1933c72c351f6ba96c0b0b98188f6e373f5db6c5ebece911ec7a1848abd3ae335515c774e0027dab7d1c07d047d3b8825ff94222dbaf6f9ab597ee":"08ee12246cf7edb81da3d610f3ebd167":"":128:"82d83b2f7da218d1d1441a5b37bcb065":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a433c612d7e1bdff881e4d63ba8b141":"ce10758332f423228b5e4ae31efda7677586934a1d8f05d9b7a0dc4e2010ec3eaacb71a527a5fff8e787d75ebd24ad163394c891b33477ed9e2a2d853c364cb1c5d0bc317fcaf4010817dbe5f1fd1037c701b291b3a66b164bc818bf5c00a4c210a1671faa574d74c7f3543f6c09aaf117e12e2eb3dae55edb1cc5b4086b617d":"8b670cf31f470f79a6c0b79e73863ca1":"":128:"8526fd25daf890e79946a205b698f287":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a433c612d7e1bdff881e4d63ba8b141":"ce10758332f423228b5e4ae31efda7677586934a1d8f05d9b7a0dc4e2010ec3eaacb71a527a5fff8e787d75ebd24ad163394c891b33477ed9e2a2d853c364cb1c5d0bc317fcaf4010817dbe5f1fd1037c701b291b3a66b164bc818bf5c00a4c210a1671faa574d74c7f3543f6c09aaf117e12e2eb3dae55edb1cc5b4086b617d":"8b670cf31f470f79a6c0b79e73863ca1":"":128:"8526fd25daf890e79946a205b698f287":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8e9d75c781d63b29f1816859f7a0e0a0":"a9f1883f58e4ef78377992101ab86da0dafcefa827904dd94dff6f6704b1e45517165a34c5555a55b04c6992fb6d0840a71bd262fe59815e5c7b80fe803b47d5ba44982a3f72cb42f591d8b62df38c9f56a5868af8f68242e3a15f97be8ef2399dbace1273f509623b6f9e4d27a97436aebf2d044e75f1c62694db77ceac05de":"748a3b486b62a164cedcf1bab9325add":"":120:"131e0e4ce46d768674a7bcacdcef9c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8e9d75c781d63b29f1816859f7a0e0a0":"a9f1883f58e4ef78377992101ab86da0dafcefa827904dd94dff6f6704b1e45517165a34c5555a55b04c6992fb6d0840a71bd262fe59815e5c7b80fe803b47d5ba44982a3f72cb42f591d8b62df38c9f56a5868af8f68242e3a15f97be8ef2399dbace1273f509623b6f9e4d27a97436aebf2d044e75f1c62694db77ceac05de":"748a3b486b62a164cedcf1bab9325add":"":120:"131e0e4ce46d768674a7bcacdcef9c":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe6b8553002c69396d9976bb48d30779":"786f4801b16de7a4931ab143b269c7acc68f1ed9b17a95e8929ccec7d53413059fd4267bedbf079d9d69e90314c1345bc9cb9132f1af69323157ddf7533ced42b4b7bd39004f14d326f5b03bc19084d231d93bcab328312d99b426c1e86e8e049d380bb492e2e32ad690af4cf86838d89a0dfdcbc30e8c9e9039e423a234e113":"595b17d0d76b83780235f5e0c92bd21f":"":120:"8879de07815a88877b0623de9be411":"b15dc7cd44adcb0783f30f592e5e03ccd47851725af9fe45bfc5b01ae35779b9a8b3f26fec468b188ec3cad40785c608d6bfd867b0ccf07a836ec20d2d9b8451636df153a32b637e7dcdbd606603d9e53f6e4c4cc8396286ce64b0ea638c10e5a567c0bc8e808080b71be51381e051336e60bf1663f6d2d7640a575e0752553b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe6b8553002c69396d9976bb48d30779":"786f4801b16de7a4931ab143b269c7acc68f1ed9b17a95e8929ccec7d53413059fd4267bedbf079d9d69e90314c1345bc9cb9132f1af69323157ddf7533ced42b4b7bd39004f14d326f5b03bc19084d231d93bcab328312d99b426c1e86e8e049d380bb492e2e32ad690af4cf86838d89a0dfdcbc30e8c9e9039e423a234e113":"595b17d0d76b83780235f5e0c92bd21f":"":120:"8879de07815a88877b0623de9be411":"":"b15dc7cd44adcb0783f30f592e5e03ccd47851725af9fe45bfc5b01ae35779b9a8b3f26fec468b188ec3cad40785c608d6bfd867b0ccf07a836ec20d2d9b8451636df153a32b637e7dcdbd606603d9e53f6e4c4cc8396286ce64b0ea638c10e5a567c0bc8e808080b71be51381e051336e60bf1663f6d2d7640a575e0752553b":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"14898c56009b459172fef9c17993b54f":"e7ba6ef722273238b975d551f95d3e77e9b75b24c547b86eafb457d409803bdf6e1443839d8604ee497020e1a3dbd687a819b17fdde0fcf240ce2129792792a58bfcd825773001ee959bf9ec8d228e27ce1cd93d7fb86769a3793361b6f82bf7daf284afc1ece657a1ee6346ea9294880755b9b623563ad2657ba2286488a2ef":"0862f8f87289988711a877d3231d44eb":"":120:"36938974301ae733760f83439437c4":"3fd56897a62743e0ab4a465bcc9777d5fd21ad2c9a59d7e4e1a60feccdc722b9820ec65cb47e1d1160d12ff2ea93abe11bc101b82514ead7d542007fee7b4e2dd6822849cd3e82d761ff7cf5ce4f40ad9fec54050a632a401451b426812cf03c2b16a8667a88bb3f7497e3308a91de6fd646d6a3562c92c24272411229a90802":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"14898c56009b459172fef9c17993b54f":"e7ba6ef722273238b975d551f95d3e77e9b75b24c547b86eafb457d409803bdf6e1443839d8604ee497020e1a3dbd687a819b17fdde0fcf240ce2129792792a58bfcd825773001ee959bf9ec8d228e27ce1cd93d7fb86769a3793361b6f82bf7daf284afc1ece657a1ee6346ea9294880755b9b623563ad2657ba2286488a2ef":"0862f8f87289988711a877d3231d44eb":"":120:"36938974301ae733760f83439437c4":"":"3fd56897a62743e0ab4a465bcc9777d5fd21ad2c9a59d7e4e1a60feccdc722b9820ec65cb47e1d1160d12ff2ea93abe11bc101b82514ead7d542007fee7b4e2dd6822849cd3e82d761ff7cf5ce4f40ad9fec54050a632a401451b426812cf03c2b16a8667a88bb3f7497e3308a91de6fd646d6a3562c92c24272411229a90802":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe5253d4b071793b081ebc122cc2a5f8":"b57a0bd7714ae95e77fa9452e11a7ed4a2bec60f81ad6ddb956d4b1cb5dfc277dcb4034d501801b26733b5e08c710c3cfdccc1b208dc7a92cd7ebe166320582bcaff64cc943c36fbe7008f004e5db70c40de05fa68b0c9d4c16c8f976130f20702b99674cd2f4c93aeaeb3abca4b1114dbc3a4b33e1226ad801aa0e21f7cc49b":"49e82d86804e196421ec19ddc8541066":"":112:"e8b8ae34f842277fe92729e891e3":"c4a31c7ec820469f895d57579f987733337ec6547d78d17c44a18fab91f0322cfe05f23f9afaf019cf9531dec2d420f3591d334f40d78643fd957b91ab588a7e392447bd702652017ede7fb0d61d444a3b3cc4136e1d4df13d9532eb71bcf3ff0ae65e847e1c572a2f90632362bc424da2249b36a84be2c2bb216ae7708f745c":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe5253d4b071793b081ebc122cc2a5f8":"b57a0bd7714ae95e77fa9452e11a7ed4a2bec60f81ad6ddb956d4b1cb5dfc277dcb4034d501801b26733b5e08c710c3cfdccc1b208dc7a92cd7ebe166320582bcaff64cc943c36fbe7008f004e5db70c40de05fa68b0c9d4c16c8f976130f20702b99674cd2f4c93aeaeb3abca4b1114dbc3a4b33e1226ad801aa0e21f7cc49b":"49e82d86804e196421ec19ddc8541066":"":112:"e8b8ae34f842277fe92729e891e3":"":"c4a31c7ec820469f895d57579f987733337ec6547d78d17c44a18fab91f0322cfe05f23f9afaf019cf9531dec2d420f3591d334f40d78643fd957b91ab588a7e392447bd702652017ede7fb0d61d444a3b3cc4136e1d4df13d9532eb71bcf3ff0ae65e847e1c572a2f90632362bc424da2249b36a84be2c2bb216ae7708f745c":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b3502d6f0d172246e16503cdf5793296":"09268b8046f1558794e35cdc4945b94227a176dd8cb77f92f883542b1c4be698c379541fd1d557c2a07c7206afdd49506d6a1559123de1783c7a60006df06d87f9119fb105e9b278eb93f81fd316b6fdc38ef702a2b9feaa878a0d1ea999db4c593438f32e0f849f3adabf277a161afb5c1c3460039156eec78944d5666c2563":"6ce994689ff72f9df62f386a187c1a13":"":112:"21cdf44ff4993eb54b55d58e5a8f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b3502d6f0d172246e16503cdf5793296":"09268b8046f1558794e35cdc4945b94227a176dd8cb77f92f883542b1c4be698c379541fd1d557c2a07c7206afdd49506d6a1559123de1783c7a60006df06d87f9119fb105e9b278eb93f81fd316b6fdc38ef702a2b9feaa878a0d1ea999db4c593438f32e0f849f3adabf277a161afb5c1c3460039156eec78944d5666c2563":"6ce994689ff72f9df62f386a187c1a13":"":112:"21cdf44ff4993eb54b55d58e5a8f":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5fb33dd73db309b9dfd3aee605cd94bf":"f4e011f8c99038c46854b427475f23488077ebf051c4b705a1adfdd493a0a10af7a7e9453965b94f52f61ae62ce9243a82a2dbf9c5a285db3fe34ed34ed08b5926f34c48171195f7062d02a6e6e795322a0475017371cb8f645cdcac94afc66dc43e7583bdf1c25790f4235076a53de6c64f3bc5004e5a9ce4783fbf639fad97":"3f6486f9e9e645292e0e425bac232268":"":112:"7ee5e0e2082b18d09abf141f902e":"0503cb531f1c967dae24f16dd651d544988a732020134896a0f109222e8639bf29ff69877c6ef4ac3df1b260842f909384e3d4409b99a47112681c4b17430041ca447a903a6c1b138f0efbb3b850d8290fceac9723a32edbf8e2d6e8143b1cbc7bf2d28d1b6c7f341a69918758cc82bbab5d898fa0f572d4ceaa11234cb511ec":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5fb33dd73db309b9dfd3aee605cd94bf":"f4e011f8c99038c46854b427475f23488077ebf051c4b705a1adfdd493a0a10af7a7e9453965b94f52f61ae62ce9243a82a2dbf9c5a285db3fe34ed34ed08b5926f34c48171195f7062d02a6e6e795322a0475017371cb8f645cdcac94afc66dc43e7583bdf1c25790f4235076a53de6c64f3bc5004e5a9ce4783fbf639fad97":"3f6486f9e9e645292e0e425bac232268":"":112:"7ee5e0e2082b18d09abf141f902e":"":"0503cb531f1c967dae24f16dd651d544988a732020134896a0f109222e8639bf29ff69877c6ef4ac3df1b260842f909384e3d4409b99a47112681c4b17430041ca447a903a6c1b138f0efbb3b850d8290fceac9723a32edbf8e2d6e8143b1cbc7bf2d28d1b6c7f341a69918758cc82bbab5d898fa0f572d4ceaa11234cb511ec":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a958fe3b520081b638d9e4c7d5da7ac7":"dfa9487378c7d8af9c8dbd9e533cd81503d9e4e7dab43133bad11fd3050a53a833df9cc3208af1a86110567d311d5fc54b0d627de433c381b10e113898203ac5225140f951cdb64c6494592b6453f9b6f952ec5ece732fb46c09a324f26b27cdad63588006bb5c6c00b9aa10d5d3b2f9eaab69beeddd6f93966654f964260018":"c396109e96afde6f685d3c38aa3c2fae":"":104:"06ca91004be43cf46ed4599e23":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a958fe3b520081b638d9e4c7d5da7ac7":"dfa9487378c7d8af9c8dbd9e533cd81503d9e4e7dab43133bad11fd3050a53a833df9cc3208af1a86110567d311d5fc54b0d627de433c381b10e113898203ac5225140f951cdb64c6494592b6453f9b6f952ec5ece732fb46c09a324f26b27cdad63588006bb5c6c00b9aa10d5d3b2f9eaab69beeddd6f93966654f964260018":"c396109e96afde6f685d3c38aa3c2fae":"":104:"06ca91004be43cf46ed4599e23":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec319fb143eac8215b51541daec268f2":"d298d988e74927736237eb8ab09d7a86b854fa2fd1f7f3be83b417ac10aa9291f4af5b3fbaf75a296ac32369ad57ded3984b84711953e477de3035ba430a30ffb84c941936e6c8d2cae8d80159876f87dd682747f2dccc36d7c32ab227032b8ac70b313fa4202ea236e3ec4d9e4d8b48cf3b90b378edc5b1dbeec929549344f8":"8a4684f42a1775b03806574f401cff78":"":104:"e91acb1bfda191630b560debc9":"27ce4a622959930f4059f247d29d1438257093cc973bf1bae4e0515da88b9a7e21ec59c7e4d062035cdf88b91254d856b11c8c1944865fa12922227ded3eecccaa36341ecf5405c708e9ea173f1e6cdf090499d3bb079910771080814607a1efe62ec6835dc0333d19dd39dd9ea9f31cd3632128536149a122050bb9365b521d":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec319fb143eac8215b51541daec268f2":"d298d988e74927736237eb8ab09d7a86b854fa2fd1f7f3be83b417ac10aa9291f4af5b3fbaf75a296ac32369ad57ded3984b84711953e477de3035ba430a30ffb84c941936e6c8d2cae8d80159876f87dd682747f2dccc36d7c32ab227032b8ac70b313fa4202ea236e3ec4d9e4d8b48cf3b90b378edc5b1dbeec929549344f8":"8a4684f42a1775b03806574f401cff78":"":104:"e91acb1bfda191630b560debc9":"":"27ce4a622959930f4059f247d29d1438257093cc973bf1bae4e0515da88b9a7e21ec59c7e4d062035cdf88b91254d856b11c8c1944865fa12922227ded3eecccaa36341ecf5405c708e9ea173f1e6cdf090499d3bb079910771080814607a1efe62ec6835dc0333d19dd39dd9ea9f31cd3632128536149a122050bb9365b521d":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"14a3e69f351ac39b4297749a90c1365c":"051224f7b208549dcfda5f9d56ce5f0a072ef1f23f3810c693516c92622be6ed4d7a9e0f9450980ba490b2e9e3468ea7eef10bc9ebd673d91f32b748c1bf2c50cc4ebb59fc409c6d780bba00700d563ce1dc9927a6c860095a42ed053f3d640debfbfa7a4e6d5de234af19755000d95e7f414f1f78285ee165410c020038286b":"eb1c6c04437aa5a32bcc208bb3c01724":"":104:"e418815960559aefee8e0c3831":"797310a6ed9ce47cdc25f7f88f5dbbf6f8f4837701704d7afced250585922744598d6f95ba2eecf86e030cc5ee71b328fc1c4f2d4df945d1b91a2803d6ae8eba6881be5fe0f298dd0c0279e12720ede60b9e857ccca5abe9b4d7ee7f25108beebbfe33f05c0d9903bf613c2e7ed6a87b71b5e386d81b3ae53efd01055bbcccc2":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"14a3e69f351ac39b4297749a90c1365c":"051224f7b208549dcfda5f9d56ce5f0a072ef1f23f3810c693516c92622be6ed4d7a9e0f9450980ba490b2e9e3468ea7eef10bc9ebd673d91f32b748c1bf2c50cc4ebb59fc409c6d780bba00700d563ce1dc9927a6c860095a42ed053f3d640debfbfa7a4e6d5de234af19755000d95e7f414f1f78285ee165410c020038286b":"eb1c6c04437aa5a32bcc208bb3c01724":"":104:"e418815960559aefee8e0c3831":"":"797310a6ed9ce47cdc25f7f88f5dbbf6f8f4837701704d7afced250585922744598d6f95ba2eecf86e030cc5ee71b328fc1c4f2d4df945d1b91a2803d6ae8eba6881be5fe0f298dd0c0279e12720ede60b9e857ccca5abe9b4d7ee7f25108beebbfe33f05c0d9903bf613c2e7ed6a87b71b5e386d81b3ae53efd01055bbcccc2":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c34827771fc3918d1cee09ba9401b832":"ce79701b661066e53191c9acdaf677ad41622314898d7216e3f113e2e6e215d26d8bd139827f06ab3ea5c4105694e87db1dd6cec10e1f86a8744d4c541f08e40319e22ab42fc1a6c89edfd486b6f142c6bbbf84a73912e0b2e55b79db306ccabf839855afdd889e52ae981520c89e7dc29bb2adb1906cca8c93fcb21290a095b":"2379bbd39a1c22bc93b9b9cc45f3840b":"":96:"26e1f6cf0d9e0f36dfd669eb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c34827771fc3918d1cee09ba9401b832":"ce79701b661066e53191c9acdaf677ad41622314898d7216e3f113e2e6e215d26d8bd139827f06ab3ea5c4105694e87db1dd6cec10e1f86a8744d4c541f08e40319e22ab42fc1a6c89edfd486b6f142c6bbbf84a73912e0b2e55b79db306ccabf839855afdd889e52ae981520c89e7dc29bb2adb1906cca8c93fcb21290a095b":"2379bbd39a1c22bc93b9b9cc45f3840b":"":96:"26e1f6cf0d9e0f36dfd669eb":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b1f9bd2006ec550b7b9913d383200b5d":"6d9fc8f586d50d6e0128172ae147844e80136905d3a297497a9566ca7c7445029028f14c9950acee92a5c12a9150f5e024e01c7505dd83937542b0b1288de9c292ae8ad918a09b2edf8493540b74c73d2794f2eb6eed18eba520ddea9567462c83330f33d7892fcde0b10c73a4e26ab1bef037cec7e0190b95188e9a752fee6f":"ca28fa6b64bb3b32ef7d211f1c8be759":"":96:"c87aac7ad0e85dbb103c0733":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b1f9bd2006ec550b7b9913d383200b5d":"6d9fc8f586d50d6e0128172ae147844e80136905d3a297497a9566ca7c7445029028f14c9950acee92a5c12a9150f5e024e01c7505dd83937542b0b1288de9c292ae8ad918a09b2edf8493540b74c73d2794f2eb6eed18eba520ddea9567462c83330f33d7892fcde0b10c73a4e26ab1bef037cec7e0190b95188e9a752fee6f":"ca28fa6b64bb3b32ef7d211f1c8be759":"":96:"c87aac7ad0e85dbb103c0733":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8b2cef1a92aa0af2b00fb2a99855d5bc":"fd09525ef3c65ab5823e1b6c36b4a9449a3975c5d3a9e7e33c61fb32edcbb8e8c915b6202e3fbce87d73cc3b66d83d9ea7e1e353cc7468f08626932cf0235563e2a28953ee5a0afadb1c3cb513b1f1fc9a8a6cf326174b877448672f7731dd6430a51619da1a169ab302da5af5b38802f8bbf5890b5d9b45deda799679501dc4":"08d87b7acee87d884667f6b1e32e34d0":"":96:"3bd7685318010b0c5fe3308b":"583e64631c218549923e8ad33b728d07f23b0f19d2aff1ad7e20d564c591db0e117caa8f21e3f3345e3d84f0ccbb27274cddf9274410fc342cb2a5d4aea4e925d0dd5350389ee0dea23a842ff3f5c1198374a96f41e055f999cfbc2f47ceaa883da8eb6ff729f583eff1f91bd3f3254d4e81e60d9993b3455e67f405708e4422":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8b2cef1a92aa0af2b00fb2a99855d5bc":"fd09525ef3c65ab5823e1b6c36b4a9449a3975c5d3a9e7e33c61fb32edcbb8e8c915b6202e3fbce87d73cc3b66d83d9ea7e1e353cc7468f08626932cf0235563e2a28953ee5a0afadb1c3cb513b1f1fc9a8a6cf326174b877448672f7731dd6430a51619da1a169ab302da5af5b38802f8bbf5890b5d9b45deda799679501dc4":"08d87b7acee87d884667f6b1e32e34d0":"":96:"3bd7685318010b0c5fe3308b":"":"583e64631c218549923e8ad33b728d07f23b0f19d2aff1ad7e20d564c591db0e117caa8f21e3f3345e3d84f0ccbb27274cddf9274410fc342cb2a5d4aea4e925d0dd5350389ee0dea23a842ff3f5c1198374a96f41e055f999cfbc2f47ceaa883da8eb6ff729f583eff1f91bd3f3254d4e81e60d9993b3455e67f405708e4422":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"175c306f8644b0c4b894ae3d0971505e":"fbe7ced7048f83e3a075661c4924eb77da1b4d6019d504afb942d728b31fd3b17557bd101c08453540a5e28d3505aeb8801a448afac2d9f68d20c0a31c7ef22bd95438851789eef1bebe8d96ac29607025b7e1366fecd3690ba90c315528dc435d9a786d36a16808d4b3e2c7c5175a1279792f1daccf51b2f91ac839465bb89a":"9860268ca2e10974f3726a0e5b9b310f":"":64:"f809105e5fc5b13c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"175c306f8644b0c4b894ae3d0971505e":"fbe7ced7048f83e3a075661c4924eb77da1b4d6019d504afb942d728b31fd3b17557bd101c08453540a5e28d3505aeb8801a448afac2d9f68d20c0a31c7ef22bd95438851789eef1bebe8d96ac29607025b7e1366fecd3690ba90c315528dc435d9a786d36a16808d4b3e2c7c5175a1279792f1daccf51b2f91ac839465bb89a":"9860268ca2e10974f3726a0e5b9b310f":"":64:"f809105e5fc5b13c":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08c0edcfe342a676ccdc04bdf854b4b0":"1fc8ef8480c32d908b4bcbfa7074a38e915c20ed7a1c608422087e89442d7c5af6fe9c9a716c55793248062d8e6c6e8e904e2804da3a43701e4c78ecdb67e0b25308afc6d9b463356439cd095cff1bdf0fd91ab301c79fd257046cba79a5d5cd99f2502ad968420e4d499110106072dc687f434db0955c756a174a9024373c48":"4a7b70753930fe659f8cc38e5833f0c7":"":64:"9ab1e2f3c4606376":"983458c3f198bc685d98cea2b23cf71f0eb126e90937cab3492a46d9dc85d76bbb8035c6e209c34b2a7187df007faabe9f3064dc63f1cb15bf5a10655e39b94732e0c6583d56327e9701344e048887a81b256181cdfa9ec42ebc990875e4852240ddcb3cbc4ea4e6307075fd314f7190f3553267bd68b19e954e310ec3f8dbab":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08c0edcfe342a676ccdc04bdf854b4b0":"1fc8ef8480c32d908b4bcbfa7074a38e915c20ed7a1c608422087e89442d7c5af6fe9c9a716c55793248062d8e6c6e8e904e2804da3a43701e4c78ecdb67e0b25308afc6d9b463356439cd095cff1bdf0fd91ab301c79fd257046cba79a5d5cd99f2502ad968420e4d499110106072dc687f434db0955c756a174a9024373c48":"4a7b70753930fe659f8cc38e5833f0c7":"":64:"9ab1e2f3c4606376":"":"983458c3f198bc685d98cea2b23cf71f0eb126e90937cab3492a46d9dc85d76bbb8035c6e209c34b2a7187df007faabe9f3064dc63f1cb15bf5a10655e39b94732e0c6583d56327e9701344e048887a81b256181cdfa9ec42ebc990875e4852240ddcb3cbc4ea4e6307075fd314f7190f3553267bd68b19e954e310ec3f8dbab":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"241067a0301edf0f825d793e03383ea1":"6984bb9830843529fad7f5e7760db89c778d62c764fcd2136ffb35d7d869f62f61d7fef64f65b7136398c1b5a792844528a18a13fba40b186ae08d1153b538007fc460684e2add8a9ed8dd82acbb8d357240daaa0c4deb979e54715545db03fe22e6d3906e89bdc81d535dae53075a58f65099434bfeed943dbc6024a92aa06a":"a30994261f48a66bb6c1fc3d69659228":"":64:"36c3b4a732ba75ae":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"241067a0301edf0f825d793e03383ea1":"6984bb9830843529fad7f5e7760db89c778d62c764fcd2136ffb35d7d869f62f61d7fef64f65b7136398c1b5a792844528a18a13fba40b186ae08d1153b538007fc460684e2add8a9ed8dd82acbb8d357240daaa0c4deb979e54715545db03fe22e6d3906e89bdc81d535dae53075a58f65099434bfeed943dbc6024a92aa06a":"a30994261f48a66bb6c1fc3d69659228":"":64:"36c3b4a732ba75ae":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"03cccb5357bd2848332d1696f2ff90cb":"5e2f18cbc1e773df9f28be08abb3d0b64d545c870c5778ac8bb396bef857d2ac1342ae1afb3bf5d64e667bf837458415d48396204fe560e3b635eb10e560e437f2d0396952998fd36e116cd047c1d7f6fc9901094454d24165c557a8816e0d0a8e0ce41e040ba6f26ca567c74fc47d9738b8cd8dae5dfc831c65bc1ba9603a07":"e0754022dfb1f813ccaf321558790806":"":32:"c75f0246":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"03cccb5357bd2848332d1696f2ff90cb":"5e2f18cbc1e773df9f28be08abb3d0b64d545c870c5778ac8bb396bef857d2ac1342ae1afb3bf5d64e667bf837458415d48396204fe560e3b635eb10e560e437f2d0396952998fd36e116cd047c1d7f6fc9901094454d24165c557a8816e0d0a8e0ce41e040ba6f26ca567c74fc47d9738b8cd8dae5dfc831c65bc1ba9603a07":"e0754022dfb1f813ccaf321558790806":"":32:"c75f0246":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4e5e53c84a05d5a5348bac7b2611cf62":"489c00c05dec06f282924c680f621ab99ac87f7d33ebbb4ca0eee187ec177d30d2b4afb4ee9f0dc019cf1a4da16d84b7f5f5c7fce72a32461db115b5a5a433024fd5ed3d47161836bb057a0189ed768f95e45fa967d0cc512fc91b555808c4033c945e8f2f7d36428dcb61f697e791b74e5c79b2bcb9cb81bec70d8119cd8d76":"47e40543b7d16bc9122c40b106d31d43":"":32:"81eec75d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4e5e53c84a05d5a5348bac7b2611cf62":"489c00c05dec06f282924c680f621ab99ac87f7d33ebbb4ca0eee187ec177d30d2b4afb4ee9f0dc019cf1a4da16d84b7f5f5c7fce72a32461db115b5a5a433024fd5ed3d47161836bb057a0189ed768f95e45fa967d0cc512fc91b555808c4033c945e8f2f7d36428dcb61f697e791b74e5c79b2bcb9cb81bec70d8119cd8d76":"47e40543b7d16bc9122c40b106d31d43":"":32:"81eec75d":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c94008bf377f90b7a1c0d2ea38f730c":"7b3d619d115de9970b2df4e1f25194940b3f3da04c653231e8e6946de9dc08ae5ba37e2a93c232e1f9445f31c01333045f22bd832e3b5f9833f37070fafb0ef1c44cc5637058ab64d9e07bb81b32852d4cf749a3ddbfdb494f8de8bb4e31f46033f8a16bc22e2595d023845505ea5db74dd69ab4ca940078b09efb4ff19bdb66":"abfe92931a8411a39986b74560a38211":"":32:"47d42e78":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c94008bf377f90b7a1c0d2ea38f730c":"7b3d619d115de9970b2df4e1f25194940b3f3da04c653231e8e6946de9dc08ae5ba37e2a93c232e1f9445f31c01333045f22bd832e3b5f9833f37070fafb0ef1c44cc5637058ab64d9e07bb81b32852d4cf749a3ddbfdb494f8de8bb4e31f46033f8a16bc22e2595d023845505ea5db74dd69ab4ca940078b09efb4ff19bdb66":"abfe92931a8411a39986b74560a38211":"":32:"47d42e78":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"69eedf3777e594c30e94e9c5e2bce467":"5114e9983c96fecec3f7304ca42f52aa16cb7c6aadfb62ad537c93a3188835ca0703dad34c73cf96435b668b68a7a1d056931959316e8d3ab956bf64c4e07479c7767f9d488b0c0c351333ccf400b7e0be19a0fd173e3f2a1ae313f27e516952260fd2da9ab9daca478ebb93cd07d0b7503b32364d8e308d904d966c58f226bb":"a3330638a809ba358d6c098e4342b81e":"df4e3f2b47cf0e8590228fcf9913fb8a5eb9751bba318fd2d57be68c7e788e04fabf303699b99f26313d1c4956105cd2817aad21b91c28f3b9251e9c0b354490fa5abfcea0065aa3cc9b96772eb8af06a1a9054bf12d3ae698dfb01a13f989f8b8a4bb61686cf3adf58f05873a24d403a62a092290c2481e4159588fea6b9a09":128:"5de3068e1e20eed469265000077b1db9":"208e6321238bf5c6e2ef55a4b8f531cbbfb0d77374fe32df6dd663486cf79beeed39bb6910c3c78dd0cc30707a0a12b226b2d06024db25dcd8a4e620f009cafa5242121e864c7f3f4360aaf1e9d4e548d99615156f156008418c1c41ff2bbc007cecf8f209c73203e6df89b32871de637b3d6af2e277d146ae03f3404d387b77":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"69eedf3777e594c30e94e9c5e2bce467":"5114e9983c96fecec3f7304ca42f52aa16cb7c6aadfb62ad537c93a3188835ca0703dad34c73cf96435b668b68a7a1d056931959316e8d3ab956bf64c4e07479c7767f9d488b0c0c351333ccf400b7e0be19a0fd173e3f2a1ae313f27e516952260fd2da9ab9daca478ebb93cd07d0b7503b32364d8e308d904d966c58f226bb":"a3330638a809ba358d6c098e4342b81e":"df4e3f2b47cf0e8590228fcf9913fb8a5eb9751bba318fd2d57be68c7e788e04fabf303699b99f26313d1c4956105cd2817aad21b91c28f3b9251e9c0b354490fa5abfcea0065aa3cc9b96772eb8af06a1a9054bf12d3ae698dfb01a13f989f8b8a4bb61686cf3adf58f05873a24d403a62a092290c2481e4159588fea6b9a09":128:"5de3068e1e20eed469265000077b1db9":"":"208e6321238bf5c6e2ef55a4b8f531cbbfb0d77374fe32df6dd663486cf79beeed39bb6910c3c78dd0cc30707a0a12b226b2d06024db25dcd8a4e620f009cafa5242121e864c7f3f4360aaf1e9d4e548d99615156f156008418c1c41ff2bbc007cecf8f209c73203e6df89b32871de637b3d6af2e277d146ae03f3404d387b77":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"45cc35311eedf0ba093bf901931a7036":"5dc8d7525eaad035c19714ae1b1e538cb66a4089027245351e0ad9297410fb3a0c1155407c10a8bb95a9ca624a9c9925dac003ee78926c6e90ff4ccdba10e8a78bda1c4478162a0e302de5ff05fb0f94c89c3c7429fb94828bdcd97d21333c2ee72963ee6f056ce272b8bab007e653a42b01d1d2041ba627f169c8c0d32e6dae":"fed5084de3c348f5a0adf4c2fd4e848a":"6e210914e4aed188d576f5ad7fc7e4cf7dd8d82f34ea3bcbdb7267cfd9045f806978dbff3460c4e8ff8c4edb6ad2edba405a8d915729d89aab2116b36a70b54f5920a97f5a571977e0329eda6c696749be940eabfc6d8b0bbd6fbdb87657b3a7695da9f5d3a7384257f20e0becd8512d3705cc246ee6ca1e610921cf92603d79":128:"266a895fc21da5176b44b446d7d1921d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"45cc35311eedf0ba093bf901931a7036":"5dc8d7525eaad035c19714ae1b1e538cb66a4089027245351e0ad9297410fb3a0c1155407c10a8bb95a9ca624a9c9925dac003ee78926c6e90ff4ccdba10e8a78bda1c4478162a0e302de5ff05fb0f94c89c3c7429fb94828bdcd97d21333c2ee72963ee6f056ce272b8bab007e653a42b01d1d2041ba627f169c8c0d32e6dae":"fed5084de3c348f5a0adf4c2fd4e848a":"6e210914e4aed188d576f5ad7fc7e4cf7dd8d82f34ea3bcbdb7267cfd9045f806978dbff3460c4e8ff8c4edb6ad2edba405a8d915729d89aab2116b36a70b54f5920a97f5a571977e0329eda6c696749be940eabfc6d8b0bbd6fbdb87657b3a7695da9f5d3a7384257f20e0becd8512d3705cc246ee6ca1e610921cf92603d79":128:"266a895fc21da5176b44b446d7d1921d":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9edb5231ca4a136b4df4ae22b8588f9f":"493df801c57f8bb591955712d92d3fc34518f0599fec8533b2b4473364e1df4f560c12444cf50eeb584676b7e955c742189de6b50b8e012dfa6642f3679fb02bc6d8e08d1db88c8ae955a7946263e06494e17f8df246b672942661e5563302252208f2e00a0d77068a020e26082c291a75a06f63c41e2830292a418b2b5fd9dd":"c342e9bdabe7be922b2695f5894e032c":"a45c7f8032ac5144deef8d5380f033aea2786b0592720a867f4831eaccc6b85d3fd568aedc6e472e017455b0b5b30cf7a08ea43ca587f35e1646ecd9b4dc774d11e350c82c65692be1e9541cbd72a283bdcf93dc7115545f373747b4f8d5915ed0c42fbeefd3e9bd86003d65efc2361fde5b874ddabcf8265e6b884615102eff":128:"5ed3ea75c8172fa0e8755fef7b4c90f1":"56696e501fac1e8d5b83ef911ed11337d5d51ff5342a82993dd5340bb9632e6606eef68ec5fe8cec6b34ebbc596c279e6cbc9221c4cde933f6d93ae014e3c4ca49593f35eaa638606d059519bac3a3373519e6184e7227d2aa62170c36479fe239cb698bfca863925a4c9fb1338685a55a6dfd3bd9c52d8ae12be8551fce6e1a":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9edb5231ca4a136b4df4ae22b8588f9f":"493df801c57f8bb591955712d92d3fc34518f0599fec8533b2b4473364e1df4f560c12444cf50eeb584676b7e955c742189de6b50b8e012dfa6642f3679fb02bc6d8e08d1db88c8ae955a7946263e06494e17f8df246b672942661e5563302252208f2e00a0d77068a020e26082c291a75a06f63c41e2830292a418b2b5fd9dd":"c342e9bdabe7be922b2695f5894e032c":"a45c7f8032ac5144deef8d5380f033aea2786b0592720a867f4831eaccc6b85d3fd568aedc6e472e017455b0b5b30cf7a08ea43ca587f35e1646ecd9b4dc774d11e350c82c65692be1e9541cbd72a283bdcf93dc7115545f373747b4f8d5915ed0c42fbeefd3e9bd86003d65efc2361fde5b874ddabcf8265e6b884615102eff":128:"5ed3ea75c8172fa0e8755fef7b4c90f1":"":"56696e501fac1e8d5b83ef911ed11337d5d51ff5342a82993dd5340bb9632e6606eef68ec5fe8cec6b34ebbc596c279e6cbc9221c4cde933f6d93ae014e3c4ca49593f35eaa638606d059519bac3a3373519e6184e7227d2aa62170c36479fe239cb698bfca863925a4c9fb1338685a55a6dfd3bd9c52d8ae12be8551fce6e1a":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d5fdcb8f5225090e63fae9b68f92c7cb":"d39b9cba95e3a3aab9bc1d03ff475c04faeb5b7f0510777f39e5a05756606eb7ddd154aac035d9ddaf3535629821dd8f014dedd52cd184f52fc706e3c89a3a271398c9125d9a624dafb297a56022ca2ea331ea7359ab5e65f8e14814788e64e0a886a9b1a0144bf268fdcf9d94c3d10a0452f40111da9df108252e9039eacea3":"581c818282a0905df5ffff652e5604e9":"f1ae6cd7b07f261105f555cf812a1d5bf8dd9aac07666318acffa11abb77d0238156663acbf7543825b45c6e9cddb481a40995ecd78bb5f4cba5df7c7efb00fc19c7f45e94d37697aca8ef368b99165393b6107f900194c797cd3289cb097eb5915f2abfd6aa52dd1effffdde448e30075a1c053246db54b0ec16eadca1c0071":120:"827e66b5b70dce56215cfb86c9a642":"cec11a12e47fd443f878e8e9fe23c65f29dd2d53cec59b799bcb0928de8e2f92fe85c27cec5c842ef30967b919accafe0c0d731b57f0bb5685d90a3061cb473e50e8aeca1346d1f47f7db06941f83f21ba5976d97c28cab547d8c1f38387a04b8a0b212da55b75fbaf9562eeeabd78eadcbab66457f0cd4e0d28133a64cb063f":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d5fdcb8f5225090e63fae9b68f92c7cb":"d39b9cba95e3a3aab9bc1d03ff475c04faeb5b7f0510777f39e5a05756606eb7ddd154aac035d9ddaf3535629821dd8f014dedd52cd184f52fc706e3c89a3a271398c9125d9a624dafb297a56022ca2ea331ea7359ab5e65f8e14814788e64e0a886a9b1a0144bf268fdcf9d94c3d10a0452f40111da9df108252e9039eacea3":"581c818282a0905df5ffff652e5604e9":"f1ae6cd7b07f261105f555cf812a1d5bf8dd9aac07666318acffa11abb77d0238156663acbf7543825b45c6e9cddb481a40995ecd78bb5f4cba5df7c7efb00fc19c7f45e94d37697aca8ef368b99165393b6107f900194c797cd3289cb097eb5915f2abfd6aa52dd1effffdde448e30075a1c053246db54b0ec16eadca1c0071":120:"827e66b5b70dce56215cfb86c9a642":"":"cec11a12e47fd443f878e8e9fe23c65f29dd2d53cec59b799bcb0928de8e2f92fe85c27cec5c842ef30967b919accafe0c0d731b57f0bb5685d90a3061cb473e50e8aeca1346d1f47f7db06941f83f21ba5976d97c28cab547d8c1f38387a04b8a0b212da55b75fbaf9562eeeabd78eadcbab66457f0cd4e0d28133a64cb063f":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"036198cd3a3ab9319684d0f811cf2992":"6b95b9e82a695fb7b466ce3adb536f525d8314f95eada39efb49baf121093ce7d5439f0d8223e03530b85accd388a70650ca9f7e63eb32afecb7b1916ed9b762128cc641caf3e08e027c3d88481d653b6b15172e977dfb9b3f88465911aee162501cbf8501ce2b66ee151bbfdc23225f638f18750c239d62471663e5ee2a5856":"47dffc6b3b80ffef4b943bde87b9cf3c":"ec4de476cd337f564a3facb544d0ff31cd89af4c3d9a28543e45156189f8eff8f804494dda83a1fb2c30ce858884a01ec63db59268452b1eea0f0d48280bb7340eaacc84509469dd94d303774d053d7ab4fb5f6c26581efeb19165f8cb09d58ec314d09ab8356731e87fd081f661e7b2d1a7c3aa4af5448a12b742e7b210b0b0":120:"6cf68a374bea08a977ec8a04b92e8b":"5c2f7c408167be3d266ff634e1993fe291aef7efae245fa0b6b5bde886a810c866ae6a078286684d1b66116e636e285f03646e09f3c4ed7b184e7c171ba84f3bfd9500c6f35964a404892b4cdcdd3f697fc5b01934a86019810987a9fea7efca016049873f1072f62df3c17f57ea1d88ccd8757f7e3c5d96e8a18d5366a39ea9":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"036198cd3a3ab9319684d0f811cf2992":"6b95b9e82a695fb7b466ce3adb536f525d8314f95eada39efb49baf121093ce7d5439f0d8223e03530b85accd388a70650ca9f7e63eb32afecb7b1916ed9b762128cc641caf3e08e027c3d88481d653b6b15172e977dfb9b3f88465911aee162501cbf8501ce2b66ee151bbfdc23225f638f18750c239d62471663e5ee2a5856":"47dffc6b3b80ffef4b943bde87b9cf3c":"ec4de476cd337f564a3facb544d0ff31cd89af4c3d9a28543e45156189f8eff8f804494dda83a1fb2c30ce858884a01ec63db59268452b1eea0f0d48280bb7340eaacc84509469dd94d303774d053d7ab4fb5f6c26581efeb19165f8cb09d58ec314d09ab8356731e87fd081f661e7b2d1a7c3aa4af5448a12b742e7b210b0b0":120:"6cf68a374bea08a977ec8a04b92e8b":"":"5c2f7c408167be3d266ff634e1993fe291aef7efae245fa0b6b5bde886a810c866ae6a078286684d1b66116e636e285f03646e09f3c4ed7b184e7c171ba84f3bfd9500c6f35964a404892b4cdcdd3f697fc5b01934a86019810987a9fea7efca016049873f1072f62df3c17f57ea1d88ccd8757f7e3c5d96e8a18d5366a39ea9":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c9fbbff8f25f951ba874dfc5ff38584e":"ca401071396da00376add467490abc6e6a7d8a85852026979f7013a09cf689113c8d833560cd6c5b8fdaa8fdd818e773ac13954839a0a2c91efeaf4e0e14de43308419a8b86fa2ae600a88a6bd39dfaabc16a3c7c1b77a5c2aab7f7caceb2f8595324125efbb7c96ba16c47d0bd10568b24bf445d72d683268466e68e46df500":"1c1fc752673be6d4ff4cc749fc11e0fe":"abfde0b60acfe265b62ed68ebebc1f5f725f155c4b8a8aeec8d704701c51ff7817060c1b0ce6b80d6efc9836c9ea2bc022ec67db4cd34e945e3a1b153fd2e0f7ac84bb4b07e04cbb529ee24014b16067f9f082b940c9d5e54024d3e5e910310457478560721587da7b5343d89eec5a8fce389c01185db15e7faa9a3fa32e8ab9":120:"ff0b2c384e03b50e7e829c7a9f95aa":"239637fac6e180e71b2c9fa63ce8805f453d81499623ec2deba9b033350250662897867bffaf0c314244baf9e1fe3e1bb7c626d616bfbf3e0ac09a32aaf718b432337c9dc57c2d6fc4a0a09bdc05b9184d1b90c7193b7869f91e2caa8b3b35c10c6621ffae4c609bdf4e4e3f06e930541c381451ef58f4f30a559d2b79b0e6b6":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c9fbbff8f25f951ba874dfc5ff38584e":"ca401071396da00376add467490abc6e6a7d8a85852026979f7013a09cf689113c8d833560cd6c5b8fdaa8fdd818e773ac13954839a0a2c91efeaf4e0e14de43308419a8b86fa2ae600a88a6bd39dfaabc16a3c7c1b77a5c2aab7f7caceb2f8595324125efbb7c96ba16c47d0bd10568b24bf445d72d683268466e68e46df500":"1c1fc752673be6d4ff4cc749fc11e0fe":"abfde0b60acfe265b62ed68ebebc1f5f725f155c4b8a8aeec8d704701c51ff7817060c1b0ce6b80d6efc9836c9ea2bc022ec67db4cd34e945e3a1b153fd2e0f7ac84bb4b07e04cbb529ee24014b16067f9f082b940c9d5e54024d3e5e910310457478560721587da7b5343d89eec5a8fce389c01185db15e7faa9a3fa32e8ab9":120:"ff0b2c384e03b50e7e829c7a9f95aa":"":"239637fac6e180e71b2c9fa63ce8805f453d81499623ec2deba9b033350250662897867bffaf0c314244baf9e1fe3e1bb7c626d616bfbf3e0ac09a32aaf718b432337c9dc57c2d6fc4a0a09bdc05b9184d1b90c7193b7869f91e2caa8b3b35c10c6621ffae4c609bdf4e4e3f06e930541c381451ef58f4f30a559d2b79b0e6b6":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a314ec178da96311e42334a616fb38b":"518b3f5384ab54f80497d55be7a5d6902bc7718386212c2ec7537db331514b3838f104bf9054e03039a4cfb73f41e5d0a9648e569ed738cea8d33917430dff6afa8f07a75e324b9262fa196a4439dcd66b0535ee5bea0d292600227c2a79ed03be0671740e5cb7b306d855612bd3abcbf02cf7e7cecbb6cdbb33d57b4e3234a2":"d7ea27c819e3eb2666611bb1c7fc068d":"db8dcc31a5681f13d56abd51bd2dcb0d2b171628186e215a68bf16167b4acd00c3441973c3fa62fa2698ee5c6749fc20e542364d63c40756d8bcff780269e5201bafdced3cdc97931d8203873431882c84522c151b775285d0a3c5d7667254c74724ff0ea9d417aa6c62835865dfded34edd331c0c235a089427672c5a9211c9":112:"1e774647b1ca406e0ed7141a8e1e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a314ec178da96311e42334a616fb38b":"518b3f5384ab54f80497d55be7a5d6902bc7718386212c2ec7537db331514b3838f104bf9054e03039a4cfb73f41e5d0a9648e569ed738cea8d33917430dff6afa8f07a75e324b9262fa196a4439dcd66b0535ee5bea0d292600227c2a79ed03be0671740e5cb7b306d855612bd3abcbf02cf7e7cecbb6cdbb33d57b4e3234a2":"d7ea27c819e3eb2666611bb1c7fc068d":"db8dcc31a5681f13d56abd51bd2dcb0d2b171628186e215a68bf16167b4acd00c3441973c3fa62fa2698ee5c6749fc20e542364d63c40756d8bcff780269e5201bafdced3cdc97931d8203873431882c84522c151b775285d0a3c5d7667254c74724ff0ea9d417aa6c62835865dfded34edd331c0c235a089427672c5a9211c9":112:"1e774647b1ca406e0ed7141a8e1e":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e818372a63b7e2c23b524e29ba752bdb":"c1bf1b702a95ceaa6b48a1cdd888ae51f58a9fc3232bd6c784529a83301c6d0cdda6e605ad9a2563f54a8d59f624ae7c589e48b85041a010dcb6fb8739d43e79a456fc0e8574af086df78680460c3cdc4e00dc3b9d4e76b0de26e9aec546705249fa7e7466c01001c2667eaf2813be1f0f116916f34843a06b201d653aa1b27e":"36e617e787cb25e154f73af1da68cb06":"71801d69796c2ce36b043c157aec9fd2e06fd1ec596126d10c26b6d44e3dc36c4fa30a030d65c382b6ddfd958e71fe9c16732e595137a3d6764c15480fc3358e9a113ba492b31274663f5842df5d1cc6bad70e83b34675a4411e2e70755aede0ff5035601be130562e27a20283d6f144ff1bdb5276dec05fad80d51b28d50688":112:"3744262bc76f283964c1c15dc069":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e818372a63b7e2c23b524e29ba752bdb":"c1bf1b702a95ceaa6b48a1cdd888ae51f58a9fc3232bd6c784529a83301c6d0cdda6e605ad9a2563f54a8d59f624ae7c589e48b85041a010dcb6fb8739d43e79a456fc0e8574af086df78680460c3cdc4e00dc3b9d4e76b0de26e9aec546705249fa7e7466c01001c2667eaf2813be1f0f116916f34843a06b201d653aa1b27e":"36e617e787cb25e154f73af1da68cb06":"71801d69796c2ce36b043c157aec9fd2e06fd1ec596126d10c26b6d44e3dc36c4fa30a030d65c382b6ddfd958e71fe9c16732e595137a3d6764c15480fc3358e9a113ba492b31274663f5842df5d1cc6bad70e83b34675a4411e2e70755aede0ff5035601be130562e27a20283d6f144ff1bdb5276dec05fad80d51b28d50688":112:"3744262bc76f283964c1c15dc069":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a04f16882ff45816739d1b6697ce8b7":"6a4f3dbb3371f64258fd1f831349e745a4e19a33aad794b1de3788729618beed619586092120e9e5dc3ac6e0d52f991f7be61afbfaa4399ac716ad79a2734827254b1627791dc92a128a6f43426b8085dee94242e83176a3d762658f18ecc1e37e3e1531648c9caed212ea2cf3b3843cb92cb07730f30fe2dca3925470fadd06":"66f504d9a9128ad7fb7f1430d37c4784":"f641c53c83c4fb1ff8044bfa97cdf63fe75d8159d65b3e5ad585b89c083a53cf4a2f7a58eaeaf45fa71f2c07bc5725a6b03307d7f32884a133a4c803700bf1e12564b98b71f63b434ddf13ad2c467dda25ffa6effcafa72452b20c34cfae71e47096f8745b487e9f1945f5bec83f7ec2709a13b504d92315b1b727a78902be84":112:"fbb37084396394fecd9581741f3c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a04f16882ff45816739d1b6697ce8b7":"6a4f3dbb3371f64258fd1f831349e745a4e19a33aad794b1de3788729618beed619586092120e9e5dc3ac6e0d52f991f7be61afbfaa4399ac716ad79a2734827254b1627791dc92a128a6f43426b8085dee94242e83176a3d762658f18ecc1e37e3e1531648c9caed212ea2cf3b3843cb92cb07730f30fe2dca3925470fadd06":"66f504d9a9128ad7fb7f1430d37c4784":"f641c53c83c4fb1ff8044bfa97cdf63fe75d8159d65b3e5ad585b89c083a53cf4a2f7a58eaeaf45fa71f2c07bc5725a6b03307d7f32884a133a4c803700bf1e12564b98b71f63b434ddf13ad2c467dda25ffa6effcafa72452b20c34cfae71e47096f8745b487e9f1945f5bec83f7ec2709a13b504d92315b1b727a78902be84":112:"fbb37084396394fecd9581741f3c":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"38cf029a4b20607030586cd2d82146e6":"f4c9f4476561c9ebdac71b282ae6e2f9f03547da98e66d4d857720db2fcc9ed1f363858db34c9dcaca0109d7c81db24150493115f2bb6985efa8686e3d2ab719d33b230aa4c5c70696bf42f225fb3c6704711c054a882d89b320884a78cb59cd2100496edf4010487597fb9135d8ca79693a43843e9626fd6c64a8722b3a27dc":"6330084319e2bf32cd5240f4826944bc":"80746cfb0127c592f8164d751b0e14a5b379056a884cece7ee4e9b80538d7ff6be56a3b19c135786722aaf315123b47672b0251e87ea45f0fd3601cf93f9efa6cbd9ad537f54d57f1e187f821faac24096ecec19d137c9f4cf145c278af4cd8de01c7758784fda06f1cc62d92ae1977786f3d0645714ab4ab6f48c8794b12f73":104:"7b021de5cda915ba58f90ceef4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"38cf029a4b20607030586cd2d82146e6":"f4c9f4476561c9ebdac71b282ae6e2f9f03547da98e66d4d857720db2fcc9ed1f363858db34c9dcaca0109d7c81db24150493115f2bb6985efa8686e3d2ab719d33b230aa4c5c70696bf42f225fb3c6704711c054a882d89b320884a78cb59cd2100496edf4010487597fb9135d8ca79693a43843e9626fd6c64a8722b3a27dc":"6330084319e2bf32cd5240f4826944bc":"80746cfb0127c592f8164d751b0e14a5b379056a884cece7ee4e9b80538d7ff6be56a3b19c135786722aaf315123b47672b0251e87ea45f0fd3601cf93f9efa6cbd9ad537f54d57f1e187f821faac24096ecec19d137c9f4cf145c278af4cd8de01c7758784fda06f1cc62d92ae1977786f3d0645714ab4ab6f48c8794b12f73":104:"7b021de5cda915ba58f90ceef4":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cf4d81fc5997c744a572bed71f4ae609":"f3d65d70326e641fbe7fd945fe9cf66c74f17d0d1020ae8ac488f39b7285c99d8632bc2201960f3d77daccfecc04428abe0853aa8d82b90a93127c72b2d2af53f7f1bd0afb99d50f0b3b24e934ec98eddb278b2c65866442cebf10208c7ce1b7ecf764858480b2a269b106fa6d2428d5ad17612e53e62ccc7ad1184663aeb9a7":"bc4e20c56931c967ce8e3b8f5f1c392f":"b6b8294abf7da5703f864721f7904d3821f5568bf4b269e44edef4f1c95ddc172d83a06c0ad9f7f1fd2e292c17a876392bc5bb705d370b2f16ff721bef7648f423346fd3a4d762676e6fcf2d690553a47224af29afed0f452d263be90eb8150a13d720f1db6f1abc1c2ec18cfbf93b8ed3c5aa7cfc1dcb514d69f90409687a4d":104:"0a86142a0af81c8df64ba689f4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cf4d81fc5997c744a572bed71f4ae609":"f3d65d70326e641fbe7fd945fe9cf66c74f17d0d1020ae8ac488f39b7285c99d8632bc2201960f3d77daccfecc04428abe0853aa8d82b90a93127c72b2d2af53f7f1bd0afb99d50f0b3b24e934ec98eddb278b2c65866442cebf10208c7ce1b7ecf764858480b2a269b106fa6d2428d5ad17612e53e62ccc7ad1184663aeb9a7":"bc4e20c56931c967ce8e3b8f5f1c392f":"b6b8294abf7da5703f864721f7904d3821f5568bf4b269e44edef4f1c95ddc172d83a06c0ad9f7f1fd2e292c17a876392bc5bb705d370b2f16ff721bef7648f423346fd3a4d762676e6fcf2d690553a47224af29afed0f452d263be90eb8150a13d720f1db6f1abc1c2ec18cfbf93b8ed3c5aa7cfc1dcb514d69f90409687a4d":104:"0a86142a0af81c8df64ba689f4":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d88ad40b42ead744f1b7a36685658be1":"e99d2566fe6bcb2a04d167605db7c0f1e5567ff2d8d3292c15bbccc5d1e872bcb15a30b3bb8b1eb45e02fba15946e6bca310583a6740845a0f74f4ebfd5c59ced46875823e369e0447cc3e5d03dae530adf3c9846362c94e7f9d17207bf92d4d59981d8fd904eb8b96a0a23eb0f8d7e7a87e8e8892a2451524da6841ce575c27":"52c3158f5bd65a0a7ce1c5b57b9b295e":"dde2663335c40e5550ae192b843fa9fb4ef357b5c09d9f39dafda3296a4d14031817ee4dc1a201d677597d81e37050cd3dc86c25adbd551e947a080b6c47ec7be8a927ef7920bd1bb81f2c59801a2b9d745d33344cbe4838bcf2eb8dce53ab82c75c9bbab8e406597f6908aaa81fbbdef25aa69116c8f7a8cdc9958435aa32ac":104:"7643b3534eb5cb38331ed2e572":"6f87f6be2f4e7421aa26fe321045d1e23066a02158634bef35890581c92367d0bc232940de30974c70a66c60137a9f3924d12db1e5bc1b0e7131ea3620a25eb805b7d670263b82c8bbfcd6839305025390fc17d42d82daebe1b24f73ff9aa4617e3866785dded88f8b55ef89b2798ea2641a592a46428d9020f9bf853c194576":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d88ad40b42ead744f1b7a36685658be1":"e99d2566fe6bcb2a04d167605db7c0f1e5567ff2d8d3292c15bbccc5d1e872bcb15a30b3bb8b1eb45e02fba15946e6bca310583a6740845a0f74f4ebfd5c59ced46875823e369e0447cc3e5d03dae530adf3c9846362c94e7f9d17207bf92d4d59981d8fd904eb8b96a0a23eb0f8d7e7a87e8e8892a2451524da6841ce575c27":"52c3158f5bd65a0a7ce1c5b57b9b295e":"dde2663335c40e5550ae192b843fa9fb4ef357b5c09d9f39dafda3296a4d14031817ee4dc1a201d677597d81e37050cd3dc86c25adbd551e947a080b6c47ec7be8a927ef7920bd1bb81f2c59801a2b9d745d33344cbe4838bcf2eb8dce53ab82c75c9bbab8e406597f6908aaa81fbbdef25aa69116c8f7a8cdc9958435aa32ac":104:"7643b3534eb5cb38331ed2e572":"":"6f87f6be2f4e7421aa26fe321045d1e23066a02158634bef35890581c92367d0bc232940de30974c70a66c60137a9f3924d12db1e5bc1b0e7131ea3620a25eb805b7d670263b82c8bbfcd6839305025390fc17d42d82daebe1b24f73ff9aa4617e3866785dded88f8b55ef89b2798ea2641a592a46428d9020f9bf853c194576":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3ce86a212a30e724b4c624057db4e79":"3582ef7a9565c9a8e4496750ee5ca3e3a80df6238f7b7608e3394ec56d1360777921da039ede34abcedd01081babd496ba4de74a7de501181d6bb2022a6cc7f79d89a4c6a97676fb0f2b42f70e2d0bc1eaac364c3646df4f611c1d6b09737451b81b5a4da73c05fb58391c74e44498b80b26f1c29562d23c39b5d3f086b280cb":"9e03f0dd4cb2b3d830a6925e4400ed89":"92c48a39d93ea3308f55f6650d33fdf17a902076d582a94a82ac99496de9f62312292b844bbca5a683ef0f0710bbc1c7f89cbcca8f9c0299f154590d32059bd99fca5d78c450ede0d11d55075947caf2151218ce7a06c1e81985a7781a3444054170b457fd7ba816026310112abb47c8eddfd3ab7f679a0f60efc6c6dd3b759e":96:"3230fe94b6ccd63e605f87d0":"052347a4273cddba65b2a0b961477f07edee440a9117ab204359d2dd45ad2a6dad3b60ead891e7da6d79f3017ac90f95725a0089f04d25ce537bf53b7ea8e1ea58692d34c221db141e2a9fd7211adcee03ef8b5bf3c5d36311d20bb3d81f70f7e7272d0e2b6d12293b1a2c31b70f140a8f08d98c6231a3c429c3d0a10b2e1c1c":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3ce86a212a30e724b4c624057db4e79":"3582ef7a9565c9a8e4496750ee5ca3e3a80df6238f7b7608e3394ec56d1360777921da039ede34abcedd01081babd496ba4de74a7de501181d6bb2022a6cc7f79d89a4c6a97676fb0f2b42f70e2d0bc1eaac364c3646df4f611c1d6b09737451b81b5a4da73c05fb58391c74e44498b80b26f1c29562d23c39b5d3f086b280cb":"9e03f0dd4cb2b3d830a6925e4400ed89":"92c48a39d93ea3308f55f6650d33fdf17a902076d582a94a82ac99496de9f62312292b844bbca5a683ef0f0710bbc1c7f89cbcca8f9c0299f154590d32059bd99fca5d78c450ede0d11d55075947caf2151218ce7a06c1e81985a7781a3444054170b457fd7ba816026310112abb47c8eddfd3ab7f679a0f60efc6c6dd3b759e":96:"3230fe94b6ccd63e605f87d0":"":"052347a4273cddba65b2a0b961477f07edee440a9117ab204359d2dd45ad2a6dad3b60ead891e7da6d79f3017ac90f95725a0089f04d25ce537bf53b7ea8e1ea58692d34c221db141e2a9fd7211adcee03ef8b5bf3c5d36311d20bb3d81f70f7e7272d0e2b6d12293b1a2c31b70f140a8f08d98c6231a3c429c3d0a10b2e1c1c":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a0155360b84420b5bf4fb410ea02f31e":"ecdb51522fc440f7471ea6a31f7c1ef1ec2153e5bcf6303297dbf8ddb3830b45ed9866157375ce4bdeb5e32fcbc6607984fccd7e6552628736608ab13072856d432ceccd3e90d1bb52ca9ada9cee90eb89ac10e887a1978fd0fb3d7bb20caaf35539e150be8044b725b8427c4c4a910f79980865d36344a8784bcc3d58460acb":"46f0386be7363887e7e357376305eab5":"611bc290f91798ad84f0a5ecb5a7cb8fa35e9ab6a5a51c9869a68a076e96f92c9c117595f92cbac5d33343fa2accd2541473907cbc54792c5e215ae857424c921b04ca4b81376bbedbfcc0e565c118f2aced08f247698eed5e2d202c48245161cabeac9fa195219f9799fa253e339561e13012167f1d02b4012b7791b7c863ba":96:"ac5addcc10cae6c1345520f1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a0155360b84420b5bf4fb410ea02f31e":"ecdb51522fc440f7471ea6a31f7c1ef1ec2153e5bcf6303297dbf8ddb3830b45ed9866157375ce4bdeb5e32fcbc6607984fccd7e6552628736608ab13072856d432ceccd3e90d1bb52ca9ada9cee90eb89ac10e887a1978fd0fb3d7bb20caaf35539e150be8044b725b8427c4c4a910f79980865d36344a8784bcc3d58460acb":"46f0386be7363887e7e357376305eab5":"611bc290f91798ad84f0a5ecb5a7cb8fa35e9ab6a5a51c9869a68a076e96f92c9c117595f92cbac5d33343fa2accd2541473907cbc54792c5e215ae857424c921b04ca4b81376bbedbfcc0e565c118f2aced08f247698eed5e2d202c48245161cabeac9fa195219f9799fa253e339561e13012167f1d02b4012b7791b7c863ba":96:"ac5addcc10cae6c1345520f1":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"694f621f594d96b16c32254ff06f3f9c":"e61476b8b7f101ca6005f25af2b9bee795d62720bbbf59357057ca7cd473e00f0d465255fce8d6164657603323549fb4e3d33fa51054b1a70cc7e492916dea85453e9107fe781bfeb4a622c5b2306a8dddef99386dc50745003aa7220cd7f32fb0a060fa7682576769a48f9169c7d11fe0a8a61b95f5d6dfcf216f7d0c652a84":"542db4e107485a3cd24c7ad337a4f1b5":"27b7bfa5eb34ba376e515e58ab8b6556c396820d0074a1fe3b984945dcf5251ca450456ccb4bb66ec739b03fdc5f72d24553e843255adc012d1f1c95aa3cdac5d12926465354217203052cbd4869a8b5be2e01d0fe66b5a6a8da0a2ce351557e2991ce77baa812b9c67b8e1c5a1fc348710e1a73a0fd49acfd538b7db6bef8b3":96:"0bdef4d771a1740381e7db97":"8b27a338fd2153d304f04655e09bd9bdf4468890ecce1e3b51de2c9a25a8d9336a9acd753ce270b1fe8d50196feac68145e0fd59c9cb3aa7c1e8af03494bc4279c6e287c849f3c775ada584ae173100946ae6921ef7c96bbc6f216093548702cf1867bb1bf1f4c9e90a34230a2b2aeb584622dd615023a43a406e64428bd9170":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"694f621f594d96b16c32254ff06f3f9c":"e61476b8b7f101ca6005f25af2b9bee795d62720bbbf59357057ca7cd473e00f0d465255fce8d6164657603323549fb4e3d33fa51054b1a70cc7e492916dea85453e9107fe781bfeb4a622c5b2306a8dddef99386dc50745003aa7220cd7f32fb0a060fa7682576769a48f9169c7d11fe0a8a61b95f5d6dfcf216f7d0c652a84":"542db4e107485a3cd24c7ad337a4f1b5":"27b7bfa5eb34ba376e515e58ab8b6556c396820d0074a1fe3b984945dcf5251ca450456ccb4bb66ec739b03fdc5f72d24553e843255adc012d1f1c95aa3cdac5d12926465354217203052cbd4869a8b5be2e01d0fe66b5a6a8da0a2ce351557e2991ce77baa812b9c67b8e1c5a1fc348710e1a73a0fd49acfd538b7db6bef8b3":96:"0bdef4d771a1740381e7db97":"":"8b27a338fd2153d304f04655e09bd9bdf4468890ecce1e3b51de2c9a25a8d9336a9acd753ce270b1fe8d50196feac68145e0fd59c9cb3aa7c1e8af03494bc4279c6e287c849f3c775ada584ae173100946ae6921ef7c96bbc6f216093548702cf1867bb1bf1f4c9e90a34230a2b2aeb584622dd615023a43a406e64428bd9170":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78826a5215a1d5e1b39cad5a06861f8f":"0fe2c798d7015d3e2f8725648d95729c45d357dc0c89fc63b9df5a68d3e65419540f663e9190793a29c58c495d5c6a731782acf119e2df8a96fb180ad772c301d098dbc5e3560ac45b6631a01cef7eed6db51f223775d601d2e11b9baa55e2f0651344777e5a03f6738a2013626a891b5f134f07b16598b8cbe3aeaefa1c2a26":"feb9d740fd1e221e328b5ef5ed19eff5":"ca9411b368d8295210d7a04da05a351d287f2f67d978ef1bb936de9f8065473f6fa11495da2eab13a1002231c86411d5409bbc718e2042ee99e013b1df1ef786e9fc1f2d43293c854128184efb9317c4ef82a002eac8b28fcd91d8a714a3aa25fc3c0ae4af9f4bcf5ad19a30cd8ec4b1785df70aa92074da419abe433dd4c435":64:"a724bbb295a02883":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78826a5215a1d5e1b39cad5a06861f8f":"0fe2c798d7015d3e2f8725648d95729c45d357dc0c89fc63b9df5a68d3e65419540f663e9190793a29c58c495d5c6a731782acf119e2df8a96fb180ad772c301d098dbc5e3560ac45b6631a01cef7eed6db51f223775d601d2e11b9baa55e2f0651344777e5a03f6738a2013626a891b5f134f07b16598b8cbe3aeaefa1c2a26":"feb9d740fd1e221e328b5ef5ed19eff5":"ca9411b368d8295210d7a04da05a351d287f2f67d978ef1bb936de9f8065473f6fa11495da2eab13a1002231c86411d5409bbc718e2042ee99e013b1df1ef786e9fc1f2d43293c854128184efb9317c4ef82a002eac8b28fcd91d8a714a3aa25fc3c0ae4af9f4bcf5ad19a30cd8ec4b1785df70aa92074da419abe433dd4c435":64:"a724bbb295a02883":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d450f5253251121606e56687952bf2f1":"479b4f421bd8ac7f615c4a507da187cb5d4b1f1e2c6113d1f9678c1ba92dc5e17c5b525d7f3208733223eb82af0820b8476e9b08ca714ce044417b24d2238720cb8ffdc69db558cbaff52e3651b400e16c9d5ac8ed8949a19c35516f80394a04bd1cfdced7b204f779d792086e00b2ebca2f55a1140e85f5ee9ac7cfc5a31747":"fe7ff90b020fc77d7fcd90bc583850ac":"a3bca9ff25a60006eb18f993dcdc99681e414e27605264dfd25652195d7fe1489550afd07fc7346b88d93b59eb6642913646e93bf50ee1db5dd30106cf181124d8ad01c72ed99038c9798620abdf5c78c419b08c97f982b34d9e9105d9aa4538afcd37f62e2412f14f7a248fcd60abaf2b66cd4554767f99030f1a495d56a5ae":64:"6446398aff73ed23":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d450f5253251121606e56687952bf2f1":"479b4f421bd8ac7f615c4a507da187cb5d4b1f1e2c6113d1f9678c1ba92dc5e17c5b525d7f3208733223eb82af0820b8476e9b08ca714ce044417b24d2238720cb8ffdc69db558cbaff52e3651b400e16c9d5ac8ed8949a19c35516f80394a04bd1cfdced7b204f779d792086e00b2ebca2f55a1140e85f5ee9ac7cfc5a31747":"fe7ff90b020fc77d7fcd90bc583850ac":"a3bca9ff25a60006eb18f993dcdc99681e414e27605264dfd25652195d7fe1489550afd07fc7346b88d93b59eb6642913646e93bf50ee1db5dd30106cf181124d8ad01c72ed99038c9798620abdf5c78c419b08c97f982b34d9e9105d9aa4538afcd37f62e2412f14f7a248fcd60abaf2b66cd4554767f99030f1a495d56a5ae":64:"6446398aff73ed23":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90a59f6b0abf932311f0b65623c17740":"be5a948a771a8df12adaf74d702f064a75f6483c03203365fbde7d184844fe6dee0b84cf344be05b1d163817ba1516fcb87b9167ed81f884ada73b0058e2b38cba515bbbe462f4c21f8de1d41bca2cf4340aa659f9f07886c2bb620d9c3295318c07fa3c17fe8242409359c08bcb337e5cf268880839b6a20f4ee4b3f04e7024":"20778bea82a6717038e7064f48a31981":"4022d04f1454a72d2efe57533bd32757595220b20f3a37d166cec0412fb1eb2588f939ecd906c805f4827338669888e9f730905001eb1b136b95e306edf70d9ba1e5cd0aa13a25a1f28ab55cff36f9cd7036c735e3b285d26002ad2ed1074b566e252ea3ec8a9ce10882375dc3f1d9676e301dcb179eaae991120b796cc35648":64:"dc77c1d7e0902d48":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90a59f6b0abf932311f0b65623c17740":"be5a948a771a8df12adaf74d702f064a75f6483c03203365fbde7d184844fe6dee0b84cf344be05b1d163817ba1516fcb87b9167ed81f884ada73b0058e2b38cba515bbbe462f4c21f8de1d41bca2cf4340aa659f9f07886c2bb620d9c3295318c07fa3c17fe8242409359c08bcb337e5cf268880839b6a20f4ee4b3f04e7024":"20778bea82a6717038e7064f48a31981":"4022d04f1454a72d2efe57533bd32757595220b20f3a37d166cec0412fb1eb2588f939ecd906c805f4827338669888e9f730905001eb1b136b95e306edf70d9ba1e5cd0aa13a25a1f28ab55cff36f9cd7036c735e3b285d26002ad2ed1074b566e252ea3ec8a9ce10882375dc3f1d9676e301dcb179eaae991120b796cc35648":64:"dc77c1d7e0902d48":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6be4ef629f0b38194c74f7b66418922d":"b67ea20a320f4ec0e4185c62a4ad79a3c97a8189a5e4d1deff9d3edff0f9a9323532853c1a2a2c1e62e4d1afebfcdf1d8461921ea601750380e63b912d8b7389198f976851d88a19f1aa32c97143668ad00838d98da1c4f2be0e6e2dc964d170d7f7ad2e2997982e5ca110e744b6e10c24ca18eadff6b129b1f290c8a7e0a593":"fb77a4b9b246271abfc656433f87628c":"e5d5227725a19a3050fbf2a97a6e854bc1218b94a4a3403b721ace3447daff68fff5553a26edd41219e68fb61fb9e964d0a3c29796251ae4eb942187cdc55d13a09dfb487e93d9e2072d7271456a77c6ccb81154443eea176314d6e3a08619b52cd880f1c28ae5214ac0090a3855dbd74f87389fe8afebd464330fb683dff81a":32:"3d8fc6fb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6be4ef629f0b38194c74f7b66418922d":"b67ea20a320f4ec0e4185c62a4ad79a3c97a8189a5e4d1deff9d3edff0f9a9323532853c1a2a2c1e62e4d1afebfcdf1d8461921ea601750380e63b912d8b7389198f976851d88a19f1aa32c97143668ad00838d98da1c4f2be0e6e2dc964d170d7f7ad2e2997982e5ca110e744b6e10c24ca18eadff6b129b1f290c8a7e0a593":"fb77a4b9b246271abfc656433f87628c":"e5d5227725a19a3050fbf2a97a6e854bc1218b94a4a3403b721ace3447daff68fff5553a26edd41219e68fb61fb9e964d0a3c29796251ae4eb942187cdc55d13a09dfb487e93d9e2072d7271456a77c6ccb81154443eea176314d6e3a08619b52cd880f1c28ae5214ac0090a3855dbd74f87389fe8afebd464330fb683dff81a":32:"3d8fc6fb":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c50e37244931e8debc12b3d561c83ba2":"b9abf0796f2d2f774735546cf809030f65ed0c7f6bd469ef2fe0ef32aa0225b57fbce07c36017bbc1806a81ff1a429278160a07643f864485b4e0e35d57553dc1a131e32aa10f1f91d663b10f0a418f472ed7b4bca54fd7ffdbb22c4d7764d94a7ffd04730614459431eb64335b9b65363de292c04275d40a7b968c0f5c486e9":"6c0b1fd7ab424a6883c36457d1b5521f":"516dc25f6452ae169ce293c5cee440de47353ca5ba770dca0f04175950e87a2d4c3f84fbc6eeacaac436853492929680066f959e74de4b736ab924d8367b90aaa6e9492561ad4b5aa78b6737d562e960edc3b983e2e01a186e9f22896f48d8dfcfb6a42cfe2c6006c687a27772820a1e8875bdf09e8104248ce4db883376bc04":32:"7d4393f0":"962509e494f10269b70ebad02b0cd799d1d41191a734863ef502aff3d3ba48dc2acf9da9a3fc3f40be4d210dc5e128bc00499aec57aa0a4669863165428687b88d46fad41e36af8ea6605586eaa5c0736d0d53b9d523e0cb5a0b285048e060a73cbf4b587d2cd787debdb2b4c8cda731a61a15b19fe8b561fbdd3a7373853ae1":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c50e37244931e8debc12b3d561c83ba2":"b9abf0796f2d2f774735546cf809030f65ed0c7f6bd469ef2fe0ef32aa0225b57fbce07c36017bbc1806a81ff1a429278160a07643f864485b4e0e35d57553dc1a131e32aa10f1f91d663b10f0a418f472ed7b4bca54fd7ffdbb22c4d7764d94a7ffd04730614459431eb64335b9b65363de292c04275d40a7b968c0f5c486e9":"6c0b1fd7ab424a6883c36457d1b5521f":"516dc25f6452ae169ce293c5cee440de47353ca5ba770dca0f04175950e87a2d4c3f84fbc6eeacaac436853492929680066f959e74de4b736ab924d8367b90aaa6e9492561ad4b5aa78b6737d562e960edc3b983e2e01a186e9f22896f48d8dfcfb6a42cfe2c6006c687a27772820a1e8875bdf09e8104248ce4db883376bc04":32:"7d4393f0":"":"962509e494f10269b70ebad02b0cd799d1d41191a734863ef502aff3d3ba48dc2acf9da9a3fc3f40be4d210dc5e128bc00499aec57aa0a4669863165428687b88d46fad41e36af8ea6605586eaa5c0736d0d53b9d523e0cb5a0b285048e060a73cbf4b587d2cd787debdb2b4c8cda731a61a15b19fe8b561fbdd3a7373853ae1":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8531ddb03977383405baf2ee9ca7d64b":"d90c9e26509bdba9b1dea8d2b94f2b1881d22c2bd756ad23cd61944710a1c1f2807170ed47a6870ae654e44757fcb3822ef28b37946cafc07284f8a0c22ae3552954f0d87b8d8c825bd546935b494cacb4262d9e2a88f254f200ad31367d8b3715afbabea5f34214ffedb14d7c84806022aba2dc8f88a314ffbb24017d1a9b9f":"baf623867d6a25fd85d1f08e599c0566":"18f92cdd37dcd7f99b06838f3f68748aba367baabaebd0da9ee787d70e752fa07dea553a43b643b8d8f460175c0746675205e20a7a98acfcac864d7c4cf5ab4c41c031738c76882acda003c5af47b1c4df8894a827a317935d970d4afaee17715c9cfd1883e8c345f19d1f89e229b8edba6b4f53b86d8da1c0f159afb83b6b33":32:"2fc9de46":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8531ddb03977383405baf2ee9ca7d64b":"d90c9e26509bdba9b1dea8d2b94f2b1881d22c2bd756ad23cd61944710a1c1f2807170ed47a6870ae654e44757fcb3822ef28b37946cafc07284f8a0c22ae3552954f0d87b8d8c825bd546935b494cacb4262d9e2a88f254f200ad31367d8b3715afbabea5f34214ffedb14d7c84806022aba2dc8f88a314ffbb24017d1a9b9f":"baf623867d6a25fd85d1f08e599c0566":"18f92cdd37dcd7f99b06838f3f68748aba367baabaebd0da9ee787d70e752fa07dea553a43b643b8d8f460175c0746675205e20a7a98acfcac864d7c4cf5ab4c41c031738c76882acda003c5af47b1c4df8894a827a317935d970d4afaee17715c9cfd1883e8c345f19d1f89e229b8edba6b4f53b86d8da1c0f159afb83b6b33":32:"2fc9de46":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"862dd5b362cfa556ca37e73cff7f4a0e":"":"81530a243655a60d22d9ab40d2520447":"":128:"3b9b2af54e610ed0b3dda96961dd8783":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"862dd5b362cfa556ca37e73cff7f4a0e":"":"81530a243655a60d22d9ab40d2520447":"":128:"3b9b2af54e610ed0b3dda96961dd8783":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3452b7bc100c334292e08343f139b9d0":"":"8f92739a30fe4ba24079f5d42753d6ac":"":128:"0eeca69f8b95e1a902cc3ab1aaa8e2af":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3452b7bc100c334292e08343f139b9d0":"":"8f92739a30fe4ba24079f5d42753d6ac":"":128:"0eeca69f8b95e1a902cc3ab1aaa8e2af":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"31a0cbaf21b943f8badc939e94eac7eb":"":"d5bb2c4eaec47088230972ae34fcda9c":"":128:"580e728512c8e44fbb3fe2c498e05323":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"31a0cbaf21b943f8badc939e94eac7eb":"":"d5bb2c4eaec47088230972ae34fcda9c":"":128:"580e728512c8e44fbb3fe2c498e05323":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9e8fca537746e7cbff97f1dcd40a3392":"":"43e9f2bf186b2af8cc022e7c7412d641":"":120:"4465a3f9d9751789bcef5c7c58cbc5":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9e8fca537746e7cbff97f1dcd40a3392":"":"43e9f2bf186b2af8cc022e7c7412d641":"":120:"4465a3f9d9751789bcef5c7c58cbc5":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"35b5854ca83792ad691dbda1a66790fb":"":"cff61cf9b32ea30cf7e3692aa6e74bed":"":120:"726793199df533dd9055b0ac7c939d":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"35b5854ca83792ad691dbda1a66790fb":"":"cff61cf9b32ea30cf7e3692aa6e74bed":"":120:"726793199df533dd9055b0ac7c939d":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"07259267c1c6a015437a5d8cfa92f9e6":"":"18b9cf2ad7ace6ec1c8366b72878cf20":"":120:"4340f6263f0ba2d82c2eb79cb0cc7e":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"07259267c1c6a015437a5d8cfa92f9e6":"":"18b9cf2ad7ace6ec1c8366b72878cf20":"":120:"4340f6263f0ba2d82c2eb79cb0cc7e":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa1df8955aa3ef191900b06e7c1b7d46":"":"6928c138c98a4350c318fbdccd3f44ba":"":112:"7c89d9e77515d271b6ed54c9c4e3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa1df8955aa3ef191900b06e7c1b7d46":"":"6928c138c98a4350c318fbdccd3f44ba":"":112:"7c89d9e77515d271b6ed54c9c4e3":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c04200ce41ce77d772babb206315ec7d":"":"a885d58f0f38f9ff26d906fa1bfb12f4":"":112:"9ee0d025421f2bf18caf563953fb":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c04200ce41ce77d772babb206315ec7d":"":"a885d58f0f38f9ff26d906fa1bfb12f4":"":112:"9ee0d025421f2bf18caf563953fb":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"650df049461be341c3099bd1613dcead":"":"8a4ff6327b49d297248ce2d5bd38afa8":"":112:"13f067ef0d7b448d56e70d282fed":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"650df049461be341c3099bd1613dcead":"":"8a4ff6327b49d297248ce2d5bd38afa8":"":112:"13f067ef0d7b448d56e70d282fed":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ee61b5bf5060fcc637dc833926898508":"":"b2dcf21f9ffa4a883044d29f087f9b85":"":104:"9ab1d66666d4dea3cbb5982238":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ee61b5bf5060fcc637dc833926898508":"":"b2dcf21f9ffa4a883044d29f087f9b85":"":104:"9ab1d66666d4dea3cbb5982238":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"01cc56ca7e64db7fbef66236a5c49493":"":"8ea5b63004189792cc040ef18b37e550":"":104:"d685aeb54aa129a21bed17766e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"01cc56ca7e64db7fbef66236a5c49493":"":"8ea5b63004189792cc040ef18b37e550":"":104:"d685aeb54aa129a21bed17766e":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"134dd72ac8e28ab46720c2f42284a303":"":"c6368e4c0ba0ec90fa7488af9997a4c7":"":104:"4ad9cdf19ff7d7fd7e273efced":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"134dd72ac8e28ab46720c2f42284a303":"":"c6368e4c0ba0ec90fa7488af9997a4c7":"":104:"4ad9cdf19ff7d7fd7e273efced":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"180c04b2bde6901edcda66085f73ecd9":"":"9193b206beade4cb036f01a9db187cb8":"":96:"530f5e9ed0879ccef3a7b360":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"180c04b2bde6901edcda66085f73ecd9":"":"9193b206beade4cb036f01a9db187cb8":"":96:"530f5e9ed0879ccef3a7b360":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aaac85742a55ffa07e98106d6d6b1004":"":"630cd8ab849253c4da95ac80324ecc28":"":96:"37911820c810e3700c3a9321":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aaac85742a55ffa07e98106d6d6b1004":"":"630cd8ab849253c4da95ac80324ecc28":"":96:"37911820c810e3700c3a9321":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ab663c4f8f2fdc7d5eabf6ef26169b4e":"":"86e6100669929e329a1d258cd3552dc9":"":96:"958d6141f7fb2b2dc7d851a6":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ab663c4f8f2fdc7d5eabf6ef26169b4e":"":"86e6100669929e329a1d258cd3552dc9":"":96:"958d6141f7fb2b2dc7d851a6":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dd756d49fd25380c4026ea03cafc2da":"":"6a6f7e39b0d730ea1670e13d16c12c28":"":64:"872ef05a28da5ea1":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dd756d49fd25380c4026ea03cafc2da":"":"6a6f7e39b0d730ea1670e13d16c12c28":"":64:"872ef05a28da5ea1":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bd8a834b288bdc7578b6c6ab36f5d068":"":"aa77de0af5fa4dd1ed2ada5cb94813a0":"":64:"c5c094e83755f2b6":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bd8a834b288bdc7578b6c6ab36f5d068":"":"aa77de0af5fa4dd1ed2ada5cb94813a0":"":64:"c5c094e83755f2b6":"":"":0 AES-GCM NIST Validation (AES-128,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"020d280dbd06939bbb5e6edc6f6d39c6":"":"09aea6f0e57598452719d6f63b6fe5a0":"":64:"05d6c56ba601e85b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"020d280dbd06939bbb5e6edc6f6d39c6":"":"09aea6f0e57598452719d6f63b6fe5a0":"":64:"05d6c56ba601e85b":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e47f41a27a2722df293c1431badc0f90":"":"227c036fca03171a890806b9fa0c250d":"":32:"86c22189":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e47f41a27a2722df293c1431badc0f90":"":"227c036fca03171a890806b9fa0c250d":"":32:"86c22189":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9d3e112114b94e26e93d3855d4be26bd":"":"99b98525160c4bb2029da5553ff82b59":"":32:"33bee715":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9d3e112114b94e26e93d3855d4be26bd":"":"99b98525160c4bb2029da5553ff82b59":"":32:"33bee715":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5b4b7688588125349fbb66004a30d5d4":"":"b4ae363edb529d8b927c051cf21a2d9d":"":32:"6a920617":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5b4b7688588125349fbb66004a30d5d4":"":"b4ae363edb529d8b927c051cf21a2d9d":"":32:"6a920617":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c4b6c5b8e21c32f36b0ae4ef3b75d5cd":"":"3d1036bf0000e6f1b77a799f2ef32dec":"1cf2b6cbe86a87b4b5bb3cc50024aeb27c48143658d47b41f2f20b87ed67bd6fc3b85a3a803f66d3576608f5d6ce6cad11e02fe12de5390722dccb8242e1dd140051bef51aa9716c860d45d45bca6effbb1a4797e6e7406a04db5d823766c0f011ebc28e9a8cd4446ec8a75ea8bdc1b2fdbb5cc364fa9877886e30404593df34":128:"a49725014c214ef7cc2d28b9b2b53da7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c4b6c5b8e21c32f36b0ae4ef3b75d5cd":"":"3d1036bf0000e6f1b77a799f2ef32dec":"1cf2b6cbe86a87b4b5bb3cc50024aeb27c48143658d47b41f2f20b87ed67bd6fc3b85a3a803f66d3576608f5d6ce6cad11e02fe12de5390722dccb8242e1dd140051bef51aa9716c860d45d45bca6effbb1a4797e6e7406a04db5d823766c0f011ebc28e9a8cd4446ec8a75ea8bdc1b2fdbb5cc364fa9877886e30404593df34":128:"a49725014c214ef7cc2d28b9b2b53da7":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"63c3f81500746eaf383fe3975d84f849":"":"0799d4152fd73c1604b4610cf7171fe1":"cb8248e5f904cc9ccccf6f273fe621eee1b4d7ed98480f9e806a48b84e2d6a733772ecf8fb7fe91805715cddab2b462b89f6e6c7cf873f65031f13c357d5f57b00b7c391c39e78ad1ed94be236ca0ae316bce11bc33c5d701fdfc58abbe918b9c42f7b3d6e89d46f9784b388a6e6daf47730b9fa665d755a17e89932fa669c44":128:"c53d01e53ee4a6ea106ea4a66538265e":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"63c3f81500746eaf383fe3975d84f849":"":"0799d4152fd73c1604b4610cf7171fe1":"cb8248e5f904cc9ccccf6f273fe621eee1b4d7ed98480f9e806a48b84e2d6a733772ecf8fb7fe91805715cddab2b462b89f6e6c7cf873f65031f13c357d5f57b00b7c391c39e78ad1ed94be236ca0ae316bce11bc33c5d701fdfc58abbe918b9c42f7b3d6e89d46f9784b388a6e6daf47730b9fa665d755a17e89932fa669c44":128:"c53d01e53ee4a6ea106ea4a66538265e":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0c88b191ce6e8e4a3941f7960b7eae5":"":"e2a899961c332c815685c553351fa519":"308bf10570af48d632911f3641dea60d78046211c01a63bb8e4e5cbddfff8841d2f2b11e18ccb2170805ef4cacf7804d64e0feef40731a1704907f33b77788c18ccf35b224ec3046a67664ac9a3481d2385b6ddeec6da4f32423f94ea9663a5c51cc388cef33744a8159b4fb654dfdb5092718bf926c824be31197f07f276b5f":128:"92604d37407aff33f8b677326cbb94fc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0c88b191ce6e8e4a3941f7960b7eae5":"":"e2a899961c332c815685c553351fa519":"308bf10570af48d632911f3641dea60d78046211c01a63bb8e4e5cbddfff8841d2f2b11e18ccb2170805ef4cacf7804d64e0feef40731a1704907f33b77788c18ccf35b224ec3046a67664ac9a3481d2385b6ddeec6da4f32423f94ea9663a5c51cc388cef33744a8159b4fb654dfdb5092718bf926c824be31197f07f276b5f":128:"92604d37407aff33f8b677326cbb94fc":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c818dfa0885a09f65ef78712f5ce6609":"":"ca279284723530fdd68ae880e0ce775c":"2a562abdbb483ca5f355f9cc1c5e607bdd624a078a76b717ce0f8f35d0d4c54b629f372f15d20c848d01420c6af5a7040d42063704a17b46259dcc53723caf2d4bf556143ff9117c752fa4f22c9c155c99b7bf5949d089cdafd562165b9cbf53ff51cec21f49128c8a599718bbcdb4a5d705d20509c44c8945e2a133164b9942":120:"20e9a3a98d71d460743e1efaab13c6":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c818dfa0885a09f65ef78712f5ce6609":"":"ca279284723530fdd68ae880e0ce775c":"2a562abdbb483ca5f355f9cc1c5e607bdd624a078a76b717ce0f8f35d0d4c54b629f372f15d20c848d01420c6af5a7040d42063704a17b46259dcc53723caf2d4bf556143ff9117c752fa4f22c9c155c99b7bf5949d089cdafd562165b9cbf53ff51cec21f49128c8a599718bbcdb4a5d705d20509c44c8945e2a133164b9942":120:"20e9a3a98d71d460743e1efaab13c6":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2354c6b6afaa883e7ce91faca4981f8b":"":"604f2730c756c8c39a0527093bc2feb5":"959b4b0b9ce2e9120b327d2d090117553999ee10bdd384a546fc6de0957ef4b447daf07b3d07ef7dbc811f36b0fc09a175d26e4d1263cb5e21eda5ecab85d763807bb20b3cb6ac3f31d548dff00aae058d434ebcf6f7e3a37f11324134f453dd0ea7f51094863486426ff1706129a5a93c53d8c5ccb56cafa5881981fe233cb0":120:"3588c9aa769897dfa328549fbbd10a":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2354c6b6afaa883e7ce91faca4981f8b":"":"604f2730c756c8c39a0527093bc2feb5":"959b4b0b9ce2e9120b327d2d090117553999ee10bdd384a546fc6de0957ef4b447daf07b3d07ef7dbc811f36b0fc09a175d26e4d1263cb5e21eda5ecab85d763807bb20b3cb6ac3f31d548dff00aae058d434ebcf6f7e3a37f11324134f453dd0ea7f51094863486426ff1706129a5a93c53d8c5ccb56cafa5881981fe233cb0":120:"3588c9aa769897dfa328549fbbd10a":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0af48e6aebbb6ff5b7c92bd140b085f":"":"d210d6502a5221ac1274a9c7f5a81725":"d725311ca10eb4b4aa24e6dd19c5e72dc34fc1ff53feb25d924a9b7d8d72205790ca4b1275bd93ad60c27a5587a45659bca07c111e9748fb683a03465153ffd735b7d134b479674ab8596f0596496fe2090f623fd1e4dd730c5283d8b172db8a25df42d9b34f388ed32676a56b8ba03347e47379702654508ccd0a21ff03516e":120:"e6222f068a1e18f09ba6c771eabd86":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0af48e6aebbb6ff5b7c92bd140b085f":"":"d210d6502a5221ac1274a9c7f5a81725":"d725311ca10eb4b4aa24e6dd19c5e72dc34fc1ff53feb25d924a9b7d8d72205790ca4b1275bd93ad60c27a5587a45659bca07c111e9748fb683a03465153ffd735b7d134b479674ab8596f0596496fe2090f623fd1e4dd730c5283d8b172db8a25df42d9b34f388ed32676a56b8ba03347e47379702654508ccd0a21ff03516e":120:"e6222f068a1e18f09ba6c771eabd86":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a05fe482fe164b2eca7f6c3e377b39d8":"":"145327bcc10335fccb93afbf4b17e6e7":"ea6f2e93b5e1bf127d40440b8d6397405246b1b48eebe16964f18928f6b4b8ee2c36322d7126905c1a5b816996e340404b586edc2d77afac11a6c1266511f9eff1a320b035442d4078f8e42ca63cf26d12a971a7adf4645d1bd9a8e4d0a20722f7c2d529beaecc4033f7738075e1cdc6d8a929da5582540678935b82e7b7ba68":112:"3900bde9fa9ae2cbeee54d04f224":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a05fe482fe164b2eca7f6c3e377b39d8":"":"145327bcc10335fccb93afbf4b17e6e7":"ea6f2e93b5e1bf127d40440b8d6397405246b1b48eebe16964f18928f6b4b8ee2c36322d7126905c1a5b816996e340404b586edc2d77afac11a6c1266511f9eff1a320b035442d4078f8e42ca63cf26d12a971a7adf4645d1bd9a8e4d0a20722f7c2d529beaecc4033f7738075e1cdc6d8a929da5582540678935b82e7b7ba68":112:"3900bde9fa9ae2cbeee54d04f224":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dacbadf819eb16a63f6f091d13ed04d4":"":"b9ebce724b0dcb0989ac2d8e7ff8aaec":"7dc6e2189d8a96f3507e352e05e8fd1b4bab988c2f1c706115887119f63b78084f015d85f6b460901a02880103e4d36e8f6527dfd74e4a3acd3f578c0cc726b528875f701ff8b66e5c11b4689c346a098e123bebfa253362cb86829be73c2b85a6881fa976aa730fabb76775027feec7fd920a6c8965a4a509ea812d7c413a95":112:"8988fca83c8cfb1f8feefac46f04":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dacbadf819eb16a63f6f091d13ed04d4":"":"b9ebce724b0dcb0989ac2d8e7ff8aaec":"7dc6e2189d8a96f3507e352e05e8fd1b4bab988c2f1c706115887119f63b78084f015d85f6b460901a02880103e4d36e8f6527dfd74e4a3acd3f578c0cc726b528875f701ff8b66e5c11b4689c346a098e123bebfa253362cb86829be73c2b85a6881fa976aa730fabb76775027feec7fd920a6c8965a4a509ea812d7c413a95":112:"8988fca83c8cfb1f8feefac46f04":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"969244c7444f3f3bf193b28f8e8e96dc":"":"49b2845a1a1c87fa66eb8f78c05ac029":"1414a07e86d8b61d1eff43e1ff4ab42c1c95e159058b74c731e3007d21a5eb78bc17b7e920363a3974aeb8608813dc9a4655199b6703ed337450702d8ab16a89776831b2c7c811fec3acc23598a0aa01680a7bf42a4e258145beb08c9f0eacf2bb5f56d26bea3ad11e1a956a630b80f3d22bf35592b4704f7c464b08b06dd7f8":112:"a291c7527385f037f62e60fd8a96":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"969244c7444f3f3bf193b28f8e8e96dc":"":"49b2845a1a1c87fa66eb8f78c05ac029":"1414a07e86d8b61d1eff43e1ff4ab42c1c95e159058b74c731e3007d21a5eb78bc17b7e920363a3974aeb8608813dc9a4655199b6703ed337450702d8ab16a89776831b2c7c811fec3acc23598a0aa01680a7bf42a4e258145beb08c9f0eacf2bb5f56d26bea3ad11e1a956a630b80f3d22bf35592b4704f7c464b08b06dd7f8":112:"a291c7527385f037f62e60fd8a96":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"525abe490c8434802b69439c590a5290":"":"141f79f0501316e66451c41c7af0f0cd":"be440db66d3f81be467605a7b2805ec1df5e71e1b1b04bd7a4d05e912f5aa1912ba08de72df18613b32b7edf78963c48c80c25178b3b19262b85bb829f5377e0b368b500d6d3b442f54172d4ca4500eb5b4d478b602e5dc11d090539455087ce1e5b9ea74355fc06e9b60cbf25a9804d3f8c623fff130abc48bc2d8d116b8366":104:"038c7e95f790e6ca5ce73f9551":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"525abe490c8434802b69439c590a5290":"":"141f79f0501316e66451c41c7af0f0cd":"be440db66d3f81be467605a7b2805ec1df5e71e1b1b04bd7a4d05e912f5aa1912ba08de72df18613b32b7edf78963c48c80c25178b3b19262b85bb829f5377e0b368b500d6d3b442f54172d4ca4500eb5b4d478b602e5dc11d090539455087ce1e5b9ea74355fc06e9b60cbf25a9804d3f8c623fff130abc48bc2d8d116b8366":104:"038c7e95f790e6ca5ce73f9551":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51644e025659de983f5c8156516b812e":"":"614837c743d0974e9cca497f13038c02":"60c5d062ade2c5c2dec68b734dd3e58ec474a586d1c4797fdfa2337800510134cb27a10d501927632af3c1febc275010c0d2e5abee630cd2bc792963fa82a42286ab047b934a261927311b40f5f953bfd661427921147cac7613d95ee86e16326ef67c1ed097e8fb87a78753d785de34e03a182232786079cb6be00182e41c9e":104:"77e3deba2c7f9386f85bc4a801":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51644e025659de983f5c8156516b812e":"":"614837c743d0974e9cca497f13038c02":"60c5d062ade2c5c2dec68b734dd3e58ec474a586d1c4797fdfa2337800510134cb27a10d501927632af3c1febc275010c0d2e5abee630cd2bc792963fa82a42286ab047b934a261927311b40f5f953bfd661427921147cac7613d95ee86e16326ef67c1ed097e8fb87a78753d785de34e03a182232786079cb6be00182e41c9e":104:"77e3deba2c7f9386f85bc4a801":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08566ca7310302dfb84d76ea0525ba20":"":"5f20ec9c35c08aa7f1c0e8a20fdbd2b3":"5d84e32768b8d1e7e3c426b3118d48e35491bf1bb454b359c8429220216efd8826be94fe1919409a128ccd8125a594f1691c9421fc3dbbb3f757bf2355bb0d074ceec165eb70e26eb53fa2cb5d84dfae06babb557805ef7b8c61c1bc76137571bcc5e84bf5987dc49013831d78bd497ccc49cde7dca2cb75e7ab967da8c6ce81":104:"873f037fc05252a44dc76f8155":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"08566ca7310302dfb84d76ea0525ba20":"":"5f20ec9c35c08aa7f1c0e8a20fdbd2b3":"5d84e32768b8d1e7e3c426b3118d48e35491bf1bb454b359c8429220216efd8826be94fe1919409a128ccd8125a594f1691c9421fc3dbbb3f757bf2355bb0d074ceec165eb70e26eb53fa2cb5d84dfae06babb557805ef7b8c61c1bc76137571bcc5e84bf5987dc49013831d78bd497ccc49cde7dca2cb75e7ab967da8c6ce81":104:"873f037fc05252a44dc76f8155":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dfb54db96383fa911bf5b4fa1218ef9a":"":"7e849e24983f63f1194b396bbd2d55e0":"d3fb689c5818810dd104693f3306a10b27178444af26798a194f7c2ab31ff3a172904b951942b1a26c8ae5b5b1ee2d86dc78bb72a335fde350766d7d9aef6f549871dd46b04b2cc319fcdd47be437d431ad18cab82d51ca9fa57f4108a8de622a92f87d28c0349fab27757fd773413f559a8c00d30e258c1f6cd96f9759bd957":96:"dada7fc7fed58db462854ef6":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dfb54db96383fa911bf5b4fa1218ef9a":"":"7e849e24983f63f1194b396bbd2d55e0":"d3fb689c5818810dd104693f3306a10b27178444af26798a194f7c2ab31ff3a172904b951942b1a26c8ae5b5b1ee2d86dc78bb72a335fde350766d7d9aef6f549871dd46b04b2cc319fcdd47be437d431ad18cab82d51ca9fa57f4108a8de622a92f87d28c0349fab27757fd773413f559a8c00d30e258c1f6cd96f9759bd957":96:"dada7fc7fed58db462854ef6":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"389cf888474e9403e5f4d0e22ffec439":"":"ef57794cf6fac9f9cea3e8499b53b1d6":"7ea7f7f4763ad208eb6199285b6b2819756c4e3caf2d0ac6f5076ae6785fecdcc4b138a51860ff8b87aaac3a18c2df778a4818308d458dba28f5017513e1454f60be20dae68736ea6d48b1f9deadb517df63140acbd329fbfbc9b82f3ca1862c9e998f0faff1d3ae60b005bf66829f5cf0c5fa03efbdd92d39351e3954be0257":96:"92726d90ad26130e65f2beb4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"389cf888474e9403e5f4d0e22ffec439":"":"ef57794cf6fac9f9cea3e8499b53b1d6":"7ea7f7f4763ad208eb6199285b6b2819756c4e3caf2d0ac6f5076ae6785fecdcc4b138a51860ff8b87aaac3a18c2df778a4818308d458dba28f5017513e1454f60be20dae68736ea6d48b1f9deadb517df63140acbd329fbfbc9b82f3ca1862c9e998f0faff1d3ae60b005bf66829f5cf0c5fa03efbdd92d39351e3954be0257":96:"92726d90ad26130e65f2beb4":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e55abb2ca36c822bf2a030ac703cb8b4":"":"d86f7177e8ec90f9e9edf10175d5012d":"777a9d93091de56324c10712243f5541722e0b27e1f303fef6faa387a8666161ab354dbea6c43c82a24e8623bfec39aab13164add6be0dfd55d23204c0975b4ba6fbda51363befde482a9ccc1eb9f151e6ad59c77a1e24dd268389e4686f198a936dd603044a3fb653d63cff80597f5a2913c8a2ec1b7d9dce5728dd56c78c2c":96:"65025250343ed8c09b3fceed":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e55abb2ca36c822bf2a030ac703cb8b4":"":"d86f7177e8ec90f9e9edf10175d5012d":"777a9d93091de56324c10712243f5541722e0b27e1f303fef6faa387a8666161ab354dbea6c43c82a24e8623bfec39aab13164add6be0dfd55d23204c0975b4ba6fbda51363befde482a9ccc1eb9f151e6ad59c77a1e24dd268389e4686f198a936dd603044a3fb653d63cff80597f5a2913c8a2ec1b7d9dce5728dd56c78c2c":96:"65025250343ed8c09b3fceed":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"586114f3b1dc087e1b2739b28c592dfe":"":"ae5a38ddd455505284434a4bcfe81ef2":"531ff8c285e532d961f49bd210a5523cd9b19a697a3a3fb26db940a496f253862405b1e825daeda7eb0445c98022b8342c8f8ea20301618483f8ab04b6ebccd7e7fc57878fb544a5bf78fa896f50ac30126ff8afca8a86388666b64c643d16812729bfd7e5c03ba52f7e6ea4c6a685404f7bcbd956964417fa0ea9a6d7290c41":64:"467a815610faeb82":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"586114f3b1dc087e1b2739b28c592dfe":"":"ae5a38ddd455505284434a4bcfe81ef2":"531ff8c285e532d961f49bd210a5523cd9b19a697a3a3fb26db940a496f253862405b1e825daeda7eb0445c98022b8342c8f8ea20301618483f8ab04b6ebccd7e7fc57878fb544a5bf78fa896f50ac30126ff8afca8a86388666b64c643d16812729bfd7e5c03ba52f7e6ea4c6a685404f7bcbd956964417fa0ea9a6d7290c41":64:"467a815610faeb82":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cbfe806bddb7f06b3826b097550c68f5":"":"04c1b6c9fd2ab76fc2adfe15d3421bbb":"cfa86d02599652cb4ffff027b9c6ef2336dc9fe946f64fa5ce83f624e144563d4738381bc5371c3cb55cf41ceda07e62cb635ff37246bfa428785229c6e869d5df69d7949a8577889a29e3d05b788ddd43608d9c14e3f1b51ce2085b9a976fe843e3396a74922babe6797d5f01c37ead623b5b582505bcd29edf8a6ea36b0fc7":64:"0697ac372a9acafd":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cbfe806bddb7f06b3826b097550c68f5":"":"04c1b6c9fd2ab76fc2adfe15d3421bbb":"cfa86d02599652cb4ffff027b9c6ef2336dc9fe946f64fa5ce83f624e144563d4738381bc5371c3cb55cf41ceda07e62cb635ff37246bfa428785229c6e869d5df69d7949a8577889a29e3d05b788ddd43608d9c14e3f1b51ce2085b9a976fe843e3396a74922babe6797d5f01c37ead623b5b582505bcd29edf8a6ea36b0fc7":64:"0697ac372a9acafd":"":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"96ce3a095a91effdd91d616f1f02ddcd":"":"579d6633ec6687afa24ef874899b58e0":"3ff3c0038148ed391b6a10aad623a82fe9209c5ba74482f11506d597b5fc7af977235d8ee9e28cf2160346ddd0e33a5bd1fb67b87dad7167fdd4b2b4000d8460ef7b3e1b59b9d61d06cfbe7945379ed6b650de86f396a38cc70d47b8a349f067d00144c903c276b323be6a929a7d7dd8ae7d254d640cdc1176f98e01a1d8c82f":64:"55a0f61032e048f3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"96ce3a095a91effdd91d616f1f02ddcd":"":"579d6633ec6687afa24ef874899b58e0":"3ff3c0038148ed391b6a10aad623a82fe9209c5ba74482f11506d597b5fc7af977235d8ee9e28cf2160346ddd0e33a5bd1fb67b87dad7167fdd4b2b4000d8460ef7b3e1b59b9d61d06cfbe7945379ed6b650de86f396a38cc70d47b8a349f067d00144c903c276b323be6a929a7d7dd8ae7d254d640cdc1176f98e01a1d8c82f":64:"55a0f61032e048f3":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"24ece168c2971cf2b404ea206dc9e29d":"":"e9db62a42491664a6c46cbb0b2bafc92":"3579f6c0cb3d2a5d0c4548855c7c052d36b6a8dfc60f4ca1b4bbe28ed87306119e71982dd84c4205ceba918d675472753df1b5192d3693dbf6a061c6056e312135ffc5ff426895a7e30f7f675d2cb21de06eea5e3761b94deef7537b985d324864c9ff6ab6e230a1006720f98c958912b604a6d03e3979887c07be3ceaafc78f":32:"d2b15a23":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"24ece168c2971cf2b404ea206dc9e29d":"":"e9db62a42491664a6c46cbb0b2bafc92":"3579f6c0cb3d2a5d0c4548855c7c052d36b6a8dfc60f4ca1b4bbe28ed87306119e71982dd84c4205ceba918d675472753df1b5192d3693dbf6a061c6056e312135ffc5ff426895a7e30f7f675d2cb21de06eea5e3761b94deef7537b985d324864c9ff6ab6e230a1006720f98c958912b604a6d03e3979887c07be3ceaafc78f":32:"d2b15a23":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d3c3cf993f6740a019e61ce13c29955c":"":"af900ac348082ff32d2e0ab886079516":"2ddd0e8c99661f0757f04aa79a1ffa24ad48fbe5da68b9e71f7a0cf1b4f2ca9b757695900b7549d48847ae49950dc9b270b1569d29dcbef412216737bd83509c17ae41c34ccda318939cb37a0a380762993a7568c0b07794e78746173dd5c0d921cd50de4b548c1589e142c3dadbad42161aaeda2310f3c6d5c722d9ac69e96d":32:"f2d3a6ff":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d3c3cf993f6740a019e61ce13c29955c":"":"af900ac348082ff32d2e0ab886079516":"2ddd0e8c99661f0757f04aa79a1ffa24ad48fbe5da68b9e71f7a0cf1b4f2ca9b757695900b7549d48847ae49950dc9b270b1569d29dcbef412216737bd83509c17ae41c34ccda318939cb37a0a380762993a7568c0b07794e78746173dd5c0d921cd50de4b548c1589e142c3dadbad42161aaeda2310f3c6d5c722d9ac69e96d":32:"f2d3a6ff":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5f1e5bd45ee8bb207ebbd730510ff218":"":"8846424a194f5de858556e6be5b65d7f":"e968947fc0e49136e730b97f6b16e393d5e4fdf3e4803a23af79211ef59f29167c60ead72fd489da32d2ffa43b2bca2074f9d1b4f5396ca65004b0806cb7c6dfa751fb6afbee3e443f3c9b0e3df6722e0d1320441400c5ca508afb657c2b7f1669b0de21761dccab9a40fc513768bd1f552692626ce35078a2e0e12f5d930647":32:"0d6c15da":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5f1e5bd45ee8bb207ebbd730510ff218":"":"8846424a194f5de858556e6be5b65d7f":"e968947fc0e49136e730b97f6b16e393d5e4fdf3e4803a23af79211ef59f29167c60ead72fd489da32d2ffa43b2bca2074f9d1b4f5396ca65004b0806cb7c6dfa751fb6afbee3e443f3c9b0e3df6722e0d1320441400c5ca508afb657c2b7f1669b0de21761dccab9a40fc513768bd1f552692626ce35078a2e0e12f5d930647":32:"0d6c15da":"":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3997050377cfbb802cc438d973661688":"b02f0dd373e42c65e8e1db2dd76a432e0b2bf6e630c8aaf0d48af51b3709b175de9a19b3245ae75818274c771c06fae225c4f8b002236712336e805ab006449eb29cc5e29abd82b06c32d4c36ee99acb9a6d7d9eae6ec6ec263c002a22c4a898c74f6abd6d92112367ca7ffe82787c5b39e7012ba22825d3612af3d41e8008a8":"c95c84c263bdfd5f1de66e7e616cf3fb":"":128:"b35b3cf6ed59ccb69dbc9b47a3f284ae":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3997050377cfbb802cc438d973661688":"b02f0dd373e42c65e8e1db2dd76a432e0b2bf6e630c8aaf0d48af51b3709b175de9a19b3245ae75818274c771c06fae225c4f8b002236712336e805ab006449eb29cc5e29abd82b06c32d4c36ee99acb9a6d7d9eae6ec6ec263c002a22c4a898c74f6abd6d92112367ca7ffe82787c5b39e7012ba22825d3612af3d41e8008a8":"c95c84c263bdfd5f1de66e7e616cf3fb":"":128:"b35b3cf6ed59ccb69dbc9b47a3f284ae":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c58583f6479d9bc9f1bffddefee66e59":"564a9f700cbc1f895e4f4fa6426f73b4956896a15e6127e7560d74e3fd0b980d2ee45b7a6a3884fa613d91d13921e3f90967d7132bdafcd146dd8ff7147ed1964c2bdb3e12f4133d3dbbc3bf030ff37b1d2147c493ce885068d9ba5bebae24903aaac004aa0ab73fe789e4150e75ddc2bde2700db02e6398d53e88ac652964ac":"cee448b48d3506ff3ecc227a87987846":"":128:"361fc2896d7ee986ecef7cbe665bc60c":"9cce7db3fc087d8cb384f6b1a81f03b3fafa2e3281e9f0fcf08a8283929f32439bb0d302516f0ab65b79181fc223a42345bad6e46ff8bcb55add90207f74481227f71a6230a3e13739ef2d015f5003638234b01e58537b7cfab5a8edac19721f41d46948987d1bb1b1d9485a672647bb3b5cb246a1d753a0d107bff036ac7d95":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c58583f6479d9bc9f1bffddefee66e59":"564a9f700cbc1f895e4f4fa6426f73b4956896a15e6127e7560d74e3fd0b980d2ee45b7a6a3884fa613d91d13921e3f90967d7132bdafcd146dd8ff7147ed1964c2bdb3e12f4133d3dbbc3bf030ff37b1d2147c493ce885068d9ba5bebae24903aaac004aa0ab73fe789e4150e75ddc2bde2700db02e6398d53e88ac652964ac":"cee448b48d3506ff3ecc227a87987846":"":128:"361fc2896d7ee986ecef7cbe665bc60c":"":"9cce7db3fc087d8cb384f6b1a81f03b3fafa2e3281e9f0fcf08a8283929f32439bb0d302516f0ab65b79181fc223a42345bad6e46ff8bcb55add90207f74481227f71a6230a3e13739ef2d015f5003638234b01e58537b7cfab5a8edac19721f41d46948987d1bb1b1d9485a672647bb3b5cb246a1d753a0d107bff036ac7d95":0 AES-GCM NIST Validation (AES-128,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0bc2bde877e881aea512068105694968":"1a6369a45e8ef2846c42d54f92d0d140a94f9633432782dcbf094f1444a1d006acd07ef6076cd0faee226f9ff14adc1fb23e3c63ed818c9a743efbe16624981663e5a64f03f411dcd326e0c259bcadca3b3dd7660ed985c1b77f13a3b232a5934f8b54e46f8368c6e6eb75f933196fa973e7413e4b1442b9dee5e265b44255ed":"05f0c34ab2e8e8026b0a23719344b71f":"":128:"46bab9fc2dbe87b8f6ca0ed4d73e5368":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0bc2bde877e881aea512068105694968":"1a6369a45e8ef2846c42d54f92d0d140a94f9633432782dcbf094f1444a1d006acd07ef6076cd0faee226f9ff14adc1fb23e3c63ed818c9a743efbe16624981663e5a64f03f411dcd326e0c259bcadca3b3dd7660ed985c1b77f13a3b232a5934f8b54e46f8368c6e6eb75f933196fa973e7413e4b1442b9dee5e265b44255ed":"05f0c34ab2e8e8026b0a23719344b71f":"":128:"46bab9fc2dbe87b8f6ca0ed4d73e5368":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e14f45ba5d1eb52e0412240da5d7b5f9":"9a85fda19ce923f093a0c25b0c52f5d9534828af7c7687d22307004ae2d10c4592242c0f2704070307ab55b137780d1e2013a19396ab43ff6a295b63fdcf323456d149758f9a2bb37f1418d62ea6368b24d5067b9c63d2968e06d6586c7e3275faffa005f7c7bfef51303e4c2b2ed4564acd17d50efac9f5e3e7f16ce589c39b":"d7f8ef12f66f8b7c60aea02ef6ff688f":"":120:"beede05e4928c808bc660f3de95634":"4ad5b9ace0c0c7c07df2900faf37a902899471e7aa4a0a1ad5387f8f56d73f78f619be79a4e253f95b15d52895a05bae9ecffa916d35efacd8baf1c704d2aa4a38c234efc4dcfb191ec0fa0b522328fa5b5dff55e8c443fee660ebe3d8ad85de157a889aefc823720030a4cd6ba94a6309dd61806f0abb27772432018bc61701":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e14f45ba5d1eb52e0412240da5d7b5f9":"9a85fda19ce923f093a0c25b0c52f5d9534828af7c7687d22307004ae2d10c4592242c0f2704070307ab55b137780d1e2013a19396ab43ff6a295b63fdcf323456d149758f9a2bb37f1418d62ea6368b24d5067b9c63d2968e06d6586c7e3275faffa005f7c7bfef51303e4c2b2ed4564acd17d50efac9f5e3e7f16ce589c39b":"d7f8ef12f66f8b7c60aea02ef6ff688f":"":120:"beede05e4928c808bc660f3de95634":"":"4ad5b9ace0c0c7c07df2900faf37a902899471e7aa4a0a1ad5387f8f56d73f78f619be79a4e253f95b15d52895a05bae9ecffa916d35efacd8baf1c704d2aa4a38c234efc4dcfb191ec0fa0b522328fa5b5dff55e8c443fee660ebe3d8ad85de157a889aefc823720030a4cd6ba94a6309dd61806f0abb27772432018bc61701":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a64579f3601b0022d357b601cd876ab":"88be1f4bc8c81b8a9d7abc073cb2751e209ab6b912c15dc094002f95a57a660b9f08b1b34f5947223205b579e704d70a9ecb54520ce3491e52965be643f729516f5cb018beeedc68a7d66c0d40a3f392ec7729c566ce1e9f964c4c0bd61b291ccb96e3d1fac18a401a302f3775697c71edb8ff5a8275a815eba9dd3b912e3759":"515efc6d036f95db7df56b1bbec0aff2":"":120:"13ea92ba35fced366d1e47c97ca5c9":"7fc8565760c168d640f24896c69758355b17310dbc359f38b73fc7b57fe3f4b6ecad3f298be931c96a639df3c5744f7e932b32d222f5534efb8eb5d5b98d218dce3efef5c8c7ce65738bf63412d0a8ed209071218a6fa2f7be79b38d0b2f5b571ec73f1a91721bd409b1722b313683e97d53df19ded95fd471124fa5f294a4bb":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a64579f3601b0022d357b601cd876ab":"88be1f4bc8c81b8a9d7abc073cb2751e209ab6b912c15dc094002f95a57a660b9f08b1b34f5947223205b579e704d70a9ecb54520ce3491e52965be643f729516f5cb018beeedc68a7d66c0d40a3f392ec7729c566ce1e9f964c4c0bd61b291ccb96e3d1fac18a401a302f3775697c71edb8ff5a8275a815eba9dd3b912e3759":"515efc6d036f95db7df56b1bbec0aff2":"":120:"13ea92ba35fced366d1e47c97ca5c9":"":"7fc8565760c168d640f24896c69758355b17310dbc359f38b73fc7b57fe3f4b6ecad3f298be931c96a639df3c5744f7e932b32d222f5534efb8eb5d5b98d218dce3efef5c8c7ce65738bf63412d0a8ed209071218a6fa2f7be79b38d0b2f5b571ec73f1a91721bd409b1722b313683e97d53df19ded95fd471124fa5f294a4bb":0 AES-GCM NIST Validation (AES-128,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1bda4acfd10ab635f357935bb0ab7020":"c9ac8d4ef7d83848fdc03664957c28b9b76710797d5db1c21e713e85eb0898892223e52be1644fc7362c95026ebb9c9ca74d7d3739eff10cab1eda00c36628dae0b98d119a14635800e37cd340faa6fbba9c3d41d52722cc3969612b1a8c5ca9a68773f5ee654506cb88ea65fb1eddf5ab6312d0170dc03324e483342448b854":"48b77c587616ffaa449533a91230b449":"":120:"8325e4394c91719691145e68e56439":"1287ad3719508a9be70c19e3b134a2eaa4415d736c55922e9abcfd7f621ea07ffb9b78d8a9668c74bbd548b5e6519ea12609d2d6197c8bd3da9c13c46628f218e7ff81884ff7eb34664ab00f86e09cd623bec248d8898ef054fce8f718a0e0978e8b5d037709c524114ec37809ac3fd1604e223e08f594e7aa12097f7dc1850b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1bda4acfd10ab635f357935bb0ab7020":"c9ac8d4ef7d83848fdc03664957c28b9b76710797d5db1c21e713e85eb0898892223e52be1644fc7362c95026ebb9c9ca74d7d3739eff10cab1eda00c36628dae0b98d119a14635800e37cd340faa6fbba9c3d41d52722cc3969612b1a8c5ca9a68773f5ee654506cb88ea65fb1eddf5ab6312d0170dc03324e483342448b854":"48b77c587616ffaa449533a91230b449":"":120:"8325e4394c91719691145e68e56439":"":"1287ad3719508a9be70c19e3b134a2eaa4415d736c55922e9abcfd7f621ea07ffb9b78d8a9668c74bbd548b5e6519ea12609d2d6197c8bd3da9c13c46628f218e7ff81884ff7eb34664ab00f86e09cd623bec248d8898ef054fce8f718a0e0978e8b5d037709c524114ec37809ac3fd1604e223e08f594e7aa12097f7dc1850b":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d21cf24bc5bd176b4b0fd4c8477bb70d":"2e7108fd25c88b799263791940594ec80b26ccd53455c837b2e6cf4e27fcf9707af3f0fe311355e1b03ac3b5ee0af09fb6fb9f0311f8545d40a658119e6a87ba8ba72cc5fdb1386bc455c8fec51a7c0fec957bed4d6441180741197962d51b17c393b57553e53602f2a343a0871ea2dc4b1506663b2768ce271b89c4ed99eec6":"208cb9dced20b18edddb91596e902124":"":112:"7edfb9daf8ca2babcc02537463e9":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d21cf24bc5bd176b4b0fd4c8477bb70d":"2e7108fd25c88b799263791940594ec80b26ccd53455c837b2e6cf4e27fcf9707af3f0fe311355e1b03ac3b5ee0af09fb6fb9f0311f8545d40a658119e6a87ba8ba72cc5fdb1386bc455c8fec51a7c0fec957bed4d6441180741197962d51b17c393b57553e53602f2a343a0871ea2dc4b1506663b2768ce271b89c4ed99eec6":"208cb9dced20b18edddb91596e902124":"":112:"7edfb9daf8ca2babcc02537463e9":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d02e2b02170986944487cba8448f998":"bc1d7553f4a28754cf59ed6f7a901901f04ce62a449db2b45ad60329d0341bb9ba421c783c28a9200b41da8ab6328d826293134a7d0c9a5775dd2735e7767efda4ad183566e0847d6d978abd1a8ab13b16b8323acef05ced3b571631e1e24ad44d65e6ffa64e03c9970e94bacb9f721aba06cda6a08806a3be63dddd8029301d":"6336077bb83eff1c9ea715de99b372cd":"":112:"0466bb2957281f64b59eafed3509":"5f395958f2f7acafb1bca6d3a6ec48b717f2ceeac1b77e1b0edc09a09e4a299d2ec722cc7daf34c8f4121a93c80b2adb20a2fc95afd09320f91085c93c8b082dd703814c9777501d23bf9b328f07f04652592dc5a3f4321626a695b8db8e65c8617c809eb2978d8c9a882ffa82a4bb707c1a8f9a965bdacce5c041bafc94a1c6":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d02e2b02170986944487cba8448f998":"bc1d7553f4a28754cf59ed6f7a901901f04ce62a449db2b45ad60329d0341bb9ba421c783c28a9200b41da8ab6328d826293134a7d0c9a5775dd2735e7767efda4ad183566e0847d6d978abd1a8ab13b16b8323acef05ced3b571631e1e24ad44d65e6ffa64e03c9970e94bacb9f721aba06cda6a08806a3be63dddd8029301d":"6336077bb83eff1c9ea715de99b372cd":"":112:"0466bb2957281f64b59eafed3509":"":"5f395958f2f7acafb1bca6d3a6ec48b717f2ceeac1b77e1b0edc09a09e4a299d2ec722cc7daf34c8f4121a93c80b2adb20a2fc95afd09320f91085c93c8b082dd703814c9777501d23bf9b328f07f04652592dc5a3f4321626a695b8db8e65c8617c809eb2978d8c9a882ffa82a4bb707c1a8f9a965bdacce5c041bafc94a1c6":0 AES-GCM NIST Validation (AES-128,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd1ad1de0521d41645d13c97a18f4a20":"588c2617517329f3e1e7ba6206a183dc9232e6a4fa8c8b89532d46235af1e542acaa7eae4d034f139b00449076ba2ef9a692cae422998878dabdac60993dce9880d280bec1419803ba937366e5285c4a7f31a5f232f8d3ef73efe7267b3ef82a02f97d320ebc9db6219fbdf1c7f611e8e5164e9ecf25b32f9c07dfa12aa705af":"413873a0b063ad039da5513896233286":"":112:"d4dbe9cae116553b0cbe1984d176":"bd519b7e6921e6026784cd7b836c89bc1fa98e4013b41d2bf091ef0d602e44a70df89816c068d37f0c6377af46c8bfa73ec0d5bc0b61966f23e55a15a83cea49f37cc02213b4996f9353ee2b73a798b626e524b9c15937ecf98a4eded83fb62e6deea1de31e0a7f1d210f6d964bc3e69b269da834720fd33487874489b8932a8":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd1ad1de0521d41645d13c97a18f4a20":"588c2617517329f3e1e7ba6206a183dc9232e6a4fa8c8b89532d46235af1e542acaa7eae4d034f139b00449076ba2ef9a692cae422998878dabdac60993dce9880d280bec1419803ba937366e5285c4a7f31a5f232f8d3ef73efe7267b3ef82a02f97d320ebc9db6219fbdf1c7f611e8e5164e9ecf25b32f9c07dfa12aa705af":"413873a0b063ad039da5513896233286":"":112:"d4dbe9cae116553b0cbe1984d176":"":"bd519b7e6921e6026784cd7b836c89bc1fa98e4013b41d2bf091ef0d602e44a70df89816c068d37f0c6377af46c8bfa73ec0d5bc0b61966f23e55a15a83cea49f37cc02213b4996f9353ee2b73a798b626e524b9c15937ecf98a4eded83fb62e6deea1de31e0a7f1d210f6d964bc3e69b269da834720fd33487874489b8932a8":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cb120e9cd718b5119b4a58af0644eff":"4c8e8fb8c87ff6b994ae71bfbf0fa4529f03bad86edf9d27cf899ea93a32972640697e00546136c1dbc7e63662200951b6479c58ae26b1bd8c3b4f507c0d945d615183196868ec4f4865d1d00bb919a00184e9663f6cb9a7a0ddfc73ee2901f7a56ef2074d554f48cef254be558fca35651be405f91c39e0367762b4715d05fa":"5a7087989bfe2f6eddcb56fde4d72529":"":104:"95d8bd12af8a5ab677309df0fb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cb120e9cd718b5119b4a58af0644eff":"4c8e8fb8c87ff6b994ae71bfbf0fa4529f03bad86edf9d27cf899ea93a32972640697e00546136c1dbc7e63662200951b6479c58ae26b1bd8c3b4f507c0d945d615183196868ec4f4865d1d00bb919a00184e9663f6cb9a7a0ddfc73ee2901f7a56ef2074d554f48cef254be558fca35651be405f91c39e0367762b4715d05fa":"5a7087989bfe2f6eddcb56fde4d72529":"":104:"95d8bd12af8a5ab677309df0fb":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"315b206778c28ed0bfdd6e66088a5c39":"6186f57a85b65f54efbf9974a193012b1396fc0ca887227e1865f1c915ac2af9bbd55969f7de57ce9fb87604cf11c7bc822b542f745be8a101877a810ed72bf4544d0acb91f0f9d3c30b6a18c48b82557433d0db930e03bcecc6fb53530bfd99ee89f9e154aa1a3e2a2c2a7a9e08c9aed1deab7fae8ea5a31158b50bca2f5e79":"7ec6f47ec56dda5b52bbdaa6ad2eb6da":"":104:"930750c53effc7b84aa10b2276":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"315b206778c28ed0bfdd6e66088a5c39":"6186f57a85b65f54efbf9974a193012b1396fc0ca887227e1865f1c915ac2af9bbd55969f7de57ce9fb87604cf11c7bc822b542f745be8a101877a810ed72bf4544d0acb91f0f9d3c30b6a18c48b82557433d0db930e03bcecc6fb53530bfd99ee89f9e154aa1a3e2a2c2a7a9e08c9aed1deab7fae8ea5a31158b50bca2f5e79":"7ec6f47ec56dda5b52bbdaa6ad2eb6da":"":104:"930750c53effc7b84aa10b2276":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e886de1c907c97e7db8ec80a79df90f8":"c64cc9596d7c738746ab800f688eec190a4c802c55b2528931d74d294496892b81f53d3073d48f9bef1d58ce3be26547474cdda2868abeab71aff566fff613b4e5bfed1be1d2fff35d8ffa33302d3da1c82e421aa3a23848f31e26d90c0cb2ac2ae136ada73404ed3e0e1d3e7cb355a11cd2a4f9393b4d5eac988104fe1cf959":"612cacbf33266353d0a29a24532f3c0c":"":104:"76634e58d8f3a48f15875ac1d6":"7001d7395efb432e2804cc65c0ba5d4719ce84177ce46292c4fd62a5596bd2bab1d5c44217ac43235bd94489c43d01618a11f047d2e247062c3b88d6e59adaa1f46514fb33b7843483920bee60a41f3cb312322c305d25251b4704fb66da58637c95a9d539731434f60ef44fe3cd6d37e2c8e7089880a563938dcc98b43f08fd":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e886de1c907c97e7db8ec80a79df90f8":"c64cc9596d7c738746ab800f688eec190a4c802c55b2528931d74d294496892b81f53d3073d48f9bef1d58ce3be26547474cdda2868abeab71aff566fff613b4e5bfed1be1d2fff35d8ffa33302d3da1c82e421aa3a23848f31e26d90c0cb2ac2ae136ada73404ed3e0e1d3e7cb355a11cd2a4f9393b4d5eac988104fe1cf959":"612cacbf33266353d0a29a24532f3c0c":"":104:"76634e58d8f3a48f15875ac1d6":"":"7001d7395efb432e2804cc65c0ba5d4719ce84177ce46292c4fd62a5596bd2bab1d5c44217ac43235bd94489c43d01618a11f047d2e247062c3b88d6e59adaa1f46514fb33b7843483920bee60a41f3cb312322c305d25251b4704fb66da58637c95a9d539731434f60ef44fe3cd6d37e2c8e7089880a563938dcc98b43f08fd":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3b936e09a6477f3bd52030a29df5001d":"65cf11d1afad19b34f282f98f140315992392f5d4eed4265085b29e1e5553f4783fec681ba2d368486ba6a54c00e71c82c08ca3d097904f021ce4b0acba2d2a7005e28e5f8750ea3d18a4f78363c37583e85104234498942c639a0564b0d80055c21cb7735dd44348298291ab602f345b1d74d624750c0177fbd5cca6f99223b":"f93105be83fa5e315d73acfdcf578de7":"":96:"91b55bb5e3f3f1abcf335db5":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3b936e09a6477f3bd52030a29df5001d":"65cf11d1afad19b34f282f98f140315992392f5d4eed4265085b29e1e5553f4783fec681ba2d368486ba6a54c00e71c82c08ca3d097904f021ce4b0acba2d2a7005e28e5f8750ea3d18a4f78363c37583e85104234498942c639a0564b0d80055c21cb7735dd44348298291ab602f345b1d74d624750c0177fbd5cca6f99223b":"f93105be83fa5e315d73acfdcf578de7":"":96:"91b55bb5e3f3f1abcf335db5":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dc9e2095de7b1b48481b56bf6a3604cd":"ed61ff94a3f84c72147faefa615e2df00324fb01790cf9764c72c1b8ba47f17866a1fd64ee5c2f53865d1bc24ec93165a6774466a59603199ee476c1f2da7d932c8943d126aa172d532d8475a484d42bb45fcf92766feafd7f3e2e3d42d22f6f84a90e7e688232f799d80cd2cc152ddd21ecfb137701ecafcb2b65abe2e4e6f4":"9e5268db19a1b51c0496a160ca76f8f7":"":96:"0fa9588536fca71bb44260f7":"ef562e301fcf923ff1a1acd3aff9b1c963058228655fe8a66cab01396547dbd2aa1f79a22eefc62944b86d1a31ebe2d17130175b8c003d6755b0eb8b79895b0f7f8046c5ae888a067ba17bc8e11a8f6e5023a9cd42f6461966c28e505b371c0f72a2606bff430a58016e99713d25ce11f10391fb4a922e27989422c6a64f9107":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dc9e2095de7b1b48481b56bf6a3604cd":"ed61ff94a3f84c72147faefa615e2df00324fb01790cf9764c72c1b8ba47f17866a1fd64ee5c2f53865d1bc24ec93165a6774466a59603199ee476c1f2da7d932c8943d126aa172d532d8475a484d42bb45fcf92766feafd7f3e2e3d42d22f6f84a90e7e688232f799d80cd2cc152ddd21ecfb137701ecafcb2b65abe2e4e6f4":"9e5268db19a1b51c0496a160ca76f8f7":"":96:"0fa9588536fca71bb44260f7":"":"ef562e301fcf923ff1a1acd3aff9b1c963058228655fe8a66cab01396547dbd2aa1f79a22eefc62944b86d1a31ebe2d17130175b8c003d6755b0eb8b79895b0f7f8046c5ae888a067ba17bc8e11a8f6e5023a9cd42f6461966c28e505b371c0f72a2606bff430a58016e99713d25ce11f10391fb4a922e27989422c6a64f9107":0 AES-GCM NIST Validation (AES-128,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3f93901fd7cc88db3ba76a158d658c7b":"16402fded879fcbfe9405902aa63ca2a520889e0045f687455469b7bb867829a01208b8dc5dcc852d8ee478993c30e6d9ec6408773b367821310a0ae171d38d71e06981ff6e845acffbc794142b87c748e12484c0636419d79be3d798cde59e9dae0a4a4a4346596427e6b235ad52e6a1b02d6f4df0c7de35fc390cae36aef14":"7e98de461e6d96c0ce6c8d8b3854cf49":"":96:"86c9a70e4bab304ae46e6542":"1b4c09569b42c469b3ab6b39312c214502ec09f5fe2fed1d1933d13cdc6a7b77a5d135123fa69d9207d6844b0357b26b7a2f53b33a5cd218dacda87b78b09cf259e48e74076812c432e2d0833fb269721f9347c96e158500f9b2283342a35c8de0a022edce711118d72d8fbaa354bfb0ffee465844ef2d37e24ec2cea8556648":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3f93901fd7cc88db3ba76a158d658c7b":"16402fded879fcbfe9405902aa63ca2a520889e0045f687455469b7bb867829a01208b8dc5dcc852d8ee478993c30e6d9ec6408773b367821310a0ae171d38d71e06981ff6e845acffbc794142b87c748e12484c0636419d79be3d798cde59e9dae0a4a4a4346596427e6b235ad52e6a1b02d6f4df0c7de35fc390cae36aef14":"7e98de461e6d96c0ce6c8d8b3854cf49":"":96:"86c9a70e4bab304ae46e6542":"":"1b4c09569b42c469b3ab6b39312c214502ec09f5fe2fed1d1933d13cdc6a7b77a5d135123fa69d9207d6844b0357b26b7a2f53b33a5cd218dacda87b78b09cf259e48e74076812c432e2d0833fb269721f9347c96e158500f9b2283342a35c8de0a022edce711118d72d8fbaa354bfb0ffee465844ef2d37e24ec2cea8556648":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"42289f3d3cd5838e250ef54b128e60d1":"3edae1d554b67d2036f5fdbdb2945cc112f100adc1b47009c2e23f6a2eaee78d1f39ce8a98f715853cc29fc793fb6981ec3036834188dea7d668185ccc8642071b15de1332f6a59c8a9b4399733eb4b3d8f224af57ba6b4a8e64494bb6630b9d28e7ec3349064350febcef6a3ad1d6cca1b1da74f3d2921c2b28a2dd399c3416":"e557389a216ad724aafdab0180e1892e":"":64:"6f78bc809f31393e":"25c476659cc7b343a69088baf868a811ba37daca85c4093105bf98235a90aeca015ab034da008af0982f9b2e80df804c186a9b2e97f74cffd70ebb7771d874fcaf12f6d01c44a8b0ec2898cf4493cf09a16a88a65cd77909bbf0430c9603869bd5f20d56cb51d8a3f0a032fc30d925c96599d296b1ec41c2912bda426adea4fb":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"42289f3d3cd5838e250ef54b128e60d1":"3edae1d554b67d2036f5fdbdb2945cc112f100adc1b47009c2e23f6a2eaee78d1f39ce8a98f715853cc29fc793fb6981ec3036834188dea7d668185ccc8642071b15de1332f6a59c8a9b4399733eb4b3d8f224af57ba6b4a8e64494bb6630b9d28e7ec3349064350febcef6a3ad1d6cca1b1da74f3d2921c2b28a2dd399c3416":"e557389a216ad724aafdab0180e1892e":"":64:"6f78bc809f31393e":"":"25c476659cc7b343a69088baf868a811ba37daca85c4093105bf98235a90aeca015ab034da008af0982f9b2e80df804c186a9b2e97f74cffd70ebb7771d874fcaf12f6d01c44a8b0ec2898cf4493cf09a16a88a65cd77909bbf0430c9603869bd5f20d56cb51d8a3f0a032fc30d925c96599d296b1ec41c2912bda426adea4fb":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d772eabb7f19475665ca2a7e693bcfc":"e9fc4d86f5b857fa6057b73f967351e06f87288c40a95b9e378c84f1a4c0f4b80ed0a0b44ff90a8973be4199c0c4006fc4f5ea19d5f1fe8b9c8c01f4675ab85afab0592bb3daba36bb4fc7ed9eea867e9d8cc50c19fb62a5a57956e9efacebac5e9f849649d35a329bd68de97bb6e5ff7bef477a86765c2c9ec15e24cbba5c6e":"0747cbb486a013453fde1ca6abb11dbe":"":64:"8e761ffaea68f967":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d772eabb7f19475665ca2a7e693bcfc":"e9fc4d86f5b857fa6057b73f967351e06f87288c40a95b9e378c84f1a4c0f4b80ed0a0b44ff90a8973be4199c0c4006fc4f5ea19d5f1fe8b9c8c01f4675ab85afab0592bb3daba36bb4fc7ed9eea867e9d8cc50c19fb62a5a57956e9efacebac5e9f849649d35a329bd68de97bb6e5ff7bef477a86765c2c9ec15e24cbba5c6e":"0747cbb486a013453fde1ca6abb11dbe":"":64:"8e761ffaea68f967":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fb7fd753ee6eaaf283a42a121dab4e43":"fd5cecb2c0287cb8229e97d9cc4b9885f428710528884ce663ed1728cd44cb2df93e56ef17ace0678d1e341366c652f4ba7ee45797d39be4a05c1151e5cde499e13e5d45549b5d95a174d03616d06ef96e9d7b2b6bb0d79a726b253dd64223a5f09611671b234ccf9b383952f8888814b2c167e774cfbf54e9c6b99a753f4fa9":"8164929fb54485377ecccc9b9621af5e":"":64:"40a2fa7f4370afb2":"6208d068be60f7b04b80fc611062e6caaef9a5cf59f850d174b7446c78c039ea9aefe4885e19c2b33911d32ce1fe3c48ddffa4b03e450fd35da03f40c4e7c5bb3b1c3f3049dbfad3ac81ca1b79cafbaa172f4900e3829d38edea3b64000f93924a801259bc4b2523445c64bc23bfee190b952468507fa4baf6dc2bec66fcf0d8":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fb7fd753ee6eaaf283a42a121dab4e43":"fd5cecb2c0287cb8229e97d9cc4b9885f428710528884ce663ed1728cd44cb2df93e56ef17ace0678d1e341366c652f4ba7ee45797d39be4a05c1151e5cde499e13e5d45549b5d95a174d03616d06ef96e9d7b2b6bb0d79a726b253dd64223a5f09611671b234ccf9b383952f8888814b2c167e774cfbf54e9c6b99a753f4fa9":"8164929fb54485377ecccc9b9621af5e":"":64:"40a2fa7f4370afb2":"":"6208d068be60f7b04b80fc611062e6caaef9a5cf59f850d174b7446c78c039ea9aefe4885e19c2b33911d32ce1fe3c48ddffa4b03e450fd35da03f40c4e7c5bb3b1c3f3049dbfad3ac81ca1b79cafbaa172f4900e3829d38edea3b64000f93924a801259bc4b2523445c64bc23bfee190b952468507fa4baf6dc2bec66fcf0d8":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30d757fd73a0fd5fa49159ad0653296d":"17d485b258f80d8924e35291118cfdcffd86c47851b65f0b06a7c1f5202de82f3f460fc61b1aa38fdba7c8ded375c92cf005afe63e59d362c0960044af39241b81ca24e85c5faa43903229355b7313fee21b992ef3931d9d2407b32b3cf72dd7acbc7948395eb513cb2fd428b215ba2bd1e29c62f45d0ce231884f62480c6d8f":"b35b8df0aebd0608517f2830e0e70cd0":"":32:"954c0e99":"022618d2598f79104e918a09c937a82b3db59243b5e13de731fcb912e4366105797ce47f6dce7f08073f2f41e5c15fd6b1ec4b5861469a4880c3b0bd769b78c696ff29c28c9349d5a46a6e5ad9211bd4b708a8c0b6928ebbb0dac1c0a5f5ce6b05de6a50073128566a23f09cc1b826aa5803f9f750aa4debf59f24ae9f98c9b5":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30d757fd73a0fd5fa49159ad0653296d":"17d485b258f80d8924e35291118cfdcffd86c47851b65f0b06a7c1f5202de82f3f460fc61b1aa38fdba7c8ded375c92cf005afe63e59d362c0960044af39241b81ca24e85c5faa43903229355b7313fee21b992ef3931d9d2407b32b3cf72dd7acbc7948395eb513cb2fd428b215ba2bd1e29c62f45d0ce231884f62480c6d8f":"b35b8df0aebd0608517f2830e0e70cd0":"":32:"954c0e99":"":"022618d2598f79104e918a09c937a82b3db59243b5e13de731fcb912e4366105797ce47f6dce7f08073f2f41e5c15fd6b1ec4b5861469a4880c3b0bd769b78c696ff29c28c9349d5a46a6e5ad9211bd4b708a8c0b6928ebbb0dac1c0a5f5ce6b05de6a50073128566a23f09cc1b826aa5803f9f750aa4debf59f24ae9f98c9b5":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d9d3cfd5900de5d5e2109e7721cfeef6":"e4243cc37cc32dfcedf9bb76890e706af6ab1e06b290b8ccfe2a55e5dabe68cb390f7636dc9676b431d4dc8ad3f6d989e510194294ab7ab0556789046743cf374d8b6462f5f95a17f3f44337d6c69ee47b0e1ad7e5ce6f9b224c54099a104e70d2d06af869b921ea47febe08f90c591ed49c1f12003afceabd2c7bba458a0111":"b4b9dfb013de6f7c44779e5a9daaf5e5":"":32:"2b81e8ce":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d9d3cfd5900de5d5e2109e7721cfeef6":"e4243cc37cc32dfcedf9bb76890e706af6ab1e06b290b8ccfe2a55e5dabe68cb390f7636dc9676b431d4dc8ad3f6d989e510194294ab7ab0556789046743cf374d8b6462f5f95a17f3f44337d6c69ee47b0e1ad7e5ce6f9b224c54099a104e70d2d06af869b921ea47febe08f90c591ed49c1f12003afceabd2c7bba458a0111":"b4b9dfb013de6f7c44779e5a9daaf5e5":"":32:"2b81e8ce":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"68dc138f19354d73eaa1cf0e79231d74":"ce345567a76bc30d8b4fd2239788221cfa75e1a310aeeeb8c355f8eea57d80967f3047fbd4e6173fac5caeb22151fa607065953c4c35e0537b9e3788cc80de9eedf2a340698bde99a6a1bdc81265319da3e52f7a53883b7f21749237fcfd3cd4f149bb2be7a4ddd9ef0544cfe0789040d1dc951b6447304942f03ab0beae8866":"e7147749560f491420a2d893c075bb76":"":32:"70a83f6f":"64b021612c78b3e192e8349d48b77d02927e7fd70c7160d37cb8ef472f6bcd9df9d93431627c1c80875e208724ae05f94fdd2e005e9707b78a1bf3bbca7beec4b03ddd4d9de6235ffd6d84a8b9a1842e104c1e22df4566f6c4d3d4e3d96a56b9b8a5cdce9da70aa236109b289266036f285564060b204dfd7ac915eea0dd0b1e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"68dc138f19354d73eaa1cf0e79231d74":"ce345567a76bc30d8b4fd2239788221cfa75e1a310aeeeb8c355f8eea57d80967f3047fbd4e6173fac5caeb22151fa607065953c4c35e0537b9e3788cc80de9eedf2a340698bde99a6a1bdc81265319da3e52f7a53883b7f21749237fcfd3cd4f149bb2be7a4ddd9ef0544cfe0789040d1dc951b6447304942f03ab0beae8866":"e7147749560f491420a2d893c075bb76":"":32:"70a83f6f":"":"64b021612c78b3e192e8349d48b77d02927e7fd70c7160d37cb8ef472f6bcd9df9d93431627c1c80875e208724ae05f94fdd2e005e9707b78a1bf3bbca7beec4b03ddd4d9de6235ffd6d84a8b9a1842e104c1e22df4566f6c4d3d4e3d96a56b9b8a5cdce9da70aa236109b289266036f285564060b204dfd7ac915eea0dd0b1e":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7362c86344e0aefb0cf0d04768f9c05d":"8baffc7836004deb87c0111d47c182512bf861874021ddfcd559acf2c4a51cf5bc4bfdee2d039b9c005b6af95a2607643dcf4d9cd9d62412f709334556db22fc91d7b40438505d6806ccb2f2c21ae731bc1f1c825d28a71ab27095a39985e96ccd07cfb2e75243ccafd474494a2338c324ef533ca5f17d2ac1b1883140342ced":"7e8d12c2f0dcf4f792247134234ac94b":"86d2b5debc3b10495da353d6821f6cad380776d805bd8660b08dcdb1acd87026e4f344b547a4db47b5f44cded314bec4ce9a417ce40a2acd5a21460c42dfcd27483abf3f38dd8cc5fa523b6768a26513df5896435baa97781cff1966e2e3d6ec6d0a9cdc013de5a50e4d46831667055bad04f784024a82f9cd087ae4cd37dd64":128:"9594da428fd8c1b13ecb23afa2c1af2e":"e2c424f42aedd56f0e17a39d43ad19c8e2731efc7a25f077aef51d55280b10e667e338bd981b82a975ef62bf53bc52496b6995d33c90c7ae14767c126826e3f32bd23f444ddcfd7a0dd323b0ae2c22defad04ce63892b45c176bd0b86f5fa057a3dc371359744cb80bbfb4a195755136a0ea90b4044a45bc1b069f3cb3695c04":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7362c86344e0aefb0cf0d04768f9c05d":"8baffc7836004deb87c0111d47c182512bf861874021ddfcd559acf2c4a51cf5bc4bfdee2d039b9c005b6af95a2607643dcf4d9cd9d62412f709334556db22fc91d7b40438505d6806ccb2f2c21ae731bc1f1c825d28a71ab27095a39985e96ccd07cfb2e75243ccafd474494a2338c324ef533ca5f17d2ac1b1883140342ced":"7e8d12c2f0dcf4f792247134234ac94b":"86d2b5debc3b10495da353d6821f6cad380776d805bd8660b08dcdb1acd87026e4f344b547a4db47b5f44cded314bec4ce9a417ce40a2acd5a21460c42dfcd27483abf3f38dd8cc5fa523b6768a26513df5896435baa97781cff1966e2e3d6ec6d0a9cdc013de5a50e4d46831667055bad04f784024a82f9cd087ae4cd37dd64":128:"9594da428fd8c1b13ecb23afa2c1af2e":"":"e2c424f42aedd56f0e17a39d43ad19c8e2731efc7a25f077aef51d55280b10e667e338bd981b82a975ef62bf53bc52496b6995d33c90c7ae14767c126826e3f32bd23f444ddcfd7a0dd323b0ae2c22defad04ce63892b45c176bd0b86f5fa057a3dc371359744cb80bbfb4a195755136a0ea90b4044a45bc1b069f3cb3695c04":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"58748bb204ccb7bdafdbf739b6c19a3e":"b72902c9ebb72a86be539b19a52fd9af00aa4de081d90c0d8ad580ebb5900177a036f40a1e9b43e3a07d715466526d6d7544e5a5551805b62463f956cd519fc99182c2d54bd62fc7ffc6e5ebf1503859b706da11a1b6c707a67a70789dbfc10ef726bd360f9f2347326e068e757c8443ddc9308a171e682359ae1bfe87194ab5":"93ac298c73c88e127a4d9dd81bf24e3d":"8f168fc4d1da13bdbefae3f9d6ac1d8cb19fcec1f43f727951af0a466d8826649a46c3cb50c045ea83849fce0eedbc042a1a435e6d9d59017997a2d5459b940078b8a7f3b6b0ff279ff8c560248296a17240ff1b0643d1f436b6e3f2079363fc49fb45f410debbdde083b92057916368cb807d603cb82e2c0dc01658bff7f1ab":128:"efba4589d4a03555766bbc3b421dd60f":"d5c97a659f016904ff76286f810e8e92da6f8db2c63d8a42e617760780637e32105503440cdf04d1fe67813312f1479fda8d746c8b0b080591eba83850382f600e9d8680516c6579669f0b3d0a30323510f9de1c92512790b8347751994d022156cae64da0808a649d163a0e99e869fdf224b7c1a6a8fbc613d5917eca8ee08c":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"58748bb204ccb7bdafdbf739b6c19a3e":"b72902c9ebb72a86be539b19a52fd9af00aa4de081d90c0d8ad580ebb5900177a036f40a1e9b43e3a07d715466526d6d7544e5a5551805b62463f956cd519fc99182c2d54bd62fc7ffc6e5ebf1503859b706da11a1b6c707a67a70789dbfc10ef726bd360f9f2347326e068e757c8443ddc9308a171e682359ae1bfe87194ab5":"93ac298c73c88e127a4d9dd81bf24e3d":"8f168fc4d1da13bdbefae3f9d6ac1d8cb19fcec1f43f727951af0a466d8826649a46c3cb50c045ea83849fce0eedbc042a1a435e6d9d59017997a2d5459b940078b8a7f3b6b0ff279ff8c560248296a17240ff1b0643d1f436b6e3f2079363fc49fb45f410debbdde083b92057916368cb807d603cb82e2c0dc01658bff7f1ab":128:"efba4589d4a03555766bbc3b421dd60f":"":"d5c97a659f016904ff76286f810e8e92da6f8db2c63d8a42e617760780637e32105503440cdf04d1fe67813312f1479fda8d746c8b0b080591eba83850382f600e9d8680516c6579669f0b3d0a30323510f9de1c92512790b8347751994d022156cae64da0808a649d163a0e99e869fdf224b7c1a6a8fbc613d5917eca8ee08c":0 AES-GCM NIST Validation (AES-128,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6cc13cbd62428bb8658dd3954fe9181f":"2c9ec982d1cfb644ddbc53c0759b10493206d5186affc6882fbb2ba3aa430f9bae1209db2d78dcc125f3c909a54dd84fdff96c71e678216a58390ef4308bdd90f94f7109c4edefa76a74fda64b201b7a435bbabc27298f3eaa4c2d1393bd584f811fff52638f6ad2f6d86a8c3c9c030d9d4264c8c079592a36178d25991cff09":"86740da7ce4efbed70af55e1d6c10fdf":"be561ac15e3cfda624b422af97c26719c140bb50e4a993d636efe9c7f1963fb9047a0762169b571a698ff310bc417e34d4039b7562a95af710ccc1b197964a376c986fd2ed8ac4b0c7b4e843c37a41366f2f483c821a1823f317416c7e4f32eed9b9dc2ae1a2f3ed32c4b3187358a2329aa42191b7c2fe87b6e27ff20303cb29":128:"76b990a1e010e5f088f6ae90bec40b32":"0b9a5f5d2e6852b75b9cf26c1b310b2200e56dafcf3c941478862cdf9737ac8e2cb9b38d41bd4a1872ea1b4cfd51a1a0b9b743aca439eefa10de8459a0a7a221c5429b3dee393f17031ca6c399df8e05657c3db55be9c9dd29e690042a4ed8db732efce7c58d6b20a2a0f7c79e42e5ada43b87ab00f481c20cac1b35514dcdc9":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6cc13cbd62428bb8658dd3954fe9181f":"2c9ec982d1cfb644ddbc53c0759b10493206d5186affc6882fbb2ba3aa430f9bae1209db2d78dcc125f3c909a54dd84fdff96c71e678216a58390ef4308bdd90f94f7109c4edefa76a74fda64b201b7a435bbabc27298f3eaa4c2d1393bd584f811fff52638f6ad2f6d86a8c3c9c030d9d4264c8c079592a36178d25991cff09":"86740da7ce4efbed70af55e1d6c10fdf":"be561ac15e3cfda624b422af97c26719c140bb50e4a993d636efe9c7f1963fb9047a0762169b571a698ff310bc417e34d4039b7562a95af710ccc1b197964a376c986fd2ed8ac4b0c7b4e843c37a41366f2f483c821a1823f317416c7e4f32eed9b9dc2ae1a2f3ed32c4b3187358a2329aa42191b7c2fe87b6e27ff20303cb29":128:"76b990a1e010e5f088f6ae90bec40b32":"":"0b9a5f5d2e6852b75b9cf26c1b310b2200e56dafcf3c941478862cdf9737ac8e2cb9b38d41bd4a1872ea1b4cfd51a1a0b9b743aca439eefa10de8459a0a7a221c5429b3dee393f17031ca6c399df8e05657c3db55be9c9dd29e690042a4ed8db732efce7c58d6b20a2a0f7c79e42e5ada43b87ab00f481c20cac1b35514dcdc9":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"286d3f5080cfe88538571188fbeb2dd5":"55135928997711360622eda1820c815aa22115204b1e9bb567e231ac6ea2594b4d652627b6816bdc6c40a4411fd6b12fab9a1f169d81c476dbf77151bff13f98ca0d1dc0a68ea681652be089fadbc66c604284eebfc8ce4cf10f4ca6bda0e0f6634023db6e3f0f1de626c3249a28a642ecc9ec5ff401e941fa8a3c691566c0ae":"da6140bd4dc6456ddab19069e86efb35":"5d350a04562a605e9082ebd8faec6c27e561425849e7f0f05f5049859c2c1bd2c4682ebf9773fab6177d2601fd5a086cefc3adef5a2f8f6b5dc9e649e98dd0a3d1a2524419f01305bd0fcfff52d84a20d1b14dea2138dcc54eea2bf263c6fe27c3e7255f1f359d0d00fb1b350d7a04965af30027632520197e85eb41de6bb286":120:"d90d34094d740214dd3de685010ce3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"286d3f5080cfe88538571188fbeb2dd5":"55135928997711360622eda1820c815aa22115204b1e9bb567e231ac6ea2594b4d652627b6816bdc6c40a4411fd6b12fab9a1f169d81c476dbf77151bff13f98ca0d1dc0a68ea681652be089fadbc66c604284eebfc8ce4cf10f4ca6bda0e0f6634023db6e3f0f1de626c3249a28a642ecc9ec5ff401e941fa8a3c691566c0ae":"da6140bd4dc6456ddab19069e86efb35":"5d350a04562a605e9082ebd8faec6c27e561425849e7f0f05f5049859c2c1bd2c4682ebf9773fab6177d2601fd5a086cefc3adef5a2f8f6b5dc9e649e98dd0a3d1a2524419f01305bd0fcfff52d84a20d1b14dea2138dcc54eea2bf263c6fe27c3e7255f1f359d0d00fb1b350d7a04965af30027632520197e85eb41de6bb286":120:"d90d34094d740214dd3de685010ce3":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"726ae113a096769b657f973ea6d2d5dd":"90636012ba8c51d16f8f6df3d3bcabc3f09aeffbe2a762f62e677913188045b861b2e7d9a7bd93dcee46e9e4832e497a6f79db52b4e45c8dab20fa568ff9c4ace55be3216f514a3284768a25d86b1c7da5377622f3e90ed4c7bd4571715af4d0a2ab5181d0475f699202e4406bb9cfdbd4fa7f22d0dd744d36b3223134658496":"2f9900226c97585d200dd20a279c154a":"761663c3fcbf1db12bc25546b2425b8229b3153e75f79fa63958819caee3febff74603d99264b5a82ef5980439bef89301ae3206a1d01a3bbd7a6c99d27d1e934cc725daeb483f826c2c9d788fd1f67a627864cf8b5f94df777bb59ef90cb6781a2000e6f0baa4f1ea4754b47bb7cbd2699f83634e4d8ab16b325b2c49f13499":120:"d095bfb8990d4fd64752ee24f3de1e":"9f7759c6d24fd9aa0df02a7c0cc5f17e61622c63195f85dfafa5d820d3ad218c7288ec017821100f1fade10f9bb447a4a01e3698b045548c7619a08f2304e2818a9bf55e70b40f8b994b7dcf0cb243848cf3f6fdfec3ebbb147d01df84a3ec62cd8fa5d78ad9f2f28cd288a35eb49a5172339e9872e8e7e3350b0d69f59acd07":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"726ae113a096769b657f973ea6d2d5dd":"90636012ba8c51d16f8f6df3d3bcabc3f09aeffbe2a762f62e677913188045b861b2e7d9a7bd93dcee46e9e4832e497a6f79db52b4e45c8dab20fa568ff9c4ace55be3216f514a3284768a25d86b1c7da5377622f3e90ed4c7bd4571715af4d0a2ab5181d0475f699202e4406bb9cfdbd4fa7f22d0dd744d36b3223134658496":"2f9900226c97585d200dd20a279c154a":"761663c3fcbf1db12bc25546b2425b8229b3153e75f79fa63958819caee3febff74603d99264b5a82ef5980439bef89301ae3206a1d01a3bbd7a6c99d27d1e934cc725daeb483f826c2c9d788fd1f67a627864cf8b5f94df777bb59ef90cb6781a2000e6f0baa4f1ea4754b47bb7cbd2699f83634e4d8ab16b325b2c49f13499":120:"d095bfb8990d4fd64752ee24f3de1e":"":"9f7759c6d24fd9aa0df02a7c0cc5f17e61622c63195f85dfafa5d820d3ad218c7288ec017821100f1fade10f9bb447a4a01e3698b045548c7619a08f2304e2818a9bf55e70b40f8b994b7dcf0cb243848cf3f6fdfec3ebbb147d01df84a3ec62cd8fa5d78ad9f2f28cd288a35eb49a5172339e9872e8e7e3350b0d69f59acd07":0 AES-GCM NIST Validation (AES-128,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"73a9eeda721c6f292e6b399e2647f8a6":"215fc7e52abe4c751ca2f7f9a5cbde9ab8b44b8d4054bb62dcea6df5b936145ca6ec83a2b78b070638fd6e5ea3bad5d0caf1b8f755f391c3e0962a92337e3eba575585eb83680075fc818860388c587746af78d5fc75ccd0a63f1612abb1ba0f04a2228ca27fbddba4878f9b2683683f516b6d6fe4f6622e603bd3c5ad45e332":"c1e80eb723960049cc4448b66433f1cf":"fb2a0b1f817404e74aee0a6ec8f2cd86f0c9114ed367b2690c44ad80f9d3377d7fd5066beaf1daa739d27ed3fba98379188016b1fe901204a174f9ffca370c181aece5e5d40939a0d460913b40b895e78a3b80ddf3d613c05e4e27bfd161ea2ef42271a2679f2cdca5b728ffb2319781c946a4f3ecacf486b754b30bb04ea60b":120:"e08161262234d0d5be22f09e5646bf":"b5e286183f16dd9403bec6786bd4836cc6add47947ef111fb1d5503c18c333c8fe60959502f58390d0e0f69fbe5fee13c72aed65fe6e32f6ea45877fe44f8a556aa5157b112e572197c1c350b7943c6cf2e9146018599524d27599f09c86027f2c5927e4a20c63833870e8369baa36ecc07cdb3ced520b5ae46869ff357ca089":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"73a9eeda721c6f292e6b399e2647f8a6":"215fc7e52abe4c751ca2f7f9a5cbde9ab8b44b8d4054bb62dcea6df5b936145ca6ec83a2b78b070638fd6e5ea3bad5d0caf1b8f755f391c3e0962a92337e3eba575585eb83680075fc818860388c587746af78d5fc75ccd0a63f1612abb1ba0f04a2228ca27fbddba4878f9b2683683f516b6d6fe4f6622e603bd3c5ad45e332":"c1e80eb723960049cc4448b66433f1cf":"fb2a0b1f817404e74aee0a6ec8f2cd86f0c9114ed367b2690c44ad80f9d3377d7fd5066beaf1daa739d27ed3fba98379188016b1fe901204a174f9ffca370c181aece5e5d40939a0d460913b40b895e78a3b80ddf3d613c05e4e27bfd161ea2ef42271a2679f2cdca5b728ffb2319781c946a4f3ecacf486b754b30bb04ea60b":120:"e08161262234d0d5be22f09e5646bf":"":"b5e286183f16dd9403bec6786bd4836cc6add47947ef111fb1d5503c18c333c8fe60959502f58390d0e0f69fbe5fee13c72aed65fe6e32f6ea45877fe44f8a556aa5157b112e572197c1c350b7943c6cf2e9146018599524d27599f09c86027f2c5927e4a20c63833870e8369baa36ecc07cdb3ced520b5ae46869ff357ca089":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90dbda7397d8fc46215a1218a6ffd0d8":"4f82a1eca6c9184240f50f7e0cfec07ec772cad5276d93043c462d8364addd9a652eed385ccc6b0faa6ca679ab3a4c3d0be6a759425fd38316ee6a1b1b0c52c1bb3b57a9bd7c8a3be95c82f37800c2e3b42dde031851937398811f8f8dc2a15bfd2d6be99a572d56f536e62bc5b041d3944da666081cd755ec347f464214bf33":"7be477d14df5dc15877ae537b62e1a56":"7358ddf1310a58871a2f76705f1cf64223c015c4d1574104d2e38783bb866205042f05c86e76c47a2516ce284911f1d2cbee079982dd77167e328b8324eec47c9244cc5668cf908c679bb586d4dd32c6c99ed99a6b571cf18b00689463e7a88cea6ea32d288301a10a9139ed6092ffe298e25b8cfb6b4be8217f16076dcd0a90":112:"776d871944159c51b2f5ec1980a6":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90dbda7397d8fc46215a1218a6ffd0d8":"4f82a1eca6c9184240f50f7e0cfec07ec772cad5276d93043c462d8364addd9a652eed385ccc6b0faa6ca679ab3a4c3d0be6a759425fd38316ee6a1b1b0c52c1bb3b57a9bd7c8a3be95c82f37800c2e3b42dde031851937398811f8f8dc2a15bfd2d6be99a572d56f536e62bc5b041d3944da666081cd755ec347f464214bf33":"7be477d14df5dc15877ae537b62e1a56":"7358ddf1310a58871a2f76705f1cf64223c015c4d1574104d2e38783bb866205042f05c86e76c47a2516ce284911f1d2cbee079982dd77167e328b8324eec47c9244cc5668cf908c679bb586d4dd32c6c99ed99a6b571cf18b00689463e7a88cea6ea32d288301a10a9139ed6092ffe298e25b8cfb6b4be8217f16076dcd0a90":112:"776d871944159c51b2f5ec1980a6":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0c85174d428fc1c7c89ca5d1b8aaba25":"3735cbfb8000260021d1938d2a18e7737f378ecddb11a46ce387bf04e20bbfcc902457637fd152ab87017185601f32a7f906057123b6c2da31a1069c93e3cacc59a359aebd3e31b302e1a1f7d5d8f1b2917a8fe79181fa633b925ce03a1198dac48f4c959076b55bc6b3d50188af2c6aa33d83698aa8db22649f39825ba54775":"b3c9dfa4c55388a128fbf62aa5927361":"3f552d45b61cf05ae2aa92668e89f3338a15ec7c5b7113b6571cfcd9e4c4a962043ccd9323f828dd645e8a91b007ce2112b7f978ad22ee9821698a4f2559d987ae4421452ad2e8d180953297156426d4540aff2104d8637b56b034a3a1823cf962bffbc465fe6148097975a8821ca7487e6e6c7ff4ee4de899fe67345676bb1c":112:"1e7dec83830183d56f443a16471d":"3d98cabca4afb7c1f6b8eeed521f4666ae252ac12d17ebf4a710b9a22d839b69458387ba4bbec2f6400e0cff80fbe4682c24efcd3b8c594d9b515ca7842c9d5988c42b59b6526c29a99256451e2927f5b956ef262f97c733dfa8bff73644473b9a8562bdfca748f4733ddce94a60024dfbfcde62fb3cbd7c3d955012d5338b91":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0c85174d428fc1c7c89ca5d1b8aaba25":"3735cbfb8000260021d1938d2a18e7737f378ecddb11a46ce387bf04e20bbfcc902457637fd152ab87017185601f32a7f906057123b6c2da31a1069c93e3cacc59a359aebd3e31b302e1a1f7d5d8f1b2917a8fe79181fa633b925ce03a1198dac48f4c959076b55bc6b3d50188af2c6aa33d83698aa8db22649f39825ba54775":"b3c9dfa4c55388a128fbf62aa5927361":"3f552d45b61cf05ae2aa92668e89f3338a15ec7c5b7113b6571cfcd9e4c4a962043ccd9323f828dd645e8a91b007ce2112b7f978ad22ee9821698a4f2559d987ae4421452ad2e8d180953297156426d4540aff2104d8637b56b034a3a1823cf962bffbc465fe6148097975a8821ca7487e6e6c7ff4ee4de899fe67345676bb1c":112:"1e7dec83830183d56f443a16471d":"":"3d98cabca4afb7c1f6b8eeed521f4666ae252ac12d17ebf4a710b9a22d839b69458387ba4bbec2f6400e0cff80fbe4682c24efcd3b8c594d9b515ca7842c9d5988c42b59b6526c29a99256451e2927f5b956ef262f97c733dfa8bff73644473b9a8562bdfca748f4733ddce94a60024dfbfcde62fb3cbd7c3d955012d5338b91":0 AES-GCM NIST Validation (AES-128,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d89f06eb07744d43d44734faf9751d07":"36cc3b2f563305208a03378f7dc036119f7de3fee77cefac06515853d36609a622382ed026c59783fbc0d9910767874c516e10c7bf3e3d104f73b3463c8d93a63418c76cb0d05e62e9c8642cb4f32caced2620912cb6c79e5110a27d5fba1ef3b4d0578077858526c5e4254365f2b2ab47a45df4af08980b3b7a9b66dff5b38c":"185f8d033713ee629e93561cf8d5acb8":"743bcb671d0aa1c547b5448d64d7c6b290777625ba28f25ca0fbf1fc66495a2fde0648a8db51039b0e7340d993aef8afb48269e660cb599837d1e46f72727762d887ee84c073d6136d1b0bc7d4c78f5673a4a6b73375937e8d54a47304845f38ca6b4f51cf14136a0826016535dc5ed003e38c3ac362b9d58ba8b555a05a1412":112:"fcad48076eb03ebe85c6d64f6357":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d89f06eb07744d43d44734faf9751d07":"36cc3b2f563305208a03378f7dc036119f7de3fee77cefac06515853d36609a622382ed026c59783fbc0d9910767874c516e10c7bf3e3d104f73b3463c8d93a63418c76cb0d05e62e9c8642cb4f32caced2620912cb6c79e5110a27d5fba1ef3b4d0578077858526c5e4254365f2b2ab47a45df4af08980b3b7a9b66dff5b38c":"185f8d033713ee629e93561cf8d5acb8":"743bcb671d0aa1c547b5448d64d7c6b290777625ba28f25ca0fbf1fc66495a2fde0648a8db51039b0e7340d993aef8afb48269e660cb599837d1e46f72727762d887ee84c073d6136d1b0bc7d4c78f5673a4a6b73375937e8d54a47304845f38ca6b4f51cf14136a0826016535dc5ed003e38c3ac362b9d58ba8b555a05a1412":112:"fcad48076eb03ebe85c6d64f6357":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6150f14dc53f391e815acfabed9f9e20":"fd8f337017e1b60d6618e6e4ad37c1f230cdeb78891579c2c63d4e6a4f7d2cb7252e99de333c73db45958808c08e91359c885a7385ab6f9ed98a27927a5b83c3a456ce2e01869712675e527155ba1e339ac14a3ccd7a4b87360902f2b8381308fe5a4eac5c90d0b84da4bf5b907de6ff3139cffd23b49a78750006100183032a":"7e92dd558bd2662c3a539dfe21a352cf":"9b4624e9118e6aa5dc65b69856638f77fd3f9f562046f50ba92a64e988258637932af7979f000505b84a71ff5dd7b60bad62586b1a8837a61c15a1a1ba7f06668272c28169915d7f06297b6c2a96c8c44203a422bfd25500c82e11274ffe07706365bfd3da34af4c4dd8ad7b620de7284a5af729bea9c4ed2631bdcba2ebdb7d":104:"922a7b48ad5bf61e6d70751cfe":"f272a3ee9b981f97785cc6fad350e516d72d402dae0d8a531c064ec64598b2a5760f9b279c10aa1ff71bec07300ab0373187138e7a103fc4130105afa6b6346f3d368b40d6f542375de97878ad4d976d64c5c4968a17be2b1757a17c03100231c34721250cd37cc596678764083ade89ae3b1a2151ff9151edcd7ba0eb8a4649":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6150f14dc53f391e815acfabed9f9e20":"fd8f337017e1b60d6618e6e4ad37c1f230cdeb78891579c2c63d4e6a4f7d2cb7252e99de333c73db45958808c08e91359c885a7385ab6f9ed98a27927a5b83c3a456ce2e01869712675e527155ba1e339ac14a3ccd7a4b87360902f2b8381308fe5a4eac5c90d0b84da4bf5b907de6ff3139cffd23b49a78750006100183032a":"7e92dd558bd2662c3a539dfe21a352cf":"9b4624e9118e6aa5dc65b69856638f77fd3f9f562046f50ba92a64e988258637932af7979f000505b84a71ff5dd7b60bad62586b1a8837a61c15a1a1ba7f06668272c28169915d7f06297b6c2a96c8c44203a422bfd25500c82e11274ffe07706365bfd3da34af4c4dd8ad7b620de7284a5af729bea9c4ed2631bdcba2ebdb7d":104:"922a7b48ad5bf61e6d70751cfe":"":"f272a3ee9b981f97785cc6fad350e516d72d402dae0d8a531c064ec64598b2a5760f9b279c10aa1ff71bec07300ab0373187138e7a103fc4130105afa6b6346f3d368b40d6f542375de97878ad4d976d64c5c4968a17be2b1757a17c03100231c34721250cd37cc596678764083ade89ae3b1a2151ff9151edcd7ba0eb8a4649":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e8216072ed6fcde0fe0f636b27ed718":"3b50f2a8dca9f70178503d861d9e37f5edfafc80ee023bfed390a477372986e4794175ec22ac038c3461aba50c9b2379cab48512946efdfe2cb9c12a858b373a5309324f410e6a05e88ba892759dbee6e486dc9665f66cb5950ea7e71317fa94abbebd67a3948746a998173fbbb4f14f9effbdf66d3b6e346053496a4b1934ce":"23a122cf363c3117b8c663388c760ee4":"28ce0b4a44fa83323e060f3ff6436b8829d4f842090296bdc952b6d4a6b1b1a66be06168c63c4643e6ac186f7ffd8d144f603b2d4bc0d65be48121676f9fa1f359029c512bebfd75075ff357bc55f20fc76d9f2477c9930f16408f9f09c5ae86efa2529d2f1449ceeb635b83ca13662860ef9ac04a3d8ab4605eccd2d9ae5a71":104:"531a65cc5dfeca671cc64078d1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e8216072ed6fcde0fe0f636b27ed718":"3b50f2a8dca9f70178503d861d9e37f5edfafc80ee023bfed390a477372986e4794175ec22ac038c3461aba50c9b2379cab48512946efdfe2cb9c12a858b373a5309324f410e6a05e88ba892759dbee6e486dc9665f66cb5950ea7e71317fa94abbebd67a3948746a998173fbbb4f14f9effbdf66d3b6e346053496a4b1934ce":"23a122cf363c3117b8c663388c760ee4":"28ce0b4a44fa83323e060f3ff6436b8829d4f842090296bdc952b6d4a6b1b1a66be06168c63c4643e6ac186f7ffd8d144f603b2d4bc0d65be48121676f9fa1f359029c512bebfd75075ff357bc55f20fc76d9f2477c9930f16408f9f09c5ae86efa2529d2f1449ceeb635b83ca13662860ef9ac04a3d8ab4605eccd2d9ae5a71":104:"531a65cc5dfeca671cc64078d1":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1af434b73a1210b08595ffa686079832":"13f6c1c2d4edcf1438a7b4e85bcd1c84a989831a64d205e7854fce8817ddfceab67d10506ccf6ed9ce50080ef809e28e46cba7b0c96be6a811f59cd09cb3b7b3fe5073ee6763f40aee61e3e65356093f97deef5a8721d995e71db27a51f60a50e34ac3348852c445188cfc64337455f317f87535d465c6f96006f4079396eba3":"ae318f3cb881d1680f6afbf6713a9a2f":"3763c9241be0d9d9a9e46e64b12e107d16cca267ff87844c2325af910cc9a485c7015d95bbe62398864d079fb2b577ba0cfad923c24fa30691ad7d767d651eed4a33d0be8f06fed43f58b2e0bb04959f10b9e8e73bd80d3a6a8c8ce637bfbdb9d02c2b0a3dd8317c4997822031a35d34b3b61819b425c10c64e839b29874ddfb":104:"2ae7350dd3d1909a73f8d64255":"3cd2a770300ce4c85740666640936a0fe48888788702fc37e7a8296adb40b862ec799f257a16821adaa7315bd31e8dec60e4a8faeb8ba2ee606340f0219a6440e9c1d3168425e58fac02e8a88865f30649913d988353ab81f42a5ad43f960055f0877acda20f493208c2c40754fbf4ccee040975aa358ea3fe62cbd028c1611a":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1af434b73a1210b08595ffa686079832":"13f6c1c2d4edcf1438a7b4e85bcd1c84a989831a64d205e7854fce8817ddfceab67d10506ccf6ed9ce50080ef809e28e46cba7b0c96be6a811f59cd09cb3b7b3fe5073ee6763f40aee61e3e65356093f97deef5a8721d995e71db27a51f60a50e34ac3348852c445188cfc64337455f317f87535d465c6f96006f4079396eba3":"ae318f3cb881d1680f6afbf6713a9a2f":"3763c9241be0d9d9a9e46e64b12e107d16cca267ff87844c2325af910cc9a485c7015d95bbe62398864d079fb2b577ba0cfad923c24fa30691ad7d767d651eed4a33d0be8f06fed43f58b2e0bb04959f10b9e8e73bd80d3a6a8c8ce637bfbdb9d02c2b0a3dd8317c4997822031a35d34b3b61819b425c10c64e839b29874ddfb":104:"2ae7350dd3d1909a73f8d64255":"":"3cd2a770300ce4c85740666640936a0fe48888788702fc37e7a8296adb40b862ec799f257a16821adaa7315bd31e8dec60e4a8faeb8ba2ee606340f0219a6440e9c1d3168425e58fac02e8a88865f30649913d988353ab81f42a5ad43f960055f0877acda20f493208c2c40754fbf4ccee040975aa358ea3fe62cbd028c1611a":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"04036d2f5273c6ff5b8364aa595359c9":"acf79b6099490af938fb5fd8913255b3daa22786b03356cdf3e0ffaf570f9f866047b8e15c9953f893d97e7098265297396868ebc383be8547e8ec9d974b6a65b5dc5147cdadef2e2ad96696e84e44f364c2ba18c8aabe21f99489957b2b5484bf3fb4fecaf5ddaa1d373e910059c978918a3d01b955de2adb475914bf2c2067":"edc433c381140dff929d9df9f62f4cb6":"404acfeeea342aeea8c8b7449af9e20ddf5b85dc7770d2144a4dd05959613d04d0cfece5a21cbb1a9175ddc9443ffacd2085332eb4c337a12a7bb294c95960e7c0bde4b8ab30a91e50267bbd0b8d2a4ed381409ea2e4c84f9a2070a793ce3c90ea8a4b140651b452674f85d5b76d0055df115608bf3a3c60996108023ebabe65":96:"71f818f1a2b789fabbda8ec1":"4729cb642304de928b9dca32bb3d7b7836dd3973bbccf3f013c8ff4b59eca56f5d34d1b8f030a7b581b2f8fdc1e22b76a4cbc10095559876736d318d6c96c5c64cbd9fbd1d8eb4df38a2d56640d67d490d03acc1cd32d3f377eb1907bbd600f21d740b578080ba9c6ddc7dc6c50cdcee41fec51499cb944713c0961fc64f5a70":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"04036d2f5273c6ff5b8364aa595359c9":"acf79b6099490af938fb5fd8913255b3daa22786b03356cdf3e0ffaf570f9f866047b8e15c9953f893d97e7098265297396868ebc383be8547e8ec9d974b6a65b5dc5147cdadef2e2ad96696e84e44f364c2ba18c8aabe21f99489957b2b5484bf3fb4fecaf5ddaa1d373e910059c978918a3d01b955de2adb475914bf2c2067":"edc433c381140dff929d9df9f62f4cb6":"404acfeeea342aeea8c8b7449af9e20ddf5b85dc7770d2144a4dd05959613d04d0cfece5a21cbb1a9175ddc9443ffacd2085332eb4c337a12a7bb294c95960e7c0bde4b8ab30a91e50267bbd0b8d2a4ed381409ea2e4c84f9a2070a793ce3c90ea8a4b140651b452674f85d5b76d0055df115608bf3a3c60996108023ebabe65":96:"71f818f1a2b789fabbda8ec1":"":"4729cb642304de928b9dca32bb3d7b7836dd3973bbccf3f013c8ff4b59eca56f5d34d1b8f030a7b581b2f8fdc1e22b76a4cbc10095559876736d318d6c96c5c64cbd9fbd1d8eb4df38a2d56640d67d490d03acc1cd32d3f377eb1907bbd600f21d740b578080ba9c6ddc7dc6c50cdcee41fec51499cb944713c0961fc64f5a70":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"59fe44c6e28d025b2ad05e6e867051ab":"20e66bae1215de9a87a0b878d39015d17e0d4542a1aaba2000cefbd5f892c26a410f55f0d7dc2f6b66690f2997032985e5516e068bfc6ec8a3669f566e280b0cefded519023b735ee3bcbfc5b6ce8203b727933a750f9bd515ec448c1f3a030aa0f40e607727a3239ebbe655d46b38a3d867e481ccf0fadbf0d59b665d2ed6b5":"eb0c30320029433f66d29b3fd5c6563b":"49b7418b87374b462d25309b1c06e3132a3c8f4a4fcf29fed58e0902509426be712639db21c076df7b83dcfcc2c2c8fcc88576f4622a4366eb42f84ebf760e3eb22b14f8b5ff83f06a6f04a924eaab05b912e126e80da22461abf7f1925fd72ebdf2aea335a044726e7c2ebbb2b8aeebab4f7de5e186b50f275b700794d895d8":96:"296c4cdaeb94beb2847dc53d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"59fe44c6e28d025b2ad05e6e867051ab":"20e66bae1215de9a87a0b878d39015d17e0d4542a1aaba2000cefbd5f892c26a410f55f0d7dc2f6b66690f2997032985e5516e068bfc6ec8a3669f566e280b0cefded519023b735ee3bcbfc5b6ce8203b727933a750f9bd515ec448c1f3a030aa0f40e607727a3239ebbe655d46b38a3d867e481ccf0fadbf0d59b665d2ed6b5":"eb0c30320029433f66d29b3fd5c6563b":"49b7418b87374b462d25309b1c06e3132a3c8f4a4fcf29fed58e0902509426be712639db21c076df7b83dcfcc2c2c8fcc88576f4622a4366eb42f84ebf760e3eb22b14f8b5ff83f06a6f04a924eaab05b912e126e80da22461abf7f1925fd72ebdf2aea335a044726e7c2ebbb2b8aeebab4f7de5e186b50f275b700794d895d8":96:"296c4cdaeb94beb2847dc53d":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c314264cee0e6db30ebe9b2f6d4991b2":"d436ff9abfb044a332c4e009b591719a67b12a5366da0a66edf19605c34daa37588e15dd3da0d1a097215e469439de79cca74e04cd4904e5b4a6cb4e0ea54e6ba4e624ed6bd48be32d1ef68ffea1639a14e91a5914c2346ea526df95cbd4ad1b8ee842da210b35b6315c3075ecc267d51643c4b39202d0ad793cbb0045ebdc19":"4cd4431bb6dea8eb18ae74e4c35a6698":"0eeafbfd04f9a0ea18e5bdc688c7df27183f346187e9574b61222006f2b3e12e8d9d9bf1f0f15949ee1a7ee8e5c80ee903b8ba2860e15ccb999929f280200b159c2adca481748d0632a7b40601c45055f8cb5126148e6cbab2c76f543537ab54eb276188343cea3c4ab0d7b65b8754e55cfe3f6a5c41b6ea3c08b81fcecc968a":96:"fda18d2f795d900f057fe872":"cb9e0fb0ac13ca730b79e34745584b362d0716c344e4de90d8352b21117471ba12c97f193150b33774baee5e4a0f11b10428eaf0106c958e16aa46c5f6f3d99eed93d1b9ba3957bed05a8b9cc8c5511cf813a66dc7d773cb735b0523d8d6b0b80639b031ddc375f714c6dd50055320cd7ed44a471c8d5645c938a9005d0b5050":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c314264cee0e6db30ebe9b2f6d4991b2":"d436ff9abfb044a332c4e009b591719a67b12a5366da0a66edf19605c34daa37588e15dd3da0d1a097215e469439de79cca74e04cd4904e5b4a6cb4e0ea54e6ba4e624ed6bd48be32d1ef68ffea1639a14e91a5914c2346ea526df95cbd4ad1b8ee842da210b35b6315c3075ecc267d51643c4b39202d0ad793cbb0045ebdc19":"4cd4431bb6dea8eb18ae74e4c35a6698":"0eeafbfd04f9a0ea18e5bdc688c7df27183f346187e9574b61222006f2b3e12e8d9d9bf1f0f15949ee1a7ee8e5c80ee903b8ba2860e15ccb999929f280200b159c2adca481748d0632a7b40601c45055f8cb5126148e6cbab2c76f543537ab54eb276188343cea3c4ab0d7b65b8754e55cfe3f6a5c41b6ea3c08b81fcecc968a":96:"fda18d2f795d900f057fe872":"":"cb9e0fb0ac13ca730b79e34745584b362d0716c344e4de90d8352b21117471ba12c97f193150b33774baee5e4a0f11b10428eaf0106c958e16aa46c5f6f3d99eed93d1b9ba3957bed05a8b9cc8c5511cf813a66dc7d773cb735b0523d8d6b0b80639b031ddc375f714c6dd50055320cd7ed44a471c8d5645c938a9005d0b5050":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"26072018bd0bda524b5beb66a622c63e":"91c524b359dae3bc49117eebfa610672af1e7754054607317d4c417e7b1a68453f72d355468f825aeb7fde044b20049aed196ec6646cce1eeeccf06cb394286272b573220cdb846613ebc4683442dccc7a19ec86ef1ec971c115726584ae1f4008f94e47d1290d8b6b7a932cfe07165fd2b94e8f96d15f73bf72939c73f4bd11":"c783d6d3b8392160e3b68038b43cf1f4":"8ae7c809a9dc40a6732a7384e3c64abb359c1b09dcb752e5a6b584873e3890230c6fc572b9ad24d849766f849c73f060fc48f664c1af9e6707e223691b77e170966ed164e0cc25ede3fbc3541c480f75b71e7be88fe730d8b361ea2733c6f37e6a59621de6004e020894b51dfb525973d641efe8d5fd9077a0bbc9dc7933a5de":64:"edffe55c60235556":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"26072018bd0bda524b5beb66a622c63e":"91c524b359dae3bc49117eebfa610672af1e7754054607317d4c417e7b1a68453f72d355468f825aeb7fde044b20049aed196ec6646cce1eeeccf06cb394286272b573220cdb846613ebc4683442dccc7a19ec86ef1ec971c115726584ae1f4008f94e47d1290d8b6b7a932cfe07165fd2b94e8f96d15f73bf72939c73f4bd11":"c783d6d3b8392160e3b68038b43cf1f4":"8ae7c809a9dc40a6732a7384e3c64abb359c1b09dcb752e5a6b584873e3890230c6fc572b9ad24d849766f849c73f060fc48f664c1af9e6707e223691b77e170966ed164e0cc25ede3fbc3541c480f75b71e7be88fe730d8b361ea2733c6f37e6a59621de6004e020894b51dfb525973d641efe8d5fd9077a0bbc9dc7933a5de":64:"edffe55c60235556":"FAIL":"":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"201751d3da98bd39ff4e5990a56cfea7":"2965af0bde3565a00e61cebbfe0b51b5b5ee98dbbfff7b1b5bf61da5ba537e6f4cf5fa07d2b20e518232c4961e6bc3ae247b797429da5d7eee2fc675b07066ac2e670261c6e9a91d920c7076101d86d5ef422b58e74bdc1e0b1d58298d3ee0f510ee3a3f63a3bbc24a55be556e465c20525dd100e33815c2a128ac89574884c1":"6172468634bf4e5dda96f67d433062d7":"ae2d770f40706e1eaa36e087b0093ec11ed58afbde4695794745e7523be0a1e4e54daade393f68ba770956d1cfb267b083431851d713249ffe4b61227f1784769ce8c9127f54271526d54181513aca69dc013b2dfb4a5277f4798b1ff674bca79b3dec4a7a27fcf2905ae0ce03f727c315662cd906e57aa557d1023cce2acd84":64:"66c247e5ad4e1d6a":"efd064d4b4ef4c37b48ddf2fa6f5facc5e9cc4c3255b23a1e3765fabb5a339fa0eda754a5381b72989fc1323ff9a6bbaecd904eb4835e5a511b922927574673061ed8de23299ea1456054e7ebb62869878c34fb95e48c8385b5ebceecb962654cf1586b3f54e7887ce31850363e9a22be9e6fbc22e694db81aa055490495dbf2":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"201751d3da98bd39ff4e5990a56cfea7":"2965af0bde3565a00e61cebbfe0b51b5b5ee98dbbfff7b1b5bf61da5ba537e6f4cf5fa07d2b20e518232c4961e6bc3ae247b797429da5d7eee2fc675b07066ac2e670261c6e9a91d920c7076101d86d5ef422b58e74bdc1e0b1d58298d3ee0f510ee3a3f63a3bbc24a55be556e465c20525dd100e33815c2a128ac89574884c1":"6172468634bf4e5dda96f67d433062d7":"ae2d770f40706e1eaa36e087b0093ec11ed58afbde4695794745e7523be0a1e4e54daade393f68ba770956d1cfb267b083431851d713249ffe4b61227f1784769ce8c9127f54271526d54181513aca69dc013b2dfb4a5277f4798b1ff674bca79b3dec4a7a27fcf2905ae0ce03f727c315662cd906e57aa557d1023cce2acd84":64:"66c247e5ad4e1d6a":"":"efd064d4b4ef4c37b48ddf2fa6f5facc5e9cc4c3255b23a1e3765fabb5a339fa0eda754a5381b72989fc1323ff9a6bbaecd904eb4835e5a511b922927574673061ed8de23299ea1456054e7ebb62869878c34fb95e48c8385b5ebceecb962654cf1586b3f54e7887ce31850363e9a22be9e6fbc22e694db81aa055490495dbf2":0 AES-GCM NIST Validation (AES-128,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bc0dcb5261a641a08e6cb00d23e4deb":"d533ad89a1a578db330c01b4e04d08238b020e36aebe87cf2b0bf0b01f1ce4197be8b0596e475a95946918152e8b334ba89f60486c31f0bd8773ca4ff1319fe92197088b131e728d64405441c4fb5466641f0b8682e6cb371f8a8936140b16677f6def8b3dd9cbf47a73f553f1dca4320ad76f387e92f910f9434543f0df0626":"16fa19f69fceed9e97173207158755a5":"92ddd3b98f08fc8538f6106f6434a1efa0a7441cc7f6fd0841103c2e4dd181ea0c9a4811b3cb1bad1986a44d8addabc02dd6980daf7d60405b38dadc836bb1d0620ceab84e0134aca7c30f9f9490436b27acfd7052f9d7f0379b8e7116571017add46b9976f4b41431d47bae6f5f34dc42410793bc26c84bfe84fb53ae138c85":64:"f5289e1204ace3b2":"be0c30deeffbe51706247928132002b24d29272eee6b9d618483868e67280236632fa1ae06f3ef793f67bd01b1b01f70a827367c1cd28f778910457c7cbd977dfefff1f84a522247e19b2fd01fa22ce67cef9503d45c80a5084741f04108f2462b7cdd06a8f1f044fea2b05e920bcc061fbc6910175d732f45102a63c76ae48c":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bc0dcb5261a641a08e6cb00d23e4deb":"d533ad89a1a578db330c01b4e04d08238b020e36aebe87cf2b0bf0b01f1ce4197be8b0596e475a95946918152e8b334ba89f60486c31f0bd8773ca4ff1319fe92197088b131e728d64405441c4fb5466641f0b8682e6cb371f8a8936140b16677f6def8b3dd9cbf47a73f553f1dca4320ad76f387e92f910f9434543f0df0626":"16fa19f69fceed9e97173207158755a5":"92ddd3b98f08fc8538f6106f6434a1efa0a7441cc7f6fd0841103c2e4dd181ea0c9a4811b3cb1bad1986a44d8addabc02dd6980daf7d60405b38dadc836bb1d0620ceab84e0134aca7c30f9f9490436b27acfd7052f9d7f0379b8e7116571017add46b9976f4b41431d47bae6f5f34dc42410793bc26c84bfe84fb53ae138c85":64:"f5289e1204ace3b2":"":"be0c30deeffbe51706247928132002b24d29272eee6b9d618483868e67280236632fa1ae06f3ef793f67bd01b1b01f70a827367c1cd28f778910457c7cbd977dfefff1f84a522247e19b2fd01fa22ce67cef9503d45c80a5084741f04108f2462b7cdd06a8f1f044fea2b05e920bcc061fbc6910175d732f45102a63c76ae48c":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"239c15492d6deec979e79236baca4635":"d64886ce5f5b4adb7fe8f95904bc1461749c931655b02819ffdd0ae31bad4175125aa68962f8e36ec834a7d53a191a74c937e81ec93ad9ce0d3b286d3c11ff1733c0b7780130768c120b1833933561cf07399ca49b912370ae34f0e49b9c8cb9920eddc6816ab2ae261c6d7f70058a9b83a494026f249e58c4c613eefafe6974":"916b8b5417578fa83d2e9e9b8e2e7f6b":"b39eb732bc296c555cc9f00cf4caaf37d012329f344a6b74a873baf0d8dde9631f5e57b45b957d6aec0f7978e573dd78b43d459b77756037cd64d10d49966eb3a2a08d0f4d5e4f5dcb8713f4e4756acdf9925c5fc6120c477f6dffc59b0b47a3d5efd32b8c9052b321bb9b5129e5c6a095d8de563601b34608456f58d7221f2d":32:"fc08cbbe":"95c169721ea007c3f292e4ec7562a426d9baa7d374fd82e1e48d1eaca93d891d5ffa9acf5e3bd82e713ac627141e26a8b654920baffab948401cc3c390d6eea9d7b78c4fcb080b0aa9222e4d51bf201ccfd9328995831435e065d92ad37ee41c7c4366cc1efe15c07fc0470608866aeea96997772ecf926934c5d02efe05f250":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"239c15492d6deec979e79236baca4635":"d64886ce5f5b4adb7fe8f95904bc1461749c931655b02819ffdd0ae31bad4175125aa68962f8e36ec834a7d53a191a74c937e81ec93ad9ce0d3b286d3c11ff1733c0b7780130768c120b1833933561cf07399ca49b912370ae34f0e49b9c8cb9920eddc6816ab2ae261c6d7f70058a9b83a494026f249e58c4c613eefafe6974":"916b8b5417578fa83d2e9e9b8e2e7f6b":"b39eb732bc296c555cc9f00cf4caaf37d012329f344a6b74a873baf0d8dde9631f5e57b45b957d6aec0f7978e573dd78b43d459b77756037cd64d10d49966eb3a2a08d0f4d5e4f5dcb8713f4e4756acdf9925c5fc6120c477f6dffc59b0b47a3d5efd32b8c9052b321bb9b5129e5c6a095d8de563601b34608456f58d7221f2d":32:"fc08cbbe":"":"95c169721ea007c3f292e4ec7562a426d9baa7d374fd82e1e48d1eaca93d891d5ffa9acf5e3bd82e713ac627141e26a8b654920baffab948401cc3c390d6eea9d7b78c4fcb080b0aa9222e4d51bf201ccfd9328995831435e065d92ad37ee41c7c4366cc1efe15c07fc0470608866aeea96997772ecf926934c5d02efe05f250":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"db68a96e216b0dd9945f14b878487e03":"5634196a32d4cbfa7a2f874a1e0f86287d2942090e0cc6a82bd5caf40136a27ddf524a17713ce4af04ca6cb640a7205cce4ac9cb2d0ab380d533e1e968089ea5740c0fcbfa51f2424008e0b89dc7b3396b224cfaed53b3ac0604879983d3e6e6d36053de4866f52976890f72b8f4b9505e4ebdd04c0497048c3ce19336133ea4":"8a1a72e7bb740ec37ea4619c3007f8ae":"1b4f37190a59a4fff41d348798d1829031204fd7ac2a1be7b5ea385567e95e2ace25bf9e324488dd3ab8ce7f29d4c9a4f4b1a8a97f774871ee825e2c17700128d3c55908d3b684a1f550fdb8b38149ff759c21debdd54e49d64d3e8aac803dfd81600464ed484749bb993f89d4224b3d7d55c756b454466ff9fd609019ed5e83":32:"9251d3e3":"0c6bb3ee5de5cbb4b39d85d509bcacb3dda63fa50897936531339882962e8dc54c285c8944768d12096d4a3c2b42ffa92603cee2da9b435ec52908fca6d38ed74f898fe0ffa761f96038ff7dfeccc65bb841c3457b8de1e97d9bee82e2911602ee2dc555b33a227424dea86d610d37c447776295b412b412903ad2cede5170b6":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"db68a96e216b0dd9945f14b878487e03":"5634196a32d4cbfa7a2f874a1e0f86287d2942090e0cc6a82bd5caf40136a27ddf524a17713ce4af04ca6cb640a7205cce4ac9cb2d0ab380d533e1e968089ea5740c0fcbfa51f2424008e0b89dc7b3396b224cfaed53b3ac0604879983d3e6e6d36053de4866f52976890f72b8f4b9505e4ebdd04c0497048c3ce19336133ea4":"8a1a72e7bb740ec37ea4619c3007f8ae":"1b4f37190a59a4fff41d348798d1829031204fd7ac2a1be7b5ea385567e95e2ace25bf9e324488dd3ab8ce7f29d4c9a4f4b1a8a97f774871ee825e2c17700128d3c55908d3b684a1f550fdb8b38149ff759c21debdd54e49d64d3e8aac803dfd81600464ed484749bb993f89d4224b3d7d55c756b454466ff9fd609019ed5e83":32:"9251d3e3":"":"0c6bb3ee5de5cbb4b39d85d509bcacb3dda63fa50897936531339882962e8dc54c285c8944768d12096d4a3c2b42ffa92603cee2da9b435ec52908fca6d38ed74f898fe0ffa761f96038ff7dfeccc65bb841c3457b8de1e97d9bee82e2911602ee2dc555b33a227424dea86d610d37c447776295b412b412903ad2cede5170b6":0 AES-GCM NIST Validation (AES-128,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"659b9e729d12f68b73fdc2f7260ab114":"fd0732a38224c3f16f58de3a7f333da2ecdb6eec92b469544a891966dd4f8fb64a711a793f1ef6a90e49765eacaccdd8cc438c2b57c51902d27a82ee4f24925a864a9513a74e734ddbf77204a99a3c0060fcfbaccae48fe509bc95c3d6e1b1592889c489801265715e6e4355a45357ce467c1caa2f1c3071bd3a9168a7d223e3":"459df18e2dfbd66d6ad04978432a6d97":"ee0b0b52a729c45b899cc924f46eb1908e55aaaeeaa0c4cdaacf57948a7993a6debd7b6cd7aa426dc3b3b6f56522ba3d5700a820b1697b8170bad9ca7caf1050f13d54fb1ddeb111086cb650e1c5f4a14b6a927205a83bf49f357576fd0f884a83b068154352076a6e36a5369436d2c8351f3e6bfec65b4816e3eb3f144ed7f9":32:"8e5a6a79":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"659b9e729d12f68b73fdc2f7260ab114":"fd0732a38224c3f16f58de3a7f333da2ecdb6eec92b469544a891966dd4f8fb64a711a793f1ef6a90e49765eacaccdd8cc438c2b57c51902d27a82ee4f24925a864a9513a74e734ddbf77204a99a3c0060fcfbaccae48fe509bc95c3d6e1b1592889c489801265715e6e4355a45357ce467c1caa2f1c3071bd3a9168a7d223e3":"459df18e2dfbd66d6ad04978432a6d97":"ee0b0b52a729c45b899cc924f46eb1908e55aaaeeaa0c4cdaacf57948a7993a6debd7b6cd7aa426dc3b3b6f56522ba3d5700a820b1697b8170bad9ca7caf1050f13d54fb1ddeb111086cb650e1c5f4a14b6a927205a83bf49f357576fd0f884a83b068154352076a6e36a5369436d2c8351f3e6bfec65b4816e3eb3f144ed7f9":32:"8e5a6a79":"FAIL":"":0 AES-GCM Bad IV (AES-128,128,0,0,32) #0 depends_on:MBEDTLS_AES_C diff --git a/tests/suites/test_suite_gcm.aes192_de.data b/tests/suites/test_suite_gcm.aes192_de.data index 9e7bad00f7..34f74ac061 100644 --- a/tests/suites/test_suite_gcm.aes192_de.data +++ b/tests/suites/test_suite_gcm.aes192_de.data @@ -1,674 +1,674 @@ AES-GCM NIST Validation (AES-192,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"806766a4d2b6507cc4113bc0e46eebe120eacd948c24dc7f":"":"4f801c772395c4519ec830980c8ca5a4":"":128:"8fa16452b132bebc6aa521e92cb3b0ea":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"806766a4d2b6507cc4113bc0e46eebe120eacd948c24dc7f":"":"4f801c772395c4519ec830980c8ca5a4":"":128:"8fa16452b132bebc6aa521e92cb3b0ea":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0c2abdcd2e4ae4137509761a38e6ca436b99c21b141f28f5":"":"335ca01a07081fea4e605eb5f23a778e":"":128:"d7f475dfcb92a75bc8521c12bb2e8b86":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0c2abdcd2e4ae4137509761a38e6ca436b99c21b141f28f5":"":"335ca01a07081fea4e605eb5f23a778e":"":128:"d7f475dfcb92a75bc8521c12bb2e8b86":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"eef490a0c2ecb32472e1654184340cc7433c34da981c062d":"":"d9172c3344d37ff93d2dcb2170ea5d01":"":128:"017fef05260a496654896d4703db3888":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"eef490a0c2ecb32472e1654184340cc7433c34da981c062d":"":"d9172c3344d37ff93d2dcb2170ea5d01":"":128:"017fef05260a496654896d4703db3888":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe0c3490f1f0dba23cf5c64e6e1740d06f85e0afec6772f3":"":"f47e915163fa3df7f6c15b9d69f53907":"":120:"14e1a057a2e7ffbd2208e9c25dbba1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe0c3490f1f0dba23cf5c64e6e1740d06f85e0afec6772f3":"":"f47e915163fa3df7f6c15b9d69f53907":"":120:"14e1a057a2e7ffbd2208e9c25dbba1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4356b3b1f308df3573509945afe5268984f9d953f01096de":"":"a35b397b34a14a8e24d05a37be4d1822":"":120:"e045ecba220d22c80826b77a21b013":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4356b3b1f308df3573509945afe5268984f9d953f01096de":"":"a35b397b34a14a8e24d05a37be4d1822":"":120:"e045ecba220d22c80826b77a21b013":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e2898937cc575c8bb7444413884deafe8eaf326be8849e42":"":"169a449ccb3eb29805b15304d603b132":"":120:"3a807251f3d6242849a69972b14f6d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e2898937cc575c8bb7444413884deafe8eaf326be8849e42":"":"169a449ccb3eb29805b15304d603b132":"":120:"3a807251f3d6242849a69972b14f6d":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"75683c7df0442e10b5368fcd6bb481f0bff8d95aae90487e":"":"538641f7d1cc5c68715971cee607da73":"":112:"07d68fffe417adc3397706d73b95":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"75683c7df0442e10b5368fcd6bb481f0bff8d95aae90487e":"":"538641f7d1cc5c68715971cee607da73":"":112:"07d68fffe417adc3397706d73b95":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0724ee1f317997ce77bb659446fcb5a557490f40597341c7":"":"0d8eb78032d83c676820b2ef5ccc2cc8":"":112:"7da181563b26c7aefeb29e71cc69":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0724ee1f317997ce77bb659446fcb5a557490f40597341c7":"":"0d8eb78032d83c676820b2ef5ccc2cc8":"":112:"7da181563b26c7aefeb29e71cc69":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"be2f0f4ae4ab851b258ec5602628df261b6a69e309ff9043":"":"646a91d83ae72b9b9e9fce64135cbf73":"":112:"169e717e2bae42e3eb61d0a1a29b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"be2f0f4ae4ab851b258ec5602628df261b6a69e309ff9043":"":"646a91d83ae72b9b9e9fce64135cbf73":"":112:"169e717e2bae42e3eb61d0a1a29b":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"583c328daecd18c2ac5c83a0c263de194a4c73aa4700fe76":"":"55e10d5e9b438b02505d30f211b16fea":"":104:"95c0a4ea9e80f91a4acce500f7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"583c328daecd18c2ac5c83a0c263de194a4c73aa4700fe76":"":"55e10d5e9b438b02505d30f211b16fea":"":104:"95c0a4ea9e80f91a4acce500f7":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b40857e7e6f26050f1e9a6cbe05e15a0ba07c2055634ad47":"":"e25ef162a4295d7d24de75a673172346":"":104:"89ea4d1f34edb716b322ea7f6f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b40857e7e6f26050f1e9a6cbe05e15a0ba07c2055634ad47":"":"e25ef162a4295d7d24de75a673172346":"":104:"89ea4d1f34edb716b322ea7f6f":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"627008956e31fea497fb120b438a2a043c23b1b38dc6bc10":"":"08ea464baac54469b0498419d83820e6":"":104:"ab064a8d380fe2cda38e61f9e1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"627008956e31fea497fb120b438a2a043c23b1b38dc6bc10":"":"08ea464baac54469b0498419d83820e6":"":104:"ab064a8d380fe2cda38e61f9e1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8c386d67d7c2bfd46b8571d8685b35741e87a3ed4a46c9db":"":"766996fb67ace9e6a22d7f802455d4ef":"":96:"9a641be173dc3557ea015372":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8c386d67d7c2bfd46b8571d8685b35741e87a3ed4a46c9db":"":"766996fb67ace9e6a22d7f802455d4ef":"":96:"9a641be173dc3557ea015372":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"711bc5aa6b94fa3287fad0167ac1a9ef5e8e01c16a79e95a":"":"75cdb8b83017f3dc5ac8733016ab47c7":"":96:"81e3a5580234d8e0b2204bc3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"711bc5aa6b94fa3287fad0167ac1a9ef5e8e01c16a79e95a":"":"75cdb8b83017f3dc5ac8733016ab47c7":"":96:"81e3a5580234d8e0b2204bc3":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c74620828402e0bdf3f7a5353668505dc1550a31debce59a":"":"cfbefe265583ab3a2285e8080141ba48":"":96:"355a43bcebbe7f72b6cd27ea":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c74620828402e0bdf3f7a5353668505dc1550a31debce59a":"":"cfbefe265583ab3a2285e8080141ba48":"":96:"355a43bcebbe7f72b6cd27ea":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1eb53aa548b41bfdc85c657ebdebdae0c7e525a6432bc012":"":"37ffc64d4b2d9c82dd17d1ad3076d82b":"":64:"34b8e037084b3f2d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1eb53aa548b41bfdc85c657ebdebdae0c7e525a6432bc012":"":"37ffc64d4b2d9c82dd17d1ad3076d82b":"":64:"34b8e037084b3f2d":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"50d077575f6db91024a8e564db83324539e9b7add7bb98e4":"":"118d0283294d4084127cce4b0cd5b5fa":"":64:"507a361d8ac59882":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"50d077575f6db91024a8e564db83324539e9b7add7bb98e4":"":"118d0283294d4084127cce4b0cd5b5fa":"":64:"507a361d8ac59882":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d9ddca0807305025d61919ed7893d7d5c5a3c9f012f4842f":"":"b78d518b6c41a9e031a00b10fb178327":"":64:"f401d546c8b739ff":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d9ddca0807305025d61919ed7893d7d5c5a3c9f012f4842f":"":"b78d518b6c41a9e031a00b10fb178327":"":64:"f401d546c8b739ff":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6ed8d8afde4dc3872cbc274d7c47b719205518496dd7951d":"":"14eb280288740d464e3b8f296c642daa":"":32:"39e64d7a":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6ed8d8afde4dc3872cbc274d7c47b719205518496dd7951d":"":"14eb280288740d464e3b8f296c642daa":"":32:"39e64d7a":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"80aace5ab74f261bc09ac6f66898f69e7f348f805d52404d":"":"f54bf4aac8fb631c8b6ff5e96465fae6":"":32:"1ec1c1a1":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"80aace5ab74f261bc09ac6f66898f69e7f348f805d52404d":"":"f54bf4aac8fb631c8b6ff5e96465fae6":"":32:"1ec1c1a1":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"23b76efd0dbc8d501885ab7d43a7dacde91edd9cde1e1048":"":"75532d15e582e6c477b411e727d4171e":"":32:"76a0e017":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"23b76efd0dbc8d501885ab7d43a7dacde91edd9cde1e1048":"":"75532d15e582e6c477b411e727d4171e":"":32:"76a0e017":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94c50453dd3ef7f7ea763ae13fa34debb9c1198abbf32326":"":"1afe962bc46e36099165552ddb329ac6":"b2920dd9b0325a87e8edda8db560bfe287e44df79cf61edba3b2c95e34629638ecb86584f05a303603065e63323523f6ccc5b605679d1722cde5561f89d268d5f8db8e6bdffda4839c4a04982e8314da78e89f8f8ad9c0fee86332906bf78d2f20afcaabdc282008c6d09df2bfe9be2c9027bb49268b8be8936be39fa8b1ae03":128:"51e1f19a7dea5cfe9b9ca9d09096c3e7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94c50453dd3ef7f7ea763ae13fa34debb9c1198abbf32326":"":"1afe962bc46e36099165552ddb329ac6":"b2920dd9b0325a87e8edda8db560bfe287e44df79cf61edba3b2c95e34629638ecb86584f05a303603065e63323523f6ccc5b605679d1722cde5561f89d268d5f8db8e6bdffda4839c4a04982e8314da78e89f8f8ad9c0fee86332906bf78d2f20afcaabdc282008c6d09df2bfe9be2c9027bb49268b8be8936be39fa8b1ae03":128:"51e1f19a7dea5cfe9b9ca9d09096c3e7":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c6a98102af3d875bcdebe594661d3a6b376970c02b11d019":"":"bea8cd85a28a2c05bf7406b8eef1efcc":"f2f80e2c042092cc7240b598ab30fad055bce85408aa0f8cefaf8a7204f0e2acb87c78f46a5867b1f1c19461cbf5ed5d2ca21c96a63fb1f42f10f394952e63520795c56df77d6a04cb5ad006ee865a47dc2349a814a630b3d4c4e0fd149f51e8fa846656ea569fd29a1ebafc061446eb80ec182f833f1f6d9083545abf52fa4c":128:"04b80f25ae9d07f5fd8220263ac3f2f7":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c6a98102af3d875bcdebe594661d3a6b376970c02b11d019":"":"bea8cd85a28a2c05bf7406b8eef1efcc":"f2f80e2c042092cc7240b598ab30fad055bce85408aa0f8cefaf8a7204f0e2acb87c78f46a5867b1f1c19461cbf5ed5d2ca21c96a63fb1f42f10f394952e63520795c56df77d6a04cb5ad006ee865a47dc2349a814a630b3d4c4e0fd149f51e8fa846656ea569fd29a1ebafc061446eb80ec182f833f1f6d9083545abf52fa4c":128:"04b80f25ae9d07f5fd8220263ac3f2f7":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec3cc45a22fdc7cc79ed658d9e9dbc138dcc7d6e795cba1a":"":"b10d9c70205e142704f9d1f74caee0f6":"714994017c169c574aaff2f8bad15f8fa6a385117f5405f74846eca873ca4a8f4876adf704f2fcaff2dfa75c17afefd08a4707292debc6d9fafda6244ca509bc52b0c6b70f09b14c0d7c667583c091d4064e241ba1f82dd43dc3ea4b8922be65faf5583f6b21ff5b22d3632eb4a426675648250e4b3e37c688d6129b954ef6a8":128:"d22407fd3ae1921d1b380461d2e60210":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec3cc45a22fdc7cc79ed658d9e9dbc138dcc7d6e795cba1a":"":"b10d9c70205e142704f9d1f74caee0f6":"714994017c169c574aaff2f8bad15f8fa6a385117f5405f74846eca873ca4a8f4876adf704f2fcaff2dfa75c17afefd08a4707292debc6d9fafda6244ca509bc52b0c6b70f09b14c0d7c667583c091d4064e241ba1f82dd43dc3ea4b8922be65faf5583f6b21ff5b22d3632eb4a426675648250e4b3e37c688d6129b954ef6a8":128:"d22407fd3ae1921d1b380461d2e60210":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a32ebc7a2338038ced36d2b85cbc6c45cca9845a7c5aa99":"":"9afe0882e418c9af205eeb90e131d212":"61ff8a8bc22803f17e8e9f01aff865bc7d3083ff413ce392a989e46ebed5114894de906f7d36439024d8f2e69cc815ac043fff2f75169f6c9aa9761ff32d10a1353213ac756cb84bd3613f8261ef390e1d00c3a8fb82764b0cda4e0049219e87d2e92c38f78ffac242391f838a248f608bb2b56b31bbb453d1098e99d079ea1b":120:"fcbb932ddb0128df78a71971c52838":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a32ebc7a2338038ced36d2b85cbc6c45cca9845a7c5aa99":"":"9afe0882e418c9af205eeb90e131d212":"61ff8a8bc22803f17e8e9f01aff865bc7d3083ff413ce392a989e46ebed5114894de906f7d36439024d8f2e69cc815ac043fff2f75169f6c9aa9761ff32d10a1353213ac756cb84bd3613f8261ef390e1d00c3a8fb82764b0cda4e0049219e87d2e92c38f78ffac242391f838a248f608bb2b56b31bbb453d1098e99d079ea1b":120:"fcbb932ddb0128df78a71971c52838":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bf22885e7f13bcc63bb0a2ca90c20e5c86001f05edf85d8":"":"99dec21f4781284722b5074ea567c171":"9f4176dacf26e27aa0e669cd4d44bca41f83468c70b54c745a601408a214bf876941ae2ae4d26929113f5de2e7d15a7bb656541292137bf2129fdc31f06f070e3cfaf0a7b30d93d8d3c76a981d75cd0ffa0bcacb34597d5be1a055c35eefeddc07ee098603e48ad88eb7a2ec19c1aefc5c7be9a237797397aa27590d5261f67a":120:"18fd1feec5e3bbf0985312dd6100d1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bf22885e7f13bcc63bb0a2ca90c20e5c86001f05edf85d8":"":"99dec21f4781284722b5074ea567c171":"9f4176dacf26e27aa0e669cd4d44bca41f83468c70b54c745a601408a214bf876941ae2ae4d26929113f5de2e7d15a7bb656541292137bf2129fdc31f06f070e3cfaf0a7b30d93d8d3c76a981d75cd0ffa0bcacb34597d5be1a055c35eefeddc07ee098603e48ad88eb7a2ec19c1aefc5c7be9a237797397aa27590d5261f67a":120:"18fd1feec5e3bbf0985312dd6100d1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cfd75a9d3788d965895553ab5fb7a8ff0aa383b7594850a6":"":"a6df69e5f77f4d99d5318c45c87451b2":"041aeb2fa0f7df027cd7709a992e041179d499f5dbccd389035bf7e514a38b5f8368379d2d7b5015d4fa6fadfd7c75abd2d855f5ea4220315fad2c2d435d910253bf76f252a21c57fe74f7247dac32f4276d793d30d48dd61d0e14a4b7f07a56c94d3799d04324dfb2b27a22a5077e280422d4f014f253d138e74c9ac3428a7b":120:"fd78b9956e4e4522605db410f97e84":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cfd75a9d3788d965895553ab5fb7a8ff0aa383b7594850a6":"":"a6df69e5f77f4d99d5318c45c87451b2":"041aeb2fa0f7df027cd7709a992e041179d499f5dbccd389035bf7e514a38b5f8368379d2d7b5015d4fa6fadfd7c75abd2d855f5ea4220315fad2c2d435d910253bf76f252a21c57fe74f7247dac32f4276d793d30d48dd61d0e14a4b7f07a56c94d3799d04324dfb2b27a22a5077e280422d4f014f253d138e74c9ac3428a7b":120:"fd78b9956e4e4522605db410f97e84":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0b21ae138485591c6bef7b3d5a0aa0e9762c30a50e4bba2":"":"56dc980e1cba1bc2e3b4a0733d7897ca":"a38458e5cc71f22f6f5880dc018c5777c0e6c8a1301e7d0300c02c976423c2b65f522db4a90401035346d855c892cbf27092c81b969e99cb2b6198e450a95c547bb0145652c9720aaf72a975e4cb5124b483a42f84b5cd022367802c5f167a7dfc885c1f983bb4525a88c8257df3067b6d36d2dbf6323df80c3eaeffc2d176a5":112:"b11f5c0e8cb6fea1a170c9342437":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0b21ae138485591c6bef7b3d5a0aa0e9762c30a50e4bba2":"":"56dc980e1cba1bc2e3b4a0733d7897ca":"a38458e5cc71f22f6f5880dc018c5777c0e6c8a1301e7d0300c02c976423c2b65f522db4a90401035346d855c892cbf27092c81b969e99cb2b6198e450a95c547bb0145652c9720aaf72a975e4cb5124b483a42f84b5cd022367802c5f167a7dfc885c1f983bb4525a88c8257df3067b6d36d2dbf6323df80c3eaeffc2d176a5":112:"b11f5c0e8cb6fea1a170c9342437":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8775665aba345b1c3e626128b5afa3d0da8f4d36b8cf1ca6":"":"cd17f761670e1f104f8ea4fb0cec7166":"2ee08a51ceaca1dbbb3ee09b72f57427fd34bd95da5b4c0933cbb0fc2f7270cffd3476aa05deeb892a7e6a8a3407e61f8631d1a00e47d46efb918393ee5099df7d65c12ab8c9640bfcb3a6cce00c3243d0b3f316f0822cfeae05ee67b419393cc81846b60c42aeb5c53f0ede1280dc36aa8ef59addd10668dd61557ce760c544":112:"6cdf60e62c91a6a944fa80da1854":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8775665aba345b1c3e626128b5afa3d0da8f4d36b8cf1ca6":"":"cd17f761670e1f104f8ea4fb0cec7166":"2ee08a51ceaca1dbbb3ee09b72f57427fd34bd95da5b4c0933cbb0fc2f7270cffd3476aa05deeb892a7e6a8a3407e61f8631d1a00e47d46efb918393ee5099df7d65c12ab8c9640bfcb3a6cce00c3243d0b3f316f0822cfeae05ee67b419393cc81846b60c42aeb5c53f0ede1280dc36aa8ef59addd10668dd61557ce760c544":112:"6cdf60e62c91a6a944fa80da1854":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cc9922299b47725952f06272168b728218d2443028d81597":"":"9b2f1a40717afcdbb6a95d6e335c9e4d":"bcfca8420bc7b9df0290d8c1bcf4e3e66d3a4be1c947af82dd541336e44e2c4fa7c6b456980b174948de30b694232b03f8eb990f849b5f57762886b449671e4f0b5e7a173f12910393bdf5c162163584c774ad3bba39794767a4cc45f4a582d307503960454631cdf551e528a863f2e014b1fca4955a78bd545dec831e4d71c7":112:"dd515e5a8b41ecc441443a749b31":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cc9922299b47725952f06272168b728218d2443028d81597":"":"9b2f1a40717afcdbb6a95d6e335c9e4d":"bcfca8420bc7b9df0290d8c1bcf4e3e66d3a4be1c947af82dd541336e44e2c4fa7c6b456980b174948de30b694232b03f8eb990f849b5f57762886b449671e4f0b5e7a173f12910393bdf5c162163584c774ad3bba39794767a4cc45f4a582d307503960454631cdf551e528a863f2e014b1fca4955a78bd545dec831e4d71c7":112:"dd515e5a8b41ecc441443a749b31":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a27d718f21c5cbdc52a745b931bc77bd1afa8b1231f8815":"":"59661051912fba45023aef4e6f9380a5":"2b7ce5cea81300ed23501493310f1316581ef8a50e37eaadd4bb5f527add6deb09e7dcc67652e44ac889b48726d8c0ae80e2b3a89dd34232eb1da32f7f4fcd5bf8e920d286db8604f23ab06eab3e6f99beb55fe3725107e9d67a491cdada1580717bbf64c28799c9ab67922da9194747f32fd84197070a86838d1c9ebae379b7":104:"f33e8f42b58f45a0456f83a13e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a27d718f21c5cbdc52a745b931bc77bd1afa8b1231f8815":"":"59661051912fba45023aef4e6f9380a5":"2b7ce5cea81300ed23501493310f1316581ef8a50e37eaadd4bb5f527add6deb09e7dcc67652e44ac889b48726d8c0ae80e2b3a89dd34232eb1da32f7f4fcd5bf8e920d286db8604f23ab06eab3e6f99beb55fe3725107e9d67a491cdada1580717bbf64c28799c9ab67922da9194747f32fd84197070a86838d1c9ebae379b7":104:"f33e8f42b58f45a0456f83a13e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b83e933cf54ac58f8c7e5ed18e4ed2213059158ed9cb2c30":"":"8710af55dd79da45a4b24f6e972bc60a":"b7a428bc68696cee06f2f8b43f63b47914e29f04a4a40c0eec6193a9a24bbe012d68bea5573382dd579beeb0565b0e0334cce6724997138b198fce8325f07069d6890ac4c052e127aa6e70a6248e6536d1d3c6ac60d8cd14d9a45200f6540305f882df5fca2cac48278f94fe502b5abe2992fa2719b0ce98b7ef1b5582e0151c":104:"380128ad7f35be87a17c9590fa":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b83e933cf54ac58f8c7e5ed18e4ed2213059158ed9cb2c30":"":"8710af55dd79da45a4b24f6e972bc60a":"b7a428bc68696cee06f2f8b43f63b47914e29f04a4a40c0eec6193a9a24bbe012d68bea5573382dd579beeb0565b0e0334cce6724997138b198fce8325f07069d6890ac4c052e127aa6e70a6248e6536d1d3c6ac60d8cd14d9a45200f6540305f882df5fca2cac48278f94fe502b5abe2992fa2719b0ce98b7ef1b5582e0151c":104:"380128ad7f35be87a17c9590fa":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d2f85f92092385f15da43a086cff64c7448b4ee5a83ed72e":"":"9026dfd09e4553cd51c4c13ce70830de":"3c8de64c14df73c1b470a9d8aa693af96e487d548d03a92ce59c0baec8576129945c722586a66f03deb5029cbda029fb22d355952c3dadfdede20b63f4221f27c8e5d710e2b335c2d9a9b7ca899597a03c41ee6508e40a6d74814441ac3acb64a20f48a61e8a18f4bbcbd3e7e59bb3cd2be405afd6ac80d47ce6496c4b9b294c":104:"e9e5beea7d39c9250347a2a33d":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d2f85f92092385f15da43a086cff64c7448b4ee5a83ed72e":"":"9026dfd09e4553cd51c4c13ce70830de":"3c8de64c14df73c1b470a9d8aa693af96e487d548d03a92ce59c0baec8576129945c722586a66f03deb5029cbda029fb22d355952c3dadfdede20b63f4221f27c8e5d710e2b335c2d9a9b7ca899597a03c41ee6508e40a6d74814441ac3acb64a20f48a61e8a18f4bbcbd3e7e59bb3cd2be405afd6ac80d47ce6496c4b9b294c":104:"e9e5beea7d39c9250347a2a33d":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"de7df44ce007c99f7baad6a6955195f14e60999ed9818707":"":"4d209e414965fe99636c1c6493bba3a3":"da3bc6bdd414a1e07e00981cf9199371192a1fb2eaae20f7091e5fe5368e26d61b981f7f1d29f1a9085ad2789d101155a980de98d961c093941502268adb70537ad9783e6c7d5157c939f59b8ad474c3d7fc1fcc91165cdf8dd9d6ec70d6400086d564b68ebead0d03ebd3aa66ded555692b8de0baf43bc0ddef42e3a9eb34ab":96:"24483a57c20826a709b7d10a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"de7df44ce007c99f7baad6a6955195f14e60999ed9818707":"":"4d209e414965fe99636c1c6493bba3a3":"da3bc6bdd414a1e07e00981cf9199371192a1fb2eaae20f7091e5fe5368e26d61b981f7f1d29f1a9085ad2789d101155a980de98d961c093941502268adb70537ad9783e6c7d5157c939f59b8ad474c3d7fc1fcc91165cdf8dd9d6ec70d6400086d564b68ebead0d03ebd3aa66ded555692b8de0baf43bc0ddef42e3a9eb34ab":96:"24483a57c20826a709b7d10a":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1dfa5ff20046c775b5e768c2bd9775066ae766345b7befc3":"":"2d49409b869b8b9fc5b67767979ca8cd":"e35d34478b228bc903ea2423697e603cc077967d7cfb062e95bc11d89fbe0a1f1d4569f89b2a7047300c1f5131d91564ec9bce014d18ba605a1c1e4e15e3e5c18413b8b59cbb25ab8f088885225de1235c16c7d9a8d06a23cb0b38fd1d5c6c19617fe08fd6bf01c965ed593149a1c6295435e98463e4f03a511d1a7e82c11f01":96:"23012503febbf26dc2d872dc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1dfa5ff20046c775b5e768c2bd9775066ae766345b7befc3":"":"2d49409b869b8b9fc5b67767979ca8cd":"e35d34478b228bc903ea2423697e603cc077967d7cfb062e95bc11d89fbe0a1f1d4569f89b2a7047300c1f5131d91564ec9bce014d18ba605a1c1e4e15e3e5c18413b8b59cbb25ab8f088885225de1235c16c7d9a8d06a23cb0b38fd1d5c6c19617fe08fd6bf01c965ed593149a1c6295435e98463e4f03a511d1a7e82c11f01":96:"23012503febbf26dc2d872dc":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2df3ee3a6484c48fdd0d37bab443228c7d873c984529dfb4":"":"dc6aeb41415c115d66443fbd7acdfc8f":"eafc6007fafb461d3b151bdff459e56dd09b7b48b93ea730c85e5424f762b4a9080de44497a7c56dd7855628ffc61c7b4faeb7d6f413d464fe5ec6401f3028427ae3e62db3ff39cd0f5333a664d3505ff42caa8899b96a92ec01934d4b59556feb9055e8dfb81f55e60135345bfce3e4199bfcdb3ce42523e7d24be2a04cdb67":96:"e8e80bf6e5c4a55e7964f455":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2df3ee3a6484c48fdd0d37bab443228c7d873c984529dfb4":"":"dc6aeb41415c115d66443fbd7acdfc8f":"eafc6007fafb461d3b151bdff459e56dd09b7b48b93ea730c85e5424f762b4a9080de44497a7c56dd7855628ffc61c7b4faeb7d6f413d464fe5ec6401f3028427ae3e62db3ff39cd0f5333a664d3505ff42caa8899b96a92ec01934d4b59556feb9055e8dfb81f55e60135345bfce3e4199bfcdb3ce42523e7d24be2a04cdb67":96:"e8e80bf6e5c4a55e7964f455":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce0787f65e6c24a1c444c35dcd38195197530aa20f1f6f3b":"":"55300431b1eaac0375681d7821e1eb7a":"84a699a34a1e597061ef95e8ec3c21b592e9236ddb98c68d7e05f1e709937b48ec34a4b88d99708d133a2cc33f5cf6819d5e7b82888e49faa5d54147d36c9e486630aa68fef88d55537119db1d57df0402f56e219f7ece7b4bb5f996dbe1c664a75174c880a00b0f2a56e35d17b69c550921961505afabf4bfd66cf04dc596d1":64:"74264163131d16ac":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce0787f65e6c24a1c444c35dcd38195197530aa20f1f6f3b":"":"55300431b1eaac0375681d7821e1eb7a":"84a699a34a1e597061ef95e8ec3c21b592e9236ddb98c68d7e05f1e709937b48ec34a4b88d99708d133a2cc33f5cf6819d5e7b82888e49faa5d54147d36c9e486630aa68fef88d55537119db1d57df0402f56e219f7ece7b4bb5f996dbe1c664a75174c880a00b0f2a56e35d17b69c550921961505afabf4bfd66cf04dc596d1":64:"74264163131d16ac":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a15541b5857a668dc9899b2e198d2416e83bac13282ca46":"":"89bf8ab0cea6f59616eeb9b314d7c333":"4d2843f34f9ea13a1ac521479457005178bcf8b2ebeaeb09097ea4471da9f6cc60a532bcda1c18cab822af541de3b87de606999e994ace3951f58a02de0d6620c9ae04549326da449a3e90364a17b90b6b17debc0f454bb0e7e98aef56a1caccf8c91614d1616db30fc8223dbcd8e77bf55d8253efe034fd66f7191e0303c52f":64:"8f4877806daff10e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a15541b5857a668dc9899b2e198d2416e83bac13282ca46":"":"89bf8ab0cea6f59616eeb9b314d7c333":"4d2843f34f9ea13a1ac521479457005178bcf8b2ebeaeb09097ea4471da9f6cc60a532bcda1c18cab822af541de3b87de606999e994ace3951f58a02de0d6620c9ae04549326da449a3e90364a17b90b6b17debc0f454bb0e7e98aef56a1caccf8c91614d1616db30fc8223dbcd8e77bf55d8253efe034fd66f7191e0303c52f":64:"8f4877806daff10e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b61cdfd19c136ee2acbe09b7993a4683a713427518f8e559":"":"4066118061c904ed1e866d4f31d11234":"153c075ecdd184fd8a0fca25cae8f720201361ef84f3c638b148ca32c51d091a0e394236d0b51c1d2ee601914120c56dfea1289af470dbc9ef462ec5f974e455e6a83e215a2c8e27c0c5b5b45b662b7f58635a29866e8f76ab41ee628c12a24ab4d5f7954665c3e4a3a346739f20393fc5700ec79d2e3c2722c3fb3c77305337":64:"4eff7227b42f9a7d":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b61cdfd19c136ee2acbe09b7993a4683a713427518f8e559":"":"4066118061c904ed1e866d4f31d11234":"153c075ecdd184fd8a0fca25cae8f720201361ef84f3c638b148ca32c51d091a0e394236d0b51c1d2ee601914120c56dfea1289af470dbc9ef462ec5f974e455e6a83e215a2c8e27c0c5b5b45b662b7f58635a29866e8f76ab41ee628c12a24ab4d5f7954665c3e4a3a346739f20393fc5700ec79d2e3c2722c3fb3c77305337":64:"4eff7227b42f9a7d":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce175a7df7e429fcc233540e6b8524323e91f40f592ba144":"":"c34484b4857b93e309df8e1a0e1ec9a3":"ce8d8775f047b543a6cc0d9ef9bc0db5ac5d610dc3ff6e12e0ad7cd3a399ebb762331e3c1101a189b3433a7ff4cd880a0639d2581b71e398dd982f55a11bf0f4e6ee95bacd897e8ec34649e1c256ee6ccecb33e36c76927cc5124bc2962713ad44cbd435ae3c1143796d3037fa1d659e5dad7ebf3c8cbdb5b619113d7ce8c483":32:"ff355f10":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce175a7df7e429fcc233540e6b8524323e91f40f592ba144":"":"c34484b4857b93e309df8e1a0e1ec9a3":"ce8d8775f047b543a6cc0d9ef9bc0db5ac5d610dc3ff6e12e0ad7cd3a399ebb762331e3c1101a189b3433a7ff4cd880a0639d2581b71e398dd982f55a11bf0f4e6ee95bacd897e8ec34649e1c256ee6ccecb33e36c76927cc5124bc2962713ad44cbd435ae3c1143796d3037fa1d659e5dad7ebf3c8cbdb5b619113d7ce8c483":32:"ff355f10":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5f659ed236ba60494e9bf1ee2cb40edcf3f25a2bac2e5bc5":"":"ad49f12f202320255406c2f40e55b034":"6da62892f436dfe9790e72d26f4858ca156d1d655c9cc4336fcf282b0f3f0b201e47f799c3019109af89ef5fd48a4811980930e82cd95f86b1995d977c847bbb06ecdcc98b1aae100b23c9c2f0dcf317a1fb36f14e90e396e6c0c594bcc0dc5f3ebf86ce7ecd4b06d1c43202734d53f55751a6e6bbda982104102af240def4eb":32:"cb4d8c1d":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5f659ed236ba60494e9bf1ee2cb40edcf3f25a2bac2e5bc5":"":"ad49f12f202320255406c2f40e55b034":"6da62892f436dfe9790e72d26f4858ca156d1d655c9cc4336fcf282b0f3f0b201e47f799c3019109af89ef5fd48a4811980930e82cd95f86b1995d977c847bbb06ecdcc98b1aae100b23c9c2f0dcf317a1fb36f14e90e396e6c0c594bcc0dc5f3ebf86ce7ecd4b06d1c43202734d53f55751a6e6bbda982104102af240def4eb":32:"cb4d8c1d":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a73f318b1e298ba4ac0ab2aed74f73543b1017cccbd1b240":"":"abe33b7e8d88bd30deb96d1e90c4e951":"6de616b000047b14b6759015183dd753c61499c0e665d06a89e4fb0cd0dd3064ff8651582e901ef5d0cdf3344c29c70c3aabc2aaf83cb3f284c6fe4104906d389b027e7d9ca60d010f06ef8cd9e55db2483d06552ddbe3fc43b24c55085cd998eae3edec36673445bf626e933c15b6af08ea21cbace4720b0b68fe1a374877d5":32:"4a28ec97":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a73f318b1e298ba4ac0ab2aed74f73543b1017cccbd1b240":"":"abe33b7e8d88bd30deb96d1e90c4e951":"6de616b000047b14b6759015183dd753c61499c0e665d06a89e4fb0cd0dd3064ff8651582e901ef5d0cdf3344c29c70c3aabc2aaf83cb3f284c6fe4104906d389b027e7d9ca60d010f06ef8cd9e55db2483d06552ddbe3fc43b24c55085cd998eae3edec36673445bf626e933c15b6af08ea21cbace4720b0b68fe1a374877d5":32:"4a28ec97":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"73d5be74615bc5b627eedfb95746fb5f17cbf25b500a597f":"fc40993eb8559e6b127315c03103ce31b70fc0e07a766d9eecf2e4e8d973faa4afd3053c9ebef0282c9e3d2289d21b6c339748273fa1edf6d6ef5c8f1e1e9301b250297092d9ac4f4843125ea7299d5370f7f49c258eac2a58cc9df14c162604ba0801728994dc82cb625981130c3ca8cdb3391658d4e034691e62ece0a6e407":"eb16ed8de81efde2915a901f557fba95":"":128:"804056dca9f102c4a13a930c81d77eca":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"73d5be74615bc5b627eedfb95746fb5f17cbf25b500a597f":"fc40993eb8559e6b127315c03103ce31b70fc0e07a766d9eecf2e4e8d973faa4afd3053c9ebef0282c9e3d2289d21b6c339748273fa1edf6d6ef5c8f1e1e9301b250297092d9ac4f4843125ea7299d5370f7f49c258eac2a58cc9df14c162604ba0801728994dc82cb625981130c3ca8cdb3391658d4e034691e62ece0a6e407":"eb16ed8de81efde2915a901f557fba95":"":128:"804056dca9f102c4a13a930c81d77eca":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a249135c9f2f5a8b1af66442a4d4e101771a918ef8acee05":"c62b39b937edbdc9b644321d5d284e62eaa4154010c7a3208c1ef4706fba90223da04b2f686a28b975eff17386598ba77e212855692f384782c1f3c00be011e466e145f6f8b65c458e41409e01a019b290773992e19334ffaca544e28fc9044a5e86bcd2fa5ad2e76f2be3f014d8c387456a8fcfded3ae4d1194d0e3e53a2031":"80b6e48fe4a3b08d40c1636b25dfd2c4":"":128:"951c1c89b6d95661630d739dd9120a73":"b865f8dd64a6f51a500bcfc8cadbc9e9f5d54d2d27d815ecfe3d5731e1b230c587b46958c6187e41b52ff187a14d26aa41c5f9909a3b77859429232e5bd6c6dc22cf5590402476d033a32682e8ab8dc7ed0b089c5ab20ab9a8c5d6a3be9ea7aa56c9d3ab08de4a4a019abb447db448062f16a533d416951a8ff6f13ed5608f77":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a249135c9f2f5a8b1af66442a4d4e101771a918ef8acee05":"c62b39b937edbdc9b644321d5d284e62eaa4154010c7a3208c1ef4706fba90223da04b2f686a28b975eff17386598ba77e212855692f384782c1f3c00be011e466e145f6f8b65c458e41409e01a019b290773992e19334ffaca544e28fc9044a5e86bcd2fa5ad2e76f2be3f014d8c387456a8fcfded3ae4d1194d0e3e53a2031":"80b6e48fe4a3b08d40c1636b25dfd2c4":"":128:"951c1c89b6d95661630d739dd9120a73":"":"b865f8dd64a6f51a500bcfc8cadbc9e9f5d54d2d27d815ecfe3d5731e1b230c587b46958c6187e41b52ff187a14d26aa41c5f9909a3b77859429232e5bd6c6dc22cf5590402476d033a32682e8ab8dc7ed0b089c5ab20ab9a8c5d6a3be9ea7aa56c9d3ab08de4a4a019abb447db448062f16a533d416951a8ff6f13ed5608f77":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa832a4b37dcb3c0879a771bb8ae734f0d88b9be497797a8":"0f1105f9ec24121232b60b6ef3c3e8ca9eec1a3d7625004b857d1d77f292b6ec065d92f5bb97e0dc2fdfdf823a5db275109a9472690caea04730e4bd732c33548718e9f7658bbf3e30b8d07790cd540c5754486ed8e4d6920cefaeb1c182c4d67ebed0d205ba0bd9441a599d55e45094b380f3478bcfca9646a0d7aa18d08e52":"70835abab9f945c84ef4e97cdcf2a694":"":128:"a459be0b349f6e8392c2a86edd8a9da5":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa832a4b37dcb3c0879a771bb8ae734f0d88b9be497797a8":"0f1105f9ec24121232b60b6ef3c3e8ca9eec1a3d7625004b857d1d77f292b6ec065d92f5bb97e0dc2fdfdf823a5db275109a9472690caea04730e4bd732c33548718e9f7658bbf3e30b8d07790cd540c5754486ed8e4d6920cefaeb1c182c4d67ebed0d205ba0bd9441a599d55e45094b380f3478bcfca9646a0d7aa18d08e52":"70835abab9f945c84ef4e97cdcf2a694":"":128:"a459be0b349f6e8392c2a86edd8a9da5":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dda216287910d1f5c0a312f63c243612388bc510cb76c5ba":"d6617d583344d4fe472099d2a688297857215a3e31b47d1bf355ccfe9cf2398a3eba362c670c88f8c7162903275dfd4761d095900bd97eba72200d4045d72bd239bda156829c36b38b1ff5e4230125e5695f623e129829721e889da235bb7d4b9da07cce8c3ceb96964fd2f9dd1ff0997e1a3e253a688ceb1bfec76a7c567266":"7f770140df5b8678bc9c4b962b8c9034":"":120:"9823e3242b3f890c6a456f1837e039":"b4910277224025f58a5d0f37385b03fcd488dfef7580eb5c270c10bd7a6f6d9c7ddc2d1368d68d4e04f90e3df029ed028432a09f710be1610b2a75bd05f31bae83920573929573affd0eb03c63e0cec7a027deab792f43ee6307fd3c5078d43d5b1407ac023824d41c9437d66eeec172488f28d700aa4b54931aad7cd458456f":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dda216287910d1f5c0a312f63c243612388bc510cb76c5ba":"d6617d583344d4fe472099d2a688297857215a3e31b47d1bf355ccfe9cf2398a3eba362c670c88f8c7162903275dfd4761d095900bd97eba72200d4045d72bd239bda156829c36b38b1ff5e4230125e5695f623e129829721e889da235bb7d4b9da07cce8c3ceb96964fd2f9dd1ff0997e1a3e253a688ceb1bfec76a7c567266":"7f770140df5b8678bc9c4b962b8c9034":"":120:"9823e3242b3f890c6a456f1837e039":"":"b4910277224025f58a5d0f37385b03fcd488dfef7580eb5c270c10bd7a6f6d9c7ddc2d1368d68d4e04f90e3df029ed028432a09f710be1610b2a75bd05f31bae83920573929573affd0eb03c63e0cec7a027deab792f43ee6307fd3c5078d43d5b1407ac023824d41c9437d66eeec172488f28d700aa4b54931aad7cd458456f":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c5afa1e61d4594b1c2fa637f64f18dd557e4df3255b47f24":"5c772cdf19571cd51d71fc166d33a0b892fbca4eae36ab0ac94e6164d51acb2d4e60d4f3a19c3757a93960e7fd90b9a6cdf98bdf259b370ed6c7ef8cb96dba7e3a875e6e7fe6abc76aabad30c8743b3e47c8de5d604c748eeb16806c2e75180a96af7741904eca61769d39e943eb4c4c25f2afd68e9472043de2bb03e9edae20":"151fd3ba32f5bde72adce6291bcf63ea":"":120:"f0626cc07f2ed1a7570386a4110fc1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c5afa1e61d4594b1c2fa637f64f18dd557e4df3255b47f24":"5c772cdf19571cd51d71fc166d33a0b892fbca4eae36ab0ac94e6164d51acb2d4e60d4f3a19c3757a93960e7fd90b9a6cdf98bdf259b370ed6c7ef8cb96dba7e3a875e6e7fe6abc76aabad30c8743b3e47c8de5d604c748eeb16806c2e75180a96af7741904eca61769d39e943eb4c4c25f2afd68e9472043de2bb03e9edae20":"151fd3ba32f5bde72adce6291bcf63ea":"":120:"f0626cc07f2ed1a7570386a4110fc1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"febd4ff0fedd9f16bccb62380d59cd41b8eff1834347d8fa":"dc971c8f65ece2ea4130afd4db38fc657c085ea19c76fef50f5bd0f8dd364cc22471c2fa36be8cde78529f58a78888e9de10961760a01af005e42fc5b03e6f64962e6b18eaedea979d33d1b06e2038b1aad8993e5b20cae6cc93f3f7cf2ad658fbba633d74f21a2003dded5f5dda3b46ed7424845c11bab439fbb987f0be09f8":"743699d3759781e82a3d21c7cd7991c8":"":120:"1da347f9b6341049e63140395ad445":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"febd4ff0fedd9f16bccb62380d59cd41b8eff1834347d8fa":"dc971c8f65ece2ea4130afd4db38fc657c085ea19c76fef50f5bd0f8dd364cc22471c2fa36be8cde78529f58a78888e9de10961760a01af005e42fc5b03e6f64962e6b18eaedea979d33d1b06e2038b1aad8993e5b20cae6cc93f3f7cf2ad658fbba633d74f21a2003dded5f5dda3b46ed7424845c11bab439fbb987f0be09f8":"743699d3759781e82a3d21c7cd7991c8":"":120:"1da347f9b6341049e63140395ad445":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d280d079110c1c826cc77f490d807dd8d508eb579a160c49":"a286d19610a990d64f3accd329fc005d468465a98cfa2f3606c6d0fbeb9732879bad3ca8094322a334a43155baed02d8e13a2fbf259d80066c6f418a1a74b23e0f6238f505b2b3dc906ffcb4910ce6c878b595bb4e5f8f3e2ede912b38dbafdf4659a93b056a1a67cb0ec1dbf00d93223f3b20b3f64a157105c5445b61628abf":"85b241d516b94759c9ef975f557bccea":"":112:"bbf289df539f78c3a912b141da3a":"b9286ab91645c20de040a805020fed53c612d493a8ce9c71649ae16bd50eab6fb7f3a9180e1651d5413aa542608d7ecbf9fc7378c0bef4d439bc35434b6cf803976b8783aecc83a91e95cea72c2a26a883b710252e0c2a6baa115739a0692c85f6d34ff06234fbdc79b8c4a8ea0a7056fb48c18f73aaf5084868abb0dfaa287d":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d280d079110c1c826cc77f490d807dd8d508eb579a160c49":"a286d19610a990d64f3accd329fc005d468465a98cfa2f3606c6d0fbeb9732879bad3ca8094322a334a43155baed02d8e13a2fbf259d80066c6f418a1a74b23e0f6238f505b2b3dc906ffcb4910ce6c878b595bb4e5f8f3e2ede912b38dbafdf4659a93b056a1a67cb0ec1dbf00d93223f3b20b3f64a157105c5445b61628abf":"85b241d516b94759c9ef975f557bccea":"":112:"bbf289df539f78c3a912b141da3a":"":"b9286ab91645c20de040a805020fed53c612d493a8ce9c71649ae16bd50eab6fb7f3a9180e1651d5413aa542608d7ecbf9fc7378c0bef4d439bc35434b6cf803976b8783aecc83a91e95cea72c2a26a883b710252e0c2a6baa115739a0692c85f6d34ff06234fbdc79b8c4a8ea0a7056fb48c18f73aaf5084868abb0dfaa287d":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5e80f87fa2156c62df7be2ad16c4890de5ee5868a684fcf9":"c829073efd5c5150d2b7e2cdaeff979830d1aa983c747724ade6472c647a6e8e5033046e0359ea62fc26b4c95bccb3ac416fdf54e95815c35bf86d3fdd7856abbb618fe8fcd35a9295114926a0c9df92317d44ba1885a0c67c10b9ba24b8b2f3a464308c5578932247bf9c79d939aa3576376d2d6b4f14a378ab775531fe8abf":"9769f71c76b5b6c60462a845d2c123ad":"":112:"394b6c631a69be3ed8c90770f3d4":"f886bd92ca9d73a52e626b0c63a3daa138faaacf7809086d04f5c0c899362aa22e25d8659653b59c3103668461d9785bb425c6c1026ad9c924271cec9f27a9b341f708ca86f1d82a77aae88b25da9061b78b97276f3216720352629bd1a27ebf890da6f42d8c63d68342a93c382442d49dd4b62219504785cee89dffdc36f868":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5e80f87fa2156c62df7be2ad16c4890de5ee5868a684fcf9":"c829073efd5c5150d2b7e2cdaeff979830d1aa983c747724ade6472c647a6e8e5033046e0359ea62fc26b4c95bccb3ac416fdf54e95815c35bf86d3fdd7856abbb618fe8fcd35a9295114926a0c9df92317d44ba1885a0c67c10b9ba24b8b2f3a464308c5578932247bf9c79d939aa3576376d2d6b4f14a378ab775531fe8abf":"9769f71c76b5b6c60462a845d2c123ad":"":112:"394b6c631a69be3ed8c90770f3d4":"":"f886bd92ca9d73a52e626b0c63a3daa138faaacf7809086d04f5c0c899362aa22e25d8659653b59c3103668461d9785bb425c6c1026ad9c924271cec9f27a9b341f708ca86f1d82a77aae88b25da9061b78b97276f3216720352629bd1a27ebf890da6f42d8c63d68342a93c382442d49dd4b62219504785cee89dffdc36f868":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d8a7b99e53f5e5b197364d4516cace4b928de50e571315e3":"d0db0ac5e14bf03729125f3137d4854b4d8ce2d264f8646da17402bdad7034c0d84d7a80f107eb202aeadbfdf063904ae9793c6ae91ee8bcc0fc0674d8111f6aea6607633f92e4be3cfbb64418101db8b0a9225c83e60ffcf7a7f71f77149a13f8c5227cd92855241e11ee363062a893a76ac282fb47b523b306cd8235cd81c2":"4b12c6701534098e23e1b4659f684d6f":"":112:"729b31c65d8699c93d741caac8e3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d8a7b99e53f5e5b197364d4516cace4b928de50e571315e3":"d0db0ac5e14bf03729125f3137d4854b4d8ce2d264f8646da17402bdad7034c0d84d7a80f107eb202aeadbfdf063904ae9793c6ae91ee8bcc0fc0674d8111f6aea6607633f92e4be3cfbb64418101db8b0a9225c83e60ffcf7a7f71f77149a13f8c5227cd92855241e11ee363062a893a76ac282fb47b523b306cd8235cd81c2":"4b12c6701534098e23e1b4659f684d6f":"":112:"729b31c65d8699c93d741caac8e3":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c874b427b7181b0c90b887147c36f242827149324fd5c945":"bdd90190d587a564af022f06c8bd1a68735b6f18f04113fdcec24c6027aaf0271b183336fb713d247a173d9e095dae6e9badb0ab069712302875406f14320151fd43b90a3d6f35cc856636b1a6f98afc797cb5259567e2e9b7ce62d7b3370b5ee852722faf740edf815b3af460cdd7de90ca6ab6cd173844216c064b16ea3696":"4b8dda046a5b7c46abeeca2f2f9bcaf8":"":104:"fe1e427bcb15ce026413a0da87":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c874b427b7181b0c90b887147c36f242827149324fd5c945":"bdd90190d587a564af022f06c8bd1a68735b6f18f04113fdcec24c6027aaf0271b183336fb713d247a173d9e095dae6e9badb0ab069712302875406f14320151fd43b90a3d6f35cc856636b1a6f98afc797cb5259567e2e9b7ce62d7b3370b5ee852722faf740edf815b3af460cdd7de90ca6ab6cd173844216c064b16ea3696":"4b8dda046a5b7c46abeeca2f2f9bcaf8":"":104:"fe1e427bcb15ce026413a0da87":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"56543cd6e2ebb1e3dc136a826bfc37eddb12f7a26430a1b4":"d541dd3acec2da042e6ea26fb90ff9a3861191926423b6dc99c5110b3bf150b362017159d0b85ffea397106a0d8299ec22791cb06103cd44036eed0d6d9f953724fb003068b3c3d97da129c28d97f09e6300cbea06ba66f410ca61c3311ce334c55f077c37acb3b7129c481748f79c958bc3bbeb2d3ff445ad361ed4bbc79f0a":"927ce8a596ed28c85d9cb8e688a829e6":"":104:"3a98f471112a8a646460e8efd0":"a602d61e7a35cbe0e463119bb66fd4bb6c75d1fe0b211b9d6a0a6e9e84b0794282318f0d33ec053f2cfba1623e865681affeaf29f3da3113995e87d51a5ab4872bb05b5be8ef2b14dfc3df5a48cbc9b10853a708ee4886a7390e8e4d286740a0dd41c025c8d72eda3f73f3cec5c33d5e50b643afd7691213cccccc2c41b9bd7a":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"56543cd6e2ebb1e3dc136a826bfc37eddb12f7a26430a1b4":"d541dd3acec2da042e6ea26fb90ff9a3861191926423b6dc99c5110b3bf150b362017159d0b85ffea397106a0d8299ec22791cb06103cd44036eed0d6d9f953724fb003068b3c3d97da129c28d97f09e6300cbea06ba66f410ca61c3311ce334c55f077c37acb3b7129c481748f79c958bc3bbeb2d3ff445ad361ed4bbc79f0a":"927ce8a596ed28c85d9cb8e688a829e6":"":104:"3a98f471112a8a646460e8efd0":"":"a602d61e7a35cbe0e463119bb66fd4bb6c75d1fe0b211b9d6a0a6e9e84b0794282318f0d33ec053f2cfba1623e865681affeaf29f3da3113995e87d51a5ab4872bb05b5be8ef2b14dfc3df5a48cbc9b10853a708ee4886a7390e8e4d286740a0dd41c025c8d72eda3f73f3cec5c33d5e50b643afd7691213cccccc2c41b9bd7a":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"caaf81cd380f3af7885ef0d6196a1688c9372c5850dc5b0b":"6f269929b92c6281e00672eaec183f187b2ddecc11c9045319521d245b595ab154dd50f045a660c4d53ae07d1b7a7fd6b21da10976eb5ffcddda08c1e9075a3b4d785faa003b4dd243f379e0654740b466704d9173bc43292ae0e279a903a955ce33b299bf2842b3461f7c9a2bd311f3e87254b5413d372ec543d6efa237b95a":"508c55f1726896f5b9f0a7024fe2fad0":"":104:"3b8026268caf599ee677ecfd70":"c4a96fb08d7c2eebd17046172b98569bc2441929fc0d6876aa1f389b80c05e2ede74dc6f8c3896a2ccf518e1b375ee75e4967f7cca21fa81ee176f8fb8753381ce03b2df873897131adc62a0cbebf718c8e0bb8eeed3104535f17a9c706d178d95a1b232e9dac31f2d1bdb3a1b098f3056f0e3d18be36bd746675779c0f80a10":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"caaf81cd380f3af7885ef0d6196a1688c9372c5850dc5b0b":"6f269929b92c6281e00672eaec183f187b2ddecc11c9045319521d245b595ab154dd50f045a660c4d53ae07d1b7a7fd6b21da10976eb5ffcddda08c1e9075a3b4d785faa003b4dd243f379e0654740b466704d9173bc43292ae0e279a903a955ce33b299bf2842b3461f7c9a2bd311f3e87254b5413d372ec543d6efa237b95a":"508c55f1726896f5b9f0a7024fe2fad0":"":104:"3b8026268caf599ee677ecfd70":"":"c4a96fb08d7c2eebd17046172b98569bc2441929fc0d6876aa1f389b80c05e2ede74dc6f8c3896a2ccf518e1b375ee75e4967f7cca21fa81ee176f8fb8753381ce03b2df873897131adc62a0cbebf718c8e0bb8eeed3104535f17a9c706d178d95a1b232e9dac31f2d1bdb3a1b098f3056f0e3d18be36bd746675779c0f80a10":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2fc9d9ac8469cfc718add2b03a4d8c8dcc2eeca08e5ff7bc":"bc84d8a962a9cfd179d242788473d980d177abd0af9edccb14c6dc41535439a1768978158eeed99466574ea820dbedea68c819ffd9f9915ca8392c2e03049d7198baeca1d3491fe2345e64c1012aff03985b86c831ad516d4f5eb538109fff25383c7b0fa6b940ae19b0987d8c3e4a37ccbbd2034633c1eb0df1e9ddf3a8239e":"b2a7c0d52fc60bacc3d1a94f33087095":"":96:"0a7a36ec128d0deb60869893":"fc3cd6486dfe944f7cb035787573a554f4fe010c15bd08d6b09f73066f6f272ff84474f3845337b6e429c947d419c511c2945ffb181492c5465940cef85077e8a6a272a07e310a2f3808f11be03d96162913c613d9c3f25c3893c2bd2a58a619a9757fd16cc20c1308f2140557330379f07dbfd8979b26b075977805f1885acc":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2fc9d9ac8469cfc718add2b03a4d8c8dcc2eeca08e5ff7bc":"bc84d8a962a9cfd179d242788473d980d177abd0af9edccb14c6dc41535439a1768978158eeed99466574ea820dbedea68c819ffd9f9915ca8392c2e03049d7198baeca1d3491fe2345e64c1012aff03985b86c831ad516d4f5eb538109fff25383c7b0fa6b940ae19b0987d8c3e4a37ccbbd2034633c1eb0df1e9ddf3a8239e":"b2a7c0d52fc60bacc3d1a94f33087095":"":96:"0a7a36ec128d0deb60869893":"":"fc3cd6486dfe944f7cb035787573a554f4fe010c15bd08d6b09f73066f6f272ff84474f3845337b6e429c947d419c511c2945ffb181492c5465940cef85077e8a6a272a07e310a2f3808f11be03d96162913c613d9c3f25c3893c2bd2a58a619a9757fd16cc20c1308f2140557330379f07dbfd8979b26b075977805f1885acc":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81ff729efa4a9aa2eccc37c5f846235b53d3b93c79c709c8":"3992ad29eeb97d17bd5c0f04d8589903ee23ccb2b1adc2992a48a2eb62c2644c0df53b4afe4ace60dc5ec249c0c083473ebac3323539a575c14fa74c8381d1ac90cb501240f96d1779b287f7d8ba8775281d453aae37c803185f2711d21f5c00eb45cad37587ed196d1633f1eb0b33abef337447d03ec09c0e3f7fd32e8c69f0":"1bd17f04d1dc2e447b41665952ad9031":"":96:"01b0a815dc6da3e32851e1fb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81ff729efa4a9aa2eccc37c5f846235b53d3b93c79c709c8":"3992ad29eeb97d17bd5c0f04d8589903ee23ccb2b1adc2992a48a2eb62c2644c0df53b4afe4ace60dc5ec249c0c083473ebac3323539a575c14fa74c8381d1ac90cb501240f96d1779b287f7d8ba8775281d453aae37c803185f2711d21f5c00eb45cad37587ed196d1633f1eb0b33abef337447d03ec09c0e3f7fd32e8c69f0":"1bd17f04d1dc2e447b41665952ad9031":"":96:"01b0a815dc6da3e32851e1fb":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"068500e8d4f8d4af9035cdaa8e005a648352e8f28bdafc8a":"98e32428d9d21c4b60e690a2ce1cf70bee90df31302d1819b7d27fd577dd990f7ffe6ba5ef117caac718cc1880b4ca98f72db281c9609e189307302dc2866f20be3a545a565521368a6881e2642cba63b3cf4c8b5e5a8eabeb3e8b004618b8f77667c111e5402c5d7c66afd297c575ce5092e898d5831031d225cee668c186a1":"5ea9198b860679759357befdbb106b62":"":96:"d58752f66b2cb9bb2bc388eb":"2ef3a17fcdb154f60d5e80263b7301a8526d2de451ea49adb441aa2541986b868dab24027178f48759dbe874ae7aa7b27fb19461c6678a0ba84bbcd8567ba2412a55179e15e7c1a1392730ac392b59c51d48f8366d45b933880095800e1f36ff1ac00753f6363b0e854f494552f1f2efe028d969e6b1a8080149dd853aa6751e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"068500e8d4f8d4af9035cdaa8e005a648352e8f28bdafc8a":"98e32428d9d21c4b60e690a2ce1cf70bee90df31302d1819b7d27fd577dd990f7ffe6ba5ef117caac718cc1880b4ca98f72db281c9609e189307302dc2866f20be3a545a565521368a6881e2642cba63b3cf4c8b5e5a8eabeb3e8b004618b8f77667c111e5402c5d7c66afd297c575ce5092e898d5831031d225cee668c186a1":"5ea9198b860679759357befdbb106b62":"":96:"d58752f66b2cb9bb2bc388eb":"":"2ef3a17fcdb154f60d5e80263b7301a8526d2de451ea49adb441aa2541986b868dab24027178f48759dbe874ae7aa7b27fb19461c6678a0ba84bbcd8567ba2412a55179e15e7c1a1392730ac392b59c51d48f8366d45b933880095800e1f36ff1ac00753f6363b0e854f494552f1f2efe028d969e6b1a8080149dd853aa6751e":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7474d9b07739001b25baf6867254994e06e54c578508232f":"1cbab2b6e4274caa80987072914f667b887198f7aaf4574608b91b5274f5afc3eb05a457554ff5d346d460f92c068bc626fd301d0bb15cb3726504b3d88ecd46a15077728ddc2b698a2e8c5ea5885fc534ac227b8f103d193f1977badf4f853a0931398da01f8019a9b1ff271b3a783ff0fae6f54db425af6e3a345ba7512cbf":"3ade6c92fe2dc575c136e3fbbba5c484":"":64:"67c25240b8e39b63":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7474d9b07739001b25baf6867254994e06e54c578508232f":"1cbab2b6e4274caa80987072914f667b887198f7aaf4574608b91b5274f5afc3eb05a457554ff5d346d460f92c068bc626fd301d0bb15cb3726504b3d88ecd46a15077728ddc2b698a2e8c5ea5885fc534ac227b8f103d193f1977badf4f853a0931398da01f8019a9b1ff271b3a783ff0fae6f54db425af6e3a345ba7512cbf":"3ade6c92fe2dc575c136e3fbbba5c484":"":64:"67c25240b8e39b63":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d50d4c7d442d8a92d0489a96e897d50dda6fbe47ca7713ee":"b36b4caf1d47b0d10652824bd57b603ec1c16f4720ce7d43edde8af1b9737f61b68b882566e04da50136f27d9af4c4c57fff4c8465c8a85f0aeadc17e02709cc9ba818d9a272709e5fb65dd5612a5c5d700da399b3668a00041a51c23de616ea3f72093d85ecbfd9dd0b5d02b541fb605dcffe81e9f45a5c0c191cc0b92ac56d":"41b37c04ab8a80f5a8d9d82a3a444772":"":64:"4ee54d280829e6ef":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d50d4c7d442d8a92d0489a96e897d50dda6fbe47ca7713ee":"b36b4caf1d47b0d10652824bd57b603ec1c16f4720ce7d43edde8af1b9737f61b68b882566e04da50136f27d9af4c4c57fff4c8465c8a85f0aeadc17e02709cc9ba818d9a272709e5fb65dd5612a5c5d700da399b3668a00041a51c23de616ea3f72093d85ecbfd9dd0b5d02b541fb605dcffe81e9f45a5c0c191cc0b92ac56d":"41b37c04ab8a80f5a8d9d82a3a444772":"":64:"4ee54d280829e6ef":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"38f3ec3ec775dac76ae484d5b6ca61c695c7beafba4606ca":"49726b8cefc842a02f2d7bef099871f38257cc8ea096c9ac50baced6d940acb4e8baf932bec379a973a2c3a3bc49f60f7e9eef45eafdd15bda1dd1557f068e81226af503934eb96564d14c03f0f351974c8a54fb104fb07417fe79272e4b0c0072b9f89b770326562e4e1b14cad784a2cd1b4ae1dc43623ec451a1cae55f6f84":"9af53cf6891a749ab286f5c34238088a":"":64:"6f6f344dd43b0d20":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"38f3ec3ec775dac76ae484d5b6ca61c695c7beafba4606ca":"49726b8cefc842a02f2d7bef099871f38257cc8ea096c9ac50baced6d940acb4e8baf932bec379a973a2c3a3bc49f60f7e9eef45eafdd15bda1dd1557f068e81226af503934eb96564d14c03f0f351974c8a54fb104fb07417fe79272e4b0c0072b9f89b770326562e4e1b14cad784a2cd1b4ae1dc43623ec451a1cae55f6f84":"9af53cf6891a749ab286f5c34238088a":"":64:"6f6f344dd43b0d20":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6db4ef061513ef6690d57aef50d8011e0dd7eb4432d82374":"b7f9206995bc97311855ee832e2b40c41ab2d1a40d9263683c95b14dcc51c74d2de7b6198f9d4766c659e7619fe2693a5b188fac464ccbd5e632c5fd248cedba4028a92de12ed91415077e94cfe7a60f117052dea8916dfe0a51d92c1c03927e93012dbacd29bbbc50ce537a8173348ca904ac86df55940e9394c2895a9fe563":"623df5a0922d1e8c883debb2e0e5e0b1":"":32:"14f690d7":"a6414daa9be693e7ebb32480a783c54292e57feef4abbb3636bebbc3074bfc608ad55896fe9bd5ab875e52a43f715b98f52c07fc9fa6194ea0cd8ed78404f251639069c5a313ccfc6b94fb1657153ff48f16f6e22b3c4a0b7f88e188c90176447fe27fa7ddc2bac3d2b7edecad5f7605093ac4280b38ae6a4c040d2d4d491b42":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6db4ef061513ef6690d57aef50d8011e0dd7eb4432d82374":"b7f9206995bc97311855ee832e2b40c41ab2d1a40d9263683c95b14dcc51c74d2de7b6198f9d4766c659e7619fe2693a5b188fac464ccbd5e632c5fd248cedba4028a92de12ed91415077e94cfe7a60f117052dea8916dfe0a51d92c1c03927e93012dbacd29bbbc50ce537a8173348ca904ac86df55940e9394c2895a9fe563":"623df5a0922d1e8c883debb2e0e5e0b1":"":32:"14f690d7":"":"a6414daa9be693e7ebb32480a783c54292e57feef4abbb3636bebbc3074bfc608ad55896fe9bd5ab875e52a43f715b98f52c07fc9fa6194ea0cd8ed78404f251639069c5a313ccfc6b94fb1657153ff48f16f6e22b3c4a0b7f88e188c90176447fe27fa7ddc2bac3d2b7edecad5f7605093ac4280b38ae6a4c040d2d4d491b42":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8901bec4d3c64071d8c30c720c093221e05efed71da280bf":"7c447e700db7367260dffa42050e612eff062eb0c8a6b4fe34858800bcb8ec2f622cb5213767b5771433783e9b0fa617c9ffb7fde09845dafc16dfc0df61215c0ca1191eabf43293db6603d5285859de7ef3329f5e71201586fb0188f0840ed5b877043ca06039768c77ff8687c5cfc2fd013a0b8da48344c568fce6b39e2b19":"9265abe966cb83838d7fd9302938f49d":"":32:"6f6c38bc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8901bec4d3c64071d8c30c720c093221e05efed71da280bf":"7c447e700db7367260dffa42050e612eff062eb0c8a6b4fe34858800bcb8ec2f622cb5213767b5771433783e9b0fa617c9ffb7fde09845dafc16dfc0df61215c0ca1191eabf43293db6603d5285859de7ef3329f5e71201586fb0188f0840ed5b877043ca06039768c77ff8687c5cfc2fd013a0b8da48344c568fce6b39e2b19":"9265abe966cb83838d7fd9302938f49d":"":32:"6f6c38bc":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c57eb763f886154d3846cc333fc8ae8b3c7c9c3705f9872":"9fe7d210221773ba4a163850bab290ba9b7bf5e825760ac940c290a1b40cd6dd5b9fb6385ae1a79d35ee7b355b34275857d5b847bef4ac7a58f6f0e9de68687807009f5dc26244935d7bcafc7aed18316ce6c375192d2a7bf0bee8a632fe4f412440292e39339b94b28281622842f88048be4640486f2b21a119658c294ce32e":"9b3781165e7ff113ecd1d83d1df2366d":"":32:"62f32d4e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c57eb763f886154d3846cc333fc8ae8b3c7c9c3705f9872":"9fe7d210221773ba4a163850bab290ba9b7bf5e825760ac940c290a1b40cd6dd5b9fb6385ae1a79d35ee7b355b34275857d5b847bef4ac7a58f6f0e9de68687807009f5dc26244935d7bcafc7aed18316ce6c375192d2a7bf0bee8a632fe4f412440292e39339b94b28281622842f88048be4640486f2b21a119658c294ce32e":"9b3781165e7ff113ecd1d83d1df2366d":"":32:"62f32d4e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"307d31a594e54f673bea2f977835670aca4f3d45c9c376cc":"d7385a7bd0cb76e1e242fa547c474370bcc7cc7cf3e3fa37b00fe08a56383ca31d023d8c493f6d42e482b0f32e4f244dd100ea08eee6535e5bb8d27f76dbb7eead6ba8e031ccd0eaeb649edee92aeaf0f027d59efd4e39b1f34b15ceb8b592ee0f171b1773b308c0e747790b0e6ace90fc661caa5f942bdc197067f28fbe87d1":"0bdaa353c4904d32432926f27534c73c":"aa39f04559ccc2cae3d563dda831fb238b2582cb2c2bb28cff20cc20200724c8771b9805ef7464b8fc06c7b8060c6920fd2779fbc807c2292c8c1f88f8088755609a1732ff8c0b06606452b970c79997b985889404fd907c4668a0bcc11ba617175f4525523494a244da60b238468c863055f04db20ea489adf545d56c0a71d8":128:"2ddda790aae2ca427f5fb032c29673e6":"0b92262759897f4bd5624a891187eba6040d79322a2a5a60fb75c6c6a5badd117abe40c6d963931bbc72dca1a1bf1f5388030fe323b3b24bd408334b95908177fb59af57c5cc6b31825bc7097eec7fec19f9cdb41c0264fd22f71893bcf881c1510feb8057e64880f1ea2df8dc60bb300fd06b0a582f7be534e522caadc4a2c7":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"307d31a594e54f673bea2f977835670aca4f3d45c9c376cc":"d7385a7bd0cb76e1e242fa547c474370bcc7cc7cf3e3fa37b00fe08a56383ca31d023d8c493f6d42e482b0f32e4f244dd100ea08eee6535e5bb8d27f76dbb7eead6ba8e031ccd0eaeb649edee92aeaf0f027d59efd4e39b1f34b15ceb8b592ee0f171b1773b308c0e747790b0e6ace90fc661caa5f942bdc197067f28fbe87d1":"0bdaa353c4904d32432926f27534c73c":"aa39f04559ccc2cae3d563dda831fb238b2582cb2c2bb28cff20cc20200724c8771b9805ef7464b8fc06c7b8060c6920fd2779fbc807c2292c8c1f88f8088755609a1732ff8c0b06606452b970c79997b985889404fd907c4668a0bcc11ba617175f4525523494a244da60b238468c863055f04db20ea489adf545d56c0a71d8":128:"2ddda790aae2ca427f5fb032c29673e6":"":"0b92262759897f4bd5624a891187eba6040d79322a2a5a60fb75c6c6a5badd117abe40c6d963931bbc72dca1a1bf1f5388030fe323b3b24bd408334b95908177fb59af57c5cc6b31825bc7097eec7fec19f9cdb41c0264fd22f71893bcf881c1510feb8057e64880f1ea2df8dc60bb300fd06b0a582f7be534e522caadc4a2c7":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"23c201968def551817f20e49b09dbb5aae0033305bef68a0":"77bc8af42d1b64ee39012df5fc33c554af32bfef6d9182804dcfe370dfc4b9d059bdbc55f6ba4eacb8e3a491d96a65360d790864ba60acf1a605f6b28a6591513ea3cfd768ff47aee242a8e9bdfac399b452231bfd59d81c9b91f8dc589ad751d8f9fdad01dd00631f0cb51cb0248332f24194b577e5571ceb5c037a6d0bcfe8":"bd2952d215aed5e915d863e7f7696b3e":"23f35fac583897519b94998084ad6d77666e13595109e874625bc6ccc6d0c7816a62d64b02e670fa664e3bb52c276b1bafbeb44e5f9cc3ae028daf1d787344482f31fce5d2800020732b381a8b11c6837f428204b7ed2f4c4810067f2d4da99987b66e6525fc6b9217a8f6933f1681b7cfa857e102f616a7c84adc2f676e3a8f":128:"bb9ba3a9ac7d63e67bd78d71dc3133b3":"17d93c921009c6b0b3ecf243d08b701422983f2dcaec9c8d7604a2d5565ed96ce5cddcb183cd5882f8d61d3202c9015d207fed16a4c1195ba712428c727601135315fc504e80c253c3a2e4a5593fc6c4a206edce1fd7104e8a888385bbb396d3cdf1eb2b2aa4d0c9e45451e99550d9cfa05aafe6e7b5319c73c33fd6f98db3c5":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"23c201968def551817f20e49b09dbb5aae0033305bef68a0":"77bc8af42d1b64ee39012df5fc33c554af32bfef6d9182804dcfe370dfc4b9d059bdbc55f6ba4eacb8e3a491d96a65360d790864ba60acf1a605f6b28a6591513ea3cfd768ff47aee242a8e9bdfac399b452231bfd59d81c9b91f8dc589ad751d8f9fdad01dd00631f0cb51cb0248332f24194b577e5571ceb5c037a6d0bcfe8":"bd2952d215aed5e915d863e7f7696b3e":"23f35fac583897519b94998084ad6d77666e13595109e874625bc6ccc6d0c7816a62d64b02e670fa664e3bb52c276b1bafbeb44e5f9cc3ae028daf1d787344482f31fce5d2800020732b381a8b11c6837f428204b7ed2f4c4810067f2d4da99987b66e6525fc6b9217a8f6933f1681b7cfa857e102f616a7c84adc2f676e3a8f":128:"bb9ba3a9ac7d63e67bd78d71dc3133b3":"":"17d93c921009c6b0b3ecf243d08b701422983f2dcaec9c8d7604a2d5565ed96ce5cddcb183cd5882f8d61d3202c9015d207fed16a4c1195ba712428c727601135315fc504e80c253c3a2e4a5593fc6c4a206edce1fd7104e8a888385bbb396d3cdf1eb2b2aa4d0c9e45451e99550d9cfa05aafe6e7b5319c73c33fd6f98db3c5":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6baec0669add30acb8f678ce477a2b171f89d1f41935c491":"5712b84c4c97d75f84edd50561bc1d3f1ba451cc3b358b2403b5e528290954348cf7a235b4dc11a72ddbc503191204e98a9744d85419508c8ca76438c13305f716f1e239a6d9f6423c27217a0057aa75f6d7e2fb356e7194f271459ab5482589ea311b33e3d3845952ff4067dd2b9bcc2e8f83630b0a219e904040abd643d839":"b1472f92f552ca0d62496b8fa622c569":"5ae64edf11b4dbc7294d3d01bc9faf310dc08a92b28e664e0a7525f938d32ef033033f1de8931f39a58df0eabc8784423f0a6355efcff008cae62c1d8e5b7baefd360a5a2aa1b7068522faf8e437e6419be305ada05715bf21d73bd227531fea4bc31a6ce1662aec49f1961ee28e33ae00eb20013fd84b51cfe0d5adbdaff592":128:"29a2d607b2d2d9c96d093000b401a94f":"beb687f062ae7f5159d07609dd58d7b81c478d180bc0b4c07ae799626ff1da2be2e0d78b2a2a1f563257f161491a5ac500cd719da6379e30d0f6d0a7a33203381e058f487fc60989923afbee76e703c03abc73bb01bd262ff6f0ac931f771e9b4f2980e7d8c0a9e939fa6e1094796894f2c78f453e4abe64cb285016435ef0e8":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6baec0669add30acb8f678ce477a2b171f89d1f41935c491":"5712b84c4c97d75f84edd50561bc1d3f1ba451cc3b358b2403b5e528290954348cf7a235b4dc11a72ddbc503191204e98a9744d85419508c8ca76438c13305f716f1e239a6d9f6423c27217a0057aa75f6d7e2fb356e7194f271459ab5482589ea311b33e3d3845952ff4067dd2b9bcc2e8f83630b0a219e904040abd643d839":"b1472f92f552ca0d62496b8fa622c569":"5ae64edf11b4dbc7294d3d01bc9faf310dc08a92b28e664e0a7525f938d32ef033033f1de8931f39a58df0eabc8784423f0a6355efcff008cae62c1d8e5b7baefd360a5a2aa1b7068522faf8e437e6419be305ada05715bf21d73bd227531fea4bc31a6ce1662aec49f1961ee28e33ae00eb20013fd84b51cfe0d5adbdaff592":128:"29a2d607b2d2d9c96d093000b401a94f":"":"beb687f062ae7f5159d07609dd58d7b81c478d180bc0b4c07ae799626ff1da2be2e0d78b2a2a1f563257f161491a5ac500cd719da6379e30d0f6d0a7a33203381e058f487fc60989923afbee76e703c03abc73bb01bd262ff6f0ac931f771e9b4f2980e7d8c0a9e939fa6e1094796894f2c78f453e4abe64cb285016435ef0e8":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b882a2df81fdb9275fb05d120f32417e8ffedd07457e938":"0aae7213da279b34d6dcf2a691b2d0333112ea22de0c3c68d47cf9f9f4ed8ad4e03d4a60ec18c3a04ac9c2abb73e1023051029b5e8705bb69c4c50afc84deb0379db5077be1f663652f8bd8958271af2c1ac4a87e08cb526bab8a030652f2a29af8055d0f31e35475caee27f84c156ef8642e5bfef89192f5bde3c54279ffe06":"5c064d3418b89388fb21c61d8c74d2c5":"5bfa7113d34e00f34713cf07c386d055e889bb42d7f6c8631ffce5668e98cb19bed8820b90ecb2b35df7134f975700347e5514287cfef7ffa2b0ff48b1de0769b03dca6610995d67cb80052cb2e5914eb4ed43ef5861f4b9364314fde6ad2b82fbba7fd849dfa6e46ecc12edc8cabfff28d9bd23c2bcc8ab3661c9ba4d5fee06":120:"0943abb85adee47741540900cc833f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b882a2df81fdb9275fb05d120f32417e8ffedd07457e938":"0aae7213da279b34d6dcf2a691b2d0333112ea22de0c3c68d47cf9f9f4ed8ad4e03d4a60ec18c3a04ac9c2abb73e1023051029b5e8705bb69c4c50afc84deb0379db5077be1f663652f8bd8958271af2c1ac4a87e08cb526bab8a030652f2a29af8055d0f31e35475caee27f84c156ef8642e5bfef89192f5bde3c54279ffe06":"5c064d3418b89388fb21c61d8c74d2c5":"5bfa7113d34e00f34713cf07c386d055e889bb42d7f6c8631ffce5668e98cb19bed8820b90ecb2b35df7134f975700347e5514287cfef7ffa2b0ff48b1de0769b03dca6610995d67cb80052cb2e5914eb4ed43ef5861f4b9364314fde6ad2b82fbba7fd849dfa6e46ecc12edc8cabfff28d9bd23c2bcc8ab3661c9ba4d5fee06":120:"0943abb85adee47741540900cc833f":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51d94d21482c00bb5bc7e7e03aa017ba58f5a23494b72c2a":"3a9c69c1ed2340bfde1495658dbf4f54731a19b3922a1d535df8d0b2582f5e803b5891e8ad1aa256c923956dcda2430d0c0696bce63295fb61183e040566e459338f908d23ae51f64020c1ef3d192428f23312b285fc4111d50d1add58f4a49008a22c90d3365230e9158cd56f9d84f079bdd673555d4dc76c74b02fa9920e7d":"fb21cd763e6f25540f8ad455deaccdf0":"019d1db5569eeff83306f65d653b01064854c1be8446cd2516336667c6557e7844fc349adea64a12dc19ac7e8e40b0520a48fac64571a93d669045607085ac9fa78fed99bbf644908d7763fe5f7f503947a9fe8661b7c6aef8da101acca0aed758ca1580eeb2f26ae3bf2de06ce8827a91a694179991a993cdf814efbcc61ca5":120:"a93bd682b57e1d1bf4af97e93b8927":"7093f44703f2cbb3d12d9872b07a8cd44deb62dae48bc573b11a1ee1c9f3105223423fac3181c312a8a61757a432d92719f486c21e311b840aa63cf530710c873df27fecda0956075923f1ecc39bffb862706f48bde2de15612930fc8630d2036e9e4cfc1c69779171bd23d9e1d5de50a9e0a0de4bd82ed3efc45299980bb4cc":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51d94d21482c00bb5bc7e7e03aa017ba58f5a23494b72c2a":"3a9c69c1ed2340bfde1495658dbf4f54731a19b3922a1d535df8d0b2582f5e803b5891e8ad1aa256c923956dcda2430d0c0696bce63295fb61183e040566e459338f908d23ae51f64020c1ef3d192428f23312b285fc4111d50d1add58f4a49008a22c90d3365230e9158cd56f9d84f079bdd673555d4dc76c74b02fa9920e7d":"fb21cd763e6f25540f8ad455deaccdf0":"019d1db5569eeff83306f65d653b01064854c1be8446cd2516336667c6557e7844fc349adea64a12dc19ac7e8e40b0520a48fac64571a93d669045607085ac9fa78fed99bbf644908d7763fe5f7f503947a9fe8661b7c6aef8da101acca0aed758ca1580eeb2f26ae3bf2de06ce8827a91a694179991a993cdf814efbcc61ca5":120:"a93bd682b57e1d1bf4af97e93b8927":"":"7093f44703f2cbb3d12d9872b07a8cd44deb62dae48bc573b11a1ee1c9f3105223423fac3181c312a8a61757a432d92719f486c21e311b840aa63cf530710c873df27fecda0956075923f1ecc39bffb862706f48bde2de15612930fc8630d2036e9e4cfc1c69779171bd23d9e1d5de50a9e0a0de4bd82ed3efc45299980bb4cc":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6756470937f5d9af76f2abe6df2d0bc15ff8e39b5154071":"afae92bd56c426c095d76633701aa9bea5ce05490482c6c64ac24468c3e1af6e6030a6bb6649745b011c6729bde985b9242e22105322fbb8853dcabbd00165d0b07d7b499e0238b6513bf6351eb40635a798f7e6e2d31125dda45ffe8964596fdbff55df22d4e9025bd4f39e7c9b90e74b3ee58d6901f113900ee47a4df5afd7":"4500193711a5d817a9f48deafda39772":"92fa22dba0eee6b1de1ddd24713b1be44c7105df90e6e7a54dcbf19025e560eb4986ee080cf613898a1a69d5ab460a3b8aa2723a95ac4a4af48224b011b55fb7582ae18f6746591eab2bd33d82a8dbbae3f7877e28afef9857a623530b31d8198b2df43f903d6e48ddae0848741f9eaae7b5504c67ad13791818f3c55c9b3d1e":120:"7d9f97c97c3424c79966f5b45af090":"62258d60f0138c0405df4b2ec1e308b374603a9eace45932fdc2999e9e2261de8b1099473d1fc741c46c334023aa5d9359f7ef966240aaf7e310d874b5956fd180fb1124cbeb91cf86020c78a1a0335f5f029bd34677dd2d5076482f3b3e85808f54998f4bac8b8fa968febceec3458fb882fc0530271f144fb3e2ab8c1a6289":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6756470937f5d9af76f2abe6df2d0bc15ff8e39b5154071":"afae92bd56c426c095d76633701aa9bea5ce05490482c6c64ac24468c3e1af6e6030a6bb6649745b011c6729bde985b9242e22105322fbb8853dcabbd00165d0b07d7b499e0238b6513bf6351eb40635a798f7e6e2d31125dda45ffe8964596fdbff55df22d4e9025bd4f39e7c9b90e74b3ee58d6901f113900ee47a4df5afd7":"4500193711a5d817a9f48deafda39772":"92fa22dba0eee6b1de1ddd24713b1be44c7105df90e6e7a54dcbf19025e560eb4986ee080cf613898a1a69d5ab460a3b8aa2723a95ac4a4af48224b011b55fb7582ae18f6746591eab2bd33d82a8dbbae3f7877e28afef9857a623530b31d8198b2df43f903d6e48ddae0848741f9eaae7b5504c67ad13791818f3c55c9b3d1e":120:"7d9f97c97c3424c79966f5b45af090":"":"62258d60f0138c0405df4b2ec1e308b374603a9eace45932fdc2999e9e2261de8b1099473d1fc741c46c334023aa5d9359f7ef966240aaf7e310d874b5956fd180fb1124cbeb91cf86020c78a1a0335f5f029bd34677dd2d5076482f3b3e85808f54998f4bac8b8fa968febceec3458fb882fc0530271f144fb3e2ab8c1a6289":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30db73d46b518669c45b81bc67b93bed3d0864f7e9e8e789":"750bc1d2f91d786bb1e621192a376f552538ba8c07d50d9e10b9345f31b3e5f9d8ad7c719c03d8548a3b184b741cd06c49d7fb6fe80258d60c01c2987c337c823211cee7c1cf82077266889bc7767475e0eeabb2ef6b5a1de2089aaef77565d40a1c2c470a880c911e77a186eacca173b25970574f05c0bdcd5428b39b52af7f":"5069e2d2f82b36de8c2eb171f301135d":"ef781dce556b84188adee2b6e1d64dac2751dd8592abc6c72af7b998dfae40cbe692a4cae0b4aa2c95910e270600550fca1e83640c64efb1eb0e0a90a6fc475ae1db863a64ce9cc272f00abac8a63d48dd9f1c0a5f4586224befed05be4afae5bd92249833d565cc6b65fd8955cb8a7d7bd9f4b6a229e3881212871a52c15d1c":112:"a5100c5e9a16aedf0e1bd8604335":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30db73d46b518669c45b81bc67b93bed3d0864f7e9e8e789":"750bc1d2f91d786bb1e621192a376f552538ba8c07d50d9e10b9345f31b3e5f9d8ad7c719c03d8548a3b184b741cd06c49d7fb6fe80258d60c01c2987c337c823211cee7c1cf82077266889bc7767475e0eeabb2ef6b5a1de2089aaef77565d40a1c2c470a880c911e77a186eacca173b25970574f05c0bdcd5428b39b52af7f":"5069e2d2f82b36de8c2eb171f301135d":"ef781dce556b84188adee2b6e1d64dac2751dd8592abc6c72af7b998dfae40cbe692a4cae0b4aa2c95910e270600550fca1e83640c64efb1eb0e0a90a6fc475ae1db863a64ce9cc272f00abac8a63d48dd9f1c0a5f4586224befed05be4afae5bd92249833d565cc6b65fd8955cb8a7d7bd9f4b6a229e3881212871a52c15d1c":112:"a5100c5e9a16aedf0e1bd8604335":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"209f0478f1a62cb54c551181cbd4d24b796e95f3a06b6cb9":"66db7cc97b4a8266c0a2228e8028e38d8986e79fcbcc3caff3050fdd2de87b7ff7a6895b988b0bdb7fcc4d6e2d538dcfaad43ce2f98b6d32500f5a6e6183d84cb19157a699cdde1266d6d75a251ee1a2eb97bfe6405d50be2b17a58ba6eafaee0a023a28d568fd1c914f06041a49c79b9df9efe63d56883cbbbeaba809273d2e":"7be1768f6ffb31599eb6def7d1daa41c":"9cb49357536ebe087e1475a5387907a9e51ad1550697f13c6cc04384ec8a67dea13376bdd5e26b815c84a78f921b506b9e2086de50f849185f05ba7c3041e49e42c0673df856da109a78b8e0ce918c25836f7e781e6b16168e4e5976d27ebc83f20b7bf4beadecb9b4f17a7a0d3a3db27fc65288a754b5031a2f5a1394801e6e":112:"4d2ac05bfd4b59b15a6f70ea7cd0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"209f0478f1a62cb54c551181cbd4d24b796e95f3a06b6cb9":"66db7cc97b4a8266c0a2228e8028e38d8986e79fcbcc3caff3050fdd2de87b7ff7a6895b988b0bdb7fcc4d6e2d538dcfaad43ce2f98b6d32500f5a6e6183d84cb19157a699cdde1266d6d75a251ee1a2eb97bfe6405d50be2b17a58ba6eafaee0a023a28d568fd1c914f06041a49c79b9df9efe63d56883cbbbeaba809273d2e":"7be1768f6ffb31599eb6def7d1daa41c":"9cb49357536ebe087e1475a5387907a9e51ad1550697f13c6cc04384ec8a67dea13376bdd5e26b815c84a78f921b506b9e2086de50f849185f05ba7c3041e49e42c0673df856da109a78b8e0ce918c25836f7e781e6b16168e4e5976d27ebc83f20b7bf4beadecb9b4f17a7a0d3a3db27fc65288a754b5031a2f5a1394801e6e":112:"4d2ac05bfd4b59b15a6f70ea7cd0":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1bfa30b315e7b908263330140fa2d66ed57104784a43cc70":"8eeee9865e23fa51dbbf197fa41776b7edbdb9381a22c935299cd959a46190788ae82f4e645b0362df89bfc00241964784bc7ef70f6f97e81687d52e552a33af20ae34a3005e0a7b85d094368d707c3c4cd3ef31c0daf3ccaa1676609ed199327f4139d0c120977e6babceed28896d2cb3129630f3ee135572dc39433057e26a":"b7081a3010b524218390ba6dd460a1ec":"8c1f42b5931d69ae351fcde7d2b4136d4898a4fa8ba62d55cef721dadf19beaabf9d1900bdf2e58ee568b808684eecbf7aa3c890f65c54b967b94484be082193b2d8393007389abaa9debbb49d727a2ac16b4dab2c8f276840e9c65a47974d9b04f2e63adf38b6aad763f0d7cdb2c3d58691adde6e51e0a85093a4c4944f5bf2":112:"4da85b8ec861dd8be54787bb83f1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1bfa30b315e7b908263330140fa2d66ed57104784a43cc70":"8eeee9865e23fa51dbbf197fa41776b7edbdb9381a22c935299cd959a46190788ae82f4e645b0362df89bfc00241964784bc7ef70f6f97e81687d52e552a33af20ae34a3005e0a7b85d094368d707c3c4cd3ef31c0daf3ccaa1676609ed199327f4139d0c120977e6babceed28896d2cb3129630f3ee135572dc39433057e26a":"b7081a3010b524218390ba6dd460a1ec":"8c1f42b5931d69ae351fcde7d2b4136d4898a4fa8ba62d55cef721dadf19beaabf9d1900bdf2e58ee568b808684eecbf7aa3c890f65c54b967b94484be082193b2d8393007389abaa9debbb49d727a2ac16b4dab2c8f276840e9c65a47974d9b04f2e63adf38b6aad763f0d7cdb2c3d58691adde6e51e0a85093a4c4944f5bf2":112:"4da85b8ec861dd8be54787bb83f1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fc47156a693e59a1dea0618c41441fe669fc65dcfb7d0726":"3e4f0a586bad532a08c8863ebba01fd25014baa907e6032ee43d4a7dfc7c3171916dcdf9faee0531f27527872ae4e127b6b9aaee93f5e74d0ab23f3874aa0e291564bc97f17085dd7d5eb9a85d9f44574e5952929eda08863b64c85dd395c91b01fe5bef66e3fa8f9ee5bf62c25d80dc84fbe002ecfd218430b26f3549f734a1":"ea1935ed014883cc427983d7962d9992":"0d85b8513becfe8c91d0f6ffb65ec31f2cf406c51c0da88893c43d1327fd8ad1f4bab2d7b5e27438d643397034a72f8666bf641b6781bc90f764db387eae6720b5723d510194570ccd773e1b3bebfc333cc099d078583e8dac60d174d332925a24a45110c8d2abe8924ea677ac74db66ea789e2838efc96c78bceaa6236c0a67":104:"8781b045a509c4239b9f44624e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fc47156a693e59a1dea0618c41441fe669fc65dcfb7d0726":"3e4f0a586bad532a08c8863ebba01fd25014baa907e6032ee43d4a7dfc7c3171916dcdf9faee0531f27527872ae4e127b6b9aaee93f5e74d0ab23f3874aa0e291564bc97f17085dd7d5eb9a85d9f44574e5952929eda08863b64c85dd395c91b01fe5bef66e3fa8f9ee5bf62c25d80dc84fbe002ecfd218430b26f3549f734a1":"ea1935ed014883cc427983d7962d9992":"0d85b8513becfe8c91d0f6ffb65ec31f2cf406c51c0da88893c43d1327fd8ad1f4bab2d7b5e27438d643397034a72f8666bf641b6781bc90f764db387eae6720b5723d510194570ccd773e1b3bebfc333cc099d078583e8dac60d174d332925a24a45110c8d2abe8924ea677ac74db66ea789e2838efc96c78bceaa6236c0a67":104:"8781b045a509c4239b9f44624e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5fcd780a03ba80341081ef96b440c0e4348afde4d60c1d5":"6316f3beb32f6f3bf8f2ff6a2c160b432bafd3036d3eefa1e4ec204f24892e37dc4d75c7ce9a24b5c49fb4df901f35ef9d5955f7dc289c56cb74753f4d6b2982267d5269d12237e21202a65061849c65e90e6702dda03a35ace3a3a098d16b4bfbb85b7232404baee37776a9b51af6b3059a5f170f4ebe4ecf11061ca3c1f1f3":"ad20cce056e74ec5d0a76d6280998f15":"28f8fcf23b9c1ba40c19ffc1092632e35f234c1e8b82bcd5309d37bf849a2ce401413d1f242cf255ed597f9a93a1d6e50676997f95aa612e580d88234a86ddc404292746f0b2f5cf15abebcea6659f998ec6a1cb5a9914fee5aa1aa5d04b3c20914e45095e4141ce9c173653dd91c3ebe4ed4a9a28f3915d7b2edba34c2a58d8":104:"2ad4520ddc3b907414d934cc1d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5fcd780a03ba80341081ef96b440c0e4348afde4d60c1d5":"6316f3beb32f6f3bf8f2ff6a2c160b432bafd3036d3eefa1e4ec204f24892e37dc4d75c7ce9a24b5c49fb4df901f35ef9d5955f7dc289c56cb74753f4d6b2982267d5269d12237e21202a65061849c65e90e6702dda03a35ace3a3a098d16b4bfbb85b7232404baee37776a9b51af6b3059a5f170f4ebe4ecf11061ca3c1f1f3":"ad20cce056e74ec5d0a76d6280998f15":"28f8fcf23b9c1ba40c19ffc1092632e35f234c1e8b82bcd5309d37bf849a2ce401413d1f242cf255ed597f9a93a1d6e50676997f95aa612e580d88234a86ddc404292746f0b2f5cf15abebcea6659f998ec6a1cb5a9914fee5aa1aa5d04b3c20914e45095e4141ce9c173653dd91c3ebe4ed4a9a28f3915d7b2edba34c2a58d8":104:"2ad4520ddc3b907414d934cc1d":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4382507dddccf1385fc831da8924147563416d0656e168ec":"e5c5430b960aa35dc8540215c2772d66811270859e33dd4477904759e7e5eb2986a52a4ccc9f592e614147b5ea2ead6636a15c6426336b2995d9a31ab36d76578c3540bc6693842a4bc0491c7963ee9cda2317951cf93244bd30bcdfec69a4767004636fe7d1be7300c35e80627bab9236a075a803e9e1080b9159060c643a78":"a37687c9cd4bdc1ead4e6b8f78bee7f5":"fa9ae30509cbb6fe104c21480ae7b8ec9f12f1afb17320d77b77cdf32ce8c5a3f7f927e501118c7ccd6975b79225059cef530a4fcb0a9719f5e2d3bebe7bb6ec0855e495a31e5075eb50aa6c1227e48b03e3fdf780084ac4912eb3a5674cca9dd6ac037366b230ae631a8580d2d117942dee5d5ddbbb2233afeca53289cc4f68":104:"4221818d4be45306e205813789":"b5b36719bc4d13a5fbf37188ea814cdf3c97a430784330540325c899570e15482300bc82c5b8163074e0544c5132e3ce93bba68bd7a8d2db81d1431b424b697c1158c4d70625666d5ff99145ca34856815c905b5a0fd95806df56b9cd5b384bda3e394b409048eb1037144cc071539c02397e931da28a43cc354d584643afd4f":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4382507dddccf1385fc831da8924147563416d0656e168ec":"e5c5430b960aa35dc8540215c2772d66811270859e33dd4477904759e7e5eb2986a52a4ccc9f592e614147b5ea2ead6636a15c6426336b2995d9a31ab36d76578c3540bc6693842a4bc0491c7963ee9cda2317951cf93244bd30bcdfec69a4767004636fe7d1be7300c35e80627bab9236a075a803e9e1080b9159060c643a78":"a37687c9cd4bdc1ead4e6b8f78bee7f5":"fa9ae30509cbb6fe104c21480ae7b8ec9f12f1afb17320d77b77cdf32ce8c5a3f7f927e501118c7ccd6975b79225059cef530a4fcb0a9719f5e2d3bebe7bb6ec0855e495a31e5075eb50aa6c1227e48b03e3fdf780084ac4912eb3a5674cca9dd6ac037366b230ae631a8580d2d117942dee5d5ddbbb2233afeca53289cc4f68":104:"4221818d4be45306e205813789":"":"b5b36719bc4d13a5fbf37188ea814cdf3c97a430784330540325c899570e15482300bc82c5b8163074e0544c5132e3ce93bba68bd7a8d2db81d1431b424b697c1158c4d70625666d5ff99145ca34856815c905b5a0fd95806df56b9cd5b384bda3e394b409048eb1037144cc071539c02397e931da28a43cc354d584643afd4f":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7a66db3450dac9a1e63d2639f34c5c6a3fbfb3c8e8230199":"6463a7eb2496379bc8a5635541525926a6f9fa718e338221952118ae4cf03a85f2074b4ebaf108b9c725809be1e6309c3a444b66f12286f6ea9d80c3413706b234b26372e8f00783819314a994c9e3ecf6abdd255cbfe01b3865e1390a35dcd2853a3d99ed992e82ec67ba245f088cb090adade74bdbc8a1bad0f06cbea766a6":"21f8341529b210ade7f2c6055e13007a":"1699bc8c198ab03e22d9bc4f3682aad335c6e35f3f616bb69769a9d5a202511797e770ae0d8d8528ef7b2bb25b4294d47427b43f0580fa71d93fdef667f4f4196f84e41c0b1978796d0de74a94420fb8571bff39137fa231c572b31be9ae72338288bef5f8c992121dc918538551f346e279a9047df14ec9fc0fd399cd3bd8d8":96:"4af02b81b26104d1d31e295a":"53fe6a34d280f2c96d1ae2b2e8baf6abd67cedf7d214312f75dd4a1bec28a641dda3e71aa398726b2b0b1f515e1f4259ee97acaf17f122db9ec7814c2de6a88d36c3ac106396ad03d337c2cd2d2b9b4b7170e23a5848ca7ea129838f967dfdfe83b45ff2a9be699bfb2346115465d59f074f09e24d8fcbd9ece0018c92776c43":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7a66db3450dac9a1e63d2639f34c5c6a3fbfb3c8e8230199":"6463a7eb2496379bc8a5635541525926a6f9fa718e338221952118ae4cf03a85f2074b4ebaf108b9c725809be1e6309c3a444b66f12286f6ea9d80c3413706b234b26372e8f00783819314a994c9e3ecf6abdd255cbfe01b3865e1390a35dcd2853a3d99ed992e82ec67ba245f088cb090adade74bdbc8a1bad0f06cbea766a6":"21f8341529b210ade7f2c6055e13007a":"1699bc8c198ab03e22d9bc4f3682aad335c6e35f3f616bb69769a9d5a202511797e770ae0d8d8528ef7b2bb25b4294d47427b43f0580fa71d93fdef667f4f4196f84e41c0b1978796d0de74a94420fb8571bff39137fa231c572b31be9ae72338288bef5f8c992121dc918538551f346e279a9047df14ec9fc0fd399cd3bd8d8":96:"4af02b81b26104d1d31e295a":"":"53fe6a34d280f2c96d1ae2b2e8baf6abd67cedf7d214312f75dd4a1bec28a641dda3e71aa398726b2b0b1f515e1f4259ee97acaf17f122db9ec7814c2de6a88d36c3ac106396ad03d337c2cd2d2b9b4b7170e23a5848ca7ea129838f967dfdfe83b45ff2a9be699bfb2346115465d59f074f09e24d8fcbd9ece0018c92776c43":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1f5c818f24d201f9fb23fcca211b0545eee5c5c9b440810d":"9a7566817a06f792e96a6a2ba8e0a01f8837e2de06796e68b0782cc54ed0b04fc5e24a1ad37d5ffb035548b882d88150e89915b89f57cde2bf3c43ab9dae356927daef6bd61cc9edd5e1b7a4abea2f71313677f1b2fdf3d8d4a7e9814ea820fbc3e5c83947db961839a985a57ced7f5e4a1efffcfd17a2c806d4cdc1e79162da":"3a163067bdd90fce0406d1c198a88771":"a5e94e233d04fe0c4b6c4684b386902fe05096702237dfbe76f73befa69b6f30394cf9fe3358997942df65842748fb4f075a3dc06e147bd8d67fc4371113a4d75c70219257c650a6f38a136659e20a1cf3a119397835c304e0fb2a33aa3c3019175c86463043d5edc6992874f61e81cd0d26af8b62cf8c8626901d4f16d84236":96:"b124eea927e2a62a875494a1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1f5c818f24d201f9fb23fcca211b0545eee5c5c9b440810d":"9a7566817a06f792e96a6a2ba8e0a01f8837e2de06796e68b0782cc54ed0b04fc5e24a1ad37d5ffb035548b882d88150e89915b89f57cde2bf3c43ab9dae356927daef6bd61cc9edd5e1b7a4abea2f71313677f1b2fdf3d8d4a7e9814ea820fbc3e5c83947db961839a985a57ced7f5e4a1efffcfd17a2c806d4cdc1e79162da":"3a163067bdd90fce0406d1c198a88771":"a5e94e233d04fe0c4b6c4684b386902fe05096702237dfbe76f73befa69b6f30394cf9fe3358997942df65842748fb4f075a3dc06e147bd8d67fc4371113a4d75c70219257c650a6f38a136659e20a1cf3a119397835c304e0fb2a33aa3c3019175c86463043d5edc6992874f61e81cd0d26af8b62cf8c8626901d4f16d84236":96:"b124eea927e2a62a875494a1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a301f7edf83da63bcf37216a3a33d7613331c3210281dd7":"e09cc8543db7804870004706a26e94b457c125bd648b581a196f962f2ae8fa55d9bc66530ba5020e22d282080b4720dc9a2096a11c0fcc3d9a67cd1cf95cd7cd2417ba308c761e64be24347a14c9423447094a5c72a0043c288b35e753ba0aa748f208381249fb1c8d195a472192404b6c8172663ee4b4d4ecfa426e1fb003f2":"d73a546b0fa307633ac89506fa86138b":"f57fe548cf4a551a216ffb24a1dcf1b79c95f9abf06443fd58af042d287c2165db373c82a94172db517840f22e45e966e3ead91ce1ddad132bcb844e406e84b76a0b5b0ee23064b66a229f32a2d3b9c71103f020c4ba57fc0f0608b7114914cf2ada0c5a9bc4afbfa9ce5da320f34beb2211d569a142f53bfd262f6d149c4350":96:"f536a3b8c333b1aa520d6440":"124a327a8c22b7652886dac2c84b8997ca8a6f61c9ba9c094b5aea41eaa050a6df6cbf280259e5466071bcfa53b4ebc76c3cc4afc8c0385189a5382933aa57c89aab78dca84331e0fe8f0aab3a7857d3e13f08dcd90ec5f0684f82088ef8eb7fd67e75de43b67afc3a0beb458f5ebd61b2c779e6c539d795c667bb7dcc2b762e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a301f7edf83da63bcf37216a3a33d7613331c3210281dd7":"e09cc8543db7804870004706a26e94b457c125bd648b581a196f962f2ae8fa55d9bc66530ba5020e22d282080b4720dc9a2096a11c0fcc3d9a67cd1cf95cd7cd2417ba308c761e64be24347a14c9423447094a5c72a0043c288b35e753ba0aa748f208381249fb1c8d195a472192404b6c8172663ee4b4d4ecfa426e1fb003f2":"d73a546b0fa307633ac89506fa86138b":"f57fe548cf4a551a216ffb24a1dcf1b79c95f9abf06443fd58af042d287c2165db373c82a94172db517840f22e45e966e3ead91ce1ddad132bcb844e406e84b76a0b5b0ee23064b66a229f32a2d3b9c71103f020c4ba57fc0f0608b7114914cf2ada0c5a9bc4afbfa9ce5da320f34beb2211d569a142f53bfd262f6d149c4350":96:"f536a3b8c333b1aa520d6440":"":"124a327a8c22b7652886dac2c84b8997ca8a6f61c9ba9c094b5aea41eaa050a6df6cbf280259e5466071bcfa53b4ebc76c3cc4afc8c0385189a5382933aa57c89aab78dca84331e0fe8f0aab3a7857d3e13f08dcd90ec5f0684f82088ef8eb7fd67e75de43b67afc3a0beb458f5ebd61b2c779e6c539d795c667bb7dcc2b762e":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fd40e8226fd13cb95ba50b7cdf0f07f7ab7037cf8705ca50":"75aa7df5c3c443d48ee998064b6fd112c20d2d90c98e00d025ef08d1ad3595385be99de47fa627549b827c48bc79eb1dcaf2f1be95a45f7e55755b952aee5ae0748e68bee1b014a628f3f7dc88e0ebac1d1d00e268355f5101838ce125c57003aebc02a1c9d6ae2cd6e2592f52c0be38cef21a680ae35c909cab99dce9837aef":"3406e70cbe16b047fedaa537eb892279":"390b18d22d5ecc0b5a524ae9afac6fd948ac72d1360775a88b385aa862cce8a27f3e4b420e539bec6e8958f8c1b5416c313fa0a16f921149a2bfeae29ad2348949b29a73970e5be925ec0c35218b82a020cf21bb68c6931f86b29e01b85500a73f3ee7eb78da60078f42550da83b2e301d151d69b273a050f89e57dfc4787cbf":64:"69e06c72ead69501":"6e8d661cd320b1b39f8494836fcf738b0ab82873d3903c9ee34d74f618aea36099926b54c1589225ec9a9d48ca53657f10d9289c31f199c37c48fb9cbe1cda1e790aaeedf73871f66a3761625cca3c4f642bc4f254868f6b903e80ceeeb015569ace23376567d3712ad16d1289dc504f15d9b2751b23e7722b9e6d8e0827859f":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fd40e8226fd13cb95ba50b7cdf0f07f7ab7037cf8705ca50":"75aa7df5c3c443d48ee998064b6fd112c20d2d90c98e00d025ef08d1ad3595385be99de47fa627549b827c48bc79eb1dcaf2f1be95a45f7e55755b952aee5ae0748e68bee1b014a628f3f7dc88e0ebac1d1d00e268355f5101838ce125c57003aebc02a1c9d6ae2cd6e2592f52c0be38cef21a680ae35c909cab99dce9837aef":"3406e70cbe16b047fedaa537eb892279":"390b18d22d5ecc0b5a524ae9afac6fd948ac72d1360775a88b385aa862cce8a27f3e4b420e539bec6e8958f8c1b5416c313fa0a16f921149a2bfeae29ad2348949b29a73970e5be925ec0c35218b82a020cf21bb68c6931f86b29e01b85500a73f3ee7eb78da60078f42550da83b2e301d151d69b273a050f89e57dfc4787cbf":64:"69e06c72ead69501":"":"6e8d661cd320b1b39f8494836fcf738b0ab82873d3903c9ee34d74f618aea36099926b54c1589225ec9a9d48ca53657f10d9289c31f199c37c48fb9cbe1cda1e790aaeedf73871f66a3761625cca3c4f642bc4f254868f6b903e80ceeeb015569ace23376567d3712ad16d1289dc504f15d9b2751b23e7722b9e6d8e0827859f":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a85ab87563b809b01725764d64ba4cc6a143e2e0362f0c52":"ef43629721b50bd3656b7ae31b6e4b4ba1cf2c72ed0460ee7d9fb416631ddc597e5f9aebbcf4442b95cc46e28476a464dd87caf9c1c1d6c99d3e3e059dc23f8d2fe155ff5e59c50d640bc052c62adee3aa1295b38732e3458f379e98a8dbdfed04c22a5761792e87fa67ecbcbf3b90eb1bcd1d3f49e60132452f28afece83e90":"9f991ff16a3e3eb164a4f819c9f1821a":"df289511f78d8fa2505afc4c71ab1d7c31a8d15d1e5fcbb29d70f0e56f89c4d7b30f1b3b4745b5d2cc7af34fb4c95461372bf516ec192b400dc8fdb0ca9fe1f30f5320d0fadf20155cfcddcf09233c6f591c1c89917e38a003f56b94a1e2429d1f2b6297db790d7dce84d9fa13d2d86a0e4d100e154050b07178bee4cdf18126":64:"dc4c97fe8cc53350":"ff0e531c7344f0425d62d5fbedf4bc8d3d5cc80647e67b852c1a58ad1516d376d954cb8dda739f6a4df3cf1507e59696610bcb6b34340d6313028e00d7197845d392e73331aaf168b474a67364d8f9dab740509fabf92af75045f0afabc1b5829264d138820952bbc484d1100d058a4de32b4ece82746b2b4a85fb2993d4add8":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a85ab87563b809b01725764d64ba4cc6a143e2e0362f0c52":"ef43629721b50bd3656b7ae31b6e4b4ba1cf2c72ed0460ee7d9fb416631ddc597e5f9aebbcf4442b95cc46e28476a464dd87caf9c1c1d6c99d3e3e059dc23f8d2fe155ff5e59c50d640bc052c62adee3aa1295b38732e3458f379e98a8dbdfed04c22a5761792e87fa67ecbcbf3b90eb1bcd1d3f49e60132452f28afece83e90":"9f991ff16a3e3eb164a4f819c9f1821a":"df289511f78d8fa2505afc4c71ab1d7c31a8d15d1e5fcbb29d70f0e56f89c4d7b30f1b3b4745b5d2cc7af34fb4c95461372bf516ec192b400dc8fdb0ca9fe1f30f5320d0fadf20155cfcddcf09233c6f591c1c89917e38a003f56b94a1e2429d1f2b6297db790d7dce84d9fa13d2d86a0e4d100e154050b07178bee4cdf18126":64:"dc4c97fe8cc53350":"":"ff0e531c7344f0425d62d5fbedf4bc8d3d5cc80647e67b852c1a58ad1516d376d954cb8dda739f6a4df3cf1507e59696610bcb6b34340d6313028e00d7197845d392e73331aaf168b474a67364d8f9dab740509fabf92af75045f0afabc1b5829264d138820952bbc484d1100d058a4de32b4ece82746b2b4a85fb2993d4add8":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f4f1e03abb927ffd0b081b9dce83a56a6dd419a6313ac34f":"0e70421499bc4bcb3851afa34cdf5be374722815abdd9bcee5f332dbe890bdc1c0210ab10667e5bb924bf3c1120e25a0c074da620076f143940989e222086d1b34a1200d09aea1f810ef6de7d8520c65eef9539fde5a6422606c588fce6264e5f91f934ede6397c4b307d2d7e07a518fce577a427fa92923cbba637ae495afad":"d1e29bb51a3c4e871d15bb0cd86257e2":"ae2911cdaaad1194c5d7868b6d8f30287105df132eb0cecca14b6e23ec7ac39cc01da1c567a0219cca7b902cc2e825e30f9524a473eb6e1d4d1beff5ab4f29103b2c7522a33dd33182fa955c4f09a75196b1072a6f0340fc55a802d29c7067f05219c21857ebff89ada11f648c1f28dfbfdaab56028f05509de17e2381457ebc":64:"44f760787f7bc3c0":"2199fa5051461b67581429ab19de2ccb50b8b02e12c0e1d81a8a14929f84e09d9715b7d198e77e632de4af1c08c5041276204a7ed76646385e288e96e1a4b0b0f2b1a9df7f0892beaea3cb58d9632720158f6daa4cbbfc0ebdc56ff6a5175768ff2abd24cb7669bc3fe40f8aba7869d2dd7dac86b6ebc4e4ce261edbec88db17":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f4f1e03abb927ffd0b081b9dce83a56a6dd419a6313ac34f":"0e70421499bc4bcb3851afa34cdf5be374722815abdd9bcee5f332dbe890bdc1c0210ab10667e5bb924bf3c1120e25a0c074da620076f143940989e222086d1b34a1200d09aea1f810ef6de7d8520c65eef9539fde5a6422606c588fce6264e5f91f934ede6397c4b307d2d7e07a518fce577a427fa92923cbba637ae495afad":"d1e29bb51a3c4e871d15bb0cd86257e2":"ae2911cdaaad1194c5d7868b6d8f30287105df132eb0cecca14b6e23ec7ac39cc01da1c567a0219cca7b902cc2e825e30f9524a473eb6e1d4d1beff5ab4f29103b2c7522a33dd33182fa955c4f09a75196b1072a6f0340fc55a802d29c7067f05219c21857ebff89ada11f648c1f28dfbfdaab56028f05509de17e2381457ebc":64:"44f760787f7bc3c0":"":"2199fa5051461b67581429ab19de2ccb50b8b02e12c0e1d81a8a14929f84e09d9715b7d198e77e632de4af1c08c5041276204a7ed76646385e288e96e1a4b0b0f2b1a9df7f0892beaea3cb58d9632720158f6daa4cbbfc0ebdc56ff6a5175768ff2abd24cb7669bc3fe40f8aba7869d2dd7dac86b6ebc4e4ce261edbec88db17":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"33efe20433c6a1ad261a1fed494961749e5bf9d35809b59d":"cfbeb61be50def25f513346498f75984bfe797a8ad56be34f2461e2d673f6ce14e7479a59777267b75dadc6b9522599ebe5d7b079495a58ca187ec47796f6ee8c322278ad7451b038c938928adcff6105a8ea3780aedc45b6a3323d3ae6fbce5da4fb59ca5ec0a16a70494c3c4859672348532505e44f915e0b9b8a296ef5225":"dc94673b0c49c6d3b4611e278212c748":"919f7397a6d03836423b7cac53177fcfbe457d4aa4348646f646aae1bc5a15568cdb8c96fabef278ace248aca531110a4f4f9e8ab0c32525ad816ae3facf03175232dc84addcd6065f9cc1f513966b63fd27e91a09f1921b95d6bd8f08f1dbce073bcf827847f774514b478b9d7fb5426847dd4dee6f39b5768c1fb729b32d03":32:"c5098340":"c5e47d8c60b04df1974b68a14095d9bc8429a413d21960b15bae4fd7356bf7872e0da0a1a385ca2982d3aa3182e63ea4bb8ca01410cd4e71ddad34aa1f12c1387902b3d56634f89c619a2e6756648ab3bf90e9bc945afc9140eb935b633bae96bb067e9ee421697bcf80b14b1b88dbf13e010b472a7ca5411db36848b9c7a37f":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"33efe20433c6a1ad261a1fed494961749e5bf9d35809b59d":"cfbeb61be50def25f513346498f75984bfe797a8ad56be34f2461e2d673f6ce14e7479a59777267b75dadc6b9522599ebe5d7b079495a58ca187ec47796f6ee8c322278ad7451b038c938928adcff6105a8ea3780aedc45b6a3323d3ae6fbce5da4fb59ca5ec0a16a70494c3c4859672348532505e44f915e0b9b8a296ef5225":"dc94673b0c49c6d3b4611e278212c748":"919f7397a6d03836423b7cac53177fcfbe457d4aa4348646f646aae1bc5a15568cdb8c96fabef278ace248aca531110a4f4f9e8ab0c32525ad816ae3facf03175232dc84addcd6065f9cc1f513966b63fd27e91a09f1921b95d6bd8f08f1dbce073bcf827847f774514b478b9d7fb5426847dd4dee6f39b5768c1fb729b32d03":32:"c5098340":"":"c5e47d8c60b04df1974b68a14095d9bc8429a413d21960b15bae4fd7356bf7872e0da0a1a385ca2982d3aa3182e63ea4bb8ca01410cd4e71ddad34aa1f12c1387902b3d56634f89c619a2e6756648ab3bf90e9bc945afc9140eb935b633bae96bb067e9ee421697bcf80b14b1b88dbf13e010b472a7ca5411db36848b9c7a37f":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ed5dadefa0f6d14fedd1a3cdbab109f6660896a952ac5ab":"aef617f69724e020309ec39d9587520efda68a8e303686c3a41ef700cba05b7c6e43e95aadb1a566f61650c87845835e789eb2366941e3bfef6d9846af0e0dbc43249117ad6f299bbc40669ac383cdf79289ada6ccd8ccfe329a0dc6a38eea1a99550457102d10f641cda50c21f533b1f981663f74a0a7c657c04d9fc6696ff4":"553a14f1e1619f9d7bd07cd823961f25":"eb8ea81d3e328a1113942cd5efd0f2b5e7f088791c8fc05690a34584101c4d493628ee7d0099a2865ac194b9124c3fb924de0c4428d0a1c26ea3ad9a0bc89187a16673e3b6f7e370dfb2dc26e8a56a9cf91f9c2088c020a766efe0d0c91689743a603f2cd1e300a6a84828b3b515a4b9a06e6bb20457bf124cd6ce4ac8b83d51":32:"dc413c4c":"bc1f34991a48aabb0fea513f790f0d223e9feac4c99fa1e8427f01ab8b4b2827cfaf239342de36051a846af0306a3f82e7aed98dd0416fb078bc7f3b617b00ceb2cea4ddafc22dd022efa8303e9804510e0e888065d8427345156d823f796f74130c06db9f9934435552b4fefd051953e20ecba3a4514ac121d7d2097d597439":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ed5dadefa0f6d14fedd1a3cdbab109f6660896a952ac5ab":"aef617f69724e020309ec39d9587520efda68a8e303686c3a41ef700cba05b7c6e43e95aadb1a566f61650c87845835e789eb2366941e3bfef6d9846af0e0dbc43249117ad6f299bbc40669ac383cdf79289ada6ccd8ccfe329a0dc6a38eea1a99550457102d10f641cda50c21f533b1f981663f74a0a7c657c04d9fc6696ff4":"553a14f1e1619f9d7bd07cd823961f25":"eb8ea81d3e328a1113942cd5efd0f2b5e7f088791c8fc05690a34584101c4d493628ee7d0099a2865ac194b9124c3fb924de0c4428d0a1c26ea3ad9a0bc89187a16673e3b6f7e370dfb2dc26e8a56a9cf91f9c2088c020a766efe0d0c91689743a603f2cd1e300a6a84828b3b515a4b9a06e6bb20457bf124cd6ce4ac8b83d51":32:"dc413c4c":"":"bc1f34991a48aabb0fea513f790f0d223e9feac4c99fa1e8427f01ab8b4b2827cfaf239342de36051a846af0306a3f82e7aed98dd0416fb078bc7f3b617b00ceb2cea4ddafc22dd022efa8303e9804510e0e888065d8427345156d823f796f74130c06db9f9934435552b4fefd051953e20ecba3a4514ac121d7d2097d597439":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6d97e8bff3923a778504fb917dbc1428a1328587047697d9":"dc1a81efd51e967767f5bdd7e2e425732c1d28451f2bf5bdf3f5a6492279330594d360dd8a193e5dbde1be49bf143a35c38bcd059f762ada65c5119e097f0976891347f4d829b087bd72daa3494b344cbd3370c4459ca243bd57aeda4cb86cdd0bf274f07830cdbf5e5be4eb9b742ddffef8aa35626d2b9ea0a29d3c3d058b28":"0c28dc4cd53725091c2fb68a476c2e40":"f3932f5e82d75a1e3eba1591c17769e1a45819ccf057c31e76fa810b93678766d25905e859775c244e96bcafbc75c4a2d95e7d02868ccb2f65e49276f0b645ac8cf6e3758402304a3c25ce2de0a49f401b1acadaff8b57589b45cc79130ddc8387f41cc383e33ef38eec019152051c756198d6f782ccf56297b9fe944269a65a":32:"e6d6df7a":"39327836e9d8cfb59397adcf045a85644c52c3563290795811f26350c8bce8f55ca779cbcd15479efd8144b8a39ef611153955c70bf3a7da9d4d944c2407a0d735784fcb68de1083eebf6940ebc9cf92f9f139c01404b503ff64e61126a94e881351473507884357040fd32714b872c254349071069644e2bd642905521b944e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6d97e8bff3923a778504fb917dbc1428a1328587047697d9":"dc1a81efd51e967767f5bdd7e2e425732c1d28451f2bf5bdf3f5a6492279330594d360dd8a193e5dbde1be49bf143a35c38bcd059f762ada65c5119e097f0976891347f4d829b087bd72daa3494b344cbd3370c4459ca243bd57aeda4cb86cdd0bf274f07830cdbf5e5be4eb9b742ddffef8aa35626d2b9ea0a29d3c3d058b28":"0c28dc4cd53725091c2fb68a476c2e40":"f3932f5e82d75a1e3eba1591c17769e1a45819ccf057c31e76fa810b93678766d25905e859775c244e96bcafbc75c4a2d95e7d02868ccb2f65e49276f0b645ac8cf6e3758402304a3c25ce2de0a49f401b1acadaff8b57589b45cc79130ddc8387f41cc383e33ef38eec019152051c756198d6f782ccf56297b9fe944269a65a":32:"e6d6df7a":"":"39327836e9d8cfb59397adcf045a85644c52c3563290795811f26350c8bce8f55ca779cbcd15479efd8144b8a39ef611153955c70bf3a7da9d4d944c2407a0d735784fcb68de1083eebf6940ebc9cf92f9f139c01404b503ff64e61126a94e881351473507884357040fd32714b872c254349071069644e2bd642905521b944e":0 AES-GCM NIST Validation (AES-192,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c78e29971e90a01bb65973f81260b9344fa835751f5f142":"":"f1a23ce6e2bc9088a62c887abecd30ae":"":128:"d4d5c22f993c8c610145fcbe4e021687":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c78e29971e90a01bb65973f81260b9344fa835751f5f142":"":"f1a23ce6e2bc9088a62c887abecd30ae":"":128:"d4d5c22f993c8c610145fcbe4e021687":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8c582d5b6a40ef0e4048ec20f0263572d7cc82704e380851":"":"ef221a1c66fda17906190b7c99ab60b8":"":128:"6327dcb46ffb3d0fd8fbf3d2848a8f01":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8c582d5b6a40ef0e4048ec20f0263572d7cc82704e380851":"":"ef221a1c66fda17906190b7c99ab60b8":"":128:"6327dcb46ffb3d0fd8fbf3d2848a8f01":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a58abadd29e946e23ca9eb09af059913d5394971bda6a4f":"":"7c29b3196d44df78fa514a1967fcd3a6":"":128:"fc123944bbea6c5075a5f987aed9cf99":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3a58abadd29e946e23ca9eb09af059913d5394971bda6a4f":"":"7c29b3196d44df78fa514a1967fcd3a6":"":128:"fc123944bbea6c5075a5f987aed9cf99":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"04bdde4c35c385783715d8a883640851b860ce0e8436ec19":"":"783f9a3c36b6d0c9fd57c15105316535":"":120:"23e21a803cac5237777014686564f2":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"04bdde4c35c385783715d8a883640851b860ce0e8436ec19":"":"783f9a3c36b6d0c9fd57c15105316535":"":120:"23e21a803cac5237777014686564f2":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4ba5fba0c22fbe10c2d1690c5d99938522de9c5186721bac":"":"2acc2073089a34d4651eee39a262e8ae":"":120:"7ac742c859a02a543b50464c66dcf5":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4ba5fba0c22fbe10c2d1690c5d99938522de9c5186721bac":"":"2acc2073089a34d4651eee39a262e8ae":"":120:"7ac742c859a02a543b50464c66dcf5":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f12890b0a8819faa5a8e0e487f7f064af42fa6d5519d009f":"":"c937615675738f4b3227c799833d1e61":"":120:"88300bd65b12dcb341f1f6d8a15584":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f12890b0a8819faa5a8e0e487f7f064af42fa6d5519d009f":"":"c937615675738f4b3227c799833d1e61":"":120:"88300bd65b12dcb341f1f6d8a15584":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51878f3630298a81297f4a21514fea637faa3815d4f26fae":"":"1f939226feab012dabfc2193637d15b1":"":112:"eed5fcb7607c038b354746d91c5b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"51878f3630298a81297f4a21514fea637faa3815d4f26fae":"":"1f939226feab012dabfc2193637d15b1":"":112:"eed5fcb7607c038b354746d91c5b":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ae596e74840a600556a06f97b13b89e38f67c152f1a1b930":"":"e2076e1050070d468659885ea77e88d0":"":112:"b4586bdbd4b6b899648f2333eee0":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ae596e74840a600556a06f97b13b89e38f67c152f1a1b930":"":"e2076e1050070d468659885ea77e88d0":"":112:"b4586bdbd4b6b899648f2333eee0":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fd33b7a0efae34339ca987b5eb8075385fd1276e63cc8530":"":"2d07bb8616fc0bbb71755a1bd256e7fb":"":112:"6b60d645220cfde42d88296ac193":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fd33b7a0efae34339ca987b5eb8075385fd1276e63cc8530":"":"2d07bb8616fc0bbb71755a1bd256e7fb":"":112:"6b60d645220cfde42d88296ac193":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5685b12a6617d554c36b62af5b8ff2239cb3ffb1d2c40e14":"":"6c31194df99d08881fa5b1dd33b45a92":"":104:"69431593c376c9f8052bf10747":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5685b12a6617d554c36b62af5b8ff2239cb3ffb1d2c40e14":"":"6c31194df99d08881fa5b1dd33b45a92":"":104:"69431593c376c9f8052bf10747":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"036ae037410dae9f0741608516d03b855c9c1851df8c54a4":"":"73599275f8237f14c4a52b283c07275d":"":104:"6f7249d25c9f273434c4720275":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"036ae037410dae9f0741608516d03b855c9c1851df8c54a4":"":"73599275f8237f14c4a52b283c07275d":"":104:"6f7249d25c9f273434c4720275":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ac144f39ebd6124bad85c9c7fb4f75bff389ece2e8085d83":"":"d0871bfc3693245be478e6a257c79efb":"":104:"5a99d59631d0e12f58b7b95ccd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ac144f39ebd6124bad85c9c7fb4f75bff389ece2e8085d83":"":"d0871bfc3693245be478e6a257c79efb":"":104:"5a99d59631d0e12f58b7b95ccd":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a8a541ff11a1b8548e832d9e015edeccc94b87dadc156065":"":"c72bb300b624c27cded863eba56e7587":"":96:"ea2528e7439be2ed0a0d6b2a":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a8a541ff11a1b8548e832d9e015edeccc94b87dadc156065":"":"c72bb300b624c27cded863eba56e7587":"":96:"ea2528e7439be2ed0a0d6b2a":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30dd8f400335e9c688e13cc0b1007bd21736a6d395d152e2":"":"28899601fa95f532b030f11bbeb87011":"":96:"35625638589bb7f6ccdb0222":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30dd8f400335e9c688e13cc0b1007bd21736a6d395d152e2":"":"28899601fa95f532b030f11bbeb87011":"":96:"35625638589bb7f6ccdb0222":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cb8f672b04d706d7d4125d6830fff5d2ec069569bea050ce":"":"375d4134e8649367f4db9bdb07aa8594":"":96:"70610bf329683e15ecf8c79f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cb8f672b04d706d7d4125d6830fff5d2ec069569bea050ce":"":"375d4134e8649367f4db9bdb07aa8594":"":96:"70610bf329683e15ecf8c79f":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bf71e5b1cd6eb363ecd89a4958675a1166c10749e1ff1f44":"":"9f502fb5ac90ff5f5616dd1fa837387d":"":64:"a4b5138122e1209d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bf71e5b1cd6eb363ecd89a4958675a1166c10749e1ff1f44":"":"9f502fb5ac90ff5f5616dd1fa837387d":"":64:"a4b5138122e1209d":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5b9d1dfb2303b66848e363793bdca0e5ada8599cb2c09e24":"":"2ee96384dd29f8a4c4a6102549a026ab":"":64:"3b33a10189338c3b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5b9d1dfb2303b66848e363793bdca0e5ada8599cb2c09e24":"":"2ee96384dd29f8a4c4a6102549a026ab":"":64:"3b33a10189338c3b":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a35ae271f70ebacb28173b37b921f5abcad1712a1cf5d5db":"":"8d97f354564d8185b57f7727626850a0":"":64:"813d2f98a760130c":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a35ae271f70ebacb28173b37b921f5abcad1712a1cf5d5db":"":"8d97f354564d8185b57f7727626850a0":"":64:"813d2f98a760130c":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bdd0cb826d5d28c2ab9777d5a0c1558e7c8227c53ed4c4f":"":"daf13501a47ee73c0197d8b774eec399":"":32:"a6d108c0":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bdd0cb826d5d28c2ab9777d5a0c1558e7c8227c53ed4c4f":"":"daf13501a47ee73c0197d8b774eec399":"":32:"a6d108c0":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81b4d5ee4e1cbee1d8966fb3946409e6e64319a4b83231f5":"":"bc2f9320d6b62eea29ebc9cf7fc9f04a":"":32:"a47cdadd":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"81b4d5ee4e1cbee1d8966fb3946409e6e64319a4b83231f5":"":"bc2f9320d6b62eea29ebc9cf7fc9f04a":"":32:"a47cdadd":"":"":0 AES-GCM NIST Validation (AES-192,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5813627d26d568dfe5a0f8184cf561fe455eb98b98841fe0":"":"817199254a912880405c9729d75ed391":"":32:"d81d9b41":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5813627d26d568dfe5a0f8184cf561fe455eb98b98841fe0":"":"817199254a912880405c9729d75ed391":"":32:"d81d9b41":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94f160e2325da2330fbe4e15910d33c2014f01ace58e5b24":"":"80a1b99750980bf2be84a17032fc2721":"066fdd980cf043a732403ee5f65c82ca81e3fc858ad3cfa343014a8426fd3806770f127e2041efb42e31506ce83390ac5d76de2fe1806df24ce6e4bb894972a107ef99e51e4acfb0e325ab053f9824514b5941ab1ec598fbb57a5d18ed34d72992a19215d914e34ad1a22326e493d1ff2da7bc271c96ad3ab66d0c32bd711293":128:"dd153cfd7aa946280660c445f586fa28":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94f160e2325da2330fbe4e15910d33c2014f01ace58e5b24":"":"80a1b99750980bf2be84a17032fc2721":"066fdd980cf043a732403ee5f65c82ca81e3fc858ad3cfa343014a8426fd3806770f127e2041efb42e31506ce83390ac5d76de2fe1806df24ce6e4bb894972a107ef99e51e4acfb0e325ab053f9824514b5941ab1ec598fbb57a5d18ed34d72992a19215d914e34ad1a22326e493d1ff2da7bc271c96ad3ab66d0c32bd711293":128:"dd153cfd7aa946280660c445f586fa28":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4785846f7c0524e78f3eb137fd433e1808af64549af69183":"":"5334476a5fa3fa50dcc4b12f8ac00b51":"e70f82d1e3361ac5a5c9a087e47984d5533ba296f9b7e4a192a4ab28a833cdbbd5cece3415cf6fbb2f8055560b5c31c98d83d139954e1c03a464739f1eb5ad982c4371cf20b8984bbd97d5f40b336f5e96df3d272b95f7547be15c3bc05b3caac7d08c5eb5de8bdd246e74f6caa6bff76ea0417730ce72b911867f88fdcf73a0":128:"c59231ddaae98e0e8db6b3fe8f4d3427":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4785846f7c0524e78f3eb137fd433e1808af64549af69183":"":"5334476a5fa3fa50dcc4b12f8ac00b51":"e70f82d1e3361ac5a5c9a087e47984d5533ba296f9b7e4a192a4ab28a833cdbbd5cece3415cf6fbb2f8055560b5c31c98d83d139954e1c03a464739f1eb5ad982c4371cf20b8984bbd97d5f40b336f5e96df3d272b95f7547be15c3bc05b3caac7d08c5eb5de8bdd246e74f6caa6bff76ea0417730ce72b911867f88fdcf73a0":128:"c59231ddaae98e0e8db6b3fe8f4d3427":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"49b085fe1a8e1ae769ed09fc585d29eb24d589689992e6c5":"":"899878b0684fb865d30190821817b88c":"f789eafe3d02826b619ca4fbca7bb1919e5c6f7c33824a2f7f815dc50e329979705f7ef61e9adf7899d34f1b8840384ff62ef6d29eea38c45d12be9249aca69a02222cd744d81958c6816304ff0d81d6714a2023b3dd9d940db5c50afd89c52774d28d6afde2b6c68425b6acbe34682531a2e57e2b9a7729b3e8d96a729b15cc":128:"2c84bf7a8947ab93b10ae408243b4993":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"49b085fe1a8e1ae769ed09fc585d29eb24d589689992e6c5":"":"899878b0684fb865d30190821817b88c":"f789eafe3d02826b619ca4fbca7bb1919e5c6f7c33824a2f7f815dc50e329979705f7ef61e9adf7899d34f1b8840384ff62ef6d29eea38c45d12be9249aca69a02222cd744d81958c6816304ff0d81d6714a2023b3dd9d940db5c50afd89c52774d28d6afde2b6c68425b6acbe34682531a2e57e2b9a7729b3e8d96a729b15cc":128:"2c84bf7a8947ab93b10ae408243b4993":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"75847588760ecb6ca548747b743914c89fea367a5ccb81b6":"":"7d8a9fd254e2061c01e39eb574951924":"b03c57dfd49152401a225357f1d6e533f3a423e5cfce07b8ae7ca9daf68645e5bd67b3ca2421eac447530b27c6dc6bd9c7f1b22441b8cc8c4ac26cec2c9c0d665a35b66d779a3772d714f802d6b6272984808d0740344b6abdb63e626ef4e1ab0469da521c7908b2c95a0fd07437c0e9d4d2451ae189ad61ff19f4efb405127c":120:"e8aac14b53cdbc2028d330fc8d92a7":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"75847588760ecb6ca548747b743914c89fea367a5ccb81b6":"":"7d8a9fd254e2061c01e39eb574951924":"b03c57dfd49152401a225357f1d6e533f3a423e5cfce07b8ae7ca9daf68645e5bd67b3ca2421eac447530b27c6dc6bd9c7f1b22441b8cc8c4ac26cec2c9c0d665a35b66d779a3772d714f802d6b6272984808d0740344b6abdb63e626ef4e1ab0469da521c7908b2c95a0fd07437c0e9d4d2451ae189ad61ff19f4efb405127c":120:"e8aac14b53cdbc2028d330fc8d92a7":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e3a18a96d2e45d2f60780dc39cee7160e28cb810bf09858c":"":"26a4d659665ded39b7a1583de756d0ad":"83f8d9c58169b4c68032321197077ff5c8ee4ebb732b040748e1b55dcf53375ae86fb9646a672b5c5bc805a92c475cbb6d0ed689a58abdf2230250a7d3fbd8cfab07835fa85e738a7f74bc3e93616d844b1ec61b79f23dfea62e1815f295d43f61d7b5956103b31ca88afb0b3d37eb42cf77232dbf2258065232971c397dcbcb":120:"dc034564d4be7de243ff059b5f9160":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e3a18a96d2e45d2f60780dc39cee7160e28cb810bf09858c":"":"26a4d659665ded39b7a1583de756d0ad":"83f8d9c58169b4c68032321197077ff5c8ee4ebb732b040748e1b55dcf53375ae86fb9646a672b5c5bc805a92c475cbb6d0ed689a58abdf2230250a7d3fbd8cfab07835fa85e738a7f74bc3e93616d844b1ec61b79f23dfea62e1815f295d43f61d7b5956103b31ca88afb0b3d37eb42cf77232dbf2258065232971c397dcbcb":120:"dc034564d4be7de243ff059b5f9160":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7be3909170ea7a2ff76f9f28241d8cc48ddeafa8517c6f8c":"":"8dee7e29350c60c5bcfec89da6617d2e":"f6e9e7a7f9716760eb43060d5c80236a0f118b0f750ebd5df01fd2dba95c556ecd2e54a3f337767321abf569c8137a8e48c5b44037ba62951e9f9f709e6e4540a36d769f3945d01a20a2ed1891c415a16d95cab7ddf9bcebf18842c830067509a2a5d49a9684324c433d53824d2f8fd326b149af17f40e5bf5e49185738fba60":120:"942b52277e9dc0a30d737d00f5e597":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7be3909170ea7a2ff76f9f28241d8cc48ddeafa8517c6f8c":"":"8dee7e29350c60c5bcfec89da6617d2e":"f6e9e7a7f9716760eb43060d5c80236a0f118b0f750ebd5df01fd2dba95c556ecd2e54a3f337767321abf569c8137a8e48c5b44037ba62951e9f9f709e6e4540a36d769f3945d01a20a2ed1891c415a16d95cab7ddf9bcebf18842c830067509a2a5d49a9684324c433d53824d2f8fd326b149af17f40e5bf5e49185738fba60":120:"942b52277e9dc0a30d737d00f5e597":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1fe413bafc4753e1511b580c830449bee56e0e5b9acb852c":"":"e30829f64f3eda13bfb2ac572aceb3de":"6c772d08b4d7507e35804572fa697c646c77301954cc5c160941e49e230697ed8c23338b9f30c3ead69b1c1a2329ff025dcd3c0d0a9cc83fee4979448aa71ddb9d569bedc8c497a2a4ac3b60d087d7872f0a110bf90493ae7da03b0953734223156cd2d6c562e4a978a6dd5cdb229dd58dd4d0f50ac015f2f5e89dac4aa29a19":112:"87737873b82586bb29b406946cae":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1fe413bafc4753e1511b580c830449bee56e0e5b9acb852c":"":"e30829f64f3eda13bfb2ac572aceb3de":"6c772d08b4d7507e35804572fa697c646c77301954cc5c160941e49e230697ed8c23338b9f30c3ead69b1c1a2329ff025dcd3c0d0a9cc83fee4979448aa71ddb9d569bedc8c497a2a4ac3b60d087d7872f0a110bf90493ae7da03b0953734223156cd2d6c562e4a978a6dd5cdb229dd58dd4d0f50ac015f2f5e89dac4aa29a19":112:"87737873b82586bb29b406946cae":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b4bc4378d423931f9b320bb57df584c641406c1daa7448ad":"":"eca70e10c0358838a3f4a45c4b016ccd":"68d1c045c1604e3c3dd4f7c7543240aca8dbc5266dc18c5a8071e8b09e3700b7cf819044b2722d8db92021f42a0afb295d7b16ecf4e4704a50a527a2e72d7f53617c358e3b7be3d7fecda612ce6842fcfaa68f2d1b8a59d8b8391779f2fab99f820862c94029f444abe62367c5de0a4becc359660e4a5366f7d482bdc362b866":112:"06f95ca69c222a8985887925b15e":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b4bc4378d423931f9b320bb57df584c641406c1daa7448ad":"":"eca70e10c0358838a3f4a45c4b016ccd":"68d1c045c1604e3c3dd4f7c7543240aca8dbc5266dc18c5a8071e8b09e3700b7cf819044b2722d8db92021f42a0afb295d7b16ecf4e4704a50a527a2e72d7f53617c358e3b7be3d7fecda612ce6842fcfaa68f2d1b8a59d8b8391779f2fab99f820862c94029f444abe62367c5de0a4becc359660e4a5366f7d482bdc362b866":112:"06f95ca69c222a8985887925b15e":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cd4414ffd24e830e2dc49727efa592e430a6a75391cf111":"":"a08e32ad7d63f975de314ad2c0fa13fc":"20a271f1f4c6bea8f1584ab39a7179ec448650e2ff67a7338d1bc9fab7f73b2ce5222cd07ded947d135d9d0670dc368f0a4b50ece85cbf641877f9fe0ac6a7e6afb32fdb1b3cd35360bb80cfffc34cfb94dbcbee9ca5be98a0ca846394a135860fba57c6f0125dcb9fb8b61be681ada31a997638ee172525c03dd13171534a91":112:"c68842cafc50070799f7c8acd62a":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cd4414ffd24e830e2dc49727efa592e430a6a75391cf111":"":"a08e32ad7d63f975de314ad2c0fa13fc":"20a271f1f4c6bea8f1584ab39a7179ec448650e2ff67a7338d1bc9fab7f73b2ce5222cd07ded947d135d9d0670dc368f0a4b50ece85cbf641877f9fe0ac6a7e6afb32fdb1b3cd35360bb80cfffc34cfb94dbcbee9ca5be98a0ca846394a135860fba57c6f0125dcb9fb8b61be681ada31a997638ee172525c03dd13171534a91":112:"c68842cafc50070799f7c8acd62a":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9e0ef9ed5e6f00a721a9893e1f0d9079c5aa667a4cdd2a52":"":"5f015fd556e87ff0d0df586fb452306d":"b82986135e49e03f6f8f3ce4048ded2e63ee0c31ddc84929e022ee8561159179b3bb4403ebdafdf6beae51ac5bf4abed4dbc251433417ece3228b260eca5134e5390cba49a0b6fcbbbabb085378374e4e671d9ba265298e9864bfce256884247c36f9bddceb79b6a3e700cb3dd40088ba7bb6ab6aa11b6be261a7e5348f4a7d1":104:"ec9a79a88a164e1a6253d8312e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9e0ef9ed5e6f00a721a9893e1f0d9079c5aa667a4cdd2a52":"":"5f015fd556e87ff0d0df586fb452306d":"b82986135e49e03f6f8f3ce4048ded2e63ee0c31ddc84929e022ee8561159179b3bb4403ebdafdf6beae51ac5bf4abed4dbc251433417ece3228b260eca5134e5390cba49a0b6fcbbbabb085378374e4e671d9ba265298e9864bfce256884247c36f9bddceb79b6a3e700cb3dd40088ba7bb6ab6aa11b6be261a7e5348f4a7d1":104:"ec9a79a88a164e1a6253d8312e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bc8f15d98e089d60d4db00808700053f78b33c31652c3e4":"":"5cc0ff9bb7d5b9b2aa06f6ecf669d5bb":"24ac95a6ed2f78853f9ab20f53de47e7f662f72aea454141e2131aace7ed2daeb395bbccdbf004e23ce04ad85909f30151b6526c1ce7934726f99997bbab27055b379e5e43b80ad546e2d1655d1adad4cbe51282643bb4df086deb1b48c1bd3ac3b53c4a406be2687174028ecf7e7976e5c7a11c9a3827813ade32baef9f15ec":104:"9779b7c3ece6c23d5813e243ec":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bc8f15d98e089d60d4db00808700053f78b33c31652c3e4":"":"5cc0ff9bb7d5b9b2aa06f6ecf669d5bb":"24ac95a6ed2f78853f9ab20f53de47e7f662f72aea454141e2131aace7ed2daeb395bbccdbf004e23ce04ad85909f30151b6526c1ce7934726f99997bbab27055b379e5e43b80ad546e2d1655d1adad4cbe51282643bb4df086deb1b48c1bd3ac3b53c4a406be2687174028ecf7e7976e5c7a11c9a3827813ade32baef9f15ec":104:"9779b7c3ece6c23d5813e243ec":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"19afc43a4481f796d77561f80b5b2e1514c96c5d1d86e64c":"":"d4c06595fefd4a81bbbd4b40c2e1989d":"98fcca51352998d0126b5539e3fb9a238ac31c05954fc206d381909aee70983b6ab99d3f3efe8530a1c3cfe3b62756321b1d0771a5940055eba1e71fa64f29291aa5e5b0af0fcc8e6f5a02688d9e93417225eded791a35217822ffb346d3fa2809b65abe729448316be30cf661137d3c0e49846cb0df598d90eda545afb64a5e":104:"ca82448429106009094c21d70b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"19afc43a4481f796d77561f80b5b2e1514c96c5d1d86e64c":"":"d4c06595fefd4a81bbbd4b40c2e1989d":"98fcca51352998d0126b5539e3fb9a238ac31c05954fc206d381909aee70983b6ab99d3f3efe8530a1c3cfe3b62756321b1d0771a5940055eba1e71fa64f29291aa5e5b0af0fcc8e6f5a02688d9e93417225eded791a35217822ffb346d3fa2809b65abe729448316be30cf661137d3c0e49846cb0df598d90eda545afb64a5e":104:"ca82448429106009094c21d70b":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b4fc31dcfef6203fdb296cc928c13b7df56bfe6f32583057":"":"6308a78dc8f3c90442dc52196649c38e":"2567d80c253b080c0158102558551445d8ce4d5ddee2014a2be5cbad62e1717a0fd4d2059447c3151192951eb11a4a7b19a952f6ba261c87f10f4c9032028de3cc5a2a573a4e993a690fc8954daa3ec92743e7343e75b646c4fa9cbc3fceb4f5d59bb439c23754c4d9666fbc16c90c0cac91679b6ad1bfe5dcf6bd1a8a67c6b5":96:"9d1603799e2485a03e7b05a0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b4fc31dcfef6203fdb296cc928c13b7df56bfe6f32583057":"":"6308a78dc8f3c90442dc52196649c38e":"2567d80c253b080c0158102558551445d8ce4d5ddee2014a2be5cbad62e1717a0fd4d2059447c3151192951eb11a4a7b19a952f6ba261c87f10f4c9032028de3cc5a2a573a4e993a690fc8954daa3ec92743e7343e75b646c4fa9cbc3fceb4f5d59bb439c23754c4d9666fbc16c90c0cac91679b6ad1bfe5dcf6bd1a8a67c6b5":96:"9d1603799e2485a03e7b05a0":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c2d9412486c381440213e1588b6bb58b0da53300b9d3089":"":"727ed8846daab874d5a9918b47d016f4":"656430f0c1423018b5e2efbb1e32a5385c1a9a1779c4dbd585dea91edc39ea8752ebfc2d8064251a8a5ae71e1845f24a7e42c6371c2ecb31e2229d5f4923bffc21d4804575a84836f3cf90ec6047bb360b558a41a975ece111b5284dfa2441705a6df54fc66ca6cc1af9163ecc46902fac337d5f67f563fde8e8e7e64b8588b7":96:"05ee6ce13711535864674a5b":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c2d9412486c381440213e1588b6bb58b0da53300b9d3089":"":"727ed8846daab874d5a9918b47d016f4":"656430f0c1423018b5e2efbb1e32a5385c1a9a1779c4dbd585dea91edc39ea8752ebfc2d8064251a8a5ae71e1845f24a7e42c6371c2ecb31e2229d5f4923bffc21d4804575a84836f3cf90ec6047bb360b558a41a975ece111b5284dfa2441705a6df54fc66ca6cc1af9163ecc46902fac337d5f67f563fde8e8e7e64b8588b7":96:"05ee6ce13711535864674a5b":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"abf7a97569427225a4bd5143c716a22e62f84c145bb51511":"":"e255088cdfe8ae5c9fea86d74d2f1b7d":"b850993300f54d078f83ceb9aef7345bbf758f92365b6625c210f61dad4f2a2319f51d883a383a706392d3dfca1706eba585a6fac8bd4294c0bb2cb3f6b454d5c97819e8e5c926754840261b07ec4ef1f87cf281d75c187839689944230306e1903047915e086043990745864819ad713d34a244aa4e9d755fdb137105d7eed8":96:"0c9c17388d0610f99d0a093f":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"abf7a97569427225a4bd5143c716a22e62f84c145bb51511":"":"e255088cdfe8ae5c9fea86d74d2f1b7d":"b850993300f54d078f83ceb9aef7345bbf758f92365b6625c210f61dad4f2a2319f51d883a383a706392d3dfca1706eba585a6fac8bd4294c0bb2cb3f6b454d5c97819e8e5c926754840261b07ec4ef1f87cf281d75c187839689944230306e1903047915e086043990745864819ad713d34a244aa4e9d755fdb137105d7eed8":96:"0c9c17388d0610f99d0a093f":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"45a6df655e88bc880acff41520aafd0cc8aa8aeb8952fd06":"":"1125e1de94970c9e7be70e58e7626ef4":"fe9838a445b8edef19b3e9f33c8c0c265b3a12c97b8ec57ceb94f65ae5227177de38f1e338dccb2b24e5bd0f0eb8127f83eba0f1ddfa55198789df0cdd1d977fcb985ad9c7d51b96e749d2cf3cc7a1ec4dfcbc641a1a022d55def328e081af890a7e699f2dbafdf506389e045aa1219239d5868ba675a3925602b6fb6f6e6d37":64:"1c3bd1e0d4918e36":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"45a6df655e88bc880acff41520aafd0cc8aa8aeb8952fd06":"":"1125e1de94970c9e7be70e58e7626ef4":"fe9838a445b8edef19b3e9f33c8c0c265b3a12c97b8ec57ceb94f65ae5227177de38f1e338dccb2b24e5bd0f0eb8127f83eba0f1ddfa55198789df0cdd1d977fcb985ad9c7d51b96e749d2cf3cc7a1ec4dfcbc641a1a022d55def328e081af890a7e699f2dbafdf506389e045aa1219239d5868ba675a3925602b6fb6f6e6d37":64:"1c3bd1e0d4918e36":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"279f4f2ab4b70778fdb9ca7800cd20e323601d7aa2c75366":"":"0f7b402560735cf03d5da58de5b6c685":"7dd9a8c848bbcf5127161c8a419a436a0dad559f7c1613cdf41594e177016acb1ccf44be852185c42e7120902a42efe83855995ab52cf5c190d499fcfd698c671fd72949dc3ea7ddb874e586a3aa455a021cec7b5f8608462ca66f926aba76e60a5846d4eb204155cd3c1328da51ba35c3007b8bb394f34e3a8b81ddd2ea1115":64:"dab612351f75e2cb":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"279f4f2ab4b70778fdb9ca7800cd20e323601d7aa2c75366":"":"0f7b402560735cf03d5da58de5b6c685":"7dd9a8c848bbcf5127161c8a419a436a0dad559f7c1613cdf41594e177016acb1ccf44be852185c42e7120902a42efe83855995ab52cf5c190d499fcfd698c671fd72949dc3ea7ddb874e586a3aa455a021cec7b5f8608462ca66f926aba76e60a5846d4eb204155cd3c1328da51ba35c3007b8bb394f34e3a8b81ddd2ea1115":64:"dab612351f75e2cb":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6716ab937755684af7403e6fba5452c1b11568a9047bb50f":"":"2fd5a446dd564619ef75b6e00905ffe0":"20d261d3192996c21da69e979c26f5f937e6ea4cb7b05c6ef556ce4d86ca0fe85ec2425d274c43b5212fe9d27bb48b04e887461a9f45f524059b87eaea2e287a8d4537f338b0212012a9d4b6610e8c97dd554e0b3c3133e05c14d0ddab3524c93fd527e223b1996b4cff0a4a7438f1d54890bf573cd803941b69e5fc6212c5d2":64:"f1d743b7e1b73af5":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6716ab937755684af7403e6fba5452c1b11568a9047bb50f":"":"2fd5a446dd564619ef75b6e00905ffe0":"20d261d3192996c21da69e979c26f5f937e6ea4cb7b05c6ef556ce4d86ca0fe85ec2425d274c43b5212fe9d27bb48b04e887461a9f45f524059b87eaea2e287a8d4537f338b0212012a9d4b6610e8c97dd554e0b3c3133e05c14d0ddab3524c93fd527e223b1996b4cff0a4a7438f1d54890bf573cd803941b69e5fc6212c5d2":64:"f1d743b7e1b73af5":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7dc94b5bbd6315ad8d2b67f0c683d10cf456f822a3ebb024":"":"6f3eedeb57dcf12bfb3cd80849893c90":"ee1ff367f4b23c156e3dccff84ae4bf2b8ecec1fb5ffd25ccaa93b6c6834389bd79655bd4bac75238eb0f65d3603ecc57c8774798309e85b6677e78ed2077b712cf28795d0dc8fee994f97373a82338ef67c62378136a79a990ecbcd6367445e805efa98f9168826e57cb8dd7e7b1d5c89ad98358646fa56dd2a71c40e0275a1":32:"4dc74971":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7dc94b5bbd6315ad8d2b67f0c683d10cf456f822a3ebb024":"":"6f3eedeb57dcf12bfb3cd80849893c90":"ee1ff367f4b23c156e3dccff84ae4bf2b8ecec1fb5ffd25ccaa93b6c6834389bd79655bd4bac75238eb0f65d3603ecc57c8774798309e85b6677e78ed2077b712cf28795d0dc8fee994f97373a82338ef67c62378136a79a990ecbcd6367445e805efa98f9168826e57cb8dd7e7b1d5c89ad98358646fa56dd2a71c40e0275a1":32:"4dc74971":"":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bbe223e253bf272599e28af6861013ecd0c88710947ed41":"":"4fbf09ffaffb600f0de38fb12315cab5":"5388146f6479f7b3b280f45655a95b847ee27c734fb2fd91f6c009b1ab1810c772c7435d3221069f9490d251b76e740147906ac1db1c209c175b21aa10881c44fb307d4d2900aa3b1d56fb0edb9f2a58505653a17fee350e12755b9656bc65c78c1593d5cb7178e29f82209caf53e60fddf725f6957cc9718bf410c4a0229ed4":32:"fb845ab7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bbe223e253bf272599e28af6861013ecd0c88710947ed41":"":"4fbf09ffaffb600f0de38fb12315cab5":"5388146f6479f7b3b280f45655a95b847ee27c734fb2fd91f6c009b1ab1810c772c7435d3221069f9490d251b76e740147906ac1db1c209c175b21aa10881c44fb307d4d2900aa3b1d56fb0edb9f2a58505653a17fee350e12755b9656bc65c78c1593d5cb7178e29f82209caf53e60fddf725f6957cc9718bf410c4a0229ed4":32:"fb845ab7":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"461877813acfe6e9979eab729b52e3d192b3236758bb6563":"":"6985cf77b75a47a3978dd6412d59200b":"385551854a89ab37063ba0ed911501b3d632153c5c2992e154c0a334bc36620476f11495437b842409e0954f7352cbf288d158bdbbaf72621ea2ce75b708bc276f796c5aa7fd0071e522c5f175a9e7787deef79f6362101aa3607b4588f2e1df7127f617c6073593a1c792b959e201e4a7a43ea8b1c3af026376439ef629266c":32:"c840d994":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"461877813acfe6e9979eab729b52e3d192b3236758bb6563":"":"6985cf77b75a47a3978dd6412d59200b":"385551854a89ab37063ba0ed911501b3d632153c5c2992e154c0a334bc36620476f11495437b842409e0954f7352cbf288d158bdbbaf72621ea2ce75b708bc276f796c5aa7fd0071e522c5f175a9e7787deef79f6362101aa3607b4588f2e1df7127f617c6073593a1c792b959e201e4a7a43ea8b1c3af026376439ef629266c":32:"c840d994":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"09770f9114120a2c1c3cc416fe0eb8699e07141158a5bdff":"875e2e5b5c02e0a33e71b678aa29c15ce18ec259cf4b41874893ed3112daa56ff2a7475681b8b3d9028ef184d30658e881c908f3588f69899962074db4ddfc0597f8debb66c8388a1bccf0ffe2cf9f078dc1c93f8191f920754442ad4a325985c62de1a57a25de4e9ed5c2fd0f2c8af33f3b140bac12bf60fdb33e0ec557955b":"cff291d2364fc06a3a89e867b0e67e56":"":128:"81f1eb568d0af29680518df7378ba3e8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"09770f9114120a2c1c3cc416fe0eb8699e07141158a5bdff":"875e2e5b5c02e0a33e71b678aa29c15ce18ec259cf4b41874893ed3112daa56ff2a7475681b8b3d9028ef184d30658e881c908f3588f69899962074db4ddfc0597f8debb66c8388a1bccf0ffe2cf9f078dc1c93f8191f920754442ad4a325985c62de1a57a25de4e9ed5c2fd0f2c8af33f3b140bac12bf60fdb33e0ec557955b":"cff291d2364fc06a3a89e867b0e67e56":"":128:"81f1eb568d0af29680518df7378ba3e8":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4fbf1c785c087ad06b43d4163cf9b9396deffd3712856379":"96a690e5319c94d94923988025307e543f16fd970aec24524cf9808dc62b093359287251503f4231bf52cd1a16a80bfa82d8f585d96855dc1932f4919a92da2618d6448fc18a234f9acb386ab4ab4a9e38ea341e7c54faceff38c162d74e7fabbca13aadb71e9c8ae6072e7bef4073cf08aa7faaa6d639f98d15bad4ed183ced":"1c8f41424acaf009996ceaa815b24ad4":"":128:"9f3c0349c5a4a740a82d6d63bf00fb17":"6100b091e52366fb422251d9b68974b6c666a62a8bb77a1ffd7c7d1ae586a6ee763b84dc11aace02a25af91d194b70b3265ec46872fded54275b7ddb26ee1f20c857328f46a694fb1dce68bcaecbd587ece5b505d658d57d50333e30b639eea1f6537b37c175f62497c6c84e3cfddae214285d2d68d90dd5cd8ce2273d25c8ca":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4fbf1c785c087ad06b43d4163cf9b9396deffd3712856379":"96a690e5319c94d94923988025307e543f16fd970aec24524cf9808dc62b093359287251503f4231bf52cd1a16a80bfa82d8f585d96855dc1932f4919a92da2618d6448fc18a234f9acb386ab4ab4a9e38ea341e7c54faceff38c162d74e7fabbca13aadb71e9c8ae6072e7bef4073cf08aa7faaa6d639f98d15bad4ed183ced":"1c8f41424acaf009996ceaa815b24ad4":"":128:"9f3c0349c5a4a740a82d6d63bf00fb17":"":"6100b091e52366fb422251d9b68974b6c666a62a8bb77a1ffd7c7d1ae586a6ee763b84dc11aace02a25af91d194b70b3265ec46872fded54275b7ddb26ee1f20c857328f46a694fb1dce68bcaecbd587ece5b505d658d57d50333e30b639eea1f6537b37c175f62497c6c84e3cfddae214285d2d68d90dd5cd8ce2273d25c8ca":0 AES-GCM NIST Validation (AES-192,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e0ce4fb4fe4bb2fdf97b23084ff5671b9b899624184acef":"df89974b1534f0ba262bbea5efe39d8b72820cc8a720cc99520fedbf667515c3f6d8c3e25c72c48c1cff042171df58421741aacb2a49f23167257be7d7004d56b14901b2075eaca85946e9fbf1bbf4ae98227efc62bf255a25dd0402d37c67ba553531c699dd89ff797e7a5b5b9a9aa51e73ca2dacfda0f814152aa8ed8c79f9":"a950ab0dd84115e3829ab0ad3bbb1193":"":128:"25cfde73e7a29115828dfe1617f8b53e":"847b54e176ccc83081cb966efc4b4a3bf7809ce0b4885009f620f61fafcaa78feee91a835ae6c1a942571811108b1e81b4c4ddac46aaff599c14988c9a1fb9f387ab7f1357b581568b7b34e167ac2c8c2b2b8a4df3fd7ad8947a363c1c0cb782ec54b1901e928821cf319669dd77eb37b15c67f13ad787ff74312812731ca3e6":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e0ce4fb4fe4bb2fdf97b23084ff5671b9b899624184acef":"df89974b1534f0ba262bbea5efe39d8b72820cc8a720cc99520fedbf667515c3f6d8c3e25c72c48c1cff042171df58421741aacb2a49f23167257be7d7004d56b14901b2075eaca85946e9fbf1bbf4ae98227efc62bf255a25dd0402d37c67ba553531c699dd89ff797e7a5b5b9a9aa51e73ca2dacfda0f814152aa8ed8c79f9":"a950ab0dd84115e3829ab0ad3bbb1193":"":128:"25cfde73e7a29115828dfe1617f8b53e":"":"847b54e176ccc83081cb966efc4b4a3bf7809ce0b4885009f620f61fafcaa78feee91a835ae6c1a942571811108b1e81b4c4ddac46aaff599c14988c9a1fb9f387ab7f1357b581568b7b34e167ac2c8c2b2b8a4df3fd7ad8947a363c1c0cb782ec54b1901e928821cf319669dd77eb37b15c67f13ad787ff74312812731ca3e6":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6be3c66b20e5e66ababbfba1b38e5a716eafce23a1767b69":"de1cd978354a499415176f260021abe0a8c5bc34d166f53d20e02e413e1377ce4ef5d7f58337c62251a3b4ddea0dea23c40e5de037fd5dd8a558eb53bffa4e8ce94899afa8284afab503c1a485999a154d23777f9d8a031b7ad5c6d23d6abbe3b775c77876ad50f6bed14ac0b2b88fb19c438e4b7eb03f7d4d3fcca90dd01260":"3a2acf69bba19f5d1d1947af2cfda781":"":120:"f826d212f7c1212fb8a8bf23996826":"fd1f7b56e5664cf4c91e58f7c50f6c5e98e42ca2e4adcc00348cee6f662b382ad4022da54a47d8faeb9b76a24dfc4f493c27fc0bc421a4648fad7b14b0df95d8752013feb033b1fd971daa2c9a5df898bece6a3b8fa078dd130071df20a68cd0f394be25dcbb3e85bdfa0df4797fa6f01f5f0da7a6e86320207ddb5b3be53ae0":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6be3c66b20e5e66ababbfba1b38e5a716eafce23a1767b69":"de1cd978354a499415176f260021abe0a8c5bc34d166f53d20e02e413e1377ce4ef5d7f58337c62251a3b4ddea0dea23c40e5de037fd5dd8a558eb53bffa4e8ce94899afa8284afab503c1a485999a154d23777f9d8a031b7ad5c6d23d6abbe3b775c77876ad50f6bed14ac0b2b88fb19c438e4b7eb03f7d4d3fcca90dd01260":"3a2acf69bba19f5d1d1947af2cfda781":"":120:"f826d212f7c1212fb8a8bf23996826":"":"fd1f7b56e5664cf4c91e58f7c50f6c5e98e42ca2e4adcc00348cee6f662b382ad4022da54a47d8faeb9b76a24dfc4f493c27fc0bc421a4648fad7b14b0df95d8752013feb033b1fd971daa2c9a5df898bece6a3b8fa078dd130071df20a68cd0f394be25dcbb3e85bdfa0df4797fa6f01f5f0da7a6e86320207ddb5b3be53ae0":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d16abb9f5b38d7f5abba9dc36995ce6ce928ed822a07b7c4":"e72f29b1fc1dbfc2d93a0f3b79ea4b9806ce9b2c4d490ac5c0c3c793df9dc7df5471e834b84d18afa5a7516f9a6a813a9b65ae2f083a854730547e28a1f60fe97d8dba1d2d433e11847b9bffd8873ec634e64365530c905dd6f274e45c9795ac127a6f356f63cc6c116c5dd8c628e7e17e1fadc58f8452bf21f53c4133198118":"3cd95429c6de1d327b9eb3c45424a87c":"":120:"13521236f190f78e75c0897c5fb237":"cd8bb97c28df092b6783ef653fd26f2bdc27c442bab0a4c7bee2789f389dcd1b280c0231672721bfbbc939a0449557678ec61ba0afb2e5817e6f7d94387f84ecafbfa1216d65e7f5025f47b0d2905cff7c99adf8306a3d9850c5908be05f87cb1d36a4837dba428aac97d7fbc18e3778f8d81a319259504c87fc94bd0766ed93":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d16abb9f5b38d7f5abba9dc36995ce6ce928ed822a07b7c4":"e72f29b1fc1dbfc2d93a0f3b79ea4b9806ce9b2c4d490ac5c0c3c793df9dc7df5471e834b84d18afa5a7516f9a6a813a9b65ae2f083a854730547e28a1f60fe97d8dba1d2d433e11847b9bffd8873ec634e64365530c905dd6f274e45c9795ac127a6f356f63cc6c116c5dd8c628e7e17e1fadc58f8452bf21f53c4133198118":"3cd95429c6de1d327b9eb3c45424a87c":"":120:"13521236f190f78e75c0897c5fb237":"":"cd8bb97c28df092b6783ef653fd26f2bdc27c442bab0a4c7bee2789f389dcd1b280c0231672721bfbbc939a0449557678ec61ba0afb2e5817e6f7d94387f84ecafbfa1216d65e7f5025f47b0d2905cff7c99adf8306a3d9850c5908be05f87cb1d36a4837dba428aac97d7fbc18e3778f8d81a319259504c87fc94bd0766ed93":0 AES-GCM NIST Validation (AES-192,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0bc344b1a4078807e5f53a6e7e1e36fa83108473ae2fb4c2":"8bd73f94c71e3765bc7d17fdc90a9ba6aff9648b46300e4048985fbbd7c60c39c3766f7c524780bfc2296dc11e1132134921760a373104edc376eab6e91e9a60a5c4a5972935df12eadae074722bdc0147c3caf6a62fd449ef37d76b65f6d210283c94ac524cf13186e444d80a70b01e4373cc0462546f1caee6b49e738a742c":"bd505fcba464e6e2c58fdf29f5695fb9":"":120:"8510fff71bb879f56ea2fe43f6ff50":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0bc344b1a4078807e5f53a6e7e1e36fa83108473ae2fb4c2":"8bd73f94c71e3765bc7d17fdc90a9ba6aff9648b46300e4048985fbbd7c60c39c3766f7c524780bfc2296dc11e1132134921760a373104edc376eab6e91e9a60a5c4a5972935df12eadae074722bdc0147c3caf6a62fd449ef37d76b65f6d210283c94ac524cf13186e444d80a70b01e4373cc0462546f1caee6b49e738a742c":"bd505fcba464e6e2c58fdf29f5695fb9":"":120:"8510fff71bb879f56ea2fe43f6ff50":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c8097398fc21f93eea6a95aa93a3231096817b65520bc549":"80b0abbaebbd537a0810ed75cd172d29d50f5982e4d01f8664ddb2dfda8f57fa0ed87e64a779a1d7f5e568b6acfdc739572a7176752307b430fb1fa1c3c2c346477cebe7d01b16745ca6c8929a7f446c03ad9a9e8a5a935de78ca6c701e8c1c5e6d2550c42949cf5342fb5ef4c6ab9bb02ace8388b16edf72a1237e5d1d0e820":"776248381941e16908f52d19207881f5":"":112:"7fc4388b2f8eab0f0c2d6a08527e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c8097398fc21f93eea6a95aa93a3231096817b65520bc549":"80b0abbaebbd537a0810ed75cd172d29d50f5982e4d01f8664ddb2dfda8f57fa0ed87e64a779a1d7f5e568b6acfdc739572a7176752307b430fb1fa1c3c2c346477cebe7d01b16745ca6c8929a7f446c03ad9a9e8a5a935de78ca6c701e8c1c5e6d2550c42949cf5342fb5ef4c6ab9bb02ace8388b16edf72a1237e5d1d0e820":"776248381941e16908f52d19207881f5":"":112:"7fc4388b2f8eab0f0c2d6a08527e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"76d4bb5694faaf344db83bc6d6c47d56bb6ab52700826f2d":"9e31fda6a171f0d4a5f2af2c4f827b1312d9dda5d78fa329b8f1b6373b9b29be358601e5bb0d0c615aef4b9e441c811219f1f2ff2d0ab23e0cd829a88b5b615ee72e5e3ea604fa26cc6438ec4c30e90f7348e9116adf8e8efb7498320d2da16679fa546b1aa9afc7720b074c4e48e06862d41428c9e71a4772c2e195a6f36978":"603977845d82faccb401817ecce6e2fe":"":112:"c955a3bc316841be07e406d289c8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"76d4bb5694faaf344db83bc6d6c47d56bb6ab52700826f2d":"9e31fda6a171f0d4a5f2af2c4f827b1312d9dda5d78fa329b8f1b6373b9b29be358601e5bb0d0c615aef4b9e441c811219f1f2ff2d0ab23e0cd829a88b5b615ee72e5e3ea604fa26cc6438ec4c30e90f7348e9116adf8e8efb7498320d2da16679fa546b1aa9afc7720b074c4e48e06862d41428c9e71a4772c2e195a6f36978":"603977845d82faccb401817ecce6e2fe":"":112:"c955a3bc316841be07e406d289c8":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a3e5020695587984074d78d9c98b8e1a5719e5f88372740e":"c0bfe3b2dc4dad17ec5a7662d86847fb67e582cc0baf469bc9baa7a075d48a8b97521a1072c2798bfbdae5ca3752eda1cb96fe5cf24af989eb77a2948aae3d8b70d83d93f84c49347f788480f34051621c358c03cf8159a70fc72cb8bc02876234ffe76b181da8b22b8796c87b0904da1af46de519c20d8d1b1dc7cc24e39ba5":"4cd56de54e5140a587be7dfd02d3a39e":"":112:"1a29527a41330259f918d99d7509":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a3e5020695587984074d78d9c98b8e1a5719e5f88372740e":"c0bfe3b2dc4dad17ec5a7662d86847fb67e582cc0baf469bc9baa7a075d48a8b97521a1072c2798bfbdae5ca3752eda1cb96fe5cf24af989eb77a2948aae3d8b70d83d93f84c49347f788480f34051621c358c03cf8159a70fc72cb8bc02876234ffe76b181da8b22b8796c87b0904da1af46de519c20d8d1b1dc7cc24e39ba5":"4cd56de54e5140a587be7dfd02d3a39e":"":112:"1a29527a41330259f918d99d7509":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"afe986ead799727063958e2ce13ca846f76c51605439f839":"7c1b354a5bb214bd95147e32d81e658705089c38035d0ea423eb1a5c82f97443c6903d2cf1ba7a007eec7c8ff98b8f82b073d9636a79bd47c7f2f639a8eb4e92076f9ed615766f43ac3a4f1687301ed7d507766605e0e332880ae740ab72e861a2cb6dce1df1ff8be1873d25845ee7c665e712c5bbe029a1788634bce122836c":"f85a95ed10b69623162ab68d1098de94":"":104:"3cf1cdb4a4fdc48da78a8b4e81":"a7f252ad7983e7083260598051bffd83f40f4d4a8b580cc2388d720a0979dde71549ddcb86b0a62c4964fca591d0982f3a203f2f8884ff4991f17e20f759ea7125ba2bb4d993722f23938994eb2709c850f33ed9889e5a3966f9d7b76add46aedf230e8f417425f9db79ccd46b5660361de7c5d87f71a9d82c491c0c3daaf56c":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"afe986ead799727063958e2ce13ca846f76c51605439f839":"7c1b354a5bb214bd95147e32d81e658705089c38035d0ea423eb1a5c82f97443c6903d2cf1ba7a007eec7c8ff98b8f82b073d9636a79bd47c7f2f639a8eb4e92076f9ed615766f43ac3a4f1687301ed7d507766605e0e332880ae740ab72e861a2cb6dce1df1ff8be1873d25845ee7c665e712c5bbe029a1788634bce122836c":"f85a95ed10b69623162ab68d1098de94":"":104:"3cf1cdb4a4fdc48da78a8b4e81":"":"a7f252ad7983e7083260598051bffd83f40f4d4a8b580cc2388d720a0979dde71549ddcb86b0a62c4964fca591d0982f3a203f2f8884ff4991f17e20f759ea7125ba2bb4d993722f23938994eb2709c850f33ed9889e5a3966f9d7b76add46aedf230e8f417425f9db79ccd46b5660361de7c5d87f71a9d82c491c0c3daaf56c":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2cfaa215841826a977ae6adfdd993346210c49dd04d5d493":"e8eb3b6edd0ca4201b49a6a83036445aba1a1db040f3e74511363bce769760a9914e05a067f555ca15a57c6e02e66fbe4e04dd8c8db8d6d14ebc01cc7d84a20ff0aacb69bb3679d6b7d9d2e07deda7c2d4fe4c584fe1166e78d21dc56b9cdad93709c03b9145b887f87b4f605f24f989d5e0534fc71a58e8a8619ee99f69e5f5":"537a4ee307af3072e745570aaaadce34":"":104:"df01cffbd3978850e07328e6b8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2cfaa215841826a977ae6adfdd993346210c49dd04d5d493":"e8eb3b6edd0ca4201b49a6a83036445aba1a1db040f3e74511363bce769760a9914e05a067f555ca15a57c6e02e66fbe4e04dd8c8db8d6d14ebc01cc7d84a20ff0aacb69bb3679d6b7d9d2e07deda7c2d4fe4c584fe1166e78d21dc56b9cdad93709c03b9145b887f87b4f605f24f989d5e0534fc71a58e8a8619ee99f69e5f5":"537a4ee307af3072e745570aaaadce34":"":104:"df01cffbd3978850e07328e6b8":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"128ddc83d2170c403a517615056dceec0d19d6fd7632e738":"cfe9f7797ee37bfc4f564419bf2268c964479efa7435970874154432930f3b2736438da4dc9c76200009651340e23044bc9d200a32acfd4df2e1b98b0bae3e9ff9d6e8181d926d2d03f89768edc35b963d341931ac57d2739b270ce254f042b64ceac4b75223b233602c9a4bdc925967b051440c28805d816abe76fc9d593f5a":"5124b410c43d875eca6ce298c45994a7":"":104:"56ad9c1653f11a41fd649cccd8":"cf91f087fd7faf362caacf4a68cff51ec57b3075563e4ad0955df20b366e92bd75c3762cf4a6f0eb859872667a5c55aa5d94f5ac9479b1b9c9345b50f82379d551506a2ab02b0441b14b28b78a12b38500d703a8c19888fe612d4710eec7cd18c16d6a4b55d3c69760e2bed99efc8b551dbe2ac9b9b64715f87180b8e14d1795":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"128ddc83d2170c403a517615056dceec0d19d6fd7632e738":"cfe9f7797ee37bfc4f564419bf2268c964479efa7435970874154432930f3b2736438da4dc9c76200009651340e23044bc9d200a32acfd4df2e1b98b0bae3e9ff9d6e8181d926d2d03f89768edc35b963d341931ac57d2739b270ce254f042b64ceac4b75223b233602c9a4bdc925967b051440c28805d816abe76fc9d593f5a":"5124b410c43d875eca6ce298c45994a7":"":104:"56ad9c1653f11a41fd649cccd8":"":"cf91f087fd7faf362caacf4a68cff51ec57b3075563e4ad0955df20b366e92bd75c3762cf4a6f0eb859872667a5c55aa5d94f5ac9479b1b9c9345b50f82379d551506a2ab02b0441b14b28b78a12b38500d703a8c19888fe612d4710eec7cd18c16d6a4b55d3c69760e2bed99efc8b551dbe2ac9b9b64715f87180b8e14d1795":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"98581c28983c4da321ce0c419cc0d476d539e77da513c894":"bdef5b65b5111b29e781a6b71a0160179c52b5bccb1ac5c0377b26cf3f61432f3ccd67633a836357c24b5099db0510a7f8110f59e8227cacd11f17ea1798b5d4d68902ca6c6eccd319fef14545edd135078b38d43b61c9af269fc72f7a209ba7897e4c6dbd21bb71d7e93d2d2426ffa1557cae28e74059d3baf06ba419a47b39":"ff10234524433b871202c2cca6acb194":"":96:"984943355a7aef15c4fb8033":"808e28bfd441cb8890416a757d252c986daa8d607ac9cadd2f4fd29eddbcf3b859ba298e14a4ccefe2c2752b123f87b98d6708fde48faca4bc7dd818a7ea76cfa4357932e59cb6be0e9283bdfb49454b86b9fd04aa8cdef503c65d13fcff42e9cd8f142f8c06cf7daa6d8ef8b9c9d69c39e8afd980048fecf731fd674b2a814b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"98581c28983c4da321ce0c419cc0d476d539e77da513c894":"bdef5b65b5111b29e781a6b71a0160179c52b5bccb1ac5c0377b26cf3f61432f3ccd67633a836357c24b5099db0510a7f8110f59e8227cacd11f17ea1798b5d4d68902ca6c6eccd319fef14545edd135078b38d43b61c9af269fc72f7a209ba7897e4c6dbd21bb71d7e93d2d2426ffa1557cae28e74059d3baf06ba419a47b39":"ff10234524433b871202c2cca6acb194":"":96:"984943355a7aef15c4fb8033":"":"808e28bfd441cb8890416a757d252c986daa8d607ac9cadd2f4fd29eddbcf3b859ba298e14a4ccefe2c2752b123f87b98d6708fde48faca4bc7dd818a7ea76cfa4357932e59cb6be0e9283bdfb49454b86b9fd04aa8cdef503c65d13fcff42e9cd8f142f8c06cf7daa6d8ef8b9c9d69c39e8afd980048fecf731fd674b2a814b":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"167b8b6df8014c8f3de912b77f5a0c113580aa42d785298f":"4f787de12ba907a589edf74c8e7a6cdaaabebddd465a86e170e1efc289240298b516fddc43c7fd9bb1c51720a4455db4dd630b59aebaa82bd578eb3cb19f8b23ee6897c1fefaef820430efa6eb7d6ff04de4d8b079605fb520b0d33e96c28f0cd71983c4ce76c0ea62fd7209d21ec7b416881d545824a73d1f9f8d3323fdb90c":"49da91e926091a448d57d521cc90f3c0":"":96:"99198f55f9fa763651bba58e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"167b8b6df8014c8f3de912b77f5a0c113580aa42d785298f":"4f787de12ba907a589edf74c8e7a6cdaaabebddd465a86e170e1efc289240298b516fddc43c7fd9bb1c51720a4455db4dd630b59aebaa82bd578eb3cb19f8b23ee6897c1fefaef820430efa6eb7d6ff04de4d8b079605fb520b0d33e96c28f0cd71983c4ce76c0ea62fd7209d21ec7b416881d545824a73d1f9f8d3323fdb90c":"49da91e926091a448d57d521cc90f3c0":"":96:"99198f55f9fa763651bba58e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"71f5f8505fba62f08fa0557dd5407fc83a852c6007ccecc8":"3e19ec02365e450e946123a3362f9859352eb52902a6bcb8a782285dfac9d2b282f56302b60d6e9f53fddd16bbf04976cf4eb84ef3b6583e9dc2f805276a7b7340dec7abde4916fb94b0ed9c9af6d4917b27e44d25f3952d0444cd32a4a574e165a23fa8c93229ceb48345171a4f20d610b5be7d9e40dcf7209128f029fed6bf":"b5efb9feae3de41b5ce9aa75583b8d21":"":96:"9604d031fa43dcd0853e641c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"71f5f8505fba62f08fa0557dd5407fc83a852c6007ccecc8":"3e19ec02365e450e946123a3362f9859352eb52902a6bcb8a782285dfac9d2b282f56302b60d6e9f53fddd16bbf04976cf4eb84ef3b6583e9dc2f805276a7b7340dec7abde4916fb94b0ed9c9af6d4917b27e44d25f3952d0444cd32a4a574e165a23fa8c93229ceb48345171a4f20d610b5be7d9e40dcf7209128f029fed6bf":"b5efb9feae3de41b5ce9aa75583b8d21":"":96:"9604d031fa43dcd0853e641c":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4cdb38f8185a4186fc983e58a776a6454b92ecf0bffefe98":"1ca72c50a093076e9a9dfa09888b9c89eb36a942072fc536a81713f05a2669b39fdb2871b82ca47dcaf18393ca81dcb499aafcc4ed57ea79f8d4f9bd63540610215b2c65481b294638cec41264a7fdca4230df5fe1e7e3d8d26dcd0c435fec8e9bf778f9e6f13482157a9722761601e08425f6160d3bb626ae39ee1117b0353c":"aef257dd44d14d0bc75f9311ef24e85a":"":64:"d951becb0d55f9fb":"2eaa7e922dbd8963e2078aae216636276f3f7cb5d7f35fa759e91bddb6e247a93c388241ba1d0d37040c0b9e447c67d35b4991c1acce97914f3bc22ee50171bc5922299983ee70af79303265bc1ae1e7334202460618b4a8891d1a7eaaac5cac1e4dce024ce662d14849993f89e771fb873644b552120fd346250df39aaaa403":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4cdb38f8185a4186fc983e58a776a6454b92ecf0bffefe98":"1ca72c50a093076e9a9dfa09888b9c89eb36a942072fc536a81713f05a2669b39fdb2871b82ca47dcaf18393ca81dcb499aafcc4ed57ea79f8d4f9bd63540610215b2c65481b294638cec41264a7fdca4230df5fe1e7e3d8d26dcd0c435fec8e9bf778f9e6f13482157a9722761601e08425f6160d3bb626ae39ee1117b0353c":"aef257dd44d14d0bc75f9311ef24e85a":"":64:"d951becb0d55f9fb":"":"2eaa7e922dbd8963e2078aae216636276f3f7cb5d7f35fa759e91bddb6e247a93c388241ba1d0d37040c0b9e447c67d35b4991c1acce97914f3bc22ee50171bc5922299983ee70af79303265bc1ae1e7334202460618b4a8891d1a7eaaac5cac1e4dce024ce662d14849993f89e771fb873644b552120fd346250df39aaaa403":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ee8d3aced3aa3cb2166aa66c4a252c12dc0978830d0bc75b":"ee69b2421d43a9f383d99f9802ba4d6cf1c537b42041c86cce681049bb475e5098d4181f1902b0a49c202bf34ef70ea7b787fa685ab8f824fcc27282146d8158925bfef47ccba89aa81c0565eacb087b46b8706c9f886b7edf863701003051d6fb57e45e61d33412591ec818d016eec7dee4254636615a43dacb4f1e6ec35702":"c15c9c0b0b70c7321df044bfde2b15fb":"":64:"c5c9851a6bf686d0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ee8d3aced3aa3cb2166aa66c4a252c12dc0978830d0bc75b":"ee69b2421d43a9f383d99f9802ba4d6cf1c537b42041c86cce681049bb475e5098d4181f1902b0a49c202bf34ef70ea7b787fa685ab8f824fcc27282146d8158925bfef47ccba89aa81c0565eacb087b46b8706c9f886b7edf863701003051d6fb57e45e61d33412591ec818d016eec7dee4254636615a43dacb4f1e6ec35702":"c15c9c0b0b70c7321df044bfde2b15fb":"":64:"c5c9851a6bf686d0":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4a8538d609444e3197ab740cd33b66db1cf53600096b94e0":"8c2b8fb775d1b21c41a3dcf48ad6d68ab05be3879f9b94b305a6ce4d799e3a992c1c3a65a3e4eab563edb57424927c90c76e49386e29dd5e7de2800fcc0eefbc8b4f977f71be3754c006ee93dc09b1cfa59c424b6b3987aeb56feefc21004c63e8284b6845e395bc8843cca0917267fb4a8f2db1f7daafe7a9da95083a44de70":"0bd64d222532dae8ab63dc299355bf2a":"":64:"3477cad1fd4098b2":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4a8538d609444e3197ab740cd33b66db1cf53600096b94e0":"8c2b8fb775d1b21c41a3dcf48ad6d68ab05be3879f9b94b305a6ce4d799e3a992c1c3a65a3e4eab563edb57424927c90c76e49386e29dd5e7de2800fcc0eefbc8b4f977f71be3754c006ee93dc09b1cfa59c424b6b3987aeb56feefc21004c63e8284b6845e395bc8843cca0917267fb4a8f2db1f7daafe7a9da95083a44de70":"0bd64d222532dae8ab63dc299355bf2a":"":64:"3477cad1fd4098b2":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"447f0f065771b6129952e52206a64fe0844658ed685e39cd":"fea5d227869e527882c63a68a6623f4a699df82b3dc715c7260a5554336df8376744c05ae89ec27d40da02d9f1c5e9e29405579fd4132143cb21cdbe3edfaaab62128ecc28018725c8dd309d2376223d2e2edfea9765699b2630ff5d9fe9bec416c0ca6418b938d195d31a08e4034c49d79e3a249edd65f985230b33c444dd02":"37e3a300542d9caf3975c6429cb8a2e8":"":32:"06bfca29":"e1bdd1c212b159b87e41a5f64dcba6b27aa0f5c8871fabfb588df0e06bd7730ec1beb0e3388f96c992a573ff69b34870f83c53fb65b420c1c6f92e2aa6f03917e8203d77c7f5ee08baf9fab12f9d38fc0ffb83807ba781c3dd7b62edca2121f68ef230b42b8adbd4cea072209d02713789ed559b83739a54cfde69e68bdc4128":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"447f0f065771b6129952e52206a64fe0844658ed685e39cd":"fea5d227869e527882c63a68a6623f4a699df82b3dc715c7260a5554336df8376744c05ae89ec27d40da02d9f1c5e9e29405579fd4132143cb21cdbe3edfaaab62128ecc28018725c8dd309d2376223d2e2edfea9765699b2630ff5d9fe9bec416c0ca6418b938d195d31a08e4034c49d79e3a249edd65f985230b33c444dd02":"37e3a300542d9caf3975c6429cb8a2e8":"":32:"06bfca29":"":"e1bdd1c212b159b87e41a5f64dcba6b27aa0f5c8871fabfb588df0e06bd7730ec1beb0e3388f96c992a573ff69b34870f83c53fb65b420c1c6f92e2aa6f03917e8203d77c7f5ee08baf9fab12f9d38fc0ffb83807ba781c3dd7b62edca2121f68ef230b42b8adbd4cea072209d02713789ed559b83739a54cfde69e68bdc4128":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f465e95f6fc19fe6968b98319b547104d0c01c17105f8fc0":"2426f108368a00d2a49670a3b64b4f0569c6da9660163e7b209ec3f8d058ee11f7818a8c5030c5f4ce6e1e5a93faa3e5ae3d0bd5d712fbc891cfeb20845707edcf5e29719a5246a3b024fb12d37bd1b81df3812fd50b1dfb3e948ce546dd165cc77f903c07fe32bc7da7fbc25036679017317ce94cd8a00c1bce7379774f1714":"6cba4efc8d4840aa044a92d03d6b4d69":"":32:"92750ac9":"2e59b104c1a6f6d651000396adbfa009bf4cf8cbf714da8e4d3b4a62bd7f522d614decf090c7552a4b9e8d7ee457ba642d5100c0c81c14cbba8c8ff49b12827f6ebd41504ccb6dfc97cdf8532d1f7f7e603c609efa72d2ae0dce036ec4ab36849a0c06f8737d9710075a1daaed3867ca0a7e22111c0e7afae91f553b6fd66c6e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f465e95f6fc19fe6968b98319b547104d0c01c17105f8fc0":"2426f108368a00d2a49670a3b64b4f0569c6da9660163e7b209ec3f8d058ee11f7818a8c5030c5f4ce6e1e5a93faa3e5ae3d0bd5d712fbc891cfeb20845707edcf5e29719a5246a3b024fb12d37bd1b81df3812fd50b1dfb3e948ce546dd165cc77f903c07fe32bc7da7fbc25036679017317ce94cd8a00c1bce7379774f1714":"6cba4efc8d4840aa044a92d03d6b4d69":"":32:"92750ac9":"":"2e59b104c1a6f6d651000396adbfa009bf4cf8cbf714da8e4d3b4a62bd7f522d614decf090c7552a4b9e8d7ee457ba642d5100c0c81c14cbba8c8ff49b12827f6ebd41504ccb6dfc97cdf8532d1f7f7e603c609efa72d2ae0dce036ec4ab36849a0c06f8737d9710075a1daaed3867ca0a7e22111c0e7afae91f553b6fd66c6e":0 AES-GCM NIST Validation (AES-192,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f08e3e9f7b3a20ccdc4d98b56f2b567399a28a6b3908deab":"a986e816f1eafb532c716a555cca1839a1b0523410134ea0426ab309520b339fc1fdeb40478ae76823cee4e03b8d3450e6be92d5ff17b2f78400f0176e6d6a3930bd076a7a3c87c3397dcc0520c6b7b4ff9059ea21e71c91912a74aac2ca70eec422b507cc5c60860bb8baca01eec2a3003970ba84011efe576804b2820e306c":"4f4636d1b283bfa72c82809eb4f12519":"":32:"16c80a62":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f08e3e9f7b3a20ccdc4d98b56f2b567399a28a6b3908deab":"a986e816f1eafb532c716a555cca1839a1b0523410134ea0426ab309520b339fc1fdeb40478ae76823cee4e03b8d3450e6be92d5ff17b2f78400f0176e6d6a3930bd076a7a3c87c3397dcc0520c6b7b4ff9059ea21e71c91912a74aac2ca70eec422b507cc5c60860bb8baca01eec2a3003970ba84011efe576804b2820e306c":"4f4636d1b283bfa72c82809eb4f12519":"":32:"16c80a62":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"87b5372571fb244648053c99405999130f87a7c178052297":"ae078d1554fc6a14447a28c3dd753e790f7ef9b53e35c3e0fe63a7b1b326bc56034847f8a31c2d6358049aae990bfe7575b439db370aa515e225e0ec730488c700a7b0a96a7b8e4e8e4c6afec20decd16fe3c0f3f8d7a6cf7a8711d170829d14c706cceb00e133b8c65c8e08cd984b884662eddd2258ce629abf6b9dd28688c9":"a1cc81b87bd36affe3af50546e361c9e":"684ce23f59632308d7db14f7f6eddaf4d83271fb0c27401b09518a775b36252540f14305f0dae13ff6c0dc565c9e570759e070c8ac73dfb97abd3285689a7cdcfc941f6271be3b418740b42ba4a114421065a785be3dfa944c86af56da8209779e8736e62529c418b507c6d8ae002cbc0431747722afd64521734f99273de455":128:"98177b3428e64bc98631375905c0100f":"8be7df33a86b1162464af738de582a357d0ce8e213bba1b7913c0d13ad759d62c3bf4366f5130b3af2b255b7ad530b4977627f9e76b07e360c079d0f763dabbd22e976b98cd5495c6182f95bc963aad4b719446f49d3a448d11cac5bfcba4b675b8e4d88a389e2580e8f383f95bf85c72e698680d2a2bc993c9ee1ce0d1f1ac3":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"87b5372571fb244648053c99405999130f87a7c178052297":"ae078d1554fc6a14447a28c3dd753e790f7ef9b53e35c3e0fe63a7b1b326bc56034847f8a31c2d6358049aae990bfe7575b439db370aa515e225e0ec730488c700a7b0a96a7b8e4e8e4c6afec20decd16fe3c0f3f8d7a6cf7a8711d170829d14c706cceb00e133b8c65c8e08cd984b884662eddd2258ce629abf6b9dd28688c9":"a1cc81b87bd36affe3af50546e361c9e":"684ce23f59632308d7db14f7f6eddaf4d83271fb0c27401b09518a775b36252540f14305f0dae13ff6c0dc565c9e570759e070c8ac73dfb97abd3285689a7cdcfc941f6271be3b418740b42ba4a114421065a785be3dfa944c86af56da8209779e8736e62529c418b507c6d8ae002cbc0431747722afd64521734f99273de455":128:"98177b3428e64bc98631375905c0100f":"":"8be7df33a86b1162464af738de582a357d0ce8e213bba1b7913c0d13ad759d62c3bf4366f5130b3af2b255b7ad530b4977627f9e76b07e360c079d0f763dabbd22e976b98cd5495c6182f95bc963aad4b719446f49d3a448d11cac5bfcba4b675b8e4d88a389e2580e8f383f95bf85c72e698680d2a2bc993c9ee1ce0d1f1ac3":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a2d069b826455d5e79e65db4f1d2b6a29ae9f401bc623917":"acd6225dc5b9109d56ea565ab38dd4db432a7ec08f0db04f1c6b691c96d2eaaa6be62da7cc7fd75f931716c7f39705ea7cf828f1a5a325955e9b2c77e7fb2d562be6a89b3351b1b3d1355b43b73ed425049430314c16bf0836ed580e9390a3b8e2a652fddbfa939ca4c3c99765b09db7f30bf2ef88e1aa030e68958722cb0da3":"6d40a0c7813bc0410ff73f19bb5d89c9":"9960376b1898618d98c327c1761959d045488cc6198238bbe72662f276d47b41e8aebc06dbce63da5adcb302a61ade140c72b9cf9f6dfad6ecedd7401c9509fae349d3c7debe35117776227ba167f2b75921d7321d79f4ebca13d20af1638a1567043365f179f4162795fe4fd80b5d832e4ca70e7bf9830bc272b82182f70d2e":128:"010195091d4e1684029e58439039d91e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a2d069b826455d5e79e65db4f1d2b6a29ae9f401bc623917":"acd6225dc5b9109d56ea565ab38dd4db432a7ec08f0db04f1c6b691c96d2eaaa6be62da7cc7fd75f931716c7f39705ea7cf828f1a5a325955e9b2c77e7fb2d562be6a89b3351b1b3d1355b43b73ed425049430314c16bf0836ed580e9390a3b8e2a652fddbfa939ca4c3c99765b09db7f30bf2ef88e1aa030e68958722cb0da3":"6d40a0c7813bc0410ff73f19bb5d89c9":"9960376b1898618d98c327c1761959d045488cc6198238bbe72662f276d47b41e8aebc06dbce63da5adcb302a61ade140c72b9cf9f6dfad6ecedd7401c9509fae349d3c7debe35117776227ba167f2b75921d7321d79f4ebca13d20af1638a1567043365f179f4162795fe4fd80b5d832e4ca70e7bf9830bc272b82182f70d2e":128:"010195091d4e1684029e58439039d91e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f3252351fe8e7c628c418c1a49709bf1f8e20add82539948":"7e8d2816d280c91d232bad43b6610e2d0532a9f670f221a3a975fb16472c2e83b168115e87a487bcd14b37f075e1faa59c42515c353cdefc728ac617b7d273fa96778e3fb5f7a1132f8e2add4a57015b15d1984338b7862356243d1c5aa628406f4a507498eda12d2f652c55e8e58113ed828783b82505790654f036b610f89a":"eacd2b1c3cf01bf4ea7582d8ee2675d5":"141cb39a2fb8e735e0c97207f1b618a4b98f6b9bf8c44a1c8e9ea575a7759cc2a02301274553e7744408b2c577b4c8c2a00e18f8717fd8a6d2f46a44eeb05d685fbef7edeb4229e7ea9b8e419ffcb504d33583b3ae421c84caeca9f9789047dd7b1810318d3765307233567bc40e003401c9f4e1b07a2a7162889e1a092aedc1":128:"63a310b4f43b421a863fb00fafd7eac4":"699c146927ae29025e5b20088b20af27bc75449e4725ee6b7d5dc60b44ba8a06f7d265330c16060fbd6def244630d056c82676be2dc85d891c63d005804085c93ce88f3f57c2d2c0371c31027d0a4a0031e3f473cb373db63d4ff8f65be9ebe74045de813a4e6c688110d000f6b12406881c08085c9348e1f0315038907e33f7":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f3252351fe8e7c628c418c1a49709bf1f8e20add82539948":"7e8d2816d280c91d232bad43b6610e2d0532a9f670f221a3a975fb16472c2e83b168115e87a487bcd14b37f075e1faa59c42515c353cdefc728ac617b7d273fa96778e3fb5f7a1132f8e2add4a57015b15d1984338b7862356243d1c5aa628406f4a507498eda12d2f652c55e8e58113ed828783b82505790654f036b610f89a":"eacd2b1c3cf01bf4ea7582d8ee2675d5":"141cb39a2fb8e735e0c97207f1b618a4b98f6b9bf8c44a1c8e9ea575a7759cc2a02301274553e7744408b2c577b4c8c2a00e18f8717fd8a6d2f46a44eeb05d685fbef7edeb4229e7ea9b8e419ffcb504d33583b3ae421c84caeca9f9789047dd7b1810318d3765307233567bc40e003401c9f4e1b07a2a7162889e1a092aedc1":128:"63a310b4f43b421a863fb00fafd7eac4":"":"699c146927ae29025e5b20088b20af27bc75449e4725ee6b7d5dc60b44ba8a06f7d265330c16060fbd6def244630d056c82676be2dc85d891c63d005804085c93ce88f3f57c2d2c0371c31027d0a4a0031e3f473cb373db63d4ff8f65be9ebe74045de813a4e6c688110d000f6b12406881c08085c9348e1f0315038907e33f7":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e462957f2c500bf2d6bfa9af97938fdd8930e360ea4175e7":"82a7a6dd82a5ea3d9a8e9541d854978487eda298b483df02b45c76b8b38bac98ffd969dd160a2765595b19d4ea3e64351ce95764a903f595dd673d13facf5a5594e01be1d60a0c6d28b866a1f93a63a74fecb6d73ac6fb26b20c008b93db53e9dc1d3e3902359fd47734fe22a5c6958f97e9001cc4e8b6484d9542dbbdfcfcdc":"b380584a3f4e0e59add4753c282f2cf7":"682b0af6592eef173e559407e7f56574c069251b92092570cbb7f5a2f05e88bed0af48dcda45b2930b1ee7d5da78dc43ec3598a38593df7c548058eda3c9275c1304489aff95f33a6cd79e724e8d12ca0ae92b20273eb3736efcd50dc49e803ad631dcbf64376a45a687eb4e417aef08a3f5f8230d3f0b266ea732c21ed2eed7":120:"28a43253d8b37795433140641e9ffd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e462957f2c500bf2d6bfa9af97938fdd8930e360ea4175e7":"82a7a6dd82a5ea3d9a8e9541d854978487eda298b483df02b45c76b8b38bac98ffd969dd160a2765595b19d4ea3e64351ce95764a903f595dd673d13facf5a5594e01be1d60a0c6d28b866a1f93a63a74fecb6d73ac6fb26b20c008b93db53e9dc1d3e3902359fd47734fe22a5c6958f97e9001cc4e8b6484d9542dbbdfcfcdc":"b380584a3f4e0e59add4753c282f2cf7":"682b0af6592eef173e559407e7f56574c069251b92092570cbb7f5a2f05e88bed0af48dcda45b2930b1ee7d5da78dc43ec3598a38593df7c548058eda3c9275c1304489aff95f33a6cd79e724e8d12ca0ae92b20273eb3736efcd50dc49e803ad631dcbf64376a45a687eb4e417aef08a3f5f8230d3f0b266ea732c21ed2eed7":120:"28a43253d8b37795433140641e9ffd":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4a62ddd87f41c6df756e8da0985dcd8c91e73ba395b3d79b":"37a83ee6dbdece212446739ea353cb957b9aa409c88bee042bbc3a6e5199aeb28f2b4b00ff433c0c68d6db5a197566019db8a4c7a792e2839a19a302ee02bee046adce04c1fbbd5b0c457d7cbe277992ce2c153d132269e2d1f12b084cf3026a202b4664bc9d11832e9b99c7cc5035dcfde5991dd41aeb4fbf8bec5126a9f524":"1d1843e2118772d76a0244a2c33c60bd":"028b92727b75b14cb8dfeb7a86a7fec50cd5de46aa4a34645754918b8606819d4bf8a2e7531a05ae5505492ca6cbc8c0e6d6ab2dea23bff1fdf581bb780b4a3312aa39639383fd10bcf92489801954733f16b021c2e84809345216f8f28a99773341e40c4a64305a2098eaa39f26a93bd556c97f02090e1a6c181a4e13e17d3a":120:"ab738073228bdf1e8fd4430b5c7d79":"e702f1bb9a1f395c74fca0ce9cdf29e7332c14acaca45200cd432a5767be38929ef8de43d0e1a5e7300c1eb669ac1ab997b31cb1403af8451e77e63505920af0f8c3abf5a9450ea47371039ba1cf2d65a14fa5f013b7ce1d175859404dcf6461a36e8bc260e7abf739d8951ddf1a3754e2d65e0aa31320a5ffca822023bc0906":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4a62ddd87f41c6df756e8da0985dcd8c91e73ba395b3d79b":"37a83ee6dbdece212446739ea353cb957b9aa409c88bee042bbc3a6e5199aeb28f2b4b00ff433c0c68d6db5a197566019db8a4c7a792e2839a19a302ee02bee046adce04c1fbbd5b0c457d7cbe277992ce2c153d132269e2d1f12b084cf3026a202b4664bc9d11832e9b99c7cc5035dcfde5991dd41aeb4fbf8bec5126a9f524":"1d1843e2118772d76a0244a2c33c60bd":"028b92727b75b14cb8dfeb7a86a7fec50cd5de46aa4a34645754918b8606819d4bf8a2e7531a05ae5505492ca6cbc8c0e6d6ab2dea23bff1fdf581bb780b4a3312aa39639383fd10bcf92489801954733f16b021c2e84809345216f8f28a99773341e40c4a64305a2098eaa39f26a93bd556c97f02090e1a6c181a4e13e17d3a":120:"ab738073228bdf1e8fd4430b5c7d79":"":"e702f1bb9a1f395c74fca0ce9cdf29e7332c14acaca45200cd432a5767be38929ef8de43d0e1a5e7300c1eb669ac1ab997b31cb1403af8451e77e63505920af0f8c3abf5a9450ea47371039ba1cf2d65a14fa5f013b7ce1d175859404dcf6461a36e8bc260e7abf739d8951ddf1a3754e2d65e0aa31320a5ffca822023bc0906":0 AES-GCM NIST Validation (AES-192,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fc46976d38a581a7042a94ea4b5bfe3587ddc65d1162d71e":"4b9e858fc8f01903e426112192d4ae4686b1ae4d683b75afb2b8c63590275943d0d6d6a23b6d35796a2f101203acba107474ca6f4ff6dd87d6b77785ad1d160ef2755d84092dc70c86db5e639b689943b15efa646aff44b3f51f5d3f4cf6c8f7fc5adfe7bf2d72f75b93b8ee94ef3fa69ea0fc0bb77b3983901fdcd30bcd36f5":"b5e92563dd0339df00b7ffa2239d21bc":"7b6f6e104acbcd7188161477d8e425ff99add22df4d22de7f28d0a0075ca4ef848f68d07ed22d3165c08e40890ce04d1bd05b1a6ccb2fec8193d5f7dffc93d97a0c036b3748f708b011b68247a0249b9e1a60b652164e5c2fd7210377de804ac010c8aa08a11f40af97e8370a59f936cd14c22ea7a236d904145adc04a241fc0":120:"d4356cb417953b01f7b1110c8aa3eb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fc46976d38a581a7042a94ea4b5bfe3587ddc65d1162d71e":"4b9e858fc8f01903e426112192d4ae4686b1ae4d683b75afb2b8c63590275943d0d6d6a23b6d35796a2f101203acba107474ca6f4ff6dd87d6b77785ad1d160ef2755d84092dc70c86db5e639b689943b15efa646aff44b3f51f5d3f4cf6c8f7fc5adfe7bf2d72f75b93b8ee94ef3fa69ea0fc0bb77b3983901fdcd30bcd36f5":"b5e92563dd0339df00b7ffa2239d21bc":"7b6f6e104acbcd7188161477d8e425ff99add22df4d22de7f28d0a0075ca4ef848f68d07ed22d3165c08e40890ce04d1bd05b1a6ccb2fec8193d5f7dffc93d97a0c036b3748f708b011b68247a0249b9e1a60b652164e5c2fd7210377de804ac010c8aa08a11f40af97e8370a59f936cd14c22ea7a236d904145adc04a241fc0":120:"d4356cb417953b01f7b1110c8aa3eb":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"403e49feadd4db763652ed5c4b1e12680cfe0abc30f4696d":"221c61d769febce3913bfead9a201a805f11005ddcac185cbae00ce749de9c4362889b1b0d9546e91598e0ddedb88b673a90acca65d7e71a85636be052f361839a646dc8b834c02f3e2261d370e6bac9636b7536225b5ea77881200c8a3450d21bfd1e11afb3a470e178ecfe944a25a7cd0254e04a42b67723aac8afffd56fee":"1a60258a56e15f92814b4d372255a80d":"a4ffa9e3c612103224c86515dad4343cbca7a7daf277f5828670834f4d9af67b9a935c71b2130dfbc929c4409bffb7974ffa87523b58890770439c33342880b33319c626bf776c1c0aeb9c2a348a7681572f4ff711d94c192f3450e8b1275f9d02c742a2c9f1da316e9918bf787f22699172986cb9b10fc56d5f6b8392ff92b8":112:"62646fc8bfe38b3ba6d62f9011e3":"5c76c90dea7d659804ad873960906259fbdda3614277ec575d9eec730e747a2e7b9df6716b4c38d3451e319eeecee74d1f4918266fc9239de87080f1ad437b47c6904ed2d5514161ad25e3e237655e00e53fe18d452576580e89b2f1f0f6aa7e40a337fd8c48d690fe013a67264a80e9b5dfd009a9152d559aa02a68f401a09b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"403e49feadd4db763652ed5c4b1e12680cfe0abc30f4696d":"221c61d769febce3913bfead9a201a805f11005ddcac185cbae00ce749de9c4362889b1b0d9546e91598e0ddedb88b673a90acca65d7e71a85636be052f361839a646dc8b834c02f3e2261d370e6bac9636b7536225b5ea77881200c8a3450d21bfd1e11afb3a470e178ecfe944a25a7cd0254e04a42b67723aac8afffd56fee":"1a60258a56e15f92814b4d372255a80d":"a4ffa9e3c612103224c86515dad4343cbca7a7daf277f5828670834f4d9af67b9a935c71b2130dfbc929c4409bffb7974ffa87523b58890770439c33342880b33319c626bf776c1c0aeb9c2a348a7681572f4ff711d94c192f3450e8b1275f9d02c742a2c9f1da316e9918bf787f22699172986cb9b10fc56d5f6b8392ff92b8":112:"62646fc8bfe38b3ba6d62f9011e3":"":"5c76c90dea7d659804ad873960906259fbdda3614277ec575d9eec730e747a2e7b9df6716b4c38d3451e319eeecee74d1f4918266fc9239de87080f1ad437b47c6904ed2d5514161ad25e3e237655e00e53fe18d452576580e89b2f1f0f6aa7e40a337fd8c48d690fe013a67264a80e9b5dfd009a9152d559aa02a68f401a09b":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3471259512d1f03ce44c1ddac186e9a56c1434a6ac567c6":"dd5b98b3b3cf03fb92be579068a885afd984630692eb5f155fa6b49f2b1690b803d34b90e8de3cc39c2e61650ffffb51e7ef36d35ad17dc4d91f336363b0734996b162b509c9954cab3dd959bde7e437e9100d84c44104c61e29dbe12492a0272ce6eea2906d390de7808d337e8c650b3301af04a9ed52ab9ea208f3c7439d6c":"50164c63d466148ab371376d5c2b6b72":"11d1f523888bea1fbc680d34bc9b66957d651efa59e788db3d3f6f50e72184b9d14e9ff9bc05fb687520cf423d681812e007025eedf0e78e7e8191e6b62404e8eb400cf837d762a31aa248553367263d6de091fcf7abedc3e69fc118b7efb0594c89b96c387b7c28ed9a7b75db60b6b5133949b891ff81eca5790a265f12a58c":112:"6c5f38232e8a43871ab72a3419ad":"50438ee712720abf2089331e4c058b30c30c3d17834c507c0010ac3f974a256d01b14a45e9ce5193c5cede41330cf31e1a07a1f5e3ceca515cc971bfda0fbe0b823450efc30563e8ed941b0350f146ec75cd31a2c7e1e469c2dd860c0fd5b286219018d4fbacda164a40d2980aa3a27aa95f8b8e2cd8e2f5f20d79a22c3ff028":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3471259512d1f03ce44c1ddac186e9a56c1434a6ac567c6":"dd5b98b3b3cf03fb92be579068a885afd984630692eb5f155fa6b49f2b1690b803d34b90e8de3cc39c2e61650ffffb51e7ef36d35ad17dc4d91f336363b0734996b162b509c9954cab3dd959bde7e437e9100d84c44104c61e29dbe12492a0272ce6eea2906d390de7808d337e8c650b3301af04a9ed52ab9ea208f3c7439d6c":"50164c63d466148ab371376d5c2b6b72":"11d1f523888bea1fbc680d34bc9b66957d651efa59e788db3d3f6f50e72184b9d14e9ff9bc05fb687520cf423d681812e007025eedf0e78e7e8191e6b62404e8eb400cf837d762a31aa248553367263d6de091fcf7abedc3e69fc118b7efb0594c89b96c387b7c28ed9a7b75db60b6b5133949b891ff81eca5790a265f12a58c":112:"6c5f38232e8a43871ab72a3419ad":"":"50438ee712720abf2089331e4c058b30c30c3d17834c507c0010ac3f974a256d01b14a45e9ce5193c5cede41330cf31e1a07a1f5e3ceca515cc971bfda0fbe0b823450efc30563e8ed941b0350f146ec75cd31a2c7e1e469c2dd860c0fd5b286219018d4fbacda164a40d2980aa3a27aa95f8b8e2cd8e2f5f20d79a22c3ff028":0 AES-GCM NIST Validation (AES-192,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec326a1e0fe6a99421398df4fc7d8fea67b67e5f5fcd50ad":"6d5016c434a0f4b4a5d9e0b6b8e2d848a94f132f055d2d847e54601a4c9cfc5966a654d696f8a3529a48a90b491ea0d31c08eae8ef364f71f8ec7ae7f7e39bb9c331137b2578362ff165628099944ba8deb0d99ac660d5ed2215b9a7626ff1fa6173cd8dd676c988d16c9cf750a0d793f584c3c8f5fd5d167bc278f4d77a629c":"c94aa4baa840a044dbd5942787a0c951":"f8401c578f20d9c250ea86eb945184e007a0190462c7abddf238ce1ceddcc230756aa222386d8ba66ebbba13de008ced140896ac55bc47c231cc81370ca9feadc225e017d59890e6291cc4cca27db3078c0cd6cbb51afb62210226a76837c5454728cb5ce3afe7352e7fe75421f94986e6b7b26321bbca15c75ac7c13dc15f50":112:"3269922affb9d767f5abe041cc8e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ec326a1e0fe6a99421398df4fc7d8fea67b67e5f5fcd50ad":"6d5016c434a0f4b4a5d9e0b6b8e2d848a94f132f055d2d847e54601a4c9cfc5966a654d696f8a3529a48a90b491ea0d31c08eae8ef364f71f8ec7ae7f7e39bb9c331137b2578362ff165628099944ba8deb0d99ac660d5ed2215b9a7626ff1fa6173cd8dd676c988d16c9cf750a0d793f584c3c8f5fd5d167bc278f4d77a629c":"c94aa4baa840a044dbd5942787a0c951":"f8401c578f20d9c250ea86eb945184e007a0190462c7abddf238ce1ceddcc230756aa222386d8ba66ebbba13de008ced140896ac55bc47c231cc81370ca9feadc225e017d59890e6291cc4cca27db3078c0cd6cbb51afb62210226a76837c5454728cb5ce3afe7352e7fe75421f94986e6b7b26321bbca15c75ac7c13dc15f50":112:"3269922affb9d767f5abe041cc8e":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a7ef81652f604e88a72416924c53979dc73cadd3575eda1c":"9ecd19a8eba9fba843486e1bbfb8d9053c5e04b24e30174d4aa89d8307439d653f8630edddafd51719c744bcb4bce3e444847567bd2cdde2995870d0634cc0ba2bde4b6bc2bc583062fb83874a1c25b50aeb945bd109a151772c077438c4d1caaeb5b0c56390ac23c6d117f3a00fd616306fc2ffc4c1e76f934b30fbbc52eec2":"0cc9ae54c9a85f3e9325c5f3658ab3b2":"d0195b744351aa25a57a99df9573dfa3cebe9850139149b64f7e4af37756a430dda8af98e4ed480e913aa82821c01c1f75b187e105a8f39621757d522c083a8d81d7d8bfe6cf15c439d0692b6affd655a11bcd2457046fae996a1075c66029867b88cd23c503ae04037dd41f27bafd5000d1f516002f9fcc0f2500e8c1b27de0":104:"22c2efeddfd5d9cb528861c4eb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a7ef81652f604e88a72416924c53979dc73cadd3575eda1c":"9ecd19a8eba9fba843486e1bbfb8d9053c5e04b24e30174d4aa89d8307439d653f8630edddafd51719c744bcb4bce3e444847567bd2cdde2995870d0634cc0ba2bde4b6bc2bc583062fb83874a1c25b50aeb945bd109a151772c077438c4d1caaeb5b0c56390ac23c6d117f3a00fd616306fc2ffc4c1e76f934b30fbbc52eec2":"0cc9ae54c9a85f3e9325c5f3658ab3b2":"d0195b744351aa25a57a99df9573dfa3cebe9850139149b64f7e4af37756a430dda8af98e4ed480e913aa82821c01c1f75b187e105a8f39621757d522c083a8d81d7d8bfe6cf15c439d0692b6affd655a11bcd2457046fae996a1075c66029867b88cd23c503ae04037dd41f27bafd5000d1f516002f9fcc0f2500e8c1b27de0":104:"22c2efeddfd5d9cb528861c4eb":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"605271a41e263c92dc14fe9df5203e79d58cc2d1289dc361":"2bda3448a283ecba31e0299c0a9e44628cb2b41fa7b1a41107e107cabc381083bdbe048f2804568fdd5fe016f4d607f694042a459ba03a2deda4cccc8cbe4612d8ed0d4575e48bc9f59843369dbe2af6d048e65ff4250e1eef61d7b1b378fe2f3305b133ddc7e37d95ca6de89a971730fc80da943a767ff137707a8d8a24329c":"7f128092a777fc503adc7f6b85eb2006":"aef9f984fb645e08d5f0aa07a31c114d2f8e9eca047e4a8d5471378cfc2ced1159dc093d174788e58447a854be58942ed9a3fd45f3f4a1af7351e087369a267797c525f134e79709097e733b9003b9be0c569fc70ee3462b815b6410e19954ce2efac121300c06fd9e00542a9c6a5a682fe1010c145acbbb8b82333bdb5ddfd9":104:"673afea592b2ce16bd058469f1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"605271a41e263c92dc14fe9df5203e79d58cc2d1289dc361":"2bda3448a283ecba31e0299c0a9e44628cb2b41fa7b1a41107e107cabc381083bdbe048f2804568fdd5fe016f4d607f694042a459ba03a2deda4cccc8cbe4612d8ed0d4575e48bc9f59843369dbe2af6d048e65ff4250e1eef61d7b1b378fe2f3305b133ddc7e37d95ca6de89a971730fc80da943a767ff137707a8d8a24329c":"7f128092a777fc503adc7f6b85eb2006":"aef9f984fb645e08d5f0aa07a31c114d2f8e9eca047e4a8d5471378cfc2ced1159dc093d174788e58447a854be58942ed9a3fd45f3f4a1af7351e087369a267797c525f134e79709097e733b9003b9be0c569fc70ee3462b815b6410e19954ce2efac121300c06fd9e00542a9c6a5a682fe1010c145acbbb8b82333bdb5ddfd9":104:"673afea592b2ce16bd058469f1":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa076f36cb678e2275561e9553ebdf397360e5a5e44791c4":"513305e86c0cb046c5d3720b25a406392766bd1fb7de2758de370ff2e68281e211922890c61f3659460f22c45a57895b424441262a3ba0606df4e2701f38281fd3436a4d0e0f8efecd231808a9ea063dfb725015a91f27cadfe7909a0ee109eac391ac807afed1767ae0515b9c1b51ae9a48b38fe7fec7fe0ddee562c945e5ae":"1ecd53d94fe287047ff184e8b9b71a26":"5ff25f7bac5f76f533f9edffdfd2b2991d7fc4cd5a0452a1031da6094cd498297fb2a05ae8db71cb3451e4ac33a01172619035a9621d2d54f812ef5343e14b9dedc93838e4cf30e223d215b4d2476ea961a17ac7295069f25b2a12d6e2efe76d91f45632c6d4e61ff19a95d5ae36af960d95050ce98b5791df0b7e322411c884":104:"079e8db9c3e6eddb0335b1cf64":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fa076f36cb678e2275561e9553ebdf397360e5a5e44791c4":"513305e86c0cb046c5d3720b25a406392766bd1fb7de2758de370ff2e68281e211922890c61f3659460f22c45a57895b424441262a3ba0606df4e2701f38281fd3436a4d0e0f8efecd231808a9ea063dfb725015a91f27cadfe7909a0ee109eac391ac807afed1767ae0515b9c1b51ae9a48b38fe7fec7fe0ddee562c945e5ae":"1ecd53d94fe287047ff184e8b9b71a26":"5ff25f7bac5f76f533f9edffdfd2b2991d7fc4cd5a0452a1031da6094cd498297fb2a05ae8db71cb3451e4ac33a01172619035a9621d2d54f812ef5343e14b9dedc93838e4cf30e223d215b4d2476ea961a17ac7295069f25b2a12d6e2efe76d91f45632c6d4e61ff19a95d5ae36af960d95050ce98b5791df0b7e322411c884":104:"079e8db9c3e6eddb0335b1cf64":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce9dafa0e7e53a8766fc0bc38fba807d04e14e5ed61bc234":"b585b8bf634757dac015f2f69f2ae674372a664f2115ad2d03bd3e0c335306b02d0947d3cda5991f5c0c25f12ead2c3cc2d65d575fd67091c70bc93ddb4b1e21f7b0fc6e6ae652dea93a6564ff13489f927942e64dd94bf8f821c7ffdef16df58bd8306a957821ac256da6f19c9d96e48eee87f88acb83bae05d693b70b9337b":"fd0751af49814ee98b2b0cdf730adaa6":"1cba488a0fc8a012f9a336cc7b01cbcc504178eeb08237dbedbc6c7ac68fdf3a6742751a207e43d43068abf6ef4e12a5e3c17e5a2f9398fc04ced67377cbb858fd6020fad675a880adb249e4aba94b96efa515d1cdf5c0c3071a27a3245968867ea94b2bfc2028a67be34c84c3f475944497aa8ca1ab009f8e4b11c8308c1996":96:"e5dc92f4ad4000e9b62fb637":"95f4324b0656bef19eca5570548fc6a7a9923f4e2a7e42066891bc132fd73bc1c9089755d996756de0072824e69c43f2db8ba2bf6f90d3c4eafc0721ceaccce1af896f9fb15fb19c4746979b6d945f593fad61d550f81d12b5945ed728c02931d7f8d917285c22a3af748d75a6bf163fddd84b941d8564c1a63192c816ad6d6d":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ce9dafa0e7e53a8766fc0bc38fba807d04e14e5ed61bc234":"b585b8bf634757dac015f2f69f2ae674372a664f2115ad2d03bd3e0c335306b02d0947d3cda5991f5c0c25f12ead2c3cc2d65d575fd67091c70bc93ddb4b1e21f7b0fc6e6ae652dea93a6564ff13489f927942e64dd94bf8f821c7ffdef16df58bd8306a957821ac256da6f19c9d96e48eee87f88acb83bae05d693b70b9337b":"fd0751af49814ee98b2b0cdf730adaa6":"1cba488a0fc8a012f9a336cc7b01cbcc504178eeb08237dbedbc6c7ac68fdf3a6742751a207e43d43068abf6ef4e12a5e3c17e5a2f9398fc04ced67377cbb858fd6020fad675a880adb249e4aba94b96efa515d1cdf5c0c3071a27a3245968867ea94b2bfc2028a67be34c84c3f475944497aa8ca1ab009f8e4b11c8308c1996":96:"e5dc92f4ad4000e9b62fb637":"":"95f4324b0656bef19eca5570548fc6a7a9923f4e2a7e42066891bc132fd73bc1c9089755d996756de0072824e69c43f2db8ba2bf6f90d3c4eafc0721ceaccce1af896f9fb15fb19c4746979b6d945f593fad61d550f81d12b5945ed728c02931d7f8d917285c22a3af748d75a6bf163fddd84b941d8564c1a63192c816ad6d6d":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8a328554fed68dc4838fbc89fd162c99ec105b36651abbc9":"75986f56972c045c850ed68aeb229f203b228fdfc36cad6b16d9bd12037c48700d20d8062a983ffeca76b8d36a67ef51bc8853706e83a34e4e23ff4f4a4eb943f19dbe85e454043d7906be6587a85079f9ccd27962d2905117d2dbeaf725d6ffe87bef52b2138da153ef29b18065b3342b3f9d07837d57b8bc5f2597de06c54f":"e4f7c69a1d026eeebfc45e77bd7b3538":"e349dcedb0bfcc771c820f0d510b80cef32ae3326484e25aa183015941e7844bc46f617d5e61fd64fa71759e90fcb72ae220bcd507f0fb389b689dd3fa29b3b937eded85f26ada9e0f3f5109f82fef47c7eba7313049750ad17969e7550c0d4093ed18ee27843d082bcee8bf3fc7833d569b7723998595a5a1d871089fd238da":96:"8e8320912fff628f47e92430":"a1ed65cfc7e1aeccd0531bce1dc749c7aa84451ec0f29856f12f22c4105888c7d62e2e2fc8ad7a62748610b16e57490f061ad063c88800037d7244ee59e109d445205280473390336d7b6089f3a78218447b1b2398c4d0b3aac8b57a35891ad60dc1b69ad75e2e86248ceac7bb4cf3caade4a896e5ee8c76893ef990f6f65266":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8a328554fed68dc4838fbc89fd162c99ec105b36651abbc9":"75986f56972c045c850ed68aeb229f203b228fdfc36cad6b16d9bd12037c48700d20d8062a983ffeca76b8d36a67ef51bc8853706e83a34e4e23ff4f4a4eb943f19dbe85e454043d7906be6587a85079f9ccd27962d2905117d2dbeaf725d6ffe87bef52b2138da153ef29b18065b3342b3f9d07837d57b8bc5f2597de06c54f":"e4f7c69a1d026eeebfc45e77bd7b3538":"e349dcedb0bfcc771c820f0d510b80cef32ae3326484e25aa183015941e7844bc46f617d5e61fd64fa71759e90fcb72ae220bcd507f0fb389b689dd3fa29b3b937eded85f26ada9e0f3f5109f82fef47c7eba7313049750ad17969e7550c0d4093ed18ee27843d082bcee8bf3fc7833d569b7723998595a5a1d871089fd238da":96:"8e8320912fff628f47e92430":"":"a1ed65cfc7e1aeccd0531bce1dc749c7aa84451ec0f29856f12f22c4105888c7d62e2e2fc8ad7a62748610b16e57490f061ad063c88800037d7244ee59e109d445205280473390336d7b6089f3a78218447b1b2398c4d0b3aac8b57a35891ad60dc1b69ad75e2e86248ceac7bb4cf3caade4a896e5ee8c76893ef990f6f65266":0 AES-GCM NIST Validation (AES-192,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6e7f6feb4022312de5c804ed1d7a37580d74499107f8cc8b":"4f5bbdf575ab8f778549f749f2265e17dc7225713e73ee6d7be163ff7071557dcc2240b0705c079008605f81396414ac64f06b1b637876e04c3fca8d0fa576cef4dd3dc553fd6808eaf120f837f9bb1d9dbbd5cf67ed497167fc7db89d3a84151b81aeab0e921057f121583df5ed7f976b206ece17a913f23485385f64c462a8":"6ce13485ffbc80567b02dd542344d7ef":"c6804a2bd8c34de14fe485c8b7caa2564adaf9fcbb754bd2cc1d88ba9183f13d110c762a3c5d2afc0fbc80aedcb91e45efe43d9320075420ee85ab22505f20e77fa4624b0387346c1bd944e9cd54055b5135c7fc92e85390ecf45a7091136b47e3d68d9076594cfad36c36047538e652178c375a2fe59a246a79784577860189":96:"974bd0c4a8cac1563a0e0ce0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6e7f6feb4022312de5c804ed1d7a37580d74499107f8cc8b":"4f5bbdf575ab8f778549f749f2265e17dc7225713e73ee6d7be163ff7071557dcc2240b0705c079008605f81396414ac64f06b1b637876e04c3fca8d0fa576cef4dd3dc553fd6808eaf120f837f9bb1d9dbbd5cf67ed497167fc7db89d3a84151b81aeab0e921057f121583df5ed7f976b206ece17a913f23485385f64c462a8":"6ce13485ffbc80567b02dd542344d7ef":"c6804a2bd8c34de14fe485c8b7caa2564adaf9fcbb754bd2cc1d88ba9183f13d110c762a3c5d2afc0fbc80aedcb91e45efe43d9320075420ee85ab22505f20e77fa4624b0387346c1bd944e9cd54055b5135c7fc92e85390ecf45a7091136b47e3d68d9076594cfad36c36047538e652178c375a2fe59a246a79784577860189":96:"974bd0c4a8cac1563a0e0ce0":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"46d6e982feff0e7d04a84384c56739b69626dde500e4b7fb":"a5160fb2d397b55a7eba02df33a042404188f02f4492d46f4edc03fc67723d64f5f7fed3a60728438703c60454a30f473ac918ffc8f98be5c5e9779ee984415e415ce3c71f9acc3f808d215be58535d3144cebe7982b9b527edbe41446161094d6fc74dec2e0a1c644bbc2cf5779a22bd4117a7edb11d13e35e95feeb418d3f0":"71a6d1e022a6bdff6460c674fb0cf048":"67a8455c7d3fbfdba3c5ec5f40e0be935fbb9417e805771832ffad06ba38a61b8377997af1f586dc0fa1e3da0b39facd520db1f0ec2bdf1904a3a897f0b507c901fab30a85de51effa9f7d4703ceeb2ca72abe0bd146ba0bd3ffdee11628310db7d65ea1343b018084ea2414995f86fefb45ba91a9dc2236d92078b4305671b5":64:"84f1efd34ff84e83":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"46d6e982feff0e7d04a84384c56739b69626dde500e4b7fb":"a5160fb2d397b55a7eba02df33a042404188f02f4492d46f4edc03fc67723d64f5f7fed3a60728438703c60454a30f473ac918ffc8f98be5c5e9779ee984415e415ce3c71f9acc3f808d215be58535d3144cebe7982b9b527edbe41446161094d6fc74dec2e0a1c644bbc2cf5779a22bd4117a7edb11d13e35e95feeb418d3f0":"71a6d1e022a6bdff6460c674fb0cf048":"67a8455c7d3fbfdba3c5ec5f40e0be935fbb9417e805771832ffad06ba38a61b8377997af1f586dc0fa1e3da0b39facd520db1f0ec2bdf1904a3a897f0b507c901fab30a85de51effa9f7d4703ceeb2ca72abe0bd146ba0bd3ffdee11628310db7d65ea1343b018084ea2414995f86fefb45ba91a9dc2236d92078b4305671b5":64:"84f1efd34ff84e83":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"991dcaa2e8fdad2b4e6e462a3c06c96067ef5e9fb133496a":"9cd0c27f0c2011c1ab947400d28516c7f46d22a409a18fd35c1babf693b8030dfd7822d9ba03bb8fd56a00f9c7149c056640dde690889d2f23978eeeb28ccc26e2fc251220a3682c963f5580c654c1a6736cccb1b8ed104ec7390021d244bd9f92abde89e39a4b83eff8211c8a6259bd6ac2af1da7dfb8cf1355238056c60381":"978913d2c822ba7cc758041d5ee46759":"5a94dc81af011a8af263318b60215b9752292b194b89f6fc013b0fe8e29133de631d981862f2c131ee34905bd93caffc3b8f91aeb0264b27a509e5c6a41ae781209f8c5895d0d35b3c5e1ae34a1a92a2b979e0e62132051394940ea4d9bfffb8d89ba1e8331b15bdf05c41db83a57745a4a651a757cc8648acdcf850a2f25367":64:"15d456da7645abf2":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"991dcaa2e8fdad2b4e6e462a3c06c96067ef5e9fb133496a":"9cd0c27f0c2011c1ab947400d28516c7f46d22a409a18fd35c1babf693b8030dfd7822d9ba03bb8fd56a00f9c7149c056640dde690889d2f23978eeeb28ccc26e2fc251220a3682c963f5580c654c1a6736cccb1b8ed104ec7390021d244bd9f92abde89e39a4b83eff8211c8a6259bd6ac2af1da7dfb8cf1355238056c60381":"978913d2c822ba7cc758041d5ee46759":"5a94dc81af011a8af263318b60215b9752292b194b89f6fc013b0fe8e29133de631d981862f2c131ee34905bd93caffc3b8f91aeb0264b27a509e5c6a41ae781209f8c5895d0d35b3c5e1ae34a1a92a2b979e0e62132051394940ea4d9bfffb8d89ba1e8331b15bdf05c41db83a57745a4a651a757cc8648acdcf850a2f25367":64:"15d456da7645abf2":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f29cff00781f5916930f125489c87d21f6593324d1506f65":"a3e8595747b7147d471ac4fe38014bf4a409931e3f419ff88ae249ba7a7f51bd0ede371bf153bab4b28020b7a82a8ca30b75f1e3bcfee3c13db813cbc85138ef05874dedb14a6e5b6d06d7589a83bd5e052dc64433a8e24c1188b9470ddb2536d13b4b7bff0c5afcfaa9aa0157c3aae3b1774df2df14f965d6dee4332edba67e":"50db7ee25a9f815c784236f908bfd7f2":"ec1482e18692bcd6894a364c4a6abb9c3b9818bb17e5e1fc9ec0b41702c423f3a60907e94c888fad8e78f51e1f724b39969ba7b11d31b503504b304d5c4b4cbd42634f4ec5080a9fe51c82e121ae191270dd2c307af84c82d892d982413a50ccce33698054f761a3fa93da9a1fca321296b378a50d458ba78e57a70da4676150":64:"a1e19ef2f0d4b9f1":"eea18261a4de31d8619e77005ebbb3998c5dcfac2bc120ae465e29d6b4c46de7e6c044c8b148ffe4eda7629c243df8af4e7ceb512d5751a3ee58defb0690b6f26b51086dedfde38748f6f0bbe6b495f4304373188e5d2dc93461bd51bf720149a7d3aa543623b122b9af0123b2cdc9020136b041a49498ec4aa696c2d3c46d06":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f29cff00781f5916930f125489c87d21f6593324d1506f65":"a3e8595747b7147d471ac4fe38014bf4a409931e3f419ff88ae249ba7a7f51bd0ede371bf153bab4b28020b7a82a8ca30b75f1e3bcfee3c13db813cbc85138ef05874dedb14a6e5b6d06d7589a83bd5e052dc64433a8e24c1188b9470ddb2536d13b4b7bff0c5afcfaa9aa0157c3aae3b1774df2df14f965d6dee4332edba67e":"50db7ee25a9f815c784236f908bfd7f2":"ec1482e18692bcd6894a364c4a6abb9c3b9818bb17e5e1fc9ec0b41702c423f3a60907e94c888fad8e78f51e1f724b39969ba7b11d31b503504b304d5c4b4cbd42634f4ec5080a9fe51c82e121ae191270dd2c307af84c82d892d982413a50ccce33698054f761a3fa93da9a1fca321296b378a50d458ba78e57a70da4676150":64:"a1e19ef2f0d4b9f1":"":"eea18261a4de31d8619e77005ebbb3998c5dcfac2bc120ae465e29d6b4c46de7e6c044c8b148ffe4eda7629c243df8af4e7ceb512d5751a3ee58defb0690b6f26b51086dedfde38748f6f0bbe6b495f4304373188e5d2dc93461bd51bf720149a7d3aa543623b122b9af0123b2cdc9020136b041a49498ec4aa696c2d3c46d06":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2087e14092dad6df8996715cb1cfca90094f030328080ffd":"6d039513061980fb195bdf2f7c7079ca4b7e0fdd50d948cbfab5ba10b99e3aea27f08abd000c428851de82cacb0d64c146cd9567e9d55b89819876d6a635bd68bcaf47ffa41e02d9ee97f5a2363bfe6131ae7a21ea5130ae953a64d57d6cbfd45260c5f1946388d445ce97d23ab7ba31a5069a4896bc940a71de32bde02bc18d":"d30504afb6f8b6ac444b4a76115d79d1":"d95845d268c8d8f9135d310c39e30f55f83ef7ffee69e6ba1f80d08e92ed473b5ac12cc8f7a872bfc8b325e6b8e374609c90beaf52d975f71caeef5ee4c13de08dce80d358ee1cd091faea209a24e3392adcfe01aeb2b2e1738bc75d4a9b7cd31df7f878141cf278d150f6faa83fb3a2fd1225542a39c900606c602f15c06a4f":32:"5412f25c":"1e81a4c10a3440d0002ddc1bfa42ebb08e504fcc8f0497915c51b6f5f75fee3f0cd3e9c5a81ff6528e0fecd68a36192114f17fa1a4cfe21918dac46e3ba1383c2678c7a6889a980024ee2a21bcf737f7723b5735e1ebe78996f7c7eace2802ebb8284216867d73b53a370a57d5b587d070a96db34b5b4f5afe7f39830498c112":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2087e14092dad6df8996715cb1cfca90094f030328080ffd":"6d039513061980fb195bdf2f7c7079ca4b7e0fdd50d948cbfab5ba10b99e3aea27f08abd000c428851de82cacb0d64c146cd9567e9d55b89819876d6a635bd68bcaf47ffa41e02d9ee97f5a2363bfe6131ae7a21ea5130ae953a64d57d6cbfd45260c5f1946388d445ce97d23ab7ba31a5069a4896bc940a71de32bde02bc18d":"d30504afb6f8b6ac444b4a76115d79d1":"d95845d268c8d8f9135d310c39e30f55f83ef7ffee69e6ba1f80d08e92ed473b5ac12cc8f7a872bfc8b325e6b8e374609c90beaf52d975f71caeef5ee4c13de08dce80d358ee1cd091faea209a24e3392adcfe01aeb2b2e1738bc75d4a9b7cd31df7f878141cf278d150f6faa83fb3a2fd1225542a39c900606c602f15c06a4f":32:"5412f25c":"":"1e81a4c10a3440d0002ddc1bfa42ebb08e504fcc8f0497915c51b6f5f75fee3f0cd3e9c5a81ff6528e0fecd68a36192114f17fa1a4cfe21918dac46e3ba1383c2678c7a6889a980024ee2a21bcf737f7723b5735e1ebe78996f7c7eace2802ebb8284216867d73b53a370a57d5b587d070a96db34b5b4f5afe7f39830498c112":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3fc76d627c775de2f789279dc7b67979a9f1cc23c8dcabc9":"92a60d38fc687b92d44635aafee416a142d11a025680e5aa42e9ba5aa010462991ad3dd7328ca4a693673410f9bba37f05a551b949ab0d43fc61ef3b8996dd3fc1b325e66eec6cc61ea667500f82a83e699756a139d14be6ca9747ed38cd9b1d9da032ece311331bdcd698666ddc970b8be2b746ec55fe60e65d7ae47c6f853c":"8f6fd53eb97e12dcd4d40f2843e25365":"e56995df73e52606a11de9df6c7bfb0ef93b86bf6766e319aea59372060294b0e1b13c6288c2310a4bef725a2dddb174f3e1228649861757903c4497a0eec9c141454fc75f101439a2150e368857c4f0f6e5161c42c77f632bf1c229a52595cbf16e9018de9a8f6a1e6b8b18bd244f93f001eb2eb315405d223c0d27ece9d4d9":32:"613ba486":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3fc76d627c775de2f789279dc7b67979a9f1cc23c8dcabc9":"92a60d38fc687b92d44635aafee416a142d11a025680e5aa42e9ba5aa010462991ad3dd7328ca4a693673410f9bba37f05a551b949ab0d43fc61ef3b8996dd3fc1b325e66eec6cc61ea667500f82a83e699756a139d14be6ca9747ed38cd9b1d9da032ece311331bdcd698666ddc970b8be2b746ec55fe60e65d7ae47c6f853c":"8f6fd53eb97e12dcd4d40f2843e25365":"e56995df73e52606a11de9df6c7bfb0ef93b86bf6766e319aea59372060294b0e1b13c6288c2310a4bef725a2dddb174f3e1228649861757903c4497a0eec9c141454fc75f101439a2150e368857c4f0f6e5161c42c77f632bf1c229a52595cbf16e9018de9a8f6a1e6b8b18bd244f93f001eb2eb315405d223c0d27ece9d4d9":32:"613ba486":"FAIL":"":0 AES-GCM NIST Validation (AES-192,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b10979797fb8f418a126120d45106e1779b4538751a19bf6":"e3dc64e3c02731fe6e6ec0e899183018da347bf8bd476aa7746d7a7729d83a95f64bb732ba987468d0cede154e28169f7bafa36559200795037ee38279e0e4ca40f9cfa85aa0c8035df9649345c8fdffd1c31528b485dfe443c1923180cc8fae5196d16f822be4ad07e3f1234e1d218e7c8fb37a0e4480dc6717c9c09ff5c45f":"ca362e615024a1fe11286668646cc1de":"237d95d86a5ad46035870f576a1757eded636c7234d5ed0f8039f6f59f1333cc31cb893170d1baa98bd4e79576de920120ead0fdecfb343edbc2fcc556540a91607388a05d43bdb8b55f1327552feed3b620614dfcccb2b342083896cbc81dc9670b761add998913ca813163708a45974e6d7b56dfd0511a72eb879f239d6a6d":32:"28d730ea":"dafde27aa8b3076bfa16ab1d89207d339c4997f8a756cc3eb62c0b023976de808ab640ba4467f2b2ea83d238861229c73387594cd43770386512ea595a70888b4c38863472279e06b923e7cf32438199b3e054ac4bc21baa8df39ddaa207ebb17fa4cad6e83ea58c3a92ec74e6e01b0a8979af145dd31d5df29750bb91b42d45":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b10979797fb8f418a126120d45106e1779b4538751a19bf6":"e3dc64e3c02731fe6e6ec0e899183018da347bf8bd476aa7746d7a7729d83a95f64bb732ba987468d0cede154e28169f7bafa36559200795037ee38279e0e4ca40f9cfa85aa0c8035df9649345c8fdffd1c31528b485dfe443c1923180cc8fae5196d16f822be4ad07e3f1234e1d218e7c8fb37a0e4480dc6717c9c09ff5c45f":"ca362e615024a1fe11286668646cc1de":"237d95d86a5ad46035870f576a1757eded636c7234d5ed0f8039f6f59f1333cc31cb893170d1baa98bd4e79576de920120ead0fdecfb343edbc2fcc556540a91607388a05d43bdb8b55f1327552feed3b620614dfcccb2b342083896cbc81dc9670b761add998913ca813163708a45974e6d7b56dfd0511a72eb879f239d6a6d":32:"28d730ea":"":"dafde27aa8b3076bfa16ab1d89207d339c4997f8a756cc3eb62c0b023976de808ab640ba4467f2b2ea83d238861229c73387594cd43770386512ea595a70888b4c38863472279e06b923e7cf32438199b3e054ac4bc21baa8df39ddaa207ebb17fa4cad6e83ea58c3a92ec74e6e01b0a8979af145dd31d5df29750bb91b42d45":0 AES-GCM Bad IV (AES-192,128,0,0,32) #0 depends_on:MBEDTLS_AES_C diff --git a/tests/suites/test_suite_gcm.aes256_de.data b/tests/suites/test_suite_gcm.aes256_de.data index 9696a62be3..d207212276 100644 --- a/tests/suites/test_suite_gcm.aes256_de.data +++ b/tests/suites/test_suite_gcm.aes256_de.data @@ -1,674 +1,674 @@ AES-GCM NIST Validation (AES-256,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c186654406b2b92c9639a7189d4ab5ab0b9bb87c43005027f3fa832fd3507b1":"":"3a0324d63a70400490c92e7604a3ba97":"":128:"4c61cd2e28a13d78a4e87ea7374dd01a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c186654406b2b92c9639a7189d4ab5ab0b9bb87c43005027f3fa832fd3507b1":"":"3a0324d63a70400490c92e7604a3ba97":"":128:"4c61cd2e28a13d78a4e87ea7374dd01a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"747d01d82d7382b4263e7cbf25bd198a8a92faabf8d7367584c7e2fa506e9c5f":"":"7156358b203a44ef173706fdc81900f8":"":128:"9687fb231c4742a74d6bf78c62b8ac53":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"747d01d82d7382b4263e7cbf25bd198a8a92faabf8d7367584c7e2fa506e9c5f":"":"7156358b203a44ef173706fdc81900f8":"":128:"9687fb231c4742a74d6bf78c62b8ac53":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cbe30216136b7eaf223e6a7b46c06625176d9a08182fa806a63d8b143aa768b":"":"4fe6ace582c4e26ce71ee7f756fb7a88":"":128:"d5bdf8ec2896acafb7022708d74646c7":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cbe30216136b7eaf223e6a7b46c06625176d9a08182fa806a63d8b143aa768b":"":"4fe6ace582c4e26ce71ee7f756fb7a88":"":128:"d5bdf8ec2896acafb7022708d74646c7":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f31194c83bb8da979a1eabb3337ceb3d38a663790da74380d8f94142ab8b8797":"":"404efd26b665c97ea75437892cf676b6":"":120:"e491075851eec28c723159cc1b2c76":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f31194c83bb8da979a1eabb3337ceb3d38a663790da74380d8f94142ab8b8797":"":"404efd26b665c97ea75437892cf676b6":"":120:"e491075851eec28c723159cc1b2c76":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"daeed52ae4bf5cbe1ad58ae4ccb3da81fb9c0b6f7619ca21979313ad9d3e83c1":"":"4037eadb11249884b6b38b5525ba2df4":"":120:"360c6ef41cbd9cd4a4e649712d2930":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"daeed52ae4bf5cbe1ad58ae4ccb3da81fb9c0b6f7619ca21979313ad9d3e83c1":"":"4037eadb11249884b6b38b5525ba2df4":"":120:"360c6ef41cbd9cd4a4e649712d2930":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ad81c34389406a965c60edb3214663ac4a6bd5cfd154ae8d9dc86dae93def64":"":"cebbce06a88852d3bb2978dbe2b5995a":"":120:"bd7ca9f6bd1099cde87c0f0d7cc887":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ad81c34389406a965c60edb3214663ac4a6bd5cfd154ae8d9dc86dae93def64":"":"cebbce06a88852d3bb2978dbe2b5995a":"":120:"bd7ca9f6bd1099cde87c0f0d7cc887":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4c152ba30aefa5b2a08b0b4d9bf3f16fc208bb0bc4c4eca9411dc262d9276bad":"":"008d040fbd7342464209f330cf56722c":"":112:"c87107585751e666bedae2b1b7e8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4c152ba30aefa5b2a08b0b4d9bf3f16fc208bb0bc4c4eca9411dc262d9276bad":"":"008d040fbd7342464209f330cf56722c":"":112:"c87107585751e666bedae2b1b7e8":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9aed4ae6b1d857fdcbe5aec6db38440613dcc49f24aa31fba1f300b2585723f1":"":"947c5f0432723f2d7b560eca90842df1":"":112:"7d331fedcea0fd1e9e6a84385467":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9aed4ae6b1d857fdcbe5aec6db38440613dcc49f24aa31fba1f300b2585723f1":"":"947c5f0432723f2d7b560eca90842df1":"":112:"7d331fedcea0fd1e9e6a84385467":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cc80bc031676eff5f34dd076388a5130e985f9e06df4b4bf8490ff9ff20aae73":"":"51f639467083377795111d44f7d16592":"":112:"02d31f29e15f60ae3bee1ad7ea65":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cc80bc031676eff5f34dd076388a5130e985f9e06df4b4bf8490ff9ff20aae73":"":"51f639467083377795111d44f7d16592":"":112:"02d31f29e15f60ae3bee1ad7ea65":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"db7a40213b5b4b07e9900dc28f599403b0579cbce13fcd44dff090062f952686":"":"aea6f8690f865bca9f77a5ff843d2365":"":104:"7f2280776d6cd6802b3c85083c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"db7a40213b5b4b07e9900dc28f599403b0579cbce13fcd44dff090062f952686":"":"aea6f8690f865bca9f77a5ff843d2365":"":104:"7f2280776d6cd6802b3c85083c":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"299b874eaa8b7baf769f81f4988a41e2708ae928e69a5ba7b893e8e6b2db5c3b":"":"2aa04d85d2c0dc6f5294cb71c0d89ac1":"":104:"ea01723a22838ed65ceb80b1cf":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"299b874eaa8b7baf769f81f4988a41e2708ae928e69a5ba7b893e8e6b2db5c3b":"":"2aa04d85d2c0dc6f5294cb71c0d89ac1":"":104:"ea01723a22838ed65ceb80b1cf":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a6c7b4c8175db4cf23d0593ed8ea949043880fc02e2725f0ab90ae638f9dcfce":"":"ae07f8c7ac82c4f4c086e04a20db12bc":"":104:"1132e4fff06db51ff135ed9ced":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a6c7b4c8175db4cf23d0593ed8ea949043880fc02e2725f0ab90ae638f9dcfce":"":"ae07f8c7ac82c4f4c086e04a20db12bc":"":104:"1132e4fff06db51ff135ed9ced":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b98e1bf76828b65a81005449971fdc8b11be546d31de6616cd73c5813050c326":"":"929b006eb30d69b49a7f52392d7d3f11":"":96:"33940d330f7c019a57b74f2d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b98e1bf76828b65a81005449971fdc8b11be546d31de6616cd73c5813050c326":"":"929b006eb30d69b49a7f52392d7d3f11":"":96:"33940d330f7c019a57b74f2d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"09ccef64ae761a70fe16772cba462b058a69477c91595de26a5f1bd637c3816f":"":"e34b19381f05693f7606ce043626664d":"":96:"2adc2c45947bfa7faa5c464a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"09ccef64ae761a70fe16772cba462b058a69477c91595de26a5f1bd637c3816f":"":"e34b19381f05693f7606ce043626664d":"":96:"2adc2c45947bfa7faa5c464a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"654cf46598e5ad3e243472a459bcd80f1e026a65429352dbd56e73fcc5895d1c":"":"a56f27709e670b85e5917d5c1d5b0cc2":"":96:"177b9a5e6d9731419dd33c5c":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"654cf46598e5ad3e243472a459bcd80f1e026a65429352dbd56e73fcc5895d1c":"":"a56f27709e670b85e5917d5c1d5b0cc2":"":96:"177b9a5e6d9731419dd33c5c":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84bca1b2768b9202bf194f2d5e5a0a5f51fd8bb725f2bab8a3fccbdb64a4ea70":"":"c45b2708c5bdf65ec6cc66b6dfb3623b":"":64:"fe82300adffd8c17":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84bca1b2768b9202bf194f2d5e5a0a5f51fd8bb725f2bab8a3fccbdb64a4ea70":"":"c45b2708c5bdf65ec6cc66b6dfb3623b":"":64:"fe82300adffd8c17":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c8ae011795c9a60ad7660a31fe354fa6f7e9c2724d7a126436291680cd95c007":"":"1bd9ea6186450f9cd253ccfed2812b1c":"":64:"35214bbc510430e3":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c8ae011795c9a60ad7660a31fe354fa6f7e9c2724d7a126436291680cd95c007":"":"1bd9ea6186450f9cd253ccfed2812b1c":"":64:"35214bbc510430e3":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"df2f0a8a3849f497d12bda44e12ce30a6957f3febcd5ec9bc134171326ca66d3":"":"728cb9608b67a489a382aa677b1f4f5b":"":64:"e2ef5d9cc5791c01":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"df2f0a8a3849f497d12bda44e12ce30a6957f3febcd5ec9bc134171326ca66d3":"":"728cb9608b67a489a382aa677b1f4f5b":"":64:"e2ef5d9cc5791c01":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78e8a8ad1ecd17446cf9cd9c56facfd4e10faf5762da0fd0da177f6a9b9c3a71":"":"f169ce6f3ccc58f6434ae2b8ad1a63a1":"":32:"0fe57572":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"78e8a8ad1ecd17446cf9cd9c56facfd4e10faf5762da0fd0da177f6a9b9c3a71":"":"f169ce6f3ccc58f6434ae2b8ad1a63a1":"":32:"0fe57572":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"02ca6d8a862e25db9d68e4404abc107e700135df4157cfb135ce98eaa33151c9":"":"7b722fdd43cff20832812f9baf2d6791":"":32:"72dea6cc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"02ca6d8a862e25db9d68e4404abc107e700135df4157cfb135ce98eaa33151c9":"":"7b722fdd43cff20832812f9baf2d6791":"":32:"72dea6cc":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a2b709dbcc3a4fb15b3ad541fb008c381b7e985b57df52f07ca7cd26ab1ecc4":"":"729baa4c0ef75ed8aae746376b39fe3c":"":32:"2a0d607c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9a2b709dbcc3a4fb15b3ad541fb008c381b7e985b57df52f07ca7cd26ab1ecc4":"":"729baa4c0ef75ed8aae746376b39fe3c":"":32:"2a0d607c":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"449d39f863e4909984b37f2e5c09ea4d4b3e9fac67bd57c299e4e1d1f084aaa3":"":"d8e9118f331bb5a359f0aa8882861b72":"4ddcae0bc24d622e12bdeaac73e8d1ab7957af051d27dfaafce53aeed4cdd3f989ea25989a2f41cfb3c38dbd841c5560b0b5ab1861b1fbcd236865d13da55b50219462e021f8a21848a64a85326031fcec8fe47a6ef4a435dd2b2fff637644ffcf3914ef2dfa5dd556421bfd297be150b31db039f0f2cc422b282e659e70cceb":128:"c595b9d99414891228c9fa5edb5fcce3":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"449d39f863e4909984b37f2e5c09ea4d4b3e9fac67bd57c299e4e1d1f084aaa3":"":"d8e9118f331bb5a359f0aa8882861b72":"4ddcae0bc24d622e12bdeaac73e8d1ab7957af051d27dfaafce53aeed4cdd3f989ea25989a2f41cfb3c38dbd841c5560b0b5ab1861b1fbcd236865d13da55b50219462e021f8a21848a64a85326031fcec8fe47a6ef4a435dd2b2fff637644ffcf3914ef2dfa5dd556421bfd297be150b31db039f0f2cc422b282e659e70cceb":128:"c595b9d99414891228c9fa5edb5fcce3":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e70e66813fc48f984dcda4d1c9c24f1d5d1b71ecfc8bb9581782e7cca5a5cc6":"":"d804f1051e72c9b7117002b862eb45ff":"0b1ab2b7a87cebac668c7a532fa8fa56a22cabf0c41fc1e6744ffe07c857c6865d623f508351f98f3f0c577d1eb94300a30a445472218c8ac626b0bee7d4c122d33f8130436a89add341e8ef7e00694afb4ad80d314d87ad3f921c7105eed05431b8151df7cff2c8e3790efd4acd3f60332dc7f34fdd90beef70f9093361d65b":128:"c09c2e3fdfefa222f7345ae4efb978fc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3e70e66813fc48f984dcda4d1c9c24f1d5d1b71ecfc8bb9581782e7cca5a5cc6":"":"d804f1051e72c9b7117002b862eb45ff":"0b1ab2b7a87cebac668c7a532fa8fa56a22cabf0c41fc1e6744ffe07c857c6865d623f508351f98f3f0c577d1eb94300a30a445472218c8ac626b0bee7d4c122d33f8130436a89add341e8ef7e00694afb4ad80d314d87ad3f921c7105eed05431b8151df7cff2c8e3790efd4acd3f60332dc7f34fdd90beef70f9093361d65b":128:"c09c2e3fdfefa222f7345ae4efb978fc":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8e534041090b45b80f287dc5fa20ebda017ad81b0530e680f62c6280fd8881af":"":"ead675b019ef5c6bbf4985f2a382d6c1":"b1db220052c4bebcef27eed6db0dc91be481179d71160c5a2ddb2fe497a05484840b04cce48980057d770fbbd0d5f3d5c633b55470617ad2cab5767188283310337825c4b0eafe13b5b11293dec230dad43b220885105767938c7ec4600fe063f98aa14bc6afb886fc874c10546749da295f571e696305bd9165486e29f43f52":128:"9aa0cdad5686ca515cd58aed94938ef4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8e534041090b45b80f287dc5fa20ebda017ad81b0530e680f62c6280fd8881af":"":"ead675b019ef5c6bbf4985f2a382d6c1":"b1db220052c4bebcef27eed6db0dc91be481179d71160c5a2ddb2fe497a05484840b04cce48980057d770fbbd0d5f3d5c633b55470617ad2cab5767188283310337825c4b0eafe13b5b11293dec230dad43b220885105767938c7ec4600fe063f98aa14bc6afb886fc874c10546749da295f571e696305bd9165486e29f43f52":128:"9aa0cdad5686ca515cd58aed94938ef4":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2de18874470c09db683cf45cd752bdfa8bf33e7967220b1a69f41f2a02da1d80":"":"af30eb2d0a0c2a50ea413f3285aa88d4":"22889b868d8ccc9f488406813caed199b23091ddd796c8632f564e7cf5a39dfb725266a931fec958659b6fc5b6b9343b8217edb0acb010afc9416601155262b57bd398d62f555953f0e15958e19ae004fbc9cb25e0269a9eaa38a4635a27bfa719fb249fa49337796bcf5f416bba87fbf3b19f0d8c11290c25ca50bbdc822f01":120:"646bbc9b14681af65b0d1c4c9f1d0d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2de18874470c09db683cf45cd752bdfa8bf33e7967220b1a69f41f2a02da1d80":"":"af30eb2d0a0c2a50ea413f3285aa88d4":"22889b868d8ccc9f488406813caed199b23091ddd796c8632f564e7cf5a39dfb725266a931fec958659b6fc5b6b9343b8217edb0acb010afc9416601155262b57bd398d62f555953f0e15958e19ae004fbc9cb25e0269a9eaa38a4635a27bfa719fb249fa49337796bcf5f416bba87fbf3b19f0d8c11290c25ca50bbdc822f01":120:"646bbc9b14681af65b0d1c4c9f1d0d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1a1bb9122e762ecd7ff861a1d65e52607d98e7ae5bd1c3a944e443710f3b0599":"":"32f99ea4cbf52c2701c2252e5e6c863d":"91b7a70c3a06c1f7f2ea584acb5dd76177ba07323c94f2e8f7cbe93fc0bb7c389c3c88e16aa53174f0fc373bc778a6ccf91bf61b6e92c2969d3441eb17a0a835d30dcf882472a6d3cb036533b04d79f05ebfaadf221ae1c14af3f02fa41867acfdfa35f81e8a9d11d42b9a63288c759063c0c3040c3e6ee69cf7c75f9c33fea1":120:"a8e29e08623a3efdbbe8b111de30a4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1a1bb9122e762ecd7ff861a1d65e52607d98e7ae5bd1c3a944e443710f3b0599":"":"32f99ea4cbf52c2701c2252e5e6c863d":"91b7a70c3a06c1f7f2ea584acb5dd76177ba07323c94f2e8f7cbe93fc0bb7c389c3c88e16aa53174f0fc373bc778a6ccf91bf61b6e92c2969d3441eb17a0a835d30dcf882472a6d3cb036533b04d79f05ebfaadf221ae1c14af3f02fa41867acfdfa35f81e8a9d11d42b9a63288c759063c0c3040c3e6ee69cf7c75f9c33fea1":120:"a8e29e08623a3efdbbe8b111de30a4":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bfad1e8f9850577f9ba3f290e9a5e91b494c2d99534220362e171a7543177ac":"":"8410886b70c57d7ded8596443bd1b157":"ca801c83596795515ea931edba00e06e332bf84246b7036e10b317e2d09a51b2981fcb664ee3bf4180bb0b12ed1cda221abc6790b27c26914f5ef9cea9536e2453cd5b247cb054e295c2687b725a97cbc484b8eb86c6ceee03bd07a54a9301a3ac0ddb23aecb825a238252e7575329058b40e75575a7f16439edf5be163ce5f5":120:"e3645db0c600dba52044efcecfc331":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3bfad1e8f9850577f9ba3f290e9a5e91b494c2d99534220362e171a7543177ac":"":"8410886b70c57d7ded8596443bd1b157":"ca801c83596795515ea931edba00e06e332bf84246b7036e10b317e2d09a51b2981fcb664ee3bf4180bb0b12ed1cda221abc6790b27c26914f5ef9cea9536e2453cd5b247cb054e295c2687b725a97cbc484b8eb86c6ceee03bd07a54a9301a3ac0ddb23aecb825a238252e7575329058b40e75575a7f16439edf5be163ce5f5":120:"e3645db0c600dba52044efcecfc331":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"65debdf2f2191a6cd8de8ad4d5d4d0d8f731f67744e2545df6b2a7cba89c1ee0":"":"fdab2ee547dd8b6f5a4ea2dd19697b3e":"d2b0a0438ee0f145aec9a7ca452b788ecb473152b78fb75f6ace721afc7b0ae1942049b790f3a5b6221a8760295659756d35347cc04029be03459f3e23a71209b4e0bbe13a253a888c83db23376d3a6d9a539f7c9fa4a12dc64297e7c93dfa0ab53ef76b6e1d95bf6f3d5e6ee8f08662fc03ec9d40eff0a43f23ac313671bfd9":112:"c25fc157c3f2474885e2eea48aea":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"65debdf2f2191a6cd8de8ad4d5d4d0d8f731f67744e2545df6b2a7cba89c1ee0":"":"fdab2ee547dd8b6f5a4ea2dd19697b3e":"d2b0a0438ee0f145aec9a7ca452b788ecb473152b78fb75f6ace721afc7b0ae1942049b790f3a5b6221a8760295659756d35347cc04029be03459f3e23a71209b4e0bbe13a253a888c83db23376d3a6d9a539f7c9fa4a12dc64297e7c93dfa0ab53ef76b6e1d95bf6f3d5e6ee8f08662fc03ec9d40eff0a43f23ac313671bfd9":112:"c25fc157c3f2474885e2eea48aea":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"496ae810380460d40cd2fdae8c0739f16b87205cc7f57db0a71a473eb361d570":"":"77233de96f5e1744337778212b411bd5":"85f5b54b4c4af5c808120bd28d98e44e96f4126623e57684957e9fc4fd1a2d0583940b8fc8314a249325476e8d05247831b04709580ae714e8187cd38f9559419e14c9fc4f8c454ec191b8ef2a3610988fe3339d0dc6b72f5978f9eff9d596dfabf27056e3a908c6497267461386e860f6b9d65526294bcb92908b5661b06b5a":112:"4ed91af6340e70b0c2b94ab6f82e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"496ae810380460d40cd2fdae8c0739f16b87205cc7f57db0a71a473eb361d570":"":"77233de96f5e1744337778212b411bd5":"85f5b54b4c4af5c808120bd28d98e44e96f4126623e57684957e9fc4fd1a2d0583940b8fc8314a249325476e8d05247831b04709580ae714e8187cd38f9559419e14c9fc4f8c454ec191b8ef2a3610988fe3339d0dc6b72f5978f9eff9d596dfabf27056e3a908c6497267461386e860f6b9d65526294bcb92908b5661b06b5a":112:"4ed91af6340e70b0c2b94ab6f82e":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aca188183b46139cc7cffc82a6aaaeb2fd73cecad14e75c663bd62daf1ec711d":"":"7bbf7fb55eb70cce94cc6a2b67de55ba":"015cfba90f069545fed60f31992ff3d3c3592eb91e7a53df5978ded64291954cb99a57de82d5398ce782b68d14ac04a8b425395bd076ead59eb445721bdb2f45e19fa089117800cbbac7b8313fb165ccb1122acb654e1242dc7fe6885ea1cbb7281b1270cfa1549cdfe9b47caf47b4ac3807e562e48c066566f5e606b5023b47":112:"3bcb5c2a4261d75bfa106fb25ee1":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aca188183b46139cc7cffc82a6aaaeb2fd73cecad14e75c663bd62daf1ec711d":"":"7bbf7fb55eb70cce94cc6a2b67de55ba":"015cfba90f069545fed60f31992ff3d3c3592eb91e7a53df5978ded64291954cb99a57de82d5398ce782b68d14ac04a8b425395bd076ead59eb445721bdb2f45e19fa089117800cbbac7b8313fb165ccb1122acb654e1242dc7fe6885ea1cbb7281b1270cfa1549cdfe9b47caf47b4ac3807e562e48c066566f5e606b5023b47":112:"3bcb5c2a4261d75bfa106fb25ee1":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8cd6815f6ec15f03b7a53f159e877a5981e0ab7f6e6c261ddde4b47cbb2f2366":"":"c431c07d9adf5f61204a017259cddd75":"4e1a835402bde4f5227e64b46a1f8d0f23a9434e189377fcdf1b9621ba1987eb86a7f3b97ed0babfd674e74c5604a03dd016d71000a72bbbd00a7f7fe56ad0fcb36a3e24dd0fdb63bd66d4db415f35012416ed599796ca3f678df7eb5a1b17f75abb348ddd3b366369a7b362c9488aedab836b61f9a158f0b129c8ca0a53a81e":104:"0e463806ff34e206f703dd96b3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8cd6815f6ec15f03b7a53f159e877a5981e0ab7f6e6c261ddde4b47cbb2f2366":"":"c431c07d9adf5f61204a017259cddd75":"4e1a835402bde4f5227e64b46a1f8d0f23a9434e189377fcdf1b9621ba1987eb86a7f3b97ed0babfd674e74c5604a03dd016d71000a72bbbd00a7f7fe56ad0fcb36a3e24dd0fdb63bd66d4db415f35012416ed599796ca3f678df7eb5a1b17f75abb348ddd3b366369a7b362c9488aedab836b61f9a158f0b129c8ca0a53a81e":104:"0e463806ff34e206f703dd96b3":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8f0a72abcda104aa7fae501f9a3b686d00d3f6fe984731db8a2865bfec587073":"":"ab8acd063775d1b1314f14e90fddd1be":"02c6d426e7f20b725d8cde0a6382e49b029b52126889013ef45251f27b2fadb95ca4a9a3b16ad06999eeca4a473e813045db4942e9b9ff2e5a5e429d9bac298372344d1b781d5facabf6d779643f31ada6124eb50aad599044b54279ec9b25714ac8a3b9ad2487cec7f4b1ee245d7be3d496d6af1d4cbee1c8201312541f3064":104:"3f0ccc134091e0c0425887b1b9":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8f0a72abcda104aa7fae501f9a3b686d00d3f6fe984731db8a2865bfec587073":"":"ab8acd063775d1b1314f14e90fddd1be":"02c6d426e7f20b725d8cde0a6382e49b029b52126889013ef45251f27b2fadb95ca4a9a3b16ad06999eeca4a473e813045db4942e9b9ff2e5a5e429d9bac298372344d1b781d5facabf6d779643f31ada6124eb50aad599044b54279ec9b25714ac8a3b9ad2487cec7f4b1ee245d7be3d496d6af1d4cbee1c8201312541f3064":104:"3f0ccc134091e0c0425887b1b9":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"417135cad74280e6f8597dc791431c95cb8fa63bbf7197e3ab37c4b1d6d9438a":"":"0fe22d9ba1d0e32656e3a9f07a517a27":"a0b2712e81d329d5b076a4be2ad6823cee6dbd17d9a592d065bdebb92b1ff37a56bf2f5e5341f39c574246ccda19e5f35fede49c9ba958f3920cc5440fb404fab7846884ca0c2a3af5b51f4fe97a1395571319cc5b40f8aac986d77de280db82343983982638326ef003e0c013af19c34672975dc99ccc0853a1acf7c617d965":104:"888b836c9111073924a9b43069":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"417135cad74280e6f8597dc791431c95cb8fa63bbf7197e3ab37c4b1d6d9438a":"":"0fe22d9ba1d0e32656e3a9f07a517a27":"a0b2712e81d329d5b076a4be2ad6823cee6dbd17d9a592d065bdebb92b1ff37a56bf2f5e5341f39c574246ccda19e5f35fede49c9ba958f3920cc5440fb404fab7846884ca0c2a3af5b51f4fe97a1395571319cc5b40f8aac986d77de280db82343983982638326ef003e0c013af19c34672975dc99ccc0853a1acf7c617d965":104:"888b836c9111073924a9b43069":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"304824914e32ea0efd61be6972586093349bd2cc2cf0cff44be943682b2dbff5":"":"b6d927a71929029f6766be42746f7cb1":"7281c81c7514f4b17cb125c4649006ef8959a400a1e4d609d277e363e433725fa32346a10bcbd826b6afc8222158920d0a2db1e6fc915e81231c34c3941ecf3c6f94ffe2136190cae3dc39a4277acbc247f36291b5614a8433b1a0780434a6c50521b72ec25145bbd3b192647155d5dd9df9e66762d39592602ea99bf9bfff49":96:"b6044c4d7f59491f68b2c61e":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"304824914e32ea0efd61be6972586093349bd2cc2cf0cff44be943682b2dbff5":"":"b6d927a71929029f6766be42746f7cb1":"7281c81c7514f4b17cb125c4649006ef8959a400a1e4d609d277e363e433725fa32346a10bcbd826b6afc8222158920d0a2db1e6fc915e81231c34c3941ecf3c6f94ffe2136190cae3dc39a4277acbc247f36291b5614a8433b1a0780434a6c50521b72ec25145bbd3b192647155d5dd9df9e66762d39592602ea99bf9bfff49":96:"b6044c4d7f59491f68b2c61e":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8a10e9abe9389738e12a4bb6f553ae81e8bd320e0dfbc05fbae2128c1fde7a23":"":"6da44354e198e3beb54792718becbcc1":"199d754630135b669bf2ec581d3027a569412ab39a78dd9d482e87b778ec65c6473656260c27827e00e566f1e3728fd7bc1853a39d00e43752c6f62c6f9b542a302eea4fd314473674f6926a878ec1e4b475d889126ce6317115aea7660b86ab7f7595695787f6954903f72361c917523615a86d6ce724bd4a20c9257984c0c6":96:"5c5683e587baf2bd32de3df5":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"8a10e9abe9389738e12a4bb6f553ae81e8bd320e0dfbc05fbae2128c1fde7a23":"":"6da44354e198e3beb54792718becbcc1":"199d754630135b669bf2ec581d3027a569412ab39a78dd9d482e87b778ec65c6473656260c27827e00e566f1e3728fd7bc1853a39d00e43752c6f62c6f9b542a302eea4fd314473674f6926a878ec1e4b475d889126ce6317115aea7660b86ab7f7595695787f6954903f72361c917523615a86d6ce724bd4a20c9257984c0c6":96:"5c5683e587baf2bd32de3df5":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d164ffde5dd684becaf73e9667e3e6acb316682c41aea247899e104a54dd7a7f":"":"1d388e19e9d7a9750e2fc1187d4b075a":"f166a5b6f91261cda56f1a537f42ffb8aed10af5e0248f8910034b92dbc58d25953f1497f571d31fbf5ec30d92234b440161703851f0e43530418147ce6270fbcb5db33ab819ba8973051908704b6bea8aaca0718947e6aa82498a6e26a813981783ed9bf9d02eb1ea60927530c4700ff21f00179002b27903dd4103bbc5c645":96:"52e10495105799ead991547b":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d164ffde5dd684becaf73e9667e3e6acb316682c41aea247899e104a54dd7a7f":"":"1d388e19e9d7a9750e2fc1187d4b075a":"f166a5b6f91261cda56f1a537f42ffb8aed10af5e0248f8910034b92dbc58d25953f1497f571d31fbf5ec30d92234b440161703851f0e43530418147ce6270fbcb5db33ab819ba8973051908704b6bea8aaca0718947e6aa82498a6e26a813981783ed9bf9d02eb1ea60927530c4700ff21f00179002b27903dd4103bbc5c645":96:"52e10495105799ead991547b":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2854188c28b15af4b8e528ab25c0950fc1384976f242716c91bddeec06f2fdea":"":"075af9c31f5252b8920092cbd999e7a0":"e9452f71093843a025bb5f655eb6a4e8316ab5946484b11818f22b62f4df75d5891fa3397537093a261dc9a7648b7477ea1f5fc761716e302763364bcab7992595edd0fc1c7f7ac719c879e6616e2007948eb8530065a6cccf73d0fe4a0598819b471b0856e6d90ea0fc0e5d36a30ee925b6b8e5dbf40e77f01efe782c0bb4f7":64:"6ff8fd87e5a31eb6":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2854188c28b15af4b8e528ab25c0950fc1384976f242716c91bddeec06f2fdea":"":"075af9c31f5252b8920092cbd999e7a0":"e9452f71093843a025bb5f655eb6a4e8316ab5946484b11818f22b62f4df75d5891fa3397537093a261dc9a7648b7477ea1f5fc761716e302763364bcab7992595edd0fc1c7f7ac719c879e6616e2007948eb8530065a6cccf73d0fe4a0598819b471b0856e6d90ea0fc0e5d36a30ee925b6b8e5dbf40e77f01efe782c0bb4f7":64:"6ff8fd87e5a31eb6":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2bfc445ac0365ae6c3c3815fd18bbd0c60ea224f6620d9b6ac442a500221f104":"":"43c5f3367a9955aaee1a0c4d4a330059":"db0bae8ce7c66a8ba2fedec22f236212e9a7ad72b371de285c7dc6d2f6c22df0ce4920e0f03f91eb1653c4490050b9f18a2a047115796f0adc41707d1ffcbf148aed5c82013f557e6c28f49434fc4eb20112f43566f212c48cec9894ac40772fcd9b611ee9444df7b73e35b8a38428ccb064c9c50491d2535e0b539f424db83e":64:"49aaa806cb2eeadd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2bfc445ac0365ae6c3c3815fd18bbd0c60ea224f6620d9b6ac442a500221f104":"":"43c5f3367a9955aaee1a0c4d4a330059":"db0bae8ce7c66a8ba2fedec22f236212e9a7ad72b371de285c7dc6d2f6c22df0ce4920e0f03f91eb1653c4490050b9f18a2a047115796f0adc41707d1ffcbf148aed5c82013f557e6c28f49434fc4eb20112f43566f212c48cec9894ac40772fcd9b611ee9444df7b73e35b8a38428ccb064c9c50491d2535e0b539f424db83e":64:"49aaa806cb2eeadd":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b828f99aaf751bf22d993ed682e488595617a607ed74aaacbb6b60457453080":"":"d48dac1d8d77e245420feb2598812418":"f50f785f4e7c848a55a616ecf4b6b1e1ca85e16de7100c7e4273d411bd95c1380ee157ba501ba9616980195f34e39f43e335f33253342feb8ed64443483c721b85241a0320b3cac83104de2db47188c61a373fba592ea16feeefdee1f2bb43927396f58151418672ebb74afff5c029503a0d0be81430e81ed443e08b74c03183":64:"a5b71ecf845b25d0":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b828f99aaf751bf22d993ed682e488595617a607ed74aaacbb6b60457453080":"":"d48dac1d8d77e245420feb2598812418":"f50f785f4e7c848a55a616ecf4b6b1e1ca85e16de7100c7e4273d411bd95c1380ee157ba501ba9616980195f34e39f43e335f33253342feb8ed64443483c721b85241a0320b3cac83104de2db47188c61a373fba592ea16feeefdee1f2bb43927396f58151418672ebb74afff5c029503a0d0be81430e81ed443e08b74c03183":64:"a5b71ecf845b25d0":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b6da11d69fca3e4c907628d3eb63d95c7e502fc901372fd097e064e70831432":"":"6fe2148f250ea178d4c8ca8423ead87d":"a8097bb74ded776f578eb7588f5ef8915db9bfa7262af700c8e76ee114e07557b6786dd5a60a66b2703e7c9de5d6b42aca92568aec5d1ecc298dbd0edb150b8cc13c9a78698f7674caa94da6cacd1f3ef4ca4238c59830ea725ab3a6284e28966c8c32d9bccfb0cfd6583a5ca309debe86549a6f317d15c5f928cbc7f473310c":32:"e9cdbc52":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b6da11d69fca3e4c907628d3eb63d95c7e502fc901372fd097e064e70831432":"":"6fe2148f250ea178d4c8ca8423ead87d":"a8097bb74ded776f578eb7588f5ef8915db9bfa7262af700c8e76ee114e07557b6786dd5a60a66b2703e7c9de5d6b42aca92568aec5d1ecc298dbd0edb150b8cc13c9a78698f7674caa94da6cacd1f3ef4ca4238c59830ea725ab3a6284e28966c8c32d9bccfb0cfd6583a5ca309debe86549a6f317d15c5f928cbc7f473310c":32:"e9cdbc52":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c5ae9328be49e761064080fc213e53e373fd86359a09d0355e2d438d9b8e68f1":"":"a7e3f8660ff925d5c88c5aceffbd7026":"2ddddba7a56cc808aec4602f09ae9bd78887827bf0315d8dbe16821606ef9d117746dd138bf1f23565d1ab8f4cee36d53fe3730632c5df9f12109b16edbeae285bb49dfdd155f5dc97b319a85362d53cc86817b7c1c31e5e87c9f37422f133d00dd0776bd92ab05ce6860573cd911645cfe3fbe515e85f744899a447fe443653":32:"e35dbac8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c5ae9328be49e761064080fc213e53e373fd86359a09d0355e2d438d9b8e68f1":"":"a7e3f8660ff925d5c88c5aceffbd7026":"2ddddba7a56cc808aec4602f09ae9bd78887827bf0315d8dbe16821606ef9d117746dd138bf1f23565d1ab8f4cee36d53fe3730632c5df9f12109b16edbeae285bb49dfdd155f5dc97b319a85362d53cc86817b7c1c31e5e87c9f37422f133d00dd0776bd92ab05ce6860573cd911645cfe3fbe515e85f744899a447fe443653":32:"e35dbac8":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e4f8ca13ba86c658cc7f42d4f029422209efbd101bc10a1df81a42cfb3a0f79f":"":"1a362fa0e4054ba11e4b06d59c8bc9cf":"e7ad5c75aa13659f8ce4b1650c46382645ec67418199b84ea445b8ceef619ef3fbde59ed3d313c459e36fcf87d26ef2b453409b32f1086934c3072c1ef0aac83762d28b1193b9afff2c083ce4300b768b0ae23ff9d3dcf65bc1693f1350da65180620aab205aceacfc683c8be53a332e2d0337a7518d2a5204f9c8d7325a4799":32:"e7a37f15":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e4f8ca13ba86c658cc7f42d4f029422209efbd101bc10a1df81a42cfb3a0f79f":"":"1a362fa0e4054ba11e4b06d59c8bc9cf":"e7ad5c75aa13659f8ce4b1650c46382645ec67418199b84ea445b8ceef619ef3fbde59ed3d313c459e36fcf87d26ef2b453409b32f1086934c3072c1ef0aac83762d28b1193b9afff2c083ce4300b768b0ae23ff9d3dcf65bc1693f1350da65180620aab205aceacfc683c8be53a332e2d0337a7518d2a5204f9c8d7325a4799":32:"e7a37f15":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"00050a21ca1e72cd0924be31b943c60854be6744577de3dd9d1f4fada4a19ea6":"693ffd3d92294857a99c702a0799eeca28ab066dd90917b9ea5ef8f6547f1d90b106cbec8ef2c22af9f8efa6c652f2f97c2baf33af14fe9def230d49524bd65909c3df1490f637f99e788dcc042b40e00bd524c91e2427ef991bf77e7b2f770cda6e90076c5dac4cac7ee3958b53ff8ce846c3a96281f53c2c52f5f3e523536f":"2fc1afc1395d8409919248709f468496":"":128:"e39b6a7fd5ac67a2a1cc24d5eb9d9c74":"cfcd6b9ff7641829cbadeaa2e56f1f150a099eccf3e378fa4da59794dcc4490aa4f9c5db0ab245bec36a7d4557a572008e42f03bc1baff3c946f23f54a4dc9828f106cf4264e4ab40165839d1085e7795b1ae0950f0ee4a08e46ada501b6b51dee0e518129c9426e5bd44c66674a9f99cfe676f002cfd344c5bbd22d3d91e600":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"00050a21ca1e72cd0924be31b943c60854be6744577de3dd9d1f4fada4a19ea6":"693ffd3d92294857a99c702a0799eeca28ab066dd90917b9ea5ef8f6547f1d90b106cbec8ef2c22af9f8efa6c652f2f97c2baf33af14fe9def230d49524bd65909c3df1490f637f99e788dcc042b40e00bd524c91e2427ef991bf77e7b2f770cda6e90076c5dac4cac7ee3958b53ff8ce846c3a96281f53c2c52f5f3e523536f":"2fc1afc1395d8409919248709f468496":"":128:"e39b6a7fd5ac67a2a1cc24d5eb9d9c74":"":"cfcd6b9ff7641829cbadeaa2e56f1f150a099eccf3e378fa4da59794dcc4490aa4f9c5db0ab245bec36a7d4557a572008e42f03bc1baff3c946f23f54a4dc9828f106cf4264e4ab40165839d1085e7795b1ae0950f0ee4a08e46ada501b6b51dee0e518129c9426e5bd44c66674a9f99cfe676f002cfd344c5bbd22d3d91e600":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f10965a66255f0c3515af497ccbb257a09f22ec2d57c5edae322a3e6d2d188ef":"91598690edf2de8b27f9bc7461a84e80811cee544f0542923898328cf157590251f0342cb81d359b5dccc5391a12320d1444c26f24178977dd6705c2b365dc1ece0152c42e2f0ee3162cf886ef5529f4f16a77f3bdd2aeccd405b59addf098521d0d38cc25f1991e11be7ecf24caedb48a2a286d2e560a38fa9001c5a228c4d1":"c571ce0e911de5d883dc4a0787483235":"":128:"6d9d3a5dbc8dce385f092fff14bfffda":"2867996e389e09ec0da94d42e77b1e436b50065b09ca4adf1cd03240444ee699dbb7b3fc081a1869ca607d77d5ff9754fc3c997ff0a4ee17543a2ba77886b88a7128bcc51d3450df58ff3a26671b02c1d213df6adb6f7e853080eb46b504517cbaea162710a9bbc2da8b552eb6b0e0cb98e44fcab0a157312be67974678d143e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f10965a66255f0c3515af497ccbb257a09f22ec2d57c5edae322a3e6d2d188ef":"91598690edf2de8b27f9bc7461a84e80811cee544f0542923898328cf157590251f0342cb81d359b5dccc5391a12320d1444c26f24178977dd6705c2b365dc1ece0152c42e2f0ee3162cf886ef5529f4f16a77f3bdd2aeccd405b59addf098521d0d38cc25f1991e11be7ecf24caedb48a2a286d2e560a38fa9001c5a228c4d1":"c571ce0e911de5d883dc4a0787483235":"":128:"6d9d3a5dbc8dce385f092fff14bfffda":"":"2867996e389e09ec0da94d42e77b1e436b50065b09ca4adf1cd03240444ee699dbb7b3fc081a1869ca607d77d5ff9754fc3c997ff0a4ee17543a2ba77886b88a7128bcc51d3450df58ff3a26671b02c1d213df6adb6f7e853080eb46b504517cbaea162710a9bbc2da8b552eb6b0e0cb98e44fcab0a157312be67974678d143e":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4437ee7d16d8c3ca1aa01e20b66749efa901614d4bb4bee786ad5a5f1bfde2e6":"ff80727a3485cdbc7fab4ee9fadfdc621c538e2055706629046078f1aa3fb687fc728d3a7ffa52ae457b7b5649613eab7bafa464bb435314c49e5900750f7ad39ca9b75df6b2eaa755439e101f67b7ae4cd80dc4a9dea0027048253f2d0a6014056ca69b8c85605b00cf75fa7634a0ddf464270a8c79ce1a1324c4a4c513b24b":"275393276745bc43bae4af1e5d43a31e":"":128:"a82ff1e87d26e4d6e417b60fb2d3ce23":"88f994d276ed20be3932d16f551c4b7e2ed80411f2e72ce098fa0b70c22157a59edab30649fec447dd63f0c87dceca7238ef0d9561b58489ba7bd86f2892743099f40af63c432f78ac0ad0b5c2be47b9e3045e7237b096ee400f430af63a6f309de785caf190f3f4aabbe79f727a741590de542bd343df68d13db55a5f8bab41":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4437ee7d16d8c3ca1aa01e20b66749efa901614d4bb4bee786ad5a5f1bfde2e6":"ff80727a3485cdbc7fab4ee9fadfdc621c538e2055706629046078f1aa3fb687fc728d3a7ffa52ae457b7b5649613eab7bafa464bb435314c49e5900750f7ad39ca9b75df6b2eaa755439e101f67b7ae4cd80dc4a9dea0027048253f2d0a6014056ca69b8c85605b00cf75fa7634a0ddf464270a8c79ce1a1324c4a4c513b24b":"275393276745bc43bae4af1e5d43a31e":"":128:"a82ff1e87d26e4d6e417b60fb2d3ce23":"":"88f994d276ed20be3932d16f551c4b7e2ed80411f2e72ce098fa0b70c22157a59edab30649fec447dd63f0c87dceca7238ef0d9561b58489ba7bd86f2892743099f40af63c432f78ac0ad0b5c2be47b9e3045e7237b096ee400f430af63a6f309de785caf190f3f4aabbe79f727a741590de542bd343df68d13db55a5f8bab41":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe4ec037ce563dadee435cfcb2bf090f1f7ccc7d1b5b4fab2f1b738348f8ed2f":"64eb8a4bda9804c09b04cfcd89094928c21480908b81ee19d6c29c2a3631b1a5bdc8e7f8ea56f7b8b8e14a5208296026785cac3a6afa54be8af4d5faedcd12b6621bde0f8ec5a2635fe72a89468ca7704c73aa40cd2ba97aef08886b27a694d339b00e7d12a31308672f87c06a7388a1432f869eb4cc1da864140b1b33931925":"47f5264f7a5b65b671892a05fa556f63":"":120:"660462b4088f6628a630f2e4170b21":"4a310e035361f98b8c54fb4cef70b1a9c910552ece056ca8fdab54c52308ec0ad7fe9dd1dae92badab5010577de522088768fa6466fbccce22e14c51ca7986c4063d0f06bf578dab16a91856713198a7138395c49c78b6314b57ab72fd079028c8dc351952d90b04a7cd2b245df0c0522447cdb7d3329fd9425fe5cb40a8e7c9":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe4ec037ce563dadee435cfcb2bf090f1f7ccc7d1b5b4fab2f1b738348f8ed2f":"64eb8a4bda9804c09b04cfcd89094928c21480908b81ee19d6c29c2a3631b1a5bdc8e7f8ea56f7b8b8e14a5208296026785cac3a6afa54be8af4d5faedcd12b6621bde0f8ec5a2635fe72a89468ca7704c73aa40cd2ba97aef08886b27a694d339b00e7d12a31308672f87c06a7388a1432f869eb4cc1da864140b1b33931925":"47f5264f7a5b65b671892a05fa556f63":"":120:"660462b4088f6628a630f2e4170b21":"":"4a310e035361f98b8c54fb4cef70b1a9c910552ece056ca8fdab54c52308ec0ad7fe9dd1dae92badab5010577de522088768fa6466fbccce22e14c51ca7986c4063d0f06bf578dab16a91856713198a7138395c49c78b6314b57ab72fd079028c8dc351952d90b04a7cd2b245df0c0522447cdb7d3329fd9425fe5cb40a8e7c9":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6e1ada628ca76eb9832cc6b5efc5c9d2686bb587366a6de2d734233fa95279e":"a0ac738e0fb35246b84a6fbe319f827039515df25d0c0fc6de7c048253ae63d3c561e44a12672ffeae1cb925610b482aa422bbee0e1784fc69baac3a97d69f51e6d2a17957b44b318624ea7ec680a559f4d3f2761d09bee66efb3a312ae6b3ecb673e756b2a0f654671e82500e7ace91f2be2a74bc3bc1ec1a4b6877a53c27c8":"5a100b451e3a63a3e6d4b8a9e59c6bce":"":120:"88df9a1ea54e5bd2ef24da6880b79d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6e1ada628ca76eb9832cc6b5efc5c9d2686bb587366a6de2d734233fa95279e":"a0ac738e0fb35246b84a6fbe319f827039515df25d0c0fc6de7c048253ae63d3c561e44a12672ffeae1cb925610b482aa422bbee0e1784fc69baac3a97d69f51e6d2a17957b44b318624ea7ec680a559f4d3f2761d09bee66efb3a312ae6b3ecb673e756b2a0f654671e82500e7ace91f2be2a74bc3bc1ec1a4b6877a53c27c8":"5a100b451e3a63a3e6d4b8a9e59c6bce":"":120:"88df9a1ea54e5bd2ef24da6880b79d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd5c1e90d78213155c51767c52c290b3d657db8414ee0a7604a2ec7b48105667":"8e987693da0fb77b6d1282eebd3a03e05d9955ff81929b1a2c721574862a067ddee392c7ece52ca1451f3e6e321d7208882d97b4149af6d78d65c054e1bfcdfa62bd2202de32dea8363f8d7f041891ce281840f3cd906ab46ca748e5b3b11890b4014bf0271c9427c874097782d1c13dbb40e78fc8276fc134f3c29923a43a01":"4e022d8d86efbd347e8cbab7e979771f":"":120:"e7df79af0aef011299c3b882e3a45b":"3b20473d9b5018d089e7f74d3fef22ec2805948a9e07689831973c704a6d8db4d090af88d696ab8c3aae9740a2bbd7f03e0b18b2b591e59c335c1043a2578a89b1a9f20fd0dd53f12e00e9bfdb27de8caac772bbfc4de9e4a255a5d1b04e59625a87b8279babe613def58d890d5502abf2f709aab625dcc20c58772832c7bbab":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd5c1e90d78213155c51767c52c290b3d657db8414ee0a7604a2ec7b48105667":"8e987693da0fb77b6d1282eebd3a03e05d9955ff81929b1a2c721574862a067ddee392c7ece52ca1451f3e6e321d7208882d97b4149af6d78d65c054e1bfcdfa62bd2202de32dea8363f8d7f041891ce281840f3cd906ab46ca748e5b3b11890b4014bf0271c9427c874097782d1c13dbb40e78fc8276fc134f3c29923a43a01":"4e022d8d86efbd347e8cbab7e979771f":"":120:"e7df79af0aef011299c3b882e3a45b":"":"3b20473d9b5018d089e7f74d3fef22ec2805948a9e07689831973c704a6d8db4d090af88d696ab8c3aae9740a2bbd7f03e0b18b2b591e59c335c1043a2578a89b1a9f20fd0dd53f12e00e9bfdb27de8caac772bbfc4de9e4a255a5d1b04e59625a87b8279babe613def58d890d5502abf2f709aab625dcc20c58772832c7bbab":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6e3dfc07003bb6a2d82bd5263b2832f47db4e73279266c7a9ea21f4f18eddf83":"a960da222af9d4da5797e6957d59b00f6d3893599c70e95c0984b56eb3329b191703c2532f3288b15ebf655b9b5ee4617484e5ac9c39bb06731d03ebe4fef9495d003b0ed694cf540b4dc759d32629e55512680badd81234bd71ffd55fcb5e6a85031c1dc31ee1ed198939582d8336c905717cc87101dcfcf9d833fac815c8ea":"7c0f49fb54f5e68c84e81add009284e6":"":112:"b2ec0f3da02a9eb3132fb4ebe3b8":"a40b6f70f0572fe0bc70d83368e7c154f7dbd501f52501630a2e523d18e216e07368521f6040d806299397722b99bcf7f85d36b8bed934b49aa1fa76d38783e6a2e392d6d0786d467f7bc894a739ecf94f0fe884a9c391154f8326bf31ea5242a18aa263d04da4b63b11de23b42d3e10a2d5460cb32700cdf50a0d89165ba22a":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6e3dfc07003bb6a2d82bd5263b2832f47db4e73279266c7a9ea21f4f18eddf83":"a960da222af9d4da5797e6957d59b00f6d3893599c70e95c0984b56eb3329b191703c2532f3288b15ebf655b9b5ee4617484e5ac9c39bb06731d03ebe4fef9495d003b0ed694cf540b4dc759d32629e55512680badd81234bd71ffd55fcb5e6a85031c1dc31ee1ed198939582d8336c905717cc87101dcfcf9d833fac815c8ea":"7c0f49fb54f5e68c84e81add009284e6":"":112:"b2ec0f3da02a9eb3132fb4ebe3b8":"":"a40b6f70f0572fe0bc70d83368e7c154f7dbd501f52501630a2e523d18e216e07368521f6040d806299397722b99bcf7f85d36b8bed934b49aa1fa76d38783e6a2e392d6d0786d467f7bc894a739ecf94f0fe884a9c391154f8326bf31ea5242a18aa263d04da4b63b11de23b42d3e10a2d5460cb32700cdf50a0d89165ba22a":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4103b1ddff87a508a219c808a04ad4750668688f4c2ee75b92d28d70b98a2c94":"a00a196193ff07006b7df524824bd0971d63f447a3a7bb1b75c1e2d11789482c115cff677b54948d36dc4de34200bce97be0101d88cee39b177857dd5da3cb0d2f9d6e1150f72a3bd655e0bace1d25a657ba9a7f8dff082b4460432075afb20173da22b49beeb6a030d72ba07869ff4389fc1c28d87018d7c1a9829c21932197":"5cea906737518c2cb901016e30206276":"":112:"3a3a771dd5f31c977e154ef5c73a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4103b1ddff87a508a219c808a04ad4750668688f4c2ee75b92d28d70b98a2c94":"a00a196193ff07006b7df524824bd0971d63f447a3a7bb1b75c1e2d11789482c115cff677b54948d36dc4de34200bce97be0101d88cee39b177857dd5da3cb0d2f9d6e1150f72a3bd655e0bace1d25a657ba9a7f8dff082b4460432075afb20173da22b49beeb6a030d72ba07869ff4389fc1c28d87018d7c1a9829c21932197":"5cea906737518c2cb901016e30206276":"":112:"3a3a771dd5f31c977e154ef5c73a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd8c2f0c330d5db316dae7a16b57d681ca058864f7bd60f3d0de174442283f77":"e2a5ad295d35031535bf13c2993bd0b292e8a9465b9dab738e59ba03670248a1ecc92b38a55bae34729162271cc1572c35fcccb27417b48dfcbff852a7a8845cc829a4461061b558ac8b5930a5c6491ffba04a9d0dff220b3cd5e4fc2e0f3db3b2ddd90328f2cad819573a7856299620b02f5ee0267f3b56981afbf1b7d9e3e1":"387ee8c1e7f047e94d06d0322eec02fc":"":112:"62356850d12b54e39872357cfa03":"17b7f6bdfc1993c56dd9bd674cc276a55a46fdd9fd5fe435b9e4b7ebc7052a9dc76a99e4e43aba7d486603189c90d10a21ad3722c86bf5bc856a0f930ff5bca65be708b76bb8a29105da67f31eebcec81f28aaf526d2f8f0feac393a24959dcd612e2b93b4463f61957d2b3046bcdf855e346601e4c7760c0ca618ee7bf55381":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cd8c2f0c330d5db316dae7a16b57d681ca058864f7bd60f3d0de174442283f77":"e2a5ad295d35031535bf13c2993bd0b292e8a9465b9dab738e59ba03670248a1ecc92b38a55bae34729162271cc1572c35fcccb27417b48dfcbff852a7a8845cc829a4461061b558ac8b5930a5c6491ffba04a9d0dff220b3cd5e4fc2e0f3db3b2ddd90328f2cad819573a7856299620b02f5ee0267f3b56981afbf1b7d9e3e1":"387ee8c1e7f047e94d06d0322eec02fc":"":112:"62356850d12b54e39872357cfa03":"":"17b7f6bdfc1993c56dd9bd674cc276a55a46fdd9fd5fe435b9e4b7ebc7052a9dc76a99e4e43aba7d486603189c90d10a21ad3722c86bf5bc856a0f930ff5bca65be708b76bb8a29105da67f31eebcec81f28aaf526d2f8f0feac393a24959dcd612e2b93b4463f61957d2b3046bcdf855e346601e4c7760c0ca618ee7bf55381":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7e19e400872eed721d560202cd757d3eb99729496b6e3a6d38dd8afe1066045a":"3fb9abc7aba654dfb174e8899c17db222ffbb387b7260fc6f015b54f1cd74284c516e21aae3b72338e5e8dc643cfafca0678f5bda3a7539f1612dddb04366031b5a3eda55f3232c1b176cc9be7cc07e0ebca674a272224929c401a2530efc6d4eed0087b544b12d172a01bc8340d9c2a2ebcb5af8b07d96073a879fda140c196":"d2b277f78e98f1fa16f977ce72ee22a7":"":104:"4c81c044101f458fdfac9ca3b9":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7e19e400872eed721d560202cd757d3eb99729496b6e3a6d38dd8afe1066045a":"3fb9abc7aba654dfb174e8899c17db222ffbb387b7260fc6f015b54f1cd74284c516e21aae3b72338e5e8dc643cfafca0678f5bda3a7539f1612dddb04366031b5a3eda55f3232c1b176cc9be7cc07e0ebca674a272224929c401a2530efc6d4eed0087b544b12d172a01bc8340d9c2a2ebcb5af8b07d96073a879fda140c196":"d2b277f78e98f1fa16f977ce72ee22a7":"":104:"4c81c044101f458fdfac9ca3b9":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d0653934a16fd36c27d54488a1829302b931bed6e26ca26047242b85b50bfb61":"c02347e1add9178d830d8baaad9aeee37e958bedf2cc846e2561fe8c83481d0a8a85911e7f1f6e444b28f30bd96c13c390e80f616feb6844ee6fa486543a2e3f38c138f45b4405e3fb331b64648219aaf1d574be948ccfca6afc18d12488db19c35b05601e47c0af5d49a93a5dd4420f38585c1eb033e173376fa390d3f948df":"94886a1845aebba5ed6b86f580be47f9":"":104:"4be34ff42085ef4443c8b6042d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d0653934a16fd36c27d54488a1829302b931bed6e26ca26047242b85b50bfb61":"c02347e1add9178d830d8baaad9aeee37e958bedf2cc846e2561fe8c83481d0a8a85911e7f1f6e444b28f30bd96c13c390e80f616feb6844ee6fa486543a2e3f38c138f45b4405e3fb331b64648219aaf1d574be948ccfca6afc18d12488db19c35b05601e47c0af5d49a93a5dd4420f38585c1eb033e173376fa390d3f948df":"94886a1845aebba5ed6b86f580be47f9":"":104:"4be34ff42085ef4443c8b6042d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d0f0ccb88c7cec9496f26a59ddc67dc59ebe49ae3dd89ef3be008598727e214c":"7845e155f4f28021291e7c814a1ace8f42b239990831aa82758fc1e376cace0b6f668f7f2f224dede1ef5b1df7ae74b2c01483701044acbbb72a9216eec6b7ef0190f114b3c73c6985c4653f11601c774d10b7f9df1f1e1f3ff4fafa20d6525edb37d9e5acfafe6d3468ee068d407fdb56dc718c98425926831253978d727854":"e5ca84b907ac761a5e68a9080da0a88a":"":104:"c8f78e4139dd3eaf2baef8aafb":"0cc3ede50b0d3fb9ada11300a3239a383c98f968ad65266d57a195bb18d3e568fe6cabba258da4bee9e923c7c838e06dc887a6c49cc1453ea6a227c6a83e651a8742e0316cad5efc93739393e3603446b5c920a206db1434adbb8ebde4d1a7a8699c7f6c61b2d57c9709b564338423b4f526d6c157647a6c45da9dd521061f05":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d0f0ccb88c7cec9496f26a59ddc67dc59ebe49ae3dd89ef3be008598727e214c":"7845e155f4f28021291e7c814a1ace8f42b239990831aa82758fc1e376cace0b6f668f7f2f224dede1ef5b1df7ae74b2c01483701044acbbb72a9216eec6b7ef0190f114b3c73c6985c4653f11601c774d10b7f9df1f1e1f3ff4fafa20d6525edb37d9e5acfafe6d3468ee068d407fdb56dc718c98425926831253978d727854":"e5ca84b907ac761a5e68a9080da0a88a":"":104:"c8f78e4139dd3eaf2baef8aafb":"":"0cc3ede50b0d3fb9ada11300a3239a383c98f968ad65266d57a195bb18d3e568fe6cabba258da4bee9e923c7c838e06dc887a6c49cc1453ea6a227c6a83e651a8742e0316cad5efc93739393e3603446b5c920a206db1434adbb8ebde4d1a7a8699c7f6c61b2d57c9709b564338423b4f526d6c157647a6c45da9dd521061f05":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e35dcea17cbf391491ae5ba6056d0dd13b348183474dd4b614742751bdebfc32":"5213542beb044910d7fdeec8bb89de93f350760e493286eaef1140485380d429f74a4279c1842a5c64f3ca3381cb5dbb0621de48821bded650cb59703e0ca88f4e9c3d15875f9dc87d85ba7e4bae9986ef8c203fce6f0ce52c28e3a93befb4cc4ba3d963d2283cd30f9bf6ab99d92f2f4f3aff0b022f1751b89d43ea10bbb28a":"fa549b33b5a43d85f012929a4816297a":"":96:"afa61e843cee615c97de42a7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e35dcea17cbf391491ae5ba6056d0dd13b348183474dd4b614742751bdebfc32":"5213542beb044910d7fdeec8bb89de93f350760e493286eaef1140485380d429f74a4279c1842a5c64f3ca3381cb5dbb0621de48821bded650cb59703e0ca88f4e9c3d15875f9dc87d85ba7e4bae9986ef8c203fce6f0ce52c28e3a93befb4cc4ba3d963d2283cd30f9bf6ab99d92f2f4f3aff0b022f1751b89d43ea10bbb28a":"fa549b33b5a43d85f012929a4816297a":"":96:"afa61e843cee615c97de42a7":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"844c50ddc0ac1d9364b21003287d6ae6360d12bbb17a85351362420ee4ca588e":"3a3bf4ccaf05f7c02f5e158dd2c5cb08c6aed4b1ba404a6d8ef9a0737fe2f350b3e22188fc330ea63e35df82f996e3cf94d331c4246cdb25bb2c409762e05ddc21f337edee51b64f1766ad18f520b3f34735b24278d9d647c533a743e0c1e9c81e9dee975cdc47e8582113fd250ef59353605b64acb7c025a97854c1a5c03237":"2f8512bb7e214db774a217a4615139e1":"":96:"f1da1cebe00d80eb4e025feb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"844c50ddc0ac1d9364b21003287d6ae6360d12bbb17a85351362420ee4ca588e":"3a3bf4ccaf05f7c02f5e158dd2c5cb08c6aed4b1ba404a6d8ef9a0737fe2f350b3e22188fc330ea63e35df82f996e3cf94d331c4246cdb25bb2c409762e05ddc21f337edee51b64f1766ad18f520b3f34735b24278d9d647c533a743e0c1e9c81e9dee975cdc47e8582113fd250ef59353605b64acb7c025a97854c1a5c03237":"2f8512bb7e214db774a217a4615139e1":"":96:"f1da1cebe00d80eb4e025feb":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2aae1aa047a20ed2d6d8336d923864cee9404f924031ae327fbfe2d293e1d93c":"8e5b6b9e4e7d01de9a919dd33c0c1eb94dcfebf28847c754c62c1c00642d9e96f15b5d28ad103ff6969be750aadfd02fc146935562c83ec459a932a2fd5fda32eb851e6cff33335abd5c2434ae4f5524d6bc74a38094ced360f4606a1a17096ff06604952c8ca94a9a6dc4a251e13b0e0c54bd8a6dff5f397a1eb1cf186fa518":"3da9af3567d70553ca3a9636f0b26470":"":96:"e1026b3d15d261b2fb47632e":"58c52ea9f3b162511160eed1a68b6f52b3c4f5834af728de97a3d9e4ba337b29aad12636003cf5be9ffbeae0f383f7cf32f645a8f6fc5cdc1cde91c625c69a92bc434ed671e52a0044a48f3fce55cae49a7d065c2a72603a7efe58b5a7b18ac500d1a51420e820357e7a439b1c02198ebe3d4e62d5573a3aa5f40900a21e3b41":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2aae1aa047a20ed2d6d8336d923864cee9404f924031ae327fbfe2d293e1d93c":"8e5b6b9e4e7d01de9a919dd33c0c1eb94dcfebf28847c754c62c1c00642d9e96f15b5d28ad103ff6969be750aadfd02fc146935562c83ec459a932a2fd5fda32eb851e6cff33335abd5c2434ae4f5524d6bc74a38094ced360f4606a1a17096ff06604952c8ca94a9a6dc4a251e13b0e0c54bd8a6dff5f397a1eb1cf186fa518":"3da9af3567d70553ca3a9636f0b26470":"":96:"e1026b3d15d261b2fb47632e":"":"58c52ea9f3b162511160eed1a68b6f52b3c4f5834af728de97a3d9e4ba337b29aad12636003cf5be9ffbeae0f383f7cf32f645a8f6fc5cdc1cde91c625c69a92bc434ed671e52a0044a48f3fce55cae49a7d065c2a72603a7efe58b5a7b18ac500d1a51420e820357e7a439b1c02198ebe3d4e62d5573a3aa5f40900a21e3b41":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f3d69208cb0d27474e9a231cd46eac7c1574fff950c48bbd1ba03fad16f563df":"0d1f06eef5e8f2c81d1a73bb1dca93c22cfb6e40e9948bc75b0d84830fb9216330424f580b89050c3fb3f620eca8f9fd09fb86d2e8b3a0869c6022d8a705fc280d66fd16d3aba7395d6be4bed44145d51d42d56285f3675726d62d94c081364a6d440511de83a613c598b03078e2ec7648c6302defbbea66aafd33e1a4b1686c":"b957f05921d21f2192f587768dc12b4f":"":64:"322374fbb192abbc":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f3d69208cb0d27474e9a231cd46eac7c1574fff950c48bbd1ba03fad16f563df":"0d1f06eef5e8f2c81d1a73bb1dca93c22cfb6e40e9948bc75b0d84830fb9216330424f580b89050c3fb3f620eca8f9fd09fb86d2e8b3a0869c6022d8a705fc280d66fd16d3aba7395d6be4bed44145d51d42d56285f3675726d62d94c081364a6d440511de83a613c598b03078e2ec7648c6302defbbea66aafd33e1a4b1686c":"b957f05921d21f2192f587768dc12b4f":"":64:"322374fbb192abbc":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cb2cdeb17fa6bcb006c7fc60858a12a411804464458db351957e8caf42f1ee6c":"296504131354b2c1928982f12d408ba2377f2d4bbe87e4c69f92a15bf6003910a43bda6c8929df66b3ab1d202a5258cad199f32f36cc30d2dc06199c2a52f7ccadad1fce50123c5f8434dec57cc60cc780263d7aace8f59cc8a6c54bddbaded3adb12ae2ee0bacf6a8da635ff85b51a4e8a1b3dc404863b90059de4ad0f158dd":"31bd7c971a6d330b566567ab19590545":"":64:"efc5a1acf433aaa3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cb2cdeb17fa6bcb006c7fc60858a12a411804464458db351957e8caf42f1ee6c":"296504131354b2c1928982f12d408ba2377f2d4bbe87e4c69f92a15bf6003910a43bda6c8929df66b3ab1d202a5258cad199f32f36cc30d2dc06199c2a52f7ccadad1fce50123c5f8434dec57cc60cc780263d7aace8f59cc8a6c54bddbaded3adb12ae2ee0bacf6a8da635ff85b51a4e8a1b3dc404863b90059de4ad0f158dd":"31bd7c971a6d330b566567ab19590545":"":64:"efc5a1acf433aaa3":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f94170790fadab3240df568197f9d6f6855afaed8d07eceeaa2380121872529f":"ed231b78db082f652bc6310c396993b52de804a82464fa3fac602a1286535f59c67fc2b1b420c7321eb42b971edde24cd4cb9e75c843f2ac6fb8ecdad612d2e5049cf39327aa7a8d43ec821161c385f3fdc92284a764a5d1cbae886f07f93017f83a105bb7c3cc4fc51e2781516a2471b65c940ddae6b550ad37b35f53d7cc64":"2f9c0647a4af7f61ced45f28d45c43f1":"":64:"ab74877a0b223e1c":"1cb5ed0c10cee98ff8ecfa5a1b6592391bbd9f9b1dc1ff351e0af23920d546b5e27d62b94daabd32f7f96a2632dc9fd7c19bf55f3b9b7cd492e76f4d6b0f5b437c155c14a75e65bfc4120bef186da05e06a2fd3696f210292ee422ddbce6e63d99ee766b68363139438733c5e567177f72e52ef2df6a7dd33fc0376d12ec3005":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f94170790fadab3240df568197f9d6f6855afaed8d07eceeaa2380121872529f":"ed231b78db082f652bc6310c396993b52de804a82464fa3fac602a1286535f59c67fc2b1b420c7321eb42b971edde24cd4cb9e75c843f2ac6fb8ecdad612d2e5049cf39327aa7a8d43ec821161c385f3fdc92284a764a5d1cbae886f07f93017f83a105bb7c3cc4fc51e2781516a2471b65c940ddae6b550ad37b35f53d7cc64":"2f9c0647a4af7f61ced45f28d45c43f1":"":64:"ab74877a0b223e1c":"":"1cb5ed0c10cee98ff8ecfa5a1b6592391bbd9f9b1dc1ff351e0af23920d546b5e27d62b94daabd32f7f96a2632dc9fd7c19bf55f3b9b7cd492e76f4d6b0f5b437c155c14a75e65bfc4120bef186da05e06a2fd3696f210292ee422ddbce6e63d99ee766b68363139438733c5e567177f72e52ef2df6a7dd33fc0376d12ec3005":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"797c0091ff8787fe7cd0427c02922620e7f6fb71c52ddcc03a9f25c89ba33490":"2d3efc8900315c3691a8e3c9de3319d4deaf538fcf41aa0e295b861d0ac85baf56d149a6437747dd6976f44016e012b88de542fb8e5b9e4ad10c19deec4b7c0b69bc1b2e33d44a981ded66127dea354b072010b8dc24b85ed2ffeea3b9c0e931619dbbf22677691f0d54fc03eaa162e0ab0d760ad41021f67057c0d6ac19ca8f":"69d81c73008a6827a692fa636fbab8bb":"":32:"be2dda5c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"797c0091ff8787fe7cd0427c02922620e7f6fb71c52ddcc03a9f25c89ba33490":"2d3efc8900315c3691a8e3c9de3319d4deaf538fcf41aa0e295b861d0ac85baf56d149a6437747dd6976f44016e012b88de542fb8e5b9e4ad10c19deec4b7c0b69bc1b2e33d44a981ded66127dea354b072010b8dc24b85ed2ffeea3b9c0e931619dbbf22677691f0d54fc03eaa162e0ab0d760ad41021f67057c0d6ac19ca8f":"69d81c73008a6827a692fa636fbab8bb":"":32:"be2dda5c":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90ce1afb5500489b9edbad987f4009509c847b3e55cdf0c764ef2fb085e3d033":"98482b54edce2bac1cd64d44917dcf117ebfbfe26ad17a9b263447028304f1cf5a69559c05b5d833420f4fddb6e308277d01eb4b3235f1c4b47d33d3899325b55e7be19d43187a5b1b1354ce02a529b3df1c13b4883902ae9fc565079dee825e705f3e580371e4fd86c3b0d31bae98adb529901f346ca07127314152b4370edd":"e119e166471ecf44bc3a070639619931":"":32:"b2f54b3a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90ce1afb5500489b9edbad987f4009509c847b3e55cdf0c764ef2fb085e3d033":"98482b54edce2bac1cd64d44917dcf117ebfbfe26ad17a9b263447028304f1cf5a69559c05b5d833420f4fddb6e308277d01eb4b3235f1c4b47d33d3899325b55e7be19d43187a5b1b1354ce02a529b3df1c13b4883902ae9fc565079dee825e705f3e580371e4fd86c3b0d31bae98adb529901f346ca07127314152b4370edd":"e119e166471ecf44bc3a070639619931":"":32:"b2f54b3a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"29264a90f114a800c0fc3247b3bda00981a12a8f85cf3a19ea4c7ffdd005f4bb":"587c8e53ab5ae8c31e16160b4a41d88798e27f4ad61c573c023c62d4dbb3952eef5026ad7b453fa9e0694347ab8fe50a6cf20da566202b81e325cee9c07ab2d4d53ed45b3ec2d2135936515f8a24f2a8116807dce9df3c44edf64c32647145152ff241d9e018e4101e400af070192dc3b498b5a213d265b4cfc8c8d4d7deccb5":"cf296aa43cb7b328e09c8975e067404e":"":32:"56015c1e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"29264a90f114a800c0fc3247b3bda00981a12a8f85cf3a19ea4c7ffdd005f4bb":"587c8e53ab5ae8c31e16160b4a41d88798e27f4ad61c573c023c62d4dbb3952eef5026ad7b453fa9e0694347ab8fe50a6cf20da566202b81e325cee9c07ab2d4d53ed45b3ec2d2135936515f8a24f2a8116807dce9df3c44edf64c32647145152ff241d9e018e4101e400af070192dc3b498b5a213d265b4cfc8c8d4d7deccb5":"cf296aa43cb7b328e09c8975e067404e":"":32:"56015c1e":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84ff9a8772815b929d55f6052c0354cf3e02bcc8336fcfe5794952b4c45d5d96":"a87de56d49725a1625baf12fd15931fe1a6783dce5d1e744eba108f45e0c105d8141dc027d0e33ad7efb6752b43729715e2f3e2c42ebdab4d5f72f886bd821c4372244699ddded99a63dbe7763a5a3bc21cbfc253cdc2514eba2a4f54e24dca7c207cb3f6ae80153d77fe0641f357d5a073dcd425c38deb77c45f27427345516":"5c044a66e488b853baf479f7dee2aadb":"00304e3d40cbc6d2bee0778462884f4ec047a8c74bb3dd7e100f2b9d0e529fd24730063986117b56ca876b208a3691425ac63afc3d504ccb499c76622eade09717023fcb7d956b01ce24a3e53cb5da472be3fcf5b278b5d9e377de22fab75bc74afa9670f5fe9691aa0ed77e43f6abc67a61ec409ec39fd66ac0307bf195f36f":128:"72ddd9966ede9b684bc981cbb2113313":"aadb8537309940422f67ca393aa6182d67fe7c52092538a15e98a4254f0a9087c7f10903d5e78078c2e55de914dec8b6b35cb720e3e55963c0ac9901e44b83a0e7c5b2d3f002aec0a4a08354febe47b2abb955f2a21107626ef0b8e1e099650812a6fecf36908fce2d078c2735cf7c2b970a309e5c6d6ff29c26a05720c57105":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84ff9a8772815b929d55f6052c0354cf3e02bcc8336fcfe5794952b4c45d5d96":"a87de56d49725a1625baf12fd15931fe1a6783dce5d1e744eba108f45e0c105d8141dc027d0e33ad7efb6752b43729715e2f3e2c42ebdab4d5f72f886bd821c4372244699ddded99a63dbe7763a5a3bc21cbfc253cdc2514eba2a4f54e24dca7c207cb3f6ae80153d77fe0641f357d5a073dcd425c38deb77c45f27427345516":"5c044a66e488b853baf479f7dee2aadb":"00304e3d40cbc6d2bee0778462884f4ec047a8c74bb3dd7e100f2b9d0e529fd24730063986117b56ca876b208a3691425ac63afc3d504ccb499c76622eade09717023fcb7d956b01ce24a3e53cb5da472be3fcf5b278b5d9e377de22fab75bc74afa9670f5fe9691aa0ed77e43f6abc67a61ec409ec39fd66ac0307bf195f36f":128:"72ddd9966ede9b684bc981cbb2113313":"":"aadb8537309940422f67ca393aa6182d67fe7c52092538a15e98a4254f0a9087c7f10903d5e78078c2e55de914dec8b6b35cb720e3e55963c0ac9901e44b83a0e7c5b2d3f002aec0a4a08354febe47b2abb955f2a21107626ef0b8e1e099650812a6fecf36908fce2d078c2735cf7c2b970a309e5c6d6ff29c26a05720c57105":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5ca3991d0160b1729ae1a622dcf4b03b1f4ba86150bd66bf35cbbee9258af10":"62aad5854a238f096bdde0711ac6f5763e7fea29db068ea8c911f17ba91e6d7807883e6fc5ba7db17af33da2b00973008a3425e65cc786ce1b97360019ee2cef74563d54752be436b905705b507c3d62689df4edf0356d26b693eb43d8a2a927a9f3866b7e0e19e84a90447bd6f47e31070fa7c2a71e3f78229ee19fa47e848f":"f8402184d1cc36df07b68ecb1ab42047":"d378cfd29758bcbd21e26a324239c42c992941b3ad68d9f2b3d2def3a051fd172ee882562970ef59798ff8d9eb5f724ff17626156f4cf5d93e41ffef6e525919af6194ea9bbb58c67563d3ffd90e5a6e2a3a33bd1fa3d55eff5dba7cd439d571f7e08014c4780e3d10904ef22b660897e78258da20b2600e88d71c35ecb6329a":128:"9e8b59b4971130557aa84ec3ac7e4133":"556dd32edc0af3c64186fe8c000ddad1516cd14721c93c228e379d4f87e32c79e734539cec930322048f34a2b34931c585d44f09966caf187ec4b9244c991a8a5f263e9da1d08d6086e52535afdb36c7662307521cbceb9ecb470a76970243723fbc1613b6ebbcae261ac2f1936e66ce29ec7350b2e6b2f73a910ade645154f7":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5ca3991d0160b1729ae1a622dcf4b03b1f4ba86150bd66bf35cbbee9258af10":"62aad5854a238f096bdde0711ac6f5763e7fea29db068ea8c911f17ba91e6d7807883e6fc5ba7db17af33da2b00973008a3425e65cc786ce1b97360019ee2cef74563d54752be436b905705b507c3d62689df4edf0356d26b693eb43d8a2a927a9f3866b7e0e19e84a90447bd6f47e31070fa7c2a71e3f78229ee19fa47e848f":"f8402184d1cc36df07b68ecb1ab42047":"d378cfd29758bcbd21e26a324239c42c992941b3ad68d9f2b3d2def3a051fd172ee882562970ef59798ff8d9eb5f724ff17626156f4cf5d93e41ffef6e525919af6194ea9bbb58c67563d3ffd90e5a6e2a3a33bd1fa3d55eff5dba7cd439d571f7e08014c4780e3d10904ef22b660897e78258da20b2600e88d71c35ecb6329a":128:"9e8b59b4971130557aa84ec3ac7e4133":"":"556dd32edc0af3c64186fe8c000ddad1516cd14721c93c228e379d4f87e32c79e734539cec930322048f34a2b34931c585d44f09966caf187ec4b9244c991a8a5f263e9da1d08d6086e52535afdb36c7662307521cbceb9ecb470a76970243723fbc1613b6ebbcae261ac2f1936e66ce29ec7350b2e6b2f73a910ade645154f7":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"df867d1dd8a287821a54479cab6f88636d2aca30e1bf01a5dffc735e17590356":"6517272cac85d7f38902bcb4b96a0c59c4bdc46bfefa6ebacd7f2fb1629b87ca91de2ffefc42ce3cfd34dcbf01b3f7cadcea3f99e6addf35d36c51f2ceb1f85c1f56a04ec9c9fff60cd7fc238674992183ea3de72ef778561b906202b7b83fe6562a0bca9c1e0a18638e8685b998b4192f5120435809ad6e93a0422d00725262":"35019826c51dd1ef07ff915d9ac4ea96":"0375ed93f287eefe414ab2968844bd10148860c528dbf571a77aa74f98cc669a7fc317adc9f7cf2d80dda29b19db635b30a044399f3665b6176ed669146d28f5ada03b3d32d53fe46575a8afcd37f20386d9e36f7e090b4fefadfab7f008e02f1b5022c0eeb81d03443a276eae48c038ed173631687d2450b913b02c97243edb":128:"e49beb083a9b008ae97a17e3825692f0":"723be39bc13adbc48c861b07753f64fac1ae28fc8933acba888b6538721df0a8b91c040a26522fe0dbb7335d8f63d209e89f7cde23afa9ca3c584b336d63a91e07fdd8808b14c3214c96a202e665bbaaa34248ff30348f3d79c9f16e66ad6c5903305acd887a89b6244eb7c2d96e18b13a686de935bf3821444ee20f48678be5":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"df867d1dd8a287821a54479cab6f88636d2aca30e1bf01a5dffc735e17590356":"6517272cac85d7f38902bcb4b96a0c59c4bdc46bfefa6ebacd7f2fb1629b87ca91de2ffefc42ce3cfd34dcbf01b3f7cadcea3f99e6addf35d36c51f2ceb1f85c1f56a04ec9c9fff60cd7fc238674992183ea3de72ef778561b906202b7b83fe6562a0bca9c1e0a18638e8685b998b4192f5120435809ad6e93a0422d00725262":"35019826c51dd1ef07ff915d9ac4ea96":"0375ed93f287eefe414ab2968844bd10148860c528dbf571a77aa74f98cc669a7fc317adc9f7cf2d80dda29b19db635b30a044399f3665b6176ed669146d28f5ada03b3d32d53fe46575a8afcd37f20386d9e36f7e090b4fefadfab7f008e02f1b5022c0eeb81d03443a276eae48c038ed173631687d2450b913b02c97243edb":128:"e49beb083a9b008ae97a17e3825692f0":"":"723be39bc13adbc48c861b07753f64fac1ae28fc8933acba888b6538721df0a8b91c040a26522fe0dbb7335d8f63d209e89f7cde23afa9ca3c584b336d63a91e07fdd8808b14c3214c96a202e665bbaaa34248ff30348f3d79c9f16e66ad6c5903305acd887a89b6244eb7c2d96e18b13a686de935bf3821444ee20f48678be5":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0e8e9ce6294b7fbc534a96bdd060120976a6e08315d2ea73ac61d085cd462a44":"9855f186b51358f0e2111c06bfaaeaec9bf95c55e246375c614fad9883d86c82a20c86538dc5f42a0ea69677d59a20c5112d15d2a8396f12096242ad5d7b838d16ee0679fc4017af75bc15e8ad2f77b0e802c864031cbfb0bacd95c828d1db4b7bab0713619e9e5e8fe6902aac7a9e6c42eb05f5b156f7e663ee43e6fdb62480":"4edc6be20f904b4789e5bee0a80a3fc8":"db28ce076b360816cd1e04b7729f8ab080e0a07f35204350f3bd056945aab8638c0e8311ab056f3e5debdbfbb03fae700770264faf73e0f3a05a5812aee84ab613c82f4a76da276250675f6a663f85e2c26d4f4a8666a7f4cedaffc1a7218dec11ca4e72b8b5d5b620d1efbd3d3b94a5ae0d118b9860dfd543b04c78d13a94c3":120:"03cfe6c36c3f54b3188a6ef3866b84":"e10142f852a0d680c983aad2b4609ccbd35ff61bb3eb66442aee6e01d4cc1cd70f45210acbd506395d6ca0cfebc195a196c94b94fc2afb9ffa3b1714653e07e048804746955e2070e1e96bff58f9bc56f3862aaa5fe23a6a57b5e764666ddec9e3e5a6af063f2c150889268619d0128b3b5562d27070e58e41aadd471d92d07e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0e8e9ce6294b7fbc534a96bdd060120976a6e08315d2ea73ac61d085cd462a44":"9855f186b51358f0e2111c06bfaaeaec9bf95c55e246375c614fad9883d86c82a20c86538dc5f42a0ea69677d59a20c5112d15d2a8396f12096242ad5d7b838d16ee0679fc4017af75bc15e8ad2f77b0e802c864031cbfb0bacd95c828d1db4b7bab0713619e9e5e8fe6902aac7a9e6c42eb05f5b156f7e663ee43e6fdb62480":"4edc6be20f904b4789e5bee0a80a3fc8":"db28ce076b360816cd1e04b7729f8ab080e0a07f35204350f3bd056945aab8638c0e8311ab056f3e5debdbfbb03fae700770264faf73e0f3a05a5812aee84ab613c82f4a76da276250675f6a663f85e2c26d4f4a8666a7f4cedaffc1a7218dec11ca4e72b8b5d5b620d1efbd3d3b94a5ae0d118b9860dfd543b04c78d13a94c3":120:"03cfe6c36c3f54b3188a6ef3866b84":"":"e10142f852a0d680c983aad2b4609ccbd35ff61bb3eb66442aee6e01d4cc1cd70f45210acbd506395d6ca0cfebc195a196c94b94fc2afb9ffa3b1714653e07e048804746955e2070e1e96bff58f9bc56f3862aaa5fe23a6a57b5e764666ddec9e3e5a6af063f2c150889268619d0128b3b5562d27070e58e41aadd471d92d07e":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"886c77b80f5f3a21c01932685a540b23629f6d41d5574fc527227ed0bdf2e21b":"53a17d7b69f607f08676d6f6dd4e8db08e01333a8355d8c87616e84cdf10ef5b041fc6ddc3f6a245c0f534c2b167064af82f45e4702a5e8dede59579fdecf6713353392433950c9b97c38d9ee515ac97d0970ccf03981954540088567a30941bb2cca08cbed680500f8342faa7aebbc6c143e2ea57ba6b4ac1fd975dcc5d0871":"5ec506edb1890a5a63b464490450d419":"05b8d820c9f439d7aeae5c7da0ee25fb0dad47cc3e6f3a47e8b984e856201546975f8214531fc3c2e504d2ac10fa49cb948596b9a8fab01b95c49d6f04d1589f93b77b899e803dd20e1f00a51c0b5953e85be639109b14b100e35ca26d84ea629964b0db8260dfa5a150a66261bf37e79de2ec49e9f1b082a7c58ecd3d39b6c9":120:"ffdf56e1c1a7252b88422787536484":"79ee27adfa9698a97d217c5010ec807806feda37db811e398c3b82abf698aece08561fffc6c601d2691738e279eeb57e5804e1405a9913830e3ba0d7b979213ef40d733a19497d4bb1b8b2c609a8f904e29771fa230c39a48ebb8c3376f07c8013fff6e34f10fe53988a6ec87a9296c0a7cfba769adefe599ec6671012965973":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"886c77b80f5f3a21c01932685a540b23629f6d41d5574fc527227ed0bdf2e21b":"53a17d7b69f607f08676d6f6dd4e8db08e01333a8355d8c87616e84cdf10ef5b041fc6ddc3f6a245c0f534c2b167064af82f45e4702a5e8dede59579fdecf6713353392433950c9b97c38d9ee515ac97d0970ccf03981954540088567a30941bb2cca08cbed680500f8342faa7aebbc6c143e2ea57ba6b4ac1fd975dcc5d0871":"5ec506edb1890a5a63b464490450d419":"05b8d820c9f439d7aeae5c7da0ee25fb0dad47cc3e6f3a47e8b984e856201546975f8214531fc3c2e504d2ac10fa49cb948596b9a8fab01b95c49d6f04d1589f93b77b899e803dd20e1f00a51c0b5953e85be639109b14b100e35ca26d84ea629964b0db8260dfa5a150a66261bf37e79de2ec49e9f1b082a7c58ecd3d39b6c9":120:"ffdf56e1c1a7252b88422787536484":"":"79ee27adfa9698a97d217c5010ec807806feda37db811e398c3b82abf698aece08561fffc6c601d2691738e279eeb57e5804e1405a9913830e3ba0d7b979213ef40d733a19497d4bb1b8b2c609a8f904e29771fa230c39a48ebb8c3376f07c8013fff6e34f10fe53988a6ec87a9296c0a7cfba769adefe599ec6671012965973":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5231ca6d772edd9ea2d251e22d7d455928c22474b4b44130dad57e6511fed6ee":"2767c808410ee132291585ea74a48ad3102f883f07d060c91c5f10abd37fe0996d2210dc490260238ae15f5d74c7be2a1e15d80db09079c520047f88488a7802857a3fc3b81d85a96949997430a880177880a31d4d0c9c9045247804f057a4f2756d6e40375a4a3187c4376d6bf573ce334cda1ed88d8a50db499e7cdb89d8db":"048698a4a0feabc1f336112e2794795a":"3a81b6b0b722899ff931cb73c39222d555b83ae3f8880b982593cbc1ab8be90d1ee32fd7dfe697cf24c95b7309d82c3fed3aa6b3d5740cc86a28174ac8f17d860ebb251ac0d71751c2ff47b48bfb0b3beb4f51494464cda34feaecddb1dbbe5fa36c681ada0787d6ed728afc4008b95929a1905787917adc95f1034fedcd817a":120:"ba61edeb7b8966188854fc7926aad2":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5231ca6d772edd9ea2d251e22d7d455928c22474b4b44130dad57e6511fed6ee":"2767c808410ee132291585ea74a48ad3102f883f07d060c91c5f10abd37fe0996d2210dc490260238ae15f5d74c7be2a1e15d80db09079c520047f88488a7802857a3fc3b81d85a96949997430a880177880a31d4d0c9c9045247804f057a4f2756d6e40375a4a3187c4376d6bf573ce334cda1ed88d8a50db499e7cdb89d8db":"048698a4a0feabc1f336112e2794795a":"3a81b6b0b722899ff931cb73c39222d555b83ae3f8880b982593cbc1ab8be90d1ee32fd7dfe697cf24c95b7309d82c3fed3aa6b3d5740cc86a28174ac8f17d860ebb251ac0d71751c2ff47b48bfb0b3beb4f51494464cda34feaecddb1dbbe5fa36c681ada0787d6ed728afc4008b95929a1905787917adc95f1034fedcd817a":120:"ba61edeb7b8966188854fc7926aad2":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a3f516a7898e04e5da4efd6c7c5989b77552d195464620c2b35b9a4fda29cce":"5cc28b61ae97557774bdcd7ff653f4aa349df68d53c7e5a65263883ef1fe224ad40e86bffc2d38f28a2ed9ae1fc08563e2a1e46246106546eb8e6064c06baa0046fa137421734b7f0f94656a4f459d9d981717557d843700d116b6e5e2dd3af5f67c34edf31b40b71fd3c6f2475f9310feb70bcb973be52d41e86792c49d54c0":"9310af6974890c0a0364231f9cc8103d":"2103af8356bcb9dfc2a4f1d4ed09cbcd8e1990d23865605e19f87feb50bf8d10d0257740e5557a9297f0499c01e29a1a513ca18e6f43f7406c865cbe3951a7771128f3110c8da3bd696368901944549552842a1f6fd96cc681b45da098f3c1acb3d237d2363285f520d0b6714b698790b7660c52ac84a42c9721ac7e9d38a2ef":112:"993fc8e7176557ee9eb8dd944691":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a3f516a7898e04e5da4efd6c7c5989b77552d195464620c2b35b9a4fda29cce":"5cc28b61ae97557774bdcd7ff653f4aa349df68d53c7e5a65263883ef1fe224ad40e86bffc2d38f28a2ed9ae1fc08563e2a1e46246106546eb8e6064c06baa0046fa137421734b7f0f94656a4f459d9d981717557d843700d116b6e5e2dd3af5f67c34edf31b40b71fd3c6f2475f9310feb70bcb973be52d41e86792c49d54c0":"9310af6974890c0a0364231f9cc8103d":"2103af8356bcb9dfc2a4f1d4ed09cbcd8e1990d23865605e19f87feb50bf8d10d0257740e5557a9297f0499c01e29a1a513ca18e6f43f7406c865cbe3951a7771128f3110c8da3bd696368901944549552842a1f6fd96cc681b45da098f3c1acb3d237d2363285f520d0b6714b698790b7660c52ac84a42c9721ac7e9d38a2ef":112:"993fc8e7176557ee9eb8dd944691":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"59c9258554363d8a885fc0f5d112fee08eadfc7ce52a0e7e73e3d0d41d9a0290":"79c491411402ea7878e480519fd984dde44bce6459303bb76d4eaf97d4e345d1aafaa68ceb0590b41cfed0f411b675d9344c7e888cccfc9eb6fe6b229d198f94ba516ee850ee7f078a4f5f32a23f92f72264e3a76a31ebd042564315ac4f2ec0bb49ba6d08cfd2d3a6308688e39f28e3ecd669c588368cee8210edf5dbefb925":"77e51e89dc47bbcac79cca21e81a61de":"25a6f8800a9b914c0ebf9a45d72355c03ee72a138eb81b2980f332645ce1d7aa4659805821866aee2b276e2c032776b4eaf36f93b5f9a72b791be24e31eff105ca6d0700e3069ee327983dd7fe1c7465d6c6d77837aff69055149988e7199847fad98605c377d997dbd40f3e2ff1a4f978a493684e401249e69540fbde96323c":112:"ee6d85d3f3703b45adb4f9b2f155":"44ca68deed5478074adfddc97f06f44c08bf7bca4dee8707d621fc7396fe2efcdad0a167d1708a9ff59ce4cddb86920bf1dbdf41b2109a1815ffc4e596787319114cad8adab46cf7f080c9ef20bcf67a8441ba55eac449f979280319524c74cf247818a8c5478ea6f6770996026a43781285dd89c36212050afc88faa56135fb":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"59c9258554363d8a885fc0f5d112fee08eadfc7ce52a0e7e73e3d0d41d9a0290":"79c491411402ea7878e480519fd984dde44bce6459303bb76d4eaf97d4e345d1aafaa68ceb0590b41cfed0f411b675d9344c7e888cccfc9eb6fe6b229d198f94ba516ee850ee7f078a4f5f32a23f92f72264e3a76a31ebd042564315ac4f2ec0bb49ba6d08cfd2d3a6308688e39f28e3ecd669c588368cee8210edf5dbefb925":"77e51e89dc47bbcac79cca21e81a61de":"25a6f8800a9b914c0ebf9a45d72355c03ee72a138eb81b2980f332645ce1d7aa4659805821866aee2b276e2c032776b4eaf36f93b5f9a72b791be24e31eff105ca6d0700e3069ee327983dd7fe1c7465d6c6d77837aff69055149988e7199847fad98605c377d997dbd40f3e2ff1a4f978a493684e401249e69540fbde96323c":112:"ee6d85d3f3703b45adb4f9b2f155":"":"44ca68deed5478074adfddc97f06f44c08bf7bca4dee8707d621fc7396fe2efcdad0a167d1708a9ff59ce4cddb86920bf1dbdf41b2109a1815ffc4e596787319114cad8adab46cf7f080c9ef20bcf67a8441ba55eac449f979280319524c74cf247818a8c5478ea6f6770996026a43781285dd89c36212050afc88faa56135fb":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5e9eae594cb54c8089330e4404ff79abb1c0841b0be5347a14633ad1e1ff44fa":"32abc1eb6077555a85a0a6fd1c78cccca6c8b375842e2eb8eee45ee6c38dc0837443d16c647252e8124639dd01c808ac5e857a25d927c2a75e2fa8955cad5beb5c206fc050cd933fc4621f5718936f01f39dd700ae1aee7537cc595df8789c5d1a6e1e87b1c7a60e3ce5d57c80dd65dee3801798e1481b1963bcc78cc69f8c50":"0917b486da754f48bb43ecc8766a7ce3":"2aa1ef2f91aeba5da10b48a882dbd4574df4e9157a18abf8cecd03e4176712ba171b6ecb0e745841ff84e35063e47b08101afc44cfd9cededb913a82f00b9d4bac922f23a22f200642270399896405d00fa5271718eefb4cd5fe7e5f32097766ebff36ff1898a1c8a1a01cc18e6121e470805c37ff298fc65ef2fb1b336d09fd":112:"92282b022e393924ab9c65b258c2":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5e9eae594cb54c8089330e4404ff79abb1c0841b0be5347a14633ad1e1ff44fa":"32abc1eb6077555a85a0a6fd1c78cccca6c8b375842e2eb8eee45ee6c38dc0837443d16c647252e8124639dd01c808ac5e857a25d927c2a75e2fa8955cad5beb5c206fc050cd933fc4621f5718936f01f39dd700ae1aee7537cc595df8789c5d1a6e1e87b1c7a60e3ce5d57c80dd65dee3801798e1481b1963bcc78cc69f8c50":"0917b486da754f48bb43ecc8766a7ce3":"2aa1ef2f91aeba5da10b48a882dbd4574df4e9157a18abf8cecd03e4176712ba171b6ecb0e745841ff84e35063e47b08101afc44cfd9cededb913a82f00b9d4bac922f23a22f200642270399896405d00fa5271718eefb4cd5fe7e5f32097766ebff36ff1898a1c8a1a01cc18e6121e470805c37ff298fc65ef2fb1b336d09fd":112:"92282b022e393924ab9c65b258c2":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aaf03c3055a35362212b9b059931e7a24fc71e32bc9a533428c9dc31077f2ebc":"c0e12cdd8233878505e025d52427536be7b6bf1887d2dd20eac7092db80b22417a3a4ca83cdf5bc5e36161be1ff9b73f7ceb297c6d07c9cb2a75035a5dc079e48283daea60596f4b356ca28c243e628cbe459f069709fe193394c9b1a31d8ccc5a3a4eba30056c415e68571a2c34bb5c32efff12e9aa483c4a68be5e76aba4cd":"7dfccd077b29e6ed5720244bb76bde9f":"21edd1c6056f51fd5f314e5c26728182edcd9df92877f30498949098dcde8089eed84e76d774ef8874d77125669a302d268b99dcd66b349d0271dde6f8cc94dc4f2df3787887b1173cad94d067e346846befb108005387102854d9387d2c0fbc9636cdf73a10d145f4b612c201b46e1ff4465f6a7654ce3da5792daf9a27fb35":104:"6154c6799ad7cdc2d89801943a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"aaf03c3055a35362212b9b059931e7a24fc71e32bc9a533428c9dc31077f2ebc":"c0e12cdd8233878505e025d52427536be7b6bf1887d2dd20eac7092db80b22417a3a4ca83cdf5bc5e36161be1ff9b73f7ceb297c6d07c9cb2a75035a5dc079e48283daea60596f4b356ca28c243e628cbe459f069709fe193394c9b1a31d8ccc5a3a4eba30056c415e68571a2c34bb5c32efff12e9aa483c4a68be5e76aba4cd":"7dfccd077b29e6ed5720244bb76bde9f":"21edd1c6056f51fd5f314e5c26728182edcd9df92877f30498949098dcde8089eed84e76d774ef8874d77125669a302d268b99dcd66b349d0271dde6f8cc94dc4f2df3787887b1173cad94d067e346846befb108005387102854d9387d2c0fbc9636cdf73a10d145f4b612c201b46e1ff4465f6a7654ce3da5792daf9a27fb35":104:"6154c6799ad7cdc2d89801943a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"60c775971a9eac7950ed2bdd85bd60fe948ba04c419f6743fb67f37557e46c6e":"8abb2e66a4d08074916056bb8e925551372f737f0e1b597c5d08ee102989743a273b29d7281013f8b3aee2934399cb427370d70370ee86eb41584b653660c633506a53cae747826bb7d93909f069d5aacf058b7f2bbdc58ea08653db857bda83a979fc22a4f126dfef7aac45177f4cdb802fab0c812fb35d12a8176ec21336d7":"9b92ad7079b0de09c94091386577338b":"1f6a84b0df75bd99a2a64849e9686957c6a60932ebe898d033128be9b757e9890225925d856bfdc33ff514c63145f357730bb0435c65342bc5e025267b410af6fd388a5eca01b7efc87fd3b1b791df791bd47dfab736350d7b7f368b4100e04c939d5af957bab95ed502dac904e969876674602a0f0790da2d7351b686e46590":104:"1d6cd4ab3914e109f22668867f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"60c775971a9eac7950ed2bdd85bd60fe948ba04c419f6743fb67f37557e46c6e":"8abb2e66a4d08074916056bb8e925551372f737f0e1b597c5d08ee102989743a273b29d7281013f8b3aee2934399cb427370d70370ee86eb41584b653660c633506a53cae747826bb7d93909f069d5aacf058b7f2bbdc58ea08653db857bda83a979fc22a4f126dfef7aac45177f4cdb802fab0c812fb35d12a8176ec21336d7":"9b92ad7079b0de09c94091386577338b":"1f6a84b0df75bd99a2a64849e9686957c6a60932ebe898d033128be9b757e9890225925d856bfdc33ff514c63145f357730bb0435c65342bc5e025267b410af6fd388a5eca01b7efc87fd3b1b791df791bd47dfab736350d7b7f368b4100e04c939d5af957bab95ed502dac904e969876674602a0f0790da2d7351b686e46590":104:"1d6cd4ab3914e109f22668867f":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3b426e449337a14bc0663246ab61b671b523c9a3130c21ed59c93fa6a5aa5ae3":"291bd5a00d71eb7d547b7c94e7030ba4a947418eaeb378a3bacd304b08c6f92f6958eaba968ac6aa23e0512a2a8ad7c1ca2f8fcf623bfc1281f5b7b598c08d2aebcd447668b23238c5e338b4c2ac7f8fd381714c596ea3e0c17aca4317a08563e58f0f52a8af08e078dc242ae54ee0fe3869f8c9687b004a4ded0aa27d8f4c5d":"e6efc96acd105fe4a48d1ac931eea096":"0902cf7a0685444126369712ac47962bc2f7a3a5837f1b6190d9ab1adb4cd35e7f0892eee628b8e07fcf2b598cebe1ec07d8c4823172ae66a135bb51cc71590707b691a66b56af1ffe38772911d11685da355728eaddd83752d21c119d7b59f4c17c2403629fa55cd70cd331aed7b0de673c85f25c2e9e0267f53f0b7480c8ca":104:"ca4bfeedcd19d301d3f08cb729":"bcef3f2fd101b828d36cb38530cf9a0a7a285ac1c55ee1069cc78466327e85887534c98a8891d579effd832c0f7d6e7e822fb1eea85a39317a547591def4aeed6660872859fc9d1df9725d3c40e9ccaa900e0f1426a55d20ac4f2e8e07bd3bbc687f8e059ab93e7604c97e75ac94be1c8c24f4c4da0080a4d77953fb090cbb62":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3b426e449337a14bc0663246ab61b671b523c9a3130c21ed59c93fa6a5aa5ae3":"291bd5a00d71eb7d547b7c94e7030ba4a947418eaeb378a3bacd304b08c6f92f6958eaba968ac6aa23e0512a2a8ad7c1ca2f8fcf623bfc1281f5b7b598c08d2aebcd447668b23238c5e338b4c2ac7f8fd381714c596ea3e0c17aca4317a08563e58f0f52a8af08e078dc242ae54ee0fe3869f8c9687b004a4ded0aa27d8f4c5d":"e6efc96acd105fe4a48d1ac931eea096":"0902cf7a0685444126369712ac47962bc2f7a3a5837f1b6190d9ab1adb4cd35e7f0892eee628b8e07fcf2b598cebe1ec07d8c4823172ae66a135bb51cc71590707b691a66b56af1ffe38772911d11685da355728eaddd83752d21c119d7b59f4c17c2403629fa55cd70cd331aed7b0de673c85f25c2e9e0267f53f0b7480c8ca":104:"ca4bfeedcd19d301d3f08cb729":"":"bcef3f2fd101b828d36cb38530cf9a0a7a285ac1c55ee1069cc78466327e85887534c98a8891d579effd832c0f7d6e7e822fb1eea85a39317a547591def4aeed6660872859fc9d1df9725d3c40e9ccaa900e0f1426a55d20ac4f2e8e07bd3bbc687f8e059ab93e7604c97e75ac94be1c8c24f4c4da0080a4d77953fb090cbb62":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ceaf204ff504ea8e7fade1a2097f2b527a44766860447322fa5ad346cd810217":"1c8e4cf6018211518494d46c2e0607fa42e236abc28d58f8175c530f84b1f030572f5f6a74cb5517e1fb999a637d352afcbeadea9121e695675859b66b499a3a351ecba5226e58ebbb59fe12e359e4c89cd51c8703d4643c49921ae495801c73627df404b91e828e1d0e03ae09a39defb5aa5f2c8106953772ba0713d3261329":"cfdb8183251f4b61c64e73243594fdc6":"a60f3969fd1b14793dd1425aa0b1f742a4861e0b50eaffd1525cd209ba6d1252176763bb5bee59aaa55f92341cdc0705899aba44cf0ec05cbf80274ebef65cd9507fd4224b25cac19610968d6a37e2daf9ddf046ef158ef512401f8fd0e4f95662eebdee09dd4a7894cc8c409be086d41280bd78d6bc04c35a4e8cd3a2e83be3":96:"9e45029f4f13a4767ee05cec":"5cdc66b587ed5eebb04f42b83a6ab7017093514881c598cce332d74fa3fab927493ac15bff26835296e080b5b45ef907c0529fc2f4ed2fc09db179ef598e5d193ea60c301d3f8d823404814e3e74de0e1d2417c963e9246c353201c7a42659d447376e7d05c579dd4c3ae51c2436407b8eff16ec31f592f04b8013efcfd0f367":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ceaf204ff504ea8e7fade1a2097f2b527a44766860447322fa5ad346cd810217":"1c8e4cf6018211518494d46c2e0607fa42e236abc28d58f8175c530f84b1f030572f5f6a74cb5517e1fb999a637d352afcbeadea9121e695675859b66b499a3a351ecba5226e58ebbb59fe12e359e4c89cd51c8703d4643c49921ae495801c73627df404b91e828e1d0e03ae09a39defb5aa5f2c8106953772ba0713d3261329":"cfdb8183251f4b61c64e73243594fdc6":"a60f3969fd1b14793dd1425aa0b1f742a4861e0b50eaffd1525cd209ba6d1252176763bb5bee59aaa55f92341cdc0705899aba44cf0ec05cbf80274ebef65cd9507fd4224b25cac19610968d6a37e2daf9ddf046ef158ef512401f8fd0e4f95662eebdee09dd4a7894cc8c409be086d41280bd78d6bc04c35a4e8cd3a2e83be3":96:"9e45029f4f13a4767ee05cec":"":"5cdc66b587ed5eebb04f42b83a6ab7017093514881c598cce332d74fa3fab927493ac15bff26835296e080b5b45ef907c0529fc2f4ed2fc09db179ef598e5d193ea60c301d3f8d823404814e3e74de0e1d2417c963e9246c353201c7a42659d447376e7d05c579dd4c3ae51c2436407b8eff16ec31f592f04b8013efcfd0f367":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"15652abe38cd09777bba21d0db04637f5737d3cb3922181b9f2d07bfdafd327a":"1d6c153dec3b4738a09c9fbdfe31a093eb7ea79b8fa49f83e5e1f46893590f074fb171fb66e30ef887767014e3a10a3aa05da2bd50dd7b7936e1d7f6f31af9030e31e76bdf147f4396464db0f6a72511c4885c6c2305d339906e3c761a3249d7ebea3bf463e8b79c3706e684575550e964b8047979f7aed6ea05056c4b5840b1":"3a5e0d223ae981efb405566264e3e776":"cd755437cb61b539908e0cfaaa36c0123f8f17d1e6539783cb61d4b56cac3bc1e971c1ea558b12669b025cb6b9ad55991c6e2f8ee8b0b7901790193e226a0fbbfff7ff0bee6a554660b9f32e061b6c04bf048484ff9ebd492f7e50e744edd72d02c8fd32f87f9421bf18a5a20ebb4d9dbe39a13c34b7296232470e8be587ba09":96:"01a573d8e99c884563310954":"162430c23f7adcf98575a2d9249b4b5cec42efae33776360ebfa6a19c8eee4bd6b07cbd274deadc3292b7cdbb7803e99d9f67ccc5077f3ad5808f339a05b3213dbfd11377673d4f9b486a67a72a9ac8ea9ba699861dce0de7e2fd83d3ba2a2ec7fabf18b95a2bbe2184ff7bddd63111b560b3afe7f2c76807614ba36c1b011fb":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"15652abe38cd09777bba21d0db04637f5737d3cb3922181b9f2d07bfdafd327a":"1d6c153dec3b4738a09c9fbdfe31a093eb7ea79b8fa49f83e5e1f46893590f074fb171fb66e30ef887767014e3a10a3aa05da2bd50dd7b7936e1d7f6f31af9030e31e76bdf147f4396464db0f6a72511c4885c6c2305d339906e3c761a3249d7ebea3bf463e8b79c3706e684575550e964b8047979f7aed6ea05056c4b5840b1":"3a5e0d223ae981efb405566264e3e776":"cd755437cb61b539908e0cfaaa36c0123f8f17d1e6539783cb61d4b56cac3bc1e971c1ea558b12669b025cb6b9ad55991c6e2f8ee8b0b7901790193e226a0fbbfff7ff0bee6a554660b9f32e061b6c04bf048484ff9ebd492f7e50e744edd72d02c8fd32f87f9421bf18a5a20ebb4d9dbe39a13c34b7296232470e8be587ba09":96:"01a573d8e99c884563310954":"":"162430c23f7adcf98575a2d9249b4b5cec42efae33776360ebfa6a19c8eee4bd6b07cbd274deadc3292b7cdbb7803e99d9f67ccc5077f3ad5808f339a05b3213dbfd11377673d4f9b486a67a72a9ac8ea9ba699861dce0de7e2fd83d3ba2a2ec7fabf18b95a2bbe2184ff7bddd63111b560b3afe7f2c76807614ba36c1b011fb":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a43f6d07042a15cd49f6f52a2a3a67c6c2ff420d95bb94b9fe03b287c3abcaf8":"b67e58c8b608724fd20aa097ee483bc4c804490cc79de635170944af75c87ae0ad8261365c1dc80d852553bcba18da9fbc3fbe61d27550a03003ef0c60202054626655509a9e1ab54677e537a4e761df011d6c6dd041c795446b384161ae9eab441afd24d19b58eb4fe5116cd7b11b751ebbd0a2adba7afc380d9d775177099a":"3b6fad21f0034bba8b1f7a344edf7a3c":"2e01c0523c8293fc51388281dccdb8d0a2d215d729289deb327b8142d716c2bb849e9476545b82f3882ba7961b70c5da2a925ba18b6b121e9215d52ac479c9129c9cd28f81584ff84509d5f9dcb7eaae66911b303cc388efa5020ac26a9cd9ea953f61992a306eb4b35bcd8447eea63cef37bb0c95c1e37811115cf26c53e8c5":96:"43470bc3d7c573cb3a5230f5":"e1720d451fa7ab9db4988567187244b15b6fe795dd4fef579fb72e41b21aaa436d2e5d8735a4abd232a3fb9188c75c247f6034cdebb07fd7f260f8e54efefa4f2981cafa510dd5c482a27753a7c015b3cae1c18c7c99a6d6daa4781b80f18bbe6620bfc1518a32531017a1a52aadb96a7794887c11ad6bdd68187ba14f72a4b5":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a43f6d07042a15cd49f6f52a2a3a67c6c2ff420d95bb94b9fe03b287c3abcaf8":"b67e58c8b608724fd20aa097ee483bc4c804490cc79de635170944af75c87ae0ad8261365c1dc80d852553bcba18da9fbc3fbe61d27550a03003ef0c60202054626655509a9e1ab54677e537a4e761df011d6c6dd041c795446b384161ae9eab441afd24d19b58eb4fe5116cd7b11b751ebbd0a2adba7afc380d9d775177099a":"3b6fad21f0034bba8b1f7a344edf7a3c":"2e01c0523c8293fc51388281dccdb8d0a2d215d729289deb327b8142d716c2bb849e9476545b82f3882ba7961b70c5da2a925ba18b6b121e9215d52ac479c9129c9cd28f81584ff84509d5f9dcb7eaae66911b303cc388efa5020ac26a9cd9ea953f61992a306eb4b35bcd8447eea63cef37bb0c95c1e37811115cf26c53e8c5":96:"43470bc3d7c573cb3a5230f5":"":"e1720d451fa7ab9db4988567187244b15b6fe795dd4fef579fb72e41b21aaa436d2e5d8735a4abd232a3fb9188c75c247f6034cdebb07fd7f260f8e54efefa4f2981cafa510dd5c482a27753a7c015b3cae1c18c7c99a6d6daa4781b80f18bbe6620bfc1518a32531017a1a52aadb96a7794887c11ad6bdd68187ba14f72a4b5":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1f0f0191e18db07c0501dbab4ed952c5603a4cd249d2d8d17e62e10b96ae713f":"aad40e7866c26e486b6f6e8eb14a130d5f88891bf0d09aa8fe32f447ab8dea7bee5d3eda4499c0103a010483f2b64fdf1155499d31decf528c77dd7627884f9995c213cf7402143dbb7561d69c86886734260ac94ffac7eb33598d25714228ef43f744ec1af2a87e789f1e5d6fff0fbd5082dcc49328f194e8f8a14a5bfc962d":"ab8be16b4db809c81be4684b726c05ab":"a5a6e828352a44bd438ad58de80011be0408d410f6e762e3145f8b264a70c593476b41bb87875746c97de7d5fab120bd2f716b37c343608ee48d197a46c7546fafcdbe3e7688b7e9d2f5b6319c91d3881d804546b5f3dbe480996968dd046f406c11f0dc671be0421cbc8b4ea6811dd504281518bb96148dddf9f0dc4e2e2436":64:"d8bd7d8773893519":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1f0f0191e18db07c0501dbab4ed952c5603a4cd249d2d8d17e62e10b96ae713f":"aad40e7866c26e486b6f6e8eb14a130d5f88891bf0d09aa8fe32f447ab8dea7bee5d3eda4499c0103a010483f2b64fdf1155499d31decf528c77dd7627884f9995c213cf7402143dbb7561d69c86886734260ac94ffac7eb33598d25714228ef43f744ec1af2a87e789f1e5d6fff0fbd5082dcc49328f194e8f8a14a5bfc962d":"ab8be16b4db809c81be4684b726c05ab":"a5a6e828352a44bd438ad58de80011be0408d410f6e762e3145f8b264a70c593476b41bb87875746c97de7d5fab120bd2f716b37c343608ee48d197a46c7546fafcdbe3e7688b7e9d2f5b6319c91d3881d804546b5f3dbe480996968dd046f406c11f0dc671be0421cbc8b4ea6811dd504281518bb96148dddf9f0dc4e2e2436":64:"d8bd7d8773893519":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a6cf7d83137f57f2310ee6bf31e8883952bb07ccdc12f516233ed533ea967e5d":"83ab20698fd7573fd121976a72b45a7f03aad84702fc8ac73d6926eabd8a546895aeffe4ba81d117507e2cd37d58eeff71cc3afa8a4449be85f228ea52f6dc6395bb43c1c9f795343720841682d9b2f00602eafa4d4cbe297bfc62467e526b9d823cc8eeecd9e5f8dbc2f65610663c6f37b3d896651b254bd60215629ade3b2a":"f17e37e73a28c682366bfe619cc673bb":"0f4dd201b18e20230b6233e0d7add6f96537dd4e82d3d0704c047fab41af5faf6bd52bd14fa9a072f81d92a2ce04352f0b66f088c67102d2d127a9850b09ff6087f194a6e8ccaba24091feb303eebb65f1203b2d22af44e7be4de71f03e6f6cbadf28e15af58f58eb62e5bddfae06df773cc3f0942520de20078dda752e3270f":64:"74110471ccd75912":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a6cf7d83137f57f2310ee6bf31e8883952bb07ccdc12f516233ed533ea967e5d":"83ab20698fd7573fd121976a72b45a7f03aad84702fc8ac73d6926eabd8a546895aeffe4ba81d117507e2cd37d58eeff71cc3afa8a4449be85f228ea52f6dc6395bb43c1c9f795343720841682d9b2f00602eafa4d4cbe297bfc62467e526b9d823cc8eeecd9e5f8dbc2f65610663c6f37b3d896651b254bd60215629ade3b2a":"f17e37e73a28c682366bfe619cc673bb":"0f4dd201b18e20230b6233e0d7add6f96537dd4e82d3d0704c047fab41af5faf6bd52bd14fa9a072f81d92a2ce04352f0b66f088c67102d2d127a9850b09ff6087f194a6e8ccaba24091feb303eebb65f1203b2d22af44e7be4de71f03e6f6cbadf28e15af58f58eb62e5bddfae06df773cc3f0942520de20078dda752e3270f":64:"74110471ccd75912":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0c85ac6b3887639838ddca94c5c69f38115aa00122322c8114642d12ea1b8fe":"0210fce418e7e2199cb8f899c81b9be74a630d00269755f882fc4db27632e99685cc12c426a7503473646df1288d0ede28408be9add5713628700f8e2b2e27d7522520ed00ac47239084651eb99e7d03e1520aae137b768f3144232c16b72158fd5da4a26a2525b9b27791bf06d1eb2e671c54daf64fddc1420bc2a30a324ba5":"14f68e533ecf02bceb9a504d452e78c7":"796a46236fd0ff6572b1d6257c874038f870aa71cbb06b39046d0fb6489d6ae8622b5154292ae5c4e1d5ff706daedb2e812533ae3a635d339a7fbe53780e3e8204924a5deb4b6856618f4c7465d125a3edffe1ab8f88b31d49537791c0f3171f08dbb5ed1d9ed863dafbae4ecb46824a4922862fe0954ee2caa09ab0e77ed8fc":64:"6fb0b5c83b5212bf":"5e6c362f7587936bcb306673713a6f1fb080783a20e9bbb906456973e529cfa0298206184509c30e1d3793eaaa5d564edd4488f04311821eb652e0a1f4adaf6971505ca014788c8ce085ceb3523d70284ed2bb0aebeba7af83d484df69c87f55a93b3d87baa43bd301c4e55eb8c45dcf3e4612535ea1bd5fdb4c3b9056d0cae9":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b0c85ac6b3887639838ddca94c5c69f38115aa00122322c8114642d12ea1b8fe":"0210fce418e7e2199cb8f899c81b9be74a630d00269755f882fc4db27632e99685cc12c426a7503473646df1288d0ede28408be9add5713628700f8e2b2e27d7522520ed00ac47239084651eb99e7d03e1520aae137b768f3144232c16b72158fd5da4a26a2525b9b27791bf06d1eb2e671c54daf64fddc1420bc2a30a324ba5":"14f68e533ecf02bceb9a504d452e78c7":"796a46236fd0ff6572b1d6257c874038f870aa71cbb06b39046d0fb6489d6ae8622b5154292ae5c4e1d5ff706daedb2e812533ae3a635d339a7fbe53780e3e8204924a5deb4b6856618f4c7465d125a3edffe1ab8f88b31d49537791c0f3171f08dbb5ed1d9ed863dafbae4ecb46824a4922862fe0954ee2caa09ab0e77ed8fc":64:"6fb0b5c83b5212bf":"":"5e6c362f7587936bcb306673713a6f1fb080783a20e9bbb906456973e529cfa0298206184509c30e1d3793eaaa5d564edd4488f04311821eb652e0a1f4adaf6971505ca014788c8ce085ceb3523d70284ed2bb0aebeba7af83d484df69c87f55a93b3d87baa43bd301c4e55eb8c45dcf3e4612535ea1bd5fdb4c3b9056d0cae9":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e61b1a6b40e2ab1245ff65dcfb9948318ac4fe55e9ed600cec301dae32ae0e93":"8d67fa9fcf078e421cb63abeb25dba739ab0e09a091dd06b0c616e1e888f350edb2d73a42f57f115266ea20c7f8fc143ac746649612df06a5e29b4a15934dc049be1ab49d018ab86c4f37d8c3d9c714f038029e74d8ee3dbe61d81adc63712ea413b37f7604da12107aa1695d9b0981e5a92cdfaa5fbda0e31b22c6fd6f3b499":"c356244b3034d288e4d4fe901b8e27c1":"bdcfeb09d5b97bab05a7acd9849e7de2c5beb7a4dc573c7e1c1d0c0409245a6584023114fdcc6413c800ca16847bde750b27c4d590248e2ce457c19b0f614f6aff4d78d4a19b3251531e5e852fbb05d09412cc1ff8988d1955ca6f5fe2d820f20a7642e3ae69e8122b06ba0918e806400b9b615e1abe6fdd4f56a7d02d649083":32:"86acc02f":"7c73182eca97d9617abb478a6ce62e3491a7e9951981c89c3071b161a4c80440614c3f24d0155073e28dcccee96bc8303dab4901ef77318df522d16d9da47770ef022395d6104cd623d93d67090a27507fc8ca04157e7939e639c62cd0e7d8a472314833c0eaa9ba2fd54a25b02854e3bff25cccd638885c082374ae520ed392":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e61b1a6b40e2ab1245ff65dcfb9948318ac4fe55e9ed600cec301dae32ae0e93":"8d67fa9fcf078e421cb63abeb25dba739ab0e09a091dd06b0c616e1e888f350edb2d73a42f57f115266ea20c7f8fc143ac746649612df06a5e29b4a15934dc049be1ab49d018ab86c4f37d8c3d9c714f038029e74d8ee3dbe61d81adc63712ea413b37f7604da12107aa1695d9b0981e5a92cdfaa5fbda0e31b22c6fd6f3b499":"c356244b3034d288e4d4fe901b8e27c1":"bdcfeb09d5b97bab05a7acd9849e7de2c5beb7a4dc573c7e1c1d0c0409245a6584023114fdcc6413c800ca16847bde750b27c4d590248e2ce457c19b0f614f6aff4d78d4a19b3251531e5e852fbb05d09412cc1ff8988d1955ca6f5fe2d820f20a7642e3ae69e8122b06ba0918e806400b9b615e1abe6fdd4f56a7d02d649083":32:"86acc02f":"":"7c73182eca97d9617abb478a6ce62e3491a7e9951981c89c3071b161a4c80440614c3f24d0155073e28dcccee96bc8303dab4901ef77318df522d16d9da47770ef022395d6104cd623d93d67090a27507fc8ca04157e7939e639c62cd0e7d8a472314833c0eaa9ba2fd54a25b02854e3bff25cccd638885c082374ae520ed392":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4f5a02e9843d28c8c226ed70d44b8fced8fb757ab6ece4d4f06e3c3cec79e44f":"3ec13950d329f24074714c583bdc35686b811f775b76b0a8fcfa66fc56426c9d022f8ab0af38f8d2f71a068548330cdbe891670181ed7491bf40c739ef4dd93689fd35929b225089d2b151f83d9b3cd767300611144586767354c0491112c205409f3168092d27f9b9f433afb79820a2811984d48e70c1fb2a13bbb3ddbc53fb":"099e5d9aae89fb6391a18adf844a758e":"ad93e8662c3196e48cfdb5aa3bc923cd204151aa980cbec78f0d592b701f779c1c49f9e8686d7e2385a4146b21a643a59c18c8b82214f42560bcd686fad7c7c8e8c1944ce6b20ec9537dd14b6cf2592740ca112f4cd582250d69f240d3e957040e1f7e19c60b3c8f2bd00cb666604c38946eb9b2f17336d281b4794f71e538a2":32:"30298885":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4f5a02e9843d28c8c226ed70d44b8fced8fb757ab6ece4d4f06e3c3cec79e44f":"3ec13950d329f24074714c583bdc35686b811f775b76b0a8fcfa66fc56426c9d022f8ab0af38f8d2f71a068548330cdbe891670181ed7491bf40c739ef4dd93689fd35929b225089d2b151f83d9b3cd767300611144586767354c0491112c205409f3168092d27f9b9f433afb79820a2811984d48e70c1fb2a13bbb3ddbc53fb":"099e5d9aae89fb6391a18adf844a758e":"ad93e8662c3196e48cfdb5aa3bc923cd204151aa980cbec78f0d592b701f779c1c49f9e8686d7e2385a4146b21a643a59c18c8b82214f42560bcd686fad7c7c8e8c1944ce6b20ec9537dd14b6cf2592740ca112f4cd582250d69f240d3e957040e1f7e19c60b3c8f2bd00cb666604c38946eb9b2f17336d281b4794f71e538a2":32:"30298885":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cdb218e0bd0e02156e5b48182990f778889793ef6018a8928e61164ac047c8e":"4d039618a0eb640329f90fe97de18bc928fc3fc7a0db42c97774bec2e882e872fc1097c8319f7837a16516bf387b1bae321c565e8fc1cb8480f051158e4685f0adba310d2c6253bc1300403cbd3f7ddcb2796a69f8bf9e73d47aada9a02673c1a3d5ecdac838abf22b385906236529a1b7dd5b8af2611a04cf4f83b15ba41cfc":"d2ffbb176f86bee958e08e5c7c6357c7":"bc580c4223f34e4f867d97febf9b03629d1c00c73df94436852cafd1408c945c5474c554cb0faf2bae35d3160c823d339a64ebd607cf765fa91f416fc6db042bc2bd7445c129b4a0e04b6f92a7b7b669eb70be9f9b2569e774db7cb7ae83943e3a12d29221356e08e5bf1b09e65f193d00d9fe89f82b84b3b8b062e649163dc8":32:"1997daa9":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1cdb218e0bd0e02156e5b48182990f778889793ef6018a8928e61164ac047c8e":"4d039618a0eb640329f90fe97de18bc928fc3fc7a0db42c97774bec2e882e872fc1097c8319f7837a16516bf387b1bae321c565e8fc1cb8480f051158e4685f0adba310d2c6253bc1300403cbd3f7ddcb2796a69f8bf9e73d47aada9a02673c1a3d5ecdac838abf22b385906236529a1b7dd5b8af2611a04cf4f83b15ba41cfc":"d2ffbb176f86bee958e08e5c7c6357c7":"bc580c4223f34e4f867d97febf9b03629d1c00c73df94436852cafd1408c945c5474c554cb0faf2bae35d3160c823d339a64ebd607cf765fa91f416fc6db042bc2bd7445c129b4a0e04b6f92a7b7b669eb70be9f9b2569e774db7cb7ae83943e3a12d29221356e08e5bf1b09e65f193d00d9fe89f82b84b3b8b062e649163dc8":32:"1997daa9":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dc1a145c18bdbca760f35eea0d4a5992de04a0615964ec8b419c8288ab1470f0":"":"7f8368254955e1b6d55b5c64458f3e66":"":128:"8ddaa2c3ed09d53731834fa932d9d3af":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"dc1a145c18bdbca760f35eea0d4a5992de04a0615964ec8b419c8288ab1470f0":"":"7f8368254955e1b6d55b5c64458f3e66":"":128:"8ddaa2c3ed09d53731834fa932d9d3af":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b4766d3a6615ee58b390daa228ae7a541c46ce80a1efe227cc43cb777df3232":"":"274367f31ec16601fe87a8e35b7a22dd":"":128:"5f3a757b596e06e9b246ed9bac9397f9":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7b4766d3a6615ee58b390daa228ae7a541c46ce80a1efe227cc43cb777df3232":"":"274367f31ec16601fe87a8e35b7a22dd":"":128:"5f3a757b596e06e9b246ed9bac9397f9":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d19b04055bf6e7ff82e89daef66c9d8319ab25f9197e559444c5729b92c4f338":"":"796efaff4f172bef78453d36a237cd36":"":128:"3b445f38bf4db94f1a9ec771173a29e8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d19b04055bf6e7ff82e89daef66c9d8319ab25f9197e559444c5729b92c4f338":"":"796efaff4f172bef78453d36a237cd36":"":128:"3b445f38bf4db94f1a9ec771173a29e8":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7ca68e300534a90a7a87ca9906e4ac614a6aa51f769b6e6129753a4f83d10317":"":"45e6b23f8b3feefd4b0ea06880b2c324":"":120:"6c0a1c9c2cf5a40407bfa1d5958612":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7ca68e300534a90a7a87ca9906e4ac614a6aa51f769b6e6129753a4f83d10317":"":"45e6b23f8b3feefd4b0ea06880b2c324":"":120:"6c0a1c9c2cf5a40407bfa1d5958612":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a2b7cd693239bbc93599d3d12c9876e7303b227b8ae718e2c62e689e1fd62903":"":"548c9c8fcc16416a9d2b35c29f0dacb3":"":120:"3aa21f221266e7773eeba4440d1d01":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a2b7cd693239bbc93599d3d12c9876e7303b227b8ae718e2c62e689e1fd62903":"":"548c9c8fcc16416a9d2b35c29f0dacb3":"":120:"3aa21f221266e7773eeba4440d1d01":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"156b854beb0c276a5e724f5da72f0d1ca4ae7cbd5f93a2257d95c2e5bfd78ad4":"":"a5129e2530f47bcad42fc5774ee09fe7":"":120:"6bb09ed183527c5d5ed46f568af35f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"156b854beb0c276a5e724f5da72f0d1ca4ae7cbd5f93a2257d95c2e5bfd78ad4":"":"a5129e2530f47bcad42fc5774ee09fe7":"":120:"6bb09ed183527c5d5ed46f568af35f":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d824330c60141264e1f709d63227a9a731bcc42b4adec1d8f0161b10b4fdb2ab":"":"c5afaa45312c64ab3c3cf9d6c4e0cc47":"":112:"55952a01eee29d8a1734bbdf3f8f":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d824330c60141264e1f709d63227a9a731bcc42b4adec1d8f0161b10b4fdb2ab":"":"c5afaa45312c64ab3c3cf9d6c4e0cc47":"":112:"55952a01eee29d8a1734bbdf3f8f":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5517589948d8aea778df6fd66c17a170d327f69e504f0a4bd504c4286a9f578":"":"6404b111c6289eefa0d88ed6117bb730":"":112:"637f82e592831531a8e877adfc2c":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5517589948d8aea778df6fd66c17a170d327f69e504f0a4bd504c4286a9f578":"":"6404b111c6289eefa0d88ed6117bb730":"":112:"637f82e592831531a8e877adfc2c":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f6137b2bcbd327fbcc7f313efa10f6ffaed30e4782e222e1225c87103fcae905":"":"3b87b08337a82272b192bd067e3245ec":"":112:"1f2dda372f20ffddd9dd4810e05f":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"f6137b2bcbd327fbcc7f313efa10f6ffaed30e4782e222e1225c87103fcae905":"":"3b87b08337a82272b192bd067e3245ec":"":112:"1f2dda372f20ffddd9dd4810e05f":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5e70d1b78e931abf44bba3f937dbc344858516a8a8afe605818dc67d0c3e4c4":"":"58e70095c6f3a0cda2cdc7775e2f383d":"":104:"1763573f7dab8b46bc177e6147":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b5e70d1b78e931abf44bba3f937dbc344858516a8a8afe605818dc67d0c3e4c4":"":"58e70095c6f3a0cda2cdc7775e2f383d":"":104:"1763573f7dab8b46bc177e6147":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90de0c047d1dd01d521f2dedec7eb81bc0ace7a5a693a7869eaafbb6e725ad7b":"":"d565c9cdfb5d0a25c4083b51729626bd":"":104:"78738d3e9f5e00b49635ac9a2d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"90de0c047d1dd01d521f2dedec7eb81bc0ace7a5a693a7869eaafbb6e725ad7b":"":"d565c9cdfb5d0a25c4083b51729626bd":"":104:"78738d3e9f5e00b49635ac9a2d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c43e8dbeafb079692483a9fcbab964b76fccca6ca99e1388a1aa9bf78dfd2f02":"":"f2bd4fe0d30c0e8d429cac90c8a7b1c8":"":104:"ea7b52490943380ccc902ca5ae":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c43e8dbeafb079692483a9fcbab964b76fccca6ca99e1388a1aa9bf78dfd2f02":"":"f2bd4fe0d30c0e8d429cac90c8a7b1c8":"":104:"ea7b52490943380ccc902ca5ae":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"13540919fdb95559e37b535a427efeee334309e34c4608459e204d931b8087e7":"":"c993c1802df0f075ce92963eb9bff9bd":"":96:"edfab013213591beb53e6419":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"13540919fdb95559e37b535a427efeee334309e34c4608459e204d931b8087e7":"":"c993c1802df0f075ce92963eb9bff9bd":"":96:"edfab013213591beb53e6419":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2a7b2e07c148ff0f627ae28c241a395876bbed0c20f3fd637330e986db025714":"":"8f7e1621c2227839da4ea60548290ffa":"":96:"f9da62f59c080160ec30b43d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2a7b2e07c148ff0f627ae28c241a395876bbed0c20f3fd637330e986db025714":"":"8f7e1621c2227839da4ea60548290ffa":"":96:"f9da62f59c080160ec30b43d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b3e7837a75b38ae6d4299a1ae4af3c2460dfca558708de0874d6b1a5689b8360":"":"05d363b2452beff4b47afb052ac3c973":"":96:"6b4a16d1ea1c21b22bdcb235":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b3e7837a75b38ae6d4299a1ae4af3c2460dfca558708de0874d6b1a5689b8360":"":"05d363b2452beff4b47afb052ac3c973":"":96:"6b4a16d1ea1c21b22bdcb235":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9df3ccd95f7570f6ecf5e5329dcb79bcd46cbcf083fe03aa8f5bd0f645c6a607":"":"774f4e70a7577b5101c0c3d019655d3e":"":64:"98ff89a8e28c03fd":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9df3ccd95f7570f6ecf5e5329dcb79bcd46cbcf083fe03aa8f5bd0f645c6a607":"":"774f4e70a7577b5101c0c3d019655d3e":"":64:"98ff89a8e28c03fd":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c7123e2e8d3774c8f1bdbb2272f19129e04f29b4351ae19c3b9d24e6ea1fe87":"":"99f25cebd6cfa7f41390b42df6a65f48":"":64:"8e14a0a4853a156a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c7123e2e8d3774c8f1bdbb2272f19129e04f29b4351ae19c3b9d24e6ea1fe87":"":"99f25cebd6cfa7f41390b42df6a65f48":"":64:"8e14a0a4853a156a":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"490090323e9257517e2453469caa3414045cacb4d05d5cebc6b9c06fa6d19291":"":"c1beff1ff6cdd62339aa21149c4da1e6":"":64:"f998d7c08d609b3a":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"490090323e9257517e2453469caa3414045cacb4d05d5cebc6b9c06fa6d19291":"":"c1beff1ff6cdd62339aa21149c4da1e6":"":64:"f998d7c08d609b3a":"":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"360e48dd38d9e7f5bf29a2994ab5b3c9c70247102d94049ae791850807a4c845":"":"88126c350dfc079c569210ee44a0e31a":"":32:"f2ebe5e4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"360e48dd38d9e7f5bf29a2994ab5b3c9c70247102d94049ae791850807a4c845":"":"88126c350dfc079c569210ee44a0e31a":"":32:"f2ebe5e4":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1562b32e4dd843edaf4474b62cadd8f46d50461f5b22c9f1a8eae7367d35d71b":"":"af29fdb96f726c76f76c473c873b9e08":"":32:"13fd6dfd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1562b32e4dd843edaf4474b62cadd8f46d50461f5b22c9f1a8eae7367d35d71b":"":"af29fdb96f726c76f76c473c873b9e08":"":32:"13fd6dfd":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d5160d0c98ffcb1c26aad755f67589000e2bb25fa940e6b1d81d780f421353d9":"":"1552604763453b48a57cea1aed8113f4":"":32:"660c5175":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d5160d0c98ffcb1c26aad755f67589000e2bb25fa940e6b1d81d780f421353d9":"":"1552604763453b48a57cea1aed8113f4":"":32:"660c5175":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3a3ea3a097c0c2b3a4cb78462d87fd5a8f348687c4150e9d3354b388ab13d17":"":"f77945979241fb3a454d8e3da193e169":"a69bac31241a2c07d3f7e331b77f662b1e67ccb81c07f52578b01f5785de9437f02eb7627ca7b9af09c1cb428fe93d6deb31f4d6dd2f0729f87480bdeb92d985de1aaad4bcebc6fbad83bede9a5dd1ca6a15bf5d8a96d4edb5bee1f7d195e9b2e5fb2221a596d69f257c18a143eda870e22d3f2ed20c9b3b0d8c8a229c462fff":128:"6b4b1a84f49befe3897d59ce85598a9f":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c3a3ea3a097c0c2b3a4cb78462d87fd5a8f348687c4150e9d3354b388ab13d17":"":"f77945979241fb3a454d8e3da193e169":"a69bac31241a2c07d3f7e331b77f662b1e67ccb81c07f52578b01f5785de9437f02eb7627ca7b9af09c1cb428fe93d6deb31f4d6dd2f0729f87480bdeb92d985de1aaad4bcebc6fbad83bede9a5dd1ca6a15bf5d8a96d4edb5bee1f7d195e9b2e5fb2221a596d69f257c18a143eda870e22d3f2ed20c9b3b0d8c8a229c462fff":128:"6b4b1a84f49befe3897d59ce85598a9f":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e1626327d987342cba5c8c63b75b4ed65463a2b9c831f4f9f80325fa867d1d73":"":"4e25800deab7ecec2a2311f8fb44eb7d":"ebaffd558f24dae03117c69ac4b2b4aaeaffe7e0e7599eaba678bfce23a9914dc9f80b69f4a1c837a5544cba08064a8f924064cba4d783623600d8b61837a08b4e0d4eb9218c29bc3edb8dd0e78c1534ab52331f949b09b25fbf73bece7054179817bc15b4e869c5df1af569c2b19cb6d060855be9a15f2cf497c168c4e683f2":128:"8faa0ffb91311a1a2827b86fec01788d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e1626327d987342cba5c8c63b75b4ed65463a2b9c831f4f9f80325fa867d1d73":"":"4e25800deab7ecec2a2311f8fb44eb7d":"ebaffd558f24dae03117c69ac4b2b4aaeaffe7e0e7599eaba678bfce23a9914dc9f80b69f4a1c837a5544cba08064a8f924064cba4d783623600d8b61837a08b4e0d4eb9218c29bc3edb8dd0e78c1534ab52331f949b09b25fbf73bece7054179817bc15b4e869c5df1af569c2b19cb6d060855be9a15f2cf497c168c4e683f2":128:"8faa0ffb91311a1a2827b86fec01788d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"938da64b837275b0c80c442bdf2301aa75e387fe65a775d10a8ec840f62ff429":"":"dec6adeb60216cbb8a6c3afba49fa201":"4ac144bd95f405649444f01ab67ef3e4c0a54fdbd933b6ba00518c79db45c22c90030c45aadcfdb53ec8199be0cbb22dbb9ab938a871f4b3b0c98ed32590a051abb946c42726b3e9701f183b2092985e3457943a6350fbcaece2e6b111b179ea3fd10ac080a577a1481785111d5f294bc28519c470ff94392a51a2c40a42d8b5":128:"2211ca91a809adb8cf55f001745c0563":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"938da64b837275b0c80c442bdf2301aa75e387fe65a775d10a8ec840f62ff429":"":"dec6adeb60216cbb8a6c3afba49fa201":"4ac144bd95f405649444f01ab67ef3e4c0a54fdbd933b6ba00518c79db45c22c90030c45aadcfdb53ec8199be0cbb22dbb9ab938a871f4b3b0c98ed32590a051abb946c42726b3e9701f183b2092985e3457943a6350fbcaece2e6b111b179ea3fd10ac080a577a1481785111d5f294bc28519c470ff94392a51a2c40a42d8b5":128:"2211ca91a809adb8cf55f001745c0563":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e2436484ea1f454d6451ad8dbd1574b208d7a3ab4fa34869299b85c24348b43d":"":"97040d2ec094fe1c64fa35b35b7451a7":"bc198677513ce0e66697dfe52b22315fa5d8f92042f34cc9f373a01f94607df1a599132f60af010ed9b5e52162dd7b162912b68b11700e08f5fdafd84d10f760fc05ec97c05b83e55155194f399594015b90a19c04fb992e228940fe1b54ba59c4bb8318b33cc0df1cb1d71c389473dfb3eefabfe269ca95db59a7bc0201c253":120:"2e080ba16011e22a779da1922345c2":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e2436484ea1f454d6451ad8dbd1574b208d7a3ab4fa34869299b85c24348b43d":"":"97040d2ec094fe1c64fa35b35b7451a7":"bc198677513ce0e66697dfe52b22315fa5d8f92042f34cc9f373a01f94607df1a599132f60af010ed9b5e52162dd7b162912b68b11700e08f5fdafd84d10f760fc05ec97c05b83e55155194f399594015b90a19c04fb992e228940fe1b54ba59c4bb8318b33cc0df1cb1d71c389473dfb3eefabfe269ca95db59a7bc0201c253":120:"2e080ba16011e22a779da1922345c2":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7fb3fc72eb8a3aa5b102f90039f852cc3fd64f46915f5e49f1d9e02fe9cc13b1":"":"f6120fea313362524917c53d90bafb4f":"60c2be7fbd15faf895fd19a9ce775fe2b183b45cffafe4fcbf50d421bea97347e41a9418cfa129b2dda63b889a70063010215dbe38c37feae18bc31b34f31b726f22177f2b4b9d648dd4aa80edfd12dafaee10baa83224354432d1cb62ccabe38bb8448d162cd0d30e988d2e1a2458ffdafaacbdff928756390f66dc60d7ea45":120:"83de3f521fcfdaff902386f359e683":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7fb3fc72eb8a3aa5b102f90039f852cc3fd64f46915f5e49f1d9e02fe9cc13b1":"":"f6120fea313362524917c53d90bafb4f":"60c2be7fbd15faf895fd19a9ce775fe2b183b45cffafe4fcbf50d421bea97347e41a9418cfa129b2dda63b889a70063010215dbe38c37feae18bc31b34f31b726f22177f2b4b9d648dd4aa80edfd12dafaee10baa83224354432d1cb62ccabe38bb8448d162cd0d30e988d2e1a2458ffdafaacbdff928756390f66dc60d7ea45":120:"83de3f521fcfdaff902386f359e683":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"697c96d80d0a3fa9af35b86f31fb71a17aed30ce841c79896bbc8863b3b3ee04":"":"3a5163ec7e007061838d755ac219855e":"de50c12da63232768d5eb9920d49683b5b7114cb77448fa10b9d63552ec5d9c2eac94b375d11f944959f903bb20c696639b6e7f108ec1e873870098c631ddacb2c25268cfc26d2a4cacfb7dda7383374c5456bcf4daa887a887f4293f8caa14419472a8bf7ffd214dfb2743091238b6d1142b116c2b9f4360c6fe0015cd7de81":120:"cd4542b26094a1c8e058648874f06f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"697c96d80d0a3fa9af35b86f31fb71a17aed30ce841c79896bbc8863b3b3ee04":"":"3a5163ec7e007061838d755ac219855e":"de50c12da63232768d5eb9920d49683b5b7114cb77448fa10b9d63552ec5d9c2eac94b375d11f944959f903bb20c696639b6e7f108ec1e873870098c631ddacb2c25268cfc26d2a4cacfb7dda7383374c5456bcf4daa887a887f4293f8caa14419472a8bf7ffd214dfb2743091238b6d1142b116c2b9f4360c6fe0015cd7de81":120:"cd4542b26094a1c8e058648874f06f":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"66c1d9ce3feb0e966c33e3fd542ec11cc32f18c2514b953103d32abcdc72633a":"":"46fdb88fdde9b7d74e893802a0303256":"55d2f263d2e3cf0b390fce1dd1ebd5f666086f26e1ce2f08002bedbb810ada3922c6bfcf6a6adaa556e9e326c9766f02b3eb6e278da2fa3baa7dbdb6373be3c6ecfbe646b1a39e27c5a449db9b559e7ea3496366b8cdbca00ee7a3dea7fdfbea1665bbf58bd69bb961c33a0fd7d37b580b6a82804f394f9d5d4366772cee3115":112:"96ca402b16b0f2cd0cdff77935d3":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"66c1d9ce3feb0e966c33e3fd542ec11cc32f18c2514b953103d32abcdc72633a":"":"46fdb88fdde9b7d74e893802a0303256":"55d2f263d2e3cf0b390fce1dd1ebd5f666086f26e1ce2f08002bedbb810ada3922c6bfcf6a6adaa556e9e326c9766f02b3eb6e278da2fa3baa7dbdb6373be3c6ecfbe646b1a39e27c5a449db9b559e7ea3496366b8cdbca00ee7a3dea7fdfbea1665bbf58bd69bb961c33a0fd7d37b580b6a82804f394f9d5d4366772cee3115":112:"96ca402b16b0f2cd0cdff77935d3":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d7c949420dc9497232cd5810f316d11f9e85d36c430b5943ba79836d88c1eb92":"":"7ef9788ff09cbeedd9569d49083a4097":"ca1de5cc3fcde2638eb72210e551e9c0e0a3f5570d5be83a9a4406b545d854bf17e75b9cd0f4c45722fbd71319a317b72a8798485e9316a1c8102432b83bc95af42f6d50700ba68f6f2e19b6af609b73ad643dfa43da94be32cc09b024e087c120e4d2c20f96f8e9ddfe7eae186a540a22131cedfe556d1ebd9306684e345fd1":112:"8233588fca3ad1698d07b25fa3c4":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d7c949420dc9497232cd5810f316d11f9e85d36c430b5943ba79836d88c1eb92":"":"7ef9788ff09cbeedd9569d49083a4097":"ca1de5cc3fcde2638eb72210e551e9c0e0a3f5570d5be83a9a4406b545d854bf17e75b9cd0f4c45722fbd71319a317b72a8798485e9316a1c8102432b83bc95af42f6d50700ba68f6f2e19b6af609b73ad643dfa43da94be32cc09b024e087c120e4d2c20f96f8e9ddfe7eae186a540a22131cedfe556d1ebd9306684e345fd1":112:"8233588fca3ad1698d07b25fa3c4":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6fe7c70815aa12326cdcbb2d2d3e088bbaaef98b730f87fe8510b33d30e12afe":"":"e0253bd1f19e99a7f8848206fb8ac4a4":"397897eca4856f90d14c3cdfe1ad3cba47e23174ae2dab7d2a6320898584e03bffa3ffd526f416d7b3c579b0f3628744e36eebb5df519240c81d8bbbf5c5966519c5da083ab30a7aa42deae6180e517cdd764b7f77d19cc1a84141817758887a8d7265e7e62279b9d33cd2f1ba10fd54c6c96d4b8a5dbe2318fef629c8e2af0f":112:"477b0a884d788d1905646bd66084":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6fe7c70815aa12326cdcbb2d2d3e088bbaaef98b730f87fe8510b33d30e12afe":"":"e0253bd1f19e99a7f8848206fb8ac4a4":"397897eca4856f90d14c3cdfe1ad3cba47e23174ae2dab7d2a6320898584e03bffa3ffd526f416d7b3c579b0f3628744e36eebb5df519240c81d8bbbf5c5966519c5da083ab30a7aa42deae6180e517cdd764b7f77d19cc1a84141817758887a8d7265e7e62279b9d33cd2f1ba10fd54c6c96d4b8a5dbe2318fef629c8e2af0f":112:"477b0a884d788d1905646bd66084":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cbeefb3817cb02d617f385cf2371d52c8bcbc29e5e7a55cd2da131ca184c6e89":"":"f74156d6400ae46b612531848bffe18f":"1abe2ab05ceccf2391273126fe4a4426b94d2c3b97a7f1cd2ee6bb952bf4a546e972b5a1701d5ddb0e5bb7a248fcb47107a9fc77e4b9806b68a11850119aa239fa8be1370e3a2e1a8b168f7323afdfc4b8917d92570167848a56132d68876abc386c258a9233dc8a9eb73443b052e842c3d63e8b5369acdd038404e4e9a4b038":104:"0cb67cec1820339fa0552702dd":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"cbeefb3817cb02d617f385cf2371d52c8bcbc29e5e7a55cd2da131ca184c6e89":"":"f74156d6400ae46b612531848bffe18f":"1abe2ab05ceccf2391273126fe4a4426b94d2c3b97a7f1cd2ee6bb952bf4a546e972b5a1701d5ddb0e5bb7a248fcb47107a9fc77e4b9806b68a11850119aa239fa8be1370e3a2e1a8b168f7323afdfc4b8917d92570167848a56132d68876abc386c258a9233dc8a9eb73443b052e842c3d63e8b5369acdd038404e4e9a4b038":104:"0cb67cec1820339fa0552702dd":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6f5f65ce2fc8ec3f602f5df90eb7d506dd771337913680ac16bdcd15c56583d":"":"9212a548c597677d1747e98ce6fb18a4":"55ca486c0183d0134925880d2e21dde0af51c4c77c6038a5a9c0497884e0aa4715bdb5b4bb864acc708ac00b511a24fa08496df6a0ca83259110e97a011b876e748a1d0eae2951ce7c22661a3e2ecf50633c50e3d26fa33c2319c139b288825b7aa5efbd133a5ce7483feecb11167099565e3131d5f0cb360f2174f46cb6b37c":104:"08d7cc52d1637db2a43c399310":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e6f5f65ce2fc8ec3f602f5df90eb7d506dd771337913680ac16bdcd15c56583d":"":"9212a548c597677d1747e98ce6fb18a4":"55ca486c0183d0134925880d2e21dde0af51c4c77c6038a5a9c0497884e0aa4715bdb5b4bb864acc708ac00b511a24fa08496df6a0ca83259110e97a011b876e748a1d0eae2951ce7c22661a3e2ecf50633c50e3d26fa33c2319c139b288825b7aa5efbd133a5ce7483feecb11167099565e3131d5f0cb360f2174f46cb6b37c":104:"08d7cc52d1637db2a43c399310":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0e9a0391435acb57eae2e6217e0941c79a3ff938ec6a19b8a7db2ea972e49f54":"":"27cd1d7af7e491e30c8110cc01392529":"79140d32bb32dace0779e2d37a0f744d6d973e99a279962b43a6c0af63772e8a0a21d5d9dd3c33d4b218cb2f6f24dd8d93bb4e1e6a788cb93135321ecfed455e747fa919b85b63b9e98b4980a8ccb3b19d50d735742cb5853720c2ad37fa5b0e655149583585830f8d799c0d2e67c0dc24fc9273d9730f3bb367c487a5f89a25":104:"fbb477dd4b9898a9abc5a45c63":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0e9a0391435acb57eae2e6217e0941c79a3ff938ec6a19b8a7db2ea972e49f54":"":"27cd1d7af7e491e30c8110cc01392529":"79140d32bb32dace0779e2d37a0f744d6d973e99a279962b43a6c0af63772e8a0a21d5d9dd3c33d4b218cb2f6f24dd8d93bb4e1e6a788cb93135321ecfed455e747fa919b85b63b9e98b4980a8ccb3b19d50d735742cb5853720c2ad37fa5b0e655149583585830f8d799c0d2e67c0dc24fc9273d9730f3bb367c487a5f89a25":104:"fbb477dd4b9898a9abc5a45c63":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"55a12eeca637654252e3e40b371667e3f308b00f2fd2af696223e4cd89e3fd4e":"":"8a3793b6441258360f7f4801b03d0b26":"f5810dc5f25e49bd6d94bc63c2494aa7a579a4056a25f1dd9b2734d0b8731ee52523edd54ff475651d45c213e1bf254327fb0e2c41a7d85345b02bcc9d27b08915d332e1659671991a4bb74055967bebbba6ecceb182f57977130623d5a7b2175fa5a84b334868661c1f450b95562928b4791759796a177d59ed18bbf141e2ad":96:"99230019630647aedebbb24b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"55a12eeca637654252e3e40b371667e3f308b00f2fd2af696223e4cd89e3fd4e":"":"8a3793b6441258360f7f4801b03d0b26":"f5810dc5f25e49bd6d94bc63c2494aa7a579a4056a25f1dd9b2734d0b8731ee52523edd54ff475651d45c213e1bf254327fb0e2c41a7d85345b02bcc9d27b08915d332e1659671991a4bb74055967bebbba6ecceb182f57977130623d5a7b2175fa5a84b334868661c1f450b95562928b4791759796a177d59ed18bbf141e2ad":96:"99230019630647aedebbb24b":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d353f870a9c088de5674efd97646b9c5420b2bcdfcffefcadd81682847e5331":"":"f267fa982af5c85359b6447f9b7715ea":"7cf55630867af5dff747c8dd25bcc531d94a7730a20b6c03d46059ea93fcaa00d07ee17dad0e0dff814b02dfef0cbe00b37fd2f5f95ead7c72be60016f2934d7683fc1e47185c7211c49cb03e209b088edb14e533dbcb792ab7033728904f7ff12381a236dba97894ec1fafcf853ab15fff343f9265d0283acef10168ffd1271":96:"9553b583d4f9a1a8946fe053":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3d353f870a9c088de5674efd97646b9c5420b2bcdfcffefcadd81682847e5331":"":"f267fa982af5c85359b6447f9b7715ea":"7cf55630867af5dff747c8dd25bcc531d94a7730a20b6c03d46059ea93fcaa00d07ee17dad0e0dff814b02dfef0cbe00b37fd2f5f95ead7c72be60016f2934d7683fc1e47185c7211c49cb03e209b088edb14e533dbcb792ab7033728904f7ff12381a236dba97894ec1fafcf853ab15fff343f9265d0283acef10168ffd1271":96:"9553b583d4f9a1a8946fe053":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d227c9ff5d17a984983056fb96f3991932ae8132377529c29238cf7db94a359d":"":"b8f6536f376a7efe0e684acf350bae70":"1cc25da31f90de7fa47ebce92754d3faa99f88d4e25ccab45645c1acdf850d55d7f02f61a0bfdc3125f29259d7da8abef532fe0966c63d3486753c8a2cb63a39349a0641b2f2b9526a03b97d58ca60fbb054c6c164ff2836688b0cad54df2b165bc082eeae660e768dde5130e30f8edc863446661c74da69b9e56de8ae388da0":96:"44b95a37fab232c2efb11231":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d227c9ff5d17a984983056fb96f3991932ae8132377529c29238cf7db94a359d":"":"b8f6536f376a7efe0e684acf350bae70":"1cc25da31f90de7fa47ebce92754d3faa99f88d4e25ccab45645c1acdf850d55d7f02f61a0bfdc3125f29259d7da8abef532fe0966c63d3486753c8a2cb63a39349a0641b2f2b9526a03b97d58ca60fbb054c6c164ff2836688b0cad54df2b165bc082eeae660e768dde5130e30f8edc863446661c74da69b9e56de8ae388da0":96:"44b95a37fab232c2efb11231":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b2a57ef85ffcf0548c3d087012b336c46f6574cf1d97ca087bfad042ee83eec2":"":"3d580402d2a8dc4d7466e5dcb456be7a":"c2b9e95c16e55028794a63ef82d11fb83a2a75dc34a81f238e472c33264534bdd54cd07d02a0ecf9019ad1a6d6c779f339dd479e37940486950f183bade24fca2f24f06d4037b3555b09fc80279ea311769473eb0630b694a29823324cdf780d7d1a50d89f7a23b05f7a8c3ad04b7949aa9e6a55978ba48d8078b5a2fd3c1bbb":64:"072d4118e70cd5ab":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b2a57ef85ffcf0548c3d087012b336c46f6574cf1d97ca087bfad042ee83eec2":"":"3d580402d2a8dc4d7466e5dcb456be7a":"c2b9e95c16e55028794a63ef82d11fb83a2a75dc34a81f238e472c33264534bdd54cd07d02a0ecf9019ad1a6d6c779f339dd479e37940486950f183bade24fca2f24f06d4037b3555b09fc80279ea311769473eb0630b694a29823324cdf780d7d1a50d89f7a23b05f7a8c3ad04b7949aa9e6a55978ba48d8078b5a2fd3c1bbb":64:"072d4118e70cd5ab":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"63889ed5bf2c27d518a696b71c0f85592e3337aae95b5bf07289e4c5dfdc088d":"":"1ad534280a0fac7dce31f2ae4fb73f5a":"be1b9dabea33bb9443e27f674b27931c0fba699a33dc86fab29e50b76a9441030444b465317bbf2949faf908bc1b501d11a5ea2042e4b460a85f3be5836729e523d99b56ef39231d5c6d8ae2c2ab36ef44e2aa02a1f2c559c6e333216c7f9ed5f9b880a88e920219204c99a3ae8f90afd1396563bc59a691a93e0070b0b5fd90":64:"1bcea0ac2c1a0c73":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"63889ed5bf2c27d518a696b71c0f85592e3337aae95b5bf07289e4c5dfdc088d":"":"1ad534280a0fac7dce31f2ae4fb73f5a":"be1b9dabea33bb9443e27f674b27931c0fba699a33dc86fab29e50b76a9441030444b465317bbf2949faf908bc1b501d11a5ea2042e4b460a85f3be5836729e523d99b56ef39231d5c6d8ae2c2ab36ef44e2aa02a1f2c559c6e333216c7f9ed5f9b880a88e920219204c99a3ae8f90afd1396563bc59a691a93e0070b0b5fd90":64:"1bcea0ac2c1a0c73":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94e3e2c17cfb6f52d4fdba3ba6d18bba891b6662e85df14d7e61f04adb69e0e5":"":"8a80efb3bfe220526997543409fddb4d":"05da1b0f7ac6eef488d3f087ecae7f35abe3ef36d339709dc3fcb5b471979268ee894c3b6c7f984300d70bc5ea5fba923bfb41d88652bdaecc710964c51f3e2ae2c280b7d6c8e3b9a8a8991d19d92d46c8a158123187f19397ad1ad9080b4ffd04b82b5d68d89dacd3e76439013728c1395263e722b28e45dabf1ef46b8e70b5":64:"faa5c13d899f17ea":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"94e3e2c17cfb6f52d4fdba3ba6d18bba891b6662e85df14d7e61f04adb69e0e5":"":"8a80efb3bfe220526997543409fddb4d":"05da1b0f7ac6eef488d3f087ecae7f35abe3ef36d339709dc3fcb5b471979268ee894c3b6c7f984300d70bc5ea5fba923bfb41d88652bdaecc710964c51f3e2ae2c280b7d6c8e3b9a8a8991d19d92d46c8a158123187f19397ad1ad9080b4ffd04b82b5d68d89dacd3e76439013728c1395263e722b28e45dabf1ef46b8e70b5":64:"faa5c13d899f17ea":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe5e479ad0d79dbf717a1f51f5250d467819e444b79cb3def1e0033c80ddadd8":"":"47ce838083fd070d8544c0ad5337cdc6":"98476bf05a18c4ff1b6024dd779c1ac06d838705a0a83fe42bee5fc6ebf3b2a1a5049b67f4aabc8239cd6ff56504bcbad1e2498c159bbec2a6635933945f6ea49e5bc763dcf94f4b3643d3888f16105abb0965e24f51cb4949406124145e9ae31cc76535b4178492f38b311099df2751f674363ae7a58f6f93019653b7e6a6f0":32:"a3958500":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"fe5e479ad0d79dbf717a1f51f5250d467819e444b79cb3def1e0033c80ddadd8":"":"47ce838083fd070d8544c0ad5337cdc6":"98476bf05a18c4ff1b6024dd779c1ac06d838705a0a83fe42bee5fc6ebf3b2a1a5049b67f4aabc8239cd6ff56504bcbad1e2498c159bbec2a6635933945f6ea49e5bc763dcf94f4b3643d3888f16105abb0965e24f51cb4949406124145e9ae31cc76535b4178492f38b311099df2751f674363ae7a58f6f93019653b7e6a6f0":32:"a3958500":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"27d4dedb71a8f68ca5ce2b9e56da772bf5a09b7981d41cd29f485bd2d1adb8d4":"":"7e6f0343c54539717a97b6c8b9f7dec4":"d386db78043f719b7e137cbf79a7f53dda2fe3baccbebb57d499f6eb168e5151f10081d76b72ae0f30165efbdda469e826f9246e59dbcad5c0b27691c00d6c192c24073e99c19cf8c142087c0b83c4ce2fc7ba1e696394e5620ab2d117d5dcd2ac2298997407fd5de07d008de8f9941a4a5f8074736a59404118afac0700be6c":32:"50fd1798":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"27d4dedb71a8f68ca5ce2b9e56da772bf5a09b7981d41cd29f485bd2d1adb8d4":"":"7e6f0343c54539717a97b6c8b9f7dec4":"d386db78043f719b7e137cbf79a7f53dda2fe3baccbebb57d499f6eb168e5151f10081d76b72ae0f30165efbdda469e826f9246e59dbcad5c0b27691c00d6c192c24073e99c19cf8c142087c0b83c4ce2fc7ba1e696394e5620ab2d117d5dcd2ac2298997407fd5de07d008de8f9941a4a5f8074736a59404118afac0700be6c":32:"50fd1798":"":"":0 AES-GCM NIST Validation (AES-256,128,0,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a7aa836a469d28542d0d24d3232fad266da8fc889c6b6038b726d3da25f7b20":"":"9faf7cd805803e143ec8f3f13475efd2":"1006c707f608728b2bf64734062b12a5625062bcdcb80a3ce2058352a2922d5e6fbe19681b4f0d79ad3c837f81e72f2fbf8df669894e802a39072b26c286f4b05188c708f7c6edd5f5bb90b87ffa95b86d84d6c1c4591b11d22c772a8ad7f2fe6bd8b46be0e93672df2e8bff8ba80629e1846cfd4603e75f2d98874665c1a089":32:"07764143":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"5a7aa836a469d28542d0d24d3232fad266da8fc889c6b6038b726d3da25f7b20":"":"9faf7cd805803e143ec8f3f13475efd2":"1006c707f608728b2bf64734062b12a5625062bcdcb80a3ce2058352a2922d5e6fbe19681b4f0d79ad3c837f81e72f2fbf8df669894e802a39072b26c286f4b05188c708f7c6edd5f5bb90b87ffa95b86d84d6c1c4591b11d22c772a8ad7f2fe6bd8b46be0e93672df2e8bff8ba80629e1846cfd4603e75f2d98874665c1a089":32:"07764143":"":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a9444fd176acbe061d0221fde3ddfcc4ff74e995d981a831297c4cbda51c22a1":"c146ff5a988496cad7eced7a2ea471e0117d5d6bd2562c23ce9db4bf36d83ba3fc22e90486ec288a627d208e0b2fd3b65f8301cf7fc41d97959981a95cd1cf37effc46db99b94b21c941c3613c26a10b1a6b7793f467d58ff5134612230f1c49d7e1fcf664fe52fc6eca46273982f6fe729b009d90eb8d8e4a0b0dbe907b76da":"5714732145470da1c42452e10cd274b5":"":128:"db85b830a03357f408587410ebafd10d":"a3cad9a57fa28e6f6aaa37150a803bf8b77e765f0702e492c4e5ebb31ae6b12d791149153e469a92bb625784a699fd7ca517500ee3f2851840ba67063b28b481e24ba441314e8b7128f5aaccaf4c4e2c92258eb27310bf031422b7fc2f220f621d4c64837c9377222aced2411628018a409a744902c9e95c14b77d5bb7f5846b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a9444fd176acbe061d0221fde3ddfcc4ff74e995d981a831297c4cbda51c22a1":"c146ff5a988496cad7eced7a2ea471e0117d5d6bd2562c23ce9db4bf36d83ba3fc22e90486ec288a627d208e0b2fd3b65f8301cf7fc41d97959981a95cd1cf37effc46db99b94b21c941c3613c26a10b1a6b7793f467d58ff5134612230f1c49d7e1fcf664fe52fc6eca46273982f6fe729b009d90eb8d8e4a0b0dbe907b76da":"5714732145470da1c42452e10cd274b5":"":128:"db85b830a03357f408587410ebafd10d":"":"a3cad9a57fa28e6f6aaa37150a803bf8b77e765f0702e492c4e5ebb31ae6b12d791149153e469a92bb625784a699fd7ca517500ee3f2851840ba67063b28b481e24ba441314e8b7128f5aaccaf4c4e2c92258eb27310bf031422b7fc2f220f621d4c64837c9377222aced2411628018a409a744902c9e95c14b77d5bb7f5846b":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"686d3bd071e3f46f180611bc4ec8d7726fe72b6c617e7d42b3339f53918c9e36":"21983ad66449c557263aef299da6eef8f31d576fc17ed2dac3e836f7c2ceaff3094b2695452680e188df10c174810efd1fbaa6c832baedce0b92e4c7121447f6461ac909b4302cdf658095b1de532b536faa4fb38cfdf4192eb5c3fe090d979a343492f841b1edc6eb24b24bdcb90bbbe36d5f8409ce7d27194a7bb995ecc387":"a714e51e43aecfe2fda8f824ea1dc4b7":"":128:"cd30c3618c10d57e9a4477b4a44c5c36":"9610908a0eb2ee885981c9e512e1a55075a212d311073bbb2fb9248cce07af16ee4c58bdc8dbe806d28480f9065838146f3e1eb3ae97012cfe53863a13d487f061a49a6c78ca22a321fa25157dbe68c47d78f2359540cc9031ee42d78855ed90e6b8ea3d67725bfffcb6db3d438c982b5f88d9b660f7d82cb300c1fa1edebb6b":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"686d3bd071e3f46f180611bc4ec8d7726fe72b6c617e7d42b3339f53918c9e36":"21983ad66449c557263aef299da6eef8f31d576fc17ed2dac3e836f7c2ceaff3094b2695452680e188df10c174810efd1fbaa6c832baedce0b92e4c7121447f6461ac909b4302cdf658095b1de532b536faa4fb38cfdf4192eb5c3fe090d979a343492f841b1edc6eb24b24bdcb90bbbe36d5f8409ce7d27194a7bb995ecc387":"a714e51e43aecfe2fda8f824ea1dc4b7":"":128:"cd30c3618c10d57e9a4477b4a44c5c36":"":"9610908a0eb2ee885981c9e512e1a55075a212d311073bbb2fb9248cce07af16ee4c58bdc8dbe806d28480f9065838146f3e1eb3ae97012cfe53863a13d487f061a49a6c78ca22a321fa25157dbe68c47d78f2359540cc9031ee42d78855ed90e6b8ea3d67725bfffcb6db3d438c982b5f88d9b660f7d82cb300c1fa1edebb6b":0 AES-GCM NIST Validation (AES-256,128,1024,0,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6fe81f15a02e2ecf46e61199c057102d160e6b5d447d4a275972323fff908c3e":"0b4ee0385e6665da8fd2ae47f2d0cf1c5bd395a3bb447047ab5a3ae0b95355bf83d0381119a8d4c01acbe60cd7885da650502f73498a682fdc94f7b14f4c753226064fa15e3a90a6083e053f52f404b0d22394e243b187f913ee2c6bb16c3033f79d794852071970523a67467ce63c35390c163775de2be68b505a63f60245e8":"91d55cfdcdcd7d735d48100ff82227c3":"":128:"cd7da82e890b6d7480c7186b2ea7e6f1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6fe81f15a02e2ecf46e61199c057102d160e6b5d447d4a275972323fff908c3e":"0b4ee0385e6665da8fd2ae47f2d0cf1c5bd395a3bb447047ab5a3ae0b95355bf83d0381119a8d4c01acbe60cd7885da650502f73498a682fdc94f7b14f4c753226064fa15e3a90a6083e053f52f404b0d22394e243b187f913ee2c6bb16c3033f79d794852071970523a67467ce63c35390c163775de2be68b505a63f60245e8":"91d55cfdcdcd7d735d48100ff82227c3":"":128:"cd7da82e890b6d7480c7186b2ea7e6f1":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4c2095e1379389dc3810e8819314f5a2f87d1494213c5b1de1a402f7f4f746c4":"26ec8ebac0560538a948afbc18fb730e9a91f21392bde24b88b200f96114b229a5b57fa9d02cf10e6592d4dfb28bf0f00740c61157ce28784e9066ea3afd44ecf3a494723610cb593c0feffc6897e3435c6f448697ad3e241685c4e133eff53bdd0fe44dd8a033cfb1e1ea37a493934eb5303ae6ef47ce6478f767ef9e3301ab":"19788b2e0bd757947596676436e22df1":"":120:"f26a20bea561004267a0bfbf01674e":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"4c2095e1379389dc3810e8819314f5a2f87d1494213c5b1de1a402f7f4f746c4":"26ec8ebac0560538a948afbc18fb730e9a91f21392bde24b88b200f96114b229a5b57fa9d02cf10e6592d4dfb28bf0f00740c61157ce28784e9066ea3afd44ecf3a494723610cb593c0feffc6897e3435c6f448697ad3e241685c4e133eff53bdd0fe44dd8a033cfb1e1ea37a493934eb5303ae6ef47ce6478f767ef9e3301ab":"19788b2e0bd757947596676436e22df1":"":120:"f26a20bea561004267a0bfbf01674e":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"be5351efc0277afc9759ec2464a22cb4401f7a17efd1a205e7af023c7ed30ee1":"1eca91406f338fc09c2988b1d7dc8c409d719300c03840a497d7b680cdd5e09b144903477f7116a934e1d931cf368af1fc2a0a0e7caa95475a3cd7bf585a16fda31eb3f8201db0216b37a1635c1c030836b3dd05ca5b0194388fa198e717822131d5d4318690ef82d35ac80b27fff19aec8f020dc6c6ce28f0813bbbf8230ad9":"c6b26117d9dbd80c1c242ad41abe2acc":"":120:"61051d6c0801b4a6b6ca0124c019f3":"95447aded336d6c20d483a6f062d533efed0261ad321d37bf8b7321b98f55c0f0082ce7f3d341b18fea29a72fc909d30cd8c84a1640227227287674a9b2f16a81b191ecf3b6232d656c32d7b38bea82a1b27d5897694a2be56d7e39aa1e725f326b91bad20455f58a94a545170cb43d13d4b91e1cee82abb6a6e0d95d4de0567":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"be5351efc0277afc9759ec2464a22cb4401f7a17efd1a205e7af023c7ed30ee1":"1eca91406f338fc09c2988b1d7dc8c409d719300c03840a497d7b680cdd5e09b144903477f7116a934e1d931cf368af1fc2a0a0e7caa95475a3cd7bf585a16fda31eb3f8201db0216b37a1635c1c030836b3dd05ca5b0194388fa198e717822131d5d4318690ef82d35ac80b27fff19aec8f020dc6c6ce28f0813bbbf8230ad9":"c6b26117d9dbd80c1c242ad41abe2acc":"":120:"61051d6c0801b4a6b6ca0124c019f3":"":"95447aded336d6c20d483a6f062d533efed0261ad321d37bf8b7321b98f55c0f0082ce7f3d341b18fea29a72fc909d30cd8c84a1640227227287674a9b2f16a81b191ecf3b6232d656c32d7b38bea82a1b27d5897694a2be56d7e39aa1e725f326b91bad20455f58a94a545170cb43d13d4b91e1cee82abb6a6e0d95d4de0567":0 AES-GCM NIST Validation (AES-256,128,1024,0,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"814c2cdfdeecf39d43bb141fbfc62dac44f7552c5e5dac2d4913303fc860119b":"0d3013a1d7132f685d001420daa6c7b643bc36b887511acc4588237d3b412c79e4ebba29c08248ad46c7239e8daa232b7483c9c4e3d1c0bbebc696401efe21f7fd6fc0525a4ab81bd9a893d5f7ab23b70ed07c00f33649b8a996a006de6c94f7793f72848793f4d5b31311c68aae1e715b37409fbe506dac038a0950f05fe82b":"0db3ade15cb0dea98a47d1377e034d63":"":120:"e62f910b6046ba4e934d3cfc6e024c":"374d03cfe4dacf668df5e703902cc784f011f418b43887702972dcc3f021bcb9bdd61ed5425f2975b6da7052c4859501eb2f295eb95d10ba6b2d74e7decc1acacebf8568e93a70a7f40be41ac38db6f751518c2f44a69c01c44745c51ad9a333eda9c89d001aa644f1e4063a8eb2a3592e21c6abc515b5aacaec8c32bcf1d3c4":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"814c2cdfdeecf39d43bb141fbfc62dac44f7552c5e5dac2d4913303fc860119b":"0d3013a1d7132f685d001420daa6c7b643bc36b887511acc4588237d3b412c79e4ebba29c08248ad46c7239e8daa232b7483c9c4e3d1c0bbebc696401efe21f7fd6fc0525a4ab81bd9a893d5f7ab23b70ed07c00f33649b8a996a006de6c94f7793f72848793f4d5b31311c68aae1e715b37409fbe506dac038a0950f05fe82b":"0db3ade15cb0dea98a47d1377e034d63":"":120:"e62f910b6046ba4e934d3cfc6e024c":"":"374d03cfe4dacf668df5e703902cc784f011f418b43887702972dcc3f021bcb9bdd61ed5425f2975b6da7052c4859501eb2f295eb95d10ba6b2d74e7decc1acacebf8568e93a70a7f40be41ac38db6f751518c2f44a69c01c44745c51ad9a333eda9c89d001aa644f1e4063a8eb2a3592e21c6abc515b5aacaec8c32bcf1d3c4":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1ae4541110f2bc4f83cd720b5c40c8315413d896e034b75007f172baa13d29ec":"5ea811e7fbfc0e00bf2a6abfac50cad9efd90041c5f7fb8f046a0fecbd193b70a2de8a774d01dd3cd54f848cb3e9f5152ee1b052ba698bebfba1fbbdae44a260447d6e6482640ae4d01c9cac3d37d4ffe9a0de0b6001de504a33ef7620efe3ce48ecd6f5b1b3a89185c86d4d662a843ff730e040e3668d6170be4cced8a18a1c":"83f98eec51ee4cae4cb7fe28b64d1355":"":112:"df47eef69ba2faab887aa8f48e4b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1ae4541110f2bc4f83cd720b5c40c8315413d896e034b75007f172baa13d29ec":"5ea811e7fbfc0e00bf2a6abfac50cad9efd90041c5f7fb8f046a0fecbd193b70a2de8a774d01dd3cd54f848cb3e9f5152ee1b052ba698bebfba1fbbdae44a260447d6e6482640ae4d01c9cac3d37d4ffe9a0de0b6001de504a33ef7620efe3ce48ecd6f5b1b3a89185c86d4d662a843ff730e040e3668d6170be4cced8a18a1c":"83f98eec51ee4cae4cb7fe28b64d1355":"":112:"df47eef69ba2faab887aa8f48e4b":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"20c9b662ec4bd13bf58d64cb0a7159b0e7fee4703af66292bf75c8bd6e42e8dc":"45b64f2ed5ac707890c0c1726adf338770ce6a728fe86bb372c4c49409a32705f881bc4d31a27c455c7c7df9dd2c541743523e7d32f88930d988857847f011be5f5f31a31e8812745147cbff5c1294d0fd4a7285db4833f22bf1975250da99c4d0dd2c9688d7f8001bb6ef2bc898ce4d42c5b78e74645b56ce992338f49d4183":"2bc0847d46f3d1064bbf8fe8567f54a2":"":112:"5a1bf25aa8d5c3fe5cf1be8e54a1":"9079d6275db076625e8474c2914fe483d413d5339202f98f06c3b0ef063d8f3d31029deaf7f9349bfec57e5cf11f46f02d5a6520c7992efc951adbbea6d08e53faeb10dfe8b67ee4685da9ea4fe932551a65821147d06d4c462338e6ddda52017c2bc187fd6d02b7d5193f77da809d4e59a9061efad2f9cadbc4cd9b29728d32":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"20c9b662ec4bd13bf58d64cb0a7159b0e7fee4703af66292bf75c8bd6e42e8dc":"45b64f2ed5ac707890c0c1726adf338770ce6a728fe86bb372c4c49409a32705f881bc4d31a27c455c7c7df9dd2c541743523e7d32f88930d988857847f011be5f5f31a31e8812745147cbff5c1294d0fd4a7285db4833f22bf1975250da99c4d0dd2c9688d7f8001bb6ef2bc898ce4d42c5b78e74645b56ce992338f49d4183":"2bc0847d46f3d1064bbf8fe8567f54a2":"":112:"5a1bf25aa8d5c3fe5cf1be8e54a1":"":"9079d6275db076625e8474c2914fe483d413d5339202f98f06c3b0ef063d8f3d31029deaf7f9349bfec57e5cf11f46f02d5a6520c7992efc951adbbea6d08e53faeb10dfe8b67ee4685da9ea4fe932551a65821147d06d4c462338e6ddda52017c2bc187fd6d02b7d5193f77da809d4e59a9061efad2f9cadbc4cd9b29728d32":0 AES-GCM NIST Validation (AES-256,128,1024,0,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0a1554db37f2e275732a77e521cbd8170729d8677a85db73feacf3c66a89d689":"5421d93b7e6e0091978c673df4f3a406aef5f13eb5e6f95da19b0783308cbe26d4fd6c669cc4a9f069d7e62e4c6fad14b80e918fe91556a9a941a28b3dbf776a68ac7c42df7059b5ed713e78120aec84e7b68e96226c2b5e11a994864ed61b122e7e42ef6cfdae278fadbae1b3ea3362f4e6dc68eef6a70477b8a3ffcfba0df9":"b9194a4d42b139f04c29178467955f1d":"":112:"05949d591793ca52e679bfdf64f3":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0a1554db37f2e275732a77e521cbd8170729d8677a85db73feacf3c66a89d689":"5421d93b7e6e0091978c673df4f3a406aef5f13eb5e6f95da19b0783308cbe26d4fd6c669cc4a9f069d7e62e4c6fad14b80e918fe91556a9a941a28b3dbf776a68ac7c42df7059b5ed713e78120aec84e7b68e96226c2b5e11a994864ed61b122e7e42ef6cfdae278fadbae1b3ea3362f4e6dc68eef6a70477b8a3ffcfba0df9":"b9194a4d42b139f04c29178467955f1d":"":112:"05949d591793ca52e679bfdf64f3":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ab1d9bb571c4bdc9f3ef340914bddcfe0c8e7718d4a2530334372cec86e5fcb":"80bcea307e009745724d5f15d21f3b61a5d5a8401530346b34a2adfa13e3e8c9c9327d6fad914b081e554fbe6c1c6fe070b566620e559555c702c0ab5becf61ea1d9de64351ce43b2276ef4e20b5af7ce43db6d21286af4e740ef00c6d790705afcf0ee4850fffc12c662f2bd8212feb21db31065ab8f717a7509c213352b869":"6a5335901284dd3b64dc4a7f810bab96":"":104:"04b8e5423aee8c06539f435edd":"36b9602eee20b8f18dce0783cd1e01a799f81ae0a1ce6d293a26c62f47e7dad85c8446697cc09c81d3d9ead6f9e55c4147211660c8aea9536cc5516e9883c7d6854be580af8cd47ba38fa8451f0dad9c904e0e7f9997eff7e29bf880cd7cedd79493a0e299efe644046e4a46bf6645dfb2397b3a482a346b215deb778c9b7636":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"3ab1d9bb571c4bdc9f3ef340914bddcfe0c8e7718d4a2530334372cec86e5fcb":"80bcea307e009745724d5f15d21f3b61a5d5a8401530346b34a2adfa13e3e8c9c9327d6fad914b081e554fbe6c1c6fe070b566620e559555c702c0ab5becf61ea1d9de64351ce43b2276ef4e20b5af7ce43db6d21286af4e740ef00c6d790705afcf0ee4850fffc12c662f2bd8212feb21db31065ab8f717a7509c213352b869":"6a5335901284dd3b64dc4a7f810bab96":"":104:"04b8e5423aee8c06539f435edd":"":"36b9602eee20b8f18dce0783cd1e01a799f81ae0a1ce6d293a26c62f47e7dad85c8446697cc09c81d3d9ead6f9e55c4147211660c8aea9536cc5516e9883c7d6854be580af8cd47ba38fa8451f0dad9c904e0e7f9997eff7e29bf880cd7cedd79493a0e299efe644046e4a46bf6645dfb2397b3a482a346b215deb778c9b7636":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7dddbd5657e22750bfe6baa70a1f4ac46c1ef8bee573a57cfcef50b66f85e593":"2bf5aba83a8161b9d21ff29251fb0efa697b1ea9c1b3de8481d5fd4d6b57afda0b098decdc8278cc855f25da4116ed558fc4e665a49a8fff3aef11115757a99c10b5a73b1f794f9502186c13dc79442f9226bbf4df19a6440281f76184933aeae438a25f85dbd0781e020a9f7e29fb8e517f597719e639cbd6061ea3b4b67fb0":"fcb962c39e4850efc8ffd43d9cd960a6":"":104:"1d8cdadcf1872fb2b697e82ef6":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7dddbd5657e22750bfe6baa70a1f4ac46c1ef8bee573a57cfcef50b66f85e593":"2bf5aba83a8161b9d21ff29251fb0efa697b1ea9c1b3de8481d5fd4d6b57afda0b098decdc8278cc855f25da4116ed558fc4e665a49a8fff3aef11115757a99c10b5a73b1f794f9502186c13dc79442f9226bbf4df19a6440281f76184933aeae438a25f85dbd0781e020a9f7e29fb8e517f597719e639cbd6061ea3b4b67fb0":"fcb962c39e4850efc8ffd43d9cd960a6":"":104:"1d8cdadcf1872fb2b697e82ef6":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6916b93b2712421f1f4582de7ec4237c4e42e2b32c7dced2f8bb5bd2e0598312":"3739cca20279a36ddb857ac22beae901a49529b3182463ab81a7c46e437eb0b0571e8c16f7b626ecd9f2ca0cd83debe3f83e5d58ed3738899f4b616755eb57fb965208f261736bdf7648b1f8595c6b6a779768115e3077dfee7a42d44b555a51675fb1ce9961d0e21b2b9b477c0541184350e70decf7c14a4c24b8a6cd5fed8e":"b4d9248bb500e40de99ca2a13e743f1c":"":104:"090d03446d65adcc0a42387e8e":"0255be7ac7ac6feb3a21f572f6a593cc8a97f17af7064c80e478f4a6c469cf94d604bc014b003bf284d216161a9c8a493af43c6a0d8caf813a9e6f83c7ed56dd57543876b11f76aa2be80dcd79d19ac61f00fa423ac2f52fae7a8327cd91494ca4116feb735980ad0a4b1445cb7f38cc712b8aee72179e65b97fca38694e3670":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6916b93b2712421f1f4582de7ec4237c4e42e2b32c7dced2f8bb5bd2e0598312":"3739cca20279a36ddb857ac22beae901a49529b3182463ab81a7c46e437eb0b0571e8c16f7b626ecd9f2ca0cd83debe3f83e5d58ed3738899f4b616755eb57fb965208f261736bdf7648b1f8595c6b6a779768115e3077dfee7a42d44b555a51675fb1ce9961d0e21b2b9b477c0541184350e70decf7c14a4c24b8a6cd5fed8e":"b4d9248bb500e40de99ca2a13e743f1c":"":104:"090d03446d65adcc0a42387e8e":"":"0255be7ac7ac6feb3a21f572f6a593cc8a97f17af7064c80e478f4a6c469cf94d604bc014b003bf284d216161a9c8a493af43c6a0d8caf813a9e6f83c7ed56dd57543876b11f76aa2be80dcd79d19ac61f00fa423ac2f52fae7a8327cd91494ca4116feb735980ad0a4b1445cb7f38cc712b8aee72179e65b97fca38694e3670":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b751c8b724165009a8bd97a9d2a0e22cae5a95c4743c55eeeef0a6fe7d946bec":"e8546a5af1e38114822e60e75563a9399c88796f303c99c69d1f3c50379da81e1cd5b5a4a721e23c59da58ea4361b7ff58408e506a27fea24f9a235c6af7f7a5bd93fa31e90edfc322821c08d6324134830b7fe160b4a3e6d27866a10e6e60762a31618ef92f5c67ccb1deb1f1b188f0e687165e7c366c7418920df4f4fcdcae":"160c50c0621c03fd1572df6ba49f0d1e":"":96:"9fef9becf21901496772996f":"175fa6b7cd781ec057ff78ba410f2897a920739b5fc4f04bc9b998fbc7cc18e327ad44d59b167e4627256aaecd97dc3e4a7c9baaf51d177787a7f4a0a2d207a855753c4754d41348982d9418b6b24b590632d5115dc186b0ba3bec16b41fa47c0077c5d091ec705e554475024814c5167121dd224c544686398df3f33c210e82":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b751c8b724165009a8bd97a9d2a0e22cae5a95c4743c55eeeef0a6fe7d946bec":"e8546a5af1e38114822e60e75563a9399c88796f303c99c69d1f3c50379da81e1cd5b5a4a721e23c59da58ea4361b7ff58408e506a27fea24f9a235c6af7f7a5bd93fa31e90edfc322821c08d6324134830b7fe160b4a3e6d27866a10e6e60762a31618ef92f5c67ccb1deb1f1b188f0e687165e7c366c7418920df4f4fcdcae":"160c50c0621c03fd1572df6ba49f0d1e":"":96:"9fef9becf21901496772996f":"":"175fa6b7cd781ec057ff78ba410f2897a920739b5fc4f04bc9b998fbc7cc18e327ad44d59b167e4627256aaecd97dc3e4a7c9baaf51d177787a7f4a0a2d207a855753c4754d41348982d9418b6b24b590632d5115dc186b0ba3bec16b41fa47c0077c5d091ec705e554475024814c5167121dd224c544686398df3f33c210e82":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0faf32c22c2a4ee38fe4b5ce08f98fdf6f83b5038dcba5ec8332b3eeb5c710c7":"8a556cc30075753c6e94c2f669bca2058ff6abcbffffc82da7cfca0a45af82dfb4cf487ceb4ede72be87ee4c8b72db1e96459de1dc96721464c544c001d785f2188b9fccaec4b1a37970d38b326f30163d2fdfdf8a2ce74aec55abcd823772b54f8081d086a2e7b17b4086d6c4a5ea67828ef0b593ea1387b2c61f5dfe8f2bb0":"04885a5846f5f75a760193de7f07853c":"":96:"0c13506ed9f082dd08434342":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0faf32c22c2a4ee38fe4b5ce08f98fdf6f83b5038dcba5ec8332b3eeb5c710c7":"8a556cc30075753c6e94c2f669bca2058ff6abcbffffc82da7cfca0a45af82dfb4cf487ceb4ede72be87ee4c8b72db1e96459de1dc96721464c544c001d785f2188b9fccaec4b1a37970d38b326f30163d2fdfdf8a2ce74aec55abcd823772b54f8081d086a2e7b17b4086d6c4a5ea67828ef0b593ea1387b2c61f5dfe8f2bb0":"04885a5846f5f75a760193de7f07853c":"":96:"0c13506ed9f082dd08434342":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dddc3d2f82bdcdbc37648a6b9b416af28753740f8e998cd1a52a0b665369f1c":"07bf84b15b21951fd22049be6991a672503ae243b8d285fb1e515e1d2c36bfd5b0d0bcce85791f2cea8f616aed68a7d9cf4eaf76418e8b1ec27751de67cbfd9d9f7905b2667904f10d598503f04c04ea00a681ff89a9c446d5763898430bd7a9dfebfe544e3ed3e639b362683a651e087626ffa63c0c2b3e0dd088b81b07f75e":"0a93b883cbd42998ae2e39aab342cb28":"":96:"5c37918edb7aa65b246fd5a6":"ff7b7b2f88b8c6f9f9bad7152874e995eea0ff1ce1ecd9b8d563642a37a31499f14d70f0dd835b7adf80928497f845fd8c2786cd53af25f8c9fe1bba24e3c3860162635bbed58f06cf6c9966bb9b570987a48329279bb84afb9e464bb4ad19ae6600175086e28929569027c5285d2ed97615e5a7dada40ba03c440861f524475":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0dddc3d2f82bdcdbc37648a6b9b416af28753740f8e998cd1a52a0b665369f1c":"07bf84b15b21951fd22049be6991a672503ae243b8d285fb1e515e1d2c36bfd5b0d0bcce85791f2cea8f616aed68a7d9cf4eaf76418e8b1ec27751de67cbfd9d9f7905b2667904f10d598503f04c04ea00a681ff89a9c446d5763898430bd7a9dfebfe544e3ed3e639b362683a651e087626ffa63c0c2b3e0dd088b81b07f75e":"0a93b883cbd42998ae2e39aab342cb28":"":96:"5c37918edb7aa65b246fd5a6":"":"ff7b7b2f88b8c6f9f9bad7152874e995eea0ff1ce1ecd9b8d563642a37a31499f14d70f0dd835b7adf80928497f845fd8c2786cd53af25f8c9fe1bba24e3c3860162635bbed58f06cf6c9966bb9b570987a48329279bb84afb9e464bb4ad19ae6600175086e28929569027c5285d2ed97615e5a7dada40ba03c440861f524475":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a0b1a62e46e7712277fc711e19d0c0c865ee77b42ac964b7202dbcaf428086c2":"7dd7c0787fdbea4aacf929341659dcf4b75cbca8f92001e8b62a4d7b40272c5755fa9c445857db05328dc11ce5221f044f4b3dafbf0e2d72a1ad0d3e4c804148db578218690ccc620d8b97b4450ff83400a6caaa959617611446a6627138a4067be9ea410d4b0581022ab621928205b4a4480560fc4c2c3b39a2805684006f35":"e20957a49a27e247d00379850f934d6c":"":64:"c99751516620bf89":"9307620479f076c39f53965c87d20c2aff11c736c040dba74cd690d275591a5defc57a02f6806de82eb7051548589484364f6c9b91f233a87258ede1ee276cb2c93b4fc76f4d7e60cbd29ba2c54cb479c178fa462c1c2fb6eeb3f1df0edfb894c9222b994c4931dedf7c6e8ddecbde385ddf4481807f52322a47bf5ff7272991":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"a0b1a62e46e7712277fc711e19d0c0c865ee77b42ac964b7202dbcaf428086c2":"7dd7c0787fdbea4aacf929341659dcf4b75cbca8f92001e8b62a4d7b40272c5755fa9c445857db05328dc11ce5221f044f4b3dafbf0e2d72a1ad0d3e4c804148db578218690ccc620d8b97b4450ff83400a6caaa959617611446a6627138a4067be9ea410d4b0581022ab621928205b4a4480560fc4c2c3b39a2805684006f35":"e20957a49a27e247d00379850f934d6c":"":64:"c99751516620bf89":"":"9307620479f076c39f53965c87d20c2aff11c736c040dba74cd690d275591a5defc57a02f6806de82eb7051548589484364f6c9b91f233a87258ede1ee276cb2c93b4fc76f4d7e60cbd29ba2c54cb479c178fa462c1c2fb6eeb3f1df0edfb894c9222b994c4931dedf7c6e8ddecbde385ddf4481807f52322a47bf5ff7272991":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ffcc1c88fba1723b3ab57b458d9bffb98b878c967fb43b9db2ae0753d32a3bb1":"19b6dec86d93c466307de3a36c0791ed1010b1b9cf8d30347ae46e0f9283c9fda43da8cb491dd17cc4298b1f0b876d6a0f4bcbc9667fe34564bc08f8f7b67045057d19f4bf027bc839e590822fa09a5cef1af18e64a0116aa2a01a3f246c2b5272c18c9aa23efe674ba53d533ae8f0695cb78c1155cdc7a9d7fae2c4567dc07c":"d533c2170c5dc203512c81c34eff4077":"":64:"167ec8675e7f9e12":"0539287ac546fe5342e4c3c0ec07127dcd22899abfe8cdd6e89d08f1374d76e877bec4844d06e0a9f32d181c8d945ba16a54ce3725fae21d8245c070a4da0c646203d6b91325b665ab98c30295851c59265b4ab567b968b6e98536b7850738d92e9627b4c9c6f5d9ae2520944783d8f788a1aa11f3f5245660d41f388e26e0a1":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ffcc1c88fba1723b3ab57b458d9bffb98b878c967fb43b9db2ae0753d32a3bb1":"19b6dec86d93c466307de3a36c0791ed1010b1b9cf8d30347ae46e0f9283c9fda43da8cb491dd17cc4298b1f0b876d6a0f4bcbc9667fe34564bc08f8f7b67045057d19f4bf027bc839e590822fa09a5cef1af18e64a0116aa2a01a3f246c2b5272c18c9aa23efe674ba53d533ae8f0695cb78c1155cdc7a9d7fae2c4567dc07c":"d533c2170c5dc203512c81c34eff4077":"":64:"167ec8675e7f9e12":"":"0539287ac546fe5342e4c3c0ec07127dcd22899abfe8cdd6e89d08f1374d76e877bec4844d06e0a9f32d181c8d945ba16a54ce3725fae21d8245c070a4da0c646203d6b91325b665ab98c30295851c59265b4ab567b968b6e98536b7850738d92e9627b4c9c6f5d9ae2520944783d8f788a1aa11f3f5245660d41f388e26e0a1":0 AES-GCM NIST Validation (AES-256,128,1024,0,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"55e94b339c3bafe068ef9cc30787cc6705850114976843777c92b4b331801650":"147cc7bc4008dadf1956520b5998d961499bdf3d8b168591adbfd99411ad7b34eb4b2a5c1bb0522b810fec12dd7c775784d7ecdc741e6dec8191361e6abf473b219221801951b4d5ffe955ab50eef9cffdfee65ba29ddfa943fb52d722825338c307870a48a35f51db340aa946c71904d03174b1e4a498238b9d631a6982c68d":"2e2b31214d61276a54daf2ccb98baa36":"":64:"5266e9c67c252164":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"55e94b339c3bafe068ef9cc30787cc6705850114976843777c92b4b331801650":"147cc7bc4008dadf1956520b5998d961499bdf3d8b168591adbfd99411ad7b34eb4b2a5c1bb0522b810fec12dd7c775784d7ecdc741e6dec8191361e6abf473b219221801951b4d5ffe955ab50eef9cffdfee65ba29ddfa943fb52d722825338c307870a48a35f51db340aa946c71904d03174b1e4a498238b9d631a6982c68d":"2e2b31214d61276a54daf2ccb98baa36":"":64:"5266e9c67c252164":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"13c9572bdef62510d84f2d415cc481cd1e71b9c1132b43e63b21ba4e16de9b39":"7c78e634dec811173ff3c4a9a48ae3ae794fbd2aefd4b31701777ff6fcb670744c592a1d298d319717870dca364b2a3562a4ffa422bf7173c4f7ea9b0edf675e948f8370ffd0fd0d5703a9d33e8f9f375b8b641a1b1eecd1692ad1d461a68d97f91f9087f213aff23db1246ee16f403969c238f99eed894658277da23ced11ee":"a8339ba505a14786ad05edfe8cebb8d0":"":32:"df3cab08":"91f9780daefd2c1010c458054ac6e35baa885cdd2c95e28e13f84451064e31e0739f27bf259cb376ab951e1c7048e1252f0849ccb5453fc97b319666ebbfbc7ef3055212a61582d1b69158f3b1629950a41bc756bded20498492ebc49a1535d1bd915e59c49b87ffebea2f4ad4516ecdd63fa5afda9cce9dc730d6ab2757384a":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"13c9572bdef62510d84f2d415cc481cd1e71b9c1132b43e63b21ba4e16de9b39":"7c78e634dec811173ff3c4a9a48ae3ae794fbd2aefd4b31701777ff6fcb670744c592a1d298d319717870dca364b2a3562a4ffa422bf7173c4f7ea9b0edf675e948f8370ffd0fd0d5703a9d33e8f9f375b8b641a1b1eecd1692ad1d461a68d97f91f9087f213aff23db1246ee16f403969c238f99eed894658277da23ced11ee":"a8339ba505a14786ad05edfe8cebb8d0":"":32:"df3cab08":"":"91f9780daefd2c1010c458054ac6e35baa885cdd2c95e28e13f84451064e31e0739f27bf259cb376ab951e1c7048e1252f0849ccb5453fc97b319666ebbfbc7ef3055212a61582d1b69158f3b1629950a41bc756bded20498492ebc49a1535d1bd915e59c49b87ffebea2f4ad4516ecdd63fa5afda9cce9dc730d6ab2757384a":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30a14ca53913acbb215b4e4159083106db3fff83cbedd1e5425f65af1e94f5dd":"8c5f73ee1544553b712ad7a14f31379c8d54a4e432fb6c5112436988d83c4e94954b0249b470538fb977b756fbee70b811d4dc047a869e207bb0b495f1e271d0034e912000e97594033e0dedde0591b297f8a84bafcc93a46268a5bba117b558f1c73513e971c80a7083e1718fc12d0cc0d996a8e09603d564f0b8e81eea28bc":"4f23f04904de76d6decd4bd380ff56b1":"":32:"18e92b96":"bb4b3f8061edd6fa418dd71fe22eb0528547050b3bfbaa1c74e82148470d557499ce856de3e988384c0a73671bf370e560d8fda96dabe4728b5f72a6f9efd5023b07a96a631cafdf2c878b2567104c466f82b89f429915cf3331845febcff008558f836b4c12d53e94d363eae43a50fc6cb36f4ca183be92ca5f299704e2c8cf":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"30a14ca53913acbb215b4e4159083106db3fff83cbedd1e5425f65af1e94f5dd":"8c5f73ee1544553b712ad7a14f31379c8d54a4e432fb6c5112436988d83c4e94954b0249b470538fb977b756fbee70b811d4dc047a869e207bb0b495f1e271d0034e912000e97594033e0dedde0591b297f8a84bafcc93a46268a5bba117b558f1c73513e971c80a7083e1718fc12d0cc0d996a8e09603d564f0b8e81eea28bc":"4f23f04904de76d6decd4bd380ff56b1":"":32:"18e92b96":"":"bb4b3f8061edd6fa418dd71fe22eb0528547050b3bfbaa1c74e82148470d557499ce856de3e988384c0a73671bf370e560d8fda96dabe4728b5f72a6f9efd5023b07a96a631cafdf2c878b2567104c466f82b89f429915cf3331845febcff008558f836b4c12d53e94d363eae43a50fc6cb36f4ca183be92ca5f299704e2c8cf":0 AES-GCM NIST Validation (AES-256,128,1024,0,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e69f419140289ac25fb0e2ef9cc4f7e06777ac20f7d631918d1af0c8883b7d6a":"ff8dfa4e70490ea9c84cb894dc5d7e1b935ebcdea80a39c4161d4db42cbb269cc86abd381af15ec9a4a42ed18c1eed540decec19722df46f22aa06883297cb393fb23e4bb31a817e88357aa923c7ecbcf24c28a09f622dd21fa70c0a02193024fdcefeaa96cc1b50f81a65dfa9e1bb5126f0c9766a861eed096ec15fb07b0f81":"531248afdaaf1b86cf34d2394900afd9":"":32:"c6885cdd":"f75299e0ead3834fc7ebd4b2051541b598ad57cc908fdcd4324cf4ccf7dcf7b3f0737ad6c026399a8b1b6d3d50011b3c48ea2c89833b4b44c437677f230b75d36848781d4af14546894eecd873a2b1c3d2fcdd676b10bd55112038c0fdaa7b5598fe4db273a1b6744cba47189b7e2a973651bfc2aaa9e9abea4494047b957a80":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"e69f419140289ac25fb0e2ef9cc4f7e06777ac20f7d631918d1af0c8883b7d6a":"ff8dfa4e70490ea9c84cb894dc5d7e1b935ebcdea80a39c4161d4db42cbb269cc86abd381af15ec9a4a42ed18c1eed540decec19722df46f22aa06883297cb393fb23e4bb31a817e88357aa923c7ecbcf24c28a09f622dd21fa70c0a02193024fdcefeaa96cc1b50f81a65dfa9e1bb5126f0c9766a861eed096ec15fb07b0f81":"531248afdaaf1b86cf34d2394900afd9":"":32:"c6885cdd":"":"f75299e0ead3834fc7ebd4b2051541b598ad57cc908fdcd4324cf4ccf7dcf7b3f0737ad6c026399a8b1b6d3d50011b3c48ea2c89833b4b44c437677f230b75d36848781d4af14546894eecd873a2b1c3d2fcdd676b10bd55112038c0fdaa7b5598fe4db273a1b6744cba47189b7e2a973651bfc2aaa9e9abea4494047b957a80":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"404a5d1ac9e32f9caabffbfa485ce9c27edc9e5cde0f2aab4f32ce3121449b88":"b63ec4d28854b7fe2d4d13973f5bcb16f78494ce25cc2820de9d0dc1d8d91db1f19bc9e01cee8418c9e88a69b2f30cdbb0dbdbb50be71e1e666c111c126f2b7197c02f69a1b2ec5e1bf4062b2d0b22fb0fa1585b4e6286b29f6ac98d1b1319dd99851fa6921607077d2947140fdeeea145b56ea7b6af276c9f65393bc43ede33":"b6e6c078e6869df156faa9ac32f057c3":"6ebc75fc9304f2b139abc7d3f68b253228009c503a08b7be77852da9e1afbe72c9ab374740b0dc391fa4d7e17de6a0aa08c69e6f5c5f05411e71e70c69dfbcf693df84c30f7a8e6c7949ea1e734297c0ea3df9b7e905faa6bbdcaf1ff2625a39363308331d74892cf531cb3f6d7db31bbe9a039fca87100367747024f68c5b77":128:"94c1b9b70f9c48e7efd40ecab320c2d3":"56a0ac94f3ec7be2608154f779c434ee96db5ed4f5a6e1acfb32361ce04e16e1337be5978df06d7c4f6012385fb9d45bb397dc00f165883714b4a5b2f72f69c018ffa6d4420ad1b772e94575f035ad203be3d34b5b789a99389f295b43f004de3daaef7fa918712d3a23ca44329595e08da190e3678bc6ad9b500b9f885abe23":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"404a5d1ac9e32f9caabffbfa485ce9c27edc9e5cde0f2aab4f32ce3121449b88":"b63ec4d28854b7fe2d4d13973f5bcb16f78494ce25cc2820de9d0dc1d8d91db1f19bc9e01cee8418c9e88a69b2f30cdbb0dbdbb50be71e1e666c111c126f2b7197c02f69a1b2ec5e1bf4062b2d0b22fb0fa1585b4e6286b29f6ac98d1b1319dd99851fa6921607077d2947140fdeeea145b56ea7b6af276c9f65393bc43ede33":"b6e6c078e6869df156faa9ac32f057c3":"6ebc75fc9304f2b139abc7d3f68b253228009c503a08b7be77852da9e1afbe72c9ab374740b0dc391fa4d7e17de6a0aa08c69e6f5c5f05411e71e70c69dfbcf693df84c30f7a8e6c7949ea1e734297c0ea3df9b7e905faa6bbdcaf1ff2625a39363308331d74892cf531cb3f6d7db31bbe9a039fca87100367747024f68c5b77":128:"94c1b9b70f9c48e7efd40ecab320c2d3":"":"56a0ac94f3ec7be2608154f779c434ee96db5ed4f5a6e1acfb32361ce04e16e1337be5978df06d7c4f6012385fb9d45bb397dc00f165883714b4a5b2f72f69c018ffa6d4420ad1b772e94575f035ad203be3d34b5b789a99389f295b43f004de3daaef7fa918712d3a23ca44329595e08da190e3678bc6ad9b500b9f885abe23":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b56f0c980acf7875cf7f27d53ad4a276adc126d0b93a5774ac4277eecad4309e":"2c94299e36b7c4a825ecbc5a7809061e0a6761764a5a655ffdb0c20e5c3fcb10f4e93c68aa0a38c2acc5d06f2b7c4ff4fcf814b551bfefa248dbe06a09a0f153213538a31fa7cf7d646b5b53908d8978f514c9c4d6d66f2b3738024b5f9c3fd86b6da0c818203183f4205f186ea44a54edb911b1a17c424c95852c8d271b2e93":"b004c049decfb43d6f3ec13c56f839ef":"b2045b97fbb52a5fc6ff03d74e59dd696f3f442c0b555add8e6d111f835df420f45e970c4b32a84f0c45ba3710b5cd574001862b073efa5c9c4bd50127b2ce72d2c736c5e2723956da5a0acb82041a609386d07b50551c1d1fa4678886bac54b0bd080cc5ef607dca2a0d6a1e71f0e3833678bf8560bc059dae370ec94d43af6":128:"fce7234f7f76b5d502fd2b96fc9b1ce7":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"b56f0c980acf7875cf7f27d53ad4a276adc126d0b93a5774ac4277eecad4309e":"2c94299e36b7c4a825ecbc5a7809061e0a6761764a5a655ffdb0c20e5c3fcb10f4e93c68aa0a38c2acc5d06f2b7c4ff4fcf814b551bfefa248dbe06a09a0f153213538a31fa7cf7d646b5b53908d8978f514c9c4d6d66f2b3738024b5f9c3fd86b6da0c818203183f4205f186ea44a54edb911b1a17c424c95852c8d271b2e93":"b004c049decfb43d6f3ec13c56f839ef":"b2045b97fbb52a5fc6ff03d74e59dd696f3f442c0b555add8e6d111f835df420f45e970c4b32a84f0c45ba3710b5cd574001862b073efa5c9c4bd50127b2ce72d2c736c5e2723956da5a0acb82041a609386d07b50551c1d1fa4678886bac54b0bd080cc5ef607dca2a0d6a1e71f0e3833678bf8560bc059dae370ec94d43af6":128:"fce7234f7f76b5d502fd2b96fc9b1ce7":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,128) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c5027c36e6caa1b3e5e45fead32b5e3126ac41f106c491b0b3a7c16502f4fe6":"58f0ceaa31c0025d2e6bb58720cce4b64f5f6c657c847ae42936eb1e343fea397c8a8cf2f5ef02ffaec25f431900dcb0910cf32cea9eca3b78aed1c451c7af51066489f87b2a5f8cf28d6fdb6ce49d898b6167b590a3907be7618be11fb0922a3cfd18e73efef19e5cdc250fa33f61e3940c6482ae35f339e8c0a85a17379a4e":"3ee660f03858669e557e3effdd7df6bd":"93e803c79de6ad652def62cf3cd34f9addc9dd1774967a0f69e1d28361eb2cacc177c63c07657389ce23bbe65d73e0460946d31be495424655c7724eac044cafafe1540fcbd4218921367054e43e3d21e0fa6a0da9f8b20c5cdbd019c944a2d2ee6aa6760ee1131e58fec9da30790f5a873e792098a82ddf18c3813611d9242a":128:"ac33f5ffca9df4efc09271ff7a4f58e2":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"1c5027c36e6caa1b3e5e45fead32b5e3126ac41f106c491b0b3a7c16502f4fe6":"58f0ceaa31c0025d2e6bb58720cce4b64f5f6c657c847ae42936eb1e343fea397c8a8cf2f5ef02ffaec25f431900dcb0910cf32cea9eca3b78aed1c451c7af51066489f87b2a5f8cf28d6fdb6ce49d898b6167b590a3907be7618be11fb0922a3cfd18e73efef19e5cdc250fa33f61e3940c6482ae35f339e8c0a85a17379a4e":"3ee660f03858669e557e3effdd7df6bd":"93e803c79de6ad652def62cf3cd34f9addc9dd1774967a0f69e1d28361eb2cacc177c63c07657389ce23bbe65d73e0460946d31be495424655c7724eac044cafafe1540fcbd4218921367054e43e3d21e0fa6a0da9f8b20c5cdbd019c944a2d2ee6aa6760ee1131e58fec9da30790f5a873e792098a82ddf18c3813611d9242a":128:"ac33f5ffca9df4efc09271ff7a4f58e2":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"34c3019810d72b5e584f0758f2f5888a42729a33610aafa9824badade4136bbd":"22deef66cbb7db240c399b6c83407f090d6999ba25e560b2087fed0467904bb5c40cbaa05b8bf0ff5a77c53fa229478d8e0736414daf9c420417c391c9a523fd85954533f1304d81359bdcc2c4ac90d9f5f8a67a517d7f05ba0409b718159baf11cd9154e815d5745179beb59954a45a8676a375d5af7fae4d0da05c4ea91a13":"f315ea36c17fc57dab3a2737d687cd4f":"f33c5a3a9e546ad5b35e4febf2ae557ca767b55d93bb3c1cf62d862d112dbd26f8fe2a3f54d347c1bc30029e55118bab2662b99b984b8b8e2d76831f94e48587de2709e32f16c26695f07e654b703eba6428f30070e23ed40b61d04dd1430e33c629117d945d9c0e4d36c79a8b8ab555d85083a898e7e7fbeb64a45cc3511d99":120:"0bae9403888efb4d8ec97df604cd5d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"34c3019810d72b5e584f0758f2f5888a42729a33610aafa9824badade4136bbd":"22deef66cbb7db240c399b6c83407f090d6999ba25e560b2087fed0467904bb5c40cbaa05b8bf0ff5a77c53fa229478d8e0736414daf9c420417c391c9a523fd85954533f1304d81359bdcc2c4ac90d9f5f8a67a517d7f05ba0409b718159baf11cd9154e815d5745179beb59954a45a8676a375d5af7fae4d0da05c4ea91a13":"f315ea36c17fc57dab3a2737d687cd4f":"f33c5a3a9e546ad5b35e4febf2ae557ca767b55d93bb3c1cf62d862d112dbd26f8fe2a3f54d347c1bc30029e55118bab2662b99b984b8b8e2d76831f94e48587de2709e32f16c26695f07e654b703eba6428f30070e23ed40b61d04dd1430e33c629117d945d9c0e4d36c79a8b8ab555d85083a898e7e7fbeb64a45cc3511d99":120:"0bae9403888efb4d8ec97df604cd5d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"29397d98fc5a7f04b5c8b6aa3a1dd975b6e4678457ae7f0691eee40b5397503a":"0bbf1079cb5569c32257bc7e52371db46f3961b457402b816588243b4523543430d5ca56b52de6632724c51e6c3af310b28822c749a12bdd58dee58bbc3266631562a998ec3acdc8a2567a9f07f7f9759c3f50b1d1dcdd529256b80c0d227fc1fe8b58c62d1c643f1ac2996809fd061afcf4a9af184c14db9e63ec885c49de61":"885543a45fd1163e34ef9276145b0f8c":"d88beaa0664bcef178cbdbfab17ff526b5c0f8ad9543c6a312d93c336707fbf87c0448b07a550580953279f552f368225cc6971f1eecc718d6aad1729c8d8873081357752bd09d77075fa680cb2dc4139171e4a0aaa50b28c262c14fd10b8d799ca1c6641bb7dfdfdf3dea69aa2b9e4e4726dc18b0784afa4228e5ccb1eb2422":120:"7b334d7af54b916821f6136e977a1f":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"29397d98fc5a7f04b5c8b6aa3a1dd975b6e4678457ae7f0691eee40b5397503a":"0bbf1079cb5569c32257bc7e52371db46f3961b457402b816588243b4523543430d5ca56b52de6632724c51e6c3af310b28822c749a12bdd58dee58bbc3266631562a998ec3acdc8a2567a9f07f7f9759c3f50b1d1dcdd529256b80c0d227fc1fe8b58c62d1c643f1ac2996809fd061afcf4a9af184c14db9e63ec885c49de61":"885543a45fd1163e34ef9276145b0f8c":"d88beaa0664bcef178cbdbfab17ff526b5c0f8ad9543c6a312d93c336707fbf87c0448b07a550580953279f552f368225cc6971f1eecc718d6aad1729c8d8873081357752bd09d77075fa680cb2dc4139171e4a0aaa50b28c262c14fd10b8d799ca1c6641bb7dfdfdf3dea69aa2b9e4e4726dc18b0784afa4228e5ccb1eb2422":120:"7b334d7af54b916821f6136e977a1f":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,120) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7555dfcf354da07fd70f951d94ec1d86a635edfdb7929460207b2a39cc0cf4a3":"a1351cfffd1b0cbf80c3318cc432d3238cb647e996b7b53c527783594683f535950cd08788687c77226b2d3f095955884adc2e475ca1e1eab04e37d5e901ae8934a9d3a0cb37b80612ca25d989856dfa7607b03039b64d7dcd468204f03e0f2c55cb41c5367c56ca6c561425992b40e2d4f380b3d8419f681e88ebe2d4bdad36":"e1b30b6a47e8c21228e41a21b1a004f0":"bf986d3842378440f8924bb7f117d1a86888a666915a93ba65d486d14c580501e736d3418cebee572439318b21b6e4e504a7b075b8c2300c014e87e04fa842b6a2a3ebd9e6134b9ddd78e0a696223b1dc775f3288a6a9569c64b4d8fc5e04f2047c70115f692d2c2cefe7488de42ff862d7c0f542e58d69f0f8c9bf67ef48aea":120:"d8ef5438b7cf5dc11209a635ce1095":"95e8db7c8ecab8a60ceb49726153a7c5553cf571bc40515944d833485e19bf33cb954e2555943778040165a6cfffecef79eb7d82fef5a2f136f004bb5e7c35ae827fac3da292a185b5b8fc262012c05caeda5453ede3303cfeb0c890db1facadaa2895bdbb33265ada0bb46030607b6cf94f86961178e2e2deeb53c63900f1ec":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"7555dfcf354da07fd70f951d94ec1d86a635edfdb7929460207b2a39cc0cf4a3":"a1351cfffd1b0cbf80c3318cc432d3238cb647e996b7b53c527783594683f535950cd08788687c77226b2d3f095955884adc2e475ca1e1eab04e37d5e901ae8934a9d3a0cb37b80612ca25d989856dfa7607b03039b64d7dcd468204f03e0f2c55cb41c5367c56ca6c561425992b40e2d4f380b3d8419f681e88ebe2d4bdad36":"e1b30b6a47e8c21228e41a21b1a004f0":"bf986d3842378440f8924bb7f117d1a86888a666915a93ba65d486d14c580501e736d3418cebee572439318b21b6e4e504a7b075b8c2300c014e87e04fa842b6a2a3ebd9e6134b9ddd78e0a696223b1dc775f3288a6a9569c64b4d8fc5e04f2047c70115f692d2c2cefe7488de42ff862d7c0f542e58d69f0f8c9bf67ef48aea":120:"d8ef5438b7cf5dc11209a635ce1095":"":"95e8db7c8ecab8a60ceb49726153a7c5553cf571bc40515944d833485e19bf33cb954e2555943778040165a6cfffecef79eb7d82fef5a2f136f004bb5e7c35ae827fac3da292a185b5b8fc262012c05caeda5453ede3303cfeb0c890db1facadaa2895bdbb33265ada0bb46030607b6cf94f86961178e2e2deeb53c63900f1ec":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bbeafe86c72ab0354b733b69b09e4d3462feb1658fe404004d81503f3a6e132f":"a033c2051e425d01d97d563572e42c5113860e5dedcd24c76e3e357559ba3250f1fc5d4a931a9d0900ac025400f0158621f0b1215b2907467bfc874bcabbb28e28de81fe1ee5b79985261c512afec2327c8c5957df90c9eb77950de4a4860b57a9e6e145ea15eb52da63f217f94a5c8e5fcb5d361b86e0e67637a450cdbcb06f":"ee1caba93cb549054ca29715a536393e":"e44b0e0d275ae7c38a7dc2f768e899c1c11a4c4cb5b5bd25cd2132e3ecbaa5a63654312603e1c5b393c0ce6253c55986ee45bb1daac78a26749d88928f9b9908690fc148a656b78e3595319432763efbcf6957c9b2150ccabfd4833d0dcee01758c5efb47321a948b379a2ec0abcd6b6cbf41a8883f0f5d5bf7b240cb35f0777":112:"a4809e072f93deb7b77c52427095":"e62adf9bbd92dd03cc5250251691f724c6ece1cb89d8c4daf31cc732a5420f6bedab71aab0238ba23bd7165ed1f692561ef457fd1d47413949405b6fc8e17922b17026d89d5830b383546ea516a56f3a1c45ec1251583ae880fa8985bd3dcc1d6a57b746971937bf370e76482238cc08c2c3b13258151e0a6475cc017f8a3d0e":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"bbeafe86c72ab0354b733b69b09e4d3462feb1658fe404004d81503f3a6e132f":"a033c2051e425d01d97d563572e42c5113860e5dedcd24c76e3e357559ba3250f1fc5d4a931a9d0900ac025400f0158621f0b1215b2907467bfc874bcabbb28e28de81fe1ee5b79985261c512afec2327c8c5957df90c9eb77950de4a4860b57a9e6e145ea15eb52da63f217f94a5c8e5fcb5d361b86e0e67637a450cdbcb06f":"ee1caba93cb549054ca29715a536393e":"e44b0e0d275ae7c38a7dc2f768e899c1c11a4c4cb5b5bd25cd2132e3ecbaa5a63654312603e1c5b393c0ce6253c55986ee45bb1daac78a26749d88928f9b9908690fc148a656b78e3595319432763efbcf6957c9b2150ccabfd4833d0dcee01758c5efb47321a948b379a2ec0abcd6b6cbf41a8883f0f5d5bf7b240cb35f0777":112:"a4809e072f93deb7b77c52427095":"":"e62adf9bbd92dd03cc5250251691f724c6ece1cb89d8c4daf31cc732a5420f6bedab71aab0238ba23bd7165ed1f692561ef457fd1d47413949405b6fc8e17922b17026d89d5830b383546ea516a56f3a1c45ec1251583ae880fa8985bd3dcc1d6a57b746971937bf370e76482238cc08c2c3b13258151e0a6475cc017f8a3d0e":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6ad06c88dd4f3becf35eed95bb859be2406a1803a66e4332a74c5f75c09b9a01":"2219c11672884b93d0290b6a7140feafe416461f1cdaf0b3aa64693d7db2eb10feae46aac7af549fa1b0abc78c11f8df7ee803ef70310fc3e67769f8b4bc64f81143a6ebf8bee9d386a8ede5d2cc0ed17985a3b7bb95191ef55e684690ccdc5ca504bc6eb28442b353861a034a43532c025f666e80be967a6b05b9dd3a91ff58":"07d8b4a6e77aef9018828b61e0fdf2a4":"cca1fd0278045dda80b847f0975b6cbf31e1910d2c99b4eb78c360d89133a1c52e66c5c3801824afc1f079d2b2b1c827199e83f680e59b9a7de9b15fa7b6848b5bf4e16a12ac1af4cf2b4d7bb45673c5e1241e9996440860a9204fc27cae46a991607bc5e7120d6c115ddcbdd02c022b262602139081e61eee4aba7193f13992":112:"e3ede170386e76321a575c095966":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"6ad06c88dd4f3becf35eed95bb859be2406a1803a66e4332a74c5f75c09b9a01":"2219c11672884b93d0290b6a7140feafe416461f1cdaf0b3aa64693d7db2eb10feae46aac7af549fa1b0abc78c11f8df7ee803ef70310fc3e67769f8b4bc64f81143a6ebf8bee9d386a8ede5d2cc0ed17985a3b7bb95191ef55e684690ccdc5ca504bc6eb28442b353861a034a43532c025f666e80be967a6b05b9dd3a91ff58":"07d8b4a6e77aef9018828b61e0fdf2a4":"cca1fd0278045dda80b847f0975b6cbf31e1910d2c99b4eb78c360d89133a1c52e66c5c3801824afc1f079d2b2b1c827199e83f680e59b9a7de9b15fa7b6848b5bf4e16a12ac1af4cf2b4d7bb45673c5e1241e9996440860a9204fc27cae46a991607bc5e7120d6c115ddcbdd02c022b262602139081e61eee4aba7193f13992":112:"e3ede170386e76321a575c095966":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,112) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"87bbf7c15689e8c99a5a32a8ba0dfebcfe1989159807428cdd1f382c3ea95178":"b77d3bf3b30b3e6e5c86cbfb7e5455f6480f423cc76834b4663d28d9f1eb5c40212634e3347668427f7848352ab789886f96682a568260bdaeb7de0aae2af36f5ae04f06c332b158d923706c1c6255c673feeadb6d30bfc901e60b92acd9ddd83ef98686c4d492f4a60e97af2541d470a6a6b21903441020ea7619cf28a06986":"2f19aa1f3a82a7398706953f01739da7":"590dbd230854aa2b5ac19fc3dc9453e5bb9637e47d97b92486a599bdafdfb27c3852e3d06a91429bb820eb12a5318ed8861ffe87d659c462ef167be22604facfa3afb601b2167989b9e3b2e5b59e7d07fda27ffccd450869d528410b0aff468f70cc10ef6723a74af6eebc1572c123a9b5a9aab748a31fa764716d3293ff5de7":112:"5c43fc4dc959fabeebb188dbf3a5":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"87bbf7c15689e8c99a5a32a8ba0dfebcfe1989159807428cdd1f382c3ea95178":"b77d3bf3b30b3e6e5c86cbfb7e5455f6480f423cc76834b4663d28d9f1eb5c40212634e3347668427f7848352ab789886f96682a568260bdaeb7de0aae2af36f5ae04f06c332b158d923706c1c6255c673feeadb6d30bfc901e60b92acd9ddd83ef98686c4d492f4a60e97af2541d470a6a6b21903441020ea7619cf28a06986":"2f19aa1f3a82a7398706953f01739da7":"590dbd230854aa2b5ac19fc3dc9453e5bb9637e47d97b92486a599bdafdfb27c3852e3d06a91429bb820eb12a5318ed8861ffe87d659c462ef167be22604facfa3afb601b2167989b9e3b2e5b59e7d07fda27ffccd450869d528410b0aff468f70cc10ef6723a74af6eebc1572c123a9b5a9aab748a31fa764716d3293ff5de7":112:"5c43fc4dc959fabeebb188dbf3a5":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"24095a66b6eb0320ca75e2ab78e8496a45f4b000fc43436904c3e386fb852ed2":"4690edc843e23d9d9b9a4dab8fa8193f8bf03897d3d29759e9dc9e0f8a970c0f5d4399b9f60461fe5cf439f9b0d54bbc075695e4d76b76298cc2b75bb3e0b516ee9ada93f77c4c002ba9fd163a1e4b377befb76c1e5ab8b3901f214c0a4c48bd2aa2f33560d46e2721a060d4671dc97633ff9bcd703bb0fbed9a4a2c259b53f3":"0955c1f0e271edca279e016074886f60":"f5160c75c449e6bb971e73b7d04ab9b9a85879f6eb2d67354af94a4f0ca339c0a03a5b9ede87a4ff6823b698113a38ae5327e6878c3ccc0e36d74fe07aa51c027c3b334812862bc660178f5d0f3e764c0b828a5e3f2e7d7a1185b7e79828304a7ad3ddcd724305484177e66f4f81e66afdc5bbee0ec174bff5eb3719482bd2d8":104:"75a31347598f09fceeea6736fe":"0dd2dca260325967267667ff3ccdc6d6b35648821a42090abba46282869bac4bdc20a8bee024bea18a07396c38dbb45d9481fedcc423a3928cfa78a2f0ae8eedb062add810bdbee77ddc26c29e4f9fda1ab336d04ef42947b05fbdb9bc4df79e37af951d19d6bf5e5cb34eef898f23642a9c4a9111ed0b7a08abeeefbbd45c23":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"24095a66b6eb0320ca75e2ab78e8496a45f4b000fc43436904c3e386fb852ed2":"4690edc843e23d9d9b9a4dab8fa8193f8bf03897d3d29759e9dc9e0f8a970c0f5d4399b9f60461fe5cf439f9b0d54bbc075695e4d76b76298cc2b75bb3e0b516ee9ada93f77c4c002ba9fd163a1e4b377befb76c1e5ab8b3901f214c0a4c48bd2aa2f33560d46e2721a060d4671dc97633ff9bcd703bb0fbed9a4a2c259b53f3":"0955c1f0e271edca279e016074886f60":"f5160c75c449e6bb971e73b7d04ab9b9a85879f6eb2d67354af94a4f0ca339c0a03a5b9ede87a4ff6823b698113a38ae5327e6878c3ccc0e36d74fe07aa51c027c3b334812862bc660178f5d0f3e764c0b828a5e3f2e7d7a1185b7e79828304a7ad3ddcd724305484177e66f4f81e66afdc5bbee0ec174bff5eb3719482bd2d8":104:"75a31347598f09fceeea6736fe":"":"0dd2dca260325967267667ff3ccdc6d6b35648821a42090abba46282869bac4bdc20a8bee024bea18a07396c38dbb45d9481fedcc423a3928cfa78a2f0ae8eedb062add810bdbee77ddc26c29e4f9fda1ab336d04ef42947b05fbdb9bc4df79e37af951d19d6bf5e5cb34eef898f23642a9c4a9111ed0b7a08abeeefbbd45c23":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"086b77b5731f971f0bf5b8227361b216746daf8b08c583ad38f114a64aa7877b":"629317212ff8bd8a7676e4c00b81a9577de6397c832f99ac974fa2bbbccb6e3b8aa776db6922eed0b014bf3923799da7d9d0854c8817470e1e2f7fc7a572f9d0316ee60cde7ef025d59b897d29a6fee721aeb2f7bb44f9afb471e8a7b0b43a39b5497a3b4d6beb4b511f0cefa12ce5e6d843609d3e06999acfbee50a22ca1eee":"164058e5e425f9da40d22c9098a16204":"6633eae08a1df85f2d36e162f2d7ddd92b0c56b7477f3c6cdb9919d0e4b1e54ea7635c202dcf52d1c688afbbb15552adda32b4cd30aa462b367f02ded02e0d64eeee2a6b95462b191784143c25607fd08a23a2fbc75cf6bee294daf2042587fdd8fe3d22c3a242c624cf0a51a7c14db4f0f766ec437de4c83b64f23706a24437":104:"2eb6eb6d516ed4cf1778b4e378":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"086b77b5731f971f0bf5b8227361b216746daf8b08c583ad38f114a64aa7877b":"629317212ff8bd8a7676e4c00b81a9577de6397c832f99ac974fa2bbbccb6e3b8aa776db6922eed0b014bf3923799da7d9d0854c8817470e1e2f7fc7a572f9d0316ee60cde7ef025d59b897d29a6fee721aeb2f7bb44f9afb471e8a7b0b43a39b5497a3b4d6beb4b511f0cefa12ce5e6d843609d3e06999acfbee50a22ca1eee":"164058e5e425f9da40d22c9098a16204":"6633eae08a1df85f2d36e162f2d7ddd92b0c56b7477f3c6cdb9919d0e4b1e54ea7635c202dcf52d1c688afbbb15552adda32b4cd30aa462b367f02ded02e0d64eeee2a6b95462b191784143c25607fd08a23a2fbc75cf6bee294daf2042587fdd8fe3d22c3a242c624cf0a51a7c14db4f0f766ec437de4c83b64f23706a24437":104:"2eb6eb6d516ed4cf1778b4e378":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,104) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0f9e806b0d937268561c0eafbbdd14ec715b7e9cef4118d6eb28abbb91266745":"2ae4baef22ace26f464a9b0c75802303f2d7c0f9a1ed1d0180135189765bdd347fea0cc2b73ee7fbbf95ea1fda22597b8aad826f63e744069a9c349488b2cc1cf9372f423cc650302082125724730ae5a4d878e07385ddc99034c6b6b46748f02c80b179fe6406b1d33581950cb9bcd1d1ea1ec7b5becfd6c1f5b279412c433a":"8657996634e74d4689f292645f103a2e":"2ca253355e893e58cb1a900fbb62d61595de5c4186dc8a9129da3657a92b4a631bbdc3d5f86395385a9aa8557b67f886e3bb807620e558c93aea8e65826eadeb21544418ee40f5420c2d2b8270491be6fc2dcbfd12847fa350910dd615e9a1881bc2ced3b0ac3bde445b735e43c0c84f9d120ca5edd655779fc13c6f88b484f7":104:"83155ebb1a42112dd1c474f37b":"87d69fc3cbc757b2b57b180c6ba34db4e20dde19976bfb3d274d32e7cea13f0c7d9e840d59ce857718c985763b7639e448516ddbbda559457cd8cb364fa99addd5ba44ef45c11060d9be82b4ebe1f0711ac95433074649b6c08eeab539fdfc99c77498b420427e4d70e316111845793de1f67fb0d04e3389a8862f46f4582dc8":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"0f9e806b0d937268561c0eafbbdd14ec715b7e9cef4118d6eb28abbb91266745":"2ae4baef22ace26f464a9b0c75802303f2d7c0f9a1ed1d0180135189765bdd347fea0cc2b73ee7fbbf95ea1fda22597b8aad826f63e744069a9c349488b2cc1cf9372f423cc650302082125724730ae5a4d878e07385ddc99034c6b6b46748f02c80b179fe6406b1d33581950cb9bcd1d1ea1ec7b5becfd6c1f5b279412c433a":"8657996634e74d4689f292645f103a2e":"2ca253355e893e58cb1a900fbb62d61595de5c4186dc8a9129da3657a92b4a631bbdc3d5f86395385a9aa8557b67f886e3bb807620e558c93aea8e65826eadeb21544418ee40f5420c2d2b8270491be6fc2dcbfd12847fa350910dd615e9a1881bc2ced3b0ac3bde445b735e43c0c84f9d120ca5edd655779fc13c6f88b484f7":104:"83155ebb1a42112dd1c474f37b":"":"87d69fc3cbc757b2b57b180c6ba34db4e20dde19976bfb3d274d32e7cea13f0c7d9e840d59ce857718c985763b7639e448516ddbbda559457cd8cb364fa99addd5ba44ef45c11060d9be82b4ebe1f0711ac95433074649b6c08eeab539fdfc99c77498b420427e4d70e316111845793de1f67fb0d04e3389a8862f46f4582dc8":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c24c17911f6db4b3e37c46bcc6fa35efc1a55f7754f0bb99f2eea93398116447":"0bd92cb106867e25ad427ff6e5f384d2d0f432fc389852187fcc7b0bf9f6d11a102a872b99ed1ad9a05dab0f79fa634745535efed804ff42b0af8dad20ba44709391fb263f245e5a2c52d9ce904179633282f57a1229b0a9c4557a5c0aeda29bbc5a7a871fa8b62d58100c3722c21e51e3b3e913185235526e7a5a91c559717d":"5098cc52a69ee044197e2c000c2d4ab8":"9ad4dee311d854925fc7f10eca4f5dd4e6990cb2d4325da2ef25a9a23690f5c5590be285d33aaeba76506c59edec64b8c3ff8e62716d1c385fbce2a42bc7bd5d8e8584de1944543ab6f340c20911f8b7b3be1a1db18a4bb94119333339de95815cae09365b016edc184e11f3c5b851f1fa92b1b63cfa3872a127109c1294b677":96:"f7930e3fab74a91cb6543e72":"6124ede608d416baa5e653a898ca76e9f47f08403c1984feec112e670ded2226e0073f8881ab2161cfda541dccae19691285f7391a729f07aba18f340bb452c1da39cbe83cf476cfc105b64187e0d2227dd283dcba8b6a350f9956b18861fa131d3f00c034443e8f60e0fdfcfaabbed93381ae374a8bf66523d33646183e1379":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c24c17911f6db4b3e37c46bcc6fa35efc1a55f7754f0bb99f2eea93398116447":"0bd92cb106867e25ad427ff6e5f384d2d0f432fc389852187fcc7b0bf9f6d11a102a872b99ed1ad9a05dab0f79fa634745535efed804ff42b0af8dad20ba44709391fb263f245e5a2c52d9ce904179633282f57a1229b0a9c4557a5c0aeda29bbc5a7a871fa8b62d58100c3722c21e51e3b3e913185235526e7a5a91c559717d":"5098cc52a69ee044197e2c000c2d4ab8":"9ad4dee311d854925fc7f10eca4f5dd4e6990cb2d4325da2ef25a9a23690f5c5590be285d33aaeba76506c59edec64b8c3ff8e62716d1c385fbce2a42bc7bd5d8e8584de1944543ab6f340c20911f8b7b3be1a1db18a4bb94119333339de95815cae09365b016edc184e11f3c5b851f1fa92b1b63cfa3872a127109c1294b677":96:"f7930e3fab74a91cb6543e72":"":"6124ede608d416baa5e653a898ca76e9f47f08403c1984feec112e670ded2226e0073f8881ab2161cfda541dccae19691285f7391a729f07aba18f340bb452c1da39cbe83cf476cfc105b64187e0d2227dd283dcba8b6a350f9956b18861fa131d3f00c034443e8f60e0fdfcfaabbed93381ae374a8bf66523d33646183e1379":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d267a8379260036ff3d1ec07a7b086ff75706bad12d37d9656f04776f3d8b85c":"80c68a330ef50e3e516681f1e535868b03466e7edbb86cb385d01db487da3dd3edad940fdc98d918b7db9b59f8d61369eee2928c88557306c4a13e366af0708d94cb90a15f1c3bc45544bdb05ff964da5e06c5ae965f20adb504620aed7bce2e82f4e408d00219c15ef85fae1ff13fea53deb78afa5f2a50edbd622446e4a894":"674dc34e8c74c51fa42aacd625a1bd5b":"6a9a8af732ae96d0b5a9730ad792e296150d59770a20a3fdbbc2a3a035a88ac445d64f37d684e22003c214b771c1995719da72f3ed24a96618284dd414f0cac364640b23c680dc80492a435c8ec10add53b0d9e3374f1cf5bfc663e3528fa2f6209846421ea6f481b7ecf57714f7bc2527edc4e0466b13e750dd4d4c0cc0cdfc":96:"bea660e963b08fc657741bc8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"d267a8379260036ff3d1ec07a7b086ff75706bad12d37d9656f04776f3d8b85c":"80c68a330ef50e3e516681f1e535868b03466e7edbb86cb385d01db487da3dd3edad940fdc98d918b7db9b59f8d61369eee2928c88557306c4a13e366af0708d94cb90a15f1c3bc45544bdb05ff964da5e06c5ae965f20adb504620aed7bce2e82f4e408d00219c15ef85fae1ff13fea53deb78afa5f2a50edbd622446e4a894":"674dc34e8c74c51fa42aacd625a1bd5b":"6a9a8af732ae96d0b5a9730ad792e296150d59770a20a3fdbbc2a3a035a88ac445d64f37d684e22003c214b771c1995719da72f3ed24a96618284dd414f0cac364640b23c680dc80492a435c8ec10add53b0d9e3374f1cf5bfc663e3528fa2f6209846421ea6f481b7ecf57714f7bc2527edc4e0466b13e750dd4d4c0cc0cdfc":96:"bea660e963b08fc657741bc8":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,96) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c86cb637753010f639fa3aa3bff7c28b74f012ad6090f2a31b0801d086f183ad":"6b7858557e0fd0f957842fb30e8d54dedbc127eb4bbf9de319f731fa28a606df2c046a0bce8ecda4e75d3596e4e988efd6bc279aa005bc52fad92ba07f5b1dfda4cc417029f9778c88d6fe5341a0fd48893dcb7c68d0df310a060f2a5235aee422d380f7209bc0909b2aa7e876044056f0b915dab0bc13cbea5a3b86d40ca802":"87ff6e0bb313502fedf3d2696bff99b5":"2816f1132724f42e40deabab25e325b282f8c615a79e0c98c00d488ee56237537240234966565e46bfb0c50f2b10366d1589620e6e78bd90ade24d38a272f3fff53c09466aa2d3ef793d7f814a064b713821850a6e6a058f5139a1088347a9fa0f54e38abd51ddfc7ef040bf41d188f3f86c973551ced019812c1fc668649621":96:"7859f047f32b51833333accf":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"c86cb637753010f639fa3aa3bff7c28b74f012ad6090f2a31b0801d086f183ad":"6b7858557e0fd0f957842fb30e8d54dedbc127eb4bbf9de319f731fa28a606df2c046a0bce8ecda4e75d3596e4e988efd6bc279aa005bc52fad92ba07f5b1dfda4cc417029f9778c88d6fe5341a0fd48893dcb7c68d0df310a060f2a5235aee422d380f7209bc0909b2aa7e876044056f0b915dab0bc13cbea5a3b86d40ca802":"87ff6e0bb313502fedf3d2696bff99b5":"2816f1132724f42e40deabab25e325b282f8c615a79e0c98c00d488ee56237537240234966565e46bfb0c50f2b10366d1589620e6e78bd90ade24d38a272f3fff53c09466aa2d3ef793d7f814a064b713821850a6e6a058f5139a1088347a9fa0f54e38abd51ddfc7ef040bf41d188f3f86c973551ced019812c1fc668649621":96:"7859f047f32b51833333accf":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c31ca0cac3efe467168198f06beacf39565a6f57f82e1048a5c06a231315882":"65261d6e29b2369b1828a7cef2df9873d6e6057c499301afedd6cb65b5036ddb95f9e353fbf38e54c4f46f88164325b33620ce183beb2e411fbb89a0e0002e542fc161cad32a61ee6f1e1717e0b4dcd0340b116f795bc1009dbbc65bc31c9b549bf03c40bc204cd0d02ec884be907777ebeed8b527ec3af7cbb508193c0745de":"95cae6e85f33f3043182460589be3639":"67523751a9b1b643d00de4511b55e4268cb2d18e79e01a55fc7b677d529bd6400940fb25ea6ae135c1a816e61b69e90b966981aeda685934b107066e1467db78973492ad791e20aef430db3a047447141def8be6e6a9a15089607c3af9368cdb11b7b5fbf90691505d0c33664766945d387904e7089b915a3c28886ba1763bb5":64:"21309d0351cac45e":"1d5f2cb921f54aeb552b4304142facd49497837deb1f00d26fbeddbab922fd80b00dba782961f8fce84f1f7973e81eed6ee168b1760c575c891f40a1dae0fa1a08738025d13ef6e0b30be4f054d874f1b8a2427a19ebb071d98365c32316a88a68c2b40daf1ea831a64519ac3679acb4e04986ecc614ec673c498c6fee459e40":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2c31ca0cac3efe467168198f06beacf39565a6f57f82e1048a5c06a231315882":"65261d6e29b2369b1828a7cef2df9873d6e6057c499301afedd6cb65b5036ddb95f9e353fbf38e54c4f46f88164325b33620ce183beb2e411fbb89a0e0002e542fc161cad32a61ee6f1e1717e0b4dcd0340b116f795bc1009dbbc65bc31c9b549bf03c40bc204cd0d02ec884be907777ebeed8b527ec3af7cbb508193c0745de":"95cae6e85f33f3043182460589be3639":"67523751a9b1b643d00de4511b55e4268cb2d18e79e01a55fc7b677d529bd6400940fb25ea6ae135c1a816e61b69e90b966981aeda685934b107066e1467db78973492ad791e20aef430db3a047447141def8be6e6a9a15089607c3af9368cdb11b7b5fbf90691505d0c33664766945d387904e7089b915a3c28886ba1763bb5":64:"21309d0351cac45e":"":"1d5f2cb921f54aeb552b4304142facd49497837deb1f00d26fbeddbab922fd80b00dba782961f8fce84f1f7973e81eed6ee168b1760c575c891f40a1dae0fa1a08738025d13ef6e0b30be4f054d874f1b8a2427a19ebb071d98365c32316a88a68c2b40daf1ea831a64519ac3679acb4e04986ecc614ec673c498c6fee459e40":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ca9fa36ca2159dff9723f6cfdb13280446eb6bc3688043c7e2e2504184791596":"ac04c4293554cd832aa400c811cb202d815d6178aa1343b4628592b7f3ae45dc5f12ea47be4b43e1865f40b06ab67b3a9fb3644248a9b3efe131a8addb7447978bb51ccf749e75574fea60e8781677200af023b2f8c415f4e6d8c575a9e374916d9ec3a612b16e37beb589444b588e0b770d9f8e818ad83f83aa4ecf386d17a7":"d13ca73365e57114fc698ee60ba0ad84":"2aa510b7f1620bfce90080e0e25f5468dbc5314b50914e793b5278369c51ac017eace9fd15127fca5a726ad9e67bdee5af298988d9a57ec4bbc43d4eb849535eb10521ac7cd7ed647479a42876af2ebc9e2108b539febdaa9127c49bda1bda800f6034050b8576e944311dfbca59d64d259571b6d2ed5b2fc07127239b03f4b7":64:"2111d55d96a4d84d":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ca9fa36ca2159dff9723f6cfdb13280446eb6bc3688043c7e2e2504184791596":"ac04c4293554cd832aa400c811cb202d815d6178aa1343b4628592b7f3ae45dc5f12ea47be4b43e1865f40b06ab67b3a9fb3644248a9b3efe131a8addb7447978bb51ccf749e75574fea60e8781677200af023b2f8c415f4e6d8c575a9e374916d9ec3a612b16e37beb589444b588e0b770d9f8e818ad83f83aa4ecf386d17a7":"d13ca73365e57114fc698ee60ba0ad84":"2aa510b7f1620bfce90080e0e25f5468dbc5314b50914e793b5278369c51ac017eace9fd15127fca5a726ad9e67bdee5af298988d9a57ec4bbc43d4eb849535eb10521ac7cd7ed647479a42876af2ebc9e2108b539febdaa9127c49bda1bda800f6034050b8576e944311dfbca59d64d259571b6d2ed5b2fc07127239b03f4b7":64:"2111d55d96a4d84d":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,64) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2f802e838250064c15fdee28d7bd4872850355870847701ad9742b2d6eb4b0c0":"e2ca8c8d172ff90232879f510d1225af91bc323bdf636363c2903fcd1790692c8bcb03a1cccb18814678852c6b3a441552e541b843ee5e4f86a152fa73d05aea659fe08aa6428bb257eaa2a7b579fdc4022c1dec359a854253c1aefc983c5ede8c97517ea69fc4606e25f13ffb0f5f49160691454fbb74e704326738353525f7":"2dd550cfd97f8e1d8d31ba5537ae4710":"72b9630dda40306e785b961934c56e20948f8eac0e981f49787eb3dbd6e4607f7d08d10ca643746bf1efa7e5066993683d527a90f2d45ec9cf73113f1f17bb67958be669acd4e2927f1dacfde902cd3048056d7f6dfdd8630ff054efce4526db7c9321d6d2be2236f4d60e27b89d8ec94f65a06dc0953c8c4533a51b6a29bd2c":64:"bd6c8823c9005c85":"f6dd0b5f3d1a393a1837112962dba175a13c2d1e525ef95734caf34949d8b2d63b4fe5603226b5f632f2d7f927361ba639dc0e3c63414f45462342695916d5792133b4a24c7c4cbe2b97c712bf27ab62d3d68b3875d58ffe4b7c30a8171bff1a9e2f3995768faacda2ea9213ff35798b9e4513f6a87bd3f5a9d93e847e768359":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"2f802e838250064c15fdee28d7bd4872850355870847701ad9742b2d6eb4b0c0":"e2ca8c8d172ff90232879f510d1225af91bc323bdf636363c2903fcd1790692c8bcb03a1cccb18814678852c6b3a441552e541b843ee5e4f86a152fa73d05aea659fe08aa6428bb257eaa2a7b579fdc4022c1dec359a854253c1aefc983c5ede8c97517ea69fc4606e25f13ffb0f5f49160691454fbb74e704326738353525f7":"2dd550cfd97f8e1d8d31ba5537ae4710":"72b9630dda40306e785b961934c56e20948f8eac0e981f49787eb3dbd6e4607f7d08d10ca643746bf1efa7e5066993683d527a90f2d45ec9cf73113f1f17bb67958be669acd4e2927f1dacfde902cd3048056d7f6dfdd8630ff054efce4526db7c9321d6d2be2236f4d60e27b89d8ec94f65a06dc0953c8c4533a51b6a29bd2c":64:"bd6c8823c9005c85":"":"f6dd0b5f3d1a393a1837112962dba175a13c2d1e525ef95734caf34949d8b2d63b4fe5603226b5f632f2d7f927361ba639dc0e3c63414f45462342695916d5792133b4a24c7c4cbe2b97c712bf27ab62d3d68b3875d58ffe4b7c30a8171bff1a9e2f3995768faacda2ea9213ff35798b9e4513f6a87bd3f5a9d93e847e768359":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #0 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84dd53ce0146cb71c32776033bb243098d78a22ac17f52a62a122f5653fb4e33":"68222bffa782dcfe4f328fc20eb520e75a9a5fedbe13ec7fcf0e82fba08bb87a8a8e02902638e32fe0e2294344b380797f8028426ffcc0531c739c884892394c48ff0779c5f5edf0a36a3fb8aa91213347774ec4bf0fe1049bd53746b13beef3c637169826c367056cb1aa0a3868e23f886a9c7b8015c26af9e40794662f6b21":"f0c90a1bca52f30fab3670df0d3beab0":"a3ea8032f36a5ca3d7a1088fd08ac50ae6bdc06ad3a534b773ac3e3d4a3d524499e56274a0062c58c3b0685cc850f4725e5c221af8f51c6df2bbd5fbcff4a93ba4c1054f7f9c67fd9285511a08d328d76a642f067227d378f95a1e67587b90251f9103ed3cacdb6bf69e0794e366d8b92d8de37b4e028de0778841f356ac044d":32:"b1ece9fb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"84dd53ce0146cb71c32776033bb243098d78a22ac17f52a62a122f5653fb4e33":"68222bffa782dcfe4f328fc20eb520e75a9a5fedbe13ec7fcf0e82fba08bb87a8a8e02902638e32fe0e2294344b380797f8028426ffcc0531c739c884892394c48ff0779c5f5edf0a36a3fb8aa91213347774ec4bf0fe1049bd53746b13beef3c637169826c367056cb1aa0a3868e23f886a9c7b8015c26af9e40794662f6b21":"f0c90a1bca52f30fab3670df0d3beab0":"a3ea8032f36a5ca3d7a1088fd08ac50ae6bdc06ad3a534b773ac3e3d4a3d524499e56274a0062c58c3b0685cc850f4725e5c221af8f51c6df2bbd5fbcff4a93ba4c1054f7f9c67fd9285511a08d328d76a642f067227d378f95a1e67587b90251f9103ed3cacdb6bf69e0794e366d8b92d8de37b4e028de0778841f356ac044d":32:"b1ece9fb":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #1 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bb36fe25e966a075ae2c3bb43b5877679ebc379d5123c8eda3fa0e30b95cae0":"fb3a4be643c10343251c6f0745aaa54349463f622ca04a792e9b4780866844b30aeef3269fc60cac0ea031c5f3780b535e15154f7c76eb4a371b8ae368550f3fa2ce693c34511ec96b839cac567f1b0de0e7e3116d729b45d1b16e453703a43db73f5d0c3e430f16b142420b5f0d26d72ac3dba543d7d813603b0bfdca3dd63e":"59869df4ef5754b406478a2fb608ee99":"ecd125682e8a8e26757c888b0c8b95dec5e7ed7ac991768f93e8af5bcf6f21ed4d4d38699ee7984ed13635fff72f938150157c9a27fcda121ffced7b492d2b18dad299cb6495ed5f68441aefc8219d2cf717d15d5cd2dbce4606fcf90fe45f3601127cf6acee210bd7df97309f773974a35bef1d33df984101c2fc9d4b55259e":32:"cb3f5338":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"9bb36fe25e966a075ae2c3bb43b5877679ebc379d5123c8eda3fa0e30b95cae0":"fb3a4be643c10343251c6f0745aaa54349463f622ca04a792e9b4780866844b30aeef3269fc60cac0ea031c5f3780b535e15154f7c76eb4a371b8ae368550f3fa2ce693c34511ec96b839cac567f1b0de0e7e3116d729b45d1b16e453703a43db73f5d0c3e430f16b142420b5f0d26d72ac3dba543d7d813603b0bfdca3dd63e":"59869df4ef5754b406478a2fb608ee99":"ecd125682e8a8e26757c888b0c8b95dec5e7ed7ac991768f93e8af5bcf6f21ed4d4d38699ee7984ed13635fff72f938150157c9a27fcda121ffced7b492d2b18dad299cb6495ed5f68441aefc8219d2cf717d15d5cd2dbce4606fcf90fe45f3601127cf6acee210bd7df97309f773974a35bef1d33df984101c2fc9d4b55259e":32:"cb3f5338":"FAIL":"":0 AES-GCM NIST Validation (AES-256,128,1024,1024,32) #2 depends_on:MBEDTLS_AES_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ca264e7caecad56ee31c8bf8dde9592f753a6299e76c60ac1e93cff3b3de8ce9":"8d03cf6fac31182ad3e6f32e4c823e3b421aef786d5651afafbf70ef14c00524ab814bc421b1d4181b4d3d82d6ae4e8032e43a6c4e0691184425b37320798f865c88b9b306466311d79e3e42076837474c37c9f6336ed777f05f70b0c7d72bd4348a4cd754d0f0c3e4587f9a18313ea2d2bace502a24ea417d3041b709a0471f":"4763a4e37b806a5f4510f69fd8c63571":"07daeba37a66ebe15f3d6451d1176f3a7107a302da6966680c425377e621fd71610d1fc9c95122da5bf85f83b24c4b783b1dcd6b508d41e22c09b5c43693d072869601fc7e3f5a51dbd3bc6508e8d095b9130fb6a7f2a043f3a432e7ce68b7de06c1379e6bab5a1a48823b76762051b4e707ddc3201eb36456e3862425cb011a":32:"3105dddb":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_AES:"ca264e7caecad56ee31c8bf8dde9592f753a6299e76c60ac1e93cff3b3de8ce9":"8d03cf6fac31182ad3e6f32e4c823e3b421aef786d5651afafbf70ef14c00524ab814bc421b1d4181b4d3d82d6ae4e8032e43a6c4e0691184425b37320798f865c88b9b306466311d79e3e42076837474c37c9f6336ed777f05f70b0c7d72bd4348a4cd754d0f0c3e4587f9a18313ea2d2bace502a24ea417d3041b709a0471f":"4763a4e37b806a5f4510f69fd8c63571":"07daeba37a66ebe15f3d6451d1176f3a7107a302da6966680c425377e621fd71610d1fc9c95122da5bf85f83b24c4b783b1dcd6b508d41e22c09b5c43693d072869601fc7e3f5a51dbd3bc6508e8d095b9130fb6a7f2a043f3a432e7ce68b7de06c1379e6bab5a1a48823b76762051b4e707ddc3201eb36456e3862425cb011a":32:"3105dddb":"FAIL":"":0 AES-GCM Bad IV (AES-256,128,0,0,32) #0 depends_on:MBEDTLS_AES_C diff --git a/tests/suites/test_suite_gcm.camellia.data b/tests/suites/test_suite_gcm.camellia.data index 5f739d5464..9b71d7c0bb 100644 --- a/tests/suites/test_suite_gcm.camellia.data +++ b/tests/suites/test_suite_gcm.camellia.data @@ -72,144 +72,144 @@ gcm_encrypt_and_tag:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #1 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"":"000000000000000000000000":"":128:"f5574acc3148dfcb9015200631024df9":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"":"000000000000000000000000":"":128:"f5574acc3148dfcb9015200631024df9":"":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #2 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"defe3e0b5c54c94b4f2a0f5a46f6210d":"000000000000000000000000":"":128:"f672b94d192266c7c8c8dbb427cc989a":"00000000000000000000000000000000":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"defe3e0b5c54c94b4f2a0f5a46f6210d":"000000000000000000000000":"":128:"f672b94d192266c7c8c8dbb427cc989a":"":"00000000000000000000000000000000":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #3 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f8260614bab815":"cafebabefacedbaddecaf888":"":128:"86e318012dd8329dc9dae6a170f61b24":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f8260614bab815":"cafebabefacedbaddecaf888":"":128:"86e318012dd8329dc9dae6a170f61b24":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #4 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f82606":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"9f458869431576ea6a095456ec6b8101":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f82606":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"9f458869431576ea6a095456ec6b8101":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #5 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"28fd7434d5cd424a5353818fc21a982460d20cf632eb1e6c4fbfca17d5abcf6a52111086162fe9570e7774c7a912aca3dfa10067ddaad40688645bdd":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e86f8f2e730c49d536f00fb5225d28b1":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"28fd7434d5cd424a5353818fc21a982460d20cf632eb1e6c4fbfca17d5abcf6a52111086162fe9570e7774c7a912aca3dfa10067ddaad40688645bdd":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e86f8f2e730c49d536f00fb5225d28b1":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #6 (128-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"2e582b8417c93f2ff4f6f7ee3c361e4496e710ee12433baa964987d02f42953e402e6f4af407fe08cd2f35123696014c34db19128df4056faebcd647":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"ceae5569b2af8641572622731aed3e53":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"2e582b8417c93f2ff4f6f7ee3c361e4496e710ee12433baa964987d02f42953e402e6f4af407fe08cd2f35123696014c34db19128df4056faebcd647":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"ceae5569b2af8641572622731aed3e53":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #7 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"ba9ae89fddce4b51131e17c4d65ce587":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"ba9ae89fddce4b51131e17c4d65ce587":"":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #8 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"8f9c0aa2549714c88bb2665e8af86d41":"000000000000000000000000":"":128:"783cff5c5aca7197320658a74279ab37":"00000000000000000000000000000000":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"8f9c0aa2549714c88bb2665e8af86d41":"000000000000000000000000":"":128:"783cff5c5aca7197320658a74279ab37":"":"00000000000000000000000000000000":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #9 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6a60bb2e9":"cafebabefacedbaddecaf888":"":128:"8d645a0b0e48d3c3b60a014157cb49b4":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6a60bb2e9":"cafebabefacedbaddecaf888":"":128:"8d645a0b0e48d3c3b60a014157cb49b4":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #10 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"01b15bb5ab6fac0c422014e91eacbf2b":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"01b15bb5ab6fac0c422014e91eacbf2b":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #11 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"678b3dcb270faa206dc5f6fbb5014996e86d6f3e35cdcdfeb03b37b9b06ff4ff2682248823bd3c84124dc76af7bde3dd440c228b5efbc795dd80dfb6":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"f876143d933214a5035ff0bb96ff650b":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"678b3dcb270faa206dc5f6fbb5014996e86d6f3e35cdcdfeb03b37b9b06ff4ff2682248823bd3c84124dc76af7bde3dd440c228b5efbc795dd80dfb6":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"f876143d933214a5035ff0bb96ff650b":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #12 (192-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"9733ea567c3bad2259ccd63ef7012f5de709e50b1fdc31f1a16db02ede1b66f11dcc4d953f2d4d4671587b65882afbf9545fdb6deab22413d091b703":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4b72e520b2521e63d240ed5c903216fa":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"9733ea567c3bad2259ccd63ef7012f5de709e50b1fdc31f1a16db02ede1b66f11dcc4d953f2d4d4671587b65882afbf9545fdb6deab22413d091b703":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4b72e520b2521e63d240ed5c903216fa":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #13 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"9cdb269b5d293bc5db9c55b057d9b591":"":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"9cdb269b5d293bc5db9c55b057d9b591":"":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #14 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"3d4b2cde666761ba5dfb305178e667fb":"000000000000000000000000":"":128:"284b63bb143c40ce100fb4dea6bb617b":"00000000000000000000000000000000":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"3d4b2cde666761ba5dfb305178e667fb":"000000000000000000000000":"":128:"284b63bb143c40ce100fb4dea6bb617b":"":"00000000000000000000000000000000":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #15 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b776549e092":"cafebabefacedbaddecaf888":"":128:"c912686270a2b9966415fca3be75c468":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b776549e092":"cafebabefacedbaddecaf888":"":128:"c912686270a2b9966415fca3be75c468":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #16 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b77":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4e4b178d8fe26fdc95e2e7246dd94bec":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b77":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4e4b178d8fe26fdc95e2e7246dd94bec":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #17 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"6ca95fbb7d16577a9ef2fded94dc85b5d40c629f6bef2c649888e3cbb0ededc7810c04b12c2983bbbbc482e16e45c9215ae12c15c55f2f4809d06652":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e6472b8ebd331bfcc7c0fa63ce094461":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"6ca95fbb7d16577a9ef2fded94dc85b5d40c629f6bef2c649888e3cbb0ededc7810c04b12c2983bbbbc482e16e45c9215ae12c15c55f2f4809d06652":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e6472b8ebd331bfcc7c0fa63ce094461":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #18 (256-de) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"e0cddd7564d09c4dc522dd65949262bbf9dcdb07421cf67f3032becb7253c284a16e5bf0f556a308043f53fab9eebb526be7f7ad33d697ac77c67862":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"5791883f822013f8bd136fc36fb9946b":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"e0cddd7564d09c4dc522dd65949262bbf9dcdb07421cf67f3032becb7253c284a16e5bf0f556a308043f53fab9eebb526be7f7ad33d697ac77c67862":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"5791883f822013f8bd136fc36fb9946b":"":"d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #1 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"":"000000000000000000000000":"":128:"f5574acc3148dfcb9015200631024df8":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"":"000000000000000000000000":"":128:"f5574acc3148dfcb9015200631024df8":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #2 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"defe3e0b5c54c94b4f2a0f5a46f7210d":"000000000000000000000000":"":128:"f672b94d192266c7c8c8dbb427cc989a":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"00000000000000000000000000000000":"defe3e0b5c54c94b4f2a0f5a46f7210d":"000000000000000000000000":"":128:"f672b94d192266c7c8c8dbb427cc989a":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #3 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f8260614bab815":"cafebabefacedbaddecaf889":"":128:"86e318012dd8329dc9dae6a170f61b24":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f8260614bab815":"cafebabefacedbaddecaf889":"":128:"86e318012dd8329dc9dae6a170f61b24":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #4 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f82606":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"9f458869431576ea6a095456ec6b8100":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"d0d94a13b632f337a0cc9955b94fa020c815f903aab12f1efaf2fe9d90f729a6cccbfa986ef2ff2c33de418d9a2529091cf18fe652c1cfde13f82606":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"9f458869431576ea6a095456ec6b8100":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #5 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"28fd7434d5cd424a5353818fc21a982460d20cf632eb1e6c4fbfca17d5abcf6a52111086162fe9570e7774c7a912aca3dfa10067ddaad40688645bdd":"cafebabefacedbad":"feedfadedeadbeeffeedfacedeadbeefabaddad2":128:"e86f8f2e730c49d536f00fb5225d28b1":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"28fd7434d5cd424a5353818fc21a982460d20cf632eb1e6c4fbfca17d5abcf6a52111086162fe9570e7774c7a912aca3dfa10067ddaad40688645bdd":"cafebabefacedbad":"feedfadedeadbeeffeedfacedeadbeefabaddad2":128:"e86f8f2e730c49d536f00fb5225d28b1":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #6 (128-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"2e582b8417c83f2ff4f6f7ee3c361e4496e710ee12433baa964987d02f42953e402e6f4af407fe08cd2f35123696014c34db19128df4056faebcd647":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"ceae5569b2af8641572622731aed3e53":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308":"2e582b8417c83f2ff4f6f7ee3c361e4496e710ee12433baa964987d02f42953e402e6f4af407fe08cd2f35123696014c34db19128df4056faebcd647":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"ceae5569b2af8641572622731aed3e53":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #7 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"ba9ae89fddce4b51131e17c4d65ce586":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"":"000000000000000000000000":"":128:"ba9ae89fddce4b51131e17c4d65ce586":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #8 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"8f9c0aa2549714c88bb2665e8af86d42":"000000000000000000000000":"":128:"783cff5c5aca7197320658a74279ab37":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"000000000000000000000000000000000000000000000000":"8f9c0aa2549714c88bb2665e8af86d42":"000000000000000000000000":"":128:"783cff5c5aca7197320658a74279ab37":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #9 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"ffffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6a60bb2e9":"cafebabefacedbaddecaf888":"":128:"8d645a0b0e48d3c3b60a014157cb49b4":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"ffffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6a60bb2e9":"cafebabefacedbaddecaf888":"":128:"8d645a0b0e48d3c3b60a014157cb49b4":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #10 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"11b15bb5ab6fac0c422014e91eacbf2b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"0f009e88410d84ad93c90d55efbe20ffa855492f4dfd0fb485c4f02f536feffbb4d967729e5c67f1de0750255cc500716ba483eb3b0a2bf607af28f6":"cafebabefacedbaddecaf888":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"11b15bb5ab6fac0c422014e91eacbf2b":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #11 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"678b3dcb270faa206dc5f6fbb5014996e86d6f3e35cdcdfeb03b37b9b06ff4ff2682248823bd3c84124dc76af7bde3dd440c228b5efbc795dd80dfb6":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad3":128:"f876143d933214a5035ff0bb96ff650b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"678b3dcb270faa206dc5f6fbb5014996e86d6f3e35cdcdfeb03b37b9b06ff4ff2682248823bd3c84124dc76af7bde3dd440c228b5efbc795dd80dfb6":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad3":128:"f876143d933214a5035ff0bb96ff650b":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #12 (192-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"9733ea567c3bad2259ccd63ef7012f5de709e50b1fdc31f1a16db02ede1b66f11dcc4d953f2d4d4671587b65882afbf9545fdb6deab22413d091b703":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a328a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4b72e520b2521e63d240ed5c903216fa":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c":"9733ea567c3bad2259ccd63ef7012f5de709e50b1fdc31f1a16db02ede1b66f11dcc4d953f2d4d4671587b65882afbf9545fdb6deab22413d091b703":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a328a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4b72e520b2521e63d240ed5c903216fa":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #13 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000001":"":"000000000000000000000000":"":128:"9cdb269b5d293bc5db9c55b057d9b591":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000001":"":"000000000000000000000000":"":128:"9cdb269b5d293bc5db9c55b057d9b591":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #14 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"3d4b2cde666761ba5dfb305178e667fb":"000000000000000000000001":"":128:"284b63bb143c40ce100fb4dea6bb617b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"0000000000000000000000000000000000000000000000000000000000000000":"3d4b2cde666761ba5dfb305178e667fb":"000000000000000000000001":"":128:"284b63bb143c40ce100fb4dea6bb617b":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #15 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4949d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b776549e092":"cafebabefacedbaddecaf888":"":128:"c912686270a2b9966415fca3be75c468":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4949d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b776549e092":"cafebabefacedbaddecaf888":"":128:"c912686270a2b9966415fca3be75c468":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #16 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b77":"cafebabefacedbaddecaf888":"ffedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4e4b178d8fe26fdc95e2e7246dd94bec":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"ad142c11579dd95e41f3c1f324dabc255864d920f1b65759d8f560d4948d447758dfdcf77aa9f62581c7ff572a037f810cb1a9c4b3ca6ed638179b77":"cafebabefacedbaddecaf888":"ffedfacedeadbeeffeedfacedeadbeefabaddad2":128:"4e4b178d8fe26fdc95e2e7246dd94bec":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #17 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"6ca95fbb7d16577a9ef2fded94dc85b5d40c629f6bef2c649888e3cbb0ededc7810c04b12c2983bbbbc482e16e45c9215ae12c15c55f2f4809d06652":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e6472b8ebd331bfcc7c0fa63ce094462":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308":"6ca95fbb7d16577a9ef2fded94dc85b5d40c629f6bef2c649888e3cbb0ededc7810c04b12c2983bbbbc482e16e45c9215ae12c15c55f2f4809d06652":"cafebabefacedbad":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"e6472b8ebd331bfcc7c0fa63ce094462":"FAIL":"":0 Camellia-GCM test vect draft-kato-ipsec-camellia-gcm #18 (256-bad) depends_on:MBEDTLS_CAMELLIA_C -gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a9f9467308308feffe9928665731c6d6a8f9467308308":"e0cddd7564d09c4dc522dd65949262bbf9dcdb07421cf67f3032becb7253c284a16e5bf0f556a308043f53fab9eebb526be7f7ad33d697ac77c67862":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"5791883f822013f8bd136fc36fb9946b":"FAIL":0 +gcm_decrypt_and_verify:MBEDTLS_CIPHER_ID_CAMELLIA:"feffe9928665731c6d6a9f9467308308feffe9928665731c6d6a8f9467308308":"e0cddd7564d09c4dc522dd65949262bbf9dcdb07421cf67f3032becb7253c284a16e5bf0f556a308043f53fab9eebb526be7f7ad33d697ac77c67862":"9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b":"feedfacedeadbeeffeedfacedeadbeefabaddad2":128:"5791883f822013f8bd136fc36fb9946b":"FAIL":"":0 diff --git a/tests/suites/test_suite_gcm.function b/tests/suites/test_suite_gcm.function index 782a896879..17d79c579e 100644 --- a/tests/suites/test_suite_gcm.function +++ b/tests/suites/test_suite_gcm.function @@ -92,8 +92,8 @@ void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, uint32_t iv_len, uint8_t * add_str, uint32_t add_len, int tag_len_bits, uint8_t * tag_str, uint32_t tag_str_len, - uint8_t * pt_result, uint32_t pt_result_len, - int init_result ) + char * result, uint8_t * pt_result, + uint32_t pt_result_len, int init_result ) { unsigned char output[128]; mbedtls_gcm_context ctx; @@ -110,7 +110,7 @@ void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, { ret = mbedtls_gcm_auth_decrypt( &ctx, pt_len, iv_str, iv_len, add_str, add_len, tag_str, tag_len, src_str, output ); - if( strcmp( "FAIL", pt_result ) == 0 ) + if( strcmp( "FAIL", result ) == 0 ) { TEST_ASSERT( ret == MBEDTLS_ERR_GCM_AUTH_FAILED ); } diff --git a/tests/suites/test_suite_md.function b/tests/suites/test_suite_md.function index a700b33e8f..23758ebdd8 100644 --- a/tests/suites/test_suite_md.function +++ b/tests/suites/test_suite_md.function @@ -289,7 +289,7 @@ void mbedtls_md_hmac( char * text_md_name, int trunc_size, uint8_t * key_str, TEST_ASSERT ( mbedtls_md_hmac( md_info, key_str, key_len, src_str, src_len, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); } /* END_CASE */ @@ -322,7 +322,7 @@ void md_hmac_multi( char * text_md_name, int trunc_size, uint8_t * key_str, TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); /* Test again, for reset() */ memset( output, 0x00, 100 ); @@ -332,7 +332,7 @@ void md_hmac_multi( char * text_md_name, int trunc_size, uint8_t * key_str, TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size * 2, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); exit: mbedtls_md_free( &ctx ); diff --git a/tests/suites/test_suite_mpi.data b/tests/suites/test_suite_mpi.data index c45008823a..227c4729b3 100644 --- a/tests/suites/test_suite_mpi.data +++ b/tests/suites/test_suite_mpi.data @@ -59,7 +59,7 @@ Test mbedtls_mpi_write_binary #1 (Buffer just fits) mbedtls_mpi_write_binary:16:"123123123123123123123123123":"0123123123123123123123123123":14:0 Test mbedtls_mpi_write_binary #2 (Buffer too small) -mbedtls_mpi_write_binary:16:"123123123123123123123123123":"123123123123123123123123123":13:MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL +mbedtls_mpi_write_binary:16:"123123123123123123123123123":"23123123123123123123123123":13:MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL Base test mbedtls_mpi_read_file #1 mbedtls_mpi_read_file:10:"data_files/mpi_10":"01f55332c3a48b910f9942f6c914e58bef37a47ee45cb164a5b6b8d1006bf59a059c21449939ebebfdf517d2e1dbac88010d7b1f141e997bd6801ddaec9d05910f4f2de2b2c4d714e2c14a72fc7f17aa428d59c531627f09":0 diff --git a/tests/suites/test_suite_pkcs1_v15.function b/tests/suites/test_suite_pkcs1_v15.function index 47539ca322..7b57bee535 100644 --- a/tests/suites/test_suite_pkcs1_v15.function +++ b/tests/suites/test_suite_pkcs1_v15.function @@ -85,7 +85,7 @@ void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char * input_P, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len) == 0 ); } exit: diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function index 5fdca81282..4ebeca9270 100644 --- a/tests/suites/test_suite_pkcs1_v21.function +++ b/tests/suites/test_suite_pkcs1_v21.function @@ -87,7 +87,7 @@ void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char * input_P, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len ) == 0 ); } exit: diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index e13735b3dd..e7537bba5e 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -316,7 +316,7 @@ void rsa_pkcs1_encrypt_bad_rng( uint8_t * message_str, uint32_t msg_len, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len ) == 0 ); } exit: @@ -469,7 +469,7 @@ void mbedtls_rsa_private( uint8_t * message_str, uint32_t message_str_len, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } } From d59391afcd488f4fe44dd7f92cd9a53b8eb87242 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 1 Jun 2017 14:04:17 +0100 Subject: [PATCH 0698/1100] Add support for sending hex parameters --- tests/scripts/mbedtls_test.py | 29 ++++++++++++ tests/suites/embedded_test.function | 72 +++++++++++++++++++++++------ 2 files changed, 88 insertions(+), 13 deletions(-) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 19893ffb48..fa5b507062 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -160,6 +160,28 @@ class MbedTlsTest(BaseHostTest): """ b += bytearray((4 - (len(b))) % 4) + @staticmethod + def hex_str_bytes(hex_str): + """ + Converts Hex string representation to byte array + + :param hex_str: + :return: + """ + assert hex_str[0] == '"' and hex_str[len(hex_str) - 1] == '"', \ + "HEX test parameter missing '\"': %s" % hex_str + hex_str = hex_str.strip('"') + assert len(hex_str) % 2 == 0, "HEX parameter len should be mod of 2: %s" % hex_str + b = bytearray() + + for i in xrange(len(hex_str) / 2): + h = hex_str[i * 2] + hex_str[(i * 2) + 1] + try: + b += bytearray([int(h, 16)]) + except ValueError: + raise ValueError("Invalid HEX value: %s" % hex_str) + return b + def parameters_to_bytes(self, b, parameters): for typ, param in parameters: if typ == 'int' or typ == 'exp': @@ -175,6 +197,13 @@ class MbedTlsTest(BaseHostTest): b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) b += bytearray(list(param)) b += '\0' # Null terminate + elif typ == 'hex': + hb = self.hex_str_bytes(param) + b += 'H' + self.align_32bit(b) + i = len(hb) + b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + b += hb return b def run_next_test(self): diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function index e885a0e99f..ba59089998 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/embedded_test.function @@ -155,6 +155,47 @@ uint8_t * receive_data( uint32_t * data_len ) return( data ); } +/** + * \brief Parses received byte array and finds number of hex parameters. + * + * \param count Parameter count + * \param data Received Byte array + * \param data_len Byte array length + * + * \return count of hex params + */ +uint32_t find_hex_count( uint8_t count, uint8_t * data, uint32_t data_len ) +{ + uint32_t i = 0, sz = 0; + char c; + uint8_t * p = NULL; + uint32_t hex_count = 0; + + p = data; + + for( i = 0; i < count; i++ ) + { + c = (char)*p; + INCR_ASSERT( p, data, data_len, 1 ); + + /* Align p to 4 bytes for int, expression, string len or hex length */ + ALIGN_32BIT( p, data, data_len ); + + /* Network to host conversion */ + sz = (int32_t)parse_uint32( p ); + + INCR_ASSERT( p, data, data_len, sizeof( int32_t ) ); + + if ( c == 'H' || c == 'S' ) + { + INCR_ASSERT( p, data, data_len, sz ); + hex_count += ( c == 'H' )?1:0; + } + } + + return( hex_count ); +} + /** * \brief Parses received byte array for test parameters. * @@ -170,15 +211,16 @@ uint8_t * receive_data( uint32_t * data_len ) void ** parse_parameters( uint8_t count, uint8_t * data, uint32_t data_len, int * error ) { - uint32_t i = 0; + uint32_t i = 0, hex_count = 0; char c; void ** params = NULL; void ** cur = NULL; uint8_t * p = NULL; - params = (void **)malloc( sizeof( void *) * ( count + 1 ) ); + hex_count = find_hex_count(count, data, data_len); + + params = (void **)malloc( sizeof( void *) * ( count + hex_count ) ); assert( params != NULL ); - params[count] = NULL; cur = params; p = data; @@ -211,16 +253,15 @@ void ** parse_parameters( uint8_t count, uint8_t * data, uint32_t data_len, INCR_ASSERT( p, data, data_len, sizeof( int32_t ) ); } break; - case 'H': - { - *cur++ = (void *)p; - } /* Intentional fall through */ + case 'H': /* Intentional fall through */ case 'S': { - uint32_t sz = *( (int32_t *)p ); + uint32_t * sz = (uint32_t *)p; INCR_ASSERT( p, data, data_len, sizeof( int32_t ) ); *cur++ = (void *)p; - INCR_ASSERT( p, data, data_len, sz ); + if ( c == 'H' ) + *cur++ = (void *)sz; + INCR_ASSERT( p, data, data_len, ( *sz ) ); } break; default: @@ -324,7 +365,8 @@ int execute_tests( int args, const char ** argv ) if ( ret != DEPENDENCY_SUPPORTED ) break; - INCR_ASSERT( p, data, data_len, count ); + if ( count ) + INCR_ASSERT( p, data, data_len, count ); /* Read function id */ function_id = *p; @@ -334,9 +376,13 @@ int execute_tests( int args, const char ** argv ) count = *p; INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); - params = parse_parameters( count, p, data_len - (p - data), &ret ); - if ( ret ) - break; + /* Parse parameters if present */ + if ( count ) + { + params = parse_parameters( count, p, data_len - ( p - data ), &ret ); + if ( ret ) + break; + } ret = dispatch_test( function_id, params ); } From b3a103c4997d584dfcdb61610881327cb3499038 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 1 Jun 2017 14:05:03 +0100 Subject: [PATCH 0699/1100] Put else in it's own line --- tests/suites/mbed_test.function | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/suites/mbed_test.function b/tests/suites/mbed_test.function index e09ed705c3..ab56dec540 100644 --- a/tests/suites/mbed_test.function +++ b/tests/suites/mbed_test.function @@ -141,7 +141,8 @@ int dispatch_test( int func_idx, void ** params ) fp( params ); else ret = ( DISPATCH_UNSUPPORTED_SUITE ); - }} else + }} + else {{ ret = ( DISPATCH_TEST_FN_NOT_FOUND ); }} From 392267a7c8fbf3fef70665f2f0fd653088f4e372 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 1 Jun 2017 16:46:17 +0100 Subject: [PATCH 0700/1100] Fix missing data in the RSA test vectors file --- tests/suites/test_suite_rsa.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_rsa.data b/tests/suites/test_suite_rsa.data index 41149063ff..bfaae6c651 100644 --- a/tests/suites/test_suite_rsa.data +++ b/tests/suites/test_suite_rsa.data @@ -378,13 +378,13 @@ RSA Check Public-Private key #5 (E mismatch) rsa_check_pubpriv:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"17":16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":16:"77B1D99300D6A54E864962DA09AE10CF19A7FB888456BC2672B72AEA52B204914493D16C184AD201EC3F762E1FBD8702BA796EF953D9EA2F26300D285264F11B0C8301D0207FEB1E2C984445C899B0ACEBAA74EF014DD1D4BDDB43202C08D2FF9692D8D788478DEC829EB52AFB5AE068FBDBAC499A27FACECC391E75C936D55F07BB45EE184DAB45808E15722502F279F89B38C1CB292557E5063597F52C75D61001EDC33F4739353E33E56AD273B067C1A2760208529EA421774A5FFFCB3423B1E0051E7702A55D80CBF2141569F18F87BFF538A1DA8EDBB2693A539F68E0D62D77743F89EACF3B1723BDB25CE2F333FA63CACF0E67DF1A431893BB9B352FCB":16:"9A66CF76572A71A17475794FA1C8C70D987E581E990D772BB27C77C53FF1ECBB31260E9EDAFAEBC79991807E48918EAB8C3A5F03A600F30C69511546AE788EDF53168E2D035D300EDCD5E4BF3AA2A6D603EA0A7BD11E1C1089657306DF8A64E7F1BC6B266B825C1A6C5F0FC85775F4CF7ACD63367E42EAFE46511D58AD6DFE0F":16:"844DBDD20925D9164F9A1E2F707076C261CCA8337D0241392B38AE3C12342F3AC14F8FD6DF4A1C36839662BD0D227344CD55A32AE5DBD2309A9A2B8A2C82BE6DDDDCE81D1B694775D9047AA765CA0C6E1BB8E61C8B7BE27ED711E8EE2FEAD87F3491F76A6D2262C14189EACDFD4CEFE0BF9D0A5B49857E0ED22CBEB98DC8D45B":16:"4951A7B174DF972C37BADCC38457B5EDD1F078BC613E75CE25E08814E12461C7A1C189A70EB8138294298D141244C7A9DE31AB4F6D38B40B04D6353CD30F77ADBF66BBDE41C7BE463C5E30AAA3F7BAD6CEE99506DEAAFA2F335C1B1C5C88B8ABB0D0387EE0D1B4E7027F7F085A025CEDB5CCE18B88C0462F1C3C910D47C0D4AB":MBEDTLS_ERR_RSA_KEY_CHECK_FAILED RSA Private (Correct) -mbedtls_rsa_private:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f870":2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"48ce62658d82be10737bd5d3579aed15bc82617e6758ba862eeb12d049d7bacaf2f62fce8bf6e980763d1951f7f0eae3a493df9890d249314b39d00d6ef791de0daebf2c50f46e54aeb63a89113defe85de6dbe77642aae9f2eceb420f3a47a56355396e728917f17876bb829fabcaeef8bf7ef6de2ff9e84e6108ea2e52bbb62b7b288efa0a3835175b8b08fac56f7396eceb1c692d419ecb79d80aef5bc08a75d89de9f2b2d411d881c0e3ffad24c311a19029d210d3d3534f1b626f982ea322b4d1cfba476860ef20d4f672f38c371084b5301b429b747ea051a619e4430e0dac33c12f9ee41ca4d81a4f6da3e495aa8524574bdc60d290dd1f7a62e90a67":0 +mbedtls_rsa_private:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f8700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"48ce62658d82be10737bd5d3579aed15bc82617e6758ba862eeb12d049d7bacaf2f62fce8bf6e980763d1951f7f0eae3a493df9890d249314b39d00d6ef791de0daebf2c50f46e54aeb63a89113defe85de6dbe77642aae9f2eceb420f3a47a56355396e728917f17876bb829fabcaeef8bf7ef6de2ff9e84e6108ea2e52bbb62b7b288efa0a3835175b8b08fac56f7396eceb1c692d419ecb79d80aef5bc08a75d89de9f2b2d411d881c0e3ffad24c311a19029d210d3d3534f1b626f982ea322b4d1cfba476860ef20d4f672f38c371084b5301b429b747ea051a619e4430e0dac33c12f9ee41ca4d81a4f6da3e495aa8524574bdc60d290dd1f7a62e90a67":0 RSA Private (Data larger than N) mbedtls_rsa_private:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":MBEDTLS_ERR_RSA_PRIVATE_FAILED + MBEDTLS_ERR_MPI_BAD_INPUT_DATA RSA Public (Correct) -mbedtls_rsa_public:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f870":2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"1f5e927c13ff231090b0f18c8c3526428ed0f4a7561457ee5afe4d22d5d9220c34ef5b9a34d0c07f7248a1f3d57f95d10f7936b3063e40660b3a7ca3e73608b013f85a6e778ac7c60d576e9d9c0c5a79ad84ceea74e4722eb3553bdb0c2d7783dac050520cb27ca73478b509873cb0dcbd1d51dd8fccb96c29ad314f36d67cc57835d92d94defa0399feb095fd41b9f0b2be10f6041079ed4290040449f8a79aba50b0a1f8cf83c9fb8772b0686ec1b29cb1814bb06f9c024857db54d395a8da9a2c6f9f53b94bec612a0cb306a3eaa9fc80992e85d9d232e37a50cabe48c9343f039601ff7d95d60025e582aec475d031888310e8ec3833b394a5cf0599101e":0 +mbedtls_rsa_public:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f8700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000":2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"1f5e927c13ff231090b0f18c8c3526428ed0f4a7561457ee5afe4d22d5d9220c34ef5b9a34d0c07f7248a1f3d57f95d10f7936b3063e40660b3a7ca3e73608b013f85a6e778ac7c60d576e9d9c0c5a79ad84ceea74e4722eb3553bdb0c2d7783dac050520cb27ca73478b509873cb0dcbd1d51dd8fccb96c29ad314f36d67cc57835d92d94defa0399feb095fd41b9f0b2be10f6041079ed4290040449f8a79aba50b0a1f8cf83c9fb8772b0686ec1b29cb1814bb06f9c024857db54d395a8da9a2c6f9f53b94bec612a0cb306a3eaa9fc80992e85d9d232e37a50cabe48c9343f039601ff7d95d60025e582aec475d031888310e8ec3833b394a5cf0599101e":0 RSA Public (Data larger than N) mbedtls_rsa_public:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":MBEDTLS_ERR_RSA_PUBLIC_FAILED + MBEDTLS_ERR_MPI_BAD_INPUT_DATA From 47b40609de15a42e855a2e9c62f62b4c0cf04acb Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 1 Jun 2017 16:48:09 +0100 Subject: [PATCH 0701/1100] Fix RSA test suite bugged by hexify/unhexify change --- tests/suites/test_suite_rsa.function | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index e7537bba5e..8c9e8fde62 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -403,7 +403,7 @@ void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } /* And now with the copy */ @@ -418,7 +418,7 @@ void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); } exit: From 3e5d0004ab98b294fb30841e5e23d80cb4a3e141 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 5 Jun 2017 13:16:10 +0100 Subject: [PATCH 0702/1100] Update Greentea API header --- tests/suites/embedded_test.function | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function index ba59089998..4436ccbdd3 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/embedded_test.function @@ -1,6 +1,6 @@ #line 2 "embedded_test.function" -#include "greentea-client/test_env_c.h" +#include "greentea-client/test_env.h" /** * \brief Increments pointer and asserts that it does not overflow. From 5cfc06832e92849d65753b800942153bdee14dda Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 5 Jun 2017 13:18:32 +0100 Subject: [PATCH 0703/1100] Fix name conflict in function params after hexify/unhexify change --- tests/suites/test_suite_cmac.function | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/suites/test_suite_cmac.function b/tests/suites/test_suite_cmac.function index 7bae762e95..08ee207ee6 100644 --- a/tests/suites/test_suite_cmac.function +++ b/tests/suites/test_suite_cmac.function @@ -122,11 +122,11 @@ void mbedtls_cmac_setkey( int cipher_type, int key_size, int result ) void mbedtls_cmac_multiple_blocks( int cipher_type, uint8_t * key, uint32_t key_len, int keybits, int block_size, uint8_t * block1, - uint32_t block1_len, int block1_len, - uint8_t * block2, uint32_t block2_len, + uint32_t block1_sz, int block1_len, + uint8_t * block2, uint32_t block2_sz, int block2_len, uint8_t * block3, - uint32_t block3_len, int block3_len, - uint8_t * block4, uint32_t block4_len, + uint32_t block3_sz, int block3_len, + uint8_t * block4, uint32_t block4_sz, int block4_len, uint8_t * expected_result, uint32_t expected_result_len ) { @@ -191,24 +191,24 @@ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, uint32_t key_len, int keybits, int block_size, uint8_t * block_a1, - uint32_t block_a1_len, + uint32_t block_a1_sz, int block_a1_len, uint8_t * block_a2, - uint32_t block_a2_len, + uint32_t block_a2_sz, int block_a2_len, uint8_t * block_a3, - uint32_t block_a3_len, + uint32_t block_a3_sz, int block_a3_len, uint8_t * expected_result_a, uint32_t expected_result_a_len, uint8_t * block_b1, - uint32_t block_b1_len, + uint32_t block_b1_sz, int block_b1_len, uint8_t * block_b2, - uint32_t block_b2_len, + uint32_t block_b2_sz, int block_b2_len, uint8_t * block_b3, - uint32_t block_b3_len, + uint32_t block_b3_sz, int block_b3_len, uint8_t * expected_result_b, uint32_t expected_result_b_len From d30ca130e8a597b8dfeda7ccfab9a54bd2db4967 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 9 Jun 2017 04:32:58 +0100 Subject: [PATCH 0704/1100] Combine hex parameters in a struct --- tests/suites/helpers.function | 7 + tests/suites/test_suite_aes.function | 98 +++---- tests/suites/test_suite_arc4.function | 12 +- tests/suites/test_suite_asn1write.function | 28 +- tests/suites/test_suite_base64.function | 33 +-- tests/suites/test_suite_blowfish.function | 93 +++---- tests/suites/test_suite_camellia.function | 80 +++--- tests/suites/test_suite_ccm.function | 55 ++-- tests/suites/test_suite_cipher.function | 84 +++--- tests/suites/test_suite_cmac.function | 74 +++--- tests/suites/test_suite_ctr_drbg.function | 35 ++- tests/suites/test_suite_debug.function | 5 +- tests/suites/test_suite_des.function | 108 ++++---- tests/suites/test_suite_ecdh.function | 32 ++- tests/suites/test_suite_ecdsa.function | 19 +- tests/suites/test_suite_ecjpake.function | 36 +-- tests/suites/test_suite_ecp.function | 30 +-- tests/suites/test_suite_entropy.function | 8 +- tests/suites/test_suite_gcm.function | 40 ++- tests/suites/test_suite_hmac_drbg.function | 89 +++---- tests/suites/test_suite_md.function | 74 +++--- tests/suites/test_suite_mdx.function | 20 +- tests/suites/test_suite_mpi.function | 17 +- tests/suites/test_suite_pem.function | 8 +- tests/suites/test_suite_pk.function | 65 +++-- tests/suites/test_suite_pkcs1_v15.function | 49 ++-- tests/suites/test_suite_pkcs1_v21.function | 67 ++--- tests/suites/test_suite_pkcs5.function | 33 +-- tests/suites/test_suite_pkparse.function | 5 +- tests/suites/test_suite_rsa.data | 6 +- tests/suites/test_suite_rsa.function | 287 ++++++++------------- tests/suites/test_suite_shax.function | 35 ++- tests/suites/test_suite_ssl.data | 32 +-- tests/suites/test_suite_ssl.function | 11 +- tests/suites/test_suite_x509parse.function | 45 ++-- tests/suites/test_suite_xtea.function | 50 ++-- 36 files changed, 756 insertions(+), 1014 deletions(-) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 6bab65f657..c772af9a5e 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -39,6 +39,13 @@ typedef UINT32 uint32_t; #include #endif +/* Type for Hex parameters */ +typedef struct HexParam_tag +{ + uint8_t * x; + uint32_t len; +} HexParam_t; + /*----------------------------------------------------------------------------*/ /* Constants */ diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index ad65a1b367..a0f1b13eb0 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -8,9 +8,8 @@ */ /* BEGIN_CASE */ -void aes_encrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, - uint32_t src_str_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void aes_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -19,12 +18,12 @@ void aes_encrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, mbedtls_aes_init( &ctx ); - TEST_ASSERT( mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_ENCRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_ENCRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); } exit: @@ -33,9 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void aes_decrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, - uint32_t src_str_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void aes_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -44,12 +42,12 @@ void aes_decrypt_ecb( uint8_t * key_str, uint32_t key_len, uint8_t * src_str, mbedtls_aes_init( &ctx ); - TEST_ASSERT( mbedtls_aes_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_aes_setkey_dec( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_DECRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_aes_crypt_ecb( &ctx, MBEDTLS_AES_DECRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); } exit: @@ -58,10 +56,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_encrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, - uint32_t iv_str_len, uint8_t * src_str, - uint32_t data_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void aes_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -70,12 +67,12 @@ void aes_encrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_ENCRYPT, data_len, iv_str, src_str, output ) == cbc_result ); + mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -84,10 +81,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_decrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, - uint32_t iv_str_len, uint8_t * src_str, - uint32_t data_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void aes_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -96,12 +92,12 @@ void aes_decrypt_cbc( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_DECRYPT, data_len, iv_str, src_str, output ) == cbc_result ); + mbedtls_aes_setkey_dec( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cbc( &ctx, MBEDTLS_AES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -234,11 +230,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len - ) +void aes_encrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -248,10 +241,10 @@ void aes_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_ENCRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_ENCRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -259,11 +252,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len - ) +void aes_decrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -273,10 +263,10 @@ void aes_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_DECRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cfb128( &ctx, MBEDTLS_AES_DECRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -284,10 +274,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, - uint32_t iv_str_len, uint8_t * src_str, - uint32_t src_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void aes_encrypt_cfb8( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -296,10 +284,10 @@ void aes_encrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_ENCRYPT, src_len, iv_str, src_str, output ) == 0 ); + mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_aes_free( &ctx ); @@ -307,10 +295,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, - uint32_t iv_str_len, uint8_t * src_str, - uint32_t src_len, uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void aes_decrypt_cfb8( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -319,10 +305,10 @@ void aes_decrypt_cfb8( uint8_t * key_str, uint32_t key_len, uint8_t * iv_str, mbedtls_aes_init( &ctx ); - mbedtls_aes_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_DECRYPT, src_len, iv_str, src_str, output ) == 0 ); + mbedtls_aes_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_aes_crypt_cfb8( &ctx, MBEDTLS_AES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_aes_free( &ctx ); diff --git a/tests/suites/test_suite_arc4.function b/tests/suites/test_suite_arc4.function index e3ff303765..2a56a5b2df 100644 --- a/tests/suites/test_suite_arc4.function +++ b/tests/suites/test_suite_arc4.function @@ -8,10 +8,8 @@ */ /* BEGIN_CASE */ -void mbedtls_arc4_crypt( uint8_t * src_str, uint32_t src_len, - uint8_t * key_str, uint32_t key_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len - ) +void mbedtls_arc4_crypt( HexParam_t * src_str, HexParam_t * key_str, + HexParam_t * hex_dst_string ) { unsigned char dst_str[1000]; mbedtls_arc4_context ctx; @@ -20,10 +18,10 @@ void mbedtls_arc4_crypt( uint8_t * src_str, uint32_t src_len, mbedtls_arc4_init( &ctx ); - mbedtls_arc4_setup(&ctx, key_str, key_len); - TEST_ASSERT( mbedtls_arc4_crypt(&ctx, src_len, src_str, dst_str ) == 0 ); + mbedtls_arc4_setup(&ctx, key_str->x, key_str->len); + TEST_ASSERT( mbedtls_arc4_crypt(&ctx, src_str->len, src_str->x, dst_str ) == 0 ); - TEST_ASSERT( hexcmp( dst_str, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( dst_str, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_arc4_free( &ctx ); diff --git a/tests/suites/test_suite_asn1write.function b/tests/suites/test_suite_asn1write.function index 3befa44d26..3b2d86e79c 100644 --- a/tests/suites/test_suite_asn1write.function +++ b/tests/suites/test_suite_asn1write.function @@ -11,8 +11,7 @@ */ /* BEGIN_CASE */ -void mbedtls_asn1_write_octet_string( uint8_t * str, uint32_t str_len, - uint8_t * asn1, uint32_t asn1_len, +void mbedtls_asn1_write_octet_string( HexParam_t * str, HexParam_t * asn1, int buf_len, int result ) { int ret; @@ -25,7 +24,7 @@ void mbedtls_asn1_write_octet_string( uint8_t * str, uint32_t str_len, p = buf + GUARD_LEN + buf_len; - ret = mbedtls_asn1_write_octet_string( &p, buf + GUARD_LEN, str, str_len ); + ret = mbedtls_asn1_write_octet_string( &p, buf + GUARD_LEN, str->x, str->len ); /* Check for buffer overwrite on both sides */ for( i = 0; i < GUARD_LEN; i++ ) @@ -36,17 +35,17 @@ void mbedtls_asn1_write_octet_string( uint8_t * str, uint32_t str_len, if( result >= 0 ) { - TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); + TEST_ASSERT( (size_t) ret == asn1->len ); + TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len ); - TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); + TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 ); } } /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_ia5_string( char * str, uint8_t * asn1, - uint32_t asn1_len, int buf_len, int result - ) +void mbedtls_asn1_write_ia5_string( char * str, HexParam_t * asn1, + int buf_len, int result ) { int ret; unsigned char buf[150]; @@ -71,16 +70,17 @@ void mbedtls_asn1_write_ia5_string( char * str, uint8_t * asn1, if( result >= 0 ) { - TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); + TEST_ASSERT( (size_t) ret == asn1->len ); + TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len ); - TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); + TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 ); } } /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_len( int len, uint8_t * asn1, uint32_t asn1_len, - int buf_len, int result ) +void mbedtls_asn1_write_len( int len, HexParam_t * asn1, int buf_len, + int result ) { int ret; unsigned char buf[150]; @@ -105,9 +105,9 @@ void mbedtls_asn1_write_len( int len, uint8_t * asn1, uint32_t asn1_len, if( result >= 0 ) { - TEST_ASSERT( p + asn1_len == buf + GUARD_LEN + buf_len ); + TEST_ASSERT( p + asn1->len == buf + GUARD_LEN + buf_len ); - TEST_ASSERT( memcmp( p, asn1, asn1_len ) == 0 ); + TEST_ASSERT( memcmp( p, asn1->x, asn1->len ) == 0 ); /* Read back with mbedtls_asn1_get_len() to check */ ret = mbedtls_asn1_get_len( &p, buf + GUARD_LEN + buf_len, &read_len ); diff --git a/tests/suites/test_suite_base64.function b/tests/suites/test_suite_base64.function index 3077f16aaa..53f0f69212 100644 --- a/tests/suites/test_suite_base64.function +++ b/tests/suites/test_suite_base64.function @@ -49,16 +49,15 @@ void mbedtls_base64_decode( char * src_string, char * dst_string, int result ) /* END_CASE */ /* BEGIN_CASE */ -void base64_encode_hex( char * src_hex, char * dst, int dst_buf_size, +void base64_encode_hex( HexParam_t * src, char * dst, int dst_buf_size, int result ) { - unsigned char *src = NULL, *res = NULL; - size_t len, src_len; + unsigned char *res = NULL; + size_t len; - src = unhexify_alloc( src_hex, &src_len ); res = zero_alloc( dst_buf_size ); - TEST_ASSERT( mbedtls_base64_encode( res, dst_buf_size, &len, src, src_len ) == result ); + TEST_ASSERT( mbedtls_base64_encode( res, dst_buf_size, &len, src->x, src->len ) == result ); if( result == 0 ) { TEST_ASSERT( len == strlen( dst ) ); @@ -66,45 +65,39 @@ void base64_encode_hex( char * src_hex, char * dst, int dst_buf_size, } exit: - mbedtls_free( src ); mbedtls_free( res ); } /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex( char * src, char * dst_hex, int dst_buf_size, +void base64_decode_hex( char * src, HexParam_t * dst, int dst_buf_size, int result ) { - unsigned char *dst = NULL, *res = NULL; - size_t len, dst_len; + unsigned char *res = NULL; + size_t len; - dst = unhexify_alloc( dst_hex, &dst_len ); res = zero_alloc( dst_buf_size ); TEST_ASSERT( mbedtls_base64_decode( res, dst_buf_size, &len, (unsigned char *) src, strlen( src ) ) == result ); if( result == 0 ) { - TEST_ASSERT( len == dst_len ); - TEST_ASSERT( memcmp( dst, res, len ) == 0 ); + TEST_ASSERT( len == dst->len ); + TEST_ASSERT( memcmp( dst->x, res, len ) == 0 ); } exit: - mbedtls_free( dst ); mbedtls_free( res ); } /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex_src( char * src_hex, char * dst_ref, int result ) +void base64_decode_hex_src( HexParam_t * src, char * dst_ref, int result ) { unsigned char dst[1000] = { 0 }; - unsigned char *src; - size_t src_len, len; + size_t len; - src = unhexify_alloc( src_hex, &src_len ); - - TEST_ASSERT( mbedtls_base64_decode( dst, sizeof( dst ), &len, src, src_len ) == result ); + TEST_ASSERT( mbedtls_base64_decode( dst, sizeof( dst ), &len, src->x, src->len ) == result ); if( result == 0 ) { TEST_ASSERT( len == strlen( dst_ref ) ); @@ -112,7 +105,7 @@ void base64_decode_hex_src( char * src_hex, char * dst_ref, int result ) } exit: - mbedtls_free( src ); + ;; } /* END_CASE */ diff --git a/tests/suites/test_suite_blowfish.function b/tests/suites/test_suite_blowfish.function index 55ab619fcc..d88eac463b 100644 --- a/tests/suites/test_suite_blowfish.function +++ b/tests/suites/test_suite_blowfish.function @@ -8,10 +8,8 @@ */ /* BEGIN_CASE */ -void blowfish_encrypt_ecb( uint8_t * key_str, uint32_t key_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void blowfish_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -20,12 +18,12 @@ void blowfish_encrypt_ecb( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); } exit: @@ -34,10 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void blowfish_decrypt_ecb( uint8_t * key_str, uint32_t key_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void blowfish_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -46,12 +42,12 @@ void blowfish_decrypt_ecb( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_blowfish_crypt_ecb( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); } exit: @@ -60,11 +56,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_encrypt_cbc( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t data_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void blowfish_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -73,13 +67,13 @@ void blowfish_encrypt_cbc( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); + mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ); - TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, data_len , iv_str, src_str, output ) == cbc_result ); + TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->len , iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -88,11 +82,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_decrypt_cbc( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t data_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void blowfish_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -101,12 +93,12 @@ void blowfish_decrypt_cbc( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_DECRYPT, data_len , iv_str, src_str, output ) == cbc_result ); + mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_blowfish_crypt_cbc( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->len , iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -115,11 +107,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_encrypt_cfb64( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void blowfish_encrypt_cfb64( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string + ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -129,10 +119,10 @@ void blowfish_encrypt_cfb64( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_ENCRYPT, src_str->len, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); @@ -140,11 +130,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_decrypt_cfb64( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void blowfish_decrypt_cfb64( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string + ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -154,10 +142,10 @@ void blowfish_decrypt_cfb64( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_len, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_blowfish_crypt_cfb64( &ctx, MBEDTLS_BLOWFISH_DECRYPT, src_str->len, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); @@ -165,11 +153,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ -void blowfish_encrypt_ctr( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void blowfish_encrypt_ctr( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char stream_str[100]; unsigned char output[100]; @@ -181,10 +166,10 @@ void blowfish_encrypt_ctr( uint8_t * key_str, uint32_t key_len, mbedtls_blowfish_init( &ctx ); - mbedtls_blowfish_setkey( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_blowfish_crypt_ctr( &ctx, src_len, &iv_offset, iv_str, stream_str, src_str, output ) == 0 ); + mbedtls_blowfish_setkey( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_blowfish_crypt_ctr( &ctx, src_str->len, &iv_offset, iv_str->x, stream_str, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); exit: mbedtls_blowfish_free( &ctx ); diff --git a/tests/suites/test_suite_camellia.function b/tests/suites/test_suite_camellia.function index 96d25a2514..4bfa1a5da8 100644 --- a/tests/suites/test_suite_camellia.function +++ b/tests/suites/test_suite_camellia.function @@ -8,10 +8,8 @@ */ /* BEGIN_CASE */ -void camellia_encrypt_ecb( uint8_t * key_str, uint32_t key_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void camellia_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -20,12 +18,12 @@ void camellia_encrypt_ecb( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - TEST_ASSERT( mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); } exit: @@ -34,10 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void camellia_decrypt_ecb( uint8_t * key_str, uint32_t key_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int setkey_result ) +void camellia_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -46,12 +42,12 @@ void camellia_decrypt_ecb( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - TEST_ASSERT( mbedtls_camellia_setkey_dec( &ctx, key_str, key_len * 8 ) == setkey_result ); + TEST_ASSERT( mbedtls_camellia_setkey_dec( &ctx, key_str->x, key_str->len * 8 ) == setkey_result ); if( setkey_result == 0 ) { - TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_camellia_crypt_ecb( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); } exit: @@ -60,11 +56,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_encrypt_cbc( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t data_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void camellia_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -73,12 +67,12 @@ void camellia_encrypt_cbc( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, data_len, iv_str, src_str, output) == cbc_result ); + mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, src_str->len, iv_str->x, src_str->x, output) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -87,11 +81,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_decrypt_cbc( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t data_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int cbc_result ) +void camellia_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, + int cbc_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -100,12 +92,12 @@ void camellia_decrypt_cbc( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - mbedtls_camellia_setkey_dec( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_DECRYPT, data_len, iv_str, src_str, output ) == cbc_result ); + mbedtls_camellia_setkey_dec( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_camellia_crypt_cbc( &ctx, MBEDTLS_CAMELLIA_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, data_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -114,11 +106,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void camellia_encrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -128,10 +118,10 @@ void camellia_encrypt_cfb128( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); exit: mbedtls_camellia_free( &ctx ); @@ -139,11 +129,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len ) +void camellia_decrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -153,10 +141,10 @@ void camellia_decrypt_cfb128( uint8_t * key_str, uint32_t key_len, mbedtls_camellia_init( &ctx ); - mbedtls_camellia_setkey_enc( &ctx, key_str, key_len * 8 ); - TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_DECRYPT, 16, &iv_offset, iv_str, src_str, output ) == 0 ); + mbedtls_camellia_setkey_enc( &ctx, key_str->x, key_str->len * 8 ); + TEST_ASSERT( mbedtls_camellia_crypt_cfb128( &ctx, MBEDTLS_CAMELLIA_DECRYPT, 16, &iv_offset, iv_str->x, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 16, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 16, hex_dst_string->len ) == 0 ); exit: mbedtls_camellia_free( &ctx ); diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index 5dbc837e42..b9df023a7c 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -116,34 +116,31 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_encrypt_and_tag( int cipher_id, uint8_t * key, - uint32_t key_len, uint8_t * msg, - uint32_t msg_len, uint8_t * iv, - uint32_t iv_len, uint8_t * add, - uint32_t add_len, uint8_t * result, - uint32_t result_len ) +void mbedtls_ccm_encrypt_and_tag( int cipher_id, HexParam_t * key, + HexParam_t * msg, HexParam_t * iv, + HexParam_t * add, HexParam_t * result ) { mbedtls_ccm_context ctx; size_t tag_len; - uint8_t * msg_n_tag = (uint8_t *)malloc( result_len + 2 ); + uint8_t * msg_n_tag = (uint8_t *)malloc( result->len + 2 ); mbedtls_ccm_init( &ctx ); - memset( msg_n_tag, 0, result_len + 2 ); - memcpy( msg_n_tag, msg, msg_len ); + memset( msg_n_tag, 0, result->len + 2 ); + memcpy( msg_n_tag, msg->x, msg->len ); - tag_len = result_len - msg_len; + tag_len = result->len - msg->len; - TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); + TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key->x, key->len * 8 ) == 0 ); /* Test with input == output */ - TEST_ASSERT( mbedtls_ccm_encrypt_and_tag( &ctx, msg_len, iv, iv_len, add, add_len, - msg_n_tag, msg_n_tag, msg_n_tag + msg_len, tag_len ) == 0 ); + TEST_ASSERT( mbedtls_ccm_encrypt_and_tag( &ctx, msg->len, iv->x, iv->len, add->x, add->len, + msg_n_tag, msg_n_tag, msg_n_tag + msg->len, tag_len ) == 0 ); - TEST_ASSERT( memcmp( msg_n_tag, result, result_len ) == 0 ); + TEST_ASSERT( memcmp( msg_n_tag, result->x, result->len ) == 0 ); /* Check we didn't write past the end */ - TEST_ASSERT( msg_n_tag[result_len] == 0 && msg_n_tag[result_len + 1] == 0 ); + TEST_ASSERT( msg_n_tag[result->len] == 0 && msg_n_tag[result->len + 1] == 0 ); exit: mbedtls_ccm_free( &ctx ); @@ -152,12 +149,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, - uint8_t * msg, uint32_t msg_len, uint8_t * iv, - uint32_t iv_len, uint8_t * add, - uint32_t add_len, int tag_len, - char * result, uint8_t * hex_msg, - uint32_t hex_msg_len ) +void mbedtls_ccm_auth_decrypt( int cipher_id, HexParam_t * key, + HexParam_t * msg, HexParam_t * iv, + HexParam_t * add, int tag_len, char * result, + HexParam_t * hex_msg ) { unsigned char tag[16]; mbedtls_ccm_context ctx; @@ -167,8 +162,8 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, memset( tag, 0x00, sizeof( tag ) ); - msg_len -= tag_len; - memcpy( tag, msg + msg_len, tag_len ); + msg->len -= tag_len; + memcpy( tag, msg->x + msg->len, tag_len ); if( strcmp( "FAIL", result ) == 0 ) { @@ -179,26 +174,26 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, uint8_t * key, uint32_t key_len, ret = 0; } - TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key, key_len * 8 ) == 0 ); + TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key->x, key->len * 8 ) == 0 ); /* Test with input == output */ - TEST_ASSERT( mbedtls_ccm_auth_decrypt( &ctx, msg_len, iv, iv_len, add, add_len, - msg, msg, msg + msg_len, tag_len ) == ret ); + TEST_ASSERT( mbedtls_ccm_auth_decrypt( &ctx, msg->len, iv->x, iv->len, add->x, add->len, + msg->x, msg->x, msg->x + msg->len, tag_len ) == ret ); if( ret == 0 ) { - TEST_ASSERT( memcmp( msg, hex_msg, hex_msg_len ) == 0 ); + TEST_ASSERT( memcmp( msg->x, hex_msg->x, hex_msg->len ) == 0 ); } else { size_t i; - for( i = 0; i < msg_len; i++ ) - TEST_ASSERT( msg[i] == 0 ); + for( i = 0; i < msg->len; i++ ) + TEST_ASSERT( msg->x[i] == 0 ); } /* Check we didn't write past the end (where the original tag is) */ - TEST_ASSERT( memcmp( msg + msg_len, tag, tag_len ) == 0 ); + TEST_ASSERT( memcmp( msg->x + msg->len, tag, tag_len ) == 0 ); exit: mbedtls_ccm_free( &ctx ); diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 435c9a384d..767e441023 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -471,12 +471,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void decrypt_test_vec( int cipher_id, int pad_mode, uint8_t * key, - uint32_t key_len, uint8_t * iv, uint32_t iv_len, - uint8_t * cipher, uint32_t cipher_len, uint8_t * clear, - uint32_t clear_len, uint8_t * ad, uint32_t ad_len, - uint8_t * tag, uint32_t tag_len, int finish_result, - int tag_result ) +void decrypt_test_vec( int cipher_id, int pad_mode, HexParam_t * key, + HexParam_t * iv, HexParam_t * cipher, + HexParam_t * clear, HexParam_t * ad, HexParam_t * tag, + int finish_result, int tag_result ) { unsigned char output[265]; mbedtls_cipher_context_t ctx; @@ -494,35 +492,35 @@ void decrypt_test_vec( int cipher_id, int pad_mode, uint8_t * key, /* Prepare context */ TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, mbedtls_cipher_info_from_type( cipher_id ) ) ); - TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, MBEDTLS_DECRYPT ) ); + TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key->x, 8 * key->len, MBEDTLS_DECRYPT ) ); #if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) if( pad_mode != -1 ) TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, pad_mode ) ); #else (void) pad_mode; #endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ - TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv, iv_len ) ); + TEST_ASSERT( 0 == mbedtls_cipher_set_iv( &ctx, iv->x, iv->len ) ); TEST_ASSERT( 0 == mbedtls_cipher_reset( &ctx ) ); #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) - TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, ad, ad_len ) ); + TEST_ASSERT( 0 == mbedtls_cipher_update_ad( &ctx, ad->x, ad->len ) ); #endif - /* decode buffer and check tag */ + /* decode buffer and check tag->x */ total_len = 0; - TEST_ASSERT( 0 == mbedtls_cipher_update( &ctx, cipher, cipher_len, output, &outlen ) ); + TEST_ASSERT( 0 == mbedtls_cipher_update( &ctx, cipher->x, cipher->len, output, &outlen ) ); total_len += outlen; TEST_ASSERT( finish_result == mbedtls_cipher_finish( &ctx, output + outlen, &outlen ) ); total_len += outlen; #if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) - TEST_ASSERT( tag_result == mbedtls_cipher_check_tag( &ctx, tag, tag_len ) ); + TEST_ASSERT( tag_result == mbedtls_cipher_check_tag( &ctx, tag->x, tag->len ) ); #endif /* check plaintext only if everything went fine */ if( 0 == finish_result && 0 == tag_result ) { - TEST_ASSERT( total_len == clear_len ); - TEST_ASSERT( 0 == memcmp( output, clear, clear_len ) ); + TEST_ASSERT( total_len == clear->len ); + TEST_ASSERT( 0 == memcmp( output, clear->x, clear->len ) ); } exit: @@ -531,11 +529,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_AEAD */ -void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, - uint8_t * iv, uint32_t iv_len, uint8_t * ad, - uint32_t ad_len, uint8_t * cipher, uint32_t cipher_len, - uint8_t * tag, uint32_t tag_len, char * result, - uint8_t * clear, uint32_t clear_len ) +void auth_crypt_tv( int cipher_id, HexParam_t * key, HexParam_t * iv, + HexParam_t * ad, HexParam_t * cipher, HexParam_t * tag, + char * result, HexParam_t * clear ) { int ret; unsigned char output[267]; /* above + 2 (overwrite check) */ @@ -552,12 +548,12 @@ void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, /* Prepare context */ TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, mbedtls_cipher_info_from_type( cipher_id ) ) ); - TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, MBEDTLS_DECRYPT ) ); + TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key->x, 8 * key->len, MBEDTLS_DECRYPT ) ); - /* decode buffer and check tag */ - ret = mbedtls_cipher_auth_decrypt( &ctx, iv, iv_len, ad, ad_len, - cipher, cipher_len, output, &outlen, - tag, tag_len ); + /* decode buffer and check tag->x */ + ret = mbedtls_cipher_auth_decrypt( &ctx, iv->x, iv->len, ad->x, ad->len, + cipher->x, cipher->len, output, &outlen, + tag->x, tag->len ); /* make sure we didn't overwrite */ TEST_ASSERT( output[outlen + 0] == 0xFF ); @@ -573,27 +569,27 @@ void auth_crypt_tv( int cipher_id, uint8_t * key, uint32_t key_len, /* otherwise, make sure it was decrypted properly */ TEST_ASSERT( ret == 0 ); - TEST_ASSERT( outlen == clear_len ); - TEST_ASSERT( memcmp( output, clear, clear_len ) == 0 ); + TEST_ASSERT( outlen == clear->len ); + TEST_ASSERT( memcmp( output, clear->x, clear->len ) == 0 ); - /* then encrypt the clear and make sure we get the same ciphertext and tag */ + /* then encrypt the clear->x and make sure we get the same ciphertext and tag->x */ memset( output, 0xFF, sizeof( output ) ); outlen = 0; - ret = mbedtls_cipher_auth_encrypt( &ctx, iv, iv_len, ad, ad_len, - clear, clear_len, output, &outlen, - my_tag, tag_len ); + ret = mbedtls_cipher_auth_encrypt( &ctx, iv->x, iv->len, ad->x, ad->len, + clear->x, clear->len, output, &outlen, + my_tag, tag->len ); TEST_ASSERT( ret == 0 ); - TEST_ASSERT( outlen == clear_len ); - TEST_ASSERT( memcmp( output, cipher, clear_len ) == 0 ); - TEST_ASSERT( memcmp( my_tag, tag, tag_len ) == 0 ); + TEST_ASSERT( outlen == clear->len ); + TEST_ASSERT( memcmp( output, cipher->x, clear->len ) == 0 ); + TEST_ASSERT( memcmp( my_tag, tag->x, tag->len ) == 0 ); /* make sure we didn't overwrite */ TEST_ASSERT( output[outlen + 0] == 0xFF ); TEST_ASSERT( output[outlen + 1] == 0xFF ); - TEST_ASSERT( my_tag[tag_len + 0] == 0xFF ); - TEST_ASSERT( my_tag[tag_len + 1] == 0xFF ); + TEST_ASSERT( my_tag[tag->len + 0] == 0xFF ); + TEST_ASSERT( my_tag[tag->len + 1] == 0xFF ); exit: @@ -602,9 +598,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void test_vec_ecb( int cipher_id, int operation, uint8_t * key, - uint32_t key_len, uint8_t * input, uint32_t input_len, - uint8_t * result, uint32_t result_len, int finish_result ) +void test_vec_ecb( int cipher_id, int operation, HexParam_t * key, + HexParam_t * input, HexParam_t * result, int finish_result + ) { mbedtls_cipher_context_t ctx; unsigned char output[32]; @@ -619,9 +615,9 @@ void test_vec_ecb( int cipher_id, int operation, uint8_t * key, mbedtls_cipher_info_from_type( cipher_id ) ) ); - TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, operation ) ); + TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key->x, 8 * key->len, operation ) ); - TEST_ASSERT( 0 == mbedtls_cipher_update( &ctx, input, + TEST_ASSERT( 0 == mbedtls_cipher_update( &ctx, input->x, mbedtls_cipher_get_block_size( &ctx ), output, &outlen ) ); TEST_ASSERT( outlen == mbedtls_cipher_get_block_size( &ctx ) ); @@ -631,7 +627,7 @@ void test_vec_ecb( int cipher_id, int operation, uint8_t * key, /* check plaintext only if everything went fine */ if( 0 == finish_result ) - TEST_ASSERT( 0 == memcmp( output, result, + TEST_ASSERT( 0 == memcmp( output, result->x, mbedtls_cipher_get_block_size( &ctx ) ) ); exit: @@ -659,8 +655,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void check_padding( int pad_mode, uint8_t * input, uint32_t ilen, int ret, - int dlen_check ) +void check_padding( int pad_mode, HexParam_t * input, int ret, int dlen_check + ) { mbedtls_cipher_info_t cipher_info; mbedtls_cipher_context_t ctx; @@ -674,7 +670,7 @@ void check_padding( int pad_mode, uint8_t * input, uint32_t ilen, int ret, TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, pad_mode ) ); - TEST_ASSERT( ret == ctx.get_padding( input, ilen, &dlen ) ); + TEST_ASSERT( ret == ctx.get_padding( input->x, input->len, &dlen ) ); if( 0 == ret ) TEST_ASSERT( dlen == (size_t) dlen_check ); } diff --git a/tests/suites/test_suite_cmac.function b/tests/suites/test_suite_cmac.function index 08ee207ee6..85b3be1490 100644 --- a/tests/suites/test_suite_cmac.function +++ b/tests/suites/test_suite_cmac.function @@ -119,16 +119,13 @@ void mbedtls_cmac_setkey( int cipher_type, int key_size, int result ) /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_cmac_multiple_blocks( int cipher_type, uint8_t * key, - uint32_t key_len, int keybits, - int block_size, uint8_t * block1, - uint32_t block1_sz, int block1_len, - uint8_t * block2, uint32_t block2_sz, - int block2_len, uint8_t * block3, - uint32_t block3_sz, int block3_len, - uint8_t * block4, uint32_t block4_sz, - int block4_len, uint8_t * expected_result, - uint32_t expected_result_len ) +void mbedtls_cmac_multiple_blocks( int cipher_type, HexParam_t * key, + int keybits, int block_size, + HexParam_t * block1, int block1_len, + HexParam_t * block2, int block2_len, + HexParam_t * block3, int block3_len, + HexParam_t * block4, int block4_len, + HexParam_t * expected_result ) { const mbedtls_cipher_info_t *cipher_info; mbedtls_cipher_context_t ctx; @@ -151,34 +148,34 @@ void mbedtls_cmac_multiple_blocks( int cipher_type, uint8_t * key, TEST_ASSERT( mbedtls_cipher_setup( &ctx, cipher_info ) == 0 ); TEST_ASSERT( mbedtls_cipher_cmac_starts( &ctx, - (const unsigned char*)key, + (const unsigned char*)key->x, keybits ) == 0 ); /* Multiple partial and complete blocks. A negative length means skip the * update operation */ if( block1_len >= 0) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block1, + (unsigned char*)block1->x, block1_len ) == 0); if( block2_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block2, + (unsigned char*)block2->x, block2_len ) == 0); if( block3_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block3, + (unsigned char*)block3->x, block3_len ) == 0); if( block4_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block4, + (unsigned char*)block4->x, block4_len ) == 0); TEST_ASSERT( mbedtls_cipher_cmac_finish( &ctx, output ) == 0 ); - TEST_ASSERT( memcmp( output, expected_result, block_size ) == 0 ); + TEST_ASSERT( memcmp( output, expected_result->x, block_size ) == 0 ); exit: mbedtls_cipher_free( &ctx ); @@ -187,31 +184,22 @@ exit: /* BEGIN_CASE */ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, - uint8_t * key, - uint32_t key_len, int keybits, + HexParam_t * key, int keybits, int block_size, - uint8_t * block_a1, - uint32_t block_a1_sz, + HexParam_t * block_a1, int block_a1_len, - uint8_t * block_a2, - uint32_t block_a2_sz, + HexParam_t * block_a2, int block_a2_len, - uint8_t * block_a3, - uint32_t block_a3_sz, + HexParam_t * block_a3, int block_a3_len, - uint8_t * expected_result_a, - uint32_t expected_result_a_len, - uint8_t * block_b1, - uint32_t block_b1_sz, + HexParam_t * expected_result_a, + HexParam_t * block_b1, int block_b1_len, - uint8_t * block_b2, - uint32_t block_b2_sz, + HexParam_t * block_b2, int block_b2_len, - uint8_t * block_b3, - uint32_t block_b3_sz, + HexParam_t * block_b3, int block_b3_len, - uint8_t * expected_result_b, - uint32_t expected_result_b_len + HexParam_t * expected_result_b ) { const mbedtls_cipher_info_t *cipher_info; @@ -240,7 +228,7 @@ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, TEST_ASSERT( mbedtls_cipher_setup( &ctx, cipher_info ) == 0 ); TEST_ASSERT( mbedtls_cipher_cmac_starts( &ctx, - (const unsigned char*)key, + (const unsigned char*)key->x, keybits ) == 0 ); /* Sequence A */ @@ -249,22 +237,22 @@ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, * update operation */ if( block_a1_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_a1, + (unsigned char*)block_a1->x, block_a1_len ) == 0); if( block_a2_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_a2, + (unsigned char*)block_a2->x, block_a2_len ) == 0); if( block_a3_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_a3, + (unsigned char*)block_a3->x, block_a3_len ) == 0); TEST_ASSERT( mbedtls_cipher_cmac_finish( &ctx, output ) == 0 ); - TEST_ASSERT( memcmp( output, expected_result_a, block_size ) == 0 ); + TEST_ASSERT( memcmp( output, expected_result_a->x, block_size ) == 0 ); TEST_ASSERT( mbedtls_cipher_cmac_reset( &ctx ) == 0 ); @@ -274,22 +262,22 @@ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, * update operation */ if( block_b1_len >= 0) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_b1, + (unsigned char*)block_b1->x, block_b1_len ) == 0); if( block_b2_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_b2, + (unsigned char*)block_b2->x, block_b2_len ) == 0); if( block_b3_len >= 0 ) TEST_ASSERT( mbedtls_cipher_cmac_update( &ctx, - (unsigned char*)block_b3, + (unsigned char*)block_b3->x, block_b3_len ) == 0); TEST_ASSERT( mbedtls_cipher_cmac_finish( &ctx, output ) == 0 ); - TEST_ASSERT( memcmp( output, expected_result_b, block_size ) == 0 ); + TEST_ASSERT( memcmp( output, expected_result_b->x, block_size ) == 0 ); exit: mbedtls_cipher_free( &ctx ); diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 7dd3d5c39c..619c76e197 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -51,11 +51,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_pr( uint8_t * add_init, uint32_t add_init_len, - uint8_t * entropy, uint32_t entropy_len, - uint8_t * add1, uint32_t add1_len, uint8_t * add2, - uint32_t add2_len, uint8_t * result_str, - uint32_t result_str_len ) +void ctr_drbg_validate_pr( HexParam_t * add_init, HexParam_t * entropy, + HexParam_t * add1, HexParam_t * add2, + HexParam_t * result_str ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; @@ -64,12 +62,12 @@ void ctr_drbg_validate_pr( uint8_t * add_init, uint32_t add_init_len, test_offset_idx = 0; - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, 32 ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy->x, add_init->x, add_init->len, 32 ) == 0 ); mbedtls_ctr_drbg_set_prediction_resistance( &ctx, MBEDTLS_CTR_DRBG_PR_ON ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 ); - TEST_ASSERT( hexcmp( buf, result_str, 16, result_str_len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2->x, add2->len ) == 0 ); + TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); @@ -77,12 +75,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_nopr( uint8_t * add_init, uint32_t add_init_len, - uint8_t * entropy, uint32_t entropy_len, - uint8_t * add1, uint32_t add1_len, - uint8_t * add_reseed, uint32_t add_reseed_len, - uint8_t * add2, uint32_t add2_len, - uint8_t * result_str, uint32_t result_str_len ) +void ctr_drbg_validate_nopr( HexParam_t * add_init, HexParam_t * entropy, + HexParam_t * add1, HexParam_t * add_reseed, + HexParam_t * add2, HexParam_t * result_str ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; @@ -91,12 +86,12 @@ void ctr_drbg_validate_nopr( uint8_t * add_init, uint32_t add_init_len, test_offset_idx = 0; - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, 32 ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy->x, add_init->x, add_init->len, 32 ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 ); - TEST_ASSERT( hexcmp( buf, result_str, 16, result_str_len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, add_reseed->x, add_reseed->len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2->x, add2->len ) == 0 ); + TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function index 8c51bf20af..f517c8a9f9 100644 --- a/tests/suites/test_suite_debug.function +++ b/tests/suites/test_suite_debug.function @@ -105,8 +105,7 @@ exit: /* BEGIN_CASE */ void mbedtls_debug_print_buf( char * file, int line, char * text, - uint8_t * data, uint32_t data_len, - char * result_str ) + HexParam_t * data, char * result_str ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; @@ -122,7 +121,7 @@ void mbedtls_debug_print_buf( char * file, int line, char * text, mbedtls_ssl_conf_dbg( &conf, string_debug, &buffer); - mbedtls_debug_print_buf( &ssl, 0, file, line, text, data, data_len ); + mbedtls_debug_print_buf( &ssl, 0, file, line, text, data->x, data->len ); TEST_ASSERT( strcmp( buffer.buf, result_str ) == 0 ); diff --git a/tests/suites/test_suite_des.function b/tests/suites/test_suite_des.function index 3d1bb9235c..8fab5e4154 100644 --- a/tests/suites/test_suite_des.function +++ b/tests/suites/test_suite_des.function @@ -8,16 +8,15 @@ */ /* BEGIN_CASE */ -void des_check_weak( uint8_t * key, uint32_t key_len, int ret ) +void des_check_weak( HexParam_t * key, int ret ) { - TEST_ASSERT( mbedtls_des_key_check_weak( key ) == ret ); + TEST_ASSERT( mbedtls_des_key_check_weak( key->x ) == ret ); } /* END_CASE */ /* BEGIN_CASE */ -void des_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void des_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des_context ctx; @@ -26,10 +25,10 @@ void des_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, mbedtls_des_init( &ctx ); - mbedtls_des_setkey_enc( &ctx, key_str ); - TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str, output ) == 0 ); + mbedtls_des_setkey_enc( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); exit: mbedtls_des_free( &ctx ); @@ -37,9 +36,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void des_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des_context ctx; @@ -48,10 +46,10 @@ void des_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, mbedtls_des_init( &ctx ); - mbedtls_des_setkey_dec( &ctx, key_str ); - TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str, output ) == 0 ); + mbedtls_des_setkey_dec( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_des_crypt_ecb( &ctx, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); exit: mbedtls_des_free( &ctx ); @@ -59,10 +57,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len, +void des_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -72,12 +68,12 @@ void des_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, mbedtls_des_init( &ctx ); - mbedtls_des_setkey_enc( &ctx, key_str ); - TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_len, iv_str, src_str, output ) == cbc_result ); + mbedtls_des_setkey_enc( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -86,10 +82,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len, +void des_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -99,12 +93,12 @@ void des_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, mbedtls_des_init( &ctx ); - mbedtls_des_setkey_dec( &ctx, key_str ); - TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_len, iv_str, src_str, output ) == cbc_result ); + mbedtls_des_setkey_dec( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_des_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -113,9 +107,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_encrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void des3_encrypt_ecb( int key_count, HexParam_t * key_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -125,15 +118,15 @@ void des3_encrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, if( key_count == 2 ) - mbedtls_des3_set2key_enc( &ctx, key_str ); + mbedtls_des3_set2key_enc( &ctx, key_str->x ); else if( key_count == 3 ) - mbedtls_des3_set3key_enc( &ctx, key_str ); + mbedtls_des3_set3key_enc( &ctx, key_str->x ); else TEST_ASSERT( 0 ); - TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); exit: mbedtls_des3_free( &ctx ); @@ -141,9 +134,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_decrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void des3_decrypt_ecb( int key_count, HexParam_t * key_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -153,15 +145,15 @@ void des3_decrypt_ecb( int key_count, uint8_t * key_str, uint32_t key_str_len, if( key_count == 2 ) - mbedtls_des3_set2key_dec( &ctx, key_str ); + mbedtls_des3_set2key_dec( &ctx, key_str->x ); else if( key_count == 3 ) - mbedtls_des3_set3key_dec( &ctx, key_str ); + mbedtls_des3_set3key_dec( &ctx, key_str->x ); else TEST_ASSERT( 0 ); - TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str, output ) == 0 ); + TEST_ASSERT( mbedtls_des3_crypt_ecb( &ctx, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); exit: mbedtls_des3_free( &ctx ); @@ -169,11 +161,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_encrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len, - int cbc_result ) +void des3_encrypt_cbc( int key_count, HexParam_t * key_str, + HexParam_t * iv_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -183,18 +173,18 @@ void des3_encrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, if( key_count == 2 ) - mbedtls_des3_set2key_enc( &ctx, key_str ); + mbedtls_des3_set2key_enc( &ctx, key_str->x ); else if( key_count == 3 ) - mbedtls_des3_set3key_enc( &ctx, key_str ); + mbedtls_des3_set3key_enc( &ctx, key_str->x ); else TEST_ASSERT( 0 ); - TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_len, iv_str, src_str, output ) == cbc_result ); + TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_ENCRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: @@ -203,11 +193,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_decrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t src_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len, - int cbc_result ) +void des3_decrypt_cbc( int key_count, HexParam_t * key_str, + HexParam_t * iv_str, HexParam_t * src_str, + HexParam_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -217,18 +205,18 @@ void des3_decrypt_cbc( int key_count, uint8_t * key_str, uint32_t key_str_len, if( key_count == 2 ) - mbedtls_des3_set2key_dec( &ctx, key_str ); + mbedtls_des3_set2key_dec( &ctx, key_str->x ); else if( key_count == 3 ) - mbedtls_des3_set3key_dec( &ctx, key_str ); + mbedtls_des3_set3key_dec( &ctx, key_str->x ); else TEST_ASSERT( 0 ); - TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_len, iv_str, src_str, output ) == cbc_result ); + TEST_ASSERT( mbedtls_des3_crypt_cbc( &ctx, MBEDTLS_DES_DECRYPT, src_str->len, iv_str->x, src_str->x, output ) == cbc_result ); if( cbc_result == 0 ) { - TEST_ASSERT( hexcmp( output, hex_dst_string, src_len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } exit: diff --git a/tests/suites/test_suite_ecdh.function b/tests/suites/test_suite_ecdh.function index 0b88e653f0..2d71828ebc 100644 --- a/tests/suites/test_suite_ecdh.function +++ b/tests/suites/test_suite_ecdh.function @@ -43,11 +43,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecdh_primitive_testvec( int id, uint8_t * rnd_buf_A, - uint32_t rnd_buf_A_len, char * xA_str, - char * yA_str, uint8_t * rnd_buf_B, - uint32_t rnd_buf_B_len, char * xB_str, - char * yB_str, char * z_str ) +void ecdh_primitive_testvec( int id, HexParam_t * rnd_buf_A, char * xA_str, + char * yA_str, HexParam_t * rnd_buf_B, + char * xB_str, char * yB_str, char * z_str ) { mbedtls_ecp_group grp; mbedtls_ecp_point qA, qB; @@ -61,36 +59,36 @@ void ecdh_primitive_testvec( int id, uint8_t * rnd_buf_A, TEST_ASSERT( mbedtls_ecp_group_load( &grp, id ) == 0 ); - rnd_info_A.buf = rnd_buf_A; - rnd_info_A.length = rnd_buf_A_len; + rnd_info_A.buf = rnd_buf_A->x; + rnd_info_A.length = rnd_buf_A->len; - /* Fix rnd_buf_A by shifting it left if necessary */ + /* Fix rnd_buf_A->x by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) { unsigned char shift = 8 - ( grp.nbits % 8 ); size_t i; for( i = 0; i < rnd_info_A.length - 1; i++ ) - rnd_buf_A[i] = rnd_buf_A[i] << shift - | rnd_buf_A[i+1] >> ( 8 - shift ); + rnd_buf_A->x[i] = rnd_buf_A->x[i] << shift + | rnd_buf_A->x[i+1] >> ( 8 - shift ); - rnd_buf_A[rnd_info_A.length-1] <<= shift; + rnd_buf_A->x[rnd_info_A.length-1] <<= shift; } - rnd_info_B.buf = rnd_buf_B; - rnd_info_B.length = rnd_buf_B_len; + rnd_info_B.buf = rnd_buf_B->x; + rnd_info_B.length = rnd_buf_B->len; - /* Fix rnd_buf_B by shifting it left if necessary */ + /* Fix rnd_buf_B->x by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) { unsigned char shift = 8 - ( grp.nbits % 8 ); size_t i; for( i = 0; i < rnd_info_B.length - 1; i++ ) - rnd_buf_B[i] = rnd_buf_B[i] << shift - | rnd_buf_B[i+1] >> ( 8 - shift ); + rnd_buf_B->x[i] = rnd_buf_B->x[i] << shift + | rnd_buf_B->x[i+1] >> ( 8 - shift ); - rnd_buf_B[rnd_info_B.length-1] <<= shift; + rnd_buf_B->x[rnd_info_B.length-1] <<= shift; } TEST_ASSERT( mbedtls_ecdh_gen_public( &grp, &dA, &qA, diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 5398ab5bef..65d497d531 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -41,9 +41,8 @@ exit: /* BEGIN_CASE */ void ecdsa_prim_test_vectors( int id, char * d_str, char * xQ_str, - char * yQ_str, uint8_t * rnd_buf, - uint32_t rnd_buf_len, uint8_t * hash, - uint32_t hlen, char * r_str, char * s_str, + char * yQ_str, HexParam_t * rnd_buf, + HexParam_t * hash, char * r_str, char * s_str, int result ) { mbedtls_ecp_group grp; @@ -61,22 +60,22 @@ void ecdsa_prim_test_vectors( int id, char * d_str, char * xQ_str, TEST_ASSERT( mbedtls_mpi_read_string( &d, 16, d_str ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &r_check, 16, r_str ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &s_check, 16, s_str ) == 0 ); - rnd_info.buf = rnd_buf; - rnd_info.length = rnd_buf_len; + rnd_info.buf = rnd_buf->x; + rnd_info.length = rnd_buf->len; - /* Fix rnd_buf by shifting it left if necessary */ + /* Fix rnd_buf->x by shifting it left if necessary */ if( grp.nbits % 8 != 0 ) { unsigned char shift = 8 - ( grp.nbits % 8 ); size_t i; for( i = 0; i < rnd_info.length - 1; i++ ) - rnd_buf[i] = rnd_buf[i] << shift | rnd_buf[i+1] >> ( 8 - shift ); + rnd_buf->x[i] = rnd_buf->x[i] << shift | rnd_buf->x[i+1] >> ( 8 - shift ); - rnd_buf[rnd_info.length-1] <<= shift; + rnd_buf->x[rnd_info.length-1] <<= shift; } - TEST_ASSERT( mbedtls_ecdsa_sign( &grp, &r, &s, &d, hash, hlen, + TEST_ASSERT( mbedtls_ecdsa_sign( &grp, &r, &s, &d, hash->x, hash->len, rnd_buffer_rand, &rnd_info ) == result ); if ( result == 0) @@ -84,7 +83,7 @@ void ecdsa_prim_test_vectors( int id, char * d_str, char * xQ_str, TEST_ASSERT( mbedtls_mpi_cmp_mpi( &r, &r_check ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &s, &s_check ) == 0 ); - TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash, hlen, &Q, &r_check, &s_check ) == 0 ); + TEST_ASSERT( mbedtls_ecdsa_verify( &grp, hash->x, hash->len, &Q, &r_check, &s_check ) == 0 ); } exit: diff --git a/tests/suites/test_suite_ecjpake.function b/tests/suites/test_suite_ecjpake.function index e108a89a72..2579704a75 100644 --- a/tests/suites/test_suite_ecjpake.function +++ b/tests/suites/test_suite_ecjpake.function @@ -106,48 +106,33 @@ void ecjpake_selftest( ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_one( int role, char * data, int ref_ret ) +void read_round_one( int role, HexParam_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; - const unsigned char * pw = NULL; const size_t pw_len = 0; - unsigned char *msg; - size_t len; - mbedtls_ecjpake_init( &ctx ); - msg = unhexify_alloc( data, &len ); - TEST_ASSERT( msg != NULL ); - TEST_ASSERT( mbedtls_ecjpake_setup( &ctx, role, MBEDTLS_MD_SHA256, MBEDTLS_ECP_DP_SECP256R1, pw, pw_len ) == 0 ); - TEST_ASSERT( mbedtls_ecjpake_read_round_one( &ctx, msg, len ) == ref_ret ); + TEST_ASSERT( mbedtls_ecjpake_read_round_one( &ctx, msg->x, msg->len ) == ref_ret ); exit: mbedtls_ecjpake_free( &ctx ); - mbedtls_free( msg ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_cli( char * data, int ref_ret ) +void read_round_two_cli( HexParam_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; - const unsigned char * pw = NULL; const size_t pw_len = 0; - unsigned char *msg; - size_t len; - mbedtls_ecjpake_init( &ctx ); - msg = unhexify_alloc( data, &len ); - TEST_ASSERT( msg != NULL ); - TEST_ASSERT( mbedtls_ecjpake_setup( &ctx, MBEDTLS_ECJPAKE_CLIENT, MBEDTLS_MD_SHA256, MBEDTLS_ECP_DP_SECP256R1, pw, pw_len ) == 0 ); @@ -157,30 +142,22 @@ void read_round_two_cli( char * data, int ref_ret ) ADD_SIZE( ecjpake_test_X3 ), ADD_SIZE( ecjpake_test_X4 ) ) == 0 ); - TEST_ASSERT( mbedtls_ecjpake_read_round_two( &ctx, msg, len ) == ref_ret ); + TEST_ASSERT( mbedtls_ecjpake_read_round_two( &ctx, msg->x, msg->len ) == ref_ret ); exit: mbedtls_ecjpake_free( &ctx ); - mbedtls_free( msg ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_srv( char * data, int ref_ret ) +void read_round_two_srv( HexParam_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; - const unsigned char * pw = NULL; const size_t pw_len = 0; - unsigned char *msg; - size_t len; - mbedtls_ecjpake_init( &ctx ); - msg = unhexify_alloc( data, &len ); - TEST_ASSERT( msg != NULL ); - TEST_ASSERT( mbedtls_ecjpake_setup( &ctx, MBEDTLS_ECJPAKE_SERVER, MBEDTLS_MD_SHA256, MBEDTLS_ECP_DP_SECP256R1, pw, pw_len ) == 0 ); @@ -190,10 +167,9 @@ void read_round_two_srv( char * data, int ref_ret ) ADD_SIZE( ecjpake_test_X1 ), ADD_SIZE( ecjpake_test_X2 ) ) == 0 ); - TEST_ASSERT( mbedtls_ecjpake_read_round_two( &ctx, msg, len ) == ref_ret ); + TEST_ASSERT( mbedtls_ecjpake_read_round_two( &ctx, msg->x, msg->len ) == ref_ret ); exit: mbedtls_ecjpake_free( &ctx ); - mbedtls_free( msg ); } /* END_CASE */ diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 8c8dac04a3..d5a092668f 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -193,7 +193,7 @@ exit: /* BEGIN_CASE */ void ecp_write_binary( int id, char * x, char * y, char * z, int format, - uint8_t * out, uint32_t out_len, int blen, int ret ) + HexParam_t * out, int blen, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; @@ -215,7 +215,7 @@ void ecp_write_binary( int id, char * x, char * y, char * z, int format, if( ret == 0 ) { - TEST_ASSERT( hexcmp( buf, out, olen, out_len ) == 0 ); + TEST_ASSERT( hexcmp( buf, out->x, olen, out->len ) == 0 ); } exit: @@ -224,8 +224,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_read_binary( int id, uint8_t * buf, uint32_t ilen, char * x, - char * y, char * z, int ret ) +void ecp_read_binary( int id, HexParam_t * buf, char * x, char * y, char * z, + int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; @@ -241,7 +241,7 @@ void ecp_read_binary( int id, uint8_t * buf, uint32_t ilen, char * x, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - TEST_ASSERT( mbedtls_ecp_point_read_binary( &grp, &P, buf, ilen ) == ret ); + TEST_ASSERT( mbedtls_ecp_point_read_binary( &grp, &P, buf->x, buf->len ) == ret ); if( ret == 0 ) { @@ -257,13 +257,13 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_point( int id, uint8_t * buf, uint32_t ilen, - char * x, char * y, char * z, int ret ) +void mbedtls_ecp_tls_read_point( int id, HexParam_t * buf, char * x, char * y, + char * z, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; mbedtls_mpi X, Y, Z; - const unsigned char *vbuf = buf; + const unsigned char *vbuf = buf->x; mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &P ); @@ -275,14 +275,14 @@ void mbedtls_ecp_tls_read_point( int id, uint8_t * buf, uint32_t ilen, TEST_ASSERT( mbedtls_mpi_read_string( &Y, 16, y ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &Z, 16, z ) == 0 ); - TEST_ASSERT( mbedtls_ecp_tls_read_point( &grp, &P, &vbuf, ilen ) == ret ); + TEST_ASSERT( mbedtls_ecp_tls_read_point( &grp, &P, &vbuf, buf->len ) == ret ); if( ret == 0 ) { TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.X, &X ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.Y, &Y ) == 0 ); TEST_ASSERT( mbedtls_mpi_cmp_mpi( &P.Z, &Z ) == 0 ); - TEST_ASSERT( vbuf - buf == ilen ); + TEST_ASSERT( (uint32_t)( vbuf - buf->x ) == buf->len ); } exit: @@ -344,22 +344,22 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_group( uint8_t * buf, uint32_t len, int result, - int bits, int record_len ) +void mbedtls_ecp_tls_read_group( HexParam_t * buf, int result, int bits, + int record_len ) { mbedtls_ecp_group grp; - const unsigned char *vbuf = buf; + const unsigned char *vbuf = buf->x; int ret; mbedtls_ecp_group_init( &grp ); - ret = mbedtls_ecp_tls_read_group( &grp, &vbuf, len ); + ret = mbedtls_ecp_tls_read_group( &grp, &vbuf, buf->len ); TEST_ASSERT( ret == result ); if( ret == 0) { TEST_ASSERT( mbedtls_mpi_bitlen( &grp.P ) == (size_t) bits ); - TEST_ASSERT( vbuf - buf == record_len); + TEST_ASSERT( vbuf - buf->x == record_len); } exit: diff --git a/tests/suites/test_suite_entropy.function b/tests/suites/test_suite_entropy.function index c34c1854ac..9b54f30275 100644 --- a/tests/suites/test_suite_entropy.function +++ b/tests/suites/test_suite_entropy.function @@ -302,7 +302,7 @@ void entropy_nv_seed_std_io( ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_PLATFORM_NV_SEED_ALT:MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */ -void entropy_nv_seed( uint8_t * read_seed, uint32_t read_seed_len ) +void entropy_nv_seed( HexParam_t * read_seed ) { mbedtls_sha512_context accumulator; mbedtls_entropy_context ctx; @@ -311,7 +311,7 @@ void entropy_nv_seed( uint8_t * read_seed, uint32_t read_seed_len ) unsigned char entropy[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char empty[MBEDTLS_ENTROPY_BLOCK_SIZE]; - unsigned char read_seed[MBEDTLS_ENTROPY_BLOCK_SIZE]; + unsigned char read_seed->x[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char check_seed[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char check_entropy[MBEDTLS_ENTROPY_BLOCK_SIZE]; @@ -323,7 +323,7 @@ void entropy_nv_seed( uint8_t * read_seed, uint32_t read_seed_len ) memset( check_entropy, 3, MBEDTLS_ENTROPY_BLOCK_SIZE ); // Set the initial NV seed to read - memcpy( buffer_seed, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ); + memcpy( buffer_seed, read_seed->x, MBEDTLS_ENTROPY_BLOCK_SIZE ); // Make sure we read/write NV seed from our buffers mbedtls_platform_set_nv_seed( buffer_nv_seed_read, buffer_nv_seed_write ); @@ -348,7 +348,7 @@ void entropy_nv_seed( uint8_t * read_seed, uint32_t read_seed_len ) // First run for updating write_seed header[0] = 0; mbedtls_sha512_update( &accumulator, header, 2 ); - mbedtls_sha512_update( &accumulator, read_seed, MBEDTLS_ENTROPY_BLOCK_SIZE ); + mbedtls_sha512_update( &accumulator, read_seed->x, MBEDTLS_ENTROPY_BLOCK_SIZE ); mbedtls_sha512_finish( &accumulator, buf ); memset( &accumulator, 0, sizeof( mbedtls_sha512_context ) ); diff --git a/tests/suites/test_suite_gcm.function b/tests/suites/test_suite_gcm.function index 17d79c579e..c0e799c196 100644 --- a/tests/suites/test_suite_gcm.function +++ b/tests/suites/test_suite_gcm.function @@ -51,14 +51,11 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_encrypt_and_tag( int cipher_id, uint8_t * key_str, uint32_t key_len, - uint8_t * src_str, uint32_t pt_len, - uint8_t * iv_str, uint32_t iv_len, - uint8_t * add_str, uint32_t add_len, - uint8_t * hex_dst_string, - uint32_t hex_dst_string_len, int tag_len_bits, - uint8_t * hex_tag_string, - uint32_t hex_tag_string_len, int init_result ) +void gcm_encrypt_and_tag( int cipher_id, HexParam_t * key_str, + HexParam_t * src_str, HexParam_t * iv_str, + HexParam_t * add_str, HexParam_t * hex_dst_string, + int tag_len_bits, HexParam_t * hex_tag_string, + int init_result ) { unsigned char output[128]; unsigned char tag_output[16]; @@ -71,13 +68,13 @@ void gcm_encrypt_and_tag( int cipher_id, uint8_t * key_str, uint32_t key_len, memset(tag_output, 0x00, 16); - TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str, key_len * 8 ) == init_result ); + TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str->x, key_str->len * 8 ) == init_result ); if( init_result == 0 ) { - TEST_ASSERT( mbedtls_gcm_crypt_and_tag( &ctx, MBEDTLS_GCM_ENCRYPT, pt_len, iv_str, iv_len, add_str, add_len, src_str, output, tag_len, tag_output ) == 0 ); + TEST_ASSERT( mbedtls_gcm_crypt_and_tag( &ctx, MBEDTLS_GCM_ENCRYPT, src_str->len, iv_str->x, iv_str->len, add_str->x, add_str->len, src_str->x, output, tag_len, tag_output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, pt_len, hex_dst_string_len ) == 0 ); - TEST_ASSERT( hexcmp( tag_output, hex_tag_string, tag_len, hex_tag_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); + TEST_ASSERT( hexcmp( tag_output, hex_tag_string->x, tag_len, hex_tag_string->len ) == 0 ); } exit: @@ -86,14 +83,11 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, - uint32_t key_len, uint8_t * src_str, - uint32_t pt_len, uint8_t * iv_str, - uint32_t iv_len, uint8_t * add_str, - uint32_t add_len, int tag_len_bits, - uint8_t * tag_str, uint32_t tag_str_len, - char * result, uint8_t * pt_result, - uint32_t pt_result_len, int init_result ) +void gcm_decrypt_and_verify( int cipher_id, HexParam_t * key_str, + HexParam_t * src_str, HexParam_t * iv_str, + HexParam_t * add_str, int tag_len_bits, + HexParam_t * tag_str, char * result, + HexParam_t * pt_result, int init_result ) { unsigned char output[128]; mbedtls_gcm_context ctx; @@ -105,10 +99,10 @@ void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, memset(output, 0x00, 128); - TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str, key_len * 8 ) == init_result ); + TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str->x, key_str->len * 8 ) == init_result ); if( init_result == 0 ) { - ret = mbedtls_gcm_auth_decrypt( &ctx, pt_len, iv_str, iv_len, add_str, add_len, tag_str, tag_len, src_str, output ); + ret = mbedtls_gcm_auth_decrypt( &ctx, src_str->len, iv_str->x, iv_str->len, add_str->x, add_str->len, tag_str->x, tag_len, src_str->x, output ); if( strcmp( "FAIL", result ) == 0 ) { @@ -118,7 +112,7 @@ void gcm_decrypt_and_verify( int cipher_id, uint8_t * key_str, { TEST_ASSERT( ret == 0 ); - TEST_ASSERT( hexcmp( output, pt_result, pt_len, pt_result_len ) == 0 ); + TEST_ASSERT( hexcmp( output, pt_result->x, src_str->len, pt_result->len ) == 0 ); } } diff --git a/tests/suites/test_suite_hmac_drbg.function b/tests/suites/test_suite_hmac_drbg.function index cf1f3683aa..aeea62c360 100644 --- a/tests/suites/test_suite_hmac_drbg.function +++ b/tests/suites/test_suite_hmac_drbg.function @@ -161,12 +161,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_no_reseed( int md_alg, uint8_t * entropy, - uint32_t entropy_len, uint8_t * custom, - uint32_t custom_len, uint8_t * add1, - uint32_t add1_len, uint8_t * add2, - uint32_t add2_len, uint8_t * output, - uint32_t out_len ) +void hmac_drbg_no_reseed( int md_alg, HexParam_t * entropy, + HexParam_t * custom, HexParam_t * add1, + HexParam_t * add2, HexParam_t * output ) { unsigned char data[1024]; unsigned char my_output[512]; @@ -176,35 +173,35 @@ void hmac_drbg_no_reseed( int md_alg, uint8_t * entropy, mbedtls_hmac_drbg_init( &ctx ); - p_entropy.p = entropy; - p_entropy.len = entropy_len; + p_entropy.p = entropy->x; + p_entropy.len = entropy->len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); /* Test the simplified buffer-based variant */ - memcpy( data, entropy, p_entropy.len ); - memcpy( data + p_entropy.len, custom, custom_len ); + memcpy( data, entropy->x, p_entropy.len ); + memcpy( data + p_entropy.len, custom->x, custom->len ); TEST_ASSERT( mbedtls_hmac_drbg_seed_buf( &ctx, md_info, - data, p_entropy.len + custom_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add2, add2_len ) == 0 ); + data, p_entropy.len + custom->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add2->x, add2->len ) == 0 ); /* clear for second run */ mbedtls_hmac_drbg_free( &ctx ); - TEST_ASSERT( memcmp( my_output, output, out_len ) == 0 ); + TEST_ASSERT( memcmp( my_output, output->x, output->len ) == 0 ); /* And now the normal entropy-based variant */ TEST_ASSERT( mbedtls_hmac_drbg_seed( &ctx, md_info, mbedtls_test_entropy_func, &p_entropy, - custom, custom_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add2, add2_len ) == 0 ); - TEST_ASSERT( memcmp( my_output, output, out_len ) == 0 ); + custom->x, custom->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add2->x, add2->len ) == 0 ); + TEST_ASSERT( memcmp( my_output, output->x, output->len ) == 0 ); exit: mbedtls_hmac_drbg_free( &ctx ); @@ -212,11 +209,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_nopr( int md_alg, uint8_t * entropy, uint32_t entropy_len, - uint8_t * custom, uint32_t custom_len, uint8_t * add1, - uint32_t add1_len, uint8_t * add2, uint32_t add2_len, - uint8_t * add3, uint32_t add3_len, uint8_t * output, - uint32_t out_len ) +void hmac_drbg_nopr( int md_alg, HexParam_t * entropy, HexParam_t * custom, + HexParam_t * add1, HexParam_t * add2, HexParam_t * add3, + HexParam_t * output ) { unsigned char my_output[512]; entropy_ctx p_entropy; @@ -225,21 +220,21 @@ void hmac_drbg_nopr( int md_alg, uint8_t * entropy, uint32_t entropy_len, mbedtls_hmac_drbg_init( &ctx ); - p_entropy.p = entropy; - p_entropy.len = entropy_len; + p_entropy.p = entropy->x; + p_entropy.len = entropy->len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); TEST_ASSERT( mbedtls_hmac_drbg_seed( &ctx, md_info, mbedtls_test_entropy_func, &p_entropy, - custom, custom_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_reseed( &ctx, add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add2, add2_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add3, add3_len ) == 0 ); + custom->x, custom->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_reseed( &ctx, add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add2->x, add2->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add3->x, add3->len ) == 0 ); - TEST_ASSERT( memcmp( my_output, output, out_len ) == 0 ); + TEST_ASSERT( memcmp( my_output, output->x, output->len ) == 0 ); exit: mbedtls_hmac_drbg_free( &ctx ); @@ -247,10 +242,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_pr( int md_alg, uint8_t * entropy, uint32_t entropy_len, - uint8_t * custom, uint32_t custom_len, uint8_t * add1, - uint32_t add1_len, uint8_t * add2, uint32_t add2_len, - uint8_t * output, uint32_t out_len ) +void hmac_drbg_pr( int md_alg, HexParam_t * entropy, HexParam_t * custom, + HexParam_t * add1, HexParam_t * add2, HexParam_t * output ) { unsigned char my_output[512]; entropy_ctx p_entropy; @@ -259,21 +252,21 @@ void hmac_drbg_pr( int md_alg, uint8_t * entropy, uint32_t entropy_len, mbedtls_hmac_drbg_init( &ctx ); - p_entropy.p = entropy; - p_entropy.len = entropy_len; + p_entropy.p = entropy->x; + p_entropy.len = entropy->len; md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); TEST_ASSERT( mbedtls_hmac_drbg_seed( &ctx, md_info, mbedtls_test_entropy_func, &p_entropy, - custom, custom_len ) == 0 ); + custom->x, custom->len ) == 0 ); mbedtls_hmac_drbg_set_prediction_resistance( &ctx, MBEDTLS_HMAC_DRBG_PR_ON ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add1, add1_len ) == 0 ); - TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, out_len, - add2, add2_len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add1->x, add1->len ) == 0 ); + TEST_ASSERT( mbedtls_hmac_drbg_random_with_add( &ctx, my_output, output->len, + add2->x, add2->len ) == 0 ); - TEST_ASSERT( memcmp( my_output, output, out_len ) == 0 ); + TEST_ASSERT( memcmp( my_output, output->x, output->len ) == 0 ); exit: mbedtls_hmac_drbg_free( &ctx ); diff --git a/tests/suites/test_suite_md.function b/tests/suites/test_suite_md.function index 23758ebdd8..07e2d58498 100644 --- a/tests/suites/test_suite_md.function +++ b/tests/suites/test_suite_md.function @@ -127,7 +127,7 @@ void md_info( int md_type, char * md_name, int md_size ) /* BEGIN_CASE */ void md_text( char * text_md_name, char * text_src_string, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char src_str[1000]; @@ -145,13 +145,13 @@ void md_text( char * text_md_name, char * text_src_string, TEST_ASSERT ( 0 == mbedtls_md( md_info, src_str, strlen( (char *) src_str ), output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void md_hex( char * text_md_name, uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void md_hex( char * text_md_name, HexParam_t * src_str, + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -164,17 +164,17 @@ void md_hex( char * text_md_name, uint8_t * src_str, uint32_t src_len, md_info = mbedtls_md_info_from_string( md_name ); TEST_ASSERT( md_info != NULL ); - TEST_ASSERT ( 0 == mbedtls_md( md_info, src_str, src_len, output ) ); + TEST_ASSERT ( 0 == mbedtls_md( md_info, src_str->x, src_str->len, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, - mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, + mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ void md_text_multi( char * text_md_name, char * text_src_string, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char src_str[1000]; @@ -208,15 +208,15 @@ void md_text_multi( char * text_md_name, char * text_src_string, TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str + halfway, len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, - mbedtls_md_get_size( md_info ), hex_hash_string_len) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, + mbedtls_md_get_size( md_info ), hex_hash_string->len) == 0 ); /* Test clone */ memset( output, 0x00, 100 ); TEST_ASSERT ( 0 == mbedtls_md_update( &ctx_copy, src_str + halfway, len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx_copy, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -225,8 +225,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void md_hex_multi( char * text_md_name, uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void md_hex_multi( char * text_md_name, HexParam_t * src_str, + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -246,23 +246,23 @@ void md_hex_multi( char * text_md_name, uint8_t * src_str, uint32_t src_len, TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx, md_info, 0 ) ); TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx_copy, md_info, 0 ) ); - halfway = src_len / 2; + halfway = src_str->len / 2; TEST_ASSERT ( 0 == mbedtls_md_starts( &ctx ) ); TEST_ASSERT ( ctx.md_ctx != NULL ); - TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str, halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str->x, halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_clone( &ctx_copy, &ctx ) ); - TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str + halfway, src_len - halfway) ); + TEST_ASSERT ( 0 == mbedtls_md_update( &ctx, src_str->x + halfway, src_str->len - halfway) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); /* Test clone */ memset( output, 0x00, 100 ); - TEST_ASSERT ( 0 == mbedtls_md_update( &ctx_copy, src_str + halfway, src_len - halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_update( &ctx_copy, src_str->x + halfway, src_str->len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_finish( &ctx_copy, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -271,9 +271,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_md_hmac( char * text_md_name, int trunc_size, uint8_t * key_str, - uint32_t key_len, uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void mbedtls_md_hmac( char * text_md_name, int trunc_size, + HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -287,16 +287,15 @@ void mbedtls_md_hmac( char * text_md_name, int trunc_size, uint8_t * key_str, TEST_ASSERT( md_info != NULL ); - TEST_ASSERT ( mbedtls_md_hmac( md_info, key_str, key_len, src_str, src_len, output ) == 0 ); + TEST_ASSERT ( mbedtls_md_hmac( md_info, key_str->x, key_str->len, src_str->x, src_str->len, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, trunc_size, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void md_hmac_multi( char * text_md_name, int trunc_size, uint8_t * key_str, - uint32_t key_len, uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void md_hmac_multi( char * text_md_name, int trunc_size, HexParam_t * key_str, + HexParam_t * src_str, HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -314,25 +313,25 @@ void md_hmac_multi( char * text_md_name, int trunc_size, uint8_t * key_str, TEST_ASSERT( md_info != NULL ); TEST_ASSERT ( 0 == mbedtls_md_setup( &ctx, md_info, 1 ) ); - halfway = src_len / 2; + halfway = src_str->len / 2; - TEST_ASSERT ( 0 == mbedtls_md_hmac_starts( &ctx, key_str, key_len ) ); + TEST_ASSERT ( 0 == mbedtls_md_hmac_starts( &ctx, key_str->x, key_str->len ) ); TEST_ASSERT ( ctx.md_ctx != NULL ); - TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str, halfway ) ); - TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str->x, halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str->x + halfway, src_str->len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, trunc_size, hex_hash_string->len ) == 0 ); /* Test again, for reset() */ memset( output, 0x00, 100 ); TEST_ASSERT ( 0 == mbedtls_md_hmac_reset( &ctx ) ); - TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str, halfway ) ); - TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str + halfway, src_len - halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str->x, halfway ) ); + TEST_ASSERT ( 0 == mbedtls_md_hmac_update( &ctx, src_str->x + halfway, src_str->len - halfway ) ); TEST_ASSERT ( 0 == mbedtls_md_hmac_finish( &ctx, output ) ); - TEST_ASSERT( hexcmp( output, hex_hash_string, trunc_size, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, trunc_size, hex_hash_string->len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -341,8 +340,7 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ void mbedtls_md_file( char * text_md_name, char * filename, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len - ) + HexParam_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -357,6 +355,6 @@ void mbedtls_md_file( char * text_md_name, char * filename, TEST_ASSERT( mbedtls_md_file( md_info, filename, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, mbedtls_md_get_size( md_info ), hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, mbedtls_md_get_size( md_info ), hex_hash_string->len ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_mdx.function b/tests/suites/test_suite_mdx.function index 7fe5e06f74..ddfe3697bc 100644 --- a/tests/suites/test_suite_mdx.function +++ b/tests/suites/test_suite_mdx.function @@ -6,8 +6,7 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_MD2_C */ -void md2_text( char * text_src_string, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void md2_text( char * text_src_string, HexParam_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -21,13 +20,12 @@ void md2_text( char * text_src_string, uint8_t * hex_hash_string, ret = mbedtls_md2_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ) ; - TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, sizeof output, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD4_C */ -void md4_text( char * text_src_string, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void md4_text( char * text_src_string, HexParam_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -41,13 +39,12 @@ void md4_text( char * text_src_string, uint8_t * hex_hash_string, ret = mbedtls_md4_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, sizeof output, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD5_C */ -void md5_text( char * text_src_string, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void md5_text( char * text_src_string, HexParam_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -61,13 +58,12 @@ void md5_text( char * text_src_string, uint8_t * hex_hash_string, ret = mbedtls_md5_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, sizeof output, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RIPEMD160_C */ -void ripemd160_text( char * text_src_string, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void ripemd160_text( char * text_src_string, HexParam_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -81,7 +77,7 @@ void ripemd160_text( char * text_src_string, uint8_t * hex_hash_string, ret = mbedtls_ripemd160_ret( src_str, strlen( (char *) src_str ), output ); TEST_ASSERT( ret == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, sizeof output, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, sizeof output, hex_hash_string->len ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function index da0d5e4150..4b7a048599 100644 --- a/tests/suites/test_suite_mpi.function +++ b/tests/suites/test_suite_mpi.function @@ -53,8 +53,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_read_binary( uint8_t * buf, uint32_t input_len, int radix_A, - char * input_A ) +void mbedtls_mpi_read_binary( HexParam_t * buf, int radix_A, char * input_A ) { mbedtls_mpi X; unsigned char str[1000]; @@ -63,7 +62,7 @@ void mbedtls_mpi_read_binary( uint8_t * buf, uint32_t input_len, int radix_A, mbedtls_mpi_init( &X ); - TEST_ASSERT( mbedtls_mpi_read_binary( &X, buf, input_len ) == 0 ); + TEST_ASSERT( mbedtls_mpi_read_binary( &X, buf->x, buf->len ) == 0 ); TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, (char *) str, sizeof( str ), &len ) == 0 ); TEST_ASSERT( strcmp( (char *) str, input_A ) == 0 ); @@ -73,8 +72,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_write_binary( int radix_X, char * input_X, uint8_t * input_A, - uint32_t input_A_len, int output_size, +void mbedtls_mpi_write_binary( int radix_X, char * input_X, + HexParam_t * input_A, int output_size, int result ) { mbedtls_mpi X; @@ -95,7 +94,7 @@ void mbedtls_mpi_write_binary( int radix_X, char * input_X, uint8_t * input_A, if( result == 0) { - TEST_ASSERT( hexcmp( buf, input_A, buflen, input_A_len ) == 0 ); + TEST_ASSERT( hexcmp( buf, input_A->x, buflen, input_A->len ) == 0 ); } exit: @@ -104,8 +103,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ -void mbedtls_mpi_read_file( int radix_X, char * input_file, uint8_t * input_A, - uint32_t input_A_len, int result ) +void mbedtls_mpi_read_file( int radix_X, char * input_file, + HexParam_t * input_A, int result ) { mbedtls_mpi X; unsigned char buf[1000]; @@ -129,7 +128,7 @@ void mbedtls_mpi_read_file( int radix_X, char * input_file, uint8_t * input_A, TEST_ASSERT( mbedtls_mpi_write_binary( &X, buf, buflen ) == 0 ); - TEST_ASSERT( hexcmp( buf, input_A, buflen, input_A_len ) == 0 ); + TEST_ASSERT( hexcmp( buf, input_A->x, buflen, input_A->len ) == 0 ); } exit: diff --git a/tests/suites/test_suite_pem.function b/tests/suites/test_suite_pem.function index 222d581c0a..dcd53d6537 100644 --- a/tests/suites/test_suite_pem.function +++ b/tests/suites/test_suite_pem.function @@ -6,21 +6,21 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ -void mbedtls_pem_write_buffer( char * start, char * end, uint8_t * buf, - uint32_t buf_len, char * result_str ) +void mbedtls_pem_write_buffer( char * start, char * end, HexParam_t * buf, + char * result_str ) { unsigned char *check_buf = NULL; int ret; size_t olen = 0, olen2 = 0; - ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, NULL, 0, &olen ); + ret = mbedtls_pem_write_buffer( start, end, buf->x, buf->len, NULL, 0, &olen ); TEST_ASSERT( ret == MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL ); check_buf = (unsigned char *) mbedtls_calloc( 1, olen ); TEST_ASSERT( check_buf != NULL ); - ret = mbedtls_pem_write_buffer( start, end, buf, buf_len, check_buf, olen, &olen2 ); + ret = mbedtls_pem_write_buffer( start, end, buf->x, buf->len, check_buf, olen, &olen2 ); TEST_ASSERT( olen2 <= olen ); TEST_ASSERT( olen > strlen( (char*) result_str ) ); diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 4219c9d8d3..23e3a69e2b 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -121,10 +121,9 @@ void mbedtls_pk_check_pair( char * pub_file, char * prv_file, int ret ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_test_vec( uint8_t * message_str, uint32_t msg_len, - int digest, int mod, int radix_N, char * input_N, - int radix_E, char * input_E, - uint8_t * result_str, uint32_t result_str_len, +void pk_rsa_verify_test_vec( HexParam_t * message_str, int digest, int mod, + int radix_N, char * input_N, int radix_E, + char * input_E, HexParam_t * result_str, int result ) { unsigned char hash_result[1000]; @@ -144,10 +143,10 @@ void pk_rsa_verify_test_vec( uint8_t * message_str, uint32_t msg_len, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); TEST_ASSERT( mbedtls_pk_verify( &pk, digest, hash_result, 0, - result_str, mbedtls_pk_get_len( &pk ) ) == result ); + result_str->x, mbedtls_pk_get_len( &pk ) ) == result ); exit: mbedtls_pk_free( &pk ); @@ -155,11 +154,10 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_ext_test_vec( uint8_t * message_str, uint32_t msg_len, - int digest, int mod, int radix_N, - char * input_N, int radix_E, char * input_E, - uint8_t * result_str, - uint32_t result_str_len, int pk_type, +void pk_rsa_verify_ext_test_vec( HexParam_t * message_str, int digest, + int mod, int radix_N, char * input_N, + int radix_E, char * input_E, + HexParam_t * result_str, int pk_type, int mgf1_hash_id, int salt_len, int result ) { unsigned char hash_result[1000]; @@ -184,13 +182,13 @@ void pk_rsa_verify_ext_test_vec( uint8_t * message_str, uint32_t msg_len, if( digest != MBEDTLS_MD_NONE ) { TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), - message_str, msg_len, hash_result ) == 0 ); + message_str->x, message_str->len, hash_result ) == 0 ); hash_len = 0; } else { - memcpy( hash_result, message_str, msg_len ); - hash_len = msg_len; + memcpy( hash_result, message_str->x, message_str->len ); + hash_len = message_str->len; } if( mgf1_hash_id < 0 ) @@ -207,7 +205,7 @@ void pk_rsa_verify_ext_test_vec( uint8_t * message_str, uint32_t msg_len, TEST_ASSERT( mbedtls_pk_verify_ext( pk_type, options, &pk, digest, hash_result, hash_len, - result_str, mbedtls_pk_get_len( &pk ) ) == result ); + result_str->x, mbedtls_pk_get_len( &pk ) ) == result ); exit: mbedtls_pk_free( &pk ); @@ -215,9 +213,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECDSA_C */ -void pk_ec_test_vec( int type, int id, uint8_t * key, uint32_t key_len, - uint8_t * hash, uint32_t hash_len, uint8_t * sig, - uint32_t sig_len, int ret ) +void pk_ec_test_vec( int type, int id, HexParam_t * key, HexParam_t * hash, + HexParam_t * sig, int ret ) { mbedtls_pk_context pk; mbedtls_ecp_keypair *eckey; @@ -232,10 +229,10 @@ void pk_ec_test_vec( int type, int id, uint8_t * key, uint32_t key_len, TEST_ASSERT( mbedtls_ecp_group_load( &eckey->grp, id ) == 0 ); TEST_ASSERT( mbedtls_ecp_point_read_binary( &eckey->grp, &eckey->Q, - key, key_len ) == 0 ); + key->x, key->len ) == 0 ); TEST_ASSERT( mbedtls_pk_verify( &pk, MBEDTLS_MD_NONE, - hash, hash_len, sig, sig_len ) == ret ); + hash->x, hash->len, sig->x, sig->len ) == ret ); exit: mbedtls_pk_free( &pk ); @@ -269,10 +266,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_encrypt_test_vec( uint8_t * message, uint32_t msg_len, int mod, - int radix_N, char * input_N, int radix_E, - char * input_E, uint8_t * result, - uint32_t res_len, int ret ) +void pk_rsa_encrypt_test_vec( HexParam_t * message, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + HexParam_t * result, int ret ) { unsigned char output[1000]; rnd_pseudo_info rnd_info; @@ -292,11 +288,11 @@ void pk_rsa_encrypt_test_vec( uint8_t * message, uint32_t msg_len, int mod, TEST_ASSERT( mbedtls_mpi_read_string( &rsa->N, radix_N, input_N ) == 0 ); TEST_ASSERT( mbedtls_mpi_read_string( &rsa->E, radix_E, input_E ) == 0 ); - TEST_ASSERT( mbedtls_pk_encrypt( &pk, message, msg_len, + TEST_ASSERT( mbedtls_pk_encrypt( &pk, message->x, message->len, output, &olen, sizeof( output ), rnd_pseudo_rand, &rnd_info ) == ret ); - TEST_ASSERT( olen == res_len ); - TEST_ASSERT( memcmp( output, result, olen ) == 0 ); + TEST_ASSERT( olen == result->len ); + TEST_ASSERT( memcmp( output, result->x, olen ) == 0 ); exit: mbedtls_pk_free( &pk ); @@ -304,11 +300,10 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_decrypt_test_vec( uint8_t * cipher, uint32_t cipher_len, int mod, - int radix_P, char * input_P, int radix_Q, - char * input_Q, int radix_N, char * input_N, - int radix_E, char * input_E, uint8_t * clear, - uint32_t clear_len, int ret ) +void pk_rsa_decrypt_test_vec( HexParam_t * cipher, int mod, int radix_P, + char * input_P, int radix_Q, char * input_Q, + int radix_N, char * input_N, int radix_E, + char * input_E, HexParam_t * clear, int ret ) { unsigned char output[1000]; rnd_pseudo_info rnd_info; @@ -342,13 +337,13 @@ void pk_rsa_decrypt_test_vec( uint8_t * cipher, uint32_t cipher_len, int mod, /* decryption test */ memset( output, 0, sizeof( output ) ); olen = 0; - TEST_ASSERT( mbedtls_pk_decrypt( &pk, cipher, cipher_len, + TEST_ASSERT( mbedtls_pk_decrypt( &pk, cipher->x, cipher->len, output, &olen, sizeof( output ), rnd_pseudo_rand, &rnd_info ) == ret ); if( ret == 0 ) { - TEST_ASSERT( olen == clear_len ); - TEST_ASSERT( memcmp( output, clear, olen ) == 0 ); + TEST_ASSERT( olen == clear->len ); + TEST_ASSERT( memcmp( output, clear->x, olen ) == 0 ); } exit: diff --git a/tests/suites/test_suite_pkcs1_v15.function b/tests/suites/test_suite_pkcs1_v15.function index 7b57bee535..9cf3b1934f 100644 --- a/tests/suites/test_suite_pkcs1_v15.function +++ b/tests/suites/test_suite_pkcs1_v15.function @@ -11,18 +11,16 @@ /* BEGIN_CASE */ void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int hash, - uint8_t * message_str, uint32_t msg_len, - uint8_t * rnd_buf, uint32_t rnd_buf_len, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) + HexParam_t * message_str, HexParam_t * rnd_buf, + HexParam_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; rnd_buf_info info; mbedtls_mpi N, E; - info.buf = rnd_buf; - info.length = rnd_buf_len; + info.buf = rnd_buf->x; + info.length = rnd_buf->len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V15, hash ); @@ -35,11 +33,11 @@ void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char * input_N, TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, message_str->len, message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -52,8 +50,8 @@ exit: void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int hash, uint8_t * result_hex_str, uint32_t result_hex_str_len, - char * seed, uint8_t * message_str, uint32_t message_str_len, + int hash, HexParam_t * result_hex_str, + char * seed, HexParam_t * message_str, int result ) { unsigned char output[1000]; @@ -81,11 +79,11 @@ void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char * input_P, TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, 1000 ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str->x, output, 1000 ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, output_len, result_hex_str->len) == 0 ); } exit: @@ -99,10 +97,8 @@ exit: void pkcs1_rsassa_v15_sign( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, int digest, int hash, - uint8_t * message_str, uint32_t msg_len, - uint8_t * rnd_buf, uint32_t rnd_buf_len, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) + HexParam_t * message_str, HexParam_t * rnd_buf, + HexParam_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -110,8 +106,8 @@ void pkcs1_rsassa_v15_sign( int mod, int radix_P, char * input_P, int radix_Q, mbedtls_mpi N, P, Q, E; rnd_buf_info info; - info.buf = rnd_buf; - info.length = rnd_buf_len; + info.buf = rnd_buf->x; + info.length = rnd_buf->len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); @@ -132,13 +128,13 @@ void pkcs1_rsassa_v15_sign( int mod, int radix_P, char * input_P, int radix_Q, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PRIVATE, digest, 0, hash_result, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -151,10 +147,8 @@ exit: /* BEGIN_CASE */ void pkcs1_rsassa_v15_verify( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int digest, - int hash, uint8_t * message_str, - uint32_t msg_len, char * salt, - uint8_t * result_str, uint32_t result_str_len, - int result ) + int hash, HexParam_t * message_str, char * salt, + HexParam_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; @@ -173,12 +167,9 @@ void pkcs1_rsassa_v15_verify( int mod, int radix_N, char * input_N, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), - message_str, msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, - digest, 0, hash_result, - result_str ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, digest, 0, hash_result, result_str->x ) == result ); exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E ); diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function index 4ebeca9270..dd408863f2 100644 --- a/tests/suites/test_suite_pkcs1_v21.function +++ b/tests/suites/test_suite_pkcs1_v21.function @@ -11,18 +11,16 @@ /* BEGIN_CASE */ void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int hash, - uint8_t * message_str, uint32_t msg_len, - uint8_t * rnd_buf, uint32_t rnd_buf_len, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) + HexParam_t * message_str, HexParam_t * rnd_buf, + HexParam_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; rnd_buf_info info; mbedtls_mpi N, E; - info.buf = rnd_buf; - info.length = rnd_buf_len; + info.buf = rnd_buf->x; + info.length = rnd_buf->len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &E ); mbedtls_rsa_init( &ctx, MBEDTLS_RSA_PKCS_V21, hash ); @@ -35,11 +33,11 @@ void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char * input_N, TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, msg_len, message_str, output ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PUBLIC, message_str->len, message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -52,10 +50,9 @@ exit: void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int hash, uint8_t * result_hex_str, - uint32_t result_hex_str_len, char * seed, - uint8_t * message_str, - uint32_t message_str_len, int result ) + int hash, HexParam_t * result_hex_str, + char * seed, HexParam_t * message_str, + int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -83,11 +80,11 @@ void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char * input_P, TEST_ASSERT( mbedtls_rsa_check_privkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, 1000 ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str->x, output, 1000 ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, output_len, result_hex_str->len ) == 0 ); } exit: @@ -101,10 +98,8 @@ exit: void pkcs1_rsassa_pss_sign( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, int digest, int hash, - uint8_t * message_str, uint32_t msg_len, - uint8_t * rnd_buf, uint32_t rnd_buf_len, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) + HexParam_t * message_str, HexParam_t * rnd_buf, + HexParam_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -112,8 +107,8 @@ void pkcs1_rsassa_pss_sign( int mod, int radix_P, char * input_P, int radix_Q, rnd_buf_info info; mbedtls_mpi N, P, Q, E; - info.buf = rnd_buf; - info.length = rnd_buf_len; + info.buf = rnd_buf->x; + info.length = rnd_buf->len; mbedtls_mpi_init( &N ); mbedtls_mpi_init( &P ); mbedtls_mpi_init( &Q ); mbedtls_mpi_init( &E ); @@ -134,15 +129,14 @@ void pkcs1_rsassa_pss_sign( int mod, int radix_P, char * input_P, int radix_Q, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, - msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_buffer_rand, &info, MBEDTLS_RSA_PRIVATE, digest, 0, hash_result, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -155,10 +149,8 @@ exit: /* BEGIN_CASE */ void pkcs1_rsassa_pss_verify( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int digest, - int hash, uint8_t * message_str, - uint32_t msg_len, char * salt, - uint8_t * result_str, uint32_t result_str_len, - int result ) + int hash, HexParam_t * message_str, char * salt, + HexParam_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; @@ -178,11 +170,9 @@ void pkcs1_rsassa_pss_verify( int mod, int radix_N, char * input_N, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, - msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, - digest, 0, hash_result, result_str ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, digest, 0, hash_result, result_str->x ) == result ); exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E ); @@ -195,9 +185,8 @@ void pkcs1_rsassa_pss_verify_ext( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int msg_digest_id, int ctx_hash, int mgf_hash, int salt_len, - uint8_t * message_str, uint32_t msg_len, - uint8_t * result_str, - uint32_t result_str_len, int result_simple, + HexParam_t * message_str, + HexParam_t * result_str, int result_simple, int result_full ) { unsigned char hash_result[1000]; @@ -220,23 +209,23 @@ void pkcs1_rsassa_pss_verify_ext( int mod, int radix_N, char * input_N, if( msg_digest_id != MBEDTLS_MD_NONE ) { TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( msg_digest_id ), - message_str, msg_len, hash_result ) == 0 ); + message_str->x, message_str->len, hash_result ) == 0 ); hash_len = 0; } else { - memcpy( hash_result, message_str, msg_len ); - hash_len = msg_len; + memcpy( hash_result, message_str->x, message_str->len ); + hash_len = message_str->len; } TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, msg_digest_id, hash_len, hash_result, - result_str ) == result_simple ); + result_str->x ) == result_simple ); TEST_ASSERT( mbedtls_rsa_rsassa_pss_verify_ext( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, msg_digest_id, hash_len, hash_result, mgf_hash, salt_len, - result_str ) == result_full ); + result_str->x ) == result_full ); exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E ); diff --git a/tests/suites/test_suite_pkcs5.function b/tests/suites/test_suite_pkcs5.function index 29e87cbfe2..0dcbb0a467 100644 --- a/tests/suites/test_suite_pkcs5.function +++ b/tests/suites/test_suite_pkcs5.function @@ -8,10 +8,8 @@ */ /* BEGIN_CASE */ -void pbkdf2_hmac( int hash, uint8_t * pw_str, uint32_t pw_len, - uint8_t * salt_str, uint32_t salt_len, int it_cnt, - int key_len, uint8_t * result_key_string, - uint32_t result_key_string_len ) +void pbkdf2_hmac( int hash, HexParam_t * pw_str, HexParam_t * salt_str, + int it_cnt, int key_len, HexParam_t * result_key_string ) { mbedtls_md_context_t ctx; const mbedtls_md_info_t *info; @@ -23,10 +21,10 @@ void pbkdf2_hmac( int hash, uint8_t * pw_str, uint32_t pw_len, info = mbedtls_md_info_from_type( hash ); TEST_ASSERT( info != NULL ); TEST_ASSERT( mbedtls_md_setup( &ctx, info, 1 ) == 0 ); - TEST_ASSERT( mbedtls_pkcs5_pbkdf2_hmac( &ctx, pw_str, pw_len, salt_str, salt_len, + TEST_ASSERT( mbedtls_pkcs5_pbkdf2_hmac( &ctx, pw_str->x, pw_str->len, salt_str->x, salt_str->len, it_cnt, key_len, key ) == 0 ); - TEST_ASSERT( hexcmp( key, result_key_string, key_len, result_key_string_len ) == 0 ); + TEST_ASSERT( hexcmp( key, result_key_string->x, key_len, result_key_string->len ) == 0 ); exit: mbedtls_md_free( &ctx ); @@ -34,34 +32,27 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C */ -void mbedtls_pkcs5_pbes2( int params_tag, char *params_hex, char *pw_hex, - char *data_hex, int ref_ret, char *ref_out_hex ) +void mbedtls_pkcs5_pbes2( int params_tag, HexParam_t *params_hex, HexParam_t *pw, + HexParam_t *data, int ref_ret, HexParam_t *ref_out ) { int my_ret; mbedtls_asn1_buf params; - unsigned char *my_out = NULL, *ref_out = NULL, *data = NULL, *pw = NULL; - size_t ref_out_len, data_len, pw_len; + unsigned char *my_out = NULL; params.tag = params_tag; - params.p = unhexify_alloc( params_hex, ¶ms.len ); + params.p = params_hex->x; + params.len = params_hex->len; - data = unhexify_alloc( data_hex, &data_len ); - pw = unhexify_alloc( pw_hex, &pw_len ); - ref_out = unhexify_alloc( ref_out_hex, &ref_out_len ); - my_out = zero_alloc( ref_out_len ); + my_out = zero_alloc( ref_out->len ); my_ret = mbedtls_pkcs5_pbes2( ¶ms, MBEDTLS_PKCS5_DECRYPT, - pw, pw_len, data, data_len, my_out ); + pw->x, pw->len, data->x, data->len, my_out ); TEST_ASSERT( my_ret == ref_ret ); if( ref_ret == 0 ) - TEST_ASSERT( memcmp( my_out, ref_out, ref_out_len ) == 0 ); + TEST_ASSERT( memcmp( my_out, ref_out->x, ref_out->len ) == 0 ); exit: - mbedtls_free( params.p ); - mbedtls_free( data ); - mbedtls_free( pw ); - mbedtls_free( ref_out ); mbedtls_free( my_out ); } /* END_CASE */ diff --git a/tests/suites/test_suite_pkparse.function b/tests/suites/test_suite_pkparse.function index 8607305690..920f9369b5 100644 --- a/tests/suites/test_suite_pkparse.function +++ b/tests/suites/test_suite_pkparse.function @@ -114,8 +114,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_parse_key( uint8_t * buf, uint32_t data_len, char * result_str, - int result ) +void pk_parse_key( HexParam_t * buf, char * result_str, int result ) { mbedtls_pk_context pk; unsigned char output[2000]; @@ -126,7 +125,7 @@ void pk_parse_key( uint8_t * buf, uint32_t data_len, char * result_str, memset( output, 0, 2000 ); - TEST_ASSERT( mbedtls_pk_parse_key( &pk, buf, data_len, NULL, 0 ) == ( result ) ); + TEST_ASSERT( mbedtls_pk_parse_key( &pk, buf->x, buf->len, NULL, 0 ) == ( result ) ); if( ( result ) == 0 ) { TEST_ASSERT( 1 ); diff --git a/tests/suites/test_suite_rsa.data b/tests/suites/test_suite_rsa.data index bfaae6c651..e495151656 100644 --- a/tests/suites/test_suite_rsa.data +++ b/tests/suites/test_suite_rsa.data @@ -237,15 +237,15 @@ mbedtls_rsa_pkcs1_verify:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e9 RSA PKCS1 Sign #8 (RAW, 2048 bits RSA) depends_on:MBEDTLS_PKCS1_V15 -rsa_pkcs1_sign_raw:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f870":"1234567890deadbeef":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8" +rsa_pkcs1_sign_raw:"1234567890deadbeef":MBEDTLS_RSA_PKCS_V15:2048:16:"e79a373182bfaa722eb035f772ad2a9464bd842de59432c18bbab3a7dfeae318c9b915ee487861ab665a40bd6cda560152578e8579016c929df99fea05b4d64efca1d543850bc8164b40d71ed7f3fa4105df0fb9b9ad2a18ce182c8a4f4f975bea9aa0b9a1438a27a28e97ac8330ef37383414d1bd64607d6979ac050424fd17":16:"c6749cbb0db8c5a177672d4728a8b22392b2fc4d3b8361d5c0d5055a1b4e46d821f757c24eef2a51c561941b93b3ace7340074c058c9bb48e7e7414f42c41da4cccb5c2ba91deb30c586b7fb18af12a52995592ad139d3be429add6547e044becedaf31fa3b39421e24ee034fbf367d11f6b8f88ee483d163b431e1654ad3e89":16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8" RSA PKCS1 Sign #8 Verify depends_on:MBEDTLS_PKCS1_V15 -rsa_pkcs1_verify_raw:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f870":"1234567890deadbeef":MBEDTLS_RSA_PKCS_V15:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":0 +rsa_pkcs1_verify_raw:"1234567890deadbeef":MBEDTLS_RSA_PKCS_V15:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":0 RSA PKCS1 Sign #8 Verify (Wrong raw hash) depends_on:MBEDTLS_PKCS1_V15 -rsa_pkcs1_verify_raw:"59779fd2a39e56640c4fc1e67b60aeffcecd78aed7ad2bdfa464e93d04198d48466b8da7445f25bfa19db2844edd5c8f539cf772cc132b483169d390db28a43bc4ee0f038f6568ffc87447746cb72fefac2d6d90ee3143a915ac4688028805905a68eb8f8a96674b093c495eddd8704461eaa2b345efbb2ad6930acd8023f870":"1234567890deadcafe":MBEDTLS_RSA_PKCS_V15:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":MBEDTLS_ERR_RSA_VERIFY_FAILED +rsa_pkcs1_verify_raw:"1234567890deadcafe":MBEDTLS_RSA_PKCS_V15:2048:16:"b38ac65c8141f7f5c96e14470e851936a67bf94cc6821a39ac12c05f7c0b06d9e6ddba2224703b02e25f31452f9c4a8417b62675fdc6df46b94813bc7b9769a892c482b830bfe0ad42e46668ace68903617faf6681f4babf1cc8e4b0420d3c7f61dc45434c6b54e2c3ee0fc07908509d79c9826e673bf8363255adb0add2401039a7bcd1b4ecf0fbe6ec8369d2da486eec59559dd1d54c9b24190965eafbdab203b35255765261cd0909acf93c3b8b8428cbb448de4715d1b813d0c94829c229543d391ce0adab5351f97a3810c1f73d7b1458b97daed4209c50e16d064d2d5bfda8c23893d755222793146d0a78c3d64f35549141486c3b0961a7b4c1a2034f":16:"3":"605baf947c0de49e4f6a0dfb94a43ae318d5df8ed20ba4ba5a37a73fb009c5c9e5cce8b70a25b1c7580f389f0d7092485cdfa02208b70d33482edf07a7eafebdc54862ca0e0396a5a7d09991b9753eb1ffb6091971bb5789c6b121abbcd0a3cbaa39969fa7c28146fce96c6d03272e3793e5be8f5abfa9afcbebb986d7b3050604a2af4d3a40fa6c003781a539a60259d1e84f13322da9e538a49c369b83e7286bf7d30b64bbb773506705da5d5d5483a563a1ffacc902fb75c9a751b1e83cdc7a6db0470056883f48b5a5446b43b1d180ea12ba11a6a8d93b3b32a30156b6084b7fb142998a2a0d28014b84098ece7d9d5e4d55cc342ca26f5a0167a679dec8":MBEDTLS_ERR_RSA_VERIFY_FAILED RSA PKCS1 Sign #9 (Invalid Digest type) depends_on:MBEDTLS_PKCS1_V15 diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index 8c9e8fde62..83f735321a 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -18,13 +18,11 @@ */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_sign( uint8_t * message_str, uint32_t msg_len, - int padding_mode, int digest, int mod, - int radix_P, char * input_P, int radix_Q, - char * input_Q, int radix_N, char * input_N, - int radix_E, char * input_E, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) +void mbedtls_rsa_pkcs1_sign( HexParam_t * message_str, int padding_mode, + int digest, int mod, int radix_P, char * input_P, + int radix_Q, char * input_Q, int radix_N, + char * input_N, int radix_E, char * input_E, + HexParam_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -52,8 +50,7 @@ void mbedtls_rsa_pkcs1_sign( uint8_t * message_str, uint32_t msg_len, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), - message_str, msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, digest, 0, @@ -61,7 +58,7 @@ void mbedtls_rsa_pkcs1_sign( uint8_t * message_str, uint32_t msg_len, if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -72,11 +69,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_verify( uint8_t * message_str, uint32_t msg_len, - int padding_mode, int digest, int mod, - int radix_N, char * input_N, int radix_E, - char * input_E, uint8_t * result_str, - uint32_t result_str_len, int result ) +void mbedtls_rsa_pkcs1_verify( HexParam_t * message_str, int padding_mode, + int digest, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + HexParam_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; @@ -95,9 +91,9 @@ void mbedtls_rsa_pkcs1_verify( uint8_t * message_str, uint32_t msg_len, if( mbedtls_md_info_from_type( digest ) != NULL ) - TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str, msg_len, hash_result ) == 0 ); + TEST_ASSERT( mbedtls_md( mbedtls_md_info_from_type( digest ), message_str->x, message_str->len, hash_result ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, digest, 0, hash_result, result_str ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, digest, 0, hash_result, result_str->x ) == result ); exit: mbedtls_mpi_free( &N ); mbedtls_mpi_free( &E ); @@ -107,13 +103,11 @@ exit: /* BEGIN_CASE */ -void rsa_pkcs1_sign_raw( uint8_t * message_str, uint32_t message_str_len, - uint8_t * hash_result, uint32_t hash_len, +void rsa_pkcs1_sign_raw( HexParam_t * hash_result, int padding_mode, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, - char * input_E, uint8_t * result_hex_str, - uint32_t result_hex_str_len ) + char * input_E, HexParam_t * result_hex_str ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -140,10 +134,11 @@ void rsa_pkcs1_sign_raw( uint8_t * message_str, uint32_t message_str_len, TEST_ASSERT( mbedtls_rsa_pkcs1_sign( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, MBEDTLS_MD_NONE, - hash_len, hash_result, output ) == 0 ); + hash_result->len, hash_result->x, + output ) == 0 ); - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); #if defined(MBEDTLS_PKCS1_V15) /* For PKCS#1 v1.5, there is an alternative way to generate signatures */ @@ -154,7 +149,7 @@ void rsa_pkcs1_sign_raw( uint8_t * message_str, uint32_t message_str_len, res = mbedtls_rsa_rsaes_pkcs1_v15_encrypt( &ctx, &rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, - hash_len, hash_result, output ); + hash_result->len, hash_result->x, output ); #if !defined(MBEDTLS_RSA_ALT) TEST_ASSERT( res == 0 ); @@ -165,7 +160,7 @@ void rsa_pkcs1_sign_raw( uint8_t * message_str, uint32_t message_str_len, if( res == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } } #endif /* MBEDTLS_PKCS1_V15 */ @@ -179,12 +174,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_verify_raw( uint8_t * message_str, uint32_t message_str_len, - uint8_t * hash_result, uint32_t hash_len, +void rsa_pkcs1_verify_raw( HexParam_t * hash_result, int padding_mode, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - uint8_t * result_str, uint32_t result_str_len, - int correct ) + HexParam_t * result_str, int correct ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -203,10 +196,7 @@ void rsa_pkcs1_verify_raw( uint8_t * message_str, uint32_t message_str_len, TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, - MBEDTLS_RSA_PUBLIC, MBEDTLS_MD_NONE, - hash_len, hash_result, - result_str ) == correct ); + TEST_ASSERT( mbedtls_rsa_pkcs1_verify( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, MBEDTLS_MD_NONE, hash_result->len, hash_result->x, result_str->x ) == correct ); #if defined(MBEDTLS_PKCS1_V15) /* For PKCS#1 v1.5, there is an alternative way to verify signatures */ @@ -218,7 +208,7 @@ void rsa_pkcs1_verify_raw( uint8_t * message_str, uint32_t message_str_len, res = mbedtls_rsa_rsaes_pkcs1_v15_decrypt( &ctx, NULL, NULL, MBEDTLS_RSA_PUBLIC, - &olen, result_str, output, sizeof( output ) ); + &olen, result_str->x, output, sizeof( output ) ); #if !defined(MBEDTLS_RSA_ALT) TEST_ASSERT( res == 0 ); @@ -229,7 +219,7 @@ void rsa_pkcs1_verify_raw( uint8_t * message_str, uint32_t message_str_len, if( res == 0 ) { - ok = olen == hash_len && memcmp( output, hash_result, olen ) == 0; + ok = olen == hash_result->len && memcmp( output, hash_result->x, olen ) == 0; if( correct == 0 ) TEST_ASSERT( ok == 1 ); else @@ -245,11 +235,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_encrypt( uint8_t * message_str, uint32_t msg_len, - int padding_mode, int mod, int radix_N, - char * input_N, int radix_E, char * input_E, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) +void mbedtls_rsa_pkcs1_encrypt( HexParam_t * message_str, int padding_mode, + int mod, int radix_N, char * input_N, + int radix_E, char * input_E, + HexParam_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -272,12 +261,12 @@ void mbedtls_rsa_pkcs1_encrypt( uint8_t * message_str, uint32_t msg_len, TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_pseudo_rand, &rnd_info, - MBEDTLS_RSA_PUBLIC, msg_len, - message_str, output ) == result ); + MBEDTLS_RSA_PUBLIC, message_str->len, + message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -287,11 +276,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_encrypt_bad_rng( uint8_t * message_str, uint32_t msg_len, - int padding_mode, int mod, int radix_N, - char * input_N, int radix_E, char * input_E, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) +void rsa_pkcs1_encrypt_bad_rng( HexParam_t * message_str, int padding_mode, + int mod, int radix_N, char * input_N, + int radix_E, char * input_E, + HexParam_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -311,12 +299,12 @@ void rsa_pkcs1_encrypt_bad_rng( uint8_t * message_str, uint32_t msg_len, TEST_ASSERT( mbedtls_rsa_pkcs1_encrypt( &ctx, &rnd_zero_rand, NULL, - MBEDTLS_RSA_PUBLIC, msg_len, - message_str, output ) == result ); + MBEDTLS_RSA_PUBLIC, message_str->len, + message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, output_len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -326,13 +314,12 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_decrypt( uint8_t * message_str, - uint32_t message_str_len, int padding_mode, +void mbedtls_rsa_pkcs1_decrypt( HexParam_t * message_str, int padding_mode, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int max_output, uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) + int max_output, HexParam_t * result_hex_str, + int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -361,11 +348,11 @@ void mbedtls_rsa_pkcs1_decrypt( uint8_t * message_str, output_len = 0; - TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str, output, max_output ) == result ); + TEST_ASSERT( mbedtls_rsa_pkcs1_decrypt( &ctx, rnd_pseudo_rand, &rnd_info, MBEDTLS_RSA_PRIVATE, &output_len, message_str->x, output, max_output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, output_len, result_hex_str->len ) == 0 ); } exit: @@ -376,10 +363,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, - int mod, int radix_N, char * input_N, int radix_E, - char * input_E, uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) +void mbedtls_rsa_public( HexParam_t * message_str, int mod, int radix_N, + char * input_N, int radix_E, char * input_E, + HexParam_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */ @@ -399,11 +385,11 @@ void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx ) == 0 ); - TEST_ASSERT( mbedtls_rsa_public( &ctx, message_str, output ) == result ); + TEST_ASSERT( mbedtls_rsa_public( &ctx, message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } /* And now with the copy */ @@ -414,11 +400,11 @@ void mbedtls_rsa_public( uint8_t * message_str, uint32_t message_str_len, TEST_ASSERT( mbedtls_rsa_check_pubkey( &ctx2 ) == 0 ); memset( output, 0x00, 1000 ); - TEST_ASSERT( mbedtls_rsa_public( &ctx2, message_str, output ) == result ); + TEST_ASSERT( mbedtls_rsa_public( &ctx2, message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } exit: @@ -429,12 +415,11 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_private( uint8_t * message_str, uint32_t message_str_len, - int mod, int radix_P, char * input_P, int radix_Q, - char * input_Q, int radix_N, char * input_N, - int radix_E, char * input_E, - uint8_t * result_hex_str, - uint32_t result_hex_str_len, int result ) +void mbedtls_rsa_private( HexParam_t * message_str, int mod, int radix_P, + char * input_P, int radix_Q, char * input_Q, + int radix_N, char * input_N, int radix_E, + char * input_E, HexParam_t * result_hex_str, + int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */ @@ -465,11 +450,11 @@ void mbedtls_rsa_private( uint8_t * message_str, uint32_t message_str_len, { memset( output, 0x00, 1000 ); TEST_ASSERT( mbedtls_rsa_private( &ctx, rnd_pseudo_rand, &rnd_info, - message_str, output ) == result ); + message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx.len, result_hex_str->len ) == 0 ); } } @@ -482,11 +467,11 @@ void mbedtls_rsa_private( uint8_t * message_str, uint32_t message_str_len, memset( output, 0x00, 1000 ); TEST_ASSERT( mbedtls_rsa_private( &ctx2, rnd_pseudo_rand, &rnd_info, - message_str, output ) == result ); + message_str->x, output ) == result ); if( result == 0 ) { - TEST_ASSERT( hexcmp( output, result_hex_str, ctx2.len, result_hex_str_len ) == 0 ); + TEST_ASSERT( hexcmp( output, result_hex_str->x, ctx2.len, result_hex_str->len ) == 0 ); } exit: @@ -1138,64 +1123,29 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C */ -void mbedtls_rsa_export_raw( char *input_N, char *input_P, - char *input_Q, char *input_D, - char *input_E, int is_priv, +void mbedtls_rsa_export_raw( HexParam_t *input_N, HexParam_t *input_P, + HexParam_t *input_Q, HexParam_t *input_D, + HexParam_t *input_E, int is_priv, int successive ) { - /* Original raw buffers with which we set up the RSA context */ - unsigned char bufN[1000]; - unsigned char bufP[1000]; - unsigned char bufQ[1000]; - unsigned char bufD[1000]; - unsigned char bufE[1000]; - - size_t lenN = 0; - size_t lenP = 0; - size_t lenQ = 0; - size_t lenD = 0; - size_t lenE = 0; - /* Exported buffers */ - unsigned char bufNe[ sizeof( bufN ) ]; - unsigned char bufPe[ sizeof( bufP ) ]; - unsigned char bufQe[ sizeof( bufQ ) ]; - unsigned char bufDe[ sizeof( bufD ) ]; - unsigned char bufEe[ sizeof( bufE ) ]; - - const int have_N = ( strlen( input_N ) > 0 ); - const int have_P = ( strlen( input_P ) > 0 ); - const int have_Q = ( strlen( input_Q ) > 0 ); - const int have_D = ( strlen( input_D ) > 0 ); - const int have_E = ( strlen( input_E ) > 0 ); + unsigned char bufNe[1000]; + unsigned char bufPe[1000]; + unsigned char bufQe[1000]; + unsigned char bufDe[1000]; + unsigned char bufEe[1000]; mbedtls_rsa_context ctx; mbedtls_rsa_init( &ctx, 0, 0 ); /* Setup RSA context */ - - if( have_N ) - lenN = unhexify( bufN, input_N ); - - if( have_P ) - lenP = unhexify( bufP, input_P ); - - if( have_Q ) - lenQ = unhexify( bufQ, input_Q ); - - if( have_D ) - lenD = unhexify( bufD, input_D ); - - if( have_E ) - lenE = unhexify( bufE, input_E ); - TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, - have_N ? bufN : NULL, lenN, - have_P ? bufP : NULL, lenP, - have_Q ? bufQ : NULL, lenQ, - have_D ? bufD : NULL, lenD, - have_E ? bufE : NULL, lenE ) == 0 ); + input_N->len ? input_N->x : NULL, input_N->len, + input_P->len ? input_P->x : NULL, input_P->len, + input_Q->len ? input_Q->x : NULL, input_Q->len, + input_D->len ? input_D->x : NULL, input_D->len, + input_E->len ? input_E->x : NULL, input_E->len ) == 0 ); TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == 0 ); @@ -1206,21 +1156,21 @@ void mbedtls_rsa_export_raw( char *input_N, char *input_P, /* N and E must always be present. */ if( !successive ) { - TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, bufNe, lenN, + TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, bufNe, input_N->len, NULL, 0, NULL, 0, NULL, 0, - bufEe, lenE ) == 0 ); + bufEe, input_E->len ) == 0 ); } else { - TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, bufNe, lenN, + TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, bufNe, input_N->len, NULL, 0, NULL, 0, NULL, 0, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, NULL, 0, NULL, 0, NULL, 0, - bufEe, lenE ) == 0 ); + bufEe, input_E->len ) == 0 ); } - TEST_ASSERT( memcmp( bufN, bufNe, lenN ) == 0 ); - TEST_ASSERT( memcmp( bufE, bufEe, lenE ) == 0 ); + TEST_ASSERT( memcmp( input_N->x, bufNe, input_N->len ) == 0 ); + TEST_ASSERT( memcmp( input_E->x, bufEe, input_E->len ) == 0 ); /* If we were providing enough information to setup a complete private context, * we expect to be able to export all core parameters. */ @@ -1230,35 +1180,35 @@ void mbedtls_rsa_export_raw( char *input_N, char *input_P, if( !successive ) { TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, - bufPe, lenP ? lenP : sizeof( bufPe ), - bufQe, lenQ ? lenQ : sizeof( bufQe ), - bufDe, lenD ? lenD : sizeof( bufDe ), + bufPe, input_P->len ? input_P->len : sizeof( bufPe ), + bufQe, input_Q->len ? input_Q->len : sizeof( bufQe ), + bufDe, input_D->len ? input_D->len : sizeof( bufDe ), NULL, 0 ) == 0 ); } else { TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, - bufPe, lenP ? lenP : sizeof( bufPe ), + bufPe, input_P->len ? input_P->len : sizeof( bufPe ), NULL, 0, NULL, 0, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, NULL, 0, - bufQe, lenQ ? lenQ : sizeof( bufQe ), + bufQe, input_Q->len ? input_Q->len : sizeof( bufQe ), NULL, 0, NULL, 0 ) == 0 ); - TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, NULL, 0, - NULL, 0, bufDe, lenD ? lenD : sizeof( bufDe ), + TEST_ASSERT( mbedtls_rsa_export_raw( &ctx, NULL, 0, NULL, 0, NULL, 0, + bufDe, input_D->len ? input_D->len : sizeof( bufDe ), NULL, 0 ) == 0 ); } - if( have_P ) - TEST_ASSERT( memcmp( bufP, bufPe, lenP ) == 0 ); + if( input_P->len ) + TEST_ASSERT( memcmp( input_P->x, bufPe, input_P->len ) == 0 ); - if( have_Q ) - TEST_ASSERT( memcmp( bufQ, bufQe, lenQ ) == 0 ); + if( input_Q->len ) + TEST_ASSERT( memcmp( input_Q->x, bufQe, input_Q->len ) == 0 ); - if( have_D ) - TEST_ASSERT( memcmp( bufD, bufDe, lenD ) == 0 ); + if( input_D->len ) + TEST_ASSERT( memcmp( input_D->x, bufDe, input_D->len ) == 0 ); } @@ -1268,31 +1218,19 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C:ENTROPY_HAVE_STRONG */ -void mbedtls_rsa_import_raw( char *input_N, - char *input_P, char *input_Q, - char *input_D, char *input_E, +void mbedtls_rsa_import_raw( HexParam_t *input_N, + HexParam_t *input_P, HexParam_t *input_Q, + HexParam_t *input_D, HexParam_t *input_E, int successive, int is_priv, int res_check, int res_complete ) { - unsigned char bufN[1000]; - unsigned char bufP[1000]; - unsigned char bufQ[1000]; - unsigned char bufD[1000]; - unsigned char bufE[1000]; - /* Buffers used for encryption-decryption test */ unsigned char *buf_orig = NULL; unsigned char *buf_enc = NULL; unsigned char *buf_dec = NULL; - size_t lenN = 0; - size_t lenP = 0; - size_t lenQ = 0; - size_t lenD = 0; - size_t lenE = 0; - mbedtls_rsa_context ctx; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_context ctr_drbg; @@ -1307,29 +1245,14 @@ void mbedtls_rsa_import_raw( char *input_N, &entropy, (const unsigned char *) pers, strlen( pers ) ) == 0 ); - if( strlen( input_N ) ) - lenN = unhexify( bufN, input_N ); - - if( strlen( input_P ) ) - lenP = unhexify( bufP, input_P ); - - if( strlen( input_Q ) ) - lenQ = unhexify( bufQ, input_Q ); - - if( strlen( input_D ) ) - lenD = unhexify( bufD, input_D ); - - if( strlen( input_E ) ) - lenE = unhexify( bufE, input_E ); - if( !successive ) { TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, - ( lenN > 0 ) ? bufN : NULL, lenN, - ( lenP > 0 ) ? bufP : NULL, lenP, - ( lenQ > 0 ) ? bufQ : NULL, lenQ, - ( lenD > 0 ) ? bufD : NULL, lenD, - ( lenE > 0 ) ? bufE : NULL, lenE ) == 0 ); + ( input_N->len > 0 ) ? input_N->x : NULL, input_N->len, + ( input_P->len > 0 ) ? input_P->x : NULL, input_P->len, + ( input_Q->len > 0 ) ? input_Q->x : NULL, input_Q->len, + ( input_D->len > 0 ) ? input_D->x : NULL, input_D->len, + ( input_E->len > 0 ) ? input_E->x : NULL, input_E->len ) == 0 ); } else { @@ -1337,27 +1260,27 @@ void mbedtls_rsa_import_raw( char *input_N, * This should make no functional difference. */ TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, - ( lenN > 0 ) ? bufN : NULL, lenN, + ( input_N->len > 0 ) ? input_N->x : NULL, input_N->len, NULL, 0, NULL, 0, NULL, 0, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, NULL, 0, - ( lenP > 0 ) ? bufP : NULL, lenP, + ( input_P->len > 0 ) ? input_P->x : NULL, input_P->len, NULL, 0, NULL, 0, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, NULL, 0, NULL, 0, - ( lenQ > 0 ) ? bufQ : NULL, lenQ, + ( input_Q->len > 0 ) ? input_Q->x : NULL, input_Q->len, NULL, 0, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, NULL, 0, NULL, 0, NULL, 0, - ( lenD > 0 ) ? bufD : NULL, lenD, + ( input_D->len > 0 ) ? input_D->x : NULL, input_D->len, NULL, 0 ) == 0 ); TEST_ASSERT( mbedtls_rsa_import_raw( &ctx, NULL, 0, NULL, 0, NULL, 0, NULL, 0, - ( lenE > 0 ) ? bufE : NULL, lenE ) == 0 ); + ( input_E->len > 0 ) ? input_E->x : NULL, input_E->len ) == 0 ); } TEST_ASSERT( mbedtls_rsa_complete( &ctx ) == res_complete ); diff --git a/tests/suites/test_suite_shax.function b/tests/suites/test_suite_shax.function index 02ac47378c..186fb87c25 100644 --- a/tests/suites/test_suite_shax.function +++ b/tests/suites/test_suite_shax.function @@ -5,77 +5,72 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */ -void mbedtls_sha1( uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void mbedtls_sha1( HexParam_t * src_str, HexParam_t * hex_hash_string ) { unsigned char output[41]; memset(output, 0x00, 41); - TEST_ASSERT( mbedtls_sha1_ret( src_str, src_len, output ) == 0 ); + TEST_ASSERT( mbedtls_sha1_ret( src_str->x, src_str->len, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, 20, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, 20, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void sha224( uint8_t * src_str, uint32_t src_len, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void sha224( HexParam_t * src_str, HexParam_t * hex_hash_string ) { unsigned char output[57]; memset(output, 0x00, 57); - TEST_ASSERT( mbedtls_sha256_ret( src_str, src_len, output, 1 ) == 0 ); + TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 1 ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, 28, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, 28, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void mbedtls_sha256( uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void mbedtls_sha256( HexParam_t * src_str, HexParam_t * hex_hash_string ) { unsigned char output[65]; memset(output, 0x00, 65); - TEST_ASSERT( mbedtls_sha256_ret( src_str, src_len, output, 0 ) == 0 ); + TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 0 ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, 32, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, 32, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void sha384( uint8_t * src_str, uint32_t src_len, uint8_t * hex_hash_string, - uint32_t hex_hash_string_len ) +void sha384( HexParam_t * src_str, HexParam_t * hex_hash_string ) { unsigned char output[97]; memset(output, 0x00, 97); - TEST_ASSERT( mbedtls_sha512_ret( src_str, src_len, output, 1 ) == 0 ); + TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 1 ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, 48, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, 48, hex_hash_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void mbedtls_sha512( uint8_t * src_str, uint32_t src_len, - uint8_t * hex_hash_string, uint32_t hex_hash_string_len ) +void mbedtls_sha512( HexParam_t * src_str, HexParam_t * hex_hash_string ) { unsigned char output[129]; memset(output, 0x00, 129); - TEST_ASSERT( mbedtls_sha512_ret( src_str, src_len, output, 0 ) == 0 ); + TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 0 ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_hash_string, 64, hex_hash_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_hash_string->x, 64, hex_hash_string->len ) == 0 ); } /* END_CASE */ diff --git a/tests/suites/test_suite_ssl.data b/tests/suites/test_suite_ssl.data index b92c1fe8a2..147350744f 100644 --- a/tests/suites/test_suite_ssl.data +++ b/tests/suites/test_suite_ssl.data @@ -8,52 +8,52 @@ SSL DTLS replay: 0 seen, 0 replayed ssl_dtls_replay:"000000000000":"000000000000":-1 SSL DTLS replay: 0-1 seen, 2 arriving -ssl_dtls_replay:"000000000000,000000000001":"000000000002":0 +ssl_dtls_replay:"000000000000000000000001":"000000000002":0 SSL DTLS replay: 0-1 seen, 1 replayed -ssl_dtls_replay:"000000000000,000000000001":"000000000001":-1 +ssl_dtls_replay:"000000000000000000000001":"000000000001":-1 SSL DTLS replay: 0-1 seen, 0 replayed -ssl_dtls_replay:"000000000000,000000000001":"000000000000":-1 +ssl_dtls_replay:"000000000000000000000001":"000000000000":-1 SSL DTLS replay: new -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd12340003":"abcd12340004":0 +ssl_dtls_replay:"abcd12340000abcd12340001abcd12340003":"abcd12340004":0 SSL DTLS replay: way new -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd12340003":"abcd12350000":0 +ssl_dtls_replay:"abcd12340000abcd12340001abcd12340003":"abcd12350000":0 SSL DTLS replay: delayed -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd12340003":"abcd12340002":0 +ssl_dtls_replay:"abcd12340000abcd12340001abcd12340003":"abcd12340002":0 SSL DTLS replay: lastest replayed -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd12340003":"abcd12340003":-1 +ssl_dtls_replay:"abcd12340000abcd12340001abcd12340003":"abcd12340003":-1 SSL DTLS replay: older replayed -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd12340003":"abcd12340001":-1 +ssl_dtls_replay:"abcd12340000abcd12340001abcd12340003":"abcd12340001":-1 SSL DTLS replay: most recent in window, replayed -ssl_dtls_replay:"abcd12340000,abcd12340002,abcd12340003":"abcd12340002":-1 +ssl_dtls_replay:"abcd12340000abcd12340002abcd12340003":"abcd12340002":-1 SSL DTLS replay: oldest in window, replayed -ssl_dtls_replay:"abcd12340000,abcd12340001,abcd1234003f":"abcd12340000":-1 +ssl_dtls_replay:"abcd12340000abcd12340001abcd1234003f":"abcd12340000":-1 SSL DTLS replay: oldest in window, not replayed -ssl_dtls_replay:"abcd12340001,abcd12340002,abcd1234003f":"abcd12340000":0 +ssl_dtls_replay:"abcd12340001abcd12340002abcd1234003f":"abcd12340000":0 SSL DTLS replay: just out of the window -ssl_dtls_replay:"abcd12340001,abcd12340002,abcd1234003f":"abcd1233ffff":-1 +ssl_dtls_replay:"abcd12340001abcd12340002abcd1234003f":"abcd1233ffff":-1 SSL DTLS replay: way out of the window -ssl_dtls_replay:"abcd12340001,abcd12340002,abcd1234003f":"abcd12330000":-1 +ssl_dtls_replay:"abcd12340001abcd12340002abcd1234003f":"abcd12330000":-1 SSL DTLS replay: big jump then replay -ssl_dtls_replay:"abcd12340000,abcd12340100":"abcd12340100":-1 +ssl_dtls_replay:"abcd12340000abcd12340100":"abcd12340100":-1 SSL DTLS replay: big jump then new -ssl_dtls_replay:"abcd12340000,abcd12340100":"abcd12340101":0 +ssl_dtls_replay:"abcd12340000abcd12340100":"abcd12340101":0 SSL DTLS replay: big jump then just delayed -ssl_dtls_replay:"abcd12340000,abcd12340100":"abcd123400ff":0 +ssl_dtls_replay:"abcd12340000abcd12340100":"abcd123400ff":0 SSL SET_HOSTNAME memory leak: call ssl_set_hostname twice ssl_set_hostname_twice:"server0":"server1" diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function index 5cc32ab91b..eed518385c 100644 --- a/tests/suites/test_suite_ssl.function +++ b/tests/suites/test_suite_ssl.function @@ -9,11 +9,11 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_SSL_DTLS_ANTI_REPLAY */ -void ssl_dtls_replay( char *prevs, char *new, int ret ) +void ssl_dtls_replay( HexParam_t * prevs, HexParam_t * new, int ret ) { + uint32_t len = 0; mbedtls_ssl_context ssl; mbedtls_ssl_config conf; - char *end_prevs = prevs + strlen( prevs ) + 1; mbedtls_ssl_init( &ssl ); mbedtls_ssl_config_init( &conf ); @@ -25,15 +25,14 @@ void ssl_dtls_replay( char *prevs, char *new, int ret ) TEST_ASSERT( mbedtls_ssl_setup( &ssl, &conf ) == 0 ); /* Read previous record numbers */ - for( ; end_prevs - prevs >= 13; prevs += 13 ) + for( len = 0; len < prevs->len; len += 6 ) { - prevs[12] = '\0'; - unhexify( ssl.in_ctr + 2, prevs ); + memcpy( ssl.in_ctr + 2, prevs->x + len, 6 ); mbedtls_ssl_dtls_replay_update( &ssl ); } /* Check new number */ - unhexify( ssl.in_ctr + 2, new ); + memcpy( ssl.in_ctr + 2, new->x, 6 ); TEST_ASSERT( mbedtls_ssl_dtls_replay_check( &ssl ) == ret ); mbedtls_ssl_free( &ssl ); diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index 4d36027f17..2e283087b5 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -1,4 +1,5 @@ /* BEGIN_HEADER */ +#include "mbedtls/bignum.h" #include "mbedtls/x509.h" #include "mbedtls/x509_crt.h" #include "mbedtls/x509_crl.h" @@ -439,8 +440,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C */ -void x509parse_crt( uint8_t * buf, uint32_t data_len, char * result_str, - int result ) +void x509parse_crt( HexParam_t * buf, char * result_str, int result ) { mbedtls_x509_crt crt; unsigned char output[2000]; @@ -450,7 +450,7 @@ void x509parse_crt( uint8_t * buf, uint32_t data_len, char * result_str, memset( output, 0, 2000 ); - TEST_ASSERT( mbedtls_x509_crt_parse( &crt, buf, data_len ) == ( result ) ); + TEST_ASSERT( mbedtls_x509_crt_parse( &crt, buf->x, buf->len ) == ( result ) ); if( ( result ) == 0 ) { res = mbedtls_x509_crt_info( (char *) output, 2000, "", &crt ); @@ -467,8 +467,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRL_PARSE_C */ -void x509parse_crl( uint8_t * buf, uint32_t data_len, char * result_str, - int result ) +void x509parse_crl( HexParam_t * buf, char * result_str, int result ) { mbedtls_x509_crl crl; unsigned char output[2000]; @@ -478,7 +477,7 @@ void x509parse_crl( uint8_t * buf, uint32_t data_len, char * result_str, memset( output, 0, 2000 ); - TEST_ASSERT( mbedtls_x509_crl_parse( &crl, buf, data_len ) == ( result ) ); + TEST_ASSERT( mbedtls_x509_crl_parse( &crl, buf->x, buf->len ) == ( result ) ); if( ( result ) == 0 ) { res = mbedtls_x509_crl_info( (char *) output, 2000, "", &crl ); @@ -495,19 +494,16 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CSR_PARSE_C */ -void mbedtls_x509_csr_parse( char * csr_der_hex, char * ref_out, int ref_ret ) +void mbedtls_x509_csr_parse( HexParam_t * csr_der, char * ref_out, int ref_ret ) { mbedtls_x509_csr csr; - unsigned char *csr_der = NULL; char my_out[1000]; - size_t csr_der_len; int my_ret; mbedtls_x509_csr_init( &csr ); memset( my_out, 0, sizeof( my_out ) ); - csr_der = unhexify_alloc( csr_der_hex, &csr_der_len ); - my_ret = mbedtls_x509_csr_parse_der( &csr, csr_der, csr_der_len ); + my_ret = mbedtls_x509_csr_parse_der( &csr, csr_der->x, csr_der->len ); TEST_ASSERT( my_ret == ref_ret ); if( ref_ret == 0 ) @@ -519,7 +515,6 @@ void mbedtls_x509_csr_parse( char * csr_der_hex, char * ref_out, int ref_ret ) exit: mbedtls_x509_csr_free( &csr ); - mbedtls_free( csr_der ); } /* END_CASE */ @@ -626,7 +621,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_desc( uint8_t * buf, uint32_t buf_len, char * ref_desc ) +void x509_oid_desc( HexParam_t * buf, char * ref_desc ) { mbedtls_x509_buf oid; const char *desc = NULL; @@ -634,8 +629,8 @@ void x509_oid_desc( uint8_t * buf, uint32_t buf_len, char * ref_desc ) oid.tag = MBEDTLS_ASN1_OID; - oid.p = buf; - oid.len = buf_len; + oid.p = buf->x; + oid.len = buf->len; ret = mbedtls_oid_get_extended_key_usage( &oid, &desc ); @@ -654,8 +649,7 @@ void x509_oid_desc( uint8_t * buf, uint32_t buf_len, char * ref_desc ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_numstr( uint8_t * oid_buf, uint32_t oid_buf_len, char * numstr, - int blen, int ret ) +void x509_oid_numstr( HexParam_t * oid_buf, char * numstr, int blen, int ret ) { mbedtls_x509_buf oid; char num_buf[100]; @@ -663,8 +657,8 @@ void x509_oid_numstr( uint8_t * oid_buf, uint32_t oid_buf_len, char * numstr, memset( num_buf, 0x2a, sizeof num_buf ); oid.tag = MBEDTLS_ASN1_OID; - oid.p = oid_buf; - oid.len = oid_buf_len; + oid.p = oid_buf->x; + oid.len = oid_buf->len; TEST_ASSERT( (size_t) blen <= sizeof num_buf ); @@ -695,8 +689,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */ -void x509_check_extended_key_usage( char * crt_file, uint8_t * oid, - uint32_t len, int ret ) +void x509_check_extended_key_usage( char * crt_file, HexParam_t * oid, int ret + ) { mbedtls_x509_crt crt; @@ -705,7 +699,7 @@ void x509_check_extended_key_usage( char * crt_file, uint8_t * oid, TEST_ASSERT( mbedtls_x509_crt_parse_file( &crt, crt_file ) == 0 ); - TEST_ASSERT( mbedtls_x509_crt_check_extended_key_usage( &crt, oid, len ) == ret ); + TEST_ASSERT( mbedtls_x509_crt_check_extended_key_usage( &crt, (const char *)oid->x, oid->len ) == ret ); exit: mbedtls_x509_crt_free( &crt ); @@ -743,7 +737,7 @@ void x509_get_time( int tag, char * time_str, int ret, int year, int mon, /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_RSASSA_PSS_SUPPORT */ -void x509_parse_rsassa_pss_params( char * hex_params, int params_tag, +void x509_parse_rsassa_pss_params( HexParam_t * hex_params, int params_tag, int ref_msg_md, int ref_mgf_md, int ref_salt_len, int ref_ret ) { @@ -752,7 +746,8 @@ void x509_parse_rsassa_pss_params( char * hex_params, int params_tag, mbedtls_md_type_t my_msg_md, my_mgf_md; int my_salt_len; - params.p = unhexify_alloc( hex_params, ¶ms.len ); + params.p = hex_params->x; + params.len = hex_params->len; params.tag = params_tag; my_ret = mbedtls_x509_get_rsassa_pss_params( ¶ms, &my_msg_md, &my_mgf_md, @@ -768,7 +763,7 @@ void x509_parse_rsassa_pss_params( char * hex_params, int params_tag, } exit: - mbedtls_free( params.p ); + ;; } /* END_CASE */ diff --git a/tests/suites/test_suite_xtea.function b/tests/suites/test_suite_xtea.function index 7da890acbf..94c6ff5e12 100644 --- a/tests/suites/test_suite_xtea.function +++ b/tests/suites/test_suite_xtea.function @@ -8,9 +8,8 @@ */ /* BEGIN_CASE */ -void xtea_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void xtea_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -18,17 +17,16 @@ void xtea_encrypt_ecb( uint8_t * key_str, uint32_t key_str_len, memset(output, 0x00, 100); - mbedtls_xtea_setup( &ctx, key_str ); - TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_ENCRYPT, src_str, output ) == 0 ); + mbedtls_xtea_setup( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_ENCRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void xtea_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, - uint8_t * src_str, uint32_t src_str_len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void xtea_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, + HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -36,18 +34,16 @@ void xtea_decrypt_ecb( uint8_t * key_str, uint32_t key_str_len, memset(output, 0x00, 100); - mbedtls_xtea_setup( &ctx, key_str ); - TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_DECRYPT, src_str, output ) == 0 ); + mbedtls_xtea_setup( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_xtea_crypt_ecb( &ctx, MBEDTLS_XTEA_DECRYPT, src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, 8, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, 8, hex_dst_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void xtea_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -55,19 +51,17 @@ void xtea_encrypt_cbc( uint8_t * key_str, uint32_t key_str_len, memset(output, 0x00, 100); - mbedtls_xtea_setup( &ctx, key_str ); - TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_ENCRYPT, len, iv_str, - src_str, output ) == 0 ); + mbedtls_xtea_setup( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_ENCRYPT, src_str->len, iv_str->x, + src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, - uint8_t * iv_str, uint32_t iv_str_len, - uint8_t * src_str, uint32_t len, - uint8_t * hex_dst_string, uint32_t hex_dst_string_len ) +void xtea_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, + HexParam_t * src_str, HexParam_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -75,11 +69,11 @@ void xtea_decrypt_cbc( uint8_t * key_str, uint32_t key_str_len, memset(output, 0x00, 100); - mbedtls_xtea_setup( &ctx, key_str ); - TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_DECRYPT, len, iv_str, - src_str, output ) == 0 ); + mbedtls_xtea_setup( &ctx, key_str->x ); + TEST_ASSERT( mbedtls_xtea_crypt_cbc( &ctx, MBEDTLS_XTEA_DECRYPT, src_str->len, iv_str->x, + src_str->x, output ) == 0 ); - TEST_ASSERT( hexcmp( output, hex_dst_string, len, hex_dst_string_len ) == 0 ); + TEST_ASSERT( hexcmp( output, hex_dst_string->x, src_str->len, hex_dst_string->len ) == 0 ); } /* END_CASE */ From 2397bbaa0137739646ae43256a96d6dc07b97b6b Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 9 Jun 2017 04:35:03 +0100 Subject: [PATCH 0705/1100] Update test generator for use of struct for hex parameters --- tests/scripts/gen_mbed_code.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/scripts/gen_mbed_code.py b/tests/scripts/gen_mbed_code.py index c63555de78..17f70d3cc7 100644 --- a/tests/scripts/gen_mbed_code.py +++ b/tests/scripts/gen_mbed_code.py @@ -107,9 +107,12 @@ def gen_function_wrapper(name, args_dispatch): void {name}_wrapper( void ** params ) {{ {unused_params} +{locals} {name}( {args} ); }} -'''.format(name=name, unused_params='(void)params;' if len(args_dispatch) == 0 else '', args=', '.join(args_dispatch)) +'''.format(name=name, unused_params='(void)params;' if len(args_dispatch[1]) == 0 else '', + args=', '.join(args_dispatch[1]), + locals=args_dispatch[0]) return wrapper @@ -204,6 +207,7 @@ def parse_function_signature(line): :return: """ args = [] + locals = '' args_dispatch = [] m = re.search('\s*void\s+(\w+)\s*\(', line, re.I) if not m: @@ -211,7 +215,6 @@ def parse_function_signature(line): name = m.group(1) line = line[len(m.group(0)):] arg_idx = 0 - last_was_hex = False for arg in line[:line.find(')')].split(','): arg = arg.strip() if arg == '': @@ -222,18 +225,19 @@ def parse_function_signature(line): elif re.search('char\s*\*\s*.*', arg.strip()): args.append('char*') args_dispatch.append('(char *) params[%d]' % arg_idx) - elif re.search('uint8_t\s*\*\s*.*', arg.strip()): + elif re.search('HexParam_t\s*\*\s*.*', arg.strip()): args.append('hex') - args_dispatch.append('(uint8_t *) params[%d]' % arg_idx) - last_was_hex = True - elif re.search('uint32_t\s+.*', arg.strip()) and last_was_hex: - last_was_hex = False - args_dispatch.append('*( (uint32_t *) params[%d] )' % arg_idx) + # create a structure + locals += """ HexParam_t hex%d = {%s, %s}; +""" % (arg_idx, '(uint8_t *) params[%d]' % arg_idx, '*( (uint32_t *) params[%d] )' % (arg_idx + 1)) + + args_dispatch.append('&hex%d' % arg_idx) + arg_idx += 1 else: raise ValueError("Test function arguments can only be 'int' or 'char *'\n%s" % line) arg_idx += 1 - return name, args, args_dispatch + return name, args, (locals, args_dispatch) def parse_function_code(line_no, funcs_f, deps, suite_deps): From 975d97eb8bcbe700d3cf8c6090a0eb57d4ebeca0 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 9 Jun 2017 12:27:39 +0100 Subject: [PATCH 0706/1100] Remove old test suite template and code generator script --- tests/scripts/generate_code.pl | 411 --------------------------------- 1 file changed, 411 deletions(-) delete mode 100755 tests/scripts/generate_code.pl diff --git a/tests/scripts/generate_code.pl b/tests/scripts/generate_code.pl deleted file mode 100755 index e489a0055e..0000000000 --- a/tests/scripts/generate_code.pl +++ /dev/null @@ -1,411 +0,0 @@ -#!/usr/bin/env perl - -# generate_code.pl -# -# This file is part of mbed TLS (https://tls.mbed.org) -# -# Copyright (c) 2009-2016, ARM Limited, All Rights Reserved -# -# Purpose -# -# Generates the test suite code given inputs of the test suite directory that -# contain the test suites, and the test suite file names for the test code and -# test data. -# -# Usage: generate_code.pl [main code file] -# -# Structure of files -# -# - main code file - 'main_test.function' -# Template file that contains the main() function for the test suite, -# test dispatch code as well as support functions. It contains the -# following symbols which are substituted by this script during -# processing: -# TESTCASE_FILENAME -# TESTCODE_FILENAME -# SUITE_PRE_DEP -# MAPPING_CODE -# FUNCTION CODE -# SUITE_POST_DEP -# DEP_CHECK_CODE -# DISPATCH_FUNCTION -# !LINE_NO! -# -# - common helper code file - 'helpers.function' -# Common helper functions -# -# - test suite code file - file name in the form 'test_suite_xxx.function' -# Code file that contains the actual test cases. The file contains a -# series of code sequences delimited by the following: -# BEGIN_HEADER / END_HEADER - list of headers files -# BEGIN_SUITE_HELPERS / END_SUITE_HELPERS - helper functions common to -# the test suite -# BEGIN_CASE / END_CASE - the test cases in the test suite. Each test -# case contains at least one function that is used to create the -# dispatch code. -# -# - test data file - file name in the form 'test_suite_xxxx.data' -# The test case parameters to to be used in execution of the test. The -# file name is used to replace the symbol 'TESTCASE_FILENAME' in the main -# code file above. -# -# A test data file consists of a sequence of paragraphs separated by -# a single empty line. Line breaks may be in Unix (LF) or Windows (CRLF) -# format. Lines starting with the character '#' are ignored -# (the parser behaves as if they were not present). -# -# Each paragraph describes one test case and must consist of: (1) one -# line which is the test case name; (2) an optional line starting with -# the 11-character prefix "depends_on:"; (3) a line containing the test -# function to execute and its parameters. -# -# A depends_on: line consists of a list of compile-time options -# separated by the character ':', with no whitespace. The test case -# is executed only if this compilation option is enabled in config.h. -# -# The last line of each paragraph contains a test function name and -# a list of parameters separated by the character ':'. Running the -# test case calls this function with the specified parameters. Each -# parameter may either be an integer written in decimal or hexadecimal, -# or a string surrounded by double quotes which may not contain the -# ':' character. -# - -use strict; - -my $suite_dir = shift or die "Missing suite directory"; -my $suite_name = shift or die "Missing suite name"; -my $data_name = shift or die "Missing data name"; -my $test_main_file = do { my $arg = shift; defined($arg) ? $arg : $suite_dir."/main_test.function" }; -my $test_file = $data_name.".c"; -my $test_common_helper_file = $suite_dir."/helpers.function"; -my $test_case_file = $suite_dir."/".$suite_name.".function"; -my $test_case_data = $suite_dir."/".$data_name.".data"; - -my $line_separator = $/; -undef $/; - - -# -# Open and read in the input files -# - -open(TEST_HELPERS, "$test_common_helper_file") or die "Opening test helpers -'$test_common_helper_file': $!"; -my $test_common_helpers = ; -close(TEST_HELPERS); - -open(TEST_MAIN, "$test_main_file") or die "Opening test main '$test_main_file': $!"; -my @test_main_lines = split/^/, ; -my $test_main; -my $index = 2; -for my $line (@test_main_lines) { - $line =~ s/!LINE_NO!/$index/; - $test_main = $test_main.$line; - $index++; -} -close(TEST_MAIN); - -open(TEST_CASES, "$test_case_file") or die "Opening test cases '$test_case_file': $!"; -my @test_cases_lines = split/^/, ; -my $test_cases; -my $index = 2; -for my $line (@test_cases_lines) { - if ($line =~ /^\/\* BEGIN_SUITE_HELPERS .*\*\//) - { - $line = $line."#line $index \"$test_case_file\"\n"; - } - - if ($line =~ /^\/\* BEGIN_CASE .*\*\//) - { - $line = $line."#line $index \"$test_case_file\"\n"; - } - - $line =~ s/!LINE_NO!/$index/; - - $test_cases = $test_cases.$line; - $index++; -} - -close(TEST_CASES); - -open(TEST_DATA, "$test_case_data") or die "Opening test data '$test_case_data': $!"; -my $test_data = ; -close(TEST_DATA); - - -# -# Find the headers, dependencies, and suites in the test cases file -# - -my ( $suite_header ) = $test_cases =~ /\/\* BEGIN_HEADER \*\/\n(.*?)\n\/\* END_HEADER \*\//s; -my ( $suite_defines ) = $test_cases =~ /\/\* BEGIN_DEPENDENCIES\n \* (.*?)\n \* END_DEPENDENCIES/s; -my ( $suite_helpers ) = $test_cases =~ /\/\* BEGIN_SUITE_HELPERS \*\/\n(.*?)\n\/\* END_SUITE_HELPERS \*\//s; - -my $requirements; -if ($suite_defines =~ /^depends_on:/) -{ - ( $requirements ) = $suite_defines =~ /^depends_on:(.*)$/; -} - -my @var_req_arr = split(/:/, $requirements); -my $suite_pre_code; -my $suite_post_code; -my $dispatch_code; -my $mapping_code; -my %mapping_values; - -while (@var_req_arr) -{ - my $req = shift @var_req_arr; - $req =~ s/(!?)(.*)/$1defined($2)/; - - $suite_pre_code .= "#if $req\n"; - $suite_post_code .= "#endif /* $req */\n"; -} - -$/ = $line_separator; - -open(TEST_FILE, ">$test_file") or die "Opening destination file '$test_file': $!"; -print TEST_FILE << "END"; -/* - * *** THIS FILE HAS BEEN MACHINE GENERATED *** - * - * This file has been machine generated using the script: $0 - * - * Test file : $test_file - * - * The following files were used to create this file. - * - * Main code file : $test_main_file - * Helper file : $test_common_helper_file - * Test suite file : $test_case_file - * Test suite data : $test_case_data - * - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(MBEDTLS_CONFIG_FILE) -#include -#else -#include MBEDTLS_CONFIG_FILE -#endif - - -/*----------------------------------------------------------------------------*/ -/* Common helper code */ - -$test_common_helpers - - -/*----------------------------------------------------------------------------*/ -/* Test Suite Code */ - -$suite_pre_code -$suite_header -$suite_helpers -$suite_post_code - -END - -$test_main =~ s/SUITE_PRE_DEP/$suite_pre_code/; -$test_main =~ s/SUITE_POST_DEP/$suite_post_code/; - -while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//msg) -{ - my $function_deps = $1; - my $function_decl = $2; - - # Sanity checks of function - if ($function_decl !~ /^#line\s*.*\nvoid /) - { - die "Test function does not have 'void' as return type.\n" . - "Function declaration:\n" . - $function_decl; - } - if ($function_decl !~ /^(#line\s*.*)\nvoid (\w+)\(\s*(.*?)\s*\)\s*{(.*)}/ms) - { - die "Function declaration not in expected format\n"; - } - my $line_directive = $1; - my $function_name = $2; - my $function_params = $3; - my $function_pre_code; - my $function_post_code; - my $param_defs; - my $param_checks; - my @dispatch_params; - my @var_def_arr = split(/,\s*/, $function_params); - my $i = 1; - my $mapping_regex = "".$function_name; - my $mapping_count = 0; - - $function_decl =~ s/(^#line\s*.*)\nvoid /$1\nvoid test_suite_/; - - # Add exit label if not present - if ($function_decl !~ /^exit:$/m) - { - $function_decl =~ s/}\s*$/\nexit:\n return;\n}/; - } - - if ($function_deps =~ /^depends_on:/) - { - ( $function_deps ) = $function_deps =~ /^depends_on:(.*)$/; - } - - foreach my $req (split(/:/, $function_deps)) - { - $function_pre_code .= "#ifdef $req\n"; - $function_post_code .= "#endif /* $req */\n"; - } - - foreach my $def (@var_def_arr) - { - # Handle the different parameter types - if( substr($def, 0, 4) eq "int " ) - { - $param_defs .= " int param$i;\n"; - $param_checks .= " if( verify_int( params[$i], ¶m$i ) != 0 ) return( DISPATCH_INVALID_TEST_DATA );\n"; - push @dispatch_params, "param$i"; - - $mapping_regex .= ":([\\d\\w |\\+\\-\\(\\)]+)"; - $mapping_count++; - } - elsif( substr($def, 0, 6) eq "char *" ) - { - $param_defs .= " char *param$i = params[$i];\n"; - $param_checks .= " if( verify_string( ¶m$i ) != 0 ) return( DISPATCH_INVALID_TEST_DATA );\n"; - push @dispatch_params, "param$i"; - $mapping_regex .= ":(?:\\\\.|[^:\n])+"; - } - else - { - die "Parameter declaration not of supported type (int, char *)\n"; - } - $i++; - - } - - # Find non-integer values we should map for this function - if( $mapping_count) - { - my @res = $test_data =~ /^$mapping_regex/msg; - foreach my $value (@res) - { - next unless ($value !~ /^\d+$/); - if ( $mapping_values{$value} ) { - ${ $mapping_values{$value} }{$function_pre_code} = 1; - } else { - $mapping_values{$value} = { $function_pre_code => 1 }; - } - } - } - - my $call_params = join ", ", @dispatch_params; - my $param_count = @var_def_arr + 1; - $dispatch_code .= << "END"; -if( strcmp( params[0], "$function_name" ) == 0 ) -{ -$function_pre_code -$param_defs - if( cnt != $param_count ) - { - mbedtls_fprintf( stderr, "\\nIncorrect argument count (%d != %d)\\n", cnt, $param_count ); - return( DISPATCH_INVALID_TEST_DATA ); - } - -$param_checks - test_suite_$function_name( $call_params ); - return ( DISPATCH_TEST_SUCCESS ); -$function_post_code - return ( DISPATCH_UNSUPPORTED_SUITE ); -} -else -END - - my $function_code = $function_pre_code . $function_decl . "\n" . - $function_post_code; - $test_main =~ s/FUNCTION_CODE/$function_code\nFUNCTION_CODE/; -} - -# Find specific case dependencies that we should be able to check -# and make check code -my $dep_check_code; - -my @res = $test_data =~ /^depends_on:([!:\w]+)/msg; -my %case_deps; -foreach my $deps (@res) -{ - foreach my $dep (split(/:/, $deps)) - { - $case_deps{$dep} = 1; - } -} -while( my ($key, $value) = each(%case_deps) ) -{ - if( substr($key, 0, 1) eq "!" ) - { - my $key = substr($key, 1); - $dep_check_code .= << "END"; - if( strcmp( str, "!$key" ) == 0 ) - { -#if !defined($key) - return( DEPENDENCY_SUPPORTED ); -#else - return( DEPENDENCY_NOT_SUPPORTED ); -#endif - } -END - } - else - { - $dep_check_code .= << "END"; - if( strcmp( str, "$key" ) == 0 ) - { -#if defined($key) - return( DEPENDENCY_SUPPORTED ); -#else - return( DEPENDENCY_NOT_SUPPORTED ); -#endif - } -END - } -} - -# Make mapping code -while( my ($key, $value) = each(%mapping_values) ) -{ - my $key_mapping_code = << "END"; - if( strcmp( str, "$key" ) == 0 ) - { - *value = ( $key ); - return( KEY_VALUE_MAPPING_FOUND ); - } -END - - # handle depenencies, unless used at least one without depends - if ($value->{""}) { - $mapping_code .= $key_mapping_code; - next; - } - for my $ifdef ( keys %$value ) { - (my $endif = $ifdef) =~ s!ifdef!endif //!g; - $mapping_code .= $ifdef . $key_mapping_code . $endif; - } -} - -$dispatch_code =~ s/^(.+)/ $1/mg; - -$test_main =~ s/TESTCASE_FILENAME/$test_case_data/g; -$test_main =~ s/TESTCODE_FILENAME/$test_case_file/g; -$test_main =~ s/FUNCTION_CODE//; -$test_main =~ s/DEP_CHECK_CODE/$dep_check_code/; -$test_main =~ s/DISPATCH_FUNCTION/$dispatch_code/; -$test_main =~ s/MAPPING_CODE/$mapping_code/; - -print TEST_FILE << "END"; -$test_main -END - -close(TEST_FILE); From 191e904bb2214a75dd3a734c3dcaa3327712965a Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 9 Jun 2017 12:39:00 +0100 Subject: [PATCH 0707/1100] Replace old template and code generator with new ones. Keep names --- .../{gen_mbed_code.py => generate_code.py} | 0 tests/suites/desktop_test.function | 13 +- tests/suites/main_test.function | 691 ++++-------------- tests/suites/mbed_test.function | 174 ----- 4 files changed, 164 insertions(+), 714 deletions(-) rename tests/scripts/{gen_mbed_code.py => generate_code.py} (100%) delete mode 100644 tests/suites/mbed_test.function diff --git a/tests/scripts/gen_mbed_code.py b/tests/scripts/generate_code.py similarity index 100% rename from tests/scripts/gen_mbed_code.py rename to tests/scripts/generate_code.py diff --git a/tests/suites/desktop_test.function b/tests/suites/desktop_test.function index b2906a8dce..9c9a0b2d44 100644 --- a/tests/suites/desktop_test.function +++ b/tests/suites/desktop_test.function @@ -316,12 +316,23 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store /** * \brief Tests snprintf implementation with test input. * + * \note + * At high optimization levels (e.g. gcc -O3), this function may be + * inlined in run_test_snprintf. This can trigger a spurious warning about + * potential misuse of snprintf from gcc -Wformat-truncation (observed with + * gcc 7.2). This warning makes tests in run_test_snprintf redundant on gcc + * only. They are still valid for other compilers. Avoid this warning by + * forbidding inlining of this function by gcc. + * * \param n Buffer test length. * \param ref_buf Expected buffer. * \param ref_ret Expected snprintf return value. * * \return 0 for success else 1 */ +#if defined(__GNUC__) +__attribute__((__noinline__)) +#endif static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) { int ret; @@ -417,7 +428,7 @@ int execute_tests( int argc , const char ** argv ) if( run_test_snprintf() != 0 ) { mbedtls_fprintf( stderr, "the snprintf implementation is broken\n" ); - return( 0 ); + return( 1 ); } while( arg_index < argc ) diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index b6e3104063..cd7f360d62 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -1,571 +1,184 @@ -#line 1 "main_test.function" -SUITE_PRE_DEP -#define TEST_SUITE_ACTIVE +#line 2 "suites/mbed_test.function" +/* + * *** THIS FILE HAS BEEN MACHINE GENERATED *** + * + * This file has been machine generated using the script: + * {generator_script} + * + * Test file : {test_file} + * + * The following files were used to create this file. + * + * Main code file : {test_main_file} + * Platform code file : {test_platform_file} + * Helper file : {test_common_helper_file} + * Test suite file : {test_case_file} + * Test suite data : {test_case_data_file} + * + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ -int verify_string( char **str ) -{ - if( (*str)[0] != '"' || - (*str)[strlen( *str ) - 1] != '"' ) - { - mbedtls_fprintf( stderr, - "Expected string (with \"\") for parameter and got: %s\n", *str ); - return( -1 ); - } - - (*str)++; - (*str)[strlen( *str ) - 1] = '\0'; - - return( 0 ); -} - -int verify_int( char *str, int *value ) -{ - size_t i; - int minus = 0; - int digits = 1; - int hex = 0; - - for( i = 0; i < strlen( str ); i++ ) - { - if( i == 0 && str[i] == '-' ) - { - minus = 1; - continue; - } - - if( ( ( minus && i == 2 ) || ( !minus && i == 1 ) ) && - str[i - 1] == '0' && str[i] == 'x' ) - { - hex = 1; - continue; - } - - if( ! ( ( str[i] >= '0' && str[i] <= '9' ) || - ( hex && ( ( str[i] >= 'a' && str[i] <= 'f' ) || - ( str[i] >= 'A' && str[i] <= 'F' ) ) ) ) ) - { - digits = 0; - break; - } - } - - if( digits ) - { - if( hex ) - *value = strtol( str, NULL, 16 ); - else - *value = strtol( str, NULL, 10 ); - - return( 0 ); - } - -MAPPING_CODE - - mbedtls_fprintf( stderr, - "Expected integer for parameter and got: %s\n", str ); - return( KEY_VALUE_MAPPING_NOT_FOUND ); -} +#if !defined(MBEDTLS_CONFIG_FILE) +#include +#else +#include MBEDTLS_CONFIG_FILE +#endif /*----------------------------------------------------------------------------*/ -/* Test Case code */ +/* Common helper code */ -FUNCTION_CODE -SUITE_POST_DEP +{test_common_helpers} -#line !LINE_NO! "main_test.function" +#line {line_no} "suites/mbed_test.function" + + +/*----------------------------------------------------------------------------*/ +/* Test Suite Code */ + + +#define TEST_SUITE_ACTIVE + +{function_headers} + +{functions_code} + +#line {line_no} "suites/mbed_test.function" /*----------------------------------------------------------------------------*/ /* Test dispatch code */ -int dep_check( char *str ) -{ - if( str == NULL ) - return( 1 ); -DEP_CHECK_CODE -#line !LINE_NO! "main_test.function" +/** + * \brief Evaluates an expression/macro into its literal integer value. + * For optimizing space for embedded targets each expression/macro + * is identified by a unique identifier instead of string literals. + * Identifiers and evaluation code is generated by script: + * {generator_script} + * + * \param exp_id Expression identifier. + * \param out_value Pointer to int to hold the integer. + * + * \return 0 if exp_id is found. 1 otherwise. + */ +int get_expression( int32_t exp_id, int32_t * out_value ) +{{ +{expression_code} +#line {line_no} "suites/mbed_test.function" + {{ + return( KEY_VALUE_MAPPING_NOT_FOUND ); + }} + return( KEY_VALUE_MAPPING_FOUND ); +}} - return( DEPENDENCY_NOT_SUPPORTED ); -} -int dispatch_test(int cnt, char *params[50]) -{ - int ret; - ((void) cnt); - ((void) params); +/** + * \brief Checks if the dependency i.e. the compile flag is set. + * For optimizing space for embedded targets each dependency + * is identified by a unique identifier instead of string literals. + * Identifiers and check code is generated by script: + * {generator_script} + * + * \param exp_id Dependency identifier. + * + * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED + */ +int dep_check( int dep_id ) +{{ +{dep_check_code} +#line {line_no} "suites/mbed_test.function" + {{ + return( DEPENDENCY_NOT_SUPPORTED ); + }} +}} -#if defined(TEST_SUITE_ACTIVE) - ret = DISPATCH_TEST_SUCCESS; - // Cast to void to avoid compiler warnings - (void)ret; +/** + * \brief Function pointer type for test function wrappers. + * + * + * \param void ** Pointer to void pointers. Represents an array of test + * function parameters. + * + * \return void + */ +typedef void (*TestWrapper_t)( void ** ); + + +/** + * \brief Table of test function wrappers. Used by dispatch_test(). + * This table is populated by script: + * {generator_script} + * + */ +TestWrapper_t test_funcs[] = +{{ +{dispatch_code} +#line {line_no} "suites/mbed_test.function" +}}; + + +/** + * \brief Dispatches test functions based on function index. + * + * \param exp_id Test function index. + * + * \return DISPATCH_TEST_SUCCESS if found + * DISPATCH_TEST_FN_NOT_FOUND if not found + * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. + */ +int dispatch_test( int func_idx, void ** params ) +{{ + int ret = DISPATCH_TEST_SUCCESS; + TestWrapper_t fp = NULL; + + if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) + {{ + fp = test_funcs[func_idx]; + if ( fp ) + fp( params ); + else + ret = ( DISPATCH_UNSUPPORTED_SUITE ); + }} + else + {{ + ret = ( DISPATCH_TEST_FN_NOT_FOUND ); + }} -DISPATCH_FUNCTION - { -#line !LINE_NO! "main_test.function" - mbedtls_fprintf( stdout, - "FAILED\nSkipping unknown test function '%s'\n", - params[0] ); - fflush( stdout ); - ret = DISPATCH_TEST_FN_NOT_FOUND; - } -#else - ret = DISPATCH_UNSUPPORTED_SUITE; -#endif return( ret ); -} +}} +{platform_code} + +#line {line_no} "suites/mbed_test.function" + /*----------------------------------------------------------------------------*/ /* Main Test code */ -#line !LINE_NO! "main_test.function" -#define USAGE \ - "Usage: %s [OPTIONS] files...\n\n" \ - " Command line arguments:\n" \ - " files... One or more test data file. If no file is specified\n" \ - " the followimg default test case is used:\n" \ - " %s\n\n" \ - " Options:\n" \ - " -v | --verbose Display full information about each test\n" \ - " -h | --help Display this information\n\n", \ - argv[0], \ - "TESTCASE_FILENAME" - - -/** Retrieve one input line into buf, which must have room for len - * bytes. The trailing line break (if any) is stripped from the result. - * Lines beginning with the character '#' are skipped. Lines that are - * more than len-1 bytes long including the trailing line break are - * truncated; note that the following bytes remain in the input stream. +/** + * \brief Program main. Invokes platform specific execute_tests(). * - * \return 0 on success, -1 on error or end of file + * \param argc Command line arguments count. + * \param argv Array of command line arguments. + * + * \return Exit code. */ -int get_line( FILE *f, char *buf, size_t len ) -{ - char *ret; - - do - { - ret = fgets( buf, len, f ); - if( ret == NULL ) - return( -1 ); - } - while( buf[0] == '#' ); - - ret = buf + strlen( buf ); - if( ret-- > buf && *ret == '\n' ) - *ret = '\0'; - if( ret-- > buf && *ret == '\r' ) - *ret = '\0'; - - return( 0 ); -} - -int parse_arguments( char *buf, size_t len, char *params[50] ) -{ - int cnt = 0, i; - char *cur = buf; - char *p = buf, *q; - - params[cnt++] = cur; - - while( *p != '\0' && p < buf + len ) - { - if( *p == '\\' ) - { - p++; - p++; - continue; - } - if( *p == ':' ) - { - if( p + 1 < buf + len ) - { - cur = p + 1; - params[cnt++] = cur; - } - *p = '\0'; - } - - p++; - } - - /* Replace newlines, question marks and colons in strings */ - for( i = 0; i < cnt; i++ ) - { - p = params[i]; - q = params[i]; - - while( *p != '\0' ) - { - if( *p == '\\' && *(p + 1) == 'n' ) - { - p += 2; - *(q++) = '\n'; - } - else if( *p == '\\' && *(p + 1) == ':' ) - { - p += 2; - *(q++) = ':'; - } - else if( *p == '\\' && *(p + 1) == '?' ) - { - p += 2; - *(q++) = '?'; - } - else - *(q++) = *(p++); - } - *q = '\0'; - } - - return( cnt ); -} - -#if defined(__GNUC__) -/* At high optimization levels (e.g. gcc -O3), this function may be - * inlined in run_test_snprintf. This can trigger a spurious warning about - * potential misuse of snprintf from gcc -Wformat-truncation (observed with - * gcc 7.2). This warning makes tests in run_test_snprintf redundant on gcc - * only. They are still valid for other compilers. Avoid this warning by - * forbidding inlining of this function by gcc. */ -__attribute__((__noinline__)) -#endif -static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) -{ - int ret; - char buf[10] = "xxxxxxxxx"; - const char ref[10] = "xxxxxxxxx"; - - if( n >= sizeof( buf ) ) - return( -1 ); - ret = mbedtls_snprintf( buf, n, "%s", "123" ); - if( ret < 0 || (size_t) ret >= n ) - ret = -1; - - if( strncmp( ref_buf, buf, sizeof( buf ) ) != 0 || - ref_ret != ret || - memcmp( buf + n, ref + n, sizeof( buf ) - n ) != 0 ) - { - return( 1 ); - } - - return( 0 ); -} - -static int run_test_snprintf( void ) -{ - return( test_snprintf( 0, "xxxxxxxxx", -1 ) != 0 || - test_snprintf( 1, "", -1 ) != 0 || - test_snprintf( 2, "1", -1 ) != 0 || - test_snprintf( 3, "12", -1 ) != 0 || - test_snprintf( 4, "123", 3 ) != 0 || - test_snprintf( 5, "123", 3 ) != 0 ); -} - -int main(int argc, const char *argv[]) -{ - /* Local Configurations and options */ - const char *default_filename = "TESTCASE_FILENAME"; - const char *test_filename = NULL; - const char **test_files = NULL; - int testfile_count = 0; - int option_verbose = 0; - - /* Other Local variables */ - int arg_index = 1; - const char *next_arg; - int testfile_index, ret, i, cnt; - int total_errors = 0, total_tests = 0, total_skipped = 0; - FILE *file; - char buf[5000]; - char *params[50]; - void *pointer; -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) - int stdout_fd = -1; -#endif /* __unix__ || __APPLE__ __MACH__ */ - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ - !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) - unsigned char alloc_buf[1000000]; -#endif - /* Platform setup should be called in the beginning */ - ret = platform_setup(); +int main( int argc, const char *argv[] ) +{{ + int ret = platform_setup(); if( ret != 0 ) - { + {{ mbedtls_fprintf( stderr, "FATAL: Failed to initialize platform - error %d\n", ret ); return( -1 ); - } -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ - !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) - mbedtls_memory_buffer_alloc_init( alloc_buf, sizeof(alloc_buf) ); -#endif - - /* - * The C standard doesn't guarantee that all-bits-0 is the representation - * of a NULL pointer. We do however use that in our code for initializing - * structures, which should work on every modern platform. Let's be sure. - */ - memset( &pointer, 0, sizeof( void * ) ); - if( pointer != NULL ) - { - mbedtls_fprintf( stderr, "all-bits-zero is not a NULL pointer\n" ); - platform_teardown(); - return( 1 ); - } - - /* - * Make sure we have a snprintf that correctly zero-terminates - */ - if( run_test_snprintf() != 0 ) - { - mbedtls_fprintf( stderr, "the snprintf implementation is broken\n" ); - platform_teardown(); - return( 1 ); - } - - while( arg_index < argc) - { - next_arg = argv[ arg_index ]; - - if( strcmp(next_arg, "--verbose" ) == 0 || - strcmp(next_arg, "-v" ) == 0 ) - { - option_verbose = 1; - } - else if( strcmp(next_arg, "--help" ) == 0 || - strcmp(next_arg, "-h" ) == 0 ) - { - mbedtls_fprintf( stdout, USAGE ); - platform_teardown(); - mbedtls_exit( EXIT_SUCCESS ); - } - else - { - /* Not an option, therefore treat all further arguments as the file - * list. - */ - test_files = &argv[ arg_index ]; - testfile_count = argc - arg_index; - } - - arg_index++; - } - - /* If no files were specified, assume a default */ - if ( test_files == NULL || testfile_count == 0 ) - { - test_files = &default_filename; - testfile_count = 1; - } - - /* Initialize the struct that holds information about the last test */ - memset( &test_info, 0, sizeof( test_info ) ); - - /* Now begin to execute the tests in the testfiles */ - for ( testfile_index = 0; - testfile_index < testfile_count; - testfile_index++ ) - { - int unmet_dep_count = 0; - char *unmet_dependencies[20]; - - test_filename = test_files[ testfile_index ]; - - file = fopen( test_filename, "r" ); - if( file == NULL ) - { - mbedtls_fprintf( stderr, "Failed to open test file: %s\n", - test_filename ); - platform_teardown(); - return( 1 ); - } - - while( !feof( file ) ) - { - if( unmet_dep_count > 0 ) - { - mbedtls_fprintf( stderr, - "FATAL: Dep count larger than zero at start of loop\n" ); - platform_teardown(); - mbedtls_exit( MBEDTLS_EXIT_FAILURE ); - } - unmet_dep_count = 0; - - if( ( ret = get_line( file, buf, sizeof(buf) ) ) != 0 ) - break; - mbedtls_fprintf( stdout, "%s%.66s", test_info.failed ? "\n" : "", buf ); - mbedtls_fprintf( stdout, " " ); - for( i = strlen( buf ) + 1; i < 67; i++ ) - mbedtls_fprintf( stdout, "." ); - mbedtls_fprintf( stdout, " " ); - fflush( stdout ); - - total_tests++; - - if( ( ret = get_line( file, buf, sizeof(buf) ) ) != 0 ) - break; - cnt = parse_arguments( buf, strlen(buf), params ); - - if( strcmp( params[0], "depends_on" ) == 0 ) - { - for( i = 1; i < cnt; i++ ) - { - if( dep_check( params[i] ) != DEPENDENCY_SUPPORTED ) - { - if( 0 == option_verbose ) - { - /* Only one count is needed if not verbose */ - unmet_dep_count++; - break; - } - - unmet_dependencies[ unmet_dep_count ] = strdup(params[i]); - if( unmet_dependencies[ unmet_dep_count ] == NULL ) - { - mbedtls_fprintf( stderr, "FATAL: Out of memory\n" ); - platform_teardown(); - mbedtls_exit( MBEDTLS_EXIT_FAILURE ); - } - unmet_dep_count++; - } - } - - if( ( ret = get_line( file, buf, sizeof(buf) ) ) != 0 ) - break; - cnt = parse_arguments( buf, strlen(buf), params ); - } - - // If there are no unmet dependencies execute the test - if( unmet_dep_count == 0 ) - { - test_info.failed = 0; - -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) - /* Suppress all output from the library unless we're verbose - * mode - */ - if( !option_verbose ) - { - stdout_fd = redirect_output( &stdout, "/dev/null" ); - if( stdout_fd == -1 ) - { - platform_teardown(); - /* Redirection has failed with no stdout so exit */ - exit( 1 ); - } - } -#endif /* __unix__ || __APPLE__ __MACH__ */ - - ret = dispatch_test( cnt, params ); - -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) - if( !option_verbose && restore_output( &stdout, stdout_fd ) ) - { - /* Redirection has failed with no stdout so exit */ - platform_teardown(); - exit( 1 ); - } -#endif /* __unix__ || __APPLE__ __MACH__ */ - - } - - if( unmet_dep_count > 0 || ret == DISPATCH_UNSUPPORTED_SUITE ) - { - total_skipped++; - mbedtls_fprintf( stdout, "----" ); - - if( 1 == option_verbose && ret == DISPATCH_UNSUPPORTED_SUITE ) - { - mbedtls_fprintf( stdout, "\n Test Suite not enabled" ); - } - - if( 1 == option_verbose && unmet_dep_count > 0 ) - { - mbedtls_fprintf( stdout, "\n Unmet dependencies: " ); - for( i = 0; i < unmet_dep_count; i++ ) - { - mbedtls_fprintf(stdout, "%s ", - unmet_dependencies[i]); - free(unmet_dependencies[i]); - } - } - mbedtls_fprintf( stdout, "\n" ); - fflush( stdout ); - - unmet_dep_count = 0; - } - else if( ret == DISPATCH_TEST_SUCCESS ) - { - if( test_info.failed == 0 ) - { - mbedtls_fprintf( stdout, "PASS\n" ); - } - else - { - total_errors++; - mbedtls_fprintf( stdout, "FAILED\n" ); - mbedtls_fprintf( stdout, " %s\n at line %d, %s\n", - test_info.test, test_info.line_no, - test_info.filename ); - } - fflush( stdout ); - } - else if( ret == DISPATCH_INVALID_TEST_DATA ) - { - mbedtls_fprintf( stderr, "FAILED: FATAL PARSE ERROR\n" ); - fclose( file ); - platform_teardown(); - mbedtls_exit( 2 ); - } - else - total_errors++; - - if( ( ret = get_line( file, buf, sizeof( buf ) ) ) != 0 ) - break; - if( strlen( buf ) != 0 ) - { - mbedtls_fprintf( stderr, "Should be empty %d\n", - (int) strlen( buf ) ); - platform_teardown(); - return( 1 ); - } - } - fclose( file ); - - /* In case we encounter early end of file */ - for( i = 0; i < unmet_dep_count; i++ ) - free( unmet_dependencies[i] ); - } - - mbedtls_fprintf( stdout, "\n----------------------------------------------------------------------------\n\n"); - if( total_errors == 0 ) - mbedtls_fprintf( stdout, "PASSED" ); - else - mbedtls_fprintf( stdout, "FAILED" ); - - mbedtls_fprintf( stdout, " (%d / %d tests (%d skipped))\n", - total_tests - total_errors, total_tests, total_skipped ); - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && \ - !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) -#if defined(MBEDTLS_MEMORY_DEBUG) - mbedtls_memory_buffer_alloc_status(); -#endif - mbedtls_memory_buffer_alloc_free(); -#endif - -#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) - if( stdout_fd != -1 ) - close_output( stdout ); -#endif /* __unix__ || __APPLE__ __MACH__ */ - + }} + ret = execute_tests( argc, argv ); platform_teardown(); - return( total_errors != 0 ); -} + return( ret ); +}} + diff --git a/tests/suites/mbed_test.function b/tests/suites/mbed_test.function deleted file mode 100644 index ab56dec540..0000000000 --- a/tests/suites/mbed_test.function +++ /dev/null @@ -1,174 +0,0 @@ -#line 2 "suites/mbed_test.function" -/* - * *** THIS FILE HAS BEEN MACHINE GENERATED *** - * - * This file has been machine generated using the script: - * {generator_script} - * - * Test file : {test_file} - * - * The following files were used to create this file. - * - * Main code file : {test_main_file} - * Platform code file : {test_platform_file} - * Helper file : {test_common_helper_file} - * Test suite file : {test_case_file} - * Test suite data : {test_case_data_file} - * - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(MBEDTLS_CONFIG_FILE) -#include -#else -#include MBEDTLS_CONFIG_FILE -#endif - - -/*----------------------------------------------------------------------------*/ -/* Common helper code */ - -{test_common_helpers} - -#line {line_no} "suites/mbed_test.function" - - -/*----------------------------------------------------------------------------*/ -/* Test Suite Code */ - - -#define TEST_SUITE_ACTIVE - -{function_headers} - -{functions_code} - -#line {line_no} "suites/mbed_test.function" - - -/*----------------------------------------------------------------------------*/ -/* Test dispatch code */ - - -/** - * \brief Evaluates an expression/macro into its literal integer value. - * For optimizing space for embedded targets each expression/macro - * is identified by a unique identifier instead of string literals. - * Identifiers and evaluation code is generated by script: - * {generator_script} - * - * \param exp_id Expression identifier. - * \param out_value Pointer to int to hold the integer. - * - * \return 0 if exp_id is found. 1 otherwise. - */ -int get_expression( int32_t exp_id, int32_t * out_value ) -{{ -{expression_code} -#line {line_no} "suites/mbed_test.function" - {{ - return( KEY_VALUE_MAPPING_NOT_FOUND ); - }} - return( KEY_VALUE_MAPPING_FOUND ); -}} - - -/** - * \brief Checks if the dependency i.e. the compile flag is set. - * For optimizing space for embedded targets each dependency - * is identified by a unique identifier instead of string literals. - * Identifiers and check code is generated by script: - * {generator_script} - * - * \param exp_id Dependency identifier. - * - * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED - */ -int dep_check( int dep_id ) -{{ -{dep_check_code} -#line {line_no} "suites/mbed_test.function" - {{ - return( DEPENDENCY_NOT_SUPPORTED ); - }} -}} - - -/** - * \brief Function pointer type for test function wrappers. - * - * - * \param void ** Pointer to void pointers. Represents an array of test - * function parameters. - * - * \return void - */ -typedef void (*TestWrapper_t)( void ** ); - - -/** - * \brief Table of test function wrappers. Used by dispatch_test(). - * This table is populated by script: - * {generator_script} - * - */ -TestWrapper_t test_funcs[] = -{{ -{dispatch_code} -#line {line_no} "suites/mbed_test.function" -}}; - - -/** - * \brief Dispatches test functions based on function index. - * - * \param exp_id Test function index. - * - * \return DISPATCH_TEST_SUCCESS if found - * DISPATCH_TEST_FN_NOT_FOUND if not found - * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. - */ -int dispatch_test( int func_idx, void ** params ) -{{ - int ret = DISPATCH_TEST_SUCCESS; - TestWrapper_t fp = NULL; - - if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) - {{ - fp = test_funcs[func_idx]; - if ( fp ) - fp( params ); - else - ret = ( DISPATCH_UNSUPPORTED_SUITE ); - }} - else - {{ - ret = ( DISPATCH_TEST_FN_NOT_FOUND ); - }} - - return( ret ); -}} - - -{platform_code} - -#line {line_no} "suites/mbed_test.function" - -/*----------------------------------------------------------------------------*/ -/* Main Test code */ - - -/** - * \brief Program main. Invokes platform specific execute_tests(). - * - * \param argc Command line arguments count. - * \param argv Array of command line arguments. - * - * \return Exit code. - */ -int main( int argc, const char *argv[] ) -{{ - return execute_tests( argc, argv ); -}} - From 1de892b85fb1e5f439ad54c98fa11d60f25badf0 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 9 Jun 2017 15:02:36 +0100 Subject: [PATCH 0708/1100] Update code as old template and generator is replaced with new one --- tests/Makefile | 24 +++++++++++------------- tests/scripts/generate_code.py | 8 ++++---- tests/suites/main_test.function | 16 ++++++++-------- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index f0da1cf241..c544c8e0ba 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -176,6 +176,8 @@ func.test_suite_version := test_suite_version .PHONY: all check test clean +all: $(BINARIES) + $(DEP): $(MAKE) -C ../library @@ -184,12 +186,11 @@ $(DEP): C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/mbed_test.function suites/desktop_test.function +$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/desktop_test.function echo " Gen $@" -# perl scripts/generate_code.pl suites $(func.$*) $* - python scripts/gen_mbed_code.py -f suites/$(func.$*).function \ + python scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ - -t suites/mbed_test.function \ + -t suites/main_test.function \ -p suites/desktop_test.function \ -s suites \ --help-file suites/helpers.function \ @@ -201,9 +202,6 @@ $(BINARIES): %$(EXEXT): %.c $(DEP) $(CC) $(LOCAL_CFLAGS) $(CFLAGS) $< $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@ -all: $(BINARIES) - - clean: ifndef WINDOWS rm -rf $(APPS) *.c *.data TESTS @@ -217,8 +215,8 @@ check: $(BINARIES) test: check -# Create separate targets for generating mbed-os tests. -MBED_APPS := $(addprefix mbed_,$(APPS)) +# Create separate targets for generating embedded tests. +EMBEDDED_TESTS := $(addprefix embedded_,$(APPS)) # FIXME: description needs change # Each test suite name is stripped off of prefix test_suite_. mbed-os test dir @@ -228,15 +226,15 @@ MBED_APPS := $(addprefix mbed_,$(APPS)) # name is used as the test group dir. .SECONDEXPANSION: -$(MBED_APPS): mbed_%: suites/$$(func.$$*).function suites/%.data scripts/gen_mbed_code.py suites/helpers.function suites/mbed_test.function suites/embedded_test.function +$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/embedded_test.function echo " Gen ./TESTS/mbedtls/$*/$*.c" - python scripts/gen_mbed_code.py -f suites/$(func.$*).function \ + python scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ - -t suites/mbed_test.function \ + -t suites/main_test.function \ -p suites/embedded_test.function \ -s suites \ --help-file suites/helpers.function \ -o ./TESTS/mbedtls/$* -gen-mbed-test: $(MBED_APPS) +gen-embedded-test: $(EMBEDDED_TESTS) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index 17f70d3cc7..f59eb76834 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -27,14 +27,14 @@ Generates code in following structure. / |-- host_tests/ | |-- mbedtls_test.py -| |-- suites/ -| | |-- *.data files | |-- mbedtls/ | | |-- / | | | |-- main.c +| | | |-- *.data files | | ... | | |-- / | | | |-- main.c +| | | |-- *.data files | | | """ @@ -504,7 +504,7 @@ def gen_from_test_data(data_f, out_data_f, func_info): return dep_check_code, expression_code -def gen_mbed_code(funcs_file, data_file, template_file, platform_file, help_file, suites_dir, c_file, out_data_file): +def generate_code(funcs_file, data_file, template_file, platform_file, help_file, suites_dir, c_file, out_data_file): """ Generate mbed-os test code. @@ -627,7 +627,7 @@ def check_cmd(): if not os.path.exists(d): os.makedirs(d) - gen_mbed_code(args.funcs_file, args.data_file, args.template_file, args.platform_file, + generate_code(args.funcs_file, args.data_file, args.template_file, args.platform_file, args.help_file, args.suites_dir, out_c_file, out_data_file) diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index cd7f360d62..0dcab7d695 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -1,4 +1,4 @@ -#line 2 "suites/mbed_test.function" +#line 2 "suites/main_test.function" /* * *** THIS FILE HAS BEEN MACHINE GENERATED *** * @@ -31,7 +31,7 @@ {test_common_helpers} -#line {line_no} "suites/mbed_test.function" +#line {line_no} "suites/main_test.function" /*----------------------------------------------------------------------------*/ @@ -44,7 +44,7 @@ {functions_code} -#line {line_no} "suites/mbed_test.function" +#line {line_no} "suites/main_test.function" /*----------------------------------------------------------------------------*/ @@ -66,7 +66,7 @@ int get_expression( int32_t exp_id, int32_t * out_value ) {{ {expression_code} -#line {line_no} "suites/mbed_test.function" +#line {line_no} "suites/main_test.function" {{ return( KEY_VALUE_MAPPING_NOT_FOUND ); }} @@ -88,7 +88,7 @@ int get_expression( int32_t exp_id, int32_t * out_value ) int dep_check( int dep_id ) {{ {dep_check_code} -#line {line_no} "suites/mbed_test.function" +#line {line_no} "suites/main_test.function" {{ return( DEPENDENCY_NOT_SUPPORTED ); }} @@ -115,8 +115,8 @@ typedef void (*TestWrapper_t)( void ** ); */ TestWrapper_t test_funcs[] = {{ -{dispatch_code} -#line {line_no} "suites/mbed_test.function" +{dispatch_code} +#line {line_no} "suites/main_test.function" }}; @@ -153,7 +153,7 @@ int dispatch_test( int func_idx, void ** params ) {platform_code} -#line {line_no} "suites/mbed_test.function" +#line {line_no} "suites/main_test.function" /*----------------------------------------------------------------------------*/ /* Main Test code */ From cf32c45bfd3371b15a72c8ba699176ea7545ef83 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 13 Jun 2017 14:55:58 +0100 Subject: [PATCH 0709/1100] Add missing headers and fix name change issues --- tests/suites/test_suite_cipher.function | 4 ++-- tests/suites/test_suite_x509write.function | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index 767e441023..ddb9576e3b 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -485,8 +485,8 @@ void decrypt_test_vec( int cipher_id, int pad_mode, HexParam_t * key, memset( output, 0x00, sizeof( output ) ); #if !defined(MBEDTLS_GCM_C) && !defined(MBEDTLS_CHACHAPOLY_C) - ((void) hex_ad); - ((void) hex_tag); + ((void) ad); + ((void) tag); #endif /* Prepare context */ diff --git a/tests/suites/test_suite_x509write.function b/tests/suites/test_suite_x509write.function index f9ba57623c..c00b1aca8b 100644 --- a/tests/suites/test_suite_x509write.function +++ b/tests/suites/test_suite_x509write.function @@ -1,4 +1,5 @@ /* BEGIN_HEADER */ +#include "mbedtls/bignum.h" #include "mbedtls/x509_crt.h" #include "mbedtls/x509_csr.h" #include "mbedtls/pem.h" From 8c4d5ba763e52fb0bb55a07e5ad9b6d85d0e9b25 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 13 Jun 2017 17:27:52 +0100 Subject: [PATCH 0710/1100] Update CMakeList.txt with new test suites code generator --- tests/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 52632f87c4..ab3f78fc8a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,8 +29,8 @@ function(add_test_suite suite_name) add_custom_command( OUTPUT test_suite_${data_name}.c - COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.pl ${CMAKE_CURRENT_SOURCE_DIR}/suites test_suite_${suite_name} test_suite_${data_name} - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.pl mbedtls suites/helpers.function suites/main_test.function suites/test_suite_${suite_name}.function suites/test_suite_${data_name}.data + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/desktop_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/desktop_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data ) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) From 13c6bfbc2a318656d2aafb79a7730a73674a0261 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 15 Jun 2017 14:45:56 +0100 Subject: [PATCH 0711/1100] Gaurd test suite headers with suite dependency Test suite header code was not gaurded with test suite dependency. But some test suites have additional code in the headers section. Variables in that section become unused if suite functions are gaurded. Hence gaurded the headers section. But this changed cuased missing types in get_expression() function that was originally accessing types defined through suite headers. Hence had to gaurd expressions code as well. Gaurding expressions does not allow parsing the parameters when some types or hash defs are gaurded. Hence added function check_test() to check if test is allowed or not before parsing the parameters. --- tests/scripts/generate_code.py | 30 +++++++++++++++++++++------- tests/suites/desktop_test.function | 12 +++++++---- tests/suites/embedded_test.function | 2 ++ tests/suites/main_test.function | 31 +++++++++++++++++++++++++++-- 4 files changed, 62 insertions(+), 13 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index f59eb76834..c6fc03f53b 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -328,8 +328,8 @@ def parse_functions(funcs_f): function_idx += 1 ifdef, endif = gen_deps(suite_deps) - func_code = ifdef + suite_functions + endif - return dispatch_code, suite_headers, func_code, func_info + func_code = ifdef + suite_headers + suite_functions + endif + return suite_deps, dispatch_code, func_code, func_info def escaped_split(str, ch): @@ -443,13 +443,14 @@ else return exp_code -def gen_from_test_data(data_f, out_data_f, func_info): +def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ Generates dependency checks, expression code and intermediate data file from test data file. :param data_f: :param out_data_f: :param func_info: + :param suite_deps: :return: """ unique_deps = [] @@ -500,7 +501,23 @@ def gen_from_test_data(data_f, out_data_f, func_info): if len(expression_code) == 0: expression_code = '(void) exp_id;\n' expression_code += '(void) out_value;\n' - + ifdef = gen_deps_one_line(suite_deps) + if len(suite_deps): + dep_check_code = ''' +{ifdef} +{code} +#else +(void) dep_id; +#endif +'''.format(ifdef=ifdef, code=dep_check_code) + expression_code = ''' +{ifdef} +{code} +#else +(void) exp_id; +(void) out_value; +#endif +'''.format(ifdef=ifdef, code=expression_code) return dep_check_code, expression_code @@ -539,11 +556,10 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file # Function code with open(funcs_file, 'r') as funcs_f, open(data_file, 'r') as data_f, open(out_data_file, 'w') as out_data_f: - dispatch_code, func_headers, func_code, func_info = parse_functions(funcs_f) - snippets['function_headers'] = func_headers + suite_deps, dispatch_code, func_code, func_info = parse_functions(funcs_f) snippets['functions_code'] = func_code snippets['dispatch_code'] = dispatch_code - dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info) + dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info, suite_deps) snippets['dep_check_code'] = dep_check_code snippets['expression_code'] = expression_code diff --git a/tests/suites/desktop_test.function b/tests/suites/desktop_test.function index 9c9a0b2d44..4c790a85e4 100644 --- a/tests/suites/desktop_test.function +++ b/tests/suites/desktop_test.function @@ -389,6 +389,7 @@ int execute_tests( int argc , const char ** argv ) const char **test_files = NULL; int testfile_count = 0; int option_verbose = 0; + int function_id = 0; /* Other Local variables */ int arg_index = 1; @@ -562,11 +563,14 @@ int execute_tests( int argc , const char ** argv ) } #endif /* __unix__ || __APPLE__ __MACH__ */ - ret = convert_params( cnt - 1, params + 1, int_params ); - if ( DISPATCH_TEST_SUCCESS == ret ) + function_id = strtol( params[0], NULL, 10 ); + if ( (ret = check_test( function_id )) == DISPATCH_TEST_SUCCESS ) { - int function_id = strtol( params[0], NULL, 10 ); - ret = dispatch_test( function_id, (void **)( params + 1 ) ); + ret = convert_params( cnt - 1, params + 1, int_params ); + if ( DISPATCH_TEST_SUCCESS == ret ) + { + ret = dispatch_test( function_id, (void **)( params + 1 ) ); + } } #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function index 4436ccbdd3..312cf91253 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/embedded_test.function @@ -371,6 +371,8 @@ int execute_tests( int args, const char ** argv ) /* Read function id */ function_id = *p; INCR_ASSERT( p, data, data_len, sizeof( uint8_t ) ); + if ( ( ret = check_test( function_id ) ) != DISPATCH_TEST_SUCCESS ) + break; /* Read number of parameters */ count = *p; diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 0dcab7d695..e294e36210 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -40,8 +40,6 @@ #define TEST_SUITE_ACTIVE -{function_headers} - {functions_code} #line {line_no} "suites/main_test.function" @@ -151,6 +149,35 @@ int dispatch_test( int func_idx, void ** params ) }} +/** + * \brief Checks if test function is supported + * + * \param exp_id Test function index. + * + * \return DISPATCH_TEST_SUCCESS if found + * DISPATCH_TEST_FN_NOT_FOUND if not found + * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. + */ +int check_test( int func_idx ) +{{ + int ret = DISPATCH_TEST_SUCCESS; + TestWrapper_t fp = NULL; + + if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) + {{ + fp = test_funcs[func_idx]; + if ( fp == NULL ) + ret = ( DISPATCH_UNSUPPORTED_SUITE ); + }} + else + {{ + ret = ( DISPATCH_TEST_FN_NOT_FOUND ); + }} + + return( ret ); +}} + + {platform_code} #line {line_no} "suites/main_test.function" From 4b54323bcb3b5ea91cec21067146cb702c7d9ec7 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 30 Jun 2017 09:35:21 +0100 Subject: [PATCH 0712/1100] Unit test generate_copy.py --- tests/scripts/generate_code.py | 144 ++--- tests/scripts/generate_code_ut.py | 842 ++++++++++++++++++++++++++++++ 2 files changed, 920 insertions(+), 66 deletions(-) create mode 100644 tests/scripts/generate_code_ut.py diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index c6fc03f53b..b0b368650e 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -1,6 +1,6 @@ """ -mbed SDK -Copyright (c) 2017-2018 ARM Limited +mbed TLS +Copyright (c) 2017 ARM Limited Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -25,17 +25,15 @@ import shutil Generates code in following structure. / -|-- host_tests/ -| |-- mbedtls_test.py -| |-- mbedtls/ -| | |-- / -| | | |-- main.c -| | | |-- *.data files -| | ... -| | |-- / -| | | |-- main.c -| | | |-- *.data files -| | | + |-- mbedtls/ + | |-- / + | | |-- main.c + | | |-- *.data files + | ... + | |-- / + | | |-- main.c + | | |-- *.data files + | | """ @@ -56,6 +54,44 @@ class InvalidFileFormat(Exception): pass +class FileWrapper(file): + """ + File wrapper class. Provides reading with line no. tracking. + """ + + def __init__(self, file_name): + """ + Init file handle. + + :param file_name: + """ + super(FileWrapper, self).__init__(file_name, 'r') + self.line_no = 0 + + def next(self): + """ + Iterator return impl. + :return: + """ + line = super(FileWrapper, self).next() + if line: + self.line_no += 1 + return line + + def readline(self, limit=0): + """ + Wrap the base class readline. + + :param limit: + :return: + """ + return self.next() + + +def split_dep(dep): + return ('!', dep[1:]) if dep[0] == '!' else ('', dep) + + def gen_deps(deps): """ Generates dependency i.e. if def and endif code @@ -63,16 +99,9 @@ def gen_deps(deps): :param deps: :return: """ - dep_start = '' - dep_end = '' - for dep in deps: - if dep[0] == '!': - noT = '!' - dep = dep[1:] - else: - noT = '' - dep_start += '#if %sdefined(%s)\n' % (noT, dep) - dep_end = '#endif /* %s%s */\n' % (noT, dep) + dep_end + dep_start = ''.join(['#if %sdefined(%s)\n' % split_dep(x) for x in deps]) + dep_end = ''.join(['#endif /* %s */\n' % x for x in reversed(deps)]) + return dep_start, dep_end @@ -83,22 +112,16 @@ def gen_deps_one_line(deps): :param deps: :return: """ - defines = [] - for dep in deps: - if dep[0] == '!': - noT = '!' - dep = dep[1:] - else: - noT = '' - defines.append('%sdefined(%s)' % (noT, dep)) - return '#if ' + ' && '.join(defines) + defines = ('#if ' if len(deps) else '') + ' && '.join(['%sdefined(%s)' % split_dep(x) for x in deps]) + return defines -def gen_function_wrapper(name, args_dispatch): +def gen_function_wrapper(name, locals, args_dispatch): """ Creates test function code :param name: + :param locals: :param args_dispatch: :return: """ @@ -110,9 +133,9 @@ void {name}_wrapper( void ** params ) {locals} {name}( {args} ); }} -'''.format(name=name, unused_params='(void)params;' if len(args_dispatch[1]) == 0 else '', - args=', '.join(args_dispatch[1]), - locals=args_dispatch[0]) +'''.format(name=name, unused_params='(void)params;' if len(args_dispatch) == 0 else '', + args=', '.join(args_dispatch), + locals=locals) return wrapper @@ -141,37 +164,33 @@ def gen_dispatch(name, deps): return dispatch_code -def parse_suite_headers(line_no, funcs_f): +def parse_suite_headers(funcs_f): """ Parses function headers. - :param line_no: :param funcs_f: :return: """ - headers = '#line %d "%s"\n' % (line_no + 1, funcs_f.name) + headers = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: - line_no += 1 if re.search(END_HEADER_REGEX, line): break headers += line else: raise InvalidFileFormat("file: %s - end header pattern [%s] not found!" % (funcs_f.name, END_HEADER_REGEX)) - return line_no, headers + return headers -def parse_suite_deps(line_no, funcs_f): +def parse_suite_deps(funcs_f): """ Parses function dependencies. - :param line_no: :param funcs_f: :return: """ deps = [] for line in funcs_f: - line_no += 1 m = re.search('depends_on\:(.*)', line.strip()) if m: deps += [x.strip() for x in m.group(1).split(':')] @@ -180,7 +199,7 @@ def parse_suite_deps(line_no, funcs_f): else: raise InvalidFileFormat("file: %s - end dependency pattern [%s] not found!" % (funcs_f.name, END_DEP_REGEX)) - return line_no, deps + return deps def parse_function_deps(line): @@ -195,7 +214,7 @@ def parse_function_deps(line): if len(dep_str): m = re.search('depends_on:(.*)', dep_str) if m: - deps = m.group(1).strip().split(':') + deps = [x.strip() for x in m.group(1).strip().split(':')] return deps @@ -234,13 +253,13 @@ def parse_function_signature(line): args_dispatch.append('&hex%d' % arg_idx) arg_idx += 1 else: - raise ValueError("Test function arguments can only be 'int' or 'char *'\n%s" % line) + raise ValueError("Test function arguments can only be 'int', 'char *' or 'HexParam_t'\n%s" % line) arg_idx += 1 - return name, args, (locals, args_dispatch) + return name, args, locals, args_dispatch -def parse_function_code(line_no, funcs_f, deps, suite_deps): +def parse_function_code(funcs_f, deps, suite_deps): """ :param line_no: @@ -249,9 +268,8 @@ def parse_function_code(line_no, funcs_f, deps, suite_deps): :param suite_deps: :return: """ - code = '#line %d "%s"\n' % (line_no + 1, funcs_f.name) + code = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: - line_no += 1 # Check function signature m = re.match('.*?\s+(\w+)\s*\(', line, re.I) if m: @@ -259,10 +277,9 @@ def parse_function_code(line_no, funcs_f, deps, suite_deps): if not re.match('.*\)', line): for lin in funcs_f: line += lin - line_no += 1 if re.search('.*?\)', line): break - name, args, args_dispatch = parse_function_signature(line) + name, args, locals, args_dispatch = parse_function_signature(line) code += line.replace(name, 'test_' + name) name = 'test_' + name break @@ -270,7 +287,6 @@ def parse_function_code(line_no, funcs_f, deps, suite_deps): raise InvalidFileFormat("file: %s - Test functions not found!" % funcs_f.name) for line in funcs_f: - line_no += 1 if re.search(END_CASE_REGEX, line): break code += line @@ -281,16 +297,14 @@ def parse_function_code(line_no, funcs_f, deps, suite_deps): if code.find('exit:') == -1: s = code.rsplit('}', 1) if len(s) == 2: - code = """ -exit: + code = """exit: ;; -} -""".join(s) +}""".join(s) - code += gen_function_wrapper(name, args_dispatch) + code += gen_function_wrapper(name, locals, args_dispatch) ifdef, endif = gen_deps(deps) dispatch_code = gen_dispatch(name, suite_deps + deps) - return line_no, name, args, ifdef + code + endif, dispatch_code + return name, args, ifdef + code + endif, dispatch_code def parse_functions(funcs_f): @@ -300,7 +314,6 @@ def parse_functions(funcs_f): :param funcs_f: :return: """ - line_no = 0 suite_headers = '' suite_deps = [] suite_functions = '' @@ -308,20 +321,19 @@ def parse_functions(funcs_f): function_idx = 0 dispatch_code = '' for line in funcs_f: - line_no += 1 if re.search(BEGIN_HEADER_REGEX, line): - line_no, headers = parse_suite_headers(line_no, funcs_f) + headers = parse_suite_headers(funcs_f) suite_headers += headers elif re.search(BEGIN_DEP_REGEX, line): - line_no, deps = parse_suite_deps(line_no, funcs_f) + deps = parse_suite_deps(funcs_f) suite_deps += deps elif re.search(BEGIN_CASE_REGEX, line): deps = parse_function_deps(line) - line_no, func_name, args, func_code, func_dispatch = parse_function_code(line_no, funcs_f, deps, suite_deps) + func_name, args, func_code, func_dispatch = parse_function_code(funcs_f, deps, suite_deps) suite_functions += func_code # Generate dispatch code and enumeration info assert func_name not in func_info, "file: %s - function %s re-declared at line %d" % \ - (funcs_f.name, func_name, line_no) + (funcs_f.name, func_name, funcs_f.line_no) func_info[func_name] = (function_idx, args) dispatch_code += '/* Function Id: %d */\n' % function_idx dispatch_code += func_dispatch diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py new file mode 100644 index 0000000000..f941316ef3 --- /dev/null +++ b/tests/scripts/generate_code_ut.py @@ -0,0 +1,842 @@ +""" +mbed TLS +Copyright (c) 2017 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from StringIO import StringIO +from unittest import TestCase, main as unittest_main +from mock import patch +from generate_code import * + + +""" +Unit tests for generate_code.py +""" + + +class GenDep(TestCase): + """ + Test suite for function gen_dep() + """ + + def test_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['DEP1', 'DEP2'] + dep_start, dep_end = gen_deps(deps) + ifdef1, ifdef2 = dep_start.splitlines() + endif1, endif2 = dep_end.splitlines() + self.assertEqual(ifdef1, '#if defined(DEP1)', 'ifdef generated incorrectly') + self.assertEqual(ifdef2, '#if defined(DEP2)', 'ifdef generated incorrectly') + self.assertEqual(endif1, '#endif /* DEP2 */', 'endif generated incorrectly') + self.assertEqual(endif2, '#endif /* DEP1 */', 'endif generated incorrectly') + + def test_disabled_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['!DEP1', '!DEP2'] + dep_start, dep_end = gen_deps(deps) + ifdef1, ifdef2 = dep_start.splitlines() + endif1, endif2 = dep_end.splitlines() + self.assertEqual(ifdef1, '#if !defined(DEP1)', 'ifdef generated incorrectly') + self.assertEqual(ifdef2, '#if !defined(DEP2)', 'ifdef generated incorrectly') + self.assertEqual(endif1, '#endif /* !DEP2 */', 'endif generated incorrectly') + self.assertEqual(endif2, '#endif /* !DEP1 */', 'endif generated incorrectly') + + def test_mixed_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['!DEP1', 'DEP2'] + dep_start, dep_end = gen_deps(deps) + ifdef1, ifdef2 = dep_start.splitlines() + endif1, endif2 = dep_end.splitlines() + self.assertEqual(ifdef1, '#if !defined(DEP1)', 'ifdef generated incorrectly') + self.assertEqual(ifdef2, '#if defined(DEP2)', 'ifdef generated incorrectly') + self.assertEqual(endif1, '#endif /* DEP2 */', 'endif generated incorrectly') + self.assertEqual(endif2, '#endif /* !DEP1 */', 'endif generated incorrectly') + + def test_empty_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = [] + dep_start, dep_end = gen_deps(deps) + self.assertEqual(dep_start, '', 'ifdef generated incorrectly') + self.assertEqual(dep_end, '', 'ifdef generated incorrectly') + + def test_large_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = [] + count = 10 + for i in range(count): + deps.append('DEP%d' % i) + dep_start, dep_end = gen_deps(deps) + self.assertEqual(len(dep_start.splitlines()), count, 'ifdef generated incorrectly') + self.assertEqual(len(dep_end.splitlines()), count, 'ifdef generated incorrectly') + + +class GenDepOneLine(TestCase): + """ + Test Suite for testing gen_deps_one_line() + """ + + def test_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['DEP1', 'DEP2'] + dep_str = gen_deps_one_line(deps) + self.assertEqual(dep_str, '#if defined(DEP1) && defined(DEP2)', 'ifdef generated incorrectly') + + def test_disabled_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['!DEP1', '!DEP2'] + dep_str = gen_deps_one_line(deps) + self.assertEqual(dep_str, '#if !defined(DEP1) && !defined(DEP2)', 'ifdef generated incorrectly') + + def test_mixed_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = ['!DEP1', 'DEP2'] + dep_str = gen_deps_one_line(deps) + self.assertEqual(dep_str, '#if !defined(DEP1) && defined(DEP2)', 'ifdef generated incorrectly') + + def test_empty_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = [] + dep_str = gen_deps_one_line(deps) + self.assertEqual(dep_str, '', 'ifdef generated incorrectly') + + def test_large_deps_list(self): + """ + Test that gen_dep() correctly creates deps for given dependency list. + :return: + """ + deps = [] + count = 10 + for i in range(count): + deps.append('DEP%d' % i) + dep_str = gen_deps_one_line(deps) + expected = '#if ' + ' && '.join(['defined(%s)' % x for x in deps]) + self.assertEqual(dep_str, expected, 'ifdef generated incorrectly') + + +class GenFunctionWrapper(TestCase): + """ + Test Suite for testing gen_function_wrapper() + """ + + def test_params_unpack(self): + """ + Test that params are properly unpacked in the function call. + + :return: + """ + code = gen_function_wrapper('test_a', '', ('a', 'b', 'c', 'd')) + expected = ''' +void test_a_wrapper( void ** params ) +{ + + + test_a( a, b, c, d ); +} +''' + self.assertEqual(code, expected) + + def test_local(self): + """ + Test that params are properly unpacked in the function call. + + :return: + """ + code = gen_function_wrapper('test_a', 'int x = 1;', ('x', 'b', 'c', 'd')) + expected = ''' +void test_a_wrapper( void ** params ) +{ + +int x = 1; + test_a( x, b, c, d ); +} +''' + self.assertEqual(code, expected) + + def test_empty_params(self): + """ + Test that params are properly unpacked in the function call. + + :return: + """ + code = gen_function_wrapper('test_a', '', ()) + expected = ''' +void test_a_wrapper( void ** params ) +{ + (void)params; + + test_a( ); +} +''' + self.assertEqual(code, expected) + + +class GenDispatch(TestCase): + """ + Test suite for testing gen_dispatch() + """ + + def test_dispatch(self): + """ + Test that dispatch table entry is generated correctly. + :return: + """ + code = gen_dispatch('test_a', ['DEP1', 'DEP2']) + expected = ''' +#if defined(DEP1) && defined(DEP2) + test_a_wrapper, +#else + NULL, +#endif +''' + self.assertEqual(code, expected) + + def test_empty_deps(self): + """ + Test empty dependency list. + :return: + """ + code = gen_dispatch('test_a', []) + expected = ''' + test_a_wrapper, +''' + self.assertEqual(code, expected) + + +class StringIOWrapper(StringIO, object): + """ + file like class to mock file object in tests. + """ + def __init__(self, file_name, data, line_no = 1): + """ + Init file handle. + + :param file_name: + :param data: + :param line_no: + """ + super(StringIOWrapper, self).__init__(data) + self.line_no = line_no + self.name = file_name + + def next(self): + """ + Iterator return impl. + :return: + """ + line = super(StringIOWrapper, self).next() + return line + + def readline(self, limit=0): + """ + Wrap the base class readline. + + :param limit: + :return: + """ + line = super(StringIOWrapper, self).readline() + if line: + self.line_no += 1 + return line + + +class ParseSuiteHeaders(TestCase): + """ + Test Suite for testing parse_suite_headers(). + """ + + def test_suite_headers(self): + """ + Test that suite headers are parsed correctly. + + :return: + """ + data = '''#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +/* END_HEADER */ +''' + expected = '''#line 1 "test_suite_ut.function" +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +''' + s = StringIOWrapper('test_suite_ut.function', data, line_no=0) + headers = parse_suite_headers(s) + self.assertEqual(headers, expected) + + def test_line_no(self): + """ + Test that #line is set to correct line no. in source .function file. + + :return: + """ + data = '''#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +/* END_HEADER */ +''' + offset_line_no = 5 + expected = '''#line %d "test_suite_ut.function" +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +''' % (offset_line_no + 1) + s = StringIOWrapper('test_suite_ut.function', data, offset_line_no) + headers = parse_suite_headers(s) + self.assertEqual(headers, expected) + + def test_no_end_header_comment(self): + """ + Test that InvalidFileFormat is raised when end header comment is missing. + :return: + """ + data = '''#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 + +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(InvalidFileFormat, parse_suite_headers, s) + + +class ParseSuiteDeps(TestCase): + """ + Test Suite for testing parse_suite_deps(). + """ + + def test_suite_deps(self): + """ + + :return: + """ + data = ''' + * depends_on:MBEDTLS_ECP_C + * END_DEPENDENCIES + */ +''' + expected = ['MBEDTLS_ECP_C'] + s = StringIOWrapper('test_suite_ut.function', data) + deps = parse_suite_deps(s) + self.assertEqual(deps, expected) + + def test_no_end_dep_comment(self): + """ + Test that InvalidFileFormat is raised when end dep comment is missing. + :return: + """ + data = ''' +* depends_on:MBEDTLS_ECP_C +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(InvalidFileFormat, parse_suite_deps, s) + + def test_deps_split(self): + """ + Test that InvalidFileFormat is raised when end dep comment is missing. + :return: + """ + data = ''' + * depends_on:MBEDTLS_ECP_C:A:B: C : D :F : G: !H + * END_DEPENDENCIES + */ +''' + expected = ['MBEDTLS_ECP_C', 'A', 'B', 'C', 'D', 'F', 'G', '!H'] + s = StringIOWrapper('test_suite_ut.function', data) + deps = parse_suite_deps(s) + self.assertEqual(deps, expected) + + +class ParseFuncDeps(TestCase): + """ + Test Suite for testing parse_function_deps() + """ + + def test_function_deps(self): + """ + Test that parse_function_deps() correctly parses function dependencies. + :return: + """ + line = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */' + expected = ['MBEDTLS_ENTROPY_NV_SEED', 'MBEDTLS_FS_IO'] + deps = parse_function_deps(line) + self.assertEqual(deps, expected) + + def test_no_deps(self): + """ + Test that parse_function_deps() correctly parses function dependencies. + :return: + """ + line = '/* BEGIN_CASE */' + deps = parse_function_deps(line) + self.assertEqual(deps, []) + + def test_poorly_defined_deps(self): + """ + Test that parse_function_deps() correctly parses function dependencies. + :return: + """ + line = '/* BEGIN_CASE depends_on:MBEDTLS_FS_IO: A : !B:C : F*/' + deps = parse_function_deps(line) + self.assertEqual(deps, ['MBEDTLS_FS_IO', 'A', '!B', 'C', 'F']) + + +class ParseFuncSignature(TestCase): + """ + Test Suite for parse_function_signature(). + """ + + def test_int_and_char_params(self): + """ + + :return: + """ + line = 'void entropy_threshold( char * a, int b, int result )' + name, args, local, arg_dispatch = parse_function_signature(line) + self.assertEqual(name, 'entropy_threshold') + self.assertEqual(args, ['char*', 'int', 'int']) + self.assertEqual(local, '') + self.assertEqual(arg_dispatch, ['(char *) params[0]', '*( (int *) params[1] )', '*( (int *) params[2] )']) + + def test_hex_params(self): + """ + + :return: + """ + line = 'void entropy_threshold( char * a, HexParam_t * h, int result )' + name, args, local, arg_dispatch = parse_function_signature(line) + self.assertEqual(name, 'entropy_threshold') + self.assertEqual(args, ['char*', 'hex', 'int']) + self.assertEqual(local, ' HexParam_t hex1 = {(uint8_t *) params[1], *( (uint32_t *) params[2] )};\n') + self.assertEqual(arg_dispatch, ['(char *) params[0]', '&hex1', '*( (int *) params[3] )']) + + def test_non_void_function(self): + """ + + :return: + """ + line = 'int entropy_threshold( char * a, HexParam_t * h, int result )' + self.assertRaises(ValueError, parse_function_signature, line) + + def test_unsupported_arg(self): + """ + + :return: + """ + line = 'int entropy_threshold( char * a, HexParam_t * h, int * result )' + self.assertRaises(ValueError, parse_function_signature, line) + + def test_no_params(self): + """ + + :return: + """ + line = 'void entropy_threshold()' + name, args, local, arg_dispatch = parse_function_signature(line) + self.assertEqual(name, 'entropy_threshold') + self.assertEqual(args, []) + self.assertEqual(local, '') + self.assertEqual(arg_dispatch, []) + + +class ParseFunctionCode(TestCase): + """ + Test suite for testing parse_function_code() + """ + + def test_no_function(self): + """ + + :return: + """ + data = ''' +No +test +function +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + + def test_no_end_case_comment(self): + """ + + :return: + """ + data = ''' +void test_func() +{ +} +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + + @patch("generate_code.parse_function_signature") + def test_parse_function_signature_called(self, parse_function_signature_mock): + """ + + :return: + """ + parse_function_signature_mock.return_value = ('test_func', [], '', []) + data = ''' +void test_func() +{ +} +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + self.assertTrue(parse_function_signature_mock.called) + parse_function_signature_mock.assert_called_with('void test_func()\n') + + @patch("generate_code.gen_dispatch") + @patch("generate_code.gen_deps") + @patch("generate_code.gen_function_wrapper") + @patch("generate_code.parse_function_signature") + def test_return(self, parse_function_signature_mock, + gen_function_wrapper_mock, + gen_deps_mock, + gen_dispatch_mock): + """ + + :return: + """ + parse_function_signature_mock.return_value = ('func', [], '', []) + gen_function_wrapper_mock.return_value = '' + gen_deps_mock.side_effect = gen_deps + gen_dispatch_mock.side_effect = gen_dispatch + data = ''' +void func() +{ + ba ba black sheep + have you any wool +} +/* END_CASE */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + name, arg, code, dispatch_code = parse_function_code(s, [], []) + + #self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + self.assertTrue(parse_function_signature_mock.called) + parse_function_signature_mock.assert_called_with('void func()\n') + gen_function_wrapper_mock.assert_called_with('test_func', '', []) + self.assertEqual(name, 'test_func') + self.assertEqual(arg, []) + expected = '''#line 2 "test_suite_ut.function" +void test_func() +{ + ba ba black sheep + have you any wool +exit: + ;; +} +''' + self.assertEqual(code, expected) + self.assertEqual(dispatch_code, "\n test_func_wrapper,\n") + + @patch("generate_code.gen_dispatch") + @patch("generate_code.gen_deps") + @patch("generate_code.gen_function_wrapper") + @patch("generate_code.parse_function_signature") + def test_with_exit_label(self, parse_function_signature_mock, + gen_function_wrapper_mock, + gen_deps_mock, + gen_dispatch_mock): + """ + + :return: + """ + parse_function_signature_mock.return_value = ('func', [], '', []) + gen_function_wrapper_mock.return_value = '' + gen_deps_mock.side_effect = gen_deps + gen_dispatch_mock.side_effect = gen_dispatch + data = ''' +void func() +{ + ba ba black sheep + have you any wool +exit: + yes sir yes sir + 3 bags full +} +/* END_CASE */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + name, arg, code, dispatch_code = parse_function_code(s, [], []) + + expected = '''#line 2 "test_suite_ut.function" +void test_func() +{ + ba ba black sheep + have you any wool +exit: + yes sir yes sir + 3 bags full +} +''' + self.assertEqual(code, expected) + + +class ParseFunction(TestCase): + """ + Test Suite for testing parse_functions() + """ + + @patch("generate_code.parse_suite_headers") + def test_begin_header(self, parse_suite_headers_mock): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + def stop(this): + raise Exception + parse_suite_headers_mock.side_effect = stop + data = '''/* BEGIN_HEADER */ +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +/* END_HEADER */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, s) + parse_suite_headers_mock.assert_called_with(s) + self.assertEqual(s.line_no, 2) + + @patch("generate_code.parse_suite_deps") + def test_begin_dep(self, parse_suite_deps_mock): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + def stop(this): + raise Exception + parse_suite_deps_mock.side_effect = stop + data = '''/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_ECP_C + * END_DEPENDENCIES + */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, s) + parse_suite_deps_mock.assert_called_with(s) + self.assertEqual(s.line_no, 2) + + @patch("generate_code.parse_function_deps") + def test_begin_function_dep(self, parse_function_deps_mock): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + def stop(this): + raise Exception + parse_function_deps_mock.side_effect = stop + + deps_str = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' + data = '''%svoid test_func() +{ +} +''' % deps_str + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, s) + parse_function_deps_mock.assert_called_with(deps_str) + self.assertEqual(s.line_no, 2) + + @patch("generate_code.parse_function_code") + @patch("generate_code.parse_function_deps") + def test_return(self, parse_function_deps_mock, parse_function_code_mock): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + def stop(this): + raise Exception + parse_function_deps_mock.return_value = [] + in_func_code= '''void test_func() +{ +} +''' + func_dispatch = ''' + test_func_wrapper, +''' + parse_function_code_mock.return_value = 'test_func', [], in_func_code, func_dispatch + deps_str = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' + data = '''%svoid test_func() +{ +} +''' % deps_str + s = StringIOWrapper('test_suite_ut.function', data) + suite_deps, dispatch_code, func_code, func_info = parse_functions(s) + parse_function_deps_mock.assert_called_with(deps_str) + parse_function_code_mock.assert_called_with(s, [], []) + self.assertEqual(s.line_no, 5) + self.assertEqual(suite_deps, []) + expected_dispatch_code = '''/* Function Id: 0 */ + + test_func_wrapper, +''' + self.assertEqual(dispatch_code, expected_dispatch_code) + self.assertEqual(func_code, in_func_code) + self.assertEqual(func_info, {'test_func': (0, [])}) + + def test_parsing(self): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + data = '''/* BEGIN_HEADER */ +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_ECP_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ +void func1() +{ +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ +void func2() +{ +} +/* END_CASE */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + suite_deps, dispatch_code, func_code, func_info = parse_functions(s) + self.assertEqual(s.line_no, 23) + self.assertEqual(suite_deps, ['MBEDTLS_ECP_C']) + + expected_dispatch_code = '''/* Function Id: 0 */ + +#if defined(MBEDTLS_ECP_C) && defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_FS_IO) + test_func1_wrapper, +#else + NULL, +#endif +/* Function Id: 1 */ + +#if defined(MBEDTLS_ECP_C) && defined(MBEDTLS_ENTROPY_NV_SEED) && defined(MBEDTLS_FS_IO) + test_func2_wrapper, +#else + NULL, +#endif +''' + self.assertEqual(dispatch_code, expected_dispatch_code) + expected_func_code = '''#if defined(MBEDTLS_ECP_C) +#line 3 "test_suite_ut.function" +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +#if defined(MBEDTLS_ENTROPY_NV_SEED) +#if defined(MBEDTLS_FS_IO) +#line 14 "test_suite_ut.function" +void test_func1() +{ +exit: + ;; +} + +void test_func1_wrapper( void ** params ) +{ + (void)params; + + test_func1( ); +} +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_ENTROPY_NV_SEED */ +#if defined(MBEDTLS_ENTROPY_NV_SEED) +#if defined(MBEDTLS_FS_IO) +#line 20 "test_suite_ut.function" +void test_func2() +{ +exit: + ;; +} + +void test_func2_wrapper( void ** params ) +{ + (void)params; + + test_func2( ); +} +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_ENTROPY_NV_SEED */ +#endif /* MBEDTLS_ECP_C */ +''' + self.assertEqual(func_code, expected_func_code) + self.assertEqual(func_info, {'test_func1': (0, []), 'test_func2': (1, [])}) + + def test_same_function_name(self): + """ + Test that begin header is checked and parse_suite_headers() is called. + :return: + """ + data = '''/* BEGIN_HEADER */ +#include "mbedtls/ecp.h" + +#define ECP_PF_UNKNOWN -1 +/* END_HEADER */ + +/* BEGIN_DEPENDENCIES + * depends_on:MBEDTLS_ECP_C + * END_DEPENDENCIES + */ + +/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ +void func() +{ +} +/* END_CASE */ + +/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */ +void func() +{ +} +/* END_CASE */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(AssertionError, parse_functions, s) + + +if __name__=='__main__': + unittest_main() \ No newline at end of file From 5e2ac1fb2934e531d28bb015ca5e053cb83397cc Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 3 Jul 2017 13:58:20 +0100 Subject: [PATCH 0713/1100] Updated generate_code.py unit tests --- tests/scripts/generate_code.py | 37 ++-- tests/scripts/generate_code_ut.py | 274 +++++++++++++++++++++++++++++- 2 files changed, 299 insertions(+), 12 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index b0b368650e..b344f8ce76 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -362,14 +362,15 @@ def escaped_split(str, ch): out.append(part) part = '' else: - part += str[i] escape = not escape and str[i] == '\\' + if not escape: + part += str[i] if len(part): out.append(part) return out -def parse_test_data(data_f): +def parse_test_data(data_f, debug=False): """ Parses .data file @@ -380,14 +381,16 @@ def parse_test_data(data_f): STATE_READ_ARGS = 1 state = STATE_READ_NAME deps = [] - + name = '' for line in data_f: line = line.strip() if len(line) and line[0] == '#': # Skip comments continue - # skip blank lines + # Blank line indicates end of test if len(line) == 0: + assert state != STATE_READ_ARGS, "Newline before arguments. " \ + "Test function and arguments missing for %s" % name continue if state == STATE_READ_NAME: @@ -398,7 +401,7 @@ def parse_test_data(data_f): # Check dependencies m = re.search('depends_on\:(.*)', line) if m: - deps = m.group(1).split(':') + deps = [x.strip() for x in m.group(1).split(':') if len(x.strip())] else: # Read test vectors parts = escaped_split(line, ':') @@ -407,6 +410,8 @@ def parse_test_data(data_f): yield name, function, deps, args deps = [] state = STATE_READ_NAME + assert state != STATE_READ_ARGS, "Newline before arguments. " \ + "Test function and arguments missing for %s" % name def gen_dep_check(dep_id, dep): @@ -417,11 +422,9 @@ def gen_dep_check(dep_id, dep): :param dep: :return: """ - if dep[0] == '!': - noT = '!' - dep = dep[1:] - else: - noT = '' + assert dep_id > -1, "Dependency Id should be a positive integer." + noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) + assert len(dep) > 0, "Dependency should not be an empty string." dep_check = ''' if ( dep_id == {id} ) {{ @@ -433,7 +436,6 @@ if ( dep_id == {id} ) }} else '''.format(noT=noT, macro=dep, id=dep_id) - return dep_check @@ -445,6 +447,8 @@ def gen_expression_check(exp_id, exp): :param exp: :return: """ + assert exp_id > -1, "Expression Id should be a positive integer." + assert len(exp) > 0, "Expression should not be an empty string." exp_code = ''' if ( exp_id == {exp_id} ) {{ @@ -455,6 +459,17 @@ else return exp_code +def find_unique_id(val, vals): + """ + Check if val already in vals. Gives a unique Identifier for the val. + :param val: + :param vals: + :return: + """ + if val not in vals: + vals.append(val) + + def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ Generates dependency checks, expression code and intermediate data file from test data file. diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py index f941316ef3..c261b27423 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/generate_code_ut.py @@ -838,5 +838,277 @@ void func() self.assertRaises(AssertionError, parse_functions, s) +class ExcapedSplit(TestCase): + """ + Test suite for testing escaped_split() + """ + + def test_invalid_input(self): + """ + Test when input split character is not a character. + :return: + """ + self.assertRaises(ValueError, escaped_split, '', 'string') + + def test_empty_string(self): + """ + Test empty strig input. + :return: + """ + splits = escaped_split('', ':') + self.assertEqual(splits, []) + + def test_no_escape(self): + """ + Test with no escape character. The behaviour should be same as str.split() + :return: + """ + s = 'yahoo:google' + splits = escaped_split(s, ':') + self.assertEqual(splits, s.split(':')) + + def test_escaped_input(self): + """ + Test imput that has escaped delimiter. + :return: + """ + s = 'yahoo\:google:facebook' + splits = escaped_split(s, ':') + self.assertEqual(splits, ['yahoo:google', 'facebook']) + + def test_escaped_escape(self): + """ + Test imput that has escaped delimiter. + :return: + """ + s = 'yahoo\\\:google:facebook' + splits = escaped_split(s, ':') + self.assertEqual(splits, ['yahoo\\', 'google', 'facebook']) + + def test_all_at_once(self): + """ + Test imput that has escaped delimiter. + :return: + """ + s = 'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' + splits = escaped_split(s, ':') + self.assertEqual(splits, ['yahoo\\', 'google', 'facebook:instagram\\', 'bbc\\', 'wikipedia']) + +class ParseTestData(TestCase): + """ + Test suite for parse test data. + """ + + def test_parser(self): + """ + Test that tests are parsed correctly from data file. + :return: + """ + data = """ +Diffie-Hellman full exchange #1 +dhm_do_dhm:10:"23":10:"5" + +Diffie-Hellman full exchange #2 +dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" + +Diffie-Hellman full exchange #3 +dhm_do_dhm:10:"9345098382739712938719287391879381271":10:"9345098792137312973297123912791271" + +Diffie-Hellman selftest +dhm_selftest: +""" + s = StringIOWrapper('test_suite_ut.function', data) + tests = [(name, function, deps, args) for name, function, deps, args in parse_test_data(s)] + t1, t2, t3, t4 = tests + self.assertEqual(t1[0], 'Diffie-Hellman full exchange #1') + self.assertEqual(t1[1], 'dhm_do_dhm') + self.assertEqual(t1[2], []) + self.assertEqual(t1[3], ['10', '"23"', '10', '"5"']) + + self.assertEqual(t2[0], 'Diffie-Hellman full exchange #2') + self.assertEqual(t2[1], 'dhm_do_dhm') + self.assertEqual(t2[2], []) + self.assertEqual(t2[3], ['10', '"93450983094850938450983409623"', '10', '"9345098304850938450983409622"']) + + self.assertEqual(t3[0], 'Diffie-Hellman full exchange #3') + self.assertEqual(t3[1], 'dhm_do_dhm') + self.assertEqual(t3[2], []) + self.assertEqual(t3[3], ['10', '"9345098382739712938719287391879381271"', '10', '"9345098792137312973297123912791271"']) + + self.assertEqual(t4[0], 'Diffie-Hellman selftest') + self.assertEqual(t4[1], 'dhm_selftest') + self.assertEqual(t4[2], []) + self.assertEqual(t4[3], []) + + def test_with_dependencies(self): + """ + Test that tests with dependencies are parsed. + :return: + """ + data = """ +Diffie-Hellman full exchange #1 +depends_on:YAHOO +dhm_do_dhm:10:"23":10:"5" + +Diffie-Hellman full exchange #2 +dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" + +""" + s = StringIOWrapper('test_suite_ut.function', data) + tests = [(name, function, deps, args) for name, function, deps, args in parse_test_data(s)] + t1, t2 = tests + self.assertEqual(t1[0], 'Diffie-Hellman full exchange #1') + self.assertEqual(t1[1], 'dhm_do_dhm') + self.assertEqual(t1[2], ['YAHOO']) + self.assertEqual(t1[3], ['10', '"23"', '10', '"5"']) + + self.assertEqual(t2[0], 'Diffie-Hellman full exchange #2') + self.assertEqual(t2[1], 'dhm_do_dhm') + self.assertEqual(t2[2], []) + self.assertEqual(t2[3], ['10', '"93450983094850938450983409623"', '10', '"9345098304850938450983409622"']) + + def test_no_args(self): + """ + Test AssertionError is raised when test function name and args line is missing. + :return: + """ + data = """ +Diffie-Hellman full exchange #1 +depends_on:YAHOO + + +Diffie-Hellman full exchange #2 +dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" + +""" + s = StringIOWrapper('test_suite_ut.function', data) + e = None + try: + for x, y, z, a in parse_test_data(s): + pass + except AssertionError, e: + pass + self.assertEqual(type(e), AssertionError) + + def test_incomplete_data(self): + """ + Test AssertionError is raised when test function name and args line is missing. + :return: + """ + data = """ +Diffie-Hellman full exchange #1 +depends_on:YAHOO +""" + s = StringIOWrapper('test_suite_ut.function', data) + e = None + try: + for x, y, z, a in parse_test_data(s): + pass + except AssertionError, e: + pass + self.assertEqual(type(e), AssertionError) + + +class GenDepCheck(TestCase): + """ + Test suite for gen_dep_check(). It is assumed this function is called with valid inputs. + """ + + def test_gen_dep_check(self): + """ + Test that dependency check code generated correctly. + :return: + """ + expected = """ +if ( dep_id == 5 ) +{ +#if defined(YAHOO) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +""" + out = gen_dep_check(5, 'YAHOO') + self.assertEqual(out, expected) + + def test_noT(self): + """ + Test dependency with !. + :return: + """ + expected = """ +if ( dep_id == 5 ) +{ +#if !defined(YAHOO) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +""" + out = gen_dep_check(5, '!YAHOO') + self.assertEqual(out, expected) + + def test_empty_dependency(self): + """ + Test invalid dependency input. + :return: + """ + self.assertRaises(AssertionError, gen_dep_check, 5, '!') + + def test_negative_dep_id(self): + """ + Test invalid dependency input. + :return: + """ + self.assertRaises(AssertionError, gen_dep_check, -1, 'YAHOO') + + +class GenExpCheck(TestCase): + """ + Test suite for gen_expression_check(). It is assumed this function is called with valid inputs. + """ + + def test_gen_exp_check(self): + """ + Test that expression check code generated correctly. + :return: + """ + expected = """ +if ( exp_id == 5 ) +{ + *out_value = YAHOO; +} +else +""" + out = gen_expression_check(5, 'YAHOO') + self.assertEqual(out, expected) + + def test_invalid_expression(self): + """ + Test invalid expression input. + :return: + """ + self.assertRaises(AssertionError, gen_expression_check, 5, '') + + def test_negative_exp_id(self): + """ + Test invalid expression id. + :return: + """ + self.assertRaises(AssertionError, gen_expression_check, -1, 'YAHOO') + + +class GenFromTestData(TestCase): + """ + Test suite for gen_from_test_data() + """ + + pass + + if __name__=='__main__': - unittest_main() \ No newline at end of file + unittest_main() From acc5473ac956e8951b4a4911cd994eab0971ced6 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 3 Jul 2017 14:06:45 +0100 Subject: [PATCH 0714/1100] Use FileWrapper class in place of file where line number is required --- tests/scripts/generate_code.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index b344f8ce76..bc44b8cc06 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -362,9 +362,8 @@ def escaped_split(str, ch): out.append(part) part = '' else: + part += str[i] escape = not escape and str[i] == '\\' - if not escape: - part += str[i] if len(part): out.append(part) return out @@ -582,7 +581,7 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file out_data_file.replace('\\', '\\\\')) # escape '\' # Function code - with open(funcs_file, 'r') as funcs_f, open(data_file, 'r') as data_f, open(out_data_file, 'w') as out_data_f: + with FileWrapper(funcs_file) as funcs_f, open(data_file, 'r') as data_f, open(out_data_file, 'w') as out_data_f: suite_deps, dispatch_code, func_code, func_info = parse_functions(funcs_f) snippets['functions_code'] = func_code snippets['dispatch_code'] = dispatch_code From 599cd247e6120d9279022e1e369b637479390703 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 6 Jul 2017 17:34:27 +0100 Subject: [PATCH 0715/1100] Update unit tests for code generator and make code generator more testable. --- tests/scripts/generate_code.py | 163 +++++++----- tests/scripts/generate_code_ut.py | 421 +++++++++++++++++++++++++++++- 2 files changed, 520 insertions(+), 64 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index bc44b8cc06..7af6fdf29b 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -347,6 +347,8 @@ def parse_functions(funcs_f): def escaped_split(str, ch): """ Split str on character ch but ignore escaped \{ch} + Since return value is used to write back to the intermediate data file. + Any escape characters in the input are retained in the output. :param str: :param ch: @@ -458,15 +460,98 @@ else return exp_code -def find_unique_id(val, vals): +def write_deps(out_data_f, test_deps, unique_deps): """ - Check if val already in vals. Gives a unique Identifier for the val. - :param val: - :param vals: + Write dependencies to intermediate test data file. + It also returns dependency check code. + + :param out_data_f: + :param dep: + :param unique_deps: :return: """ - if val not in vals: - vals.append(val) + dep_check_code = '' + if len(test_deps): + out_data_f.write('depends_on') + for dep in test_deps: + if dep not in unique_deps: + unique_deps.append(dep) + dep_id = unique_deps.index(dep) + dep_check_code += gen_dep_check(dep_id, dep) + else: + dep_id = unique_deps.index(dep) + out_data_f.write(':' + str(dep_id)) + out_data_f.write('\n') + return dep_check_code + + +def write_parameters(out_data_f, test_args, func_args, unique_expressions): + """ + Writes test parameters to the intermediate data file. + Also generates expression code. + + :param out_data_f: + :param test_args: + :param func_args: + :param unique_expressions: + :return: + """ + expression_code = '' + for i in xrange(len(test_args)): + typ = func_args[i] + val = test_args[i] + + # check if val is a non literal int val + if typ == 'int' and not re.match('(\d+$)|((0x)?[0-9a-fA-F]+$)', val): # its an expression + typ = 'exp' + if val not in unique_expressions: + unique_expressions.append(val) + # exp_id can be derived from len(). But for readability and consistency with case of existing let's + # use index(). + exp_id = unique_expressions.index(val) + expression_code += gen_expression_check(exp_id, val) + val = exp_id + else: + val = unique_expressions.index(val) + out_data_f.write(':' + typ + ':' + str(val)) + out_data_f.write('\n') + return expression_code + + +def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): + """ + Adds preprocessor checks for test suite dependencies. + + :param suite_deps: + :param dep_check_code: + :param expression_code: + :return: + """ + # void unused params + if len(dep_check_code) == 0: + dep_check_code = '(void) dep_id;\n' + if len(expression_code) == 0: + expression_code = '(void) exp_id;\n' + expression_code += '(void) out_value;\n' + + if len(suite_deps): + ifdef = gen_deps_one_line(suite_deps) + dep_check_code = ''' +{ifdef} +{code} +#else +(void) dep_id; +#endif +'''.format(ifdef=ifdef, code=dep_check_code) + expression_code = ''' +{ifdef} +{code} +#else +(void) exp_id; +(void) out_value; +#endif +'''.format(ifdef=ifdef, code=expression_code) + return dep_check_code, expression_code def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): @@ -486,64 +571,24 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): for test_name, function_name, test_deps, test_args in parse_test_data(data_f): out_data_f.write(test_name + '\n') - func_id, func_args = func_info['test_' + function_name] - if len(test_deps): - out_data_f.write('depends_on') - for dep in test_deps: - if dep not in unique_deps: - unique_deps.append(dep) - dep_id = unique_deps.index(dep) - dep_check_code += gen_dep_check(dep_id, dep) - else: - dep_id = unique_deps.index(dep) - out_data_f.write(':' + str(dep_id)) - out_data_f.write('\n') + # Write deps + dep_check_code += write_deps(out_data_f, test_deps, unique_deps) + # Write test function name + test_function_name = 'test_' + function_name + assert test_function_name in func_info, "Function %s not found!" % test_function_name + func_id, func_args = func_info[test_function_name] + out_data_f.write(str(func_id)) + + # Write parameters assert len(test_args) == len(func_args), \ "Invalid number of arguments in test %s. See function %s signature." % (test_name, function_name) - out_data_f.write(str(func_id)) - for i in xrange(len(test_args)): - typ = func_args[i] - val = test_args[i] + expression_code += write_parameters(out_data_f, test_args, func_args, unique_expressions) - # check if val is a non literal int val - if typ == 'int' and not re.match('\d+', val): # its an expression # FIXME: Handle hex format. Tip: instead try converting int(str, 10) and int(str, 16) - typ = 'exp' - if val not in unique_expressions: - unique_expressions.append(val) - # exp_id can be derived from len(). But for readability and consistency with case of existing let's - # use index(). - exp_id = unique_expressions.index(val) - expression_code += gen_expression_check(exp_id, val) - val = exp_id - else: - val = unique_expressions.index(val) - out_data_f.write(':' + typ + ':' + str(val)) - out_data_f.write('\n\n') + # Write a newline as test case separator + out_data_f.write('\n') - # void unused params - if len(dep_check_code) == 0: - dep_check_code = '(void) dep_id;\n' - if len(expression_code) == 0: - expression_code = '(void) exp_id;\n' - expression_code += '(void) out_value;\n' - ifdef = gen_deps_one_line(suite_deps) - if len(suite_deps): - dep_check_code = ''' -{ifdef} -{code} -#else -(void) dep_id; -#endif -'''.format(ifdef=ifdef, code=dep_check_code) - expression_code = ''' -{ifdef} -{code} -#else -(void) exp_id; -(void) out_value; -#endif -'''.format(ifdef=ifdef, code=expression_code) + dep_check_code, expression_code = gen_suite_deps_checks(suite_deps, dep_check_code, expression_code) return dep_check_code, expression_code diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py index c261b27423..8545b4a0c3 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/generate_code_ut.py @@ -840,7 +840,9 @@ void func() class ExcapedSplit(TestCase): """ - Test suite for testing escaped_split() + Test suite for testing escaped_split(). + Note: Since escaped_split() output is used to write back to the intermediate data file. Any escape characters + in the input are retained in the output. """ def test_invalid_input(self): @@ -874,7 +876,7 @@ class ExcapedSplit(TestCase): """ s = 'yahoo\:google:facebook' splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo:google', 'facebook']) + self.assertEqual(splits, ['yahoo\:google', 'facebook']) def test_escaped_escape(self): """ @@ -883,7 +885,7 @@ class ExcapedSplit(TestCase): """ s = 'yahoo\\\:google:facebook' splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo\\', 'google', 'facebook']) + self.assertEqual(splits, ['yahoo\\\\', 'google', 'facebook']) def test_all_at_once(self): """ @@ -892,7 +894,8 @@ class ExcapedSplit(TestCase): """ s = 'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo\\', 'google', 'facebook:instagram\\', 'bbc\\', 'wikipedia']) + self.assertEqual(splits, ['yahoo\\\\', 'google', 'facebook\:instagram\\\\', 'bbc\\\\', 'wikipedia']) + class ParseTestData(TestCase): """ @@ -1102,12 +1105,420 @@ else self.assertRaises(AssertionError, gen_expression_check, -1, 'YAHOO') +class WriteDeps(TestCase): + """ + Test suite for testing write_deps. + """ + + def test_no_test_deps(self): + """ + Test when test_deps is empty. + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_deps = [] + dep_check_code = write_deps(s, [], unique_deps) + self.assertEqual(dep_check_code, '') + self.assertEqual(len(unique_deps), 0) + self.assertEqual(s.getvalue(), '') + + def test_unique_dep_ids(self): + """ + + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_deps = [] + dep_check_code = write_deps(s, ['DEP3', 'DEP2', 'DEP1'], unique_deps) + expect_dep_check_code = ''' +if ( dep_id == 0 ) +{ +#if defined(DEP3) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else + +if ( dep_id == 1 ) +{ +#if defined(DEP2) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else + +if ( dep_id == 2 ) +{ +#if defined(DEP1) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +''' + self.assertEqual(dep_check_code, expect_dep_check_code) + self.assertEqual(len(unique_deps), 3) + self.assertEqual(s.getvalue(), 'depends_on:0:1:2\n') + + def test_dep_id_repeat(self): + """ + + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_deps = [] + dep_check_code = '' + dep_check_code += write_deps(s, ['DEP3', 'DEP2'], unique_deps) + dep_check_code += write_deps(s, ['DEP2', 'DEP1'], unique_deps) + dep_check_code += write_deps(s, ['DEP1', 'DEP3'], unique_deps) + expect_dep_check_code = ''' +if ( dep_id == 0 ) +{ +#if defined(DEP3) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else + +if ( dep_id == 1 ) +{ +#if defined(DEP2) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else + +if ( dep_id == 2 ) +{ +#if defined(DEP1) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +''' + self.assertEqual(dep_check_code, expect_dep_check_code) + self.assertEqual(len(unique_deps), 3) + self.assertEqual(s.getvalue(), 'depends_on:0:1\ndepends_on:1:2\ndepends_on:2:0\n') + + +class WriteParams(TestCase): + """ + Test Suite for testing write_parameters(). + """ + + def test_no_params(self): + """ + Test with empty test_args + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_expressions = [] + expression_code = write_parameters(s, [], [], unique_expressions) + self.assertEqual(len(unique_expressions), 0) + self.assertEqual(expression_code, '') + self.assertEqual(s.getvalue(), '\n') + + def test_no_exp_param(self): + """ + Test when there is no macro or expression in the params. + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_expressions = [] + expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0'], ['char*', 'hex', 'int'], + unique_expressions) + self.assertEqual(len(unique_expressions), 0) + self.assertEqual(expression_code, '') + self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0\n') + + def test_hex_format_int_param(self): + """ + Test int parameter in hex format. + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_expressions = [] + expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0xAA'], ['char*', 'hex', 'int'], + unique_expressions) + self.assertEqual(len(unique_expressions), 0) + self.assertEqual(expression_code, '') + self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0xAA\n') + + def test_with_exp_param(self): + """ + Test when there is macro or expression in the params. + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_expressions = [] + expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0', 'MACRO1', 'MACRO2', 'MACRO3'], + ['char*', 'hex', 'int', 'int', 'int', 'int'], + unique_expressions) + self.assertEqual(len(unique_expressions), 3) + self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) + expected_expression_code = ''' +if ( exp_id == 0 ) +{ + *out_value = MACRO1; +} +else + +if ( exp_id == 1 ) +{ + *out_value = MACRO2; +} +else + +if ( exp_id == 2 ) +{ + *out_value = MACRO3; +} +else +''' + self.assertEqual(expression_code, expected_expression_code) + self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0:exp:0:exp:1:exp:2\n') + + def test_with_repeate_calls(self): + """ + Test when write_parameter() is called with same macro or expression. + :return: + """ + s = StringIOWrapper('test_suite_ut.data', '') + unique_expressions = [] + expression_code = '' + expression_code += write_parameters(s, ['"Yahoo"', 'MACRO1', 'MACRO2'], ['char*', 'int', 'int'], + unique_expressions) + expression_code += write_parameters(s, ['"abcdef00"', 'MACRO2', 'MACRO3'], ['hex', 'int', 'int'], + unique_expressions) + expression_code += write_parameters(s, ['0', 'MACRO3', 'MACRO1'], ['int', 'int', 'int'], + unique_expressions) + self.assertEqual(len(unique_expressions), 3) + self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) + expected_expression_code = ''' +if ( exp_id == 0 ) +{ + *out_value = MACRO1; +} +else + +if ( exp_id == 1 ) +{ + *out_value = MACRO2; +} +else + +if ( exp_id == 2 ) +{ + *out_value = MACRO3; +} +else +''' + self.assertEqual(expression_code, expected_expression_code) + expected_data_file = ''':char*:"Yahoo":exp:0:exp:1 +:hex:"abcdef00":exp:1:exp:2 +:int:0:exp:2:exp:0 +''' + self.assertEqual(s.getvalue(), expected_data_file) + + +class GenTestSuiteDepsChecks(TestCase): + """ + + """ + def test_empty_suite_deps(self): + """ + Test with empty suite_deps list. + + :return: + """ + dep_check_code, expression_code = gen_suite_deps_checks([], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') + self.assertEqual(dep_check_code, 'DEP_CHECK_CODE') + self.assertEqual(expression_code, 'EXPRESSION_CODE') + + def test_suite_deps(self): + """ + Test with suite_deps list. + + :return: + """ + dep_check_code, expression_code = gen_suite_deps_checks(['SUITE_DEP'], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') + exprectd_dep_check_code = ''' +#if defined(SUITE_DEP) +DEP_CHECK_CODE +#else +(void) dep_id; +#endif +''' + expected_expression_code = ''' +#if defined(SUITE_DEP) +EXPRESSION_CODE +#else +(void) exp_id; +(void) out_value; +#endif +''' + self.assertEqual(dep_check_code, exprectd_dep_check_code) + self.assertEqual(expression_code, expected_expression_code) + + def test_no_dep_no_exp(self): + """ + Test when there are no dependency and expression code. + :return: + """ + dep_check_code, expression_code = gen_suite_deps_checks([], '', '') + self.assertEqual(dep_check_code, '(void) dep_id;\n') + self.assertEqual(expression_code, '(void) exp_id;\n(void) out_value;\n') + + class GenFromTestData(TestCase): """ Test suite for gen_from_test_data() """ - pass + @patch("generate_code.write_deps") + @patch("generate_code.write_parameters") + @patch("generate_code.gen_suite_deps_checks") + def test_intermediate_data_file(self, gen_suite_deps_checks_mock, write_parameters_mock, write_deps_mock): + """ + Test that intermediate data file is written with expected data. + :return: + """ + data = ''' +My test +depends_on:DEP1 +func1:0 +''' + data_f = StringIOWrapper('test_suite_ut.data', data) + out_data_f = StringIOWrapper('test_suite_ut.datax', '') + func_info = {'test_func1': (1, ('int',))} + suite_deps = [] + write_parameters_mock.side_effect = write_parameters + write_deps_mock.side_effect = write_deps + gen_suite_deps_checks_mock.side_effect = gen_suite_deps_checks + gen_from_test_data(data_f, out_data_f, func_info, suite_deps) + write_deps_mock.assert_called_with(out_data_f, ['DEP1'], ['DEP1']) + write_parameters_mock.assert_called_with(out_data_f, ['0'], ('int',), []) + expected_dep_check_code = ''' +if ( dep_id == 0 ) +{ +#if defined(DEP1) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +''' + gen_suite_deps_checks_mock.assert_called_with(suite_deps, expected_dep_check_code, '') + + def test_function_not_found(self): + """ + Test that AssertError is raised when function info in not found. + :return: + """ + data = ''' +My test +depends_on:DEP1 +func1:0 +''' + data_f = StringIOWrapper('test_suite_ut.data', data) + out_data_f = StringIOWrapper('test_suite_ut.datax', '') + func_info = {'test_func2': (1, ('int',))} + suite_deps = [] + self.assertRaises(AssertionError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + + def test_different_func_args(self): + """ + Test that AssertError is raised when no. of parameters and function args differ. + :return: + """ + data = ''' +My test +depends_on:DEP1 +func1:0 +''' + data_f = StringIOWrapper('test_suite_ut.data', data) + out_data_f = StringIOWrapper('test_suite_ut.datax', '') + func_info = {'test_func2': (1, ('int','hex'))} + suite_deps = [] + self.assertRaises(AssertionError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + + def test_output(self): + """ + Test that intermediate data file is written with expected data. + :return: + """ + data = ''' +My test 1 +depends_on:DEP1 +func1:0:0xfa:MACRO1:MACRO2 + +My test 2 +depends_on:DEP1:DEP2 +func2:"yahoo":88:MACRO1 +''' + data_f = StringIOWrapper('test_suite_ut.data', data) + out_data_f = StringIOWrapper('test_suite_ut.datax', '') + func_info = {'test_func1': (0, ('int', 'int', 'int', 'int')), 'test_func2': (1, ('char*', 'int', 'int'))} + suite_deps = [] + dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info, suite_deps) + expected_dep_check_code = ''' +if ( dep_id == 0 ) +{ +#if defined(DEP1) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else + +if ( dep_id == 1 ) +{ +#if defined(DEP2) + return( DEPENDENCY_SUPPORTED ); +#else + return( DEPENDENCY_NOT_SUPPORTED ); +#endif +} +else +''' + expecrted_data = '''My test 1 +depends_on:0 +0:int:0:int:0xfa:exp:0:exp:1 + +My test 2 +depends_on:0:1 +1:char*:"yahoo":int:88:exp:0 + +''' + expected_expression_code = ''' +if ( exp_id == 0 ) +{ + *out_value = MACRO1; +} +else + +if ( exp_id == 1 ) +{ + *out_value = MACRO2; +} +else +''' + self.assertEqual(dep_check_code, expected_dep_check_code) + self.assertEqual(out_data_f.getvalue(), expecrted_data) + self.assertEqual(expression_code, expected_expression_code) if __name__=='__main__': From 663d4702c5e61782b3b88fdc469a91440d2c5a32 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 7 Jul 2017 15:40:26 +0100 Subject: [PATCH 0716/1100] Incorporate code review suggestions in mbedtls_test.py --- tests/scripts/mbedtls_test.py | 87 ++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 32 deletions(-) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index fa5b507062..b43e613efe 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,6 +1,6 @@ """ mbed SDK -Copyright (c) 2011-2013 ARM Limited +Copyright (c) 2017 ARM Limited Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ limitations under the License. import re import os -import time +import binascii from mbed_host_tests import BaseHostTest, event_callback @@ -62,25 +62,23 @@ class TestDataParser(object): def __parse(self, file): """ """ - line = file.readline().strip() - while line: + for line in file: line = line.strip() if len(line) == 0: - line = file.readline() continue # Read test name name = line # Check dependencies deps = [] - line = file.readline().strip() + line = file.next().strip() m = re.search('depends_on\:(.*)', line) if m: deps = [int(x) for x in m.group(1).split(':')] - line = file.readline().strip() + line = file.next().strip() # Read test vectors - line = line.replace('\\n', '\n#') + line = line.replace('\\n', '\n') parts = self.__escaped_split(line, ':') function = int(parts[0]) x = parts[1:] @@ -88,7 +86,6 @@ class TestDataParser(object): assert l % 2 == 0, "Number of test arguments should be even: %s" % line args = [(x[i * 2], x[(i * 2) + 1]) for i in range(len(x)/2)] self.tests.append((name, function, deps, args)) - line = file.readline() def get_test_data(self): """ @@ -98,7 +95,8 @@ class TestDataParser(object): class MbedTlsTest(BaseHostTest): """ - Host test for mbed-tls target tests. + Event handler for mbedtls unit tests. This script is loaded at run time + by htrun while executing mbedtls unit tests. """ # From suites/helpers.function DEPENDENCY_SUPPORTED = 0 @@ -172,29 +170,46 @@ class MbedTlsTest(BaseHostTest): "HEX test parameter missing '\"': %s" % hex_str hex_str = hex_str.strip('"') assert len(hex_str) % 2 == 0, "HEX parameter len should be mod of 2: %s" % hex_str - b = bytearray() - for i in xrange(len(hex_str) / 2): - h = hex_str[i * 2] + hex_str[(i * 2) + 1] - try: - b += bytearray([int(h, 16)]) - except ValueError: - raise ValueError("Invalid HEX value: %s" % hex_str) + b = binascii.unhexlify(hex_str) return b - def parameters_to_bytes(self, b, parameters): + @staticmethod + def int32_to_bigendian_bytes(i): + """ + Coverts i to bytearray in big endian format. + + :param i: + :return: + """ + b = bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + return b + + def test_vector_to_bytes(self, function_id, deps, parameters): + """ + Converts test vector into a byte array that can be sent to the target. + + :param function_id: + :param deps: + :param parameters: + :return: + """ + b = bytearray([len(deps)]) + if len(deps): + b += bytearray(deps) + b += bytearray([function_id, len(parameters)]) for typ, param in parameters: if typ == 'int' or typ == 'exp': i = int(param) b += 'I' if typ == 'int' else 'E' self.align_32bit(b) - b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + b += self.int32_to_bigendian_bytes(i) elif typ == 'char*': param = param.strip('"') i = len(param) + 1 # + 1 for null termination b += 'S' self.align_32bit(b) - b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + b += self.int32_to_bigendian_bytes(i) b += bytearray(list(param)) b += '\0' # Null terminate elif typ == 'hex': @@ -202,9 +217,10 @@ class MbedTlsTest(BaseHostTest): b += 'H' self.align_32bit(b) i = len(hb) - b += bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + b += self.int32_to_bigendian_bytes(i) b += hb - return b + length = self.int32_to_bigendian_bytes(len(b)) + return b, length def run_next_test(self): """ @@ -214,19 +230,26 @@ class MbedTlsTest(BaseHostTest): self.test_index += 1 self.dep_index = 0 if self.test_index < len(self.tests): - name, function, deps, args = self.tests[self.test_index] - self.log("Running: %s" % name) - bytes = bytearray([len(deps)]) - if len(deps): - bytes += bytearray(deps) - bytes += bytearray([function, len(args)]) - self.parameters_to_bytes(bytes, args) - key = bytearray([((len(bytes) >> x) & 0xff) for x in [24, 16, 8, 0]]) - #self.log("Bytes: " + " ".join(["%x '%c'" % (x, x) for x in bytes])) - self.send_kv(key, bytes) + name, function_id, deps, args = self.tests[self.test_index] + self.run_test(name, function_id, deps, args) else: self.notify_complete(True) + def run_test(self, name, function_id, deps, args): + """ + Runs the test. + + :param name: + :param function_id: + :param deps: + :param args: + :return: + """ + self.log("Running: %s" % name) + + bytes, length = self.test_vector_to_bytes(function_id, deps, args) + self.send_kv(length, bytes) + @staticmethod def get_result(value): try: From d61a4384d84a0b82e17dbe209d1788b04ff8a647 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 7 Jul 2017 16:17:27 +0100 Subject: [PATCH 0717/1100] incorporate code review comment in embedded_test.function --- tests/suites/embedded_test.function | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/suites/embedded_test.function b/tests/suites/embedded_test.function index 312cf91253..3f1e77add9 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/embedded_test.function @@ -13,12 +13,12 @@ */ #define INCR_ASSERT(p, start, len, step) do \ { \ - assert( p >= start ); \ - assert( sizeof( *p ) == sizeof( *start ) ); \ + assert( ( p ) >= ( start ) ); \ + assert( sizeof( *( p ) ) == sizeof( *( start ) ) ); \ /* <= is checked to support use inside a loop where \ pointer is incremented after reading data. */ \ - assert( (uint32_t)( (p - start) + step ) <= len ); \ - p += step; \ + assert( (uint32_t)( ( ( p ) - ( start ) ) + step ) <= len );\ + ( p ) += step; \ } \ while( 0 ) @@ -33,7 +33,7 @@ while( 0 ) */ #define ALIGN_32BIT(p, start, len) do \ { \ - uint32_t align = ( - (uintptr_t)p ) % 4; \ + uint32_t align = ( - (uintptr_t)( p ) ) % 4;\ INCR_ASSERT(p, start, len, align); \ } \ while( 0 ) From b1c2d0f9468bfcddc0622a19372c43c921532f90 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 7 Jul 2017 17:14:02 +0100 Subject: [PATCH 0718/1100] Use switch instead if if-else for dependency and expression checks. --- tests/scripts/generate_code.py | 42 +++++++++++---------------------- tests/suites/main_test.function | 27 +++++++++++++++++---- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index 7af6fdf29b..f81ec91cb8 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -427,16 +427,15 @@ def gen_dep_check(dep_id, dep): noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) assert len(dep) > 0, "Dependency should not be an empty string." dep_check = ''' -if ( dep_id == {id} ) -{{ -#if {noT}defined({macro}) - return( DEPENDENCY_SUPPORTED ); -#else - return( DEPENDENCY_NOT_SUPPORTED ); -#endif -}} -else -'''.format(noT=noT, macro=dep, id=dep_id) + case {id}: + {{ + #if {noT}defined({macro}) + ret = DEPENDENCY_SUPPORTED; + #else + ret = DEPENDENCY_NOT_SUPPORTED; + #endif + }} + break;'''.format(noT=noT, macro=dep, id=dep_id) return dep_check @@ -451,12 +450,11 @@ def gen_expression_check(exp_id, exp): assert exp_id > -1, "Expression Id should be a positive integer." assert len(exp) > 0, "Expression should not be an empty string." exp_code = ''' -if ( exp_id == {exp_id} ) -{{ - *out_value = {expression}; -}} -else -'''.format(exp_id=exp_id, expression=exp) + case {exp_id}: + {{ + *out_value = {expression}; + }} + break;'''.format(exp_id=exp_id, expression=exp) return exp_code @@ -527,28 +525,16 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): :param expression_code: :return: """ - # void unused params - if len(dep_check_code) == 0: - dep_check_code = '(void) dep_id;\n' - if len(expression_code) == 0: - expression_code = '(void) exp_id;\n' - expression_code += '(void) out_value;\n' - if len(suite_deps): ifdef = gen_deps_one_line(suite_deps) dep_check_code = ''' {ifdef} {code} -#else -(void) dep_id; #endif '''.format(ifdef=ifdef, code=dep_check_code) expression_code = ''' {ifdef} {code} -#else -(void) exp_id; -(void) out_value; #endif '''.format(ifdef=ifdef, code=expression_code) return dep_check_code, expression_code diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index e294e36210..93b32cc31a 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -63,12 +63,22 @@ */ int get_expression( int32_t exp_id, int32_t * out_value ) {{ + int ret = KEY_VALUE_MAPPING_FOUND; + + (void) exp_id; + (void) out_value; + + switch( exp_id ) + {{ {expression_code} #line {line_no} "suites/main_test.function" - {{ - return( KEY_VALUE_MAPPING_NOT_FOUND ); + default: + {{ + ret = KEY_VALUE_MAPPING_NOT_FOUND; + }} + break; }} - return( KEY_VALUE_MAPPING_FOUND ); + return( ret ); }} @@ -85,11 +95,18 @@ int get_expression( int32_t exp_id, int32_t * out_value ) */ int dep_check( int dep_id ) {{ + int ret = DEPENDENCY_NOT_SUPPORTED; + + (void) dep_id; + + switch( dep_id ) + {{ {dep_check_code} #line {line_no} "suites/main_test.function" - {{ - return( DEPENDENCY_NOT_SUPPORTED ); + default: + break; }} + return( ret ); }} From d61b837fac711f53e7eb20bf1a27f71eb37867f4 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 10 Jul 2017 11:54:01 +0100 Subject: [PATCH 0719/1100] Update unit tests for change in test suites code generator Code generator has been modified to generate case statements for dependency checks and expression checks. This commit updates the unit tests accordingly. --- tests/scripts/generate_code.py | 6 +- tests/scripts/generate_code_ut.py | 251 ++++++++++++++---------------- 2 files changed, 116 insertions(+), 141 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index f81ec91cb8..6554937abb 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -429,11 +429,11 @@ def gen_dep_check(dep_id, dep): dep_check = ''' case {id}: {{ - #if {noT}defined({macro}) +#if {noT}defined({macro}) ret = DEPENDENCY_SUPPORTED; - #else +#else ret = DEPENDENCY_NOT_SUPPORTED; - #endif +#endif }} break;'''.format(noT=noT, macro=dep, id=dep_id) return dep_check diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py index 8545b4a0c3..4baeeafadf 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/generate_code_ut.py @@ -1023,16 +1023,15 @@ class GenDepCheck(TestCase): :return: """ expected = """ -if ( dep_id == 5 ) -{ + case 5: + { #if defined(YAHOO) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -""" + } + break;""" out = gen_dep_check(5, 'YAHOO') self.assertEqual(out, expected) @@ -1042,16 +1041,15 @@ else :return: """ expected = """ -if ( dep_id == 5 ) -{ + case 5: + { #if !defined(YAHOO) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -""" + } + break;""" out = gen_dep_check(5, '!YAHOO') self.assertEqual(out, expected) @@ -1081,12 +1079,11 @@ class GenExpCheck(TestCase): :return: """ expected = """ -if ( exp_id == 5 ) -{ - *out_value = YAHOO; -} -else -""" + case 5: + { + *out_value = YAHOO; + } + break;""" out = gen_expression_check(5, 'YAHOO') self.assertEqual(out, expected) @@ -1131,36 +1128,33 @@ class WriteDeps(TestCase): unique_deps = [] dep_check_code = write_deps(s, ['DEP3', 'DEP2', 'DEP1'], unique_deps) expect_dep_check_code = ''' -if ( dep_id == 0 ) -{ + case 0: + { #if defined(DEP3) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else - -if ( dep_id == 1 ) -{ + } + break; + case 1: + { #if defined(DEP2) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else - -if ( dep_id == 2 ) -{ + } + break; + case 2: + { #if defined(DEP1) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -''' + } + break;''' self.assertEqual(dep_check_code, expect_dep_check_code) self.assertEqual(len(unique_deps), 3) self.assertEqual(s.getvalue(), 'depends_on:0:1:2\n') @@ -1177,36 +1171,33 @@ else dep_check_code += write_deps(s, ['DEP2', 'DEP1'], unique_deps) dep_check_code += write_deps(s, ['DEP1', 'DEP3'], unique_deps) expect_dep_check_code = ''' -if ( dep_id == 0 ) -{ + case 0: + { #if defined(DEP3) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else - -if ( dep_id == 1 ) -{ + } + break; + case 1: + { #if defined(DEP2) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else - -if ( dep_id == 2 ) -{ + } + break; + case 2: + { #if defined(DEP1) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -''' + } + break;''' self.assertEqual(dep_check_code, expect_dep_check_code) self.assertEqual(len(unique_deps), 3) self.assertEqual(s.getvalue(), 'depends_on:0:1\ndepends_on:1:2\ndepends_on:2:0\n') @@ -1268,24 +1259,21 @@ class WriteParams(TestCase): self.assertEqual(len(unique_expressions), 3) self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) expected_expression_code = ''' -if ( exp_id == 0 ) -{ - *out_value = MACRO1; -} -else - -if ( exp_id == 1 ) -{ - *out_value = MACRO2; -} -else - -if ( exp_id == 2 ) -{ - *out_value = MACRO3; -} -else -''' + case 0: + { + *out_value = MACRO1; + } + break; + case 1: + { + *out_value = MACRO2; + } + break; + case 2: + { + *out_value = MACRO3; + } + break;''' self.assertEqual(expression_code, expected_expression_code) self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0:exp:0:exp:1:exp:2\n') @@ -1306,24 +1294,21 @@ else self.assertEqual(len(unique_expressions), 3) self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) expected_expression_code = ''' -if ( exp_id == 0 ) -{ - *out_value = MACRO1; -} -else - -if ( exp_id == 1 ) -{ - *out_value = MACRO2; -} -else - -if ( exp_id == 2 ) -{ - *out_value = MACRO3; -} -else -''' + case 0: + { + *out_value = MACRO1; + } + break; + case 1: + { + *out_value = MACRO2; + } + break; + case 2: + { + *out_value = MACRO3; + } + break;''' self.assertEqual(expression_code, expected_expression_code) expected_data_file = ''':char*:"Yahoo":exp:0:exp:1 :hex:"abcdef00":exp:1:exp:2 @@ -1356,16 +1341,11 @@ class GenTestSuiteDepsChecks(TestCase): exprectd_dep_check_code = ''' #if defined(SUITE_DEP) DEP_CHECK_CODE -#else -(void) dep_id; #endif ''' expected_expression_code = ''' #if defined(SUITE_DEP) EXPRESSION_CODE -#else -(void) exp_id; -(void) out_value; #endif ''' self.assertEqual(dep_check_code, exprectd_dep_check_code) @@ -1377,8 +1357,8 @@ EXPRESSION_CODE :return: """ dep_check_code, expression_code = gen_suite_deps_checks([], '', '') - self.assertEqual(dep_check_code, '(void) dep_id;\n') - self.assertEqual(expression_code, '(void) exp_id;\n(void) out_value;\n') + self.assertEqual(dep_check_code, '') + self.assertEqual(expression_code, '') class GenFromTestData(TestCase): @@ -1410,16 +1390,15 @@ func1:0 write_deps_mock.assert_called_with(out_data_f, ['DEP1'], ['DEP1']) write_parameters_mock.assert_called_with(out_data_f, ['0'], ('int',), []) expected_dep_check_code = ''' -if ( dep_id == 0 ) -{ + case 0: + { #if defined(DEP1) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -''' + } + break;''' gen_suite_deps_checks_mock.assert_called_with(suite_deps, expected_dep_check_code, '') def test_function_not_found(self): @@ -1474,26 +1453,24 @@ func2:"yahoo":88:MACRO1 suite_deps = [] dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info, suite_deps) expected_dep_check_code = ''' -if ( dep_id == 0 ) -{ + case 0: + { #if defined(DEP1) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else - -if ( dep_id == 1 ) -{ + } + break; + case 1: + { #if defined(DEP2) - return( DEPENDENCY_SUPPORTED ); + ret = DEPENDENCY_SUPPORTED; #else - return( DEPENDENCY_NOT_SUPPORTED ); + ret = DEPENDENCY_NOT_SUPPORTED; #endif -} -else -''' + } + break;''' expecrted_data = '''My test 1 depends_on:0 0:int:0:int:0xfa:exp:0:exp:1 @@ -1504,18 +1481,16 @@ depends_on:0:1 ''' expected_expression_code = ''' -if ( exp_id == 0 ) -{ - *out_value = MACRO1; -} -else - -if ( exp_id == 1 ) -{ - *out_value = MACRO2; -} -else -''' + case 0: + { + *out_value = MACRO1; + } + break; + case 1: + { + *out_value = MACRO2; + } + break;''' self.assertEqual(dep_check_code, expected_dep_check_code) self.assertEqual(out_data_f.getvalue(), expecrted_data) self.assertEqual(expression_code, expected_expression_code) From 9540261a7660ab997410c527e7d442df17a07781 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 19 Jul 2017 10:15:54 +0100 Subject: [PATCH 0720/1100] Incorporated code review comments --- CMakeLists.txt | 1 + tests/CMakeLists.txt | 4 +-- tests/Makefile | 17 +++++------- tests/scripts/generate_code.py | 26 +++++++++++-------- tests/scripts/mbedtls_test.py | 26 +++++++++++-------- ...sktop_test.function => host_test.function} | 2 +- ...ded_test.function => target_test.function} | 2 +- 7 files changed, 41 insertions(+), 37 deletions(-) rename tests/suites/{desktop_test.function => host_test.function} (99%) rename tests/suites/{embedded_test.function => target_test.function} (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4dbe76ecc7..157eebab81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,7 @@ set(NULL_ENTROPY_WARNING "${WARNING_BORDER}" "${NULL_ENTROPY_WARN_L3}" "${WARNING_BORDER}") +find_package(PythonInterp) find_package(Perl) if(PERL_FOUND) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ab3f78fc8a..e24bf4e6ec 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,8 +29,8 @@ function(add_test_suite suite_name) add_custom_command( OUTPUT test_suite_${data_name}.c - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/desktop_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/desktop_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data ) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/Makefile b/tests/Makefile index c544c8e0ba..5e1458a0e7 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -2,7 +2,7 @@ # To compile on SunOS: add "-lsocket -lnsl" to LDFLAGS # To compile with PKCS11: add "-lpkcs11-helper" to LDFLAGS -CFLAGS ?= -g3 #-O2 +CFLAGS ?= -O2 WARNING_CFLAGS ?= -Wall -W -Wdeclaration-after-statement -Wno-unused-function -Wno-unused-value LDFLAGS ?= @@ -186,12 +186,12 @@ $(DEP): C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/desktop_test.function +$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/host_test.function echo " Gen $@" python scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ - -p suites/desktop_test.function \ + -p suites/host_test.function \ -s suites \ --help-file suites/helpers.function \ -o . @@ -218,20 +218,15 @@ test: check # Create separate targets for generating embedded tests. EMBEDDED_TESTS := $(addprefix embedded_,$(APPS)) -# FIXME: description needs change -# Each test suite name is stripped off of prefix test_suite_. mbed-os test dir -# structure requires format TESTS/[/]/ -# Test app names are split on "." and end part is used as the test dir name. -# Prevous parts are used as the test group dirs. For tests without "." same -# name is used as the test group dir. +# Generate test code for target. .SECONDEXPANSION: -$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/embedded_test.function +$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/target_test.function echo " Gen ./TESTS/mbedtls/$*/$*.c" python scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ - -p suites/embedded_test.function \ + -p suites/target_test.function \ -s suites \ --help-file suites/helpers.function \ -o ./TESTS/mbedtls/$* diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index 6554937abb..58020f1001 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -1,18 +1,22 @@ """ -mbed TLS -Copyright (c) 2017 ARM Limited + Test suites code generator. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + SPDX-License-Identifier: Apache-2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. + You may obtain a copy of the License at -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + This file is part of mbed TLS (https://tls.mbed.org) """ import os diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index b43e613efe..b8f8a37526 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,18 +1,22 @@ """ -mbed SDK -Copyright (c) 2017 ARM Limited + Greentea host test script for on-target tests. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + SPDX-License-Identifier: Apache-2.0 - http://www.apache.org/licenses/LICENSE-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. + You may obtain a copy of the License at -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + This file is part of mbed TLS (https://tls.mbed.org) """ import re diff --git a/tests/suites/desktop_test.function b/tests/suites/host_test.function similarity index 99% rename from tests/suites/desktop_test.function rename to tests/suites/host_test.function index 4c790a85e4..a4a5a8265f 100644 --- a/tests/suites/desktop_test.function +++ b/tests/suites/host_test.function @@ -1,4 +1,4 @@ -#line 2 "suites/desktop_test.function" +#line 2 "suites/host_test.function" /** * \brief Varifies that string is in string parameter format i.e. "" diff --git a/tests/suites/embedded_test.function b/tests/suites/target_test.function similarity index 99% rename from tests/suites/embedded_test.function rename to tests/suites/target_test.function index 3f1e77add9..0bafe454f2 100644 --- a/tests/suites/embedded_test.function +++ b/tests/suites/target_test.function @@ -1,4 +1,4 @@ -#line 2 "embedded_test.function" +#line 2 "suites/target_test.function" #include "greentea-client/test_env.h" From f0e42fbd1f96163be0c8113f34437a8bbbd38819 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 2 Aug 2017 14:47:13 +0100 Subject: [PATCH 0721/1100] Add missing documentation and fix file doc strings --- tests/scripts/generate_code.py | 210 +++++++++++++++--------------- tests/scripts/generate_code_ut.py | 53 ++++---- tests/scripts/mbedtls_test.py | 112 +++++++++++----- 3 files changed, 213 insertions(+), 162 deletions(-) diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index 58020f1001..6b373159cb 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -1,46 +1,44 @@ +# Test suites code generator. +# +# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This file is part of mbed TLS (https://tls.mbed.org) + """ - Test suites code generator. +Test Suite code generator. - Copyright (C) 2006-2017, ARM Limited, All Rights Reserved - SPDX-License-Identifier: Apache-2.0 +Generates a test source file using following input files: - Licensed under the Apache License, Version 2.0 (the "License"); you may - not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - This file is part of mbed TLS (https://tls.mbed.org) +test_suite_xyz.function - Read test functions from test suite functions file. +test_suite_xyz.data - Read test functions and their dependencies to generate + dispatch and dependency check code. +main template - Substitute generated test function dispatch code, dependency + checking code. +platform .function - Read host or target platform implementation for + dispatching test cases from .data file. +helper .function - Read common reusable functions. """ + import os import re import argparse import shutil -""" -Generates code in following structure. - -/ - |-- mbedtls/ - | |-- / - | | |-- main.c - | | |-- *.data files - | ... - | |-- / - | | |-- main.c - | | |-- *.data files - | | -""" - - BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/' END_HEADER_REGEX = '/\*\s*END_HEADER\s*\*/' @@ -67,7 +65,7 @@ class FileWrapper(file): """ Init file handle. - :param file_name: + :param file_name: File path to open. """ super(FileWrapper, self).__init__(file_name, 'r') self.line_no = 0 @@ -75,7 +73,7 @@ class FileWrapper(file): def next(self): """ Iterator return impl. - :return: + :return: Line read from file. """ line = super(FileWrapper, self).next() if line: @@ -86,13 +84,19 @@ class FileWrapper(file): """ Wrap the base class readline. - :param limit: - :return: + :param limit: limit to match file.readline([limit]) + :return: Line read from file. """ return self.next() def split_dep(dep): + """ + Split NOT character '!' from dependency. Used by gen_deps() + + :param dep: Dependency list + :return: list of tuples where index 0 has '!' if there was a '!' before the dependency string + """ return ('!', dep[1:]) if dep[0] == '!' else ('', dep) @@ -100,8 +104,8 @@ def gen_deps(deps): """ Generates dependency i.e. if def and endif code - :param deps: - :return: + :param deps: List of dependencies. + :return: if defined and endif code with macro annotations for readability. """ dep_start = ''.join(['#if %sdefined(%s)\n' % split_dep(x) for x in deps]) dep_end = ''.join(['#endif /* %s */\n' % x for x in reversed(deps)]) @@ -113,8 +117,8 @@ def gen_deps_one_line(deps): """ Generates dependency checks in one line. Useful for writing code in #else case. - :param deps: - :return: + :param deps: List of dependencies. + :return: ifdef code """ defines = ('#if ' if len(deps) else '') + ' && '.join(['%sdefined(%s)' % split_dep(x) for x in deps]) return defines @@ -122,12 +126,12 @@ def gen_deps_one_line(deps): def gen_function_wrapper(name, locals, args_dispatch): """ - Creates test function code + Creates test function wrapper code. A wrapper has the code to unpack parameters from parameters[] array. - :param name: - :param locals: - :param args_dispatch: - :return: + :param name: Test function name + :param locals: Local variables declaration code + :param args_dispatch: List of dispatch arguments. Ex: ['(char *)params[0]', '*((int *)params[1])'] + :return: Test function wrapper. """ # Then create the wrapper wrapper = ''' @@ -145,11 +149,11 @@ void {name}_wrapper( void ** params ) def gen_dispatch(name, deps): """ - Generates dispatch condition for the functions. + Generates dispatch code for the test function table. - :param name: - :param deps: - :return: + :param name: Test function name + :param deps: List of dependencies + :return: Dispatch code. """ if len(deps): ifdef = gen_deps_one_line(deps) @@ -172,8 +176,8 @@ def parse_suite_headers(funcs_f): """ Parses function headers. - :param funcs_f: - :return: + :param funcs_f: file object for .functions file + :return: Test suite headers code """ headers = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: @@ -188,10 +192,10 @@ def parse_suite_headers(funcs_f): def parse_suite_deps(funcs_f): """ - Parses function dependencies. + Parses test suite dependencies. - :param funcs_f: - :return: + :param funcs_f: file object for .functions file + :return: List of test suite dependencies. """ deps = [] for line in funcs_f: @@ -208,9 +212,10 @@ def parse_suite_deps(funcs_f): def parse_function_deps(line): """ + Parses function dependencies. - :param line: - :return: + :param line: Line from .functions file that has dependencies. + :return: List of dependencies. """ deps = [] m = re.search(BEGIN_CASE_REGEX, line) @@ -226,8 +231,8 @@ def parse_function_signature(line): """ Parsing function signature - :param line: - :return: + :param line: Line from .functions file that has a function signature. + :return: function name, argument list, local variables for wrapper function and argument dispatch code. """ args = [] locals = '' @@ -265,12 +270,12 @@ def parse_function_signature(line): def parse_function_code(funcs_f, deps, suite_deps): """ + Parses out a function from function file object and generates function and dispatch code. - :param line_no: - :param funcs_f: - :param deps: - :param suite_deps: - :return: + :param funcs_f: file object of the functions file. + :param deps: List of dependencies + :param suite_deps: List of test suite dependencies + :return: Function name, arguments, function code and dispatch code. """ code = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: @@ -315,8 +320,9 @@ def parse_functions(funcs_f): """ Returns functions code pieces - :param funcs_f: - :return: + :param funcs_f: file object of the functions file. + :return: List of test suite dependencies, test function dispatch code, function code and + a dict with function identifiers and arguments info. """ suite_headers = '' suite_deps = [] @@ -354,9 +360,9 @@ def escaped_split(str, ch): Since return value is used to write back to the intermediate data file. Any escape characters in the input are retained in the output. - :param str: - :param ch: - :return: + :param str: String to split + :param ch: split character + :return: List of splits """ if len(ch) > 1: raise ValueError('Expected split character. Found string!') @@ -379,8 +385,8 @@ def parse_test_data(data_f, debug=False): """ Parses .data file - :param data_f: - :return: + :param data_f: file object of the data file. + :return: Generator that yields test name, function name, dependency list and function argument list. """ STATE_READ_NAME = 0 STATE_READ_ARGS = 1 @@ -423,9 +429,9 @@ def gen_dep_check(dep_id, dep): """ Generate code for the dependency. - :param dep_id: - :param dep: - :return: + :param dep_id: Dependency identifier + :param dep: Dependency macro + :return: Dependency check code """ assert dep_id > -1, "Dependency Id should be a positive integer." noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) @@ -447,9 +453,9 @@ def gen_expression_check(exp_id, exp): """ Generates code for expression check - :param exp_id: - :param exp: - :return: + :param exp_id: Expression Identifier + :param exp: Expression/Macro + :return: Expression check code """ assert exp_id > -1, "Expression Id should be a positive integer." assert len(exp) > 0, "Expression should not be an empty string." @@ -467,10 +473,10 @@ def write_deps(out_data_f, test_deps, unique_deps): Write dependencies to intermediate test data file. It also returns dependency check code. - :param out_data_f: - :param dep: - :param unique_deps: - :return: + :param out_data_f: Output intermediate data file + :param test_deps: Dependencies + :param unique_deps: Mutable list to track unique dependencies that are global to this re-entrant function. + :return: returns dependency check code. """ dep_check_code = '' if len(test_deps): @@ -492,11 +498,11 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): Writes test parameters to the intermediate data file. Also generates expression code. - :param out_data_f: - :param test_args: - :param func_args: - :param unique_expressions: - :return: + :param out_data_f: Output intermediate data file + :param test_args: Test parameters + :param func_args: Function arguments + :param unique_expressions: Mutable list to track unique expressions that are global to this re-entrant function. + :return: Returns expression check code. """ expression_code = '' for i in xrange(len(test_args)): @@ -524,10 +530,10 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): """ Adds preprocessor checks for test suite dependencies. - :param suite_deps: - :param dep_check_code: - :param expression_code: - :return: + :param suite_deps: Test suite dependencies read from the .functions file. + :param dep_check_code: Dependency check code + :param expression_code: Expression check code + :return: Dependency and expression code guarded by test suite dependencies. """ if len(suite_deps): ifdef = gen_deps_one_line(suite_deps) @@ -548,11 +554,11 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ Generates dependency checks, expression code and intermediate data file from test data file. - :param data_f: - :param out_data_f: - :param func_info: - :param suite_deps: - :return: + :param data_f: Data file object + :param out_data_f:Output intermediate data file + :param func_info: Dict keyed by function and with function id and arguments info + :param suite_deps: Test suite deps + :return: Returns dependency and expression check code """ unique_deps = [] unique_expressions = [] @@ -586,14 +592,14 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file """ Generate mbed-os test code. - :param funcs_file: - :param dat a_file: - :param template_file: - :param platform_file: - :param help_file: - :param suites_dir: - :param c_file: - :param out_data_file: + :param funcs_file: Functions file object + :param data_file: Data file object + :param template_file: Template file object + :param platform_file: Platform file object + :param help_file: Helper functions file object + :param suites_dir: Test suites dir + :param c_file: Output C file object + :param out_data_file: Output intermediate data file object :return: """ for name, path in [('Functions file', funcs_file), diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py index 4baeeafadf..bc9f6b6a5b 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/generate_code_ut.py @@ -1,19 +1,22 @@ -""" -mbed TLS -Copyright (c) 2017 ARM Limited +# Unit test for generate_code.py +# +# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This file is part of mbed TLS (https://tls.mbed.org) -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" from StringIO import StringIO from unittest import TestCase, main as unittest_main from mock import patch @@ -425,7 +428,7 @@ class ParseFuncSignature(TestCase): def test_int_and_char_params(self): """ - + Test int and char parameters parsing :return: """ line = 'void entropy_threshold( char * a, int b, int result )' @@ -437,7 +440,7 @@ class ParseFuncSignature(TestCase): def test_hex_params(self): """ - + Test hex parameters parsing :return: """ line = 'void entropy_threshold( char * a, HexParam_t * h, int result )' @@ -449,7 +452,7 @@ class ParseFuncSignature(TestCase): def test_non_void_function(self): """ - + Test invalid signature (non void). :return: """ line = 'int entropy_threshold( char * a, HexParam_t * h, int result )' @@ -457,7 +460,7 @@ class ParseFuncSignature(TestCase): def test_unsupported_arg(self): """ - + Test unsupported arguments (not among int, char * and HexParam_t) :return: """ line = 'int entropy_threshold( char * a, HexParam_t * h, int * result )' @@ -465,7 +468,7 @@ class ParseFuncSignature(TestCase): def test_no_params(self): """ - + Test no parameters. :return: """ line = 'void entropy_threshold()' @@ -483,7 +486,7 @@ class ParseFunctionCode(TestCase): def test_no_function(self): """ - + Test no test function found. :return: """ data = ''' @@ -496,7 +499,7 @@ function def test_no_end_case_comment(self): """ - + Test missing end case. :return: """ data = ''' @@ -510,7 +513,7 @@ void test_func() @patch("generate_code.parse_function_signature") def test_parse_function_signature_called(self, parse_function_signature_mock): """ - + Test parse_function_code() :return: """ parse_function_signature_mock.return_value = ('test_func', [], '', []) @@ -533,7 +536,7 @@ void test_func() gen_deps_mock, gen_dispatch_mock): """ - + Test generated code. :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) @@ -578,7 +581,7 @@ exit: gen_deps_mock, gen_dispatch_mock): """ - + Test when exit label is present. :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index b8f8a37526..7dba1b2fb5 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,24 +1,33 @@ +# Greentea host test script for on-target tests. +# +# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# This file is part of mbed TLS (https://tls.mbed.org) + + """ - Greentea host test script for on-target tests. +Greentea host test script for on-target tests. - Copyright (C) 2006-2017, ARM Limited, All Rights Reserved - SPDX-License-Identifier: Apache-2.0 - - Licensed under the Apache License, Version 2.0 (the "License"); you may - not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - This file is part of mbed TLS (https://tls.mbed.org) +Host test script for testing mbed TLS test suites on target. Implements +BaseHostTest to handle key,value pairs (events) coming from mbed TLS +tests. Reads data file corresponding to the executing binary and dispatches +test cases. """ + import re import os import binascii @@ -38,7 +47,9 @@ class TestDataParser(object): def parse(self, data_file): """ + Data file parser. + :param data_file: Data file path """ with open(data_file, 'r') as f: self.__parse(f) @@ -46,6 +57,11 @@ class TestDataParser(object): @staticmethod def __escaped_split(str, ch): """ + Splits str on ch except when escaped. + + :param str: String to split + :param ch: Split character + :return: List of splits """ if len(ch) > 1: raise ValueError('Expected split character. Found string!') @@ -65,6 +81,10 @@ class TestDataParser(object): def __parse(self, file): """ + Parses data file using supplied file object. + + :param file: Data file object + :return: """ for line in file: line = line.strip() @@ -93,6 +113,7 @@ class TestDataParser(object): def get_test_data(self): """ + Returns test data. """ return self.tests @@ -115,6 +136,7 @@ class MbedTlsTest(BaseHostTest): def __init__(self): """ + Constructor initialises test index to 0. """ super(MbedTlsTest, self).__init__() self.tests = [] @@ -130,6 +152,7 @@ class MbedTlsTest(BaseHostTest): def setup(self): """ + Setup hook implementation. Reads test suite data file and parses out tests. """ binary_path = self.get_config_item('image_path') script_dir = os.path.split(os.path.abspath(__file__))[0] @@ -148,6 +171,7 @@ class MbedTlsTest(BaseHostTest): def print_test_info(self): """ + Prints test summary read by Greentea to detect test cases. """ self.log('{{__testcase_count;%d}}' % len(self.tests)) for name, _, _, _ in self.tests: @@ -156,7 +180,7 @@ class MbedTlsTest(BaseHostTest): @staticmethod def align_32bit(b): """ - 4 byte aligns byte array. + 4 byte aligns input byte array. :return: """ @@ -167,8 +191,8 @@ class MbedTlsTest(BaseHostTest): """ Converts Hex string representation to byte array - :param hex_str: - :return: + :param hex_str: Hex in string format. + :return: Output Byte array """ assert hex_str[0] == '"' and hex_str[len(hex_str) - 1] == '"', \ "HEX test parameter missing '\"': %s" % hex_str @@ -183,8 +207,8 @@ class MbedTlsTest(BaseHostTest): """ Coverts i to bytearray in big endian format. - :param i: - :return: + :param i: Input integer + :return: Output bytes array in big endian or network order """ b = bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) return b @@ -193,10 +217,10 @@ class MbedTlsTest(BaseHostTest): """ Converts test vector into a byte array that can be sent to the target. - :param function_id: - :param deps: - :param parameters: - :return: + :param function_id: Test Function Identifier + :param deps: Dependency list + :param parameters: Test function input parameters + :return: Byte array and its length """ b = bytearray([len(deps)]) if len(deps): @@ -243,10 +267,10 @@ class MbedTlsTest(BaseHostTest): """ Runs the test. - :param name: - :param function_id: - :param deps: - :param args: + :param name: Test name + :param function_id: function identifier + :param deps: Dependencies list + :param args: test parameters :return: """ self.log("Running: %s" % name) @@ -256,6 +280,11 @@ class MbedTlsTest(BaseHostTest): @staticmethod def get_result(value): + """ + Converts result from string type to integer + :param value: Result code in string + :return: Integer result code + """ try: return int(value) except ValueError: @@ -264,13 +293,25 @@ class MbedTlsTest(BaseHostTest): @event_callback('GO') def on_go(self, key, value, timestamp): + """ + Called on key "GO". Kicks off test execution. + + :param key: Event key + :param value: Value. ignored + :param timestamp: Timestamp ignored. + :return: + """ self.run_next_test() @event_callback("R") def on_result(self, key, value, timestamp): """ - Handle result. + Handle result. Prints test start, finish prints required by Greentea to detect test execution. + :param key: Event key + :param value: Value. ignored + :param timestamp: Timestamp ignored. + :return: """ int_val = self.get_result(value) name, function, deps, args = self.tests[self.test_index] @@ -282,11 +323,12 @@ class MbedTlsTest(BaseHostTest): @event_callback("F") def on_failure(self, key, value, timestamp): """ - Handles test execution failure. Hence marking test as skipped. + Handles test execution failure. That means dependency not supported or + Test function not supported. Hence marking test as skipped. - :param key: - :param value: - :param timestamp: + :param key: Event key + :param value: Value. ignored + :param timestamp: Timestamp ignored. :return: """ int_val = self.get_result(value) From 317efe85e180d71127b3b68862d1e63fcf303bb6 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 2 Aug 2017 17:33:54 +0100 Subject: [PATCH 0722/1100] Adapt new test gcm_bad_parameters() to on target testing changes --- tests/suites/test_suite_gcm.function | 30 ++++++---------------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/tests/suites/test_suite_gcm.function b/tests/suites/test_suite_gcm.function index c0e799c196..b3d212a509 100644 --- a/tests/suites/test_suite_gcm.function +++ b/tests/suites/test_suite_gcm.function @@ -9,41 +9,23 @@ /* BEGIN_CASE */ void gcm_bad_parameters( int cipher_id, int direction, - char *hex_key_string, char *hex_src_string, - char *hex_iv_string, char *hex_add_string, + HexParam_t *key_str, HexParam_t *src_str, + HexParam_t *iv_str, HexParam_t *add_str, int tag_len_bits, int gcm_result ) { - unsigned char key_str[128]; - unsigned char src_str[128]; - unsigned char dst_str[257]; - unsigned char iv_str[128]; - unsigned char add_str[128]; - unsigned char tag_str[128]; unsigned char output[128]; unsigned char tag_output[16]; mbedtls_gcm_context ctx; - unsigned int key_len; - size_t pt_len, iv_len, add_len, tag_len = tag_len_bits / 8; + size_t tag_len = tag_len_bits / 8; mbedtls_gcm_init( &ctx ); - memset( key_str, 0x00, sizeof( key_str ) ); - memset( src_str, 0x00, sizeof( src_str ) ); - memset( dst_str, 0x00, sizeof( dst_str ) ); - memset( iv_str, 0x00, sizeof( iv_str ) ); - memset( add_str, 0x00, sizeof( add_str ) ); - memset( tag_str, 0x00, sizeof( tag_str ) ); memset( output, 0x00, sizeof( output ) ); memset( tag_output, 0x00, sizeof( tag_output ) ); - key_len = unhexify( key_str, hex_key_string ); - pt_len = unhexify( src_str, hex_src_string ); - iv_len = unhexify( iv_str, hex_iv_string ); - add_len = unhexify( add_str, hex_add_string ); - - TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str, key_len * 8 ) == 0 ); - TEST_ASSERT( mbedtls_gcm_crypt_and_tag( &ctx, direction, pt_len, iv_str, iv_len, - add_str, add_len, src_str, output, tag_len, tag_output ) == gcm_result ); + TEST_ASSERT( mbedtls_gcm_setkey( &ctx, cipher_id, key_str->x, key_str->len * 8 ) == 0 ); + TEST_ASSERT( mbedtls_gcm_crypt_and_tag( &ctx, direction, src_str->len, iv_str->x, iv_str->len, + add_str->x, add_str->len, src_str->x, output, tag_len, tag_output ) == gcm_result ); exit: mbedtls_gcm_free( &ctx ); From 36e5fac0fbf67625016220fd0ff5f0affe5852c9 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 8 Sep 2017 17:23:23 +0100 Subject: [PATCH 0723/1100] Rephrase confusing function description --- tests/suites/target_test.function | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/suites/target_test.function b/tests/suites/target_test.function index 0bafe454f2..5961947070 100644 --- a/tests/suites/target_test.function +++ b/tests/suites/target_test.function @@ -17,7 +17,7 @@ assert( sizeof( *( p ) ) == sizeof( *( start ) ) ); \ /* <= is checked to support use inside a loop where \ pointer is incremented after reading data. */ \ - assert( (uint32_t)( ( ( p ) - ( start ) ) + step ) <= len );\ + assert( (uint32_t)( ( ( p ) - ( start ) ) + ( step ) ) <= ( len ) );\ ( p ) += step; \ } \ while( 0 ) @@ -156,7 +156,8 @@ uint8_t * receive_data( uint32_t * data_len ) } /** - * \brief Parses received byte array and finds number of hex parameters. + * \brief Find count of hex arguments(test function arguments) in the + * received binary data. * * \param count Parameter count * \param data Received Byte array From 05d83fa40669a8aa29569074b061fc1a73a6b74b Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Sun, 10 Sep 2017 22:57:19 +0100 Subject: [PATCH 0724/1100] Put parentheses around macro arguments --- tests/suites/target_test.function | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/suites/target_test.function b/tests/suites/target_test.function index 5961947070..f662eee868 100644 --- a/tests/suites/target_test.function +++ b/tests/suites/target_test.function @@ -18,7 +18,7 @@ /* <= is checked to support use inside a loop where \ pointer is incremented after reading data. */ \ assert( (uint32_t)( ( ( p ) - ( start ) ) + ( step ) ) <= ( len ) );\ - ( p ) += step; \ + ( p ) += ( step ); \ } \ while( 0 ) @@ -34,7 +34,7 @@ while( 0 ) #define ALIGN_32BIT(p, start, len) do \ { \ uint32_t align = ( - (uintptr_t)( p ) ) % 4;\ - INCR_ASSERT(p, start, len, align); \ + INCR_ASSERT( ( p ), ( start ), ( len ), align);\ } \ while( 0 ) @@ -156,8 +156,8 @@ uint8_t * receive_data( uint32_t * data_len ) } /** - * \brief Find count of hex arguments(test function arguments) in the - * received binary data. + * \brief Parse the received byte array and count the number of arguments + * to the test function passed as type hex. * * \param count Parameter count * \param data Received Byte array From b522929666ed4dcc4f6dce9827c828642d7a5b72 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 6 Feb 2018 13:08:01 +0000 Subject: [PATCH 0725/1100] Add support for per test suite helper functions --- .gitignore | 3 ++ tests/scripts/generate_code.py | 20 ++++++++---- tests/scripts/generate_code_ut.py | 51 ++++++++++++++++++++++--------- 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index fee2a31cd1..f40064d5bf 100644 --- a/.gitignore +++ b/.gitignore @@ -21,5 +21,8 @@ massif-* *.ilk *.lib +# Python build artifacts: +*.pyc + # CMake generates *.dir/ folders for in-tree builds (used by MSVC projects), ignore all of those: *.dir/ diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_code.py index 6b373159cb..b6ee968cfe 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_code.py @@ -42,6 +42,9 @@ import shutil BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/' END_HEADER_REGEX = '/\*\s*END_HEADER\s*\*/' +BEGIN_SUITE_HELPERS_REGEX = '/\*\s*BEGIN_SUITE_HELPERS\s*\*/' +END_SUITE_HELPERS_REGEX = '/\*\s*END_SUITE_HELPERS\s*\*/' + BEGIN_DEP_REGEX = 'BEGIN_DEPENDENCIES' END_DEP_REGEX = 'END_DEPENDENCIES' @@ -172,20 +175,21 @@ def gen_dispatch(name, deps): return dispatch_code -def parse_suite_headers(funcs_f): +def parse_until_pattern(funcs_f, end_regex): """ - Parses function headers. + Parses function headers or helper code until end pattern. :param funcs_f: file object for .functions file + :param end_regex: Pattern to stop parsing :return: Test suite headers code """ headers = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: - if re.search(END_HEADER_REGEX, line): + if re.search(end_regex, line): break headers += line else: - raise InvalidFileFormat("file: %s - end header pattern [%s] not found!" % (funcs_f.name, END_HEADER_REGEX)) + raise InvalidFileFormat("file: %s - end pattern [%s] not found!" % (funcs_f.name, end_regex)) return headers @@ -325,6 +329,7 @@ def parse_functions(funcs_f): a dict with function identifiers and arguments info. """ suite_headers = '' + suite_helpers = '' suite_deps = [] suite_functions = '' func_info = {} @@ -332,8 +337,11 @@ def parse_functions(funcs_f): dispatch_code = '' for line in funcs_f: if re.search(BEGIN_HEADER_REGEX, line): - headers = parse_suite_headers(funcs_f) + headers = parse_until_pattern(funcs_f, END_HEADER_REGEX) suite_headers += headers + elif re.search(BEGIN_SUITE_HELPERS_REGEX, line): + helpers = parse_until_pattern(funcs_f, END_SUITE_HELPERS_REGEX) + suite_helpers += helpers elif re.search(BEGIN_DEP_REGEX, line): deps = parse_suite_deps(funcs_f) suite_deps += deps @@ -350,7 +358,7 @@ def parse_functions(funcs_f): function_idx += 1 ifdef, endif = gen_deps(suite_deps) - func_code = ifdef + suite_headers + suite_functions + endif + func_code = ifdef + suite_headers + suite_helpers + suite_functions + endif return suite_deps, dispatch_code, func_code, func_info diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/generate_code_ut.py index bc9f6b6a5b..383f029abc 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/generate_code_ut.py @@ -280,9 +280,9 @@ class StringIOWrapper(StringIO, object): return line -class ParseSuiteHeaders(TestCase): +class ParseUntilPattern(TestCase): """ - Test Suite for testing parse_suite_headers(). + Test Suite for testing parse_until_pattern(). """ def test_suite_headers(self): @@ -302,7 +302,7 @@ class ParseSuiteHeaders(TestCase): #define ECP_PF_UNKNOWN -1 ''' s = StringIOWrapper('test_suite_ut.function', data, line_no=0) - headers = parse_suite_headers(s) + headers = parse_until_pattern(s, END_HEADER_REGEX) self.assertEqual(headers, expected) def test_line_no(self): @@ -323,7 +323,7 @@ class ParseSuiteHeaders(TestCase): #define ECP_PF_UNKNOWN -1 ''' % (offset_line_no + 1) s = StringIOWrapper('test_suite_ut.function', data, offset_line_no) - headers = parse_suite_headers(s) + headers = parse_until_pattern(s, END_HEADER_REGEX) self.assertEqual(headers, expected) def test_no_end_header_comment(self): @@ -337,7 +337,7 @@ class ParseSuiteHeaders(TestCase): ''' s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_suite_headers, s) + self.assertRaises(InvalidFileFormat, parse_until_pattern, s, END_HEADER_REGEX) class ParseSuiteDeps(TestCase): @@ -620,15 +620,15 @@ class ParseFunction(TestCase): Test Suite for testing parse_functions() """ - @patch("generate_code.parse_suite_headers") - def test_begin_header(self, parse_suite_headers_mock): + @patch("generate_code.parse_until_pattern") + def test_begin_header(self, parse_until_pattern_mock): """ - Test that begin header is checked and parse_suite_headers() is called. + Test that begin header is checked and parse_until_pattern() is called. :return: """ def stop(this): raise Exception - parse_suite_headers_mock.side_effect = stop + parse_until_pattern_mock.side_effect = stop data = '''/* BEGIN_HEADER */ #include "mbedtls/ecp.h" @@ -637,13 +637,34 @@ class ParseFunction(TestCase): ''' s = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(Exception, parse_functions, s) - parse_suite_headers_mock.assert_called_with(s) + parse_until_pattern_mock.assert_called_with(s, END_HEADER_REGEX) + self.assertEqual(s.line_no, 2) + + @patch("generate_code.parse_until_pattern") + def test_begin_helper(self, parse_until_pattern_mock): + """ + Test that begin helper is checked and parse_until_pattern() is called. + :return: + """ + def stop(this): + raise Exception + parse_until_pattern_mock.side_effect = stop + data = '''/* BEGIN_SUITE_HELPERS */ +void print_helloworld() +{ + printf ("Hello World!\n"); +} +/* END_SUITE_HELPERS */ +''' + s = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, s) + parse_until_pattern_mock.assert_called_with(s, END_SUITE_HELPERS_REGEX) self.assertEqual(s.line_no, 2) @patch("generate_code.parse_suite_deps") def test_begin_dep(self, parse_suite_deps_mock): """ - Test that begin header is checked and parse_suite_headers() is called. + Test that begin dep is checked and parse_suite_deps() is called. :return: """ def stop(this): @@ -662,7 +683,7 @@ class ParseFunction(TestCase): @patch("generate_code.parse_function_deps") def test_begin_function_dep(self, parse_function_deps_mock): """ - Test that begin header is checked and parse_suite_headers() is called. + Test that begin dep is checked and parse_function_deps() is called. :return: """ def stop(this): @@ -683,7 +704,7 @@ class ParseFunction(TestCase): @patch("generate_code.parse_function_deps") def test_return(self, parse_function_deps_mock, parse_function_code_mock): """ - Test that begin header is checked and parse_suite_headers() is called. + Test that begin case is checked and parse_function_code() is called. :return: """ def stop(this): @@ -718,7 +739,7 @@ class ParseFunction(TestCase): def test_parsing(self): """ - Test that begin header is checked and parse_suite_headers() is called. + Test case parsing. :return: """ data = '''/* BEGIN_HEADER */ @@ -811,7 +832,7 @@ void test_func2_wrapper( void ** params ) def test_same_function_name(self): """ - Test that begin header is checked and parse_suite_headers() is called. + Test name conflict. :return: """ data = '''/* BEGIN_HEADER */ From 7eb55687c4d33117f8428c692312dce0a3a9e913 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 6 Feb 2018 22:23:45 +0000 Subject: [PATCH 0726/1100] Set OS specific python executable name --- tests/Makefile | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 5e1458a0e7..8b2af476bc 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -50,6 +50,15 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif +# Python executable +ifndef PYTHON +ifdef WINDOWS +PYTHON=python +else +PYTHON=python2 +endif +endif + APPS = test_suite_aes.ecb test_suite_aes.cbc \ test_suite_aes.cfb test_suite_aes.ofb \ test_suite_aes.xts \ @@ -188,7 +197,7 @@ C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: $(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/host_test.function echo " Gen $@" - python scripts/generate_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/host_test.function \ @@ -223,7 +232,7 @@ EMBEDDED_TESTS := $(addprefix embedded_,$(APPS)) .SECONDEXPANSION: $(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/target_test.function echo " Gen ./TESTS/mbedtls/$*/$*.c" - python scripts/generate_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/target_test.function \ From 78befd90191f535110356998618e1afd295d32d1 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 6 Mar 2018 11:49:41 +0000 Subject: [PATCH 0727/1100] Rename generate_code.py -> generate_test_code.py --- tests/CMakeLists.txt | 4 +- tests/Makefile | 8 ++-- ...generate_code.py => generate_test_code.py} | 2 +- tests/scripts/mbedtls_test.py | 2 +- ..._code_ut.py => test_generate_test_code.py} | 44 +++++++++---------- 5 files changed, 30 insertions(+), 30 deletions(-) rename tests/scripts/{generate_code.py => generate_test_code.py} (99%) rename tests/scripts/{generate_code_ut.py => test_generate_test_code.py} (97%) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e24bf4e6ec..7b66dcfe47 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,8 +29,8 @@ function(add_test_suite suite_name) add_custom_command( OUTPUT test_suite_${data_name}.c - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data ) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/Makefile b/tests/Makefile index 8b2af476bc..b3ab03665e 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -195,9 +195,9 @@ $(DEP): C_FILES := $(addsuffix .c,$(APPS)) .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/host_test.function +$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function echo " Gen $@" - $(PYTHON) scripts/generate_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/host_test.function \ @@ -230,9 +230,9 @@ EMBEDDED_TESTS := $(addprefix embedded_,$(APPS)) # Generate test code for target. .SECONDEXPANSION: -$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_code.py suites/helpers.function suites/main_test.function suites/target_test.function +$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function echo " Gen ./TESTS/mbedtls/$*/$*.c" - $(PYTHON) scripts/generate_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/target_test.function \ diff --git a/tests/scripts/generate_code.py b/tests/scripts/generate_test_code.py similarity index 99% rename from tests/scripts/generate_code.py rename to tests/scripts/generate_test_code.py index b6ee968cfe..38b0d75478 100644 --- a/tests/scripts/generate_code.py +++ b/tests/scripts/generate_test_code.py @@ -1,6 +1,6 @@ # Test suites code generator. # -# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# Copyright (C) 2018, ARM Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 7dba1b2fb5..b825f13596 100644 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,6 +1,6 @@ # Greentea host test script for on-target tests. # -# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# Copyright (C) 2018, ARM Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may diff --git a/tests/scripts/generate_code_ut.py b/tests/scripts/test_generate_test_code.py similarity index 97% rename from tests/scripts/generate_code_ut.py rename to tests/scripts/test_generate_test_code.py index 383f029abc..08b6fb3a68 100644 --- a/tests/scripts/generate_code_ut.py +++ b/tests/scripts/test_generate_test_code.py @@ -1,6 +1,6 @@ -# Unit test for generate_code.py +# Unit test for generate_test_code.py # -# Copyright (C) 2006-2017, ARM Limited, All Rights Reserved +# Copyright (C) 2018, ARM Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -20,11 +20,11 @@ from StringIO import StringIO from unittest import TestCase, main as unittest_main from mock import patch -from generate_code import * +from generate_test_code import * """ -Unit tests for generate_code.py +Unit tests for generate_test_code.py """ @@ -510,7 +510,7 @@ void test_func() s = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) - @patch("generate_code.parse_function_signature") + @patch("generate_test_code.parse_function_signature") def test_parse_function_signature_called(self, parse_function_signature_mock): """ Test parse_function_code() @@ -527,10 +527,10 @@ void test_func() self.assertTrue(parse_function_signature_mock.called) parse_function_signature_mock.assert_called_with('void test_func()\n') - @patch("generate_code.gen_dispatch") - @patch("generate_code.gen_deps") - @patch("generate_code.gen_function_wrapper") - @patch("generate_code.parse_function_signature") + @patch("generate_test_code.gen_dispatch") + @patch("generate_test_code.gen_deps") + @patch("generate_test_code.gen_function_wrapper") + @patch("generate_test_code.parse_function_signature") def test_return(self, parse_function_signature_mock, gen_function_wrapper_mock, gen_deps_mock, @@ -572,10 +572,10 @@ exit: self.assertEqual(code, expected) self.assertEqual(dispatch_code, "\n test_func_wrapper,\n") - @patch("generate_code.gen_dispatch") - @patch("generate_code.gen_deps") - @patch("generate_code.gen_function_wrapper") - @patch("generate_code.parse_function_signature") + @patch("generate_test_code.gen_dispatch") + @patch("generate_test_code.gen_deps") + @patch("generate_test_code.gen_function_wrapper") + @patch("generate_test_code.parse_function_signature") def test_with_exit_label(self, parse_function_signature_mock, gen_function_wrapper_mock, gen_deps_mock, @@ -620,7 +620,7 @@ class ParseFunction(TestCase): Test Suite for testing parse_functions() """ - @patch("generate_code.parse_until_pattern") + @patch("generate_test_code.parse_until_pattern") def test_begin_header(self, parse_until_pattern_mock): """ Test that begin header is checked and parse_until_pattern() is called. @@ -640,7 +640,7 @@ class ParseFunction(TestCase): parse_until_pattern_mock.assert_called_with(s, END_HEADER_REGEX) self.assertEqual(s.line_no, 2) - @patch("generate_code.parse_until_pattern") + @patch("generate_test_code.parse_until_pattern") def test_begin_helper(self, parse_until_pattern_mock): """ Test that begin helper is checked and parse_until_pattern() is called. @@ -661,7 +661,7 @@ void print_helloworld() parse_until_pattern_mock.assert_called_with(s, END_SUITE_HELPERS_REGEX) self.assertEqual(s.line_no, 2) - @patch("generate_code.parse_suite_deps") + @patch("generate_test_code.parse_suite_deps") def test_begin_dep(self, parse_suite_deps_mock): """ Test that begin dep is checked and parse_suite_deps() is called. @@ -680,7 +680,7 @@ void print_helloworld() parse_suite_deps_mock.assert_called_with(s) self.assertEqual(s.line_no, 2) - @patch("generate_code.parse_function_deps") + @patch("generate_test_code.parse_function_deps") def test_begin_function_dep(self, parse_function_deps_mock): """ Test that begin dep is checked and parse_function_deps() is called. @@ -700,8 +700,8 @@ void print_helloworld() parse_function_deps_mock.assert_called_with(deps_str) self.assertEqual(s.line_no, 2) - @patch("generate_code.parse_function_code") - @patch("generate_code.parse_function_deps") + @patch("generate_test_code.parse_function_code") + @patch("generate_test_code.parse_function_deps") def test_return(self, parse_function_deps_mock, parse_function_code_mock): """ Test that begin case is checked and parse_function_code() is called. @@ -1390,9 +1390,9 @@ class GenFromTestData(TestCase): Test suite for gen_from_test_data() """ - @patch("generate_code.write_deps") - @patch("generate_code.write_parameters") - @patch("generate_code.gen_suite_deps_checks") + @patch("generate_test_code.write_deps") + @patch("generate_test_code.write_parameters") + @patch("generate_test_code.gen_suite_deps_checks") def test_intermediate_data_file(self, gen_suite_deps_checks_mock, write_parameters_mock, write_deps_mock): """ Test that intermediate data file is written with expected data. From 1ec7e6f3d9dfc7c513f798fcae9b668d46c578e5 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 11 Apr 2018 23:46:37 +0100 Subject: [PATCH 0728/1100] Python3 compatible generate_test_code.py --- tests/scripts/generate_test_code.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) mode change 100644 => 100755 tests/scripts/generate_test_code.py diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py old mode 100644 new mode 100755 index 38b0d75478..bf4ddb82c2 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python3 # Test suites code generator. # # Copyright (C) 2018, ARM Limited, All Rights Reserved @@ -33,8 +34,10 @@ helper .function - Read common reusable functions. """ +import io import os import re +import sys import argparse import shutil @@ -59,7 +62,7 @@ class InvalidFileFormat(Exception): pass -class FileWrapper(file): +class FileWrapper(io.FileIO): """ File wrapper class. Provides reading with line no. tracking. """ @@ -73,24 +76,17 @@ class FileWrapper(file): super(FileWrapper, self).__init__(file_name, 'r') self.line_no = 0 - def next(self): + def __next__(self): """ Iterator return impl. :return: Line read from file. """ - line = super(FileWrapper, self).next() + line = super(FileWrapper, self).__next__() if line: self.line_no += 1 - return line - - def readline(self, limit=0): - """ - Wrap the base class readline. - - :param limit: limit to match file.readline([limit]) - :return: Line read from file. - """ - return self.next() + # Convert byte array to string with correct encoding + return line.decode(sys.getdefaultencoding()) + return None def split_dep(dep): @@ -513,7 +509,7 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): :return: Returns expression check code. """ expression_code = '' - for i in xrange(len(test_args)): + for i in range(len(test_args)): typ = func_args[i] val = test_args[i] From 76135345c82a87fb9e76bbdaa110f3ca441c6033 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 12 Apr 2018 13:23:01 +0100 Subject: [PATCH 0729/1100] Fix gcc-7 -Wformat-truncation warning Function test_snprintf() is called by run_test_snprintf() with constant test data. It gets inlined and is subjected to snprintf format truncation checks introduced by -Wformat-truncation in gcc-7. -Wformat-truncation is turned On by -Wall and other similar options. It results in error with -Werror. -Wformat-truncation makes tests performed by run_test_snprintf() redundant on gcc. But they are still relevant for other compilers. This commit prevents inlining of test_snprintf() to avoid gcc compile time checks. --- tests/suites/host_test.function | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function index a4a5a8265f..12431805f3 100644 --- a/tests/suites/host_test.function +++ b/tests/suites/host_test.function @@ -339,6 +339,8 @@ static int test_snprintf( size_t n, const char ref_buf[10], int ref_ret ) char buf[10] = "xxxxxxxxx"; const char ref[10] = "xxxxxxxxx"; + if( n >= sizeof( buf ) ) + return( -1 ); ret = mbedtls_snprintf( buf, n, "%s", "123" ); if( ret < 0 || (size_t) ret >= n ) ret = -1; From ddde34c698ad9302d024eed20c68813fbb4277fa Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 17 May 2018 11:41:32 +0100 Subject: [PATCH 0730/1100] Remove git conflict marker from test_suite_timing.function --- tests/suites/test_suite_timing.function | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/suites/test_suite_timing.function b/tests/suites/test_suite_timing.function index 6e949c86ba..1610155fbf 100644 --- a/tests/suites/test_suite_timing.function +++ b/tests/suites/test_suite_timing.function @@ -53,7 +53,6 @@ static int timers_are_badly_broken = 0; * END_DEPENDENCIES */ -<<<<<<< HEAD /* BEGIN_CASE */ void timing_timer_simple( ) { From b73159d6396f1e32980976e73155cc48b6d384c6 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 13 Jun 2018 16:31:26 +0100 Subject: [PATCH 0731/1100] Remove white spaces caught by check-files.py --- tests/scripts/generate_test_code.py | 34 ++-- tests/scripts/test_generate_test_code.py | 190 +++++++++++------------ tests/suites/main_test.function | 2 +- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index bf4ddb82c2..3ff7a41d98 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -57,20 +57,20 @@ END_CASE_REGEX = '/\*\s*END_CASE\s*\*/' class InvalidFileFormat(Exception): """ - Exception to indicate invalid file format. + Exception to indicate invalid file format. """ pass class FileWrapper(io.FileIO): """ - File wrapper class. Provides reading with line no. tracking. + File wrapper class. Provides reading with line no. tracking. """ def __init__(self, file_name): """ Init file handle. - + :param file_name: File path to open. """ super(FileWrapper, self).__init__(file_name, 'r') @@ -174,7 +174,7 @@ def gen_dispatch(name, deps): def parse_until_pattern(funcs_f, end_regex): """ Parses function headers or helper code until end pattern. - + :param funcs_f: file object for .functions file :param end_regex: Pattern to stop parsing :return: Test suite headers code @@ -193,7 +193,7 @@ def parse_until_pattern(funcs_f, end_regex): def parse_suite_deps(funcs_f): """ Parses test suite dependencies. - + :param funcs_f: file object for .functions file :return: List of test suite dependencies. """ @@ -213,7 +213,7 @@ def parse_suite_deps(funcs_f): def parse_function_deps(line): """ Parses function dependencies. - + :param line: Line from .functions file that has dependencies. :return: List of dependencies. """ @@ -230,7 +230,7 @@ def parse_function_deps(line): def parse_function_signature(line): """ Parsing function signature - + :param line: Line from .functions file that has a function signature. :return: function name, argument list, local variables for wrapper function and argument dispatch code. """ @@ -271,7 +271,7 @@ def parse_function_signature(line): def parse_function_code(funcs_f, deps, suite_deps): """ Parses out a function from function file object and generates function and dispatch code. - + :param funcs_f: file object of the functions file. :param deps: List of dependencies :param suite_deps: List of test suite dependencies @@ -319,7 +319,7 @@ def parse_function_code(funcs_f, deps, suite_deps): def parse_functions(funcs_f): """ Returns functions code pieces - + :param funcs_f: file object of the functions file. :return: List of test suite dependencies, test function dispatch code, function code and a dict with function identifiers and arguments info. @@ -361,7 +361,7 @@ def parse_functions(funcs_f): def escaped_split(str, ch): """ Split str on character ch but ignore escaped \{ch} - Since return value is used to write back to the intermediate data file. + Since return value is used to write back to the intermediate data file. Any escape characters in the input are retained in the output. :param str: String to split @@ -388,7 +388,7 @@ def escaped_split(str, ch): def parse_test_data(data_f, debug=False): """ Parses .data file - + :param data_f: file object of the data file. :return: Generator that yields test name, function name, dependency list and function argument list. """ @@ -432,7 +432,7 @@ def parse_test_data(data_f, debug=False): def gen_dep_check(dep_id, dep): """ Generate code for the dependency. - + :param dep_id: Dependency identifier :param dep: Dependency macro :return: Dependency check code @@ -456,7 +456,7 @@ def gen_dep_check(dep_id, dep): def gen_expression_check(exp_id, exp): """ Generates code for expression check - + :param exp_id: Expression Identifier :param exp: Expression/Macro :return: Expression check code @@ -476,7 +476,7 @@ def write_deps(out_data_f, test_deps, unique_deps): """ Write dependencies to intermediate test data file. It also returns dependency check code. - + :param out_data_f: Output intermediate data file :param test_deps: Dependencies :param unique_deps: Mutable list to track unique dependencies that are global to this re-entrant function. @@ -501,7 +501,7 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): """ Writes test parameters to the intermediate data file. Also generates expression code. - + :param out_data_f: Output intermediate data file :param test_args: Test parameters :param func_args: Function arguments @@ -533,7 +533,7 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): """ Adds preprocessor checks for test suite dependencies. - + :param suite_deps: Test suite dependencies read from the .functions file. :param dep_check_code: Dependency check code :param expression_code: Expression check code @@ -557,7 +557,7 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ Generates dependency checks, expression code and intermediate data file from test data file. - + :param data_f: Data file object :param out_data_f:Output intermediate data file :param func_info: Dict keyed by function and with function id and arguments info diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index 08b6fb3a68..4e225dc569 100644 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -36,7 +36,7 @@ class GenDep(TestCase): def test_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = ['DEP1', 'DEP2'] dep_start, dep_end = gen_deps(deps) @@ -50,7 +50,7 @@ class GenDep(TestCase): def test_disabled_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = ['!DEP1', '!DEP2'] dep_start, dep_end = gen_deps(deps) @@ -64,7 +64,7 @@ class GenDep(TestCase): def test_mixed_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = ['!DEP1', 'DEP2'] dep_start, dep_end = gen_deps(deps) @@ -78,7 +78,7 @@ class GenDep(TestCase): def test_empty_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = [] dep_start, dep_end = gen_deps(deps) @@ -88,7 +88,7 @@ class GenDep(TestCase): def test_large_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = [] count = 10 @@ -107,7 +107,7 @@ class GenDepOneLine(TestCase): def test_deps_list(self): """ Test that gen_dep() correctly creates deps for given dependency list. - :return: + :return: """ deps = ['DEP1', 'DEP2'] dep_str = gen_deps_one_line(deps) @@ -162,14 +162,14 @@ class GenFunctionWrapper(TestCase): def test_params_unpack(self): """ Test that params are properly unpacked in the function call. - - :return: + + :return: """ code = gen_function_wrapper('test_a', '', ('a', 'b', 'c', 'd')) expected = ''' void test_a_wrapper( void ** params ) { - + test_a( a, b, c, d ); } @@ -179,14 +179,14 @@ void test_a_wrapper( void ** params ) def test_local(self): """ Test that params are properly unpacked in the function call. - - :return: + + :return: """ code = gen_function_wrapper('test_a', 'int x = 1;', ('x', 'b', 'c', 'd')) expected = ''' void test_a_wrapper( void ** params ) { - + int x = 1; test_a( x, b, c, d ); } @@ -196,8 +196,8 @@ int x = 1; def test_empty_params(self): """ Test that params are properly unpacked in the function call. - - :return: + + :return: """ code = gen_function_wrapper('test_a', '', ()) expected = ''' @@ -219,7 +219,7 @@ class GenDispatch(TestCase): def test_dispatch(self): """ Test that dispatch table entry is generated correctly. - :return: + :return: """ code = gen_dispatch('test_a', ['DEP1', 'DEP2']) expected = ''' @@ -234,7 +234,7 @@ class GenDispatch(TestCase): def test_empty_deps(self): """ Test empty dependency list. - :return: + :return: """ code = gen_dispatch('test_a', []) expected = ''' @@ -250,8 +250,8 @@ class StringIOWrapper(StringIO, object): def __init__(self, file_name, data, line_no = 1): """ Init file handle. - - :param file_name: + + :param file_name: :param data: :param line_no: """ @@ -262,7 +262,7 @@ class StringIOWrapper(StringIO, object): def next(self): """ Iterator return impl. - :return: + :return: """ line = super(StringIOWrapper, self).next() return line @@ -270,9 +270,9 @@ class StringIOWrapper(StringIO, object): def readline(self, limit=0): """ Wrap the base class readline. - - :param limit: - :return: + + :param limit: + :return: """ line = super(StringIOWrapper, self).readline() if line: @@ -288,8 +288,8 @@ class ParseUntilPattern(TestCase): def test_suite_headers(self): """ Test that suite headers are parsed correctly. - - :return: + + :return: """ data = '''#include "mbedtls/ecp.h" @@ -307,9 +307,9 @@ class ParseUntilPattern(TestCase): def test_line_no(self): """ - Test that #line is set to correct line no. in source .function file. - - :return: + Test that #line is set to correct line no. in source .function file. + + :return: """ data = '''#include "mbedtls/ecp.h" @@ -329,7 +329,7 @@ class ParseUntilPattern(TestCase): def test_no_end_header_comment(self): """ Test that InvalidFileFormat is raised when end header comment is missing. - :return: + :return: """ data = '''#include "mbedtls/ecp.h" @@ -347,8 +347,8 @@ class ParseSuiteDeps(TestCase): def test_suite_deps(self): """ - - :return: + + :return: """ data = ''' * depends_on:MBEDTLS_ECP_C @@ -363,7 +363,7 @@ class ParseSuiteDeps(TestCase): def test_no_end_dep_comment(self): """ Test that InvalidFileFormat is raised when end dep comment is missing. - :return: + :return: """ data = ''' * depends_on:MBEDTLS_ECP_C @@ -374,10 +374,10 @@ class ParseSuiteDeps(TestCase): def test_deps_split(self): """ Test that InvalidFileFormat is raised when end dep comment is missing. - :return: + :return: """ data = ''' - * depends_on:MBEDTLS_ECP_C:A:B: C : D :F : G: !H + * depends_on:MBEDTLS_ECP_C:A:B: C : D :F : G: !H * END_DEPENDENCIES */ ''' @@ -389,13 +389,13 @@ class ParseSuiteDeps(TestCase): class ParseFuncDeps(TestCase): """ - Test Suite for testing parse_function_deps() + Test Suite for testing parse_function_deps() """ def test_function_deps(self): """ Test that parse_function_deps() correctly parses function dependencies. - :return: + :return: """ line = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */' expected = ['MBEDTLS_ENTROPY_NV_SEED', 'MBEDTLS_FS_IO'] @@ -405,7 +405,7 @@ class ParseFuncDeps(TestCase): def test_no_deps(self): """ Test that parse_function_deps() correctly parses function dependencies. - :return: + :return: """ line = '/* BEGIN_CASE */' deps = parse_function_deps(line) @@ -414,7 +414,7 @@ class ParseFuncDeps(TestCase): def test_poorly_defined_deps(self): """ Test that parse_function_deps() correctly parses function dependencies. - :return: + :return: """ line = '/* BEGIN_CASE depends_on:MBEDTLS_FS_IO: A : !B:C : F*/' deps = parse_function_deps(line) @@ -423,13 +423,13 @@ class ParseFuncDeps(TestCase): class ParseFuncSignature(TestCase): """ - Test Suite for parse_function_signature(). + Test Suite for parse_function_signature(). """ def test_int_and_char_params(self): """ Test int and char parameters parsing - :return: + :return: """ line = 'void entropy_threshold( char * a, int b, int result )' name, args, local, arg_dispatch = parse_function_signature(line) @@ -441,7 +441,7 @@ class ParseFuncSignature(TestCase): def test_hex_params(self): """ Test hex parameters parsing - :return: + :return: """ line = 'void entropy_threshold( char * a, HexParam_t * h, int result )' name, args, local, arg_dispatch = parse_function_signature(line) @@ -453,7 +453,7 @@ class ParseFuncSignature(TestCase): def test_non_void_function(self): """ Test invalid signature (non void). - :return: + :return: """ line = 'int entropy_threshold( char * a, HexParam_t * h, int result )' self.assertRaises(ValueError, parse_function_signature, line) @@ -461,7 +461,7 @@ class ParseFuncSignature(TestCase): def test_unsupported_arg(self): """ Test unsupported arguments (not among int, char * and HexParam_t) - :return: + :return: """ line = 'int entropy_threshold( char * a, HexParam_t * h, int * result )' self.assertRaises(ValueError, parse_function_signature, line) @@ -469,7 +469,7 @@ class ParseFuncSignature(TestCase): def test_no_params(self): """ Test no parameters. - :return: + :return: """ line = 'void entropy_threshold()' name, args, local, arg_dispatch = parse_function_signature(line) @@ -487,7 +487,7 @@ class ParseFunctionCode(TestCase): def test_no_function(self): """ Test no test function found. - :return: + :return: """ data = ''' No @@ -500,7 +500,7 @@ function def test_no_end_case_comment(self): """ Test missing end case. - :return: + :return: """ data = ''' void test_func() @@ -514,7 +514,7 @@ void test_func() def test_parse_function_signature_called(self, parse_function_signature_mock): """ Test parse_function_code() - :return: + :return: """ parse_function_signature_mock.return_value = ('test_func', [], '', []) data = ''' @@ -537,7 +537,7 @@ void test_func() gen_dispatch_mock): """ Test generated code. - :return: + :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) gen_function_wrapper_mock.return_value = '' @@ -582,7 +582,7 @@ exit: gen_dispatch_mock): """ Test when exit label is present. - :return: + :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) gen_function_wrapper_mock.return_value = '' @@ -624,7 +624,7 @@ class ParseFunction(TestCase): def test_begin_header(self, parse_until_pattern_mock): """ Test that begin header is checked and parse_until_pattern() is called. - :return: + :return: """ def stop(this): raise Exception @@ -644,7 +644,7 @@ class ParseFunction(TestCase): def test_begin_helper(self, parse_until_pattern_mock): """ Test that begin helper is checked and parse_until_pattern() is called. - :return: + :return: """ def stop(this): raise Exception @@ -665,7 +665,7 @@ void print_helloworld() def test_begin_dep(self, parse_suite_deps_mock): """ Test that begin dep is checked and parse_suite_deps() is called. - :return: + :return: """ def stop(this): raise Exception @@ -684,7 +684,7 @@ void print_helloworld() def test_begin_function_dep(self, parse_function_deps_mock): """ Test that begin dep is checked and parse_function_deps() is called. - :return: + :return: """ def stop(this): raise Exception @@ -705,7 +705,7 @@ void print_helloworld() def test_return(self, parse_function_deps_mock, parse_function_code_mock): """ Test that begin case is checked and parse_function_code() is called. - :return: + :return: """ def stop(this): raise Exception @@ -740,7 +740,7 @@ void print_helloworld() def test_parsing(self): """ Test case parsing. - :return: + :return: """ data = '''/* BEGIN_HEADER */ #include "mbedtls/ecp.h" @@ -833,7 +833,7 @@ void test_func2_wrapper( void ** params ) def test_same_function_name(self): """ Test name conflict. - :return: + :return: """ data = '''/* BEGIN_HEADER */ #include "mbedtls/ecp.h" @@ -872,14 +872,14 @@ class ExcapedSplit(TestCase): def test_invalid_input(self): """ Test when input split character is not a character. - :return: + :return: """ self.assertRaises(ValueError, escaped_split, '', 'string') def test_empty_string(self): """ Test empty strig input. - :return: + :return: """ splits = escaped_split('', ':') self.assertEqual(splits, []) @@ -887,7 +887,7 @@ class ExcapedSplit(TestCase): def test_no_escape(self): """ Test with no escape character. The behaviour should be same as str.split() - :return: + :return: """ s = 'yahoo:google' splits = escaped_split(s, ':') @@ -896,7 +896,7 @@ class ExcapedSplit(TestCase): def test_escaped_input(self): """ Test imput that has escaped delimiter. - :return: + :return: """ s = 'yahoo\:google:facebook' splits = escaped_split(s, ':') @@ -905,7 +905,7 @@ class ExcapedSplit(TestCase): def test_escaped_escape(self): """ Test imput that has escaped delimiter. - :return: + :return: """ s = 'yahoo\\\:google:facebook' splits = escaped_split(s, ':') @@ -914,7 +914,7 @@ class ExcapedSplit(TestCase): def test_all_at_once(self): """ Test imput that has escaped delimiter. - :return: + :return: """ s = 'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' splits = escaped_split(s, ':') @@ -929,7 +929,7 @@ class ParseTestData(TestCase): def test_parser(self): """ Test that tests are parsed correctly from data file. - :return: + :return: """ data = """ Diffie-Hellman full exchange #1 @@ -970,7 +970,7 @@ dhm_selftest: def test_with_dependencies(self): """ Test that tests with dependencies are parsed. - :return: + :return: """ data = """ Diffie-Hellman full exchange #1 @@ -997,7 +997,7 @@ dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" def test_no_args(self): """ Test AssertionError is raised when test function name and args line is missing. - :return: + :return: """ data = """ Diffie-Hellman full exchange #1 @@ -1020,7 +1020,7 @@ dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" def test_incomplete_data(self): """ Test AssertionError is raised when test function name and args line is missing. - :return: + :return: """ data = """ Diffie-Hellman full exchange #1 @@ -1038,13 +1038,13 @@ depends_on:YAHOO class GenDepCheck(TestCase): """ - Test suite for gen_dep_check(). It is assumed this function is called with valid inputs. + Test suite for gen_dep_check(). It is assumed this function is called with valid inputs. """ def test_gen_dep_check(self): """ Test that dependency check code generated correctly. - :return: + :return: """ expected = """ case 5: @@ -1062,7 +1062,7 @@ class GenDepCheck(TestCase): def test_noT(self): """ Test dependency with !. - :return: + :return: """ expected = """ case 5: @@ -1080,27 +1080,27 @@ class GenDepCheck(TestCase): def test_empty_dependency(self): """ Test invalid dependency input. - :return: + :return: """ self.assertRaises(AssertionError, gen_dep_check, 5, '!') def test_negative_dep_id(self): """ Test invalid dependency input. - :return: + :return: """ self.assertRaises(AssertionError, gen_dep_check, -1, 'YAHOO') class GenExpCheck(TestCase): """ - Test suite for gen_expression_check(). It is assumed this function is called with valid inputs. + Test suite for gen_expression_check(). It is assumed this function is called with valid inputs. """ def test_gen_exp_check(self): """ Test that expression check code generated correctly. - :return: + :return: """ expected = """ case 5: @@ -1114,14 +1114,14 @@ class GenExpCheck(TestCase): def test_invalid_expression(self): """ Test invalid expression input. - :return: + :return: """ self.assertRaises(AssertionError, gen_expression_check, 5, '') def test_negative_exp_id(self): """ Test invalid expression id. - :return: + :return: """ self.assertRaises(AssertionError, gen_expression_check, -1, 'YAHOO') @@ -1134,7 +1134,7 @@ class WriteDeps(TestCase): def test_no_test_deps(self): """ Test when test_deps is empty. - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_deps = [] @@ -1145,8 +1145,8 @@ class WriteDeps(TestCase): def test_unique_dep_ids(self): """ - - :return: + + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_deps = [] @@ -1185,8 +1185,8 @@ class WriteDeps(TestCase): def test_dep_id_repeat(self): """ - - :return: + + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_deps = [] @@ -1235,7 +1235,7 @@ class WriteParams(TestCase): def test_no_params(self): """ Test with empty test_args - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] @@ -1247,7 +1247,7 @@ class WriteParams(TestCase): def test_no_exp_param(self): """ Test when there is no macro or expression in the params. - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] @@ -1260,7 +1260,7 @@ class WriteParams(TestCase): def test_hex_format_int_param(self): """ Test int parameter in hex format. - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] @@ -1273,7 +1273,7 @@ class WriteParams(TestCase): def test_with_exp_param(self): """ Test when there is macro or expression in the params. - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] @@ -1304,7 +1304,7 @@ class WriteParams(TestCase): def test_with_repeate_calls(self): """ Test when write_parameter() is called with same macro or expression. - :return: + :return: """ s = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] @@ -1343,13 +1343,13 @@ class WriteParams(TestCase): class GenTestSuiteDepsChecks(TestCase): """ - + """ def test_empty_suite_deps(self): """ Test with empty suite_deps list. - - :return: + + :return: """ dep_check_code, expression_code = gen_suite_deps_checks([], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') self.assertEqual(dep_check_code, 'DEP_CHECK_CODE') @@ -1358,8 +1358,8 @@ class GenTestSuiteDepsChecks(TestCase): def test_suite_deps(self): """ Test with suite_deps list. - - :return: + + :return: """ dep_check_code, expression_code = gen_suite_deps_checks(['SUITE_DEP'], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') exprectd_dep_check_code = ''' @@ -1377,8 +1377,8 @@ EXPRESSION_CODE def test_no_dep_no_exp(self): """ - Test when there are no dependency and expression code. - :return: + Test when there are no dependency and expression code. + :return: """ dep_check_code, expression_code = gen_suite_deps_checks([], '', '') self.assertEqual(dep_check_code, '') @@ -1396,7 +1396,7 @@ class GenFromTestData(TestCase): def test_intermediate_data_file(self, gen_suite_deps_checks_mock, write_parameters_mock, write_deps_mock): """ Test that intermediate data file is written with expected data. - :return: + :return: """ data = ''' My test @@ -1428,7 +1428,7 @@ func1:0 def test_function_not_found(self): """ Test that AssertError is raised when function info in not found. - :return: + :return: """ data = ''' My test @@ -1444,7 +1444,7 @@ func1:0 def test_different_func_args(self): """ Test that AssertError is raised when no. of parameters and function args differ. - :return: + :return: """ data = ''' My test @@ -1460,7 +1460,7 @@ func1:0 def test_output(self): """ Test that intermediate data file is written with expected data. - :return: + :return: """ data = ''' My test 1 diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 93b32cc31a..fa8a0afeef 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -130,7 +130,7 @@ typedef void (*TestWrapper_t)( void ** ); */ TestWrapper_t test_funcs[] = {{ -{dispatch_code} +{dispatch_code} #line {line_no} "suites/main_test.function" }}; From 9b06f37601bfbd69422308c163b6bb4d5d21f036 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 14 Jun 2018 10:21:42 +0100 Subject: [PATCH 0732/1100] Give execute permissions to Python scripts --- tests/scripts/mbedtls_test.py | 0 tests/scripts/test_generate_test_code.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tests/scripts/mbedtls_test.py mode change 100644 => 100755 tests/scripts/test_generate_test_code.py diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py old mode 100644 new mode 100755 diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py old mode 100644 new mode 100755 From 7776141a16b49ef9131d6352e0f957019e4cdfdd Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 18 Jun 2018 17:51:40 +0200 Subject: [PATCH 0733/1100] Don't generate lines with only whitespace --- tests/scripts/generate_test_code.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 3ff7a41d98..45fb1f5749 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -136,11 +136,11 @@ def gen_function_wrapper(name, locals, args_dispatch): wrapper = ''' void {name}_wrapper( void ** params ) {{ - {unused_params} -{locals} +{unused_params}{locals} {name}( {args} ); }} -'''.format(name=name, unused_params='(void)params;' if len(args_dispatch) == 0 else '', +'''.format(name=name, + unused_params='' if args_dispatch else ' (void) params;\n', args=', '.join(args_dispatch), locals=locals) return wrapper From 667f7f8369fc29aef4c14c132cdcfc1667d72e67 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 18 Jun 2018 17:51:56 +0200 Subject: [PATCH 0734/1100] Fix generation of #line directives in Python 2 When using Python 2 (which is done in the Makefile), all #line directives from the test code were generated with the line number 1. This traces back to the change in the method name for generators in Python 2 (next) vs Python 3 (__next__). Override both methods so that the script remains compatible with both Python 2 and Python 3. --- tests/scripts/generate_test_code.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 45fb1f5749..78bbaa3999 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -76,17 +76,24 @@ class FileWrapper(io.FileIO): super(FileWrapper, self).__init__(file_name, 'r') self.line_no = 0 + # Override the generator function in a way that works in both Python 2 + # and Python 3. def __next__(self): """ Iterator return impl. :return: Line read from file. """ - line = super(FileWrapper, self).__next__() + parent = super(FileWrapper, self) + if hasattr(parent, '__next__'): + line = parent.__next__() # Python 3 + else: + line = parent.next() # Python 2 if line: self.line_no += 1 # Convert byte array to string with correct encoding return line.decode(sys.getdefaultencoding()) return None + next = __next__ def split_dep(dep): From 0fa3504a77233403cb78ac1fd16a0af93b938c36 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 22 Jun 2018 11:34:33 +0100 Subject: [PATCH 0735/1100] Add missing MSVC typedefs --- tests/suites/helpers.function | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index c772af9a5e..7f5a6f29a5 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -25,6 +25,8 @@ #ifdef _MSC_VER #include +typedef UINT8 uint8_t; +typedef INT32 int32_t; typedef UINT32 uint32_t; #define strncasecmp _strnicmp #define strcasecmp _stricmp From c3521dfdd6ea34b0d5d4ae3e040953e9c4ca64b8 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 14:06:52 +0100 Subject: [PATCH 0736/1100] Fix generate_test_code.py unit tests --- tests/scripts/generate_test_code.py | 2 +- tests/scripts/test_generate_test_code.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 78bbaa3999..f668128e61 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -147,7 +147,7 @@ void {name}_wrapper( void ** params ) {name}( {args} ); }} '''.format(name=name, - unused_params='' if args_dispatch else ' (void) params;\n', + unused_params='' if args_dispatch else ' (void)params;\n', args=', '.join(args_dispatch), locals=locals) return wrapper diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index 4e225dc569..a4debbae48 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -170,7 +170,6 @@ class GenFunctionWrapper(TestCase): void test_a_wrapper( void ** params ) { - test_a( a, b, c, d ); } ''' @@ -186,7 +185,6 @@ void test_a_wrapper( void ** params ) expected = ''' void test_a_wrapper( void ** params ) { - int x = 1; test_a( x, b, c, d ); } From 3b06f226e91a2b1f41f59bd371a58b94f45f7050 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 14:35:25 +0100 Subject: [PATCH 0737/1100] Replace asserts with exceptions in generate_test_code.py --- tests/scripts/generate_test_code.py | 49 +++++++++++++++++------- tests/scripts/test_generate_test_code.py | 27 ++++++------- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index f668128e61..22066f7e6d 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -62,6 +62,13 @@ class InvalidFileFormat(Exception): pass +class GeneratorInputError(Exception): + """ + Exception to indicate error in the input to the generator. + """ + pass + + class FileWrapper(io.FileIO): """ File wrapper class. Provides reading with line no. tracking. @@ -353,8 +360,10 @@ def parse_functions(funcs_f): func_name, args, func_code, func_dispatch = parse_function_code(funcs_f, deps, suite_deps) suite_functions += func_code # Generate dispatch code and enumeration info - assert func_name not in func_info, "file: %s - function %s re-declared at line %d" % \ - (funcs_f.name, func_name, funcs_f.line_no) + if func_name in func_info: + raise GeneratorInputError( + "file: %s - function %s re-declared at line %d" % \ + (funcs_f.name, func_name, funcs_f.line_no)) func_info[func_name] = (function_idx, args) dispatch_code += '/* Function Id: %d */\n' % function_idx dispatch_code += func_dispatch @@ -411,8 +420,9 @@ def parse_test_data(data_f, debug=False): # Blank line indicates end of test if len(line) == 0: - assert state != STATE_READ_ARGS, "Newline before arguments. " \ - "Test function and arguments missing for %s" % name + if state == STATE_READ_ARGS: + raise GeneratorInputError("Newline before arguments. " \ + "Test function and arguments missing for %s" % name) continue if state == STATE_READ_NAME: @@ -432,8 +442,9 @@ def parse_test_data(data_f, debug=False): yield name, function, deps, args deps = [] state = STATE_READ_NAME - assert state != STATE_READ_ARGS, "Newline before arguments. " \ - "Test function and arguments missing for %s" % name + if state == STATE_READ_ARGS: + raise GeneratorInputError("Newline before arguments. " \ + "Test function and arguments missing for %s" % name) def gen_dep_check(dep_id, dep): @@ -444,9 +455,11 @@ def gen_dep_check(dep_id, dep): :param dep: Dependency macro :return: Dependency check code """ - assert dep_id > -1, "Dependency Id should be a positive integer." + if dep_id < 0: + raise GeneratorInputError("Dependency Id should be a positive integer.") noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) - assert len(dep) > 0, "Dependency should not be an empty string." + if len(dep) == 0: + raise GeneratorInputError("Dependency should not be an empty string.") dep_check = ''' case {id}: {{ @@ -468,8 +481,10 @@ def gen_expression_check(exp_id, exp): :param exp: Expression/Macro :return: Expression check code """ - assert exp_id > -1, "Expression Id should be a positive integer." - assert len(exp) > 0, "Expression should not be an empty string." + if exp_id < 0: + raise GeneratorInputError("Expression Id should be a positive integer.") + if len(exp) == 0: + raise GeneratorInputError("Expression should not be an empty string.") exp_code = ''' case {exp_id}: {{ @@ -583,13 +598,15 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): # Write test function name test_function_name = 'test_' + function_name - assert test_function_name in func_info, "Function %s not found!" % test_function_name + if test_function_name not in func_info: + raise GeneratorInputError("Function %s not found!" % test_function_name) func_id, func_args = func_info[test_function_name] out_data_f.write(str(func_id)) # Write parameters - assert len(test_args) == len(func_args), \ - "Invalid number of arguments in test %s. See function %s signature." % (test_name, function_name) + if len(test_args) != len(func_args): + raise GeneratorInputError("Invalid number of arguments in test %s. See function %s signature." % (test_name, + function_name)) expression_code += write_parameters(out_data_f, test_args, func_args, unique_expressions) # Write a newline as test case separator @@ -726,4 +743,8 @@ def check_cmd(): if __name__ == "__main__": - check_cmd() + try: + check_cmd() + except GeneratorInputError as e: + script_name = os.path.basename(sys.argv[0]) + print("%s: input error: %s" % (script_name, str(e))) diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index a4debbae48..9964ab9f6f 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # Unit test for generate_test_code.py # # Copyright (C) 2018, ARM Limited, All Rights Reserved @@ -857,7 +858,7 @@ void func() /* END_CASE */ ''' s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(AssertionError, parse_functions, s) + self.assertRaises(GeneratorInputError, parse_functions, s) class ExcapedSplit(TestCase): @@ -994,7 +995,7 @@ dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" def test_no_args(self): """ - Test AssertionError is raised when test function name and args line is missing. + Test GeneratorInputError is raised when test function name and args line is missing. :return: """ data = """ @@ -1011,13 +1012,13 @@ dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" try: for x, y, z, a in parse_test_data(s): pass - except AssertionError, e: + except GeneratorInputError as e: pass - self.assertEqual(type(e), AssertionError) + self.assertEqual(type(e), GeneratorInputError) def test_incomplete_data(self): """ - Test AssertionError is raised when test function name and args line is missing. + Test GeneratorInputError is raised when test function name and args line is missing. :return: """ data = """ @@ -1029,9 +1030,9 @@ depends_on:YAHOO try: for x, y, z, a in parse_test_data(s): pass - except AssertionError, e: + except GeneratorInputError as e: pass - self.assertEqual(type(e), AssertionError) + self.assertEqual(type(e), GeneratorInputError) class GenDepCheck(TestCase): @@ -1080,14 +1081,14 @@ class GenDepCheck(TestCase): Test invalid dependency input. :return: """ - self.assertRaises(AssertionError, gen_dep_check, 5, '!') + self.assertRaises(GeneratorInputError, gen_dep_check, 5, '!') def test_negative_dep_id(self): """ Test invalid dependency input. :return: """ - self.assertRaises(AssertionError, gen_dep_check, -1, 'YAHOO') + self.assertRaises(GeneratorInputError, gen_dep_check, -1, 'YAHOO') class GenExpCheck(TestCase): @@ -1114,14 +1115,14 @@ class GenExpCheck(TestCase): Test invalid expression input. :return: """ - self.assertRaises(AssertionError, gen_expression_check, 5, '') + self.assertRaises(GeneratorInputError, gen_expression_check, 5, '') def test_negative_exp_id(self): """ Test invalid expression id. :return: """ - self.assertRaises(AssertionError, gen_expression_check, -1, 'YAHOO') + self.assertRaises(GeneratorInputError, gen_expression_check, -1, 'YAHOO') class WriteDeps(TestCase): @@ -1437,7 +1438,7 @@ func1:0 out_data_f = StringIOWrapper('test_suite_ut.datax', '') func_info = {'test_func2': (1, ('int',))} suite_deps = [] - self.assertRaises(AssertionError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + self.assertRaises(GeneratorInputError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) def test_different_func_args(self): """ @@ -1453,7 +1454,7 @@ func1:0 out_data_f = StringIOWrapper('test_suite_ut.datax', '') func_info = {'test_func2': (1, ('int','hex'))} suite_deps = [] - self.assertRaises(AssertionError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + self.assertRaises(GeneratorInputError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) def test_output(self): """ From 8f6e8cfcc71d91a0676378bd1d859f7193b95da2 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 16:57:37 +0100 Subject: [PATCH 0738/1100] Print line number with data file error --- tests/scripts/generate_test_code.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 22066f7e6d..c62b5b9a8a 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -421,8 +421,9 @@ def parse_test_data(data_f, debug=False): # Blank line indicates end of test if len(line) == 0: if state == STATE_READ_ARGS: - raise GeneratorInputError("Newline before arguments. " \ - "Test function and arguments missing for %s" % name) + raise GeneratorInputError("[%s:%d] Newline before arguments. " \ + "Test function and arguments missing for %s" % \ + (data_f.name, data_f.line_no, name)) continue if state == STATE_READ_NAME: @@ -443,8 +444,9 @@ def parse_test_data(data_f, debug=False): deps = [] state = STATE_READ_NAME if state == STATE_READ_ARGS: - raise GeneratorInputError("Newline before arguments. " \ - "Test function and arguments missing for %s" % name) + raise GeneratorInputError("[%s:%d] Newline before arguments. " \ + "Test function and arguments missing for %s" % \ + (data_f.name, data_f.line_no, name)) def gen_dep_check(dep_id, dep): @@ -650,7 +652,7 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file out_data_file.replace('\\', '\\\\')) # escape '\' # Function code - with FileWrapper(funcs_file) as funcs_f, open(data_file, 'r') as data_f, open(out_data_file, 'w') as out_data_f: + with FileWrapper(funcs_file) as funcs_f, FileWrapper(data_file) as data_f, open(out_data_file, 'w') as out_data_f: suite_deps, dispatch_code, func_code, func_info = parse_functions(funcs_f) snippets['functions_code'] = func_code snippets['dispatch_code'] = dispatch_code From 8a3628fc86f82f2cc72a6bc9cc4ac9729f5ff8fa Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 17:30:16 +0100 Subject: [PATCH 0739/1100] Set PYTHON using ?= syntax --- tests/Makefile | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index b3ab03665e..88d91ef265 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -39,10 +39,13 @@ LOCAL_LDFLAGS += -lws2_32 ifdef SHARED SHARED_SUFFIX=.$(DLEXT) endif +PYTHON ?= python else DLEXT ?= so EXEXT= SHARED_SUFFIX= +# python2 for POSIX since FreeBSD has only python2 as default. +PYTHON ?= python2 endif # Zlib shared library extensions: @@ -50,15 +53,6 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -# Python executable -ifndef PYTHON -ifdef WINDOWS -PYTHON=python -else -PYTHON=python2 -endif -endif - APPS = test_suite_aes.ecb test_suite_aes.cbc \ test_suite_aes.cfb test_suite_aes.ofb \ test_suite_aes.xts \ From 53faf5c96407f353e96f9891fc74637c12f7d687 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 17:34:48 +0100 Subject: [PATCH 0740/1100] Widen the test app columns --- tests/Makefile | 94 ++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 88d91ef265..0fe8a0f25b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -53,54 +53,52 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aes.ecb test_suite_aes.cbc \ - test_suite_aes.cfb test_suite_aes.ofb \ - test_suite_aes.xts \ - test_suite_aes.rest test_suite_arc4 \ - test_suite_aria test_suite_asn1write \ - test_suite_base64 test_suite_blowfish \ - test_suite_camellia test_suite_ccm \ - test_suite_chacha20 test_suite_chachapoly \ - test_suite_cmac \ - test_suite_cipher.chachapoly \ - test_suite_cipher.aes \ - test_suite_cipher.arc4 test_suite_cipher.ccm \ - test_suite_cipher.chacha20 \ - test_suite_cipher.gcm \ - test_suite_cipher.blowfish \ - test_suite_cipher.camellia \ - test_suite_cipher.des test_suite_cipher.null \ - test_suite_cipher.padding \ - test_suite_ctr_drbg test_suite_debug \ - test_suite_des test_suite_dhm \ - test_suite_ecdh test_suite_ecdsa \ - test_suite_ecjpake test_suite_ecp \ - test_suite_error test_suite_entropy \ - test_suite_gcm.aes128_de \ - test_suite_gcm.aes192_de \ - test_suite_gcm.aes256_de \ - test_suite_gcm.aes128_en \ - test_suite_gcm.aes192_en \ - test_suite_gcm.aes256_en \ - test_suite_gcm.camellia \ - test_suite_hkdf \ - test_suite_hmac_drbg.misc \ - test_suite_hmac_drbg.no_reseed \ - test_suite_hmac_drbg.nopr \ - test_suite_hmac_drbg.pr \ - test_suite_md test_suite_mdx \ - test_suite_memory_buffer_alloc \ - test_suite_mpi \ - test_suite_nist_kw \ - test_suite_pem test_suite_pkcs1_v15 \ - test_suite_pkcs1_v21 test_suite_pkcs5 \ - test_suite_pkparse test_suite_pkwrite \ - test_suite_pk \ - test_suite_poly1305 \ - test_suite_rsa test_suite_shax \ - test_suite_ssl test_suite_timing \ - test_suite_x509parse test_suite_x509write \ - test_suite_xtea test_suite_version +APPS = test_suite_aes.ecb test_suite_aes.cbc \ + test_suite_aes.cfb test_suite_aes.ofb \ + test_suite_aes.xts \ + test_suite_aes.rest test_suite_arc4 \ + test_suite_aria test_suite_asn1write \ + test_suite_base64 test_suite_blowfish \ + test_suite_camellia test_suite_ccm \ + test_suite_chacha20 test_suite_chachapoly \ + test_suite_aria \ + test_suite_cmac \ + test_suite_cipher.aes \ + test_suite_cipher.arc4 test_suite_cipher.ccm \ + test_suite_cipher.chacha20 \ + test_suite_cipher.gcm \ + test_suite_cipher.blowfish \ + test_suite_cipher.camellia \ + test_suite_cipher.des test_suite_cipher.null \ + test_suite_cipher.padding \ + test_suite_ctr_drbg test_suite_debug \ + test_suite_des test_suite_dhm \ + test_suite_ecdh test_suite_ecdsa \ + test_suite_ecjpake test_suite_ecp \ + test_suite_error test_suite_entropy \ + test_suite_gcm.aes128_de \ + test_suite_gcm.aes192_de \ + test_suite_gcm.aes256_de \ + test_suite_gcm.aes128_en \ + test_suite_gcm.aes192_en \ + test_suite_gcm.aes256_en \ + test_suite_gcm.camellia \ + test_suite_hkdf \ + test_suite_hmac_drbg.misc \ + test_suite_hmac_drbg.no_reseed \ + test_suite_hmac_drbg.nopr \ + test_suite_hmac_drbg.pr \ + test_suite_md test_suite_mdx \ + test_suite_memory_buffer_alloc \ + test_suite_mpi \ + test_suite_pem test_suite_pkcs1_v15 \ + test_suite_pkcs1_v21 test_suite_pkcs5 \ + test_suite_pkparse test_suite_pkwrite \ + test_suite_pk \ + test_suite_rsa test_suite_shax \ + test_suite_ssl test_suite_timing \ + test_suite_x509parse test_suite_x509write \ + test_suite_xtea test_suite_version BINARIES := $(addsuffix $(EXEXT),$(APPS)) From cfd834274bc03259e4209931f65ae732c539b0b1 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Tue, 26 Jun 2018 18:15:18 +0100 Subject: [PATCH 0741/1100] Use integer instead of string as test result --- tests/suites/test_suite_ccm.data | 192 +++++++++++++-------------- tests/suites/test_suite_ccm.function | 16 +-- 2 files changed, 99 insertions(+), 109 deletions(-) diff --git a/tests/suites/test_suite_ccm.data b/tests/suites/test_suite_ccm.data index 85bc3db417..a2d8778410 100644 --- a/tests/suites/test_suite_ccm.data +++ b/tests/suites/test_suite_ccm.data @@ -1036,387 +1036,387 @@ mbedtls_ccm_encrypt_and_tag:MBEDTLS_CIPHER_ID_AES:"2e6e34070caf1b8820ed39edfa834 CCM auth decrypt tag NIST DVPT AES-128 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"02209f55":"5a8aa485c316e9":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"02209f55":"5a8aa485c316e9":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-128 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"9a04c241":"3796cf51b87266":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4ae701103c63deca5b5a3939d7d05992":"9a04c241":"3796cf51b87266":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"75d582db43ce9b13ab4b6f7f14341330":"5a8aa485c316e9":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"75d582db43ce9b13ab4b6f7f14341330":"5a8aa485c316e9":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-128 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3a65e03af37b81d05acc7ec1bc39deb0":"3796cf51b87266":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"3a65e03af37b81d05acc7ec1bc39deb0":"3796cf51b87266":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"90156f3f":"5a8aa485c316e9403aff859fbb":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"90156f3f":"5a8aa485c316e9403aff859fbb":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-128 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"88909016":"a16a2e741f1cd9717285b6d882":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3":"88909016":"a16a2e741f1cd9717285b6d882":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"fb04dc5a44c6bb000f2440f5154364b4":"5a8aa485c316e9403aff859fbb":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"fb04dc5a44c6bb000f2440f5154364b4":"5a8aa485c316e9403aff859fbb":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-128 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"5447075bf42a59b91f08064738b015ab":"a16a2e741f1cd9717285b6d882":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"5447075bf42a59b91f08064738b015ab":"a16a2e741f1cd9717285b6d882":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb703e1fa6b":"5a8aa485c316e9":"":4:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"a90e8ea44085ced791b2fdb7fd44b5cf0bd7d27718029bb703e1fa6b":"5a8aa485c316e9":"":4:0:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-128 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f23e5d81c":"31f8fa25827d48":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd":"50aafe0578c115c4a8e126ff7b3ccb64dce8ccaa8ceda69f23e5d81c":"31f8fa25827d48":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f2d9a3fbc210595b7b8b1b41523111a8e":"5a8aa485c316e9":"":16:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"24ab9eeb0e5508cae80074f1070ee188a637171860881f1f2d9a3fbc210595b7b8b1b41523111a8e":"5a8aa485c316e9":"":16:0:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-128 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd2463af747cc88a001fa94e060290f209c4":"31f8fa25827d48":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"7ebfda6fa5da1dbffd82dc29b875798fbcef8ba0084fbd2463af747cc88a001fa94e060290f209c4":"31f8fa25827d48":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134a3e138b9":"5a8aa485c316e9403aff859fbb":"":4:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"4a550134f94455979ec4bf89ad2bd80d25a77ae94e456134a3e138b9":"5a8aa485c316e9403aff859fbb":"":4:0:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-128 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654091a5ae9":"49004912fdd7269279b1f06a89":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d5243":"118ec53dd1bfbe52d5b9fe5dfebecf2ee674ec983eada654091a5ae9":"49004912fdd7269279b1f06a89":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb6a9a970b9beb2ac1bd4fd62168f8378a":"5a8aa485c316e9403aff859fbb":"":16:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"4bfe4e35784f0a65b545477e5e2f4bae0e1e6fa717eaf2cb6a9a970b9beb2ac1bd4fd62168f8378a":"5a8aa485c316e9403aff859fbb":"":16:0:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-128 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065a65666144994bad0c8195bcb4ade1337":"49004912fdd7269279b1f06a89":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"0c56a503aa2c12e87450d45a7b714db980fd348f327c0065a65666144994bad0c8195bcb4ade1337":"49004912fdd7269279b1f06a89":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"782e4318":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"782e4318":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:0:"" CCM auth decrypt tag NIST DVPT AES-128 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"a04f270a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe4829":"a04f270a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"41b476013f45e4a781f253a6f3b1e530":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"41b476013f45e4a781f253a6f3b1e530":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:0:"" CCM auth decrypt tag NIST DVPT AES-128 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"f9f018fcd125822616083fffebc4c8e6":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"f9f018fcd125822616083fffebc4c8e6":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"9f69f24f":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"9f69f24f":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:0:"" CCM auth decrypt tag NIST DVPT AES-128 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"e17afaa4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b":"e17afaa4":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"1859ac36a40a6b28b34266253627797a":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"1859ac36a40a6b28b34266253627797a":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:0:"" CCM auth decrypt tag NIST DVPT AES-128 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"edf8b46eb69ac0044116019dec183072":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"edf8b46eb69ac0044116019dec183072":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b338f125fa":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"6be31860ca271ef448de8f8d8b39346daf4b81d7e92d65b338f125fa":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:0:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-128 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c728a66b69":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c7571":"4cc57a9927a6bc401441870d3193bf89ebd163f5c01501c728a66b69":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b512cf3a20b7fd7c49e6e79bef475c2906f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"b351ab96b2e45515254558d5212673ee6c776d42dbca3b512cf3a20b7fd7c49e6e79bef475c2906f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:0:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-128 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a3081d18ca149d6766bfaccec88f194eb5b":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"df1a5285caa41b4bb47f6e5ceceba4e82721828d68427a3081d18ca149d6766bfaccec88f194eb5b":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"934f893824e880f743d196b22d1f340a52608155087bd28ac25e5329":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"934f893824e880f743d196b22d1f340a52608155087bd28ac25e5329":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:0:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-128 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a6559b3b3ee":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728c":"f43ba9d834ad85dfab3f1c0c27c3441fe4e411a38a261a6559b3b3ee":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-128 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375c0a458bfcafa3b2609afe0f825cbf503":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"50038b5fdd364ee747b70d00bd36840ece4ea19998123375c0a458bfcafa3b2609afe0f825cbf503":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:0:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-128 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c390042ba8bb5f6798dab01c5afad7306":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0e":"78ed8ff6b5a1255d0fbd0a719a9c27b059ff5f83d0c4962c390042ba8bb5f6798dab01c5afad7306":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"9d4b7f3b":"5a8aa485c316e9":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"9d4b7f3b":"5a8aa485c316e9":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-192 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"80745de9":"3796cf51b87266":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"c98ad7f38b2c7e970c9b965ec87a08208384718f78206c6c":"80745de9":"3796cf51b87266":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"17223038fa99d53681ca1beabe78d1b4":"5a8aa485c316e9":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"17223038fa99d53681ca1beabe78d1b4":"5a8aa485c316e9":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-192 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"d0e1eeef4d2a264536bb1c2c1bde7c35":"3796cf51b87266":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"d0e1eeef4d2a264536bb1c2c1bde7c35":"3796cf51b87266":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"fe69ed84":"5a8aa485c316e9403aff859fbb":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"fe69ed84":"5a8aa485c316e9403aff859fbb":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-192 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"db7ffc82":"a16a2e741f1cd9717285b6d882":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"4bb3c4a4f893ad8c9bdc833c325d62b3d3ad1bccf9282a65":"db7ffc82":"a16a2e741f1cd9717285b6d882":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"5a8aa485c316e9403aff859fbb":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"0c66a8e547ed4f8c2c9a9a1eb5d455b9":"5a8aa485c316e9403aff859fbb":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-192 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"38757b3a61a4dc97ca3ab88bf1240695":"a16a2e741f1cd9717285b6d882":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"38757b3a61a4dc97ca3ab88bf1240695":"a16a2e741f1cd9717285b6d882":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"411986d04d6463100bff03f7d0bde7ea2c3488784378138cddc93a54":"5a8aa485c316e9":"":4:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"411986d04d6463100bff03f7d0bde7ea2c3488784378138cddc93a54":"5a8aa485c316e9":"":4:0:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-192 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"32b649ab56162e55d4148a1292d6a225a988eb1308298273b6889036":"31f8fa25827d48":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"19ebfde2d5468ba0a3031bde629b11fd4094afcb205393fa":"32b649ab56162e55d4148a1292d6a225a988eb1308298273b6889036":"31f8fa25827d48":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8c5a5ebecf7ac8607fe412189e83d9d20":"5a8aa485c316e9":"":16:"":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"cba4b4aeb85f0492fd8d905c4a6d8233139833373ef188a8c5a5ebecf7ac8607fe412189e83d9d20":"5a8aa485c316e9":"":16:0:"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22" CCM auth decrypt tag NIST DVPT AES-192 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6e699f15f14d34dcaf9ba8ed4b877c97d":"31f8fa25827d48":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"ca62713728b5c9d652504b0ae8fd4fee5d297ee6a8d19cb6e699f15f14d34dcaf9ba8ed4b877c97d":"31f8fa25827d48":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a34fad277":"5a8aa485c316e9403aff859fbb":"":4:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"042653c674ef2a90f7fb11d30848e530ae59478f1051633a34fad277":"5a8aa485c316e9403aff859fbb":"":4:0:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-192 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5a35df775":"49004912fdd7269279b1f06a89":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"197afb02ffbd8f699dacae87094d524324576b99844f75e1":"1902d9769a7ba3d3268e1257395c8c2e5f98eef295dcbfa5a35df775":"49004912fdd7269279b1f06a89":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671ea7ade30a07d185692ab0ebdf4c78cf7a":"5a8aa485c316e9403aff859fbb":"":16:"":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"a5b7d8cca2069908d1ed88e6a9fe2c9bede3131dad54671ea7ade30a07d185692ab0ebdf4c78cf7a":"5a8aa485c316e9403aff859fbb":"":16:0:"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697" CCM auth decrypt tag NIST DVPT AES-192 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312ef042c86363cc05afb98c66e16be8a445":"49004912fdd7269279b1f06a89":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"9a98617fb97a0dfe466be692272dcdaec1c5443a3b51312ef042c86363cc05afb98c66e16be8a445":"49004912fdd7269279b1f06a89":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"1d089a5f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"1d089a5f":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:0:"" CCM auth decrypt tag NIST DVPT AES-192 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"2f46022a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"90929a4b0ac65b350ad1591611fe48297e03956f6083e451":"2f46022a":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5280a2137fee3deefcfe9b63a1199fb3":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5280a2137fee3deefcfe9b63a1199fb3":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:0:"" CCM auth decrypt tag NIST DVPT AES-192 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"d40a7318c5f2d82f838c0beeefe0d598":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"d40a7318c5f2d82f838c0beeefe0d598":"a265480ca88d5f":"a2248a882ecbf850daf91933a389e78e81623d233dfd47bf8321361a38f138fe":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5e0eaebd":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"5e0eaebd":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:0:"" CCM auth decrypt tag NIST DVPT AES-192 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"71b7fc33":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"6a798d7c5e1a72b43e20ad5c7b08567b12ab744b61c070e2":"71b7fc33":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"d07ccf9fdc3d33aa94cda3d230da707c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"d07ccf9fdc3d33aa94cda3d230da707c":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:0:"" CCM auth decrypt tag NIST DVPT AES-192 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"65fe32b649dc328c9f531584897e85b3":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"65fe32b649dc328c9f531584897e85b3":"8739b4bea1a099fe547499cbc6":"f6107696edb332b2ea059d8860fee26be42e5e12e1a4f79a8d0eafce1b2278a7":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"9f6ca4af9b159148c889a6584d1183ea26e2614874b0504575dea8d1":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"9f6ca4af9b159148c889a6584d1183ea26e2614874b0504575dea8d1":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":4:0:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-192 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1ebd7965825":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f9fdca4ac64fe7f014de0f43039c757194d544ce5d15eed4":"84d8212e9cfc2121252baa3b065b1edcf50497b9594db1ebd7965825":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd14d1d980d6fe0fb44b421992662b97975":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:"":"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"6aab64c4787599d8f213446beadb16e08dba60e97f56dbd14d1d980d6fe0fb44b421992662b97975":"5a8aa485c316e9":"3796cf51b8726652a4204733b8fbb047cf00fb91a9837e22ec22b1a268f88e2c":16:0:"a265480ca88d5f536db0dc6abc40faf0d05be7a966977768" CCM auth decrypt tag NIST DVPT AES-192 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa206603c51d36c826f01384100886198a7f6a3":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"4980b2ee49b1aaf393175f5ab9bae95ec7904557dfa206603c51d36c826f01384100886198a7f6a3":"fdd2d6f503c915":"5b92394f21ddc3ad49d9b0881b829a5935cb3a4d23e292a62fb66b5e7ab7020e":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854cccc25e9fce":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"16e543d0e20615ff0df15acd9927ddfe40668a54bb854cccc25e9fce":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":4:0:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-192 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae98ecedb3e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a7aa635ea51b0bb20a092bd5573e728ccd4b3e8cdd2ab33d":"df35b109caf690656ae278bbd8f8bba687a2ce11b105dae98ecedb3e":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-192 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f3178464a6f7fa2b76744e8e8d95691cecb8":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:"":"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"c5b0b2ef17498c5570eb335df4588032958ba3d69bf6f3178464a6f7fa2b76744e8e8d95691cecb8":"5a8aa485c316e9403aff859fbb":"a16a2e741f1cd9717285b6d882c1fc53655e9773761ad697a7ee6410184c7982":16:0:"8739b4bea1a099fe547499cbc6d1b13d849b8084c9b6acc5" CCM auth decrypt tag NIST DVPT AES-192 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c06bd6dc2e6bcc3436cffb969ae900388":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"26511fb51fcfa75cb4b44da75a6e5a0eb8d9c8f3b906f886":"d1f0518929f4ae2f0543de2a7dfe4bb0110bb3057e524a1c06bd6dc2e6bcc3436cffb969ae900388":"0812757ad0cc4d17c4cfe7a642":"ec6c44a7e94e51a3ca6dee229098391575ec7213c85267fbf7492fdbeee61b10":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #1 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"469c90bb":"a544218dadd3c1":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"469c90bb":"a544218dadd3c1":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-256 #2 (P=0, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"46a908ed":"d3d5424e20fbec":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"eda32f751456e33195f1f499cf2dc7c97ea127b6d488f211ccc5126fbb24afa6":"46a908ed":"d3d5424e20fbec":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #3 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8207eb14d33855a52acceed17dbcbf6e":"a544218dadd3c1":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8207eb14d33855a52acceed17dbcbf6e":"a544218dadd3c1":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-256 #4 (P=0, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"60f8e127cb4d30db6df0622158cd931d":"d3d5424e20fbec":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"60f8e127cb4d30db6df0622158cd931d":"d3d5424e20fbec":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #5 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8a19a133":"a544218dadd3c10583db49cf39":"":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"8a19a133":"a544218dadd3c10583db49cf39":"":4:0:"" CCM auth decrypt tag NIST DVPT AES-256 #6 (P=0, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"2e317f1b":"3c0e2815d37d844f7ac240ba9d":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"e1b8a927a95efe94656677b692662000278b441c79e879dd5c0ddc758bdc9ee8":"2e317f1b":"3c0e2815d37d844f7ac240ba9d":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #7 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"97e1a8dd4259ccd2e431e057b0397fcf":"a544218dadd3c10583db49cf39":"":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"97e1a8dd4259ccd2e431e057b0397fcf":"a544218dadd3c10583db49cf39":"":16:0:"" CCM auth decrypt tag NIST DVPT AES-256 #8 (P=0, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"5a9596c511ea6a8671adefc4f2157d8b":"3c0e2815d37d844f7ac240ba9d":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"5a9596c511ea6a8671adefc4f2157d8b":"3c0e2815d37d844f7ac240ba9d":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #9 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b722aa8d59":"a544218dadd3c1":"":4:"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"64a1341679972dc5869fcf69b19d5c5ea50aa0b5e985f5b722aa8d59":"a544218dadd3c1":"":4:0:"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" CCM auth decrypt tag NIST DVPT AES-256 #10 (P=24, N=7, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a20277d00a75":"bfcda8b5a2d0d2":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"af063639e66c284083c5cf72b70d8bc277f5978e80d9322d99f2fdc718cda569":"c5b7f802bffc498c1626e3774f1d9f94045dfd8e1a10a20277d00a75":"bfcda8b5a2d0d2":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #11 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd374f3bb6db8377ebfc79674858c4f305":"a544218dadd3c1":"":16:"":"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bc51c3925a960e7732533e4ef3a4f69ee6826de952bcb0fd374f3bb6db8377ebfc79674858c4f305":"a544218dadd3c1":"":16:0:"d3d5424e20fbec43ae495353ed830271515ab104f8860c98" CCM auth decrypt tag NIST DVPT AES-256 #12 (P=24, N=7, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"afa1fa8e8a70e26b02161150556d604101fdf423f332c3363275f2a4907d51b734fe7238cebbd48f":"bfcda8b5a2d0d2":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"afa1fa8e8a70e26b02161150556d604101fdf423f332c3363275f2a4907d51b734fe7238cebbd48f":"bfcda8b5a2d0d2":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #13 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f4123d14fb3f":"a544218dadd3c10583db49cf39":"":4:"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"63e00d30e4b08fd2a1cc8d70fab327b2368e77a93be4f4123d14fb3f":"a544218dadd3c10583db49cf39":"":4:0:"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" CCM auth decrypt tag NIST DVPT AES-256 #14 (P=24, N=13, A=0, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d8d0c0099":"894dcaa61008eb8fb052c60d41":"":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"f7079dfa3b5c7b056347d7e437bcded683abd6e2c9e069d333284082cbb5d453":"bb5425b3869b76856ec58e39886fb6f6f2ac13fe44cb132d8d0c0099":"894dcaa61008eb8fb052c60d41":"":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #15 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c423a578d179902f912f9ea1afbce1120b3":"a544218dadd3c10583db49cf39":"":16:"":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"f0050ad16392021a3f40207bed3521fb1e9f808f49830c423a578d179902f912f9ea1afbce1120b3":"a544218dadd3c10583db49cf39":"":16:0:"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e" CCM auth decrypt tag NIST DVPT AES-256 #16 (P=24, N=13, A=0, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae769084607b83bd06e6442eac8dacf583cc":"894dcaa61008eb8fb052c60d41":"":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"c408190d0fbf5034f83b24a8ed9657331a7ce141de4fae769084607b83bd06e6442eac8dacf583cc":"894dcaa61008eb8fb052c60d41":"":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #17 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"92d00fbe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"92d00fbe":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:0:"" CCM auth decrypt tag NIST DVPT AES-256 #18 (P=0, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"9143e5c4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"1b0e8df63c57f05d9ac457575ea764524b8610ae5164e6215f426f5a7ae6ede4":"9143e5c4":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #19 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"93af11a08379eb37a16aa2837f09d69d":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"93af11a08379eb37a16aa2837f09d69d":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:0:"" CCM auth decrypt tag NIST DVPT AES-256 #20 (P=0, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"d19b0c14ec686a7961ca7c386d125a65":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"d19b0c14ec686a7961ca7c386d125a65":"78c46e3249ca28":"232e957c65ffa11988e830d4617d500f1c4a35c1221f396c41ab214f074ca2dc":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #21 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"866d4227":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"866d4227":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:0:"" CCM auth decrypt tag NIST DVPT AES-256 #22 (P=0, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"94cb1127":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"a4bc10b1a62c96d459fbaf3a5aa3face7313bb9e1253e696f96a7a8e36801088":"94cb1127":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #23 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"867b0d87cf6e0f718200a97b4f6d5ad5":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"867b0d87cf6e0f718200a97b4f6d5ad5":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:0:"" CCM auth decrypt tag NIST DVPT AES-256 #24 (P=0, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"677a040d46ee3f2b7838273bdad14f16":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"677a040d46ee3f2b7838273bdad14f16":"e8de970f6ee8e80ede933581b5":"89f8b068d34f56bc49d839d8e47b347e6dae737b903b278632447e6c0485d26a":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #25 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc56083ebc7720":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"c2fe12658139f5d0dd22cadf2e901695b579302a72fc56083ebc7720":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":4:0:"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" CCM auth decrypt tag NIST DVPT AES-256 #26 (P=24, N=7, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81c44db2c9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"8c5cf3457ff22228c39c051c4e05ed4093657eb303f859a9d4b0f8be0127d88a":"94748ba81229e53c38583a8564b23ebbafc6f6efdf4c2a81c44db2c9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #27 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce1ac68bd42f5ec7fa7e068cc0ecd79c2a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:"":"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"3341168eb8c48468c414347fb08f71d2086f7c2d1bd581ce1ac68bd42f5ec7fa7e068cc0ecd79c2a":"a544218dadd3c1":"d3d5424e20fbec43ae495353ed830271515ab104f8860c988d15b6d36c038eab":16:0:"78c46e3249ca28e1ef0531d80fd37c124d9aecb7be6668e3" CCM auth decrypt tag NIST DVPT AES-256 #28 (P=24, N=7, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"d543acda712b898cbb27b8f598b2e4438ce587a836e2785147c3338a2400809e739b63ba8227d2f9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"d543acda712b898cbb27b8f598b2e4438ce587a836e2785147c3338a2400809e739b63ba8227d2f9":"6ba004fd176791":"5a053b2a1bb87e85d56527bfcdcd3ecafb991bb10e4c862bb0751c700a29f54b":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #29 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69ef891339":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"c0ea400b599561e7905b99262b4565d5c3dc49fad84d7c69ef891339":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":4:0:"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" CCM auth decrypt tag NIST DVPT AES-256 #30 (P=24, N=13, A=32, T=4) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f63d488623":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":4:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"705334e30f53dd2f92d190d2c1437c8772f940c55aa35e562214ed45bd458ffe":"60871e03ea0eb968536c99f926ea24ef43d41272ad9fb7f63d488623":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":4:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM auth decrypt tag NIST DVPT AES-256 #31 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781367f30f2eaad8c063ca50795acd90203":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:"":"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"8d34cdca37ce77be68f65baf3382e31efa693e63f914a781367f30f2eaad8c063ca50795acd90203":"a544218dadd3c10583db49cf39":"3c0e2815d37d844f7ac240ba9d6e3a0b2a86f706e885959e09a1005e024f6907":16:0:"e8de970f6ee8e80ede933581b5bcf4d837e2b72baa8b00c3" CCM auth decrypt tag NIST DVPT AES-256 #32 (P=24, N=13, A=32, T=16) depends_on:MBEDTLS_AES_C -mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc4b41096dfdbe9cc1ab610f8f3e038d16":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":16:"FAIL":"" +mbedtls_ccm_auth_decrypt:MBEDTLS_CIPHER_ID_AES:"314a202f836f9f257e22d8c11757832ae5131d357a72df88f3eff0ffcee0da4e":"516c0095cc3d85fd55e48da17c592e0c7014b9daafb82bdc4b41096dfdbe9cc1ab610f8f3e038d16":"8fa501c5dd9ac9b868144c9fa5":"5bb40e3bb72b4509324a7edc852f72535f1f6283156e63f6959ffaf39dcde800":16:MBEDTLS_ERR_CCM_AUTH_FAILED:"" CCM-Camellia encrypt and tag RFC 5528 #1 depends_on:MBEDTLS_CAMELLIA_C diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index b9df023a7c..79ee0ff8fb 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -151,12 +151,11 @@ exit: /* BEGIN_CASE */ void mbedtls_ccm_auth_decrypt( int cipher_id, HexParam_t * key, HexParam_t * msg, HexParam_t * iv, - HexParam_t * add, int tag_len, char * result, + HexParam_t * add, int tag_len, int result, HexParam_t * hex_msg ) { unsigned char tag[16]; mbedtls_ccm_context ctx; - int ret; mbedtls_ccm_init( &ctx ); @@ -165,22 +164,13 @@ void mbedtls_ccm_auth_decrypt( int cipher_id, HexParam_t * key, msg->len -= tag_len; memcpy( tag, msg->x + msg->len, tag_len ); - if( strcmp( "FAIL", result ) == 0 ) - { - ret = MBEDTLS_ERR_CCM_AUTH_FAILED; - } - else - { - ret = 0; - } - TEST_ASSERT( mbedtls_ccm_setkey( &ctx, cipher_id, key->x, key->len * 8 ) == 0 ); /* Test with input == output */ TEST_ASSERT( mbedtls_ccm_auth_decrypt( &ctx, msg->len, iv->x, iv->len, add->x, add->len, - msg->x, msg->x, msg->x + msg->len, tag_len ) == ret ); + msg->x, msg->x, msg->x + msg->len, tag_len ) == result ); - if( ret == 0 ) + if( result == 0 ) { TEST_ASSERT( memcmp( msg->x, hex_msg->x, hex_msg->len ) == 0 ); } From ff560f2239acf116475ed81067663b6926f4739e Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 28 Jun 2018 11:43:17 +0100 Subject: [PATCH 0742/1100] Rename makefile target gen-embedded-test - generate-target-tests --- tests/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile b/tests/Makefile index 0fe8a0f25b..e8091cc774 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -232,5 +232,5 @@ $(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data script --help-file suites/helpers.function \ -o ./TESTS/mbedtls/$* -gen-embedded-test: $(EMBEDDED_TESTS) +generate-target-tests: $(EMBEDDED_TESTS) From 00c4b090c17012c29c83126e802dced85e383923 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 28 Jun 2018 13:10:19 +0100 Subject: [PATCH 0743/1100] Change intermediate data file extension to .datax --- tests/Makefile | 4 ++-- tests/scripts/generate_test_code.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index e8091cc774..e344635f9e 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -205,9 +205,9 @@ $(BINARIES): %$(EXEXT): %.c $(DEP) clean: ifndef WINDOWS - rm -rf $(APPS) *.c *.data TESTS + rm -rf $(APPS) *.c *.datax TESTS else - del /Q /F *.c *.exe *.data + del /Q /F *.c *.exe *.datax rmdir /Q /S TESTS endif diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index c62b5b9a8a..ccb2d5fe17 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -732,7 +732,7 @@ def check_cmd(): data_name = os.path.splitext(data_file_name)[0] out_c_file = os.path.join(args.out_dir, data_name + '.c') - out_data_file = os.path.join(args.out_dir, data_file_name) + out_data_file = os.path.join(args.out_dir, data_name + '.datax') out_c_file_dir = os.path.dirname(out_c_file) out_data_file_dir = os.path.dirname(out_data_file) From 936ea9302ae72ebbca0f0669c705c9a1d747de65 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 28 Jun 2018 16:47:12 +0100 Subject: [PATCH 0744/1100] Strip whitespaces added by decode() function --- tests/scripts/generate_test_code.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index ccb2d5fe17..33da990df6 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -97,8 +97,9 @@ class FileWrapper(io.FileIO): line = parent.next() # Python 2 if line: self.line_no += 1 - # Convert byte array to string with correct encoding - return line.decode(sys.getdefaultencoding()) + # Convert byte array to string with correct encoding and + # strip any whitespaces added in the decoding process. + return line.decode(sys.getdefaultencoding()).strip() + "\n" return None next = __next__ From 040b6a228192d052aecf619ea23242ffb7744dc4 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 28 Jun 2018 16:49:13 +0100 Subject: [PATCH 0745/1100] Wrap code to 79 character limit --- tests/scripts/generate_test_code.py | 182 ++++++++++++++++++---------- 1 file changed, 115 insertions(+), 67 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 33da990df6..b2d49129eb 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -23,14 +23,18 @@ Test Suite code generator. Generates a test source file using following input files: -test_suite_xyz.function - Read test functions from test suite functions file. -test_suite_xyz.data - Read test functions and their dependencies to generate - dispatch and dependency check code. -main template - Substitute generated test function dispatch code, dependency - checking code. -platform .function - Read host or target platform implementation for - dispatching test cases from .data file. -helper .function - Read common reusable functions. +test_suite_xyz.function - Read test functions from test suite + functions file. +test_suite_xyz.data - Read test functions and their + dependencies to generate dispatch and + dependency check code. +main_test.function - Template to substitute generated test + function dispatch code, dependency + checking code. +platform .function - Read host or target platform + implementation for dispatching test + cases from .data file. +helpers.function - Read common reusable functions. """ @@ -83,8 +87,8 @@ class FileWrapper(io.FileIO): super(FileWrapper, self).__init__(file_name, 'r') self.line_no = 0 - # Override the generator function in a way that works in both Python 2 - # and Python 3. + # Override the generator function in a way that works in both + # Python 2 and Python 3. def __next__(self): """ Iterator return impl. @@ -109,7 +113,8 @@ def split_dep(dep): Split NOT character '!' from dependency. Used by gen_deps() :param dep: Dependency list - :return: list of tuples where index 0 has '!' if there was a '!' before the dependency string + :return: list of tuples where index 0 has '!' if there was a '!' + before the dependency string """ return ('!', dep[1:]) if dep[0] == '!' else ('', dep) @@ -119,7 +124,8 @@ def gen_deps(deps): Generates dependency i.e. if def and endif code :param deps: List of dependencies. - :return: if defined and endif code with macro annotations for readability. + :return: if defined and endif code with macro annotations for + readability. """ dep_start = ''.join(['#if %sdefined(%s)\n' % split_dep(x) for x in deps]) dep_end = ''.join(['#endif /* %s */\n' % x for x in reversed(deps)]) @@ -129,22 +135,26 @@ def gen_deps(deps): def gen_deps_one_line(deps): """ - Generates dependency checks in one line. Useful for writing code in #else case. + Generates dependency checks in one line. Useful for writing code + in #else case. :param deps: List of dependencies. :return: ifdef code """ - defines = ('#if ' if len(deps) else '') + ' && '.join(['%sdefined(%s)' % split_dep(x) for x in deps]) + defines = '#if ' if len(deps) else '' + defines += ' && '.join(['%sdefined(%s)' % split_dep(x) for x in deps]) return defines def gen_function_wrapper(name, locals, args_dispatch): """ - Creates test function wrapper code. A wrapper has the code to unpack parameters from parameters[] array. + Creates test function wrapper code. A wrapper has the code to + unpack parameters from parameters[] array. :param name: Test function name :param locals: Local variables declaration code - :param args_dispatch: List of dispatch arguments. Ex: ['(char *)params[0]', '*((int *)params[1])'] + :param args_dispatch: List of dispatch arguments. + Ex: ['(char *)params[0]', '*((int *)params[1])'] :return: Test function wrapper. """ # Then create the wrapper @@ -200,7 +210,8 @@ def parse_until_pattern(funcs_f, end_regex): break headers += line else: - raise InvalidFileFormat("file: %s - end pattern [%s] not found!" % (funcs_f.name, end_regex)) + raise InvalidFileFormat("file: %s - end pattern [%s] not found!" % + (funcs_f.name, end_regex)) return headers @@ -220,7 +231,8 @@ def parse_suite_deps(funcs_f): if re.search(END_DEP_REGEX, line): break else: - raise InvalidFileFormat("file: %s - end dependency pattern [%s] not found!" % (funcs_f.name, END_DEP_REGEX)) + raise InvalidFileFormat("file: %s - end dependency pattern [%s]" + " not found!" % (funcs_f.name, END_DEP_REGEX)) return deps @@ -246,8 +258,10 @@ def parse_function_signature(line): """ Parsing function signature - :param line: Line from .functions file that has a function signature. - :return: function name, argument list, local variables for wrapper function and argument dispatch code. + :param line: Line from .functions file that has a function + signature. + :return: function name, argument list, local variables for + wrapper function and argument dispatch code. """ args = [] locals = '' @@ -271,13 +285,16 @@ def parse_function_signature(line): elif re.search('HexParam_t\s*\*\s*.*', arg.strip()): args.append('hex') # create a structure + pointer_initializer = '(uint8_t *) params[%d]' % arg_idx + len_initializer = '*( (uint32_t *) params[%d] )' % (arg_idx+1) locals += """ HexParam_t hex%d = {%s, %s}; -""" % (arg_idx, '(uint8_t *) params[%d]' % arg_idx, '*( (uint32_t *) params[%d] )' % (arg_idx + 1)) +""" % (arg_idx, pointer_initializer, len_initializer) args_dispatch.append('&hex%d' % arg_idx) arg_idx += 1 else: - raise ValueError("Test function arguments can only be 'int', 'char *' or 'HexParam_t'\n%s" % line) + raise ValueError("Test function arguments can only be 'int', " + "'char *' or 'HexParam_t'\n%s" % line) arg_idx += 1 return name, args, locals, args_dispatch @@ -285,7 +302,8 @@ def parse_function_signature(line): def parse_function_code(funcs_f, deps, suite_deps): """ - Parses out a function from function file object and generates function and dispatch code. + Parses out a function from function file object and generates + function and dispatch code. :param funcs_f: file object of the functions file. :param deps: List of dependencies @@ -308,14 +326,16 @@ def parse_function_code(funcs_f, deps, suite_deps): name = 'test_' + name break else: - raise InvalidFileFormat("file: %s - Test functions not found!" % funcs_f.name) + raise InvalidFileFormat("file: %s - Test functions not found!" % + funcs_f.name) for line in funcs_f: if re.search(END_CASE_REGEX, line): break code += line else: - raise InvalidFileFormat("file: %s - end case pattern [%s] not found!" % (funcs_f.name, END_CASE_REGEX)) + raise InvalidFileFormat("file: %s - end case pattern [%s] not " + "found!" % (funcs_f.name, END_CASE_REGEX)) # Add exit label if not present if code.find('exit:') == -1: @@ -336,8 +356,9 @@ def parse_functions(funcs_f): Returns functions code pieces :param funcs_f: file object of the functions file. - :return: List of test suite dependencies, test function dispatch code, function code and - a dict with function identifiers and arguments info. + :return: List of test suite dependencies, test function dispatch + code, function code and a dict with function identifiers + and arguments info. """ suite_headers = '' suite_helpers = '' @@ -358,7 +379,8 @@ def parse_functions(funcs_f): suite_deps += deps elif re.search(BEGIN_CASE_REGEX, line): deps = parse_function_deps(line) - func_name, args, func_code, func_dispatch = parse_function_code(funcs_f, deps, suite_deps) + func_name, args, func_code, func_dispatch =\ + parse_function_code(funcs_f, deps, suite_deps) suite_functions += func_code # Generate dispatch code and enumeration info if func_name in func_info: @@ -378,8 +400,9 @@ def parse_functions(funcs_f): def escaped_split(str, ch): """ Split str on character ch but ignore escaped \{ch} - Since return value is used to write back to the intermediate data file. - Any escape characters in the input are retained in the output. + Since, return value is used to write back to the intermediate + data file, any escape characters in the input are retained in the + output. :param str: String to split :param ch: split character @@ -407,7 +430,8 @@ def parse_test_data(data_f, debug=False): Parses .data file :param data_f: file object of the data file. - :return: Generator that yields test name, function name, dependency list and function argument list. + :return: Generator that yields test name, function name, + dependency list and function argument list. """ STATE_READ_NAME = 0 STATE_READ_ARGS = 1 @@ -422,9 +446,10 @@ def parse_test_data(data_f, debug=False): # Blank line indicates end of test if len(line) == 0: if state == STATE_READ_ARGS: - raise GeneratorInputError("[%s:%d] Newline before arguments. " \ - "Test function and arguments missing for %s" % \ - (data_f.name, data_f.line_no, name)) + raise GeneratorInputError("[%s:%d] Newline before arguments. " + "Test function and arguments " + "missing for %s" % + (data_f.name, data_f.line_no, name)) continue if state == STATE_READ_NAME: @@ -435,7 +460,8 @@ def parse_test_data(data_f, debug=False): # Check dependencies m = re.search('depends_on\:(.*)', line) if m: - deps = [x.strip() for x in m.group(1).split(':') if len(x.strip())] + deps = [x.strip() for x in m.group(1).split(':') if len( + x.strip())] else: # Read test vectors parts = escaped_split(line, ':') @@ -445,9 +471,9 @@ def parse_test_data(data_f, debug=False): deps = [] state = STATE_READ_NAME if state == STATE_READ_ARGS: - raise GeneratorInputError("[%s:%d] Newline before arguments. " \ - "Test function and arguments missing for %s" % \ - (data_f.name, data_f.line_no, name)) + raise GeneratorInputError("[%s:%d] Newline before arguments. " + "Test function and arguments missing for " + "%s" % (data_f.name, data_f.line_no, name)) def gen_dep_check(dep_id, dep): @@ -459,7 +485,8 @@ def gen_dep_check(dep_id, dep): :return: Dependency check code """ if dep_id < 0: - raise GeneratorInputError("Dependency Id should be a positive integer.") + raise GeneratorInputError("Dependency Id should be a positive " + "integer.") noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) if len(dep) == 0: raise GeneratorInputError("Dependency should not be an empty string.") @@ -485,7 +512,8 @@ def gen_expression_check(exp_id, exp): :return: Expression check code """ if exp_id < 0: - raise GeneratorInputError("Expression Id should be a positive integer.") + raise GeneratorInputError("Expression Id should be a positive " + "integer.") if len(exp) == 0: raise GeneratorInputError("Expression should not be an empty string.") exp_code = ''' @@ -504,7 +532,8 @@ def write_deps(out_data_f, test_deps, unique_deps): :param out_data_f: Output intermediate data file :param test_deps: Dependencies - :param unique_deps: Mutable list to track unique dependencies that are global to this re-entrant function. + :param unique_deps: Mutable list to track unique dependencies + that are global to this re-entrant function. :return: returns dependency check code. """ dep_check_code = '' @@ -530,7 +559,8 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): :param out_data_f: Output intermediate data file :param test_args: Test parameters :param func_args: Function arguments - :param unique_expressions: Mutable list to track unique expressions that are global to this re-entrant function. + :param unique_expressions: Mutable list to track unique + expressions that are global to this re-entrant function. :return: Returns expression check code. """ expression_code = '' @@ -538,13 +568,14 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): typ = func_args[i] val = test_args[i] - # check if val is a non literal int val - if typ == 'int' and not re.match('(\d+$)|((0x)?[0-9a-fA-F]+$)', val): # its an expression + # check if val is a non literal int val (i.e. an expression) + if typ == 'int' and not re.match('(\d+$)|((0x)?[0-9a-fA-F]+$)', val): typ = 'exp' if val not in unique_expressions: unique_expressions.append(val) - # exp_id can be derived from len(). But for readability and consistency with case of existing let's - # use index(). + # exp_id can be derived from len(). But for + # readability and consistency with case of existing + # let's use index(). exp_id = unique_expressions.index(val) expression_code += gen_expression_check(exp_id, val) val = exp_id @@ -559,10 +590,12 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): """ Adds preprocessor checks for test suite dependencies. - :param suite_deps: Test suite dependencies read from the .functions file. + :param suite_deps: Test suite dependencies read from the + .functions file. :param dep_check_code: Dependency check code :param expression_code: Expression check code - :return: Dependency and expression code guarded by test suite dependencies. + :return: Dependency and expression code guarded by test suite + dependencies. """ if len(suite_deps): ifdef = gen_deps_one_line(suite_deps) @@ -581,11 +614,13 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ - Generates dependency checks, expression code and intermediate data file from test data file. + Generates dependency checks, expression code and intermediate + data file from test data file. :param data_f: Data file object :param out_data_f:Output intermediate data file - :param func_info: Dict keyed by function and with function id and arguments info + :param func_info: Dict keyed by function and with function id + and arguments info :param suite_deps: Test suite deps :return: Returns dependency and expression check code """ @@ -593,7 +628,8 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): unique_expressions = [] dep_check_code = '' expression_code = '' - for test_name, function_name, test_deps, test_args in parse_test_data(data_f): + for test_name, function_name, test_deps, test_args in parse_test_data( + data_f): out_data_f.write(test_name + '\n') # Write deps @@ -602,24 +638,29 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): # Write test function name test_function_name = 'test_' + function_name if test_function_name not in func_info: - raise GeneratorInputError("Function %s not found!" % test_function_name) + raise GeneratorInputError("Function %s not found!" % + test_function_name) func_id, func_args = func_info[test_function_name] out_data_f.write(str(func_id)) # Write parameters if len(test_args) != len(func_args): - raise GeneratorInputError("Invalid number of arguments in test %s. See function %s signature." % (test_name, - function_name)) - expression_code += write_parameters(out_data_f, test_args, func_args, unique_expressions) + raise GeneratorInputError("Invalid number of arguments in test " + "%s. See function %s signature." % ( + test_name, function_name)) + expression_code += write_parameters(out_data_f, test_args, func_args, + unique_expressions) # Write a newline as test case separator out_data_f.write('\n') - dep_check_code, expression_code = gen_suite_deps_checks(suite_deps, dep_check_code, expression_code) + dep_check_code, expression_code = gen_suite_deps_checks( + suite_deps, dep_check_code, expression_code) return dep_check_code, expression_code -def generate_code(funcs_file, data_file, template_file, platform_file, help_file, suites_dir, c_file, out_data_file): +def generate_code(funcs_file, data_file, template_file, platform_file, + help_file, suites_dir, c_file, out_data_file): """ Generate mbed-os test code. @@ -645,19 +686,23 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file snippets = {'generator_script' : os.path.basename(__file__)} # Read helpers - with open(help_file, 'r') as help_f, open(platform_file, 'r') as platform_f: + with open(help_file, 'r') as help_f, open(platform_file, 'r') as \ + platform_f: snippets['test_common_helper_file'] = help_file snippets['test_common_helpers'] = help_f.read() snippets['test_platform_file'] = platform_file - snippets['platform_code'] = platform_f.read().replace('DATA_FILE', - out_data_file.replace('\\', '\\\\')) # escape '\' + snippets['platform_code'] = platform_f.read().replace( + 'DATA_FILE', out_data_file.replace('\\', '\\\\')) # escape '\' # Function code - with FileWrapper(funcs_file) as funcs_f, FileWrapper(data_file) as data_f, open(out_data_file, 'w') as out_data_f: - suite_deps, dispatch_code, func_code, func_info = parse_functions(funcs_f) + with FileWrapper(funcs_file) as funcs_f, FileWrapper(data_file) as \ + data_f, open(out_data_file, 'w') as out_data_f: + suite_deps, dispatch_code, func_code, func_info = parse_functions( + funcs_f) snippets['functions_code'] = func_code snippets['dispatch_code'] = dispatch_code - dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info, suite_deps) + dep_check_code, expression_code = gen_from_test_data( + data_f, out_data_f, func_info, suite_deps) snippets['dep_check_code'] = dep_check_code snippets['expression_code'] = expression_code @@ -671,7 +716,8 @@ def generate_code(funcs_file, data_file, template_file, platform_file, help_file with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f: line_no = 1 for line in template_f.readlines(): - snippets['line_no'] = line_no + 1 # Increment as it sets next line number + # Update line number. +1 as #line directive sets next line number + snippets['line_no'] = line_no + 1 code = line.format(**snippets) c_f.write(code) line_no += 1 @@ -683,7 +729,8 @@ def check_cmd(): :return: """ - parser = argparse.ArgumentParser(description='Generate code for mbed-os tests.') + parser = argparse.ArgumentParser( + description='Generate code for mbed-os tests.') parser.add_argument("-f", "--functions-file", dest="funcs_file", @@ -741,8 +788,9 @@ def check_cmd(): if not os.path.exists(d): os.makedirs(d) - generate_code(args.funcs_file, args.data_file, args.template_file, args.platform_file, - args.help_file, args.suites_dir, out_c_file, out_data_file) + generate_code(args.funcs_file, args.data_file, args.template_file, + args.platform_file, args.help_file, args.suites_dir, + out_c_file, out_data_file) if __name__ == "__main__": From b98e6eec58f645c152425808c06756ca83bbf0f7 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 28 Jun 2018 17:11:33 +0100 Subject: [PATCH 0746/1100] Replace asserts with exceptions in mbedtls_test.py --- tests/scripts/mbedtls_test.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index b825f13596..52fd0a9c28 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -34,6 +34,11 @@ import binascii from mbed_host_tests import BaseHostTest, event_callback +class TestDataParserError(Exception): + """Indicates error in test data, read from .data file.""" + pass + + class TestDataParser(object): """ parser for mbedtls test data files. @@ -107,7 +112,9 @@ class TestDataParser(object): function = int(parts[0]) x = parts[1:] l = len(x) - assert l % 2 == 0, "Number of test arguments should be even: %s" % line + if l % 2 != 0: + raise TestDataParserError("Number of test arguments should " + "be even: %s" % line) args = [(x[i * 2], x[(i * 2) + 1]) for i in range(len(x)/2)] self.tests.append((name, function, deps, args)) @@ -194,10 +201,13 @@ class MbedTlsTest(BaseHostTest): :param hex_str: Hex in string format. :return: Output Byte array """ - assert hex_str[0] == '"' and hex_str[len(hex_str) - 1] == '"', \ - "HEX test parameter missing '\"': %s" % hex_str + if hex_str[0] != '"' or hex_str[len(hex_str) - 1] != '"': + raise TestDataParserError("HEX test parameter missing '\"':" + " %s" % hex_str) hex_str = hex_str.strip('"') - assert len(hex_str) % 2 == 0, "HEX parameter len should be mod of 2: %s" % hex_str + if len(hex_str) % 2 != 0: + raise TestDataParserError("HEX parameter len should be mod of " + "2: %s" % hex_str) b = binascii.unhexlify(hex_str) return b From e3b26af7c0f2ab84ae7e32723e58d459df453d86 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 02:36:57 +0100 Subject: [PATCH 0747/1100] Improve documentation in generate_test_code.py --- tests/Makefile | 4 +- tests/scripts/generate_test_code.py | 176 +++++++++++++++++----------- 2 files changed, 108 insertions(+), 72 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index e344635f9e..003d71c512 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -194,7 +194,7 @@ $(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_tes -t suites/main_test.function \ -p suites/host_test.function \ -s suites \ - --help-file suites/helpers.function \ + --helpers-file suites/helpers.function \ -o . @@ -229,7 +229,7 @@ $(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data script -t suites/main_test.function \ -p suites/target_test.function \ -s suites \ - --help-file suites/helpers.function \ + --helpers-file suites/helpers.function \ -o ./TESTS/mbedtls/$* generate-target-tests: $(EMBEDDED_TESTS) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index b2d49129eb..047b130014 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -19,22 +19,18 @@ # This file is part of mbed TLS (https://tls.mbed.org) """ -Test Suite code generator. +This script dynamically generates test suite code for Mbed TLS, by +taking following input files. -Generates a test source file using following input files: - -test_suite_xyz.function - Read test functions from test suite - functions file. -test_suite_xyz.data - Read test functions and their - dependencies to generate dispatch and - dependency check code. +test_suite_xyz.function - Test suite functions file contains test + functions. +test_suite_xyz.data - Contains test case vectors. main_test.function - Template to substitute generated test - function dispatch code, dependency - checking code. -platform .function - Read host or target platform - implementation for dispatching test - cases from .data file. -helpers.function - Read common reusable functions. + functions, dispatch code, dependency + checking code etc. +platform .function - Platform specific initialization and + platform code. +helpers.function - Common/reusable data and functions. """ @@ -43,7 +39,6 @@ import os import re import sys import argparse -import shutil BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/' @@ -59,39 +54,39 @@ BEGIN_CASE_REGEX = '/\*\s*BEGIN_CASE\s*(.*?)\s*\*/' END_CASE_REGEX = '/\*\s*END_CASE\s*\*/' -class InvalidFileFormat(Exception): - """ - Exception to indicate invalid file format. - """ - pass - - class GeneratorInputError(Exception): """ - Exception to indicate error in the input to the generator. + Exception to indicate error in the input files to this script. + This includes missing patterns, test function names and other + parsing errors. """ pass class FileWrapper(io.FileIO): """ - File wrapper class. Provides reading with line no. tracking. + This class extends built-in io.FileIO class with attribute line_no, + that indicates line number for the line that is read. """ def __init__(self, file_name): """ - Init file handle. + Instantiate the base class and initialize the line number to 0. :param file_name: File path to open. """ super(FileWrapper, self).__init__(file_name, 'r') self.line_no = 0 - # Override the generator function in a way that works in both - # Python 2 and Python 3. def __next__(self): """ - Iterator return impl. + Python 2 iterator method. This method overrides base class's + next method and extends the next method to count the line + numbers as each line is read. + + It works for both Python 2 and Python 3 by checking iterator + method name in the base iterator object. + :return: Line read from file. """ parent = super(FileWrapper, self) @@ -105,6 +100,8 @@ class FileWrapper(io.FileIO): # strip any whitespaces added in the decoding process. return line.decode(sys.getdefaultencoding()).strip() + "\n" return None + + # Python 3 iterator method next = __next__ @@ -113,15 +110,22 @@ def split_dep(dep): Split NOT character '!' from dependency. Used by gen_deps() :param dep: Dependency list - :return: list of tuples where index 0 has '!' if there was a '!' - before the dependency string + :return: string tuple. Ex: ('!', MACRO) for !MACRO and ('', MACRO) for + MACRO. """ return ('!', dep[1:]) if dep[0] == '!' else ('', dep) def gen_deps(deps): """ - Generates dependency i.e. if def and endif code + Test suite data and functions specifies compile time dependencies. + This function generates C preprocessor code from the input + dependency list. Caller uses the generated preprocessor code to + wrap dependent code. + A dependency in the input list can have a leading '!' character + to negate a condition. '!' is separated from the dependency using + function split_dep() and proper preprocessor check is generated + accordingly. :param deps: List of dependencies. :return: if defined and endif code with macro annotations for @@ -135,8 +139,8 @@ def gen_deps(deps): def gen_deps_one_line(deps): """ - Generates dependency checks in one line. Useful for writing code - in #else case. + Similar to gen_deps() but generates dependency checks in one line. + Useful for generating code with #else block. :param deps: List of dependencies. :return: ifdef code @@ -173,7 +177,12 @@ void {name}_wrapper( void ** params ) def gen_dispatch(name, deps): """ - Generates dispatch code for the test function table. + Test suite code template main_test.function defines a C function + array to contain test case functions. This function generates an + initializer entry for a function in that array. The entry is + composed of a compile time check for the test function + dependencies. At compile time the test function is assigned when + dependencies are met, else NULL is assigned. :param name: Test function name :param deps: List of dependencies @@ -198,11 +207,12 @@ def gen_dispatch(name, deps): def parse_until_pattern(funcs_f, end_regex): """ - Parses function headers or helper code until end pattern. + Matches pattern end_regex to the lines read from the file object. + Returns the lines read until end pattern is matched. :param funcs_f: file object for .functions file :param end_regex: Pattern to stop parsing - :return: Test suite headers code + :return: Lines read before the end pattern """ headers = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: @@ -210,7 +220,7 @@ def parse_until_pattern(funcs_f, end_regex): break headers += line else: - raise InvalidFileFormat("file: %s - end pattern [%s] not found!" % + raise GeneratorInputError("file: %s - end pattern [%s] not found!" % (funcs_f.name, end_regex)) return headers @@ -218,7 +228,10 @@ def parse_until_pattern(funcs_f, end_regex): def parse_suite_deps(funcs_f): """ - Parses test suite dependencies. + Parses test suite dependencies specified at the top of a + .function file, that starts with pattern BEGIN_DEPENDENCIES + and end with END_DEPENDENCIES. Dependencies are specified + after pattern 'depends_on:' and are delimited by ':'. :param funcs_f: file object for .functions file :return: List of test suite dependencies. @@ -231,7 +244,7 @@ def parse_suite_deps(funcs_f): if re.search(END_DEP_REGEX, line): break else: - raise InvalidFileFormat("file: %s - end dependency pattern [%s]" + raise GeneratorInputError("file: %s - end dependency pattern [%s]" " not found!" % (funcs_f.name, END_DEP_REGEX)) return deps @@ -239,7 +252,9 @@ def parse_suite_deps(funcs_f): def parse_function_deps(line): """ - Parses function dependencies. + Parses function dependencies, that are in the same line as + comment BEGIN_CASE. Dependencies are specified after pattern + 'depends_on:' and are delimited by ':'. :param line: Line from .functions file that has dependencies. :return: List of dependencies. @@ -256,7 +271,9 @@ def parse_function_deps(line): def parse_function_signature(line): """ - Parsing function signature + Parses test function signature for validation and generates + a dispatch wrapper function that translates input test vectors + read from the data file into test function arguments. :param line: Line from .functions file that has a function signature. @@ -266,6 +283,7 @@ def parse_function_signature(line): args = [] locals = '' args_dispatch = [] + # Check if the test function returns void. m = re.search('\s*void\s+(\w+)\s*\(', line, re.I) if not m: raise ValueError("Test function should return 'void'\n%s" % line) @@ -326,7 +344,7 @@ def parse_function_code(funcs_f, deps, suite_deps): name = 'test_' + name break else: - raise InvalidFileFormat("file: %s - Test functions not found!" % + raise GeneratorInputError("file: %s - Test functions not found!" % funcs_f.name) for line in funcs_f: @@ -334,7 +352,7 @@ def parse_function_code(funcs_f, deps, suite_deps): break code += line else: - raise InvalidFileFormat("file: %s - end case pattern [%s] not " + raise GeneratorInputError("file: %s - end case pattern [%s] not " "found!" % (funcs_f.name, END_CASE_REGEX)) # Add exit label if not present @@ -353,7 +371,8 @@ def parse_function_code(funcs_f, deps, suite_deps): def parse_functions(funcs_f): """ - Returns functions code pieces + Parses a test_suite_xxx.function file and returns information + for generating a C source file for the test suite. :param funcs_f: file object of the functions file. :return: List of test suite dependencies, test function dispatch @@ -427,7 +446,13 @@ def escaped_split(str, ch): def parse_test_data(data_f, debug=False): """ - Parses .data file + Parses .data file for each test case name, test function name, + test dependencies and test arguments. This information is + correlated with the test functions file for generating an + intermediate data file replacing the strings for test function + names, dependencies and integer constant expressions with + identifiers. Mainly for optimising space for on-target + execution. :param data_f: file object of the data file. :return: Generator that yields test name, function name, @@ -478,7 +503,8 @@ def parse_test_data(data_f, debug=False): def gen_dep_check(dep_id, dep): """ - Generate code for the dependency. + Generate code for checking dependency with the associated + identifier. :param dep_id: Dependency identifier :param dep: Dependency macro @@ -505,7 +531,8 @@ def gen_dep_check(dep_id, dep): def gen_expression_check(exp_id, exp): """ - Generates code for expression check + Generates code for evaluating an integer expression using + associated expression Id. :param exp_id: Expression Identifier :param exp: Expression/Macro @@ -527,8 +554,9 @@ def gen_expression_check(exp_id, exp): def write_deps(out_data_f, test_deps, unique_deps): """ - Write dependencies to intermediate test data file. - It also returns dependency check code. + Write dependencies to intermediate test data file, replacing + the string form with identifiers. Also, generates dependency + check code. :param out_data_f: Output intermediate data file :param test_deps: Dependencies @@ -553,8 +581,9 @@ def write_deps(out_data_f, test_deps, unique_deps): def write_parameters(out_data_f, test_args, func_args, unique_expressions): """ - Writes test parameters to the intermediate data file. - Also generates expression code. + Writes test parameters to the intermediate data file, replacing + the string form with identifiers. Also, generates expression + check code. :param out_data_f: Output intermediate data file :param test_args: Test parameters @@ -588,7 +617,7 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): """ - Adds preprocessor checks for test suite dependencies. + Generates preprocessor checks for test suite dependencies. :param suite_deps: Test suite dependencies read from the .functions file. @@ -614,8 +643,14 @@ def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): """ - Generates dependency checks, expression code and intermediate - data file from test data file. + This function reads test case name, dependencies and test vectors + from the .data file. This information is correlated with the test + functions file for generating an intermediate data file replacing + the strings for test function names, dependencies and integer + constant expressions with identifiers. Mainly for optimising + space for on-target execution. + It also generates test case dependency check code and expression + evaluation code. :param data_f: Data file object :param out_data_f:Output intermediate data file @@ -660,15 +695,16 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): def generate_code(funcs_file, data_file, template_file, platform_file, - help_file, suites_dir, c_file, out_data_file): + helpers_file, suites_dir, c_file, out_data_file): """ - Generate mbed-os test code. + Generates C source code from test suite file, data file, common + helpers file and platform file. :param funcs_file: Functions file object :param data_file: Data file object :param template_file: Template file object :param platform_file: Platform file object - :param help_file: Helper functions file object + :param helpers_file: Helper functions file object :param suites_dir: Test suites dir :param c_file: Output C file object :param out_data_file: Output intermediate data file object @@ -678,7 +714,7 @@ def generate_code(funcs_file, data_file, template_file, platform_file, ('Data file', data_file), ('Template file', template_file), ('Platform file', platform_file), - ('Help code file', help_file), + ('Helpers code file', helpers_file), ('Suites dir', suites_dir)]: if not os.path.exists(path): raise IOError("ERROR: %s [%s] not found!" % (name, path)) @@ -686,9 +722,9 @@ def generate_code(funcs_file, data_file, template_file, platform_file, snippets = {'generator_script' : os.path.basename(__file__)} # Read helpers - with open(help_file, 'r') as help_f, open(platform_file, 'r') as \ + with open(helpers_file, 'r') as help_f, open(platform_file, 'r') as \ platform_f: - snippets['test_common_helper_file'] = help_file + snippets['test_common_helper_file'] = helpers_file snippets['test_common_helpers'] = help_f.read() snippets['test_platform_file'] = platform_file snippets['platform_code'] = platform_f.read().replace( @@ -730,36 +766,36 @@ def check_cmd(): :return: """ parser = argparse.ArgumentParser( - description='Generate code for mbed-os tests.') + description='Dynamically generate test suite code.') parser.add_argument("-f", "--functions-file", dest="funcs_file", help="Functions file", - metavar="FUNCTIONS", + metavar="FUNCTIONS_FILE", required=True) parser.add_argument("-d", "--data-file", dest="data_file", help="Data file", - metavar="DATA", + metavar="DATA_FILE", required=True) parser.add_argument("-t", "--template-file", dest="template_file", help="Template file", - metavar="TEMPLATE", + metavar="TEMPLATE_FILE", required=True) parser.add_argument("-s", "--suites-dir", dest="suites_dir", help="Suites dir", - metavar="SUITES", + metavar="SUITES_DIR", required=True) - parser.add_argument("--help-file", - dest="help_file", - help="Help file", - metavar="HELPER", + parser.add_argument("--helpers-file", + dest="helpers_file", + help="Helpers file", + metavar="HELPERS_FILE", required=True) parser.add_argument("-p", "--platform-file", @@ -789,7 +825,7 @@ def check_cmd(): os.makedirs(d) generate_code(args.funcs_file, args.data_file, args.template_file, - args.platform_file, args.help_file, args.suites_dir, + args.platform_file, args.helpers_file, args.suites_dir, out_c_file, out_data_file) From 951a2c8898f8e2caf210d05aac8595c5aff0b906 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 03:47:08 +0100 Subject: [PATCH 0748/1100] Improve documentation in mbedtls_test.py --- tests/scripts/mbedtls_test.py | 64 +++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 52fd0a9c28..c3b1b7a3f8 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,4 +1,4 @@ -# Greentea host test script for on-target tests. +# Greentea host test script for Mbed TLS on-target test suite testing. # # Copyright (C) 2018, ARM Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 @@ -19,12 +19,19 @@ """ -Greentea host test script for on-target tests. +Mbed TLS on-target test suite tests are implemented as mbed-os greentea +tests. Greentea tests are implemented in two parts: target test and +host test. Target test is a C application that is built for the +target platform and executes on the target. Host test is a Python +class derived from mbed_host_tests.BaseHostTest. Target communicates +with the host over serial for the test data. -Host test script for testing mbed TLS test suites on target. Implements -BaseHostTest to handle key,value pairs (events) coming from mbed TLS -tests. Reads data file corresponding to the executing binary and dispatches -test cases. +Python tool mbedgt (greentea) is responsible for flashing the test +binary on to the target and dynamically loading the host test. + +This script contains the host test for handling target test's +requests for test vectors. It also reports the test results +in format understood by Greentea. """ @@ -41,7 +48,8 @@ class TestDataParserError(Exception): class TestDataParser(object): """ - parser for mbedtls test data files. + Parses test name, dependencies, test function name and test parameters + from the data file. """ def __init__(self): @@ -127,19 +135,30 @@ class TestDataParser(object): class MbedTlsTest(BaseHostTest): """ - Event handler for mbedtls unit tests. This script is loaded at run time - by htrun while executing mbedtls unit tests. + Host test for mbedtls unit tests. This script is loaded at + run time by Greentea for executing mbedtls test suites. Each + communication from the target is received in this object as + an event, which is then handled by the event handler method + decorated by the associated event. Ex: @event_callback('GO'). + + Target test sends requests for dispatching next test. It reads + tests from the intermediate data file and sends test function + identifier, dependency identifiers, expression identifiers and + the test data in binary form. Target test checks dependecnies + , evaluate integer constant expressions and dispatches the test + function with received test parameters. + """ - # From suites/helpers.function + # status/error codes from suites/helpers.function DEPENDENCY_SUPPORTED = 0 KEY_VALUE_MAPPING_FOUND = DEPENDENCY_SUPPORTED DISPATCH_TEST_SUCCESS = DEPENDENCY_SUPPORTED - KEY_VALUE_MAPPING_NOT_FOUND = -1 - DEPENDENCY_NOT_SUPPORTED = -2 - DISPATCH_TEST_FN_NOT_FOUND = -3 - DISPATCH_INVALID_TEST_DATA = -4 - DISPATCH_UNSUPPORTED_SUITE = -5 + KEY_VALUE_MAPPING_NOT_FOUND = -1 # Expression Id not found. + DEPENDENCY_NOT_SUPPORTED = -2 # Dependency not supported. + DISPATCH_TEST_FN_NOT_FOUND = -3 # Test function not found. + DISPATCH_INVALID_TEST_DATA = -4 # Invalid parameter type. + DISPATCH_UNSUPPORTED_SUITE = -5 # Test suite not supported/enabled. def __init__(self): """ @@ -159,13 +178,15 @@ class MbedTlsTest(BaseHostTest): def setup(self): """ - Setup hook implementation. Reads test suite data file and parses out tests. + Setup hook implementation. Reads test suite data file and parses out + tests. """ binary_path = self.get_config_item('image_path') script_dir = os.path.split(os.path.abspath(__file__))[0] suite_name = os.path.splitext(os.path.basename(binary_path))[0] data_file = ".".join((suite_name, 'data')) - data_file = os.path.join(script_dir, '..', 'mbedtls', suite_name, data_file) + data_file = os.path.join(script_dir, '..', 'mbedtls', + suite_name, data_file) if os.path.exists(data_file): self.log("Running tests from %s" % data_file) parser = TestDataParser() @@ -262,7 +283,7 @@ class MbedTlsTest(BaseHostTest): def run_next_test(self): """ - Send next test function to the target. + Fetch next test information and execute the test. """ self.test_index += 1 @@ -275,7 +296,7 @@ class MbedTlsTest(BaseHostTest): def run_test(self, name, function_id, deps, args): """ - Runs the test. + Execute the test on target by sending next test information. :param name: Test name :param function_id: function identifier @@ -304,7 +325,7 @@ class MbedTlsTest(BaseHostTest): @event_callback('GO') def on_go(self, key, value, timestamp): """ - Called on key "GO". Kicks off test execution. + Sent by the target to start first test. :param key: Event key :param value: Value. ignored @@ -316,7 +337,8 @@ class MbedTlsTest(BaseHostTest): @event_callback("R") def on_result(self, key, value, timestamp): """ - Handle result. Prints test start, finish prints required by Greentea to detect test execution. + Handle result. Prints test start, finish required by Greentea + to detect test execution. :param key: Event key :param value: Value. ignored From 62a5d7d65a7e902cab39671b0d615f4fd5d30288 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 10:02:54 +0100 Subject: [PATCH 0749/1100] Document status/error codes in helper.function --- tests/suites/helpers.function | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 7f5a6f29a5..3c2a6db66f 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -49,17 +49,21 @@ typedef struct HexParam_tag } HexParam_t; /*----------------------------------------------------------------------------*/ -/* Constants */ +/* Status and error constants */ -#define DEPENDENCY_SUPPORTED 0 -#define KEY_VALUE_MAPPING_FOUND 0 -#define DISPATCH_TEST_SUCCESS 0 +#define DEPENDENCY_SUPPORTED 0 /* Dependency supported by build */ +#define KEY_VALUE_MAPPING_FOUND 0 /* Integer expression found */ +#define DISPATCH_TEST_SUCCESS 0 /* Test dispatch successful */ -#define KEY_VALUE_MAPPING_NOT_FOUND -1 -#define DEPENDENCY_NOT_SUPPORTED -2 -#define DISPATCH_TEST_FN_NOT_FOUND -3 -#define DISPATCH_INVALID_TEST_DATA -4 -#define DISPATCH_UNSUPPORTED_SUITE -5 +#define KEY_VALUE_MAPPING_NOT_FOUND -1 /* Integer expression not found */ +#define DEPENDENCY_NOT_SUPPORTED -2 /* Dependency not supported */ +#define DISPATCH_TEST_FN_NOT_FOUND -3 /* Test function not found */ +#define DISPATCH_INVALID_TEST_DATA -4 /* Invalid test parameter type. + Only int, string, binary data + and integer expressions are + allowed */ +#define DISPATCH_UNSUPPORTED_SUITE -5 /* Test suite not supported by the + build */ /*----------------------------------------------------------------------------*/ From 5fcca46a3a87bfbc04d72fa062a7db948bcea6a5 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 11:05:32 +0100 Subject: [PATCH 0750/1100] Rename HexParam_t -> data_t for consistent coding style --- tests/scripts/generate_test_code.py | 8 ++-- tests/scripts/test_generate_test_code.py | 10 ++--- tests/suites/helpers.function | 4 +- tests/suites/test_suite_aes.function | 32 +++++++-------- tests/suites/test_suite_arc4.function | 4 +- tests/suites/test_suite_asn1write.function | 6 +-- tests/suites/test_suite_base64.function | 6 +-- tests/suites/test_suite_blowfish.function | 28 ++++++------- tests/suites/test_suite_camellia.function | 28 ++++++------- tests/suites/test_suite_ccm.function | 14 +++---- tests/suites/test_suite_cipher.function | 18 ++++---- tests/suites/test_suite_cmac.function | 30 +++++++------- tests/suites/test_suite_ctr_drbg.function | 12 +++--- tests/suites/test_suite_debug.function | 2 +- tests/suites/test_suite_des.function | 38 ++++++++--------- tests/suites/test_suite_ecdh.function | 4 +- tests/suites/test_suite_ecdsa.function | 4 +- tests/suites/test_suite_ecjpake.function | 6 +-- tests/suites/test_suite_ecp.function | 8 ++-- tests/suites/test_suite_entropy.function | 2 +- tests/suites/test_suite_gcm.function | 22 +++++----- tests/suites/test_suite_hmac_drbg.function | 16 ++++---- tests/suites/test_suite_md.function | 22 +++++----- tests/suites/test_suite_mdx.function | 8 ++-- tests/suites/test_suite_mpi.function | 6 +-- tests/suites/test_suite_pem.function | 2 +- tests/suites/test_suite_pk.function | 20 ++++----- tests/suites/test_suite_pkcs1_v15.function | 16 ++++---- tests/suites/test_suite_pkcs1_v21.function | 20 ++++----- tests/suites/test_suite_pkcs5.function | 8 ++-- tests/suites/test_suite_pkparse.function | 2 +- tests/suites/test_suite_rsa.function | 48 +++++++++++----------- tests/suites/test_suite_shax.function | 10 ++--- tests/suites/test_suite_ssl.function | 2 +- tests/suites/test_suite_x509parse.function | 14 +++---- tests/suites/test_suite_xtea.function | 16 ++++---- 36 files changed, 248 insertions(+), 248 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 047b130014..c4c11fc391 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -300,19 +300,19 @@ def parse_function_signature(line): elif re.search('char\s*\*\s*.*', arg.strip()): args.append('char*') args_dispatch.append('(char *) params[%d]' % arg_idx) - elif re.search('HexParam_t\s*\*\s*.*', arg.strip()): + elif re.search('data_t\s*\*\s*.*', arg.strip()): args.append('hex') # create a structure pointer_initializer = '(uint8_t *) params[%d]' % arg_idx len_initializer = '*( (uint32_t *) params[%d] )' % (arg_idx+1) - locals += """ HexParam_t hex%d = {%s, %s}; + locals += """ data_t data%d = {%s, %s}; """ % (arg_idx, pointer_initializer, len_initializer) - args_dispatch.append('&hex%d' % arg_idx) + args_dispatch.append('&data%d' % arg_idx) arg_idx += 1 else: raise ValueError("Test function arguments can only be 'int', " - "'char *' or 'HexParam_t'\n%s" % line) + "'char *' or 'data_t'\n%s" % line) arg_idx += 1 return name, args, locals, args_dispatch diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index 9964ab9f6f..f1088a32a8 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -442,11 +442,11 @@ class ParseFuncSignature(TestCase): Test hex parameters parsing :return: """ - line = 'void entropy_threshold( char * a, HexParam_t * h, int result )' + line = 'void entropy_threshold( char * a, data_t * h, int result )' name, args, local, arg_dispatch = parse_function_signature(line) self.assertEqual(name, 'entropy_threshold') self.assertEqual(args, ['char*', 'hex', 'int']) - self.assertEqual(local, ' HexParam_t hex1 = {(uint8_t *) params[1], *( (uint32_t *) params[2] )};\n') + self.assertEqual(local, ' data_t hex1 = {(uint8_t *) params[1], *( (uint32_t *) params[2] )};\n') self.assertEqual(arg_dispatch, ['(char *) params[0]', '&hex1', '*( (int *) params[3] )']) def test_non_void_function(self): @@ -454,15 +454,15 @@ class ParseFuncSignature(TestCase): Test invalid signature (non void). :return: """ - line = 'int entropy_threshold( char * a, HexParam_t * h, int result )' + line = 'int entropy_threshold( char * a, data_t * h, int result )' self.assertRaises(ValueError, parse_function_signature, line) def test_unsupported_arg(self): """ - Test unsupported arguments (not among int, char * and HexParam_t) + Test unsupported arguments (not among int, char * and data_t) :return: """ - line = 'int entropy_threshold( char * a, HexParam_t * h, int * result )' + line = 'int entropy_threshold( char * a, data_t * h, int * result )' self.assertRaises(ValueError, parse_function_signature, line) def test_no_params(self): diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 3c2a6db66f..56ae629164 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -42,11 +42,11 @@ typedef UINT32 uint32_t; #endif /* Type for Hex parameters */ -typedef struct HexParam_tag +typedef struct data_tag { uint8_t * x; uint32_t len; -} HexParam_t; +} data_t; /*----------------------------------------------------------------------------*/ /* Status and error constants */ diff --git a/tests/suites/test_suite_aes.function b/tests/suites/test_suite_aes.function index a0f1b13eb0..a797e699c3 100644 --- a/tests/suites/test_suite_aes.function +++ b/tests/suites/test_suite_aes.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void aes_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void aes_encrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -32,8 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void aes_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void aes_decrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -56,8 +56,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void aes_encrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -81,8 +81,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void aes_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void aes_decrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -230,8 +230,8 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void aes_encrypt_cfb128( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -252,8 +252,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void aes_decrypt_cfb128( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -274,8 +274,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_encrypt_cfb8( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void aes_encrypt_cfb8( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; @@ -295,8 +295,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void aes_decrypt_cfb8( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void aes_decrypt_cfb8( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_aes_context ctx; diff --git a/tests/suites/test_suite_arc4.function b/tests/suites/test_suite_arc4.function index 2a56a5b2df..ae3b032b3b 100644 --- a/tests/suites/test_suite_arc4.function +++ b/tests/suites/test_suite_arc4.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void mbedtls_arc4_crypt( HexParam_t * src_str, HexParam_t * key_str, - HexParam_t * hex_dst_string ) +void mbedtls_arc4_crypt( data_t * src_str, data_t * key_str, + data_t * hex_dst_string ) { unsigned char dst_str[1000]; mbedtls_arc4_context ctx; diff --git a/tests/suites/test_suite_asn1write.function b/tests/suites/test_suite_asn1write.function index 3b2d86e79c..aae44a8c6a 100644 --- a/tests/suites/test_suite_asn1write.function +++ b/tests/suites/test_suite_asn1write.function @@ -11,7 +11,7 @@ */ /* BEGIN_CASE */ -void mbedtls_asn1_write_octet_string( HexParam_t * str, HexParam_t * asn1, +void mbedtls_asn1_write_octet_string( data_t * str, data_t * asn1, int buf_len, int result ) { int ret; @@ -44,7 +44,7 @@ void mbedtls_asn1_write_octet_string( HexParam_t * str, HexParam_t * asn1, /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_ia5_string( char * str, HexParam_t * asn1, +void mbedtls_asn1_write_ia5_string( char * str, data_t * asn1, int buf_len, int result ) { int ret; @@ -79,7 +79,7 @@ void mbedtls_asn1_write_ia5_string( char * str, HexParam_t * asn1, /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_asn1_write_len( int len, HexParam_t * asn1, int buf_len, +void mbedtls_asn1_write_len( int len, data_t * asn1, int buf_len, int result ) { int ret; diff --git a/tests/suites/test_suite_base64.function b/tests/suites/test_suite_base64.function index 53f0f69212..3a8bf430f3 100644 --- a/tests/suites/test_suite_base64.function +++ b/tests/suites/test_suite_base64.function @@ -49,7 +49,7 @@ void mbedtls_base64_decode( char * src_string, char * dst_string, int result ) /* END_CASE */ /* BEGIN_CASE */ -void base64_encode_hex( HexParam_t * src, char * dst, int dst_buf_size, +void base64_encode_hex( data_t * src, char * dst, int dst_buf_size, int result ) { unsigned char *res = NULL; @@ -70,7 +70,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex( char * src, HexParam_t * dst, int dst_buf_size, +void base64_decode_hex( char * src, data_t * dst, int dst_buf_size, int result ) { unsigned char *res = NULL; @@ -92,7 +92,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void base64_decode_hex_src( HexParam_t * src, char * dst_ref, int result ) +void base64_decode_hex_src( data_t * src, char * dst_ref, int result ) { unsigned char dst[1000] = { 0 }; size_t len; diff --git a/tests/suites/test_suite_blowfish.function b/tests/suites/test_suite_blowfish.function index d88eac463b..189e23dc63 100644 --- a/tests/suites/test_suite_blowfish.function +++ b/tests/suites/test_suite_blowfish.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void blowfish_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void blowfish_encrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -32,8 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void blowfish_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void blowfish_decrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_blowfish_context ctx; @@ -56,8 +56,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void blowfish_encrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -82,8 +82,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void blowfish_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void blowfish_decrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -107,8 +107,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_encrypt_cfb64( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string +void blowfish_encrypt_cfb64( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; @@ -130,8 +130,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void blowfish_decrypt_cfb64( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string +void blowfish_decrypt_cfb64( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; @@ -153,8 +153,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */ -void blowfish_encrypt_ctr( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void blowfish_encrypt_ctr( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char stream_str[100]; unsigned char output[100]; diff --git a/tests/suites/test_suite_camellia.function b/tests/suites/test_suite_camellia.function index 4bfa1a5da8..d09a6107af 100644 --- a/tests/suites/test_suite_camellia.function +++ b/tests/suites/test_suite_camellia.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void camellia_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void camellia_encrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -32,8 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void camellia_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int setkey_result ) +void camellia_decrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string, int setkey_result ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -56,8 +56,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void camellia_encrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -81,8 +81,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void camellia_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void camellia_decrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -106,9 +106,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_encrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void camellia_encrypt_cfb128( data_t * key_str, data_t * iv_str, + data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_camellia_context ctx; @@ -129,9 +129,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */ -void camellia_decrypt_cfb128( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void camellia_decrypt_cfb128( data_t * key_str, data_t * iv_str, + data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_camellia_context ctx; diff --git a/tests/suites/test_suite_ccm.function b/tests/suites/test_suite_ccm.function index 79ee0ff8fb..9951ca1685 100644 --- a/tests/suites/test_suite_ccm.function +++ b/tests/suites/test_suite_ccm.function @@ -116,9 +116,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_encrypt_and_tag( int cipher_id, HexParam_t * key, - HexParam_t * msg, HexParam_t * iv, - HexParam_t * add, HexParam_t * result ) +void mbedtls_ccm_encrypt_and_tag( int cipher_id, data_t * key, + data_t * msg, data_t * iv, + data_t * add, data_t * result ) { mbedtls_ccm_context ctx; size_t tag_len; @@ -149,10 +149,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ccm_auth_decrypt( int cipher_id, HexParam_t * key, - HexParam_t * msg, HexParam_t * iv, - HexParam_t * add, int tag_len, int result, - HexParam_t * hex_msg ) +void mbedtls_ccm_auth_decrypt( int cipher_id, data_t * key, + data_t * msg, data_t * iv, + data_t * add, int tag_len, int result, + data_t * hex_msg ) { unsigned char tag[16]; mbedtls_ccm_context ctx; diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function index ddb9576e3b..0de02e8278 100644 --- a/tests/suites/test_suite_cipher.function +++ b/tests/suites/test_suite_cipher.function @@ -471,9 +471,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void decrypt_test_vec( int cipher_id, int pad_mode, HexParam_t * key, - HexParam_t * iv, HexParam_t * cipher, - HexParam_t * clear, HexParam_t * ad, HexParam_t * tag, +void decrypt_test_vec( int cipher_id, int pad_mode, data_t * key, + data_t * iv, data_t * cipher, + data_t * clear, data_t * ad, data_t * tag, int finish_result, int tag_result ) { unsigned char output[265]; @@ -529,9 +529,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_AEAD */ -void auth_crypt_tv( int cipher_id, HexParam_t * key, HexParam_t * iv, - HexParam_t * ad, HexParam_t * cipher, HexParam_t * tag, - char * result, HexParam_t * clear ) +void auth_crypt_tv( int cipher_id, data_t * key, data_t * iv, + data_t * ad, data_t * cipher, data_t * tag, + char * result, data_t * clear ) { int ret; unsigned char output[267]; /* above + 2 (overwrite check) */ @@ -598,8 +598,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void test_vec_ecb( int cipher_id, int operation, HexParam_t * key, - HexParam_t * input, HexParam_t * result, int finish_result +void test_vec_ecb( int cipher_id, int operation, data_t * key, + data_t * input, data_t * result, int finish_result ) { mbedtls_cipher_context_t ctx; @@ -655,7 +655,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void check_padding( int pad_mode, HexParam_t * input, int ret, int dlen_check +void check_padding( int pad_mode, data_t * input, int ret, int dlen_check ) { mbedtls_cipher_info_t cipher_info; diff --git a/tests/suites/test_suite_cmac.function b/tests/suites/test_suite_cmac.function index 85b3be1490..cabf1070c1 100644 --- a/tests/suites/test_suite_cmac.function +++ b/tests/suites/test_suite_cmac.function @@ -119,13 +119,13 @@ void mbedtls_cmac_setkey( int cipher_type, int key_size, int result ) /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_cmac_multiple_blocks( int cipher_type, HexParam_t * key, +void mbedtls_cmac_multiple_blocks( int cipher_type, data_t * key, int keybits, int block_size, - HexParam_t * block1, int block1_len, - HexParam_t * block2, int block2_len, - HexParam_t * block3, int block3_len, - HexParam_t * block4, int block4_len, - HexParam_t * expected_result ) + data_t * block1, int block1_len, + data_t * block2, int block2_len, + data_t * block3, int block3_len, + data_t * block4, int block4_len, + data_t * expected_result ) { const mbedtls_cipher_info_t *cipher_info; mbedtls_cipher_context_t ctx; @@ -184,22 +184,22 @@ exit: /* BEGIN_CASE */ void mbedtls_cmac_multiple_operations_same_key( int cipher_type, - HexParam_t * key, int keybits, + data_t * key, int keybits, int block_size, - HexParam_t * block_a1, + data_t * block_a1, int block_a1_len, - HexParam_t * block_a2, + data_t * block_a2, int block_a2_len, - HexParam_t * block_a3, + data_t * block_a3, int block_a3_len, - HexParam_t * expected_result_a, - HexParam_t * block_b1, + data_t * expected_result_a, + data_t * block_b1, int block_b1_len, - HexParam_t * block_b2, + data_t * block_b2, int block_b2_len, - HexParam_t * block_b3, + data_t * block_b3, int block_b3_len, - HexParam_t * expected_result_b + data_t * expected_result_b ) { const mbedtls_cipher_info_t *cipher_info; diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 619c76e197..c8d2aff4d4 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -51,9 +51,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_pr( HexParam_t * add_init, HexParam_t * entropy, - HexParam_t * add1, HexParam_t * add2, - HexParam_t * result_str ) +void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, + data_t * add1, data_t * add2, + data_t * result_str ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; @@ -75,9 +75,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_nopr( HexParam_t * add_init, HexParam_t * entropy, - HexParam_t * add1, HexParam_t * add_reseed, - HexParam_t * add2, HexParam_t * result_str ) +void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, + data_t * add1, data_t * add_reseed, + data_t * add2, data_t * result_str ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; diff --git a/tests/suites/test_suite_debug.function b/tests/suites/test_suite_debug.function index f517c8a9f9..377d630d90 100644 --- a/tests/suites/test_suite_debug.function +++ b/tests/suites/test_suite_debug.function @@ -105,7 +105,7 @@ exit: /* BEGIN_CASE */ void mbedtls_debug_print_buf( char * file, int line, char * text, - HexParam_t * data, char * result_str ) + data_t * data, char * result_str ) { mbedtls_ssl_context ssl; mbedtls_ssl_config conf; diff --git a/tests/suites/test_suite_des.function b/tests/suites/test_suite_des.function index 8fab5e4154..b5acb7b0ff 100644 --- a/tests/suites/test_suite_des.function +++ b/tests/suites/test_suite_des.function @@ -8,15 +8,15 @@ */ /* BEGIN_CASE */ -void des_check_weak( HexParam_t * key, int ret ) +void des_check_weak( data_t * key, int ret ) { TEST_ASSERT( mbedtls_des_key_check_weak( key->x ) == ret ); } /* END_CASE */ /* BEGIN_CASE */ -void des_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void des_encrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des_context ctx; @@ -36,8 +36,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void des_decrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des_context ctx; @@ -57,8 +57,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void des_encrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -82,8 +82,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string, +void des_decrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; @@ -107,8 +107,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_encrypt_ecb( int key_count, HexParam_t * key_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void des3_encrypt_ecb( int key_count, data_t * key_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -134,8 +134,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void des3_decrypt_ecb( int key_count, HexParam_t * key_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void des3_decrypt_ecb( int key_count, data_t * key_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -161,9 +161,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_encrypt_cbc( int key_count, HexParam_t * key_str, - HexParam_t * iv_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int cbc_result ) +void des3_encrypt_cbc( int key_count, data_t * key_str, + data_t * iv_str, data_t * src_str, + data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; mbedtls_des3_context ctx; @@ -193,9 +193,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void des3_decrypt_cbc( int key_count, HexParam_t * key_str, - HexParam_t * iv_str, HexParam_t * src_str, - HexParam_t * hex_dst_string, int cbc_result ) +void des3_decrypt_cbc( int key_count, data_t * key_str, + data_t * iv_str, data_t * src_str, + data_t * hex_dst_string, int cbc_result ) { unsigned char output[100]; mbedtls_des3_context ctx; diff --git a/tests/suites/test_suite_ecdh.function b/tests/suites/test_suite_ecdh.function index 2d71828ebc..a2c7cedbab 100644 --- a/tests/suites/test_suite_ecdh.function +++ b/tests/suites/test_suite_ecdh.function @@ -43,8 +43,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecdh_primitive_testvec( int id, HexParam_t * rnd_buf_A, char * xA_str, - char * yA_str, HexParam_t * rnd_buf_B, +void ecdh_primitive_testvec( int id, data_t * rnd_buf_A, char * xA_str, + char * yA_str, data_t * rnd_buf_B, char * xB_str, char * yB_str, char * z_str ) { mbedtls_ecp_group grp; diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 65d497d531..48ce586beb 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -41,8 +41,8 @@ exit: /* BEGIN_CASE */ void ecdsa_prim_test_vectors( int id, char * d_str, char * xQ_str, - char * yQ_str, HexParam_t * rnd_buf, - HexParam_t * hash, char * r_str, char * s_str, + char * yQ_str, data_t * rnd_buf, + data_t * hash, char * r_str, char * s_str, int result ) { mbedtls_ecp_group grp; diff --git a/tests/suites/test_suite_ecjpake.function b/tests/suites/test_suite_ecjpake.function index 2579704a75..9e4f7a3711 100644 --- a/tests/suites/test_suite_ecjpake.function +++ b/tests/suites/test_suite_ecjpake.function @@ -106,7 +106,7 @@ void ecjpake_selftest( ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_one( int role, HexParam_t * msg, int ref_ret ) +void read_round_one( int role, data_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; const unsigned char * pw = NULL; @@ -125,7 +125,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_cli( HexParam_t * msg, int ref_ret ) +void read_round_two_cli( data_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; const unsigned char * pw = NULL; @@ -150,7 +150,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C */ -void read_round_two_srv( HexParam_t * msg, int ref_ret ) +void read_round_two_srv( data_t * msg, int ref_ret ) { mbedtls_ecjpake_context ctx; const unsigned char * pw = NULL; diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index d5a092668f..d79a6b3f2d 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -193,7 +193,7 @@ exit: /* BEGIN_CASE */ void ecp_write_binary( int id, char * x, char * y, char * z, int format, - HexParam_t * out, int blen, int ret ) + data_t * out, int blen, int ret ) { mbedtls_ecp_group grp; mbedtls_ecp_point P; @@ -224,7 +224,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ecp_read_binary( int id, HexParam_t * buf, char * x, char * y, char * z, +void ecp_read_binary( int id, data_t * buf, char * x, char * y, char * z, int ret ) { mbedtls_ecp_group grp; @@ -257,7 +257,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_point( int id, HexParam_t * buf, char * x, char * y, +void mbedtls_ecp_tls_read_point( int id, data_t * buf, char * x, char * y, char * z, int ret ) { mbedtls_ecp_group grp; @@ -344,7 +344,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_ecp_tls_read_group( HexParam_t * buf, int result, int bits, +void mbedtls_ecp_tls_read_group( data_t * buf, int result, int bits, int record_len ) { mbedtls_ecp_group grp; diff --git a/tests/suites/test_suite_entropy.function b/tests/suites/test_suite_entropy.function index 9b54f30275..26a0f5911a 100644 --- a/tests/suites/test_suite_entropy.function +++ b/tests/suites/test_suite_entropy.function @@ -302,7 +302,7 @@ void entropy_nv_seed_std_io( ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_PLATFORM_NV_SEED_ALT:MBEDTLS_ENTROPY_SHA512_ACCUMULATOR */ -void entropy_nv_seed( HexParam_t * read_seed ) +void entropy_nv_seed( data_t * read_seed ) { mbedtls_sha512_context accumulator; mbedtls_entropy_context ctx; diff --git a/tests/suites/test_suite_gcm.function b/tests/suites/test_suite_gcm.function index b3d212a509..4d3bba1618 100644 --- a/tests/suites/test_suite_gcm.function +++ b/tests/suites/test_suite_gcm.function @@ -9,8 +9,8 @@ /* BEGIN_CASE */ void gcm_bad_parameters( int cipher_id, int direction, - HexParam_t *key_str, HexParam_t *src_str, - HexParam_t *iv_str, HexParam_t *add_str, + data_t *key_str, data_t *src_str, + data_t *iv_str, data_t *add_str, int tag_len_bits, int gcm_result ) { unsigned char output[128]; @@ -33,10 +33,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_encrypt_and_tag( int cipher_id, HexParam_t * key_str, - HexParam_t * src_str, HexParam_t * iv_str, - HexParam_t * add_str, HexParam_t * hex_dst_string, - int tag_len_bits, HexParam_t * hex_tag_string, +void gcm_encrypt_and_tag( int cipher_id, data_t * key_str, + data_t * src_str, data_t * iv_str, + data_t * add_str, data_t * hex_dst_string, + int tag_len_bits, data_t * hex_tag_string, int init_result ) { unsigned char output[128]; @@ -65,11 +65,11 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void gcm_decrypt_and_verify( int cipher_id, HexParam_t * key_str, - HexParam_t * src_str, HexParam_t * iv_str, - HexParam_t * add_str, int tag_len_bits, - HexParam_t * tag_str, char * result, - HexParam_t * pt_result, int init_result ) +void gcm_decrypt_and_verify( int cipher_id, data_t * key_str, + data_t * src_str, data_t * iv_str, + data_t * add_str, int tag_len_bits, + data_t * tag_str, char * result, + data_t * pt_result, int init_result ) { unsigned char output[128]; mbedtls_gcm_context ctx; diff --git a/tests/suites/test_suite_hmac_drbg.function b/tests/suites/test_suite_hmac_drbg.function index aeea62c360..13bc400623 100644 --- a/tests/suites/test_suite_hmac_drbg.function +++ b/tests/suites/test_suite_hmac_drbg.function @@ -161,9 +161,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_no_reseed( int md_alg, HexParam_t * entropy, - HexParam_t * custom, HexParam_t * add1, - HexParam_t * add2, HexParam_t * output ) +void hmac_drbg_no_reseed( int md_alg, data_t * entropy, + data_t * custom, data_t * add1, + data_t * add2, data_t * output ) { unsigned char data[1024]; unsigned char my_output[512]; @@ -209,9 +209,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_nopr( int md_alg, HexParam_t * entropy, HexParam_t * custom, - HexParam_t * add1, HexParam_t * add2, HexParam_t * add3, - HexParam_t * output ) +void hmac_drbg_nopr( int md_alg, data_t * entropy, data_t * custom, + data_t * add1, data_t * add2, data_t * add3, + data_t * output ) { unsigned char my_output[512]; entropy_ctx p_entropy; @@ -242,8 +242,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void hmac_drbg_pr( int md_alg, HexParam_t * entropy, HexParam_t * custom, - HexParam_t * add1, HexParam_t * add2, HexParam_t * output ) +void hmac_drbg_pr( int md_alg, data_t * entropy, data_t * custom, + data_t * add1, data_t * add2, data_t * output ) { unsigned char my_output[512]; entropy_ctx p_entropy; diff --git a/tests/suites/test_suite_md.function b/tests/suites/test_suite_md.function index 07e2d58498..11cf88ae77 100644 --- a/tests/suites/test_suite_md.function +++ b/tests/suites/test_suite_md.function @@ -127,7 +127,7 @@ void md_info( int md_type, char * md_name, int md_size ) /* BEGIN_CASE */ void md_text( char * text_md_name, char * text_src_string, - HexParam_t * hex_hash_string ) + data_t * hex_hash_string ) { char md_name[100]; unsigned char src_str[1000]; @@ -150,8 +150,8 @@ void md_text( char * text_md_name, char * text_src_string, /* END_CASE */ /* BEGIN_CASE */ -void md_hex( char * text_md_name, HexParam_t * src_str, - HexParam_t * hex_hash_string ) +void md_hex( char * text_md_name, data_t * src_str, + data_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -174,7 +174,7 @@ void md_hex( char * text_md_name, HexParam_t * src_str, /* BEGIN_CASE */ void md_text_multi( char * text_md_name, char * text_src_string, - HexParam_t * hex_hash_string ) + data_t * hex_hash_string ) { char md_name[100]; unsigned char src_str[1000]; @@ -225,8 +225,8 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void md_hex_multi( char * text_md_name, HexParam_t * src_str, - HexParam_t * hex_hash_string ) +void md_hex_multi( char * text_md_name, data_t * src_str, + data_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -272,8 +272,8 @@ exit: /* BEGIN_CASE */ void mbedtls_md_hmac( char * text_md_name, int trunc_size, - HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_hash_string ) + data_t * key_str, data_t * src_str, + data_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -294,8 +294,8 @@ void mbedtls_md_hmac( char * text_md_name, int trunc_size, /* END_CASE */ /* BEGIN_CASE */ -void md_hmac_multi( char * text_md_name, int trunc_size, HexParam_t * key_str, - HexParam_t * src_str, HexParam_t * hex_hash_string ) +void md_hmac_multi( char * text_md_name, int trunc_size, data_t * key_str, + data_t * src_str, data_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; @@ -340,7 +340,7 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ void mbedtls_md_file( char * text_md_name, char * filename, - HexParam_t * hex_hash_string ) + data_t * hex_hash_string ) { char md_name[100]; unsigned char output[100]; diff --git a/tests/suites/test_suite_mdx.function b/tests/suites/test_suite_mdx.function index ddfe3697bc..02004efa84 100644 --- a/tests/suites/test_suite_mdx.function +++ b/tests/suites/test_suite_mdx.function @@ -6,7 +6,7 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_MD2_C */ -void md2_text( char * text_src_string, HexParam_t * hex_hash_string ) +void md2_text( char * text_src_string, data_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -25,7 +25,7 @@ void md2_text( char * text_src_string, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD4_C */ -void md4_text( char * text_src_string, HexParam_t * hex_hash_string ) +void md4_text( char * text_src_string, data_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -44,7 +44,7 @@ void md4_text( char * text_src_string, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_MD5_C */ -void md5_text( char * text_src_string, HexParam_t * hex_hash_string ) +void md5_text( char * text_src_string, data_t * hex_hash_string ) { int ret; unsigned char src_str[100]; @@ -63,7 +63,7 @@ void md5_text( char * text_src_string, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RIPEMD160_C */ -void ripemd160_text( char * text_src_string, HexParam_t * hex_hash_string ) +void ripemd160_text( char * text_src_string, data_t * hex_hash_string ) { int ret; unsigned char src_str[100]; diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function index 4b7a048599..4754c6e534 100644 --- a/tests/suites/test_suite_mpi.function +++ b/tests/suites/test_suite_mpi.function @@ -53,7 +53,7 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_mpi_read_binary( HexParam_t * buf, int radix_A, char * input_A ) +void mbedtls_mpi_read_binary( data_t * buf, int radix_A, char * input_A ) { mbedtls_mpi X; unsigned char str[1000]; @@ -73,7 +73,7 @@ exit: /* BEGIN_CASE */ void mbedtls_mpi_write_binary( int radix_X, char * input_X, - HexParam_t * input_A, int output_size, + data_t * input_A, int output_size, int result ) { mbedtls_mpi X; @@ -104,7 +104,7 @@ exit: /* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ void mbedtls_mpi_read_file( int radix_X, char * input_file, - HexParam_t * input_A, int result ) + data_t * input_A, int result ) { mbedtls_mpi X; unsigned char buf[1000]; diff --git a/tests/suites/test_suite_pem.function b/tests/suites/test_suite_pem.function index dcd53d6537..947f1fb25d 100644 --- a/tests/suites/test_suite_pem.function +++ b/tests/suites/test_suite_pem.function @@ -6,7 +6,7 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_PEM_WRITE_C */ -void mbedtls_pem_write_buffer( char * start, char * end, HexParam_t * buf, +void mbedtls_pem_write_buffer( char * start, char * end, data_t * buf, char * result_str ) { unsigned char *check_buf = NULL; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 23e3a69e2b..9005ddb313 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -121,9 +121,9 @@ void mbedtls_pk_check_pair( char * pub_file, char * prv_file, int ret ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_test_vec( HexParam_t * message_str, int digest, int mod, +void pk_rsa_verify_test_vec( data_t * message_str, int digest, int mod, int radix_N, char * input_N, int radix_E, - char * input_E, HexParam_t * result_str, + char * input_E, data_t * result_str, int result ) { unsigned char hash_result[1000]; @@ -154,10 +154,10 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_verify_ext_test_vec( HexParam_t * message_str, int digest, +void pk_rsa_verify_ext_test_vec( data_t * message_str, int digest, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_str, int pk_type, + data_t * result_str, int pk_type, int mgf1_hash_id, int salt_len, int result ) { unsigned char hash_result[1000]; @@ -213,8 +213,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ECDSA_C */ -void pk_ec_test_vec( int type, int id, HexParam_t * key, HexParam_t * hash, - HexParam_t * sig, int ret ) +void pk_ec_test_vec( int type, int id, data_t * key, data_t * hash, + data_t * sig, int ret ) { mbedtls_pk_context pk; mbedtls_ecp_keypair *eckey; @@ -266,9 +266,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_encrypt_test_vec( HexParam_t * message, int mod, int radix_N, +void pk_rsa_encrypt_test_vec( data_t * message, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result, int ret ) + data_t * result, int ret ) { unsigned char output[1000]; rnd_pseudo_info rnd_info; @@ -300,10 +300,10 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_rsa_decrypt_test_vec( HexParam_t * cipher, int mod, int radix_P, +void pk_rsa_decrypt_test_vec( data_t * cipher, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, - char * input_E, HexParam_t * clear, int ret ) + char * input_E, data_t * clear, int ret ) { unsigned char output[1000]; rnd_pseudo_info rnd_info; diff --git a/tests/suites/test_suite_pkcs1_v15.function b/tests/suites/test_suite_pkcs1_v15.function index 9cf3b1934f..83f417ca81 100644 --- a/tests/suites/test_suite_pkcs1_v15.function +++ b/tests/suites/test_suite_pkcs1_v15.function @@ -11,8 +11,8 @@ /* BEGIN_CASE */ void pkcs1_rsaes_v15_encrypt( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int hash, - HexParam_t * message_str, HexParam_t * rnd_buf, - HexParam_t * result_hex_str, int result ) + data_t * message_str, data_t * rnd_buf, + data_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -50,8 +50,8 @@ exit: void pkcs1_rsaes_v15_decrypt( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int hash, HexParam_t * result_hex_str, - char * seed, HexParam_t * message_str, + int hash, data_t * result_hex_str, + char * seed, data_t * message_str, int result ) { unsigned char output[1000]; @@ -97,8 +97,8 @@ exit: void pkcs1_rsassa_v15_sign( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, int digest, int hash, - HexParam_t * message_str, HexParam_t * rnd_buf, - HexParam_t * result_hex_str, int result ) + data_t * message_str, data_t * rnd_buf, + data_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -147,8 +147,8 @@ exit: /* BEGIN_CASE */ void pkcs1_rsassa_v15_verify( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int digest, - int hash, HexParam_t * message_str, char * salt, - HexParam_t * result_str, int result ) + int hash, data_t * message_str, char * salt, + data_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; diff --git a/tests/suites/test_suite_pkcs1_v21.function b/tests/suites/test_suite_pkcs1_v21.function index dd408863f2..99be08ac0c 100644 --- a/tests/suites/test_suite_pkcs1_v21.function +++ b/tests/suites/test_suite_pkcs1_v21.function @@ -11,8 +11,8 @@ /* BEGIN_CASE */ void pkcs1_rsaes_oaep_encrypt( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int hash, - HexParam_t * message_str, HexParam_t * rnd_buf, - HexParam_t * result_hex_str, int result ) + data_t * message_str, data_t * rnd_buf, + data_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -50,8 +50,8 @@ exit: void pkcs1_rsaes_oaep_decrypt( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int hash, HexParam_t * result_hex_str, - char * seed, HexParam_t * message_str, + int hash, data_t * result_hex_str, + char * seed, data_t * message_str, int result ) { unsigned char output[1000]; @@ -98,8 +98,8 @@ exit: void pkcs1_rsassa_pss_sign( int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, int digest, int hash, - HexParam_t * message_str, HexParam_t * rnd_buf, - HexParam_t * result_hex_str, int result ) + data_t * message_str, data_t * rnd_buf, + data_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -149,8 +149,8 @@ exit: /* BEGIN_CASE */ void pkcs1_rsassa_pss_verify( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int digest, - int hash, HexParam_t * message_str, char * salt, - HexParam_t * result_str, int result ) + int hash, data_t * message_str, char * salt, + data_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; @@ -185,8 +185,8 @@ void pkcs1_rsassa_pss_verify_ext( int mod, int radix_N, char * input_N, int radix_E, char * input_E, int msg_digest_id, int ctx_hash, int mgf_hash, int salt_len, - HexParam_t * message_str, - HexParam_t * result_str, int result_simple, + data_t * message_str, + data_t * result_str, int result_simple, int result_full ) { unsigned char hash_result[1000]; diff --git a/tests/suites/test_suite_pkcs5.function b/tests/suites/test_suite_pkcs5.function index 0dcbb0a467..26f1d33312 100644 --- a/tests/suites/test_suite_pkcs5.function +++ b/tests/suites/test_suite_pkcs5.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void pbkdf2_hmac( int hash, HexParam_t * pw_str, HexParam_t * salt_str, - int it_cnt, int key_len, HexParam_t * result_key_string ) +void pbkdf2_hmac( int hash, data_t * pw_str, data_t * salt_str, + int it_cnt, int key_len, data_t * result_key_string ) { mbedtls_md_context_t ctx; const mbedtls_md_info_t *info; @@ -32,8 +32,8 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_ASN1_PARSE_C */ -void mbedtls_pkcs5_pbes2( int params_tag, HexParam_t *params_hex, HexParam_t *pw, - HexParam_t *data, int ref_ret, HexParam_t *ref_out ) +void mbedtls_pkcs5_pbes2( int params_tag, data_t *params_hex, data_t *pw, + data_t *data, int ref_ret, data_t *ref_out ) { int my_ret; mbedtls_asn1_buf params; diff --git a/tests/suites/test_suite_pkparse.function b/tests/suites/test_suite_pkparse.function index 920f9369b5..3eb0397e6a 100644 --- a/tests/suites/test_suite_pkparse.function +++ b/tests/suites/test_suite_pkparse.function @@ -114,7 +114,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_RSA_C */ -void pk_parse_key( HexParam_t * buf, char * result_str, int result ) +void pk_parse_key( data_t * buf, char * result_str, int result ) { mbedtls_pk_context pk; unsigned char output[2000]; diff --git a/tests/suites/test_suite_rsa.function b/tests/suites/test_suite_rsa.function index 83f735321a..c43ef20503 100644 --- a/tests/suites/test_suite_rsa.function +++ b/tests/suites/test_suite_rsa.function @@ -18,11 +18,11 @@ */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_sign( HexParam_t * message_str, int padding_mode, +void mbedtls_rsa_pkcs1_sign( data_t * message_str, int padding_mode, int digest, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_hex_str, int result ) + data_t * result_hex_str, int result ) { unsigned char hash_result[1000]; unsigned char output[1000]; @@ -69,10 +69,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_verify( HexParam_t * message_str, int padding_mode, +void mbedtls_rsa_pkcs1_verify( data_t * message_str, int padding_mode, int digest, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_str, int result ) + data_t * result_str, int result ) { unsigned char hash_result[1000]; mbedtls_rsa_context ctx; @@ -103,11 +103,11 @@ exit: /* BEGIN_CASE */ -void rsa_pkcs1_sign_raw( HexParam_t * hash_result, +void rsa_pkcs1_sign_raw( data_t * hash_result, int padding_mode, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, - char * input_E, HexParam_t * result_hex_str ) + char * input_E, data_t * result_hex_str ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -174,10 +174,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_verify_raw( HexParam_t * hash_result, +void rsa_pkcs1_verify_raw( data_t * hash_result, int padding_mode, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_str, int correct ) + data_t * result_str, int correct ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -235,10 +235,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_encrypt( HexParam_t * message_str, int padding_mode, +void mbedtls_rsa_pkcs1_encrypt( data_t * message_str, int padding_mode, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_hex_str, int result ) + data_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -276,10 +276,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void rsa_pkcs1_encrypt_bad_rng( HexParam_t * message_str, int padding_mode, +void rsa_pkcs1_encrypt_bad_rng( data_t * message_str, int padding_mode, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_hex_str, int result ) + data_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx; @@ -314,11 +314,11 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_pkcs1_decrypt( HexParam_t * message_str, int padding_mode, +void mbedtls_rsa_pkcs1_decrypt( data_t * message_str, int padding_mode, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, char * input_E, - int max_output, HexParam_t * result_hex_str, + int max_output, data_t * result_hex_str, int result ) { unsigned char output[1000]; @@ -363,9 +363,9 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_public( HexParam_t * message_str, int mod, int radix_N, +void mbedtls_rsa_public( data_t * message_str, int mod, int radix_N, char * input_N, int radix_E, char * input_E, - HexParam_t * result_hex_str, int result ) + data_t * result_hex_str, int result ) { unsigned char output[1000]; mbedtls_rsa_context ctx, ctx2; /* Also test mbedtls_rsa_copy() while at it */ @@ -415,10 +415,10 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void mbedtls_rsa_private( HexParam_t * message_str, int mod, int radix_P, +void mbedtls_rsa_private( data_t * message_str, int mod, int radix_P, char * input_P, int radix_Q, char * input_Q, int radix_N, char * input_N, int radix_E, - char * input_E, HexParam_t * result_hex_str, + char * input_E, data_t * result_hex_str, int result ) { unsigned char output[1000]; @@ -1123,9 +1123,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C */ -void mbedtls_rsa_export_raw( HexParam_t *input_N, HexParam_t *input_P, - HexParam_t *input_Q, HexParam_t *input_D, - HexParam_t *input_E, int is_priv, +void mbedtls_rsa_export_raw( data_t *input_N, data_t *input_P, + data_t *input_Q, data_t *input_D, + data_t *input_E, int is_priv, int successive ) { /* Exported buffers */ @@ -1218,9 +1218,9 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CTR_DRBG_C:MBEDTLS_ENTROPY_C:ENTROPY_HAVE_STRONG */ -void mbedtls_rsa_import_raw( HexParam_t *input_N, - HexParam_t *input_P, HexParam_t *input_Q, - HexParam_t *input_D, HexParam_t *input_E, +void mbedtls_rsa_import_raw( data_t *input_N, + data_t *input_P, data_t *input_Q, + data_t *input_D, data_t *input_E, int successive, int is_priv, int res_check, diff --git a/tests/suites/test_suite_shax.function b/tests/suites/test_suite_shax.function index 186fb87c25..147ae0e1ff 100644 --- a/tests/suites/test_suite_shax.function +++ b/tests/suites/test_suite_shax.function @@ -5,7 +5,7 @@ /* END_HEADER */ /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */ -void mbedtls_sha1( HexParam_t * src_str, HexParam_t * hex_hash_string ) +void mbedtls_sha1( data_t * src_str, data_t * hex_hash_string ) { unsigned char output[41]; @@ -19,7 +19,7 @@ void mbedtls_sha1( HexParam_t * src_str, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void sha224( HexParam_t * src_str, HexParam_t * hex_hash_string ) +void sha224( data_t * src_str, data_t * hex_hash_string ) { unsigned char output[57]; @@ -33,7 +33,7 @@ void sha224( HexParam_t * src_str, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */ -void mbedtls_sha256( HexParam_t * src_str, HexParam_t * hex_hash_string ) +void mbedtls_sha256( data_t * src_str, data_t * hex_hash_string ) { unsigned char output[65]; @@ -47,7 +47,7 @@ void mbedtls_sha256( HexParam_t * src_str, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void sha384( HexParam_t * src_str, HexParam_t * hex_hash_string ) +void sha384( data_t * src_str, data_t * hex_hash_string ) { unsigned char output[97]; @@ -61,7 +61,7 @@ void sha384( HexParam_t * src_str, HexParam_t * hex_hash_string ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */ -void mbedtls_sha512( HexParam_t * src_str, HexParam_t * hex_hash_string ) +void mbedtls_sha512( data_t * src_str, data_t * hex_hash_string ) { unsigned char output[129]; diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function index eed518385c..326f22d3b2 100644 --- a/tests/suites/test_suite_ssl.function +++ b/tests/suites/test_suite_ssl.function @@ -9,7 +9,7 @@ */ /* BEGIN_CASE depends_on:MBEDTLS_SSL_DTLS_ANTI_REPLAY */ -void ssl_dtls_replay( HexParam_t * prevs, HexParam_t * new, int ret ) +void ssl_dtls_replay( data_t * prevs, data_t * new, int ret ) { uint32_t len = 0; mbedtls_ssl_context ssl; diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index 2e283087b5..df95f633f6 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -440,7 +440,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C */ -void x509parse_crt( HexParam_t * buf, char * result_str, int result ) +void x509parse_crt( data_t * buf, char * result_str, int result ) { mbedtls_x509_crt crt; unsigned char output[2000]; @@ -467,7 +467,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRL_PARSE_C */ -void x509parse_crl( HexParam_t * buf, char * result_str, int result ) +void x509parse_crl( data_t * buf, char * result_str, int result ) { mbedtls_x509_crl crl; unsigned char output[2000]; @@ -494,7 +494,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CSR_PARSE_C */ -void mbedtls_x509_csr_parse( HexParam_t * csr_der, char * ref_out, int ref_ret ) +void mbedtls_x509_csr_parse( data_t * csr_der, char * ref_out, int ref_ret ) { mbedtls_x509_csr csr; char my_out[1000]; @@ -621,7 +621,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_desc( HexParam_t * buf, char * ref_desc ) +void x509_oid_desc( data_t * buf, char * ref_desc ) { mbedtls_x509_buf oid; const char *desc = NULL; @@ -649,7 +649,7 @@ void x509_oid_desc( HexParam_t * buf, char * ref_desc ) /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_USE_C */ -void x509_oid_numstr( HexParam_t * oid_buf, char * numstr, int blen, int ret ) +void x509_oid_numstr( data_t * oid_buf, char * numstr, int blen, int ret ) { mbedtls_x509_buf oid; char num_buf[100]; @@ -689,7 +689,7 @@ exit: /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE */ -void x509_check_extended_key_usage( char * crt_file, HexParam_t * oid, int ret +void x509_check_extended_key_usage( char * crt_file, data_t * oid, int ret ) { mbedtls_x509_crt crt; @@ -737,7 +737,7 @@ void x509_get_time( int tag, char * time_str, int ret, int year, int mon, /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_X509_CRT_PARSE_C:MBEDTLS_X509_RSASSA_PSS_SUPPORT */ -void x509_parse_rsassa_pss_params( HexParam_t * hex_params, int params_tag, +void x509_parse_rsassa_pss_params( data_t * hex_params, int params_tag, int ref_msg_md, int ref_mgf_md, int ref_salt_len, int ref_ret ) { diff --git a/tests/suites/test_suite_xtea.function b/tests/suites/test_suite_xtea.function index 94c6ff5e12..a24a420657 100644 --- a/tests/suites/test_suite_xtea.function +++ b/tests/suites/test_suite_xtea.function @@ -8,8 +8,8 @@ */ /* BEGIN_CASE */ -void xtea_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void xtea_encrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -25,8 +25,8 @@ void xtea_encrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, /* END_CASE */ /* BEGIN_CASE */ -void xtea_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, - HexParam_t * hex_dst_string ) +void xtea_decrypt_ecb( data_t * key_str, data_t * src_str, + data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -42,8 +42,8 @@ void xtea_decrypt_ecb( HexParam_t * key_str, HexParam_t * src_str, /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void xtea_encrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; @@ -60,8 +60,8 @@ void xtea_encrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, /* END_CASE */ /* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */ -void xtea_decrypt_cbc( HexParam_t * key_str, HexParam_t * iv_str, - HexParam_t * src_str, HexParam_t * hex_dst_string ) +void xtea_decrypt_cbc( data_t * key_str, data_t * iv_str, + data_t * src_str, data_t * hex_dst_string ) { unsigned char output[100]; mbedtls_xtea_context ctx; From 27a35e77120b0fe7eda6fef3266ecbec999b677d Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 12:39:19 +0100 Subject: [PATCH 0751/1100] Wildcard possible targets and document Test application names and function file names can be constructed based on the followed naming convention. This commit documents the naming convention and removes explicit listing of the test executables and the lookup table for finding .function file. --- tests/Makefile | 148 +++++++++---------------------------------------- 1 file changed, 25 insertions(+), 123 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 003d71c512..4d2edd456c 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -53,126 +53,14 @@ ifdef ZLIB LOCAL_LDFLAGS += -lz endif -APPS = test_suite_aes.ecb test_suite_aes.cbc \ - test_suite_aes.cfb test_suite_aes.ofb \ - test_suite_aes.xts \ - test_suite_aes.rest test_suite_arc4 \ - test_suite_aria test_suite_asn1write \ - test_suite_base64 test_suite_blowfish \ - test_suite_camellia test_suite_ccm \ - test_suite_chacha20 test_suite_chachapoly \ - test_suite_aria \ - test_suite_cmac \ - test_suite_cipher.aes \ - test_suite_cipher.arc4 test_suite_cipher.ccm \ - test_suite_cipher.chacha20 \ - test_suite_cipher.gcm \ - test_suite_cipher.blowfish \ - test_suite_cipher.camellia \ - test_suite_cipher.des test_suite_cipher.null \ - test_suite_cipher.padding \ - test_suite_ctr_drbg test_suite_debug \ - test_suite_des test_suite_dhm \ - test_suite_ecdh test_suite_ecdsa \ - test_suite_ecjpake test_suite_ecp \ - test_suite_error test_suite_entropy \ - test_suite_gcm.aes128_de \ - test_suite_gcm.aes192_de \ - test_suite_gcm.aes256_de \ - test_suite_gcm.aes128_en \ - test_suite_gcm.aes192_en \ - test_suite_gcm.aes256_en \ - test_suite_gcm.camellia \ - test_suite_hkdf \ - test_suite_hmac_drbg.misc \ - test_suite_hmac_drbg.no_reseed \ - test_suite_hmac_drbg.nopr \ - test_suite_hmac_drbg.pr \ - test_suite_md test_suite_mdx \ - test_suite_memory_buffer_alloc \ - test_suite_mpi \ - test_suite_pem test_suite_pkcs1_v15 \ - test_suite_pkcs1_v21 test_suite_pkcs5 \ - test_suite_pkparse test_suite_pkwrite \ - test_suite_pk \ - test_suite_rsa test_suite_shax \ - test_suite_ssl test_suite_timing \ - test_suite_x509parse test_suite_x509write \ - test_suite_xtea test_suite_version +# A test application is built for each suites/test_suite_*.data file. +# Application name is same as .data file's base name and can be +# constructed by stripping path 'suites/' and extension .data. +APPS = $(basename $(subst suites/,,$(wildcard suites/test_suite_*.data))) +# Construct executable name by adding OS specific suffix $(EXEXT). BINARIES := $(addsuffix $(EXEXT),$(APPS)) -# Look up for associated function files -func.test_suite_aes.ecb := test_suite_aes -func.test_suite_aes.cbc := test_suite_aes -func.test_suite_aes.cfb := test_suite_aes -func.test_suite_aes.ofb := test_suite_aes -func.test_suite_aes.xts := test_suite_aes -func.test_suite_aes.rest := test_suite_aes -func.test_suite_arc4 := test_suite_arc4 -func.test_suite_aria := test_suite_aria -func.test_suite_asn1write := test_suite_asn1write -func.test_suite_base64 := test_suite_base64 -func.test_suite_blowfish := test_suite_blowfish -func.test_suite_camellia := test_suite_camellia -func.test_suite_ccm := test_suite_ccm -func.test_suite_chacha20 := test_suite_chacha20 -func.test_suite_chachapoly := test_suite_chachapoly -func.test_suite_cmac := test_suite_cmac -func.test_suite_cipher.chachapoly := test_suite_cipher -func.test_suite_cipher.aes := test_suite_cipher -func.test_suite_cipher.arc4 := test_suite_cipher -func.test_suite_cipher.ccm := test_suite_cipher -func.test_suite_cipher.chacha20 := test_suite_cipher -func.test_suite_cipher.gcm := test_suite_cipher -func.test_suite_cipher.blowfish := test_suite_cipher -func.test_suite_cipher.camellia := test_suite_cipher -func.test_suite_cipher.des := test_suite_cipher -func.test_suite_cipher.null := test_suite_cipher -func.test_suite_cipher.padding := test_suite_cipher -func.test_suite_ctr_drbg := test_suite_ctr_drbg -func.test_suite_debug := test_suite_debug -func.test_suite_des := test_suite_des -func.test_suite_dhm := test_suite_dhm -func.test_suite_ecdh := test_suite_ecdh -func.test_suite_ecdsa := test_suite_ecdsa -func.test_suite_ecjpake := test_suite_ecjpake -func.test_suite_ecp := test_suite_ecp -func.test_suite_error := test_suite_error -func.test_suite_entropy := test_suite_entropy -func.test_suite_gcm.aes128_de := test_suite_gcm -func.test_suite_gcm.aes192_de := test_suite_gcm -func.test_suite_gcm.aes256_de := test_suite_gcm -func.test_suite_gcm.aes128_en := test_suite_gcm -func.test_suite_gcm.aes192_en := test_suite_gcm -func.test_suite_gcm.aes256_en := test_suite_gcm -func.test_suite_gcm.camellia := test_suite_gcm -func.test_suite_hkdf := test_suite_hkdf -func.test_suite_hmac_drbg.misc := test_suite_hmac_drbg -func.test_suite_hmac_drbg.no_reseed := test_suite_hmac_drbg -func.test_suite_hmac_drbg.nopr := test_suite_hmac_drbg -func.test_suite_hmac_drbg.pr := test_suite_hmac_drbg -func.test_suite_md := test_suite_md -func.test_suite_mdx := test_suite_mdx -func.test_suite_memory_buffer_alloc := test_suite_memory_buffer_alloc -func.test_suite_mpi := test_suite_mpi -func.test_suite_nist_kw := test_suite_nist_kw -func.test_suite_pem := test_suite_pem -func.test_suite_pkcs1_v15 := test_suite_pkcs1_v15 -func.test_suite_pkcs1_v21 := test_suite_pkcs1_v21 -func.test_suite_pkcs5 := test_suite_pkcs5 -func.test_suite_pkparse := test_suite_pkparse -func.test_suite_pkwrite := test_suite_pkwrite -func.test_suite_pk := test_suite_pk -func.test_suite_rsa := test_suite_rsa -func.test_suite_shax := test_suite_shax -func.test_suite_ssl := test_suite_ssl -func.test_suite_timing := test_suite_timing -func.test_suite_x509parse := test_suite_x509parse -func.test_suite_x509write := test_suite_x509write -func.test_suite_xtea := test_suite_xtea -func.test_suite_version := test_suite_version - .SILENT: .PHONY: all check test clean @@ -182,14 +70,26 @@ all: $(BINARIES) $(DEP): $(MAKE) -C ../library -# invoke perl explicitly for the sake of mingw32-make - C_FILES := $(addsuffix .c,$(APPS)) +# Wildcard target for test code generation: +# A .c file is generated for each .data file in the suites/ directory. Each .c +# file depends on a .data and .function file from suites/ directory. Following +# nameing convention is followed: +# +# C file | Depends on +#----------------------------------------------------------------------------- +# foo.c | suites/foo.function suites/foo.data +# foo.bar.c | suites/foo.function suites/foo.bar.data +# +# Note above that .c and .data files have same base name. +# However, corresponding .function file's base name is the word before first +# dot in .c file's base name. +# .SECONDEXPANSION: -$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function +%.c: suites/$$(firstword $$(subst ., ,$$*)).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function echo " Gen $@" - $(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_test_code.py -f suites/$(firstword $(subst ., ,$*)).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/host_test.function \ @@ -208,8 +108,10 @@ ifndef WINDOWS rm -rf $(APPS) *.c *.datax TESTS else del /Q /F *.c *.exe *.datax +ifneq ($(wildcard TESTS/.*),) rmdir /Q /S TESTS endif +endif check: $(BINARIES) perl scripts/run-test-suites.pl @@ -222,9 +124,9 @@ EMBEDDED_TESTS := $(addprefix embedded_,$(APPS)) # Generate test code for target. .SECONDEXPANSION: -$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function +$(EMBEDDED_TESTS): embedded_%: suites/$$(firstword $$(subst ., ,$$*)).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function echo " Gen ./TESTS/mbedtls/$*/$*.c" - $(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \ + $(PYTHON) scripts/generate_test_code.py -f suites/$(firstword $(subst ., ,$*)).function \ -d suites/$*.data \ -t suites/main_test.function \ -p suites/target_test.function \ From 63ab501aa70912acd7847d2d529fe2c39f4938df Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Fri, 29 Jun 2018 15:00:11 +0100 Subject: [PATCH 0752/1100] Fix generate_test_code.py argument --helpers-file in CMakeLists.txt --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7b66dcfe47..58126bedcf 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,7 +29,7 @@ function(add_test_suite suite_name) add_custom_command( OUTPUT test_suite_${data_name}.c - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --help-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --helpers-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o . DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data ) From aee05bbe70dfdc1a468c0a2788fef62888a04266 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Mon, 2 Jul 2018 16:01:04 +0100 Subject: [PATCH 0753/1100] Add test suite framework summary --- tests/scripts/generate_test_code.py | 151 ++++++++++++++++++++++++++-- 1 file changed, 140 insertions(+), 11 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index c4c11fc391..a9ec566e6f 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -19,18 +19,147 @@ # This file is part of mbed TLS (https://tls.mbed.org) """ -This script dynamically generates test suite code for Mbed TLS, by -taking following input files. +This script is a key part of Mbed TLS test suites framework. For +understanding the script it is important to understand the +framework. This doc string contains a summary of the framework +and explains the function of this script. + +Mbed TLS test suites: +===================== +Scope: +------ +The test suites focus on unit testing the crypto primitives and also +include x509 parser tests. Tests can be added to test any MBED TLS +module. However, the framework is not capable of testing SSL +protocol, since that requires full stack execution and that is best +tested as part of the system test. + +Test case definition: +--------------------- +Tests are defined in a test_suite_[.].data +file. A test definition contains: + test name + optional build macro dependencies + test function + test parameters + +Test dependencies are build macros that can be specified to indicate +the build config in which the test is valid. For example if a test +depends on a feature that is only enabled by defining a macro. Then +that macro should be specified as a dependency of the test. + +Test function is the function that implements the test steps. This +function is specified for different tests that perform same steps +with different parameters. + +Test parameters are specified in string form separated by ':'. +Parameters can be of type string, binary data specified as hex +string and integer constants specified as integer, macro or +as an expression. Following is an example test definition: + +X509 CRL Unsupported critical extension (issuingDistributionPoint) +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_SHA256_C +mbedtls_x509_crl_parse:"data_files/crl-idp.pem":MBEDTLS_ERR_X509_INVALID_EXTENSIONS + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG + +Test functions: +--------------- +Test functions are coded in C in test_suite_.function files. +Functions file is itself not compilable and contains special +format patterns to specify test suite dependencies, start and end +of functions and function dependencies. Check any existing functions +file for example. + +Execution: +---------- +Tests are executed in 3 steps: +- Generating test_suite_[.].c file + for each corresponding .data file. +- Building each source file into executables. +- Running each executable and printing report. + +Generating C test source requires more than just the test functions. +Following extras are required: +- Process main() +- Reading .data file and dispatching test cases. +- Platform specific test case execution +- Dependency checking +- Integer expression evaluation +- Test function dispatch + +Build dependencies and integer expressions (in the test parameters) +are specified as strings in the .data file. Their run time value is +not known at the generation stage. Hence, they need to be translated +into run time evaluations. This script generates the run time checks +for dependencies and integer expressions. + +Similarly, function names have to be translated into function calls. +This script also generates code for function dispatch. + +The extra code mentioned here is either generated by this script +or it comes from the input files: helpers file, platform file and +the template file. + +Helper file: +------------ +Helpers file contains common helper/utility functions and data. + +Platform file: +-------------- +Platform file contains platform specific setup code and test case +dispatch code. For example, host_test.function reads test data +file from host's file system and dispatches tests. +In case of on-target target_test.function tests are not dispatched +on target. Target code is kept minimum and only test functions are +dispatched. Test case dispatch is done on the host using tools like +Greentea. + +Template file: +--------- +Template file for example main_test.function is a template C file in +which generated code and code from input files is substituted to +generate a compilable C file. It also contains skeleton functions for +dependency checks, expression evaluation and function dispatch. These +functions are populated with checks and return codes by this script. + +Template file contains "replacement" fields that are formatted +strings processed by Python str.format() method. + +This script: +============ +Core function of this script is to fill the template file with +code that is generated or read from helpers and platform files. + +This script replaces following fields in the template and generates +the test source file: + +{test_common_helpers} <-- All common code from helpers.function + is substituted here. +{functions_code} <-- Test functions are substituted here + from the input test_suit_xyz.function + file. C preprocessor checks are generated + for the build dependencies specified + in the input file. This script also + generates wrappers for the test + functions with code to expand the + string parameters read from the data + file. +{expression_code} <-- This script enumerates the + expressions in the .data file and + generates code to handle enumerated + expression Ids and return the values. +{dep_check_code} <-- This script enumerates all + build dependencies and generate + code to handle enumerated build + dependency Id and return status: if + the dependency is defined or not. +{dispatch_code} <-- This script enumerates the functions + specified in the input test data file + and generates the initializer for the + function table in the template + file. +{platform_code} <-- Platform specific setup and test + dispatch code. -test_suite_xyz.function - Test suite functions file contains test - functions. -test_suite_xyz.data - Contains test case vectors. -main_test.function - Template to substitute generated test - functions, dispatch code, dependency - checking code etc. -platform .function - Platform specific initialization and - platform code. -helpers.function - Common/reusable data and functions. """ From b31aa44e16d782dfb6cec8f1f5e51e3126f9adcd Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Tue, 3 Jul 2018 11:57:54 +0100 Subject: [PATCH 0754/1100] Fix style errors reported by pylint --- tests/scripts/generate_test_code.py | 525 +++++++++------ tests/scripts/mbedtls_test.py | 187 +++--- tests/scripts/test_generate_test_code.py | 812 +++++++++++++---------- 3 files changed, 883 insertions(+), 641 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index a9ec566e6f..a28a73669d 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -16,7 +16,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This file is part of mbed TLS (https://tls.mbed.org) +# This file is part of Mbed TLS (https://tls.mbed.org) """ This script is a key part of Mbed TLS test suites framework. For @@ -29,7 +29,7 @@ Mbed TLS test suites: Scope: ------ The test suites focus on unit testing the crypto primitives and also -include x509 parser tests. Tests can be added to test any MBED TLS +include x509 parser tests. Tests can be added to test any Mbed TLS module. However, the framework is not capable of testing SSL protocol, since that requires full stack execution and that is best tested as part of the system test. @@ -59,7 +59,8 @@ as an expression. Following is an example test definition: X509 CRL Unsupported critical extension (issuingDistributionPoint) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_SHA256_C -mbedtls_x509_crl_parse:"data_files/crl-idp.pem":MBEDTLS_ERR_X509_INVALID_EXTENSIONS + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG +mbedtls_x509_crl_parse:"data_files/crl-idp.pem":\ + MBEDTLS_ERR_X509_INVALID_EXTENSIONS + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG Test functions: --------------- @@ -170,17 +171,17 @@ import sys import argparse -BEGIN_HEADER_REGEX = '/\*\s*BEGIN_HEADER\s*\*/' -END_HEADER_REGEX = '/\*\s*END_HEADER\s*\*/' +BEGIN_HEADER_REGEX = r'/\*\s*BEGIN_HEADER\s*\*/' +END_HEADER_REGEX = r'/\*\s*END_HEADER\s*\*/' -BEGIN_SUITE_HELPERS_REGEX = '/\*\s*BEGIN_SUITE_HELPERS\s*\*/' -END_SUITE_HELPERS_REGEX = '/\*\s*END_SUITE_HELPERS\s*\*/' +BEGIN_SUITE_HELPERS_REGEX = r'/\*\s*BEGIN_SUITE_HELPERS\s*\*/' +END_SUITE_HELPERS_REGEX = r'/\*\s*END_SUITE_HELPERS\s*\*/' -BEGIN_DEP_REGEX = 'BEGIN_DEPENDENCIES' -END_DEP_REGEX = 'END_DEPENDENCIES' +BEGIN_DEP_REGEX = r'BEGIN_DEPENDENCIES' +END_DEP_REGEX = r'END_DEPENDENCIES' -BEGIN_CASE_REGEX = '/\*\s*BEGIN_CASE\s*(.*?)\s*\*/' -END_CASE_REGEX = '/\*\s*END_CASE\s*\*/' +BEGIN_CASE_REGEX = r'/\*\s*BEGIN_CASE\s*(.*?)\s*\*/' +END_CASE_REGEX = r'/\*\s*END_CASE\s*\*/' class GeneratorInputError(Exception): @@ -192,7 +193,7 @@ class GeneratorInputError(Exception): pass -class FileWrapper(io.FileIO): +class FileWrapper(io.FileIO, object): """ This class extends built-in io.FileIO class with attribute line_no, that indicates line number for the line that is read. @@ -205,9 +206,9 @@ class FileWrapper(io.FileIO): :param file_name: File path to open. """ super(FileWrapper, self).__init__(file_name, 'r') - self.line_no = 0 + self._line_no = 0 - def __next__(self): + def next(self): """ Python 2 iterator method. This method overrides base class's next method and extends the next method to count the line @@ -220,23 +221,31 @@ class FileWrapper(io.FileIO): """ parent = super(FileWrapper, self) if hasattr(parent, '__next__'): - line = parent.__next__() # Python 3 + line = parent.__next__() # Python 3 else: - line = parent.next() # Python 2 - if line: - self.line_no += 1 + line = parent.next() # Python 2 + if line is not None: + self._line_no += 1 # Convert byte array to string with correct encoding and # strip any whitespaces added in the decoding process. return line.decode(sys.getdefaultencoding()).strip() + "\n" return None # Python 3 iterator method - next = __next__ + __next__ = next + + def get_line_no(self): + """ + Gives current line number. + """ + return self._line_no + + line_no = property(get_line_no) def split_dep(dep): """ - Split NOT character '!' from dependency. Used by gen_deps() + Split NOT character '!' from dependency. Used by gen_dependencies() :param dep: Dependency list :return: string tuple. Ex: ('!', MACRO) for !MACRO and ('', MACRO) for @@ -245,7 +254,7 @@ def split_dep(dep): return ('!', dep[1:]) if dep[0] == '!' else ('', dep) -def gen_deps(deps): +def gen_dependencies(dependencies): """ Test suite data and functions specifies compile time dependencies. This function generates C preprocessor code from the input @@ -256,36 +265,39 @@ def gen_deps(deps): function split_dep() and proper preprocessor check is generated accordingly. - :param deps: List of dependencies. + :param dependencies: List of dependencies. :return: if defined and endif code with macro annotations for readability. """ - dep_start = ''.join(['#if %sdefined(%s)\n' % split_dep(x) for x in deps]) - dep_end = ''.join(['#endif /* %s */\n' % x for x in reversed(deps)]) + dep_start = ''.join(['#if %sdefined(%s)\n' % (x, y) for x, y in + map(split_dep, dependencies)]) + dep_end = ''.join(['#endif /* %s */\n' % + x for x in reversed(dependencies)]) return dep_start, dep_end -def gen_deps_one_line(deps): +def gen_dependencies_one_line(dependencies): """ - Similar to gen_deps() but generates dependency checks in one line. + Similar to gen_dependencies() but generates dependency checks in one line. Useful for generating code with #else block. - :param deps: List of dependencies. - :return: ifdef code + :param dependencies: List of dependencies. + :return: Preprocessor check code """ - defines = '#if ' if len(deps) else '' - defines += ' && '.join(['%sdefined(%s)' % split_dep(x) for x in deps]) + defines = '#if ' if dependencies else '' + defines += ' && '.join(['%sdefined(%s)' % (x, y) for x, y in map( + split_dep, dependencies)]) return defines -def gen_function_wrapper(name, locals, args_dispatch): +def gen_function_wrapper(name, local_vars, args_dispatch): """ Creates test function wrapper code. A wrapper has the code to unpack parameters from parameters[] array. :param name: Test function name - :param locals: Local variables declaration code + :param local_vars: Local variables declaration code :param args_dispatch: List of dispatch arguments. Ex: ['(char *)params[0]', '*((int *)params[1])'] :return: Test function wrapper. @@ -300,11 +312,11 @@ void {name}_wrapper( void ** params ) '''.format(name=name, unused_params='' if args_dispatch else ' (void)params;\n', args=', '.join(args_dispatch), - locals=locals) + locals=local_vars) return wrapper -def gen_dispatch(name, deps): +def gen_dispatch(name, dependencies): """ Test suite code template main_test.function defines a C function array to contain test case functions. This function generates an @@ -314,18 +326,18 @@ def gen_dispatch(name, deps): dependencies are met, else NULL is assigned. :param name: Test function name - :param deps: List of dependencies + :param dependencies: List of dependencies :return: Dispatch code. """ - if len(deps): - ifdef = gen_deps_one_line(deps) + if dependencies: + preprocessor_check = gen_dependencies_one_line(dependencies) dispatch_code = ''' -{ifdef} +{preprocessor_check} {name}_wrapper, #else NULL, #endif -'''.format(ifdef=ifdef, name=name) +'''.format(preprocessor_check=preprocessor_check, name=name) else: dispatch_code = ''' {name}_wrapper, @@ -350,12 +362,12 @@ def parse_until_pattern(funcs_f, end_regex): headers += line else: raise GeneratorInputError("file: %s - end pattern [%s] not found!" % - (funcs_f.name, end_regex)) + (funcs_f.name, end_regex)) return headers -def parse_suite_deps(funcs_f): +def parse_suite_dependencies(funcs_f): """ Parses test suite dependencies specified at the top of a .function file, that starts with pattern BEGIN_DEPENDENCIES @@ -365,21 +377,22 @@ def parse_suite_deps(funcs_f): :param funcs_f: file object for .functions file :return: List of test suite dependencies. """ - deps = [] + dependencies = [] for line in funcs_f: - m = re.search('depends_on\:(.*)', line.strip()) - if m: - deps += [x.strip() for x in m.group(1).split(':')] + match = re.search('depends_on:(.*)', line.strip()) + if match: + dependencies += [x.strip() for x in match.group(1).split(':')] if re.search(END_DEP_REGEX, line): break else: raise GeneratorInputError("file: %s - end dependency pattern [%s]" - " not found!" % (funcs_f.name, END_DEP_REGEX)) + " not found!" % (funcs_f.name, + END_DEP_REGEX)) - return deps + return dependencies -def parse_function_deps(line): +def parse_function_dependencies(line): """ Parses function dependencies, that are in the same line as comment BEGIN_CASE. Dependencies are specified after pattern @@ -388,14 +401,15 @@ def parse_function_deps(line): :param line: Line from .functions file that has dependencies. :return: List of dependencies. """ - deps = [] - m = re.search(BEGIN_CASE_REGEX, line) - dep_str = m.group(1) - if len(dep_str): - m = re.search('depends_on:(.*)', dep_str) - if m: - deps = [x.strip() for x in m.group(1).strip().split(':')] - return deps + dependencies = [] + match = re.search(BEGIN_CASE_REGEX, line) + dep_str = match.group(1) + if dep_str: + match = re.search('depends_on:(.*)', dep_str) + if match: + dependencies = [x.strip() + for x in match.group(1).strip().split(':')] + return dependencies def parse_function_signature(line): @@ -410,31 +424,31 @@ def parse_function_signature(line): wrapper function and argument dispatch code. """ args = [] - locals = '' + local_vars = '' args_dispatch = [] # Check if the test function returns void. - m = re.search('\s*void\s+(\w+)\s*\(', line, re.I) - if not m: + match = re.search(r'\s*void\s+(\w+)\s*\(', line, re.I) + if not match: raise ValueError("Test function should return 'void'\n%s" % line) - name = m.group(1) - line = line[len(m.group(0)):] + name = match.group(1) + line = line[len(match.group(0)):] arg_idx = 0 for arg in line[:line.find(')')].split(','): arg = arg.strip() if arg == '': continue - if re.search('int\s+.*', arg.strip()): + if re.search(r'int\s+.*', arg.strip()): args.append('int') args_dispatch.append('*( (int *) params[%d] )' % arg_idx) - elif re.search('char\s*\*\s*.*', arg.strip()): + elif re.search(r'char\s*\*\s*.*', arg.strip()): args.append('char*') args_dispatch.append('(char *) params[%d]' % arg_idx) - elif re.search('data_t\s*\*\s*.*', arg.strip()): + elif re.search(r'data_t\s*\*\s*.*', arg.strip()): args.append('hex') # create a structure pointer_initializer = '(uint8_t *) params[%d]' % arg_idx len_initializer = '*( (uint32_t *) params[%d] )' % (arg_idx+1) - locals += """ data_t data%d = {%s, %s}; + local_vars += """ data_t data%d = {%s, %s}; """ % (arg_idx, pointer_initializer, len_initializer) args_dispatch.append('&data%d' % arg_idx) @@ -444,37 +458,38 @@ def parse_function_signature(line): "'char *' or 'data_t'\n%s" % line) arg_idx += 1 - return name, args, locals, args_dispatch + return name, args, local_vars, args_dispatch -def parse_function_code(funcs_f, deps, suite_deps): +def parse_function_code(funcs_f, dependencies, suite_dependencies): """ Parses out a function from function file object and generates function and dispatch code. :param funcs_f: file object of the functions file. - :param deps: List of dependencies - :param suite_deps: List of test suite dependencies + :param dependencies: List of dependencies + :param suite_dependencies: List of test suite dependencies :return: Function name, arguments, function code and dispatch code. """ code = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) for line in funcs_f: # Check function signature - m = re.match('.*?\s+(\w+)\s*\(', line, re.I) - if m: + match = re.match(r'.*?\s+(\w+)\s*\(', line, re.I) + if match: # check if we have full signature i.e. split in more lines - if not re.match('.*\)', line): + if not re.match(r'.*\)', line): for lin in funcs_f: line += lin - if re.search('.*?\)', line): + if re.search(r'.*?\)', line): break - name, args, locals, args_dispatch = parse_function_signature(line) + name, args, local_vars, args_dispatch = parse_function_signature( + line) code += line.replace(name, 'test_' + name) name = 'test_' + name break else: raise GeneratorInputError("file: %s - Test functions not found!" % - funcs_f.name) + funcs_f.name) for line in funcs_f: if re.search(END_CASE_REGEX, line): @@ -482,20 +497,22 @@ def parse_function_code(funcs_f, deps, suite_deps): code += line else: raise GeneratorInputError("file: %s - end case pattern [%s] not " - "found!" % (funcs_f.name, END_CASE_REGEX)) + "found!" % (funcs_f.name, END_CASE_REGEX)) # Add exit label if not present if code.find('exit:') == -1: - s = code.rsplit('}', 1) - if len(s) == 2: + split_code = code.rsplit('}', 1) + if len(split_code) == 2: code = """exit: ;; -}""".join(s) +}""".join(split_code) - code += gen_function_wrapper(name, locals, args_dispatch) - ifdef, endif = gen_deps(deps) - dispatch_code = gen_dispatch(name, suite_deps + deps) - return name, args, ifdef + code + endif, dispatch_code + code += gen_function_wrapper(name, local_vars, args_dispatch) + preprocessor_check_start, preprocessor_check_end = \ + gen_dependencies(dependencies) + dispatch_code = gen_dispatch(name, suite_dependencies + dependencies) + return (name, args, preprocessor_check_start + code + + preprocessor_check_end, dispatch_code) def parse_functions(funcs_f): @@ -508,9 +525,8 @@ def parse_functions(funcs_f): code, function code and a dict with function identifiers and arguments info. """ - suite_headers = '' suite_helpers = '' - suite_deps = [] + suite_dependencies = [] suite_functions = '' func_info = {} function_idx = 0 @@ -518,62 +534,61 @@ def parse_functions(funcs_f): for line in funcs_f: if re.search(BEGIN_HEADER_REGEX, line): headers = parse_until_pattern(funcs_f, END_HEADER_REGEX) - suite_headers += headers + suite_helpers += headers elif re.search(BEGIN_SUITE_HELPERS_REGEX, line): helpers = parse_until_pattern(funcs_f, END_SUITE_HELPERS_REGEX) suite_helpers += helpers elif re.search(BEGIN_DEP_REGEX, line): - deps = parse_suite_deps(funcs_f) - suite_deps += deps + suite_dependencies += parse_suite_dependencies(funcs_f) elif re.search(BEGIN_CASE_REGEX, line): - deps = parse_function_deps(line) + dependencies = parse_function_dependencies(line) func_name, args, func_code, func_dispatch =\ - parse_function_code(funcs_f, deps, suite_deps) + parse_function_code(funcs_f, dependencies, suite_dependencies) suite_functions += func_code # Generate dispatch code and enumeration info if func_name in func_info: raise GeneratorInputError( - "file: %s - function %s re-declared at line %d" % \ + "file: %s - function %s re-declared at line %d" % (funcs_f.name, func_name, funcs_f.line_no)) func_info[func_name] = (function_idx, args) dispatch_code += '/* Function Id: %d */\n' % function_idx dispatch_code += func_dispatch function_idx += 1 - ifdef, endif = gen_deps(suite_deps) - func_code = ifdef + suite_headers + suite_helpers + suite_functions + endif - return suite_deps, dispatch_code, func_code, func_info + func_code = (suite_helpers + + suite_functions).join(gen_dependencies(suite_dependencies)) + return suite_dependencies, dispatch_code, func_code, func_info -def escaped_split(str, ch): +def escaped_split(inp_str, split_char): """ - Split str on character ch but ignore escaped \{ch} + Split inp_str on character split_char but ignore if escaped. Since, return value is used to write back to the intermediate data file, any escape characters in the input are retained in the output. - :param str: String to split - :param ch: split character + :param inp_str: String to split + :param split_char: split character :return: List of splits """ - if len(ch) > 1: + if len(split_char) > 1: raise ValueError('Expected split character. Found string!') out = [] part = '' escape = False - for i in range(len(str)): - if not escape and str[i] == ch: + for character in inp_str: + if not escape and character == split_char: out.append(part) part = '' else: - part += str[i] - escape = not escape and str[i] == '\\' - if len(part): + part += character + escape = not escape and character == '\\' + if part: out.append(part) return out -def parse_test_data(data_f, debug=False): +def parse_test_data(data_f): """ Parses .data file for each test case name, test function name, test dependencies and test arguments. This information is @@ -587,44 +602,44 @@ def parse_test_data(data_f, debug=False): :return: Generator that yields test name, function name, dependency list and function argument list. """ - STATE_READ_NAME = 0 - STATE_READ_ARGS = 1 - state = STATE_READ_NAME - deps = [] + __state_read_name = 0 + __state_read_args = 1 + state = __state_read_name + dependencies = [] name = '' for line in data_f: line = line.strip() - if len(line) and line[0] == '#': # Skip comments + if line and line[0] == '#': # Skip comments continue # Blank line indicates end of test - if len(line) == 0: - if state == STATE_READ_ARGS: + if not line: + if state == __state_read_args: raise GeneratorInputError("[%s:%d] Newline before arguments. " "Test function and arguments " "missing for %s" % (data_f.name, data_f.line_no, name)) continue - if state == STATE_READ_NAME: + if state == __state_read_name: # Read test name name = line - state = STATE_READ_ARGS - elif state == STATE_READ_ARGS: + state = __state_read_args + elif state == __state_read_args: # Check dependencies - m = re.search('depends_on\:(.*)', line) - if m: - deps = [x.strip() for x in m.group(1).split(':') if len( - x.strip())] + match = re.search('depends_on:(.*)', line) + if match: + dependencies = [x.strip() for x in match.group(1).split(':') + if len(x.strip())] else: # Read test vectors parts = escaped_split(line, ':') - function = parts[0] + test_function = parts[0] args = parts[1:] - yield name, function, deps, args - deps = [] - state = STATE_READ_NAME - if state == STATE_READ_ARGS: + yield name, test_function, dependencies, args + dependencies = [] + state = __state_read_name + if state == __state_read_args: raise GeneratorInputError("[%s:%d] Newline before arguments. " "Test function and arguments missing for " "%s" % (data_f.name, data_f.line_no, name)) @@ -642,19 +657,19 @@ def gen_dep_check(dep_id, dep): if dep_id < 0: raise GeneratorInputError("Dependency Id should be a positive " "integer.") - noT, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) - if len(dep) == 0: + _not, dep = ('!', dep[1:]) if dep[0] == '!' else ('', dep) + if not dep: raise GeneratorInputError("Dependency should not be an empty string.") dep_check = ''' case {id}: {{ -#if {noT}defined({macro}) +#if {_not}defined({macro}) ret = DEPENDENCY_SUPPORTED; #else ret = DEPENDENCY_NOT_SUPPORTED; #endif }} - break;'''.format(noT=noT, macro=dep, id=dep_id) + break;'''.format(_not=_not, macro=dep, id=dep_id) return dep_check @@ -670,7 +685,7 @@ def gen_expression_check(exp_id, exp): if exp_id < 0: raise GeneratorInputError("Expression Id should be a positive " "integer.") - if len(exp) == 0: + if not exp: raise GeneratorInputError("Expression should not be an empty string.") exp_code = ''' case {exp_id}: @@ -681,28 +696,28 @@ def gen_expression_check(exp_id, exp): return exp_code -def write_deps(out_data_f, test_deps, unique_deps): +def write_dependencies(out_data_f, test_dependencies, unique_dependencies): """ Write dependencies to intermediate test data file, replacing the string form with identifiers. Also, generates dependency check code. :param out_data_f: Output intermediate data file - :param test_deps: Dependencies - :param unique_deps: Mutable list to track unique dependencies + :param test_dependencies: Dependencies + :param unique_dependencies: Mutable list to track unique dependencies that are global to this re-entrant function. :return: returns dependency check code. """ dep_check_code = '' - if len(test_deps): + if test_dependencies: out_data_f.write('depends_on') - for dep in test_deps: - if dep not in unique_deps: - unique_deps.append(dep) - dep_id = unique_deps.index(dep) + for dep in test_dependencies: + if dep not in unique_dependencies: + unique_dependencies.append(dep) + dep_id = unique_dependencies.index(dep) dep_check_code += gen_dep_check(dep_id, dep) else: - dep_id = unique_deps.index(dep) + dep_id = unique_dependencies.index(dep) out_data_f.write(':' + str(dep_id)) out_data_f.write('\n') return dep_check_code @@ -722,12 +737,12 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): :return: Returns expression check code. """ expression_code = '' - for i in range(len(test_args)): + for i, _ in enumerate(test_args): typ = func_args[i] val = test_args[i] # check if val is a non literal int val (i.e. an expression) - if typ == 'int' and not re.match('(\d+$)|((0x)?[0-9a-fA-F]+$)', val): + if typ == 'int' and not re.match(r'(\d+$)|((0x)?[0-9a-fA-F]+$)', val): typ = 'exp' if val not in unique_expressions: unique_expressions.append(val) @@ -744,33 +759,33 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): return expression_code -def gen_suite_deps_checks(suite_deps, dep_check_code, expression_code): +def gen_suite_dep_checks(suite_dependencies, dep_check_code, expression_code): """ Generates preprocessor checks for test suite dependencies. - :param suite_deps: Test suite dependencies read from the + :param suite_dependencies: Test suite dependencies read from the .functions file. :param dep_check_code: Dependency check code :param expression_code: Expression check code :return: Dependency and expression code guarded by test suite dependencies. """ - if len(suite_deps): - ifdef = gen_deps_one_line(suite_deps) + if suite_dependencies: + preprocessor_check = gen_dependencies_one_line(suite_dependencies) dep_check_code = ''' -{ifdef} +{preprocessor_check} {code} #endif -'''.format(ifdef=ifdef, code=dep_check_code) +'''.format(preprocessor_check=preprocessor_check, code=dep_check_code) expression_code = ''' -{ifdef} +{preprocessor_check} {code} #endif -'''.format(ifdef=ifdef, code=expression_code) +'''.format(preprocessor_check=preprocessor_check, code=expression_code) return dep_check_code, expression_code -def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): +def gen_from_test_data(data_f, out_data_f, func_info, suite_dependencies): """ This function reads test case name, dependencies and test vectors from the .data file. This information is correlated with the test @@ -785,19 +800,20 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): :param out_data_f:Output intermediate data file :param func_info: Dict keyed by function and with function id and arguments info - :param suite_deps: Test suite deps + :param suite_dependencies: Test suite dependencies :return: Returns dependency and expression check code """ - unique_deps = [] + unique_dependencies = [] unique_expressions = [] dep_check_code = '' expression_code = '' - for test_name, function_name, test_deps, test_args in parse_test_data( - data_f): + for test_name, function_name, test_dependencies, test_args in \ + parse_test_data(data_f): out_data_f.write(test_name + '\n') - # Write deps - dep_check_code += write_deps(out_data_f, test_deps, unique_deps) + # Write dependencies + dep_check_code += write_dependencies(out_data_f, test_dependencies, + unique_dependencies) # Write test function name test_function_name = 'test_' + function_name @@ -810,35 +826,143 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_deps): # Write parameters if len(test_args) != len(func_args): raise GeneratorInputError("Invalid number of arguments in test " - "%s. See function %s signature." % ( - test_name, function_name)) + "%s. See function %s signature." % + (test_name, function_name)) expression_code += write_parameters(out_data_f, test_args, func_args, unique_expressions) # Write a newline as test case separator out_data_f.write('\n') - dep_check_code, expression_code = gen_suite_deps_checks( - suite_deps, dep_check_code, expression_code) + dep_check_code, expression_code = gen_suite_dep_checks( + suite_dependencies, dep_check_code, expression_code) return dep_check_code, expression_code -def generate_code(funcs_file, data_file, template_file, platform_file, - helpers_file, suites_dir, c_file, out_data_file): +def add_input_info(funcs_file, data_file, template_file, + c_file, snippets): """ - Generates C source code from test suite file, data file, common - helpers file and platform file. + Add generator input info in snippets. :param funcs_file: Functions file object :param data_file: Data file object :param template_file: Template file object - :param platform_file: Platform file object - :param helpers_file: Helper functions file object - :param suites_dir: Test suites dir :param c_file: Output C file object - :param out_data_file: Output intermediate data file object + :param snippets: Dictionary to contain code pieces to be + substituted in the template. :return: """ + snippets['test_file'] = c_file + snippets['test_main_file'] = template_file + snippets['test_case_file'] = funcs_file + snippets['test_case_data_file'] = data_file + + +def read_code_from_input_files(platform_file, helpers_file, + out_data_file, snippets): + """ + Read code from input files and create substitutions for replacement + strings in the template file. + + :param platform_file: Platform file object + :param helpers_file: Helper functions file object + :param out_data_file: Output intermediate data file object + :param snippets: Dictionary to contain code pieces to be + substituted in the template. + :return: + """ + # Read helpers + with open(helpers_file, 'r') as help_f, open(platform_file, 'r') as \ + platform_f: + snippets['test_common_helper_file'] = helpers_file + snippets['test_common_helpers'] = help_f.read() + snippets['test_platform_file'] = platform_file + snippets['platform_code'] = platform_f.read().replace( + 'DATA_FILE', out_data_file.replace('\\', '\\\\')) # escape '\' + + +def write_test_source_file(template_file, c_file, snippets): + """ + Write output source file with generated source code. + + :param template_file: Template file name + :param c_file: Output source file + :param snippets: Generated and code snippets + :return: + """ + with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f: + line_no = 1 + for line in template_f.readlines(): + # Update line number. +1 as #line directive sets next line number + snippets['line_no'] = line_no + 1 + code = line.format(**snippets) + c_f.write(code) + line_no += 1 + + +def parse_function_file(funcs_file, snippets): + """ + Parse function file and generate function dispatch code. + + :param funcs_file: Functions file name + :param snippets: Dictionary to contain code pieces to be + substituted in the template. + :return: + """ + with FileWrapper(funcs_file) as funcs_f: + suite_dependencies, dispatch_code, func_code, func_info = \ + parse_functions(funcs_f) + snippets['functions_code'] = func_code + snippets['dispatch_code'] = dispatch_code + return suite_dependencies, func_info + + +def generate_intermediate_data_file(data_file, out_data_file, + suite_dependencies, func_info, snippets): + """ + Generates intermediate data file from input data file and + information read from functions file. + + :param data_file: Data file name + :param out_data_file: Output/Intermediate data file + :param suite_dependencies: List of suite dependencies. + :param func_info: Function info parsed from functions file. + :param snippets: Dictionary to contain code pieces to be + substituted in the template. + :return: + """ + with FileWrapper(data_file) as data_f, \ + open(out_data_file, 'w') as out_data_f: + dep_check_code, expression_code = gen_from_test_data( + data_f, out_data_f, func_info, suite_dependencies) + snippets['dep_check_code'] = dep_check_code + snippets['expression_code'] = expression_code + + +def generate_code(**input_info): + """ + Generates C source code from test suite file, data file, common + helpers file and platform file. + + input_info expands to following parameters: + funcs_file: Functions file object + data_file: Data file object + template_file: Template file object + platform_file: Platform file object + helpers_file: Helper functions file object + suites_dir: Test suites dir + c_file: Output C file object + out_data_file: Output intermediate data file object + :return: + """ + funcs_file = input_info['funcs_file'] + data_file = input_info['data_file'] + template_file = input_info['template_file'] + platform_file = input_info['platform_file'] + helpers_file = input_info['helpers_file'] + suites_dir = input_info['suites_dir'] + c_file = input_info['c_file'] + out_data_file = input_info['out_data_file'] for name, path in [('Functions file', funcs_file), ('Data file', data_file), ('Template file', template_file), @@ -848,44 +972,15 @@ def generate_code(funcs_file, data_file, template_file, platform_file, if not os.path.exists(path): raise IOError("ERROR: %s [%s] not found!" % (name, path)) - snippets = {'generator_script' : os.path.basename(__file__)} - - # Read helpers - with open(helpers_file, 'r') as help_f, open(platform_file, 'r') as \ - platform_f: - snippets['test_common_helper_file'] = helpers_file - snippets['test_common_helpers'] = help_f.read() - snippets['test_platform_file'] = platform_file - snippets['platform_code'] = platform_f.read().replace( - 'DATA_FILE', out_data_file.replace('\\', '\\\\')) # escape '\' - - # Function code - with FileWrapper(funcs_file) as funcs_f, FileWrapper(data_file) as \ - data_f, open(out_data_file, 'w') as out_data_f: - suite_deps, dispatch_code, func_code, func_info = parse_functions( - funcs_f) - snippets['functions_code'] = func_code - snippets['dispatch_code'] = dispatch_code - dep_check_code, expression_code = gen_from_test_data( - data_f, out_data_f, func_info, suite_deps) - snippets['dep_check_code'] = dep_check_code - snippets['expression_code'] = expression_code - - snippets['test_file'] = c_file - snippets['test_main_file'] = template_file - snippets['test_case_file'] = funcs_file - snippets['test_case_data_file'] = data_file - # Read Template - # Add functions - # - with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f: - line_no = 1 - for line in template_f.readlines(): - # Update line number. +1 as #line directive sets next line number - snippets['line_no'] = line_no + 1 - code = line.format(**snippets) - c_f.write(code) - line_no += 1 + snippets = {'generator_script': os.path.basename(__file__)} + read_code_from_input_files(platform_file, helpers_file, + out_data_file, snippets) + add_input_info(funcs_file, data_file, template_file, + c_file, snippets) + suite_dependencies, func_info = parse_function_file(funcs_file, snippets) + generate_intermediate_data_file(data_file, out_data_file, + suite_dependencies, func_info, snippets) + write_test_source_file(template_file, c_file, snippets) def check_cmd(): @@ -949,18 +1044,20 @@ def check_cmd(): out_c_file_dir = os.path.dirname(out_c_file) out_data_file_dir = os.path.dirname(out_data_file) - for d in [out_c_file_dir, out_data_file_dir]: - if not os.path.exists(d): - os.makedirs(d) + for directory in [out_c_file_dir, out_data_file_dir]: + if not os.path.exists(directory): + os.makedirs(directory) - generate_code(args.funcs_file, args.data_file, args.template_file, - args.platform_file, args.helpers_file, args.suites_dir, - out_c_file, out_data_file) + generate_code(funcs_file=args.funcs_file, data_file=args.data_file, + template_file=args.template_file, + platform_file=args.platform_file, + helpers_file=args.helpers_file, suites_dir=args.suites_dir, + c_file=out_c_file, out_data_file=out_data_file) if __name__ == "__main__": try: check_cmd() - except GeneratorInputError as e: - script_name = os.path.basename(sys.argv[0]) - print("%s: input error: %s" % (script_name, str(e))) + except GeneratorInputError as err: + print("%s: input error: %s" % + (os.path.basename(sys.argv[0]), str(err))) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index c3b1b7a3f8..8fd72613eb 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -15,18 +15,18 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This file is part of mbed TLS (https://tls.mbed.org) +# This file is part of Mbed TLS (https://tls.mbed.org) """ -Mbed TLS on-target test suite tests are implemented as mbed-os greentea +Mbed TLS on-target test suite tests are implemented as mbed-os Greentea tests. Greentea tests are implemented in two parts: target test and host test. Target test is a C application that is built for the target platform and executes on the target. Host test is a Python class derived from mbed_host_tests.BaseHostTest. Target communicates with the host over serial for the test data. -Python tool mbedgt (greentea) is responsible for flashing the test +Python tool mbedgt (Greentea) is responsible for flashing the test binary on to the target and dynamically loading the host test. This script contains the host test for handling target test's @@ -64,67 +64,69 @@ class TestDataParser(object): :param data_file: Data file path """ - with open(data_file, 'r') as f: - self.__parse(f) + with open(data_file, 'r') as data_f: + self.__parse(data_f) @staticmethod - def __escaped_split(str, ch): + def __escaped_split(inp_str, split_char): """ - Splits str on ch except when escaped. + Splits inp_str on split_char except when escaped. - :param str: String to split - :param ch: Split character + :param inp_str: String to split + :param split_char: Split character :return: List of splits """ - if len(ch) > 1: + if len(split_char) > 1: raise ValueError('Expected split character. Found string!') out = [] part = '' escape = False - for i in range(len(str)): - if not escape and str[i] == ch: + for character in inp_str: + if not escape and character == split_char: out.append(part) part = '' else: - part += str[i] - escape = not escape and str[i] == '\\' - if len(part): + part += character + escape = not escape and character == '\\' + if part: out.append(part) return out - def __parse(self, file): + def __parse(self, data_f): """ Parses data file using supplied file object. - :param file: Data file object + :param data_f: Data file object :return: """ - for line in file: + for line in data_f: line = line.strip() - if len(line) == 0: + if not line: continue # Read test name name = line # Check dependencies - deps = [] - line = file.next().strip() - m = re.search('depends_on\:(.*)', line) - if m: - deps = [int(x) for x in m.group(1).split(':')] - line = file.next().strip() + dependencies = [] + line = data_f.next().strip() + match = re.search('depends_on:(.*)', line) + if match: + dependencies = [int(x) for x in match.group(1).split(':')] + line = data_f.next().strip() # Read test vectors line = line.replace('\\n', '\n') parts = self.__escaped_split(line, ':') - function = int(parts[0]) - x = parts[1:] - l = len(x) - if l % 2 != 0: + function_name = int(parts[0]) + args = parts[1:] + args_count = len(args) + if args_count % 2 != 0: raise TestDataParserError("Number of test arguments should " "be even: %s" % line) - args = [(x[i * 2], x[(i * 2) + 1]) for i in range(len(x)/2)] - self.tests.append((name, function, deps, args)) + grouped_args = [(args[i * 2], args[(i * 2) + 1]) + for i in range(len(args)/2)] + self.tests.append((name, function_name, dependencies, + grouped_args)) def get_test_data(self): """ @@ -135,8 +137,8 @@ class TestDataParser(object): class MbedTlsTest(BaseHostTest): """ - Host test for mbedtls unit tests. This script is loaded at - run time by Greentea for executing mbedtls test suites. Each + Host test for Mbed TLS unit tests. This script is loaded at + run time by Greentea for executing Mbed TLS test suites. Each communication from the target is received in this object as an event, which is then handled by the event handler method decorated by the associated event. Ex: @event_callback('GO'). @@ -144,7 +146,7 @@ class MbedTlsTest(BaseHostTest): Target test sends requests for dispatching next test. It reads tests from the intermediate data file and sends test function identifier, dependency identifiers, expression identifiers and - the test data in binary form. Target test checks dependecnies + the test data in binary form. Target test checks dependencies , evaluate integer constant expressions and dispatches the test function with received test parameters. @@ -169,12 +171,18 @@ class MbedTlsTest(BaseHostTest): self.test_index = -1 self.dep_index = 0 self.error_str = dict() - self.error_str[self.DEPENDENCY_SUPPORTED] = 'DEPENDENCY_SUPPORTED' - self.error_str[self.KEY_VALUE_MAPPING_NOT_FOUND] = 'KEY_VALUE_MAPPING_NOT_FOUND' - self.error_str[self.DEPENDENCY_NOT_SUPPORTED] = 'DEPENDENCY_NOT_SUPPORTED' - self.error_str[self.DISPATCH_TEST_FN_NOT_FOUND] = 'DISPATCH_TEST_FN_NOT_FOUND' - self.error_str[self.DISPATCH_INVALID_TEST_DATA] = 'DISPATCH_INVALID_TEST_DATA' - self.error_str[self.DISPATCH_UNSUPPORTED_SUITE] = 'DISPATCH_UNSUPPORTED_SUITE' + self.error_str[self.DEPENDENCY_SUPPORTED] = \ + 'DEPENDENCY_SUPPORTED' + self.error_str[self.KEY_VALUE_MAPPING_NOT_FOUND] = \ + 'KEY_VALUE_MAPPING_NOT_FOUND' + self.error_str[self.DEPENDENCY_NOT_SUPPORTED] = \ + 'DEPENDENCY_NOT_SUPPORTED' + self.error_str[self.DISPATCH_TEST_FN_NOT_FOUND] = \ + 'DISPATCH_TEST_FN_NOT_FOUND' + self.error_str[self.DISPATCH_INVALID_TEST_DATA] = \ + 'DISPATCH_INVALID_TEST_DATA' + self.error_str[self.DISPATCH_UNSUPPORTED_SUITE] = \ + 'DISPATCH_UNSUPPORTED_SUITE' def setup(self): """ @@ -206,13 +214,13 @@ class MbedTlsTest(BaseHostTest): self.log('{{__testcase_name;%s}}' % name) @staticmethod - def align_32bit(b): + def align_32bit(data_bytes): """ 4 byte aligns input byte array. :return: """ - b += bytearray((4 - (len(b))) % 4) + data_bytes += bytearray((4 - (len(data_bytes))) % 4) @staticmethod def hex_str_bytes(hex_str): @@ -230,56 +238,56 @@ class MbedTlsTest(BaseHostTest): raise TestDataParserError("HEX parameter len should be mod of " "2: %s" % hex_str) - b = binascii.unhexlify(hex_str) - return b + data_bytes = binascii.unhexlify(hex_str) + return data_bytes @staticmethod - def int32_to_bigendian_bytes(i): + def int32_to_big_endian_bytes(i): """ - Coverts i to bytearray in big endian format. + Coverts i to byte array in big endian format. :param i: Input integer :return: Output bytes array in big endian or network order """ - b = bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) - return b + data_bytes = bytearray([((i >> x) & 0xff) for x in [24, 16, 8, 0]]) + return data_bytes - def test_vector_to_bytes(self, function_id, deps, parameters): + def test_vector_to_bytes(self, function_id, dependencies, parameters): """ Converts test vector into a byte array that can be sent to the target. :param function_id: Test Function Identifier - :param deps: Dependency list + :param dependencies: Dependency list :param parameters: Test function input parameters :return: Byte array and its length """ - b = bytearray([len(deps)]) - if len(deps): - b += bytearray(deps) - b += bytearray([function_id, len(parameters)]) + data_bytes = bytearray([len(dependencies)]) + if dependencies: + data_bytes += bytearray(dependencies) + data_bytes += bytearray([function_id, len(parameters)]) for typ, param in parameters: if typ == 'int' or typ == 'exp': i = int(param) - b += 'I' if typ == 'int' else 'E' - self.align_32bit(b) - b += self.int32_to_bigendian_bytes(i) + data_bytes += 'I' if typ == 'int' else 'E' + self.align_32bit(data_bytes) + data_bytes += self.int32_to_big_endian_bytes(i) elif typ == 'char*': param = param.strip('"') i = len(param) + 1 # + 1 for null termination - b += 'S' - self.align_32bit(b) - b += self.int32_to_bigendian_bytes(i) - b += bytearray(list(param)) - b += '\0' # Null terminate + data_bytes += 'S' + self.align_32bit(data_bytes) + data_bytes += self.int32_to_big_endian_bytes(i) + data_bytes += bytearray(list(param)) + data_bytes += '\0' # Null terminate elif typ == 'hex': - hb = self.hex_str_bytes(param) - b += 'H' - self.align_32bit(b) - i = len(hb) - b += self.int32_to_bigendian_bytes(i) - b += hb - length = self.int32_to_bigendian_bytes(len(b)) - return b, length + binary_data = self.hex_str_bytes(param) + data_bytes += 'H' + self.align_32bit(data_bytes) + i = len(binary_data) + data_bytes += self.int32_to_big_endian_bytes(i) + data_bytes += binary_data + length = self.int32_to_big_endian_bytes(len(data_bytes)) + return data_bytes, length def run_next_test(self): """ @@ -289,25 +297,26 @@ class MbedTlsTest(BaseHostTest): self.test_index += 1 self.dep_index = 0 if self.test_index < len(self.tests): - name, function_id, deps, args = self.tests[self.test_index] - self.run_test(name, function_id, deps, args) + name, function_id, dependencies, args = self.tests[self.test_index] + self.run_test(name, function_id, dependencies, args) else: self.notify_complete(True) - def run_test(self, name, function_id, deps, args): + def run_test(self, name, function_id, dependencies, args): """ Execute the test on target by sending next test information. :param name: Test name :param function_id: function identifier - :param deps: Dependencies list + :param dependencies: Dependencies list :param args: test parameters :return: """ self.log("Running: %s" % name) - bytes, length = self.test_vector_to_bytes(function_id, deps, args) - self.send_kv(length, bytes) + param_bytes, length = self.test_vector_to_bytes(function_id, + dependencies, args) + self.send_kv(length, param_bytes) @staticmethod def get_result(value): @@ -319,52 +328,52 @@ class MbedTlsTest(BaseHostTest): try: return int(value) except ValueError: - ValueError("Result should return error number. Instead received %s" % value) + ValueError("Result should return error number. " + "Instead received %s" % value) return 0 @event_callback('GO') - def on_go(self, key, value, timestamp): + def on_go(self, _key, _value, _timestamp): """ Sent by the target to start first test. - :param key: Event key - :param value: Value. ignored - :param timestamp: Timestamp ignored. + :param _key: Event key + :param _value: Value. ignored + :param _timestamp: Timestamp ignored. :return: """ self.run_next_test() @event_callback("R") - def on_result(self, key, value, timestamp): + def on_result(self, _key, value, _timestamp): """ Handle result. Prints test start, finish required by Greentea to detect test execution. - :param key: Event key + :param _key: Event key :param value: Value. ignored - :param timestamp: Timestamp ignored. + :param _timestamp: Timestamp ignored. :return: """ int_val = self.get_result(value) - name, function, deps, args = self.tests[self.test_index] + name, _, _, _ = self.tests[self.test_index] self.log('{{__testcase_start;%s}}' % name) self.log('{{__testcase_finish;%s;%d;%d}}' % (name, int_val == 0, int_val != 0)) self.run_next_test() @event_callback("F") - def on_failure(self, key, value, timestamp): + def on_failure(self, _key, value, _timestamp): """ Handles test execution failure. That means dependency not supported or Test function not supported. Hence marking test as skipped. - :param key: Event key + :param _key: Event key :param value: Value. ignored - :param timestamp: Timestamp ignored. + :param _timestamp: Timestamp ignored. :return: """ int_val = self.get_result(value) - name, function, deps, args = self.tests[self.test_index] if int_val in self.error_str: err = self.error_str[int_val] else: diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index f1088a32a8..f0a935d202 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Unit test for generate_test_code.py # # Copyright (C) 2018, ARM Limited, All Rights Reserved @@ -16,143 +16,184 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# This file is part of mbed TLS (https://tls.mbed.org) - -from StringIO import StringIO -from unittest import TestCase, main as unittest_main -from mock import patch -from generate_test_code import * - +# This file is part of Mbed TLS (https://tls.mbed.org) """ Unit tests for generate_test_code.py """ +import sys +from StringIO import StringIO +from unittest import TestCase, main as unittest_main +from mock import patch +from generate_test_code import gen_dependencies, gen_dependencies_one_line +from generate_test_code import gen_function_wrapper, gen_dispatch +from generate_test_code import parse_until_pattern, GeneratorInputError +from generate_test_code import parse_suite_dependencies +from generate_test_code import parse_function_dependencies +from generate_test_code import parse_function_signature, parse_function_code +from generate_test_code import parse_functions, END_HEADER_REGEX +from generate_test_code import END_SUITE_HELPERS_REGEX, escaped_split +from generate_test_code import parse_test_data, gen_dep_check +from generate_test_code import gen_expression_check, write_dependencies +from generate_test_code import write_parameters, gen_suite_dep_checks +from generate_test_code import gen_from_test_data + + class GenDep(TestCase): """ Test suite for function gen_dep() """ - def test_deps_list(self): + def test_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['DEP1', 'DEP2'] - dep_start, dep_end = gen_deps(deps) - ifdef1, ifdef2 = dep_start.splitlines() + dependencies = ['DEP1', 'DEP2'] + dep_start, dep_end = gen_dependencies(dependencies) + preprocessor1, preprocessor2 = dep_start.splitlines() endif1, endif2 = dep_end.splitlines() - self.assertEqual(ifdef1, '#if defined(DEP1)', 'ifdef generated incorrectly') - self.assertEqual(ifdef2, '#if defined(DEP2)', 'ifdef generated incorrectly') - self.assertEqual(endif1, '#endif /* DEP2 */', 'endif generated incorrectly') - self.assertEqual(endif2, '#endif /* DEP1 */', 'endif generated incorrectly') + self.assertEqual(preprocessor1, '#if defined(DEP1)', + 'Preprocessor generated incorrectly') + self.assertEqual(preprocessor2, '#if defined(DEP2)', + 'Preprocessor generated incorrectly') + self.assertEqual(endif1, '#endif /* DEP2 */', + 'Preprocessor generated incorrectly') + self.assertEqual(endif2, '#endif /* DEP1 */', + 'Preprocessor generated incorrectly') - def test_disabled_deps_list(self): + def test_disabled_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['!DEP1', '!DEP2'] - dep_start, dep_end = gen_deps(deps) - ifdef1, ifdef2 = dep_start.splitlines() + dependencies = ['!DEP1', '!DEP2'] + dep_start, dep_end = gen_dependencies(dependencies) + preprocessor1, preprocessor2 = dep_start.splitlines() endif1, endif2 = dep_end.splitlines() - self.assertEqual(ifdef1, '#if !defined(DEP1)', 'ifdef generated incorrectly') - self.assertEqual(ifdef2, '#if !defined(DEP2)', 'ifdef generated incorrectly') - self.assertEqual(endif1, '#endif /* !DEP2 */', 'endif generated incorrectly') - self.assertEqual(endif2, '#endif /* !DEP1 */', 'endif generated incorrectly') + self.assertEqual(preprocessor1, '#if !defined(DEP1)', + 'Preprocessor generated incorrectly') + self.assertEqual(preprocessor2, '#if !defined(DEP2)', + 'Preprocessor generated incorrectly') + self.assertEqual(endif1, '#endif /* !DEP2 */', + 'Preprocessor generated incorrectly') + self.assertEqual(endif2, '#endif /* !DEP1 */', + 'Preprocessor generated incorrectly') - def test_mixed_deps_list(self): + def test_mixed_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['!DEP1', 'DEP2'] - dep_start, dep_end = gen_deps(deps) - ifdef1, ifdef2 = dep_start.splitlines() + dependencies = ['!DEP1', 'DEP2'] + dep_start, dep_end = gen_dependencies(dependencies) + preprocessor1, preprocessor2 = dep_start.splitlines() endif1, endif2 = dep_end.splitlines() - self.assertEqual(ifdef1, '#if !defined(DEP1)', 'ifdef generated incorrectly') - self.assertEqual(ifdef2, '#if defined(DEP2)', 'ifdef generated incorrectly') - self.assertEqual(endif1, '#endif /* DEP2 */', 'endif generated incorrectly') - self.assertEqual(endif2, '#endif /* !DEP1 */', 'endif generated incorrectly') + self.assertEqual(preprocessor1, '#if !defined(DEP1)', + 'Preprocessor generated incorrectly') + self.assertEqual(preprocessor2, '#if defined(DEP2)', + 'Preprocessor generated incorrectly') + self.assertEqual(endif1, '#endif /* DEP2 */', + 'Preprocessor generated incorrectly') + self.assertEqual(endif2, '#endif /* !DEP1 */', + 'Preprocessor generated incorrectly') - def test_empty_deps_list(self): + def test_empty_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = [] - dep_start, dep_end = gen_deps(deps) - self.assertEqual(dep_start, '', 'ifdef generated incorrectly') - self.assertEqual(dep_end, '', 'ifdef generated incorrectly') + dependencies = [] + dep_start, dep_end = gen_dependencies(dependencies) + self.assertEqual(dep_start, '', 'Preprocessor generated incorrectly') + self.assertEqual(dep_end, '', 'Preprocessor generated incorrectly') - def test_large_deps_list(self): + def test_large_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = [] + dependencies = [] count = 10 for i in range(count): - deps.append('DEP%d' % i) - dep_start, dep_end = gen_deps(deps) - self.assertEqual(len(dep_start.splitlines()), count, 'ifdef generated incorrectly') - self.assertEqual(len(dep_end.splitlines()), count, 'ifdef generated incorrectly') + dependencies.append('DEP%d' % i) + dep_start, dep_end = gen_dependencies(dependencies) + self.assertEqual(len(dep_start.splitlines()), count, + 'Preprocessor generated incorrectly') + self.assertEqual(len(dep_end.splitlines()), count, + 'Preprocessor generated incorrectly') class GenDepOneLine(TestCase): """ - Test Suite for testing gen_deps_one_line() + Test Suite for testing gen_dependencies_one_line() """ - def test_deps_list(self): + def test_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['DEP1', 'DEP2'] - dep_str = gen_deps_one_line(deps) - self.assertEqual(dep_str, '#if defined(DEP1) && defined(DEP2)', 'ifdef generated incorrectly') + dependencies = ['DEP1', 'DEP2'] + dep_str = gen_dependencies_one_line(dependencies) + self.assertEqual(dep_str, '#if defined(DEP1) && defined(DEP2)', + 'Preprocessor generated incorrectly') - def test_disabled_deps_list(self): + def test_disabled_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['!DEP1', '!DEP2'] - dep_str = gen_deps_one_line(deps) - self.assertEqual(dep_str, '#if !defined(DEP1) && !defined(DEP2)', 'ifdef generated incorrectly') + dependencies = ['!DEP1', '!DEP2'] + dep_str = gen_dependencies_one_line(dependencies) + self.assertEqual(dep_str, '#if !defined(DEP1) && !defined(DEP2)', + 'Preprocessor generated incorrectly') - def test_mixed_deps_list(self): + def test_mixed_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = ['!DEP1', 'DEP2'] - dep_str = gen_deps_one_line(deps) - self.assertEqual(dep_str, '#if !defined(DEP1) && defined(DEP2)', 'ifdef generated incorrectly') + dependencies = ['!DEP1', 'DEP2'] + dep_str = gen_dependencies_one_line(dependencies) + self.assertEqual(dep_str, '#if !defined(DEP1) && defined(DEP2)', + 'Preprocessor generated incorrectly') - def test_empty_deps_list(self): + def test_empty_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = [] - dep_str = gen_deps_one_line(deps) - self.assertEqual(dep_str, '', 'ifdef generated incorrectly') + dependencies = [] + dep_str = gen_dependencies_one_line(dependencies) + self.assertEqual(dep_str, '', 'Preprocessor generated incorrectly') - def test_large_deps_list(self): + def test_large_dependencies_list(self): """ - Test that gen_dep() correctly creates deps for given dependency list. + Test that gen_dep() correctly creates dependencies for given + dependency list. :return: """ - deps = [] + dependencies = [] count = 10 for i in range(count): - deps.append('DEP%d' % i) - dep_str = gen_deps_one_line(deps) - expected = '#if ' + ' && '.join(['defined(%s)' % x for x in deps]) - self.assertEqual(dep_str, expected, 'ifdef generated incorrectly') + dependencies.append('DEP%d' % i) + dep_str = gen_dependencies_one_line(dependencies) + expected = '#if ' + ' && '.join(['defined(%s)' % + x for x in dependencies]) + self.assertEqual(dep_str, expected, + 'Preprocessor generated incorrectly') class GenFunctionWrapper(TestCase): @@ -182,7 +223,8 @@ void test_a_wrapper( void ** params ) :return: """ - code = gen_function_wrapper('test_a', 'int x = 1;', ('x', 'b', 'c', 'd')) + code = gen_function_wrapper('test_a', + 'int x = 1;', ('x', 'b', 'c', 'd')) expected = ''' void test_a_wrapper( void ** params ) { @@ -230,7 +272,7 @@ class GenDispatch(TestCase): ''' self.assertEqual(code, expected) - def test_empty_deps(self): + def test_empty_dependencies(self): """ Test empty dependency list. :return: @@ -246,7 +288,7 @@ class StringIOWrapper(StringIO, object): """ file like class to mock file object in tests. """ - def __init__(self, file_name, data, line_no = 1): + def __init__(self, file_name, data, line_no=1): """ Init file handle. @@ -260,17 +302,28 @@ class StringIOWrapper(StringIO, object): def next(self): """ - Iterator return impl. - :return: - """ - line = super(StringIOWrapper, self).next() - return line + Iterator method. This method overrides base class's + next method and extends the next method to count the line + numbers as each line is read. - def readline(self, limit=0): + :return: Line read from file. + """ + parent = super(StringIOWrapper, self) + line = parent.next() # Python 2 + if line: + self.line_no += 1 + # Convert byte array to string with correct encoding and + # strip any whitespaces added in the decoding process. + return line.decode(sys.getdefaultencoding()).strip() + "\n" + return None + + __next__ = next + + def readline(self, length=0): """ Wrap the base class readline. - :param limit: + :param length: :return: """ line = super(StringIOWrapper, self).readline() @@ -300,8 +353,8 @@ class ParseUntilPattern(TestCase): #define ECP_PF_UNKNOWN -1 ''' - s = StringIOWrapper('test_suite_ut.function', data, line_no=0) - headers = parse_until_pattern(s, END_HEADER_REGEX) + stream = StringIOWrapper('test_suite_ut.function', data, line_no=0) + headers = parse_until_pattern(stream, END_HEADER_REGEX) self.assertEqual(headers, expected) def test_line_no(self): @@ -321,13 +374,15 @@ class ParseUntilPattern(TestCase): #define ECP_PF_UNKNOWN -1 ''' % (offset_line_no + 1) - s = StringIOWrapper('test_suite_ut.function', data, offset_line_no) - headers = parse_until_pattern(s, END_HEADER_REGEX) + stream = StringIOWrapper('test_suite_ut.function', data, + offset_line_no) + headers = parse_until_pattern(stream, END_HEADER_REGEX) self.assertEqual(headers, expected) def test_no_end_header_comment(self): """ - Test that InvalidFileFormat is raised when end header comment is missing. + Test that InvalidFileFormat is raised when end header comment is + missing. :return: """ data = '''#include "mbedtls/ecp.h" @@ -335,16 +390,17 @@ class ParseUntilPattern(TestCase): #define ECP_PF_UNKNOWN -1 ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_until_pattern, s, END_HEADER_REGEX) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_until_pattern, stream, + END_HEADER_REGEX) -class ParseSuiteDeps(TestCase): +class ParseSuiteDependencies(TestCase): """ - Test Suite for testing parse_suite_deps(). + Test Suite for testing parse_suite_dependencies(). """ - def test_suite_deps(self): + def test_suite_dependencies(self): """ :return: @@ -355,9 +411,9 @@ class ParseSuiteDeps(TestCase): */ ''' expected = ['MBEDTLS_ECP_C'] - s = StringIOWrapper('test_suite_ut.function', data) - deps = parse_suite_deps(s) - self.assertEqual(deps, expected) + stream = StringIOWrapper('test_suite_ut.function', data) + dependencies = parse_suite_dependencies(stream) + self.assertEqual(dependencies, expected) def test_no_end_dep_comment(self): """ @@ -367,10 +423,11 @@ class ParseSuiteDeps(TestCase): data = ''' * depends_on:MBEDTLS_ECP_C ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_suite_deps, s) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_suite_dependencies, + stream) - def test_deps_split(self): + def test_dependencies_split(self): """ Test that InvalidFileFormat is raised when end dep comment is missing. :return: @@ -381,43 +438,47 @@ class ParseSuiteDeps(TestCase): */ ''' expected = ['MBEDTLS_ECP_C', 'A', 'B', 'C', 'D', 'F', 'G', '!H'] - s = StringIOWrapper('test_suite_ut.function', data) - deps = parse_suite_deps(s) - self.assertEqual(deps, expected) + stream = StringIOWrapper('test_suite_ut.function', data) + dependencies = parse_suite_dependencies(stream) + self.assertEqual(dependencies, expected) -class ParseFuncDeps(TestCase): +class ParseFuncDependencies(TestCase): """ - Test Suite for testing parse_function_deps() + Test Suite for testing parse_function_dependencies() """ - def test_function_deps(self): + def test_function_dependencies(self): """ - Test that parse_function_deps() correctly parses function dependencies. + Test that parse_function_dependencies() correctly parses function + dependencies. :return: """ - line = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */' + line = '/* BEGIN_CASE ' \ + 'depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */' expected = ['MBEDTLS_ENTROPY_NV_SEED', 'MBEDTLS_FS_IO'] - deps = parse_function_deps(line) - self.assertEqual(deps, expected) + dependencies = parse_function_dependencies(line) + self.assertEqual(dependencies, expected) - def test_no_deps(self): + def test_no_dependencies(self): """ - Test that parse_function_deps() correctly parses function dependencies. + Test that parse_function_dependencies() correctly parses function + dependencies. :return: """ line = '/* BEGIN_CASE */' - deps = parse_function_deps(line) - self.assertEqual(deps, []) + dependencies = parse_function_dependencies(line) + self.assertEqual(dependencies, []) - def test_poorly_defined_deps(self): + def test_tolerance(self): """ - Test that parse_function_deps() correctly parses function dependencies. + Test that parse_function_dependencies() correctly parses function + dependencies. :return: """ line = '/* BEGIN_CASE depends_on:MBEDTLS_FS_IO: A : !B:C : F*/' - deps = parse_function_deps(line) - self.assertEqual(deps, ['MBEDTLS_FS_IO', 'A', '!B', 'C', 'F']) + dependencies = parse_function_dependencies(line) + self.assertEqual(dependencies, ['MBEDTLS_FS_IO', 'A', '!B', 'C', 'F']) class ParseFuncSignature(TestCase): @@ -435,7 +496,9 @@ class ParseFuncSignature(TestCase): self.assertEqual(name, 'entropy_threshold') self.assertEqual(args, ['char*', 'int', 'int']) self.assertEqual(local, '') - self.assertEqual(arg_dispatch, ['(char *) params[0]', '*( (int *) params[1] )', '*( (int *) params[2] )']) + self.assertEqual(arg_dispatch, ['(char *) params[0]', + '*( (int *) params[1] )', + '*( (int *) params[2] )']) def test_hex_params(self): """ @@ -446,8 +509,12 @@ class ParseFuncSignature(TestCase): name, args, local, arg_dispatch = parse_function_signature(line) self.assertEqual(name, 'entropy_threshold') self.assertEqual(args, ['char*', 'hex', 'int']) - self.assertEqual(local, ' data_t hex1 = {(uint8_t *) params[1], *( (uint32_t *) params[2] )};\n') - self.assertEqual(arg_dispatch, ['(char *) params[0]', '&hex1', '*( (int *) params[3] )']) + self.assertEqual(local, + ' data_t hex1 = {(uint8_t *) params[1], ' + '*( (uint32_t *) params[2] )};\n') + self.assertEqual(arg_dispatch, ['(char *) params[0]', + '&hex1', + '*( (int *) params[3] )']) def test_non_void_function(self): """ @@ -493,8 +560,9 @@ No test function ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_function_code, stream, [], + []) def test_no_end_case_comment(self): """ @@ -506,11 +574,13 @@ void test_func() { } ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_function_code, stream, [], + []) @patch("generate_test_code.parse_function_signature") - def test_parse_function_signature_called(self, parse_function_signature_mock): + def test_function_called(self, + parse_function_signature_mock): """ Test parse_function_code() :return: @@ -521,26 +591,27 @@ void test_func() { } ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_function_code, + stream, [], []) self.assertTrue(parse_function_signature_mock.called) parse_function_signature_mock.assert_called_with('void test_func()\n') @patch("generate_test_code.gen_dispatch") - @patch("generate_test_code.gen_deps") + @patch("generate_test_code.gen_dependencies") @patch("generate_test_code.gen_function_wrapper") @patch("generate_test_code.parse_function_signature") def test_return(self, parse_function_signature_mock, - gen_function_wrapper_mock, - gen_deps_mock, - gen_dispatch_mock): + gen_function_wrapper_mock, + gen_dependencies_mock, + gen_dispatch_mock): """ Test generated code. :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) gen_function_wrapper_mock.return_value = '' - gen_deps_mock.side_effect = gen_deps + gen_dependencies_mock.side_effect = gen_dependencies gen_dispatch_mock.side_effect = gen_dispatch data = ''' void func() @@ -550,10 +621,9 @@ void func() } /* END_CASE */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - name, arg, code, dispatch_code = parse_function_code(s, [], []) + stream = StringIOWrapper('test_suite_ut.function', data) + name, arg, code, dispatch_code = parse_function_code(stream, [], []) - #self.assertRaises(InvalidFileFormat, parse_function_code, s, [], []) self.assertTrue(parse_function_signature_mock.called) parse_function_signature_mock.assert_called_with('void func()\n') gen_function_wrapper_mock.assert_called_with('test_func', '', []) @@ -572,20 +642,20 @@ exit: self.assertEqual(dispatch_code, "\n test_func_wrapper,\n") @patch("generate_test_code.gen_dispatch") - @patch("generate_test_code.gen_deps") + @patch("generate_test_code.gen_dependencies") @patch("generate_test_code.gen_function_wrapper") @patch("generate_test_code.parse_function_signature") def test_with_exit_label(self, parse_function_signature_mock, - gen_function_wrapper_mock, - gen_deps_mock, - gen_dispatch_mock): + gen_function_wrapper_mock, + gen_dependencies_mock, + gen_dispatch_mock): """ Test when exit label is present. :return: """ parse_function_signature_mock.return_value = ('func', [], '', []) gen_function_wrapper_mock.return_value = '' - gen_deps_mock.side_effect = gen_deps + gen_dependencies_mock.side_effect = gen_dependencies gen_dispatch_mock.side_effect = gen_dispatch data = ''' void func() @@ -598,8 +668,8 @@ exit: } /* END_CASE */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - name, arg, code, dispatch_code = parse_function_code(s, [], []) + stream = StringIOWrapper('test_suite_ut.function', data) + _, _, code, _ = parse_function_code(stream, [], []) expected = '''#line 2 "test_suite_ut.function" void test_func() @@ -625,7 +695,8 @@ class ParseFunction(TestCase): Test that begin header is checked and parse_until_pattern() is called. :return: """ - def stop(this): + def stop(*_unused): + """Stop when parse_until_pattern is called.""" raise Exception parse_until_pattern_mock.side_effect = stop data = '''/* BEGIN_HEADER */ @@ -634,10 +705,10 @@ class ParseFunction(TestCase): #define ECP_PF_UNKNOWN -1 /* END_HEADER */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(Exception, parse_functions, s) - parse_until_pattern_mock.assert_called_with(s, END_HEADER_REGEX) - self.assertEqual(s.line_no, 2) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, stream) + parse_until_pattern_mock.assert_called_with(stream, END_HEADER_REGEX) + self.assertEqual(stream.line_no, 2) @patch("generate_test_code.parse_until_pattern") def test_begin_helper(self, parse_until_pattern_mock): @@ -645,89 +716,97 @@ class ParseFunction(TestCase): Test that begin helper is checked and parse_until_pattern() is called. :return: """ - def stop(this): + def stop(*_unused): + """Stop when parse_until_pattern is called.""" raise Exception parse_until_pattern_mock.side_effect = stop data = '''/* BEGIN_SUITE_HELPERS */ -void print_helloworld() +void print_hello_world() { - printf ("Hello World!\n"); + printf("Hello World!\n"); } /* END_SUITE_HELPERS */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(Exception, parse_functions, s) - parse_until_pattern_mock.assert_called_with(s, END_SUITE_HELPERS_REGEX) - self.assertEqual(s.line_no, 2) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, stream) + parse_until_pattern_mock.assert_called_with(stream, + END_SUITE_HELPERS_REGEX) + self.assertEqual(stream.line_no, 2) - @patch("generate_test_code.parse_suite_deps") - def test_begin_dep(self, parse_suite_deps_mock): + @patch("generate_test_code.parse_suite_dependencies") + def test_begin_dep(self, parse_suite_dependencies_mock): """ - Test that begin dep is checked and parse_suite_deps() is called. + Test that begin dep is checked and parse_suite_dependencies() is + called. :return: """ - def stop(this): + def stop(*_unused): + """Stop when parse_until_pattern is called.""" raise Exception - parse_suite_deps_mock.side_effect = stop + parse_suite_dependencies_mock.side_effect = stop data = '''/* BEGIN_DEPENDENCIES * depends_on:MBEDTLS_ECP_C * END_DEPENDENCIES */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(Exception, parse_functions, s) - parse_suite_deps_mock.assert_called_with(s) - self.assertEqual(s.line_no, 2) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, stream) + parse_suite_dependencies_mock.assert_called_with(stream) + self.assertEqual(stream.line_no, 2) - @patch("generate_test_code.parse_function_deps") - def test_begin_function_dep(self, parse_function_deps_mock): + @patch("generate_test_code.parse_function_dependencies") + def test_begin_function_dep(self, func_mock): """ - Test that begin dep is checked and parse_function_deps() is called. + Test that begin dep is checked and parse_function_dependencies() is + called. :return: """ - def stop(this): + def stop(*_unused): + """Stop when parse_until_pattern is called.""" raise Exception - parse_function_deps_mock.side_effect = stop + func_mock.side_effect = stop - deps_str = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' + dependencies_str = '/* BEGIN_CASE ' \ + 'depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' data = '''%svoid test_func() { } -''' % deps_str - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(Exception, parse_functions, s) - parse_function_deps_mock.assert_called_with(deps_str) - self.assertEqual(s.line_no, 2) +''' % dependencies_str + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(Exception, parse_functions, stream) + func_mock.assert_called_with(dependencies_str) + self.assertEqual(stream.line_no, 2) @patch("generate_test_code.parse_function_code") - @patch("generate_test_code.parse_function_deps") - def test_return(self, parse_function_deps_mock, parse_function_code_mock): + @patch("generate_test_code.parse_function_dependencies") + def test_return(self, func_mock1, func_mock2): """ Test that begin case is checked and parse_function_code() is called. :return: """ - def stop(this): - raise Exception - parse_function_deps_mock.return_value = [] - in_func_code= '''void test_func() + func_mock1.return_value = [] + in_func_code = '''void test_func() { } ''' func_dispatch = ''' test_func_wrapper, ''' - parse_function_code_mock.return_value = 'test_func', [], in_func_code, func_dispatch - deps_str = '/* BEGIN_CASE depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' + func_mock2.return_value = 'test_func', [],\ + in_func_code, func_dispatch + dependencies_str = '/* BEGIN_CASE ' \ + 'depends_on:MBEDTLS_ENTROPY_NV_SEED:MBEDTLS_FS_IO */\n' data = '''%svoid test_func() { } -''' % deps_str - s = StringIOWrapper('test_suite_ut.function', data) - suite_deps, dispatch_code, func_code, func_info = parse_functions(s) - parse_function_deps_mock.assert_called_with(deps_str) - parse_function_code_mock.assert_called_with(s, [], []) - self.assertEqual(s.line_no, 5) - self.assertEqual(suite_deps, []) +''' % dependencies_str + stream = StringIOWrapper('test_suite_ut.function', data) + suite_dependencies, dispatch_code, func_code, func_info = \ + parse_functions(stream) + func_mock1.assert_called_with(dependencies_str) + func_mock2.assert_called_with(stream, [], []) + self.assertEqual(stream.line_no, 5) + self.assertEqual(suite_dependencies, []) expected_dispatch_code = '''/* Function Id: 0 */ test_func_wrapper, @@ -764,10 +843,11 @@ void func2() } /* END_CASE */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - suite_deps, dispatch_code, func_code, func_info = parse_functions(s) - self.assertEqual(s.line_no, 23) - self.assertEqual(suite_deps, ['MBEDTLS_ECP_C']) + stream = StringIOWrapper('test_suite_ut.function', data) + suite_dependencies, dispatch_code, func_code, func_info = \ + parse_functions(stream) + self.assertEqual(stream.line_no, 23) + self.assertEqual(suite_dependencies, ['MBEDTLS_ECP_C']) expected_dispatch_code = '''/* Function Id: 0 */ @@ -827,7 +907,8 @@ void test_func2_wrapper( void ** params ) #endif /* MBEDTLS_ECP_C */ ''' self.assertEqual(func_code, expected_func_code) - self.assertEqual(func_info, {'test_func1': (0, []), 'test_func2': (1, [])}) + self.assertEqual(func_info, {'test_func1': (0, []), + 'test_func2': (1, [])}) def test_same_function_name(self): """ @@ -857,15 +938,16 @@ void func() } /* END_CASE */ ''' - s = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(GeneratorInputError, parse_functions, s) + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaises(GeneratorInputError, parse_functions, stream) -class ExcapedSplit(TestCase): +class EscapedSplit(TestCase): """ Test suite for testing escaped_split(). - Note: Since escaped_split() output is used to write back to the intermediate data file. Any escape characters - in the input are retained in the output. + Note: Since escaped_split() output is used to write back to the + intermediate data file. Any escape characters in the input are + retained in the output. """ def test_invalid_input(self): @@ -877,7 +959,7 @@ class ExcapedSplit(TestCase): def test_empty_string(self): """ - Test empty strig input. + Test empty string input. :return: """ splits = escaped_split('', ':') @@ -885,39 +967,42 @@ class ExcapedSplit(TestCase): def test_no_escape(self): """ - Test with no escape character. The behaviour should be same as str.split() + Test with no escape character. The behaviour should be same as + str.split() :return: """ - s = 'yahoo:google' - splits = escaped_split(s, ':') - self.assertEqual(splits, s.split(':')) + test_str = 'yahoo:google' + splits = escaped_split(test_str, ':') + self.assertEqual(splits, test_str.split(':')) def test_escaped_input(self): """ - Test imput that has escaped delimiter. + Test input that has escaped delimiter. :return: """ - s = 'yahoo\:google:facebook' - splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo\:google', 'facebook']) + test_str = r'yahoo\:google:facebook' + splits = escaped_split(test_str, ':') + self.assertEqual(splits, [r'yahoo\:google', 'facebook']) def test_escaped_escape(self): """ - Test imput that has escaped delimiter. + Test input that has escaped delimiter. :return: """ - s = 'yahoo\\\:google:facebook' - splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo\\\\', 'google', 'facebook']) + test_str = r'yahoo\\\:google:facebook' + splits = escaped_split(test_str, ':') + self.assertEqual(splits, [r'yahoo\\\\', 'google', 'facebook']) def test_all_at_once(self): """ - Test imput that has escaped delimiter. + Test input that has escaped delimiter. :return: """ - s = 'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' - splits = escaped_split(s, ':') - self.assertEqual(splits, ['yahoo\\\\', 'google', 'facebook\:instagram\\\\', 'bbc\\\\', 'wikipedia']) + test_str = r'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' + splits = escaped_split(test_str, ':') + self.assertEqual(splits, [r'yahoo\\\\', r'google', + r'facebook\:instagram\\\\', + r'bbc\\\\', r'wikipedia']) class ParseTestData(TestCase): @@ -943,28 +1028,34 @@ dhm_do_dhm:10:"9345098382739712938719287391879381271":10:"9345098792137312973297 Diffie-Hellman selftest dhm_selftest: """ - s = StringIOWrapper('test_suite_ut.function', data) - tests = [(name, function, deps, args) for name, function, deps, args in parse_test_data(s)] - t1, t2, t3, t4 = tests - self.assertEqual(t1[0], 'Diffie-Hellman full exchange #1') - self.assertEqual(t1[1], 'dhm_do_dhm') - self.assertEqual(t1[2], []) - self.assertEqual(t1[3], ['10', '"23"', '10', '"5"']) + stream = StringIOWrapper('test_suite_ut.function', data) + tests = [(name, test_function, dependencies, args) + for name, test_function, dependencies, args in + parse_test_data(stream)] + test1, test2, test3, test4 = tests + self.assertEqual(test1[0], 'Diffie-Hellman full exchange #1') + self.assertEqual(test1[1], 'dhm_do_dhm') + self.assertEqual(test1[2], []) + self.assertEqual(test1[3], ['10', '"23"', '10', '"5"']) - self.assertEqual(t2[0], 'Diffie-Hellman full exchange #2') - self.assertEqual(t2[1], 'dhm_do_dhm') - self.assertEqual(t2[2], []) - self.assertEqual(t2[3], ['10', '"93450983094850938450983409623"', '10', '"9345098304850938450983409622"']) + self.assertEqual(test2[0], 'Diffie-Hellman full exchange #2') + self.assertEqual(test2[1], 'dhm_do_dhm') + self.assertEqual(test2[2], []) + self.assertEqual(test2[3], ['10', '"93450983094850938450983409623"', + '10', '"9345098304850938450983409622"']) - self.assertEqual(t3[0], 'Diffie-Hellman full exchange #3') - self.assertEqual(t3[1], 'dhm_do_dhm') - self.assertEqual(t3[2], []) - self.assertEqual(t3[3], ['10', '"9345098382739712938719287391879381271"', '10', '"9345098792137312973297123912791271"']) + self.assertEqual(test3[0], 'Diffie-Hellman full exchange #3') + self.assertEqual(test3[1], 'dhm_do_dhm') + self.assertEqual(test3[2], []) + self.assertEqual(test3[3], ['10', + '"9345098382739712938719287391879381271"', + '10', + '"9345098792137312973297123912791271"']) - self.assertEqual(t4[0], 'Diffie-Hellman selftest') - self.assertEqual(t4[1], 'dhm_selftest') - self.assertEqual(t4[2], []) - self.assertEqual(t4[3], []) + self.assertEqual(test4[0], 'Diffie-Hellman selftest') + self.assertEqual(test4[1], 'dhm_selftest') + self.assertEqual(test4[2], []) + self.assertEqual(test4[3], []) def test_with_dependencies(self): """ @@ -980,22 +1071,26 @@ Diffie-Hellman full exchange #2 dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" """ - s = StringIOWrapper('test_suite_ut.function', data) - tests = [(name, function, deps, args) for name, function, deps, args in parse_test_data(s)] - t1, t2 = tests - self.assertEqual(t1[0], 'Diffie-Hellman full exchange #1') - self.assertEqual(t1[1], 'dhm_do_dhm') - self.assertEqual(t1[2], ['YAHOO']) - self.assertEqual(t1[3], ['10', '"23"', '10', '"5"']) + stream = StringIOWrapper('test_suite_ut.function', data) + tests = [(name, function_name, dependencies, args) + for name, function_name, dependencies, args in + parse_test_data(stream)] + test1, test2 = tests + self.assertEqual(test1[0], 'Diffie-Hellman full exchange #1') + self.assertEqual(test1[1], 'dhm_do_dhm') + self.assertEqual(test1[2], ['YAHOO']) + self.assertEqual(test1[3], ['10', '"23"', '10', '"5"']) - self.assertEqual(t2[0], 'Diffie-Hellman full exchange #2') - self.assertEqual(t2[1], 'dhm_do_dhm') - self.assertEqual(t2[2], []) - self.assertEqual(t2[3], ['10', '"93450983094850938450983409623"', '10', '"9345098304850938450983409622"']) + self.assertEqual(test2[0], 'Diffie-Hellman full exchange #2') + self.assertEqual(test2[1], 'dhm_do_dhm') + self.assertEqual(test2[2], []) + self.assertEqual(test2[3], ['10', '"93450983094850938450983409623"', + '10', '"9345098304850938450983409622"']) def test_no_args(self): """ - Test GeneratorInputError is raised when test function name and args line is missing. + Test GeneratorInputError is raised when test function name and + args line is missing. :return: """ data = """ @@ -1007,37 +1102,39 @@ Diffie-Hellman full exchange #2 dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" """ - s = StringIOWrapper('test_suite_ut.function', data) - e = None + stream = StringIOWrapper('test_suite_ut.function', data) + err = None try: - for x, y, z, a in parse_test_data(s): + for _, _, _, _ in parse_test_data(stream): pass - except GeneratorInputError as e: + except GeneratorInputError as err: pass - self.assertEqual(type(e), GeneratorInputError) + self.assertEqual(type(err), GeneratorInputError) def test_incomplete_data(self): """ - Test GeneratorInputError is raised when test function name and args line is missing. + Test GeneratorInputError is raised when test function name + and args line is missing. :return: """ data = """ Diffie-Hellman full exchange #1 depends_on:YAHOO """ - s = StringIOWrapper('test_suite_ut.function', data) - e = None + stream = StringIOWrapper('test_suite_ut.function', data) + err = None try: - for x, y, z, a in parse_test_data(s): + for _, _, _, _ in parse_test_data(stream): pass - except GeneratorInputError as e: + except GeneratorInputError as err: pass - self.assertEqual(type(e), GeneratorInputError) + self.assertEqual(type(err), GeneratorInputError) class GenDepCheck(TestCase): """ - Test suite for gen_dep_check(). It is assumed this function is called with valid inputs. + Test suite for gen_dep_check(). It is assumed this function is + called with valid inputs. """ def test_gen_dep_check(self): @@ -1058,7 +1155,7 @@ class GenDepCheck(TestCase): out = gen_dep_check(5, 'YAHOO') self.assertEqual(out, expected) - def test_noT(self): + def test_not_defined_dependency(self): """ Test dependency with !. :return: @@ -1093,7 +1190,8 @@ class GenDepCheck(TestCase): class GenExpCheck(TestCase): """ - Test suite for gen_expression_check(). It is assumed this function is called with valid inputs. + Test suite for gen_expression_check(). It is assumed this function + is called with valid inputs. """ def test_gen_exp_check(self): @@ -1122,34 +1220,36 @@ class GenExpCheck(TestCase): Test invalid expression id. :return: """ - self.assertRaises(GeneratorInputError, gen_expression_check, -1, 'YAHOO') + self.assertRaises(GeneratorInputError, gen_expression_check, + -1, 'YAHOO') -class WriteDeps(TestCase): +class WriteDependencies(TestCase): """ - Test suite for testing write_deps. + Test suite for testing write_dependencies. """ - def test_no_test_deps(self): + def test_no_test_dependencies(self): """ - Test when test_deps is empty. + Test when test dependencies input is empty. :return: """ - s = StringIOWrapper('test_suite_ut.data', '') - unique_deps = [] - dep_check_code = write_deps(s, [], unique_deps) + stream = StringIOWrapper('test_suite_ut.data', '') + unique_dependencies = [] + dep_check_code = write_dependencies(stream, [], unique_dependencies) self.assertEqual(dep_check_code, '') - self.assertEqual(len(unique_deps), 0) - self.assertEqual(s.getvalue(), '') + self.assertEqual(len(unique_dependencies), 0) + self.assertEqual(stream.getvalue(), '') def test_unique_dep_ids(self): """ :return: """ - s = StringIOWrapper('test_suite_ut.data', '') - unique_deps = [] - dep_check_code = write_deps(s, ['DEP3', 'DEP2', 'DEP1'], unique_deps) + stream = StringIOWrapper('test_suite_ut.data', '') + unique_dependencies = [] + dep_check_code = write_dependencies(stream, ['DEP3', 'DEP2', 'DEP1'], + unique_dependencies) expect_dep_check_code = ''' case 0: { @@ -1179,20 +1279,23 @@ class WriteDeps(TestCase): } break;''' self.assertEqual(dep_check_code, expect_dep_check_code) - self.assertEqual(len(unique_deps), 3) - self.assertEqual(s.getvalue(), 'depends_on:0:1:2\n') + self.assertEqual(len(unique_dependencies), 3) + self.assertEqual(stream.getvalue(), 'depends_on:0:1:2\n') def test_dep_id_repeat(self): """ :return: """ - s = StringIOWrapper('test_suite_ut.data', '') - unique_deps = [] + stream = StringIOWrapper('test_suite_ut.data', '') + unique_dependencies = [] dep_check_code = '' - dep_check_code += write_deps(s, ['DEP3', 'DEP2'], unique_deps) - dep_check_code += write_deps(s, ['DEP2', 'DEP1'], unique_deps) - dep_check_code += write_deps(s, ['DEP1', 'DEP3'], unique_deps) + dep_check_code += write_dependencies(stream, ['DEP3', 'DEP2'], + unique_dependencies) + dep_check_code += write_dependencies(stream, ['DEP2', 'DEP1'], + unique_dependencies) + dep_check_code += write_dependencies(stream, ['DEP1', 'DEP3'], + unique_dependencies) expect_dep_check_code = ''' case 0: { @@ -1222,8 +1325,9 @@ class WriteDeps(TestCase): } break;''' self.assertEqual(dep_check_code, expect_dep_check_code) - self.assertEqual(len(unique_deps), 3) - self.assertEqual(s.getvalue(), 'depends_on:0:1\ndepends_on:1:2\ndepends_on:2:0\n') + self.assertEqual(len(unique_dependencies), 3) + self.assertEqual(stream.getvalue(), + 'depends_on:0:1\ndepends_on:1:2\ndepends_on:2:0\n') class WriteParams(TestCase): @@ -1236,48 +1340,57 @@ class WriteParams(TestCase): Test with empty test_args :return: """ - s = StringIOWrapper('test_suite_ut.data', '') + stream = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] - expression_code = write_parameters(s, [], [], unique_expressions) + expression_code = write_parameters(stream, [], [], unique_expressions) self.assertEqual(len(unique_expressions), 0) self.assertEqual(expression_code, '') - self.assertEqual(s.getvalue(), '\n') + self.assertEqual(stream.getvalue(), '\n') def test_no_exp_param(self): """ Test when there is no macro or expression in the params. :return: """ - s = StringIOWrapper('test_suite_ut.data', '') + stream = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] - expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0'], ['char*', 'hex', 'int'], + expression_code = write_parameters(stream, ['"Yahoo"', '"abcdef00"', + '0'], + ['char*', 'hex', 'int'], unique_expressions) self.assertEqual(len(unique_expressions), 0) self.assertEqual(expression_code, '') - self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0\n') + self.assertEqual(stream.getvalue(), + ':char*:"Yahoo":hex:"abcdef00":int:0\n') def test_hex_format_int_param(self): """ Test int parameter in hex format. :return: """ - s = StringIOWrapper('test_suite_ut.data', '') + stream = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] - expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0xAA'], ['char*', 'hex', 'int'], + expression_code = write_parameters(stream, + ['"Yahoo"', '"abcdef00"', '0xAA'], + ['char*', 'hex', 'int'], unique_expressions) self.assertEqual(len(unique_expressions), 0) self.assertEqual(expression_code, '') - self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0xAA\n') + self.assertEqual(stream.getvalue(), + ':char*:"Yahoo":hex:"abcdef00":int:0xAA\n') def test_with_exp_param(self): """ Test when there is macro or expression in the params. :return: """ - s = StringIOWrapper('test_suite_ut.data', '') + stream = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] - expression_code = write_parameters(s, ['"Yahoo"', '"abcdef00"', '0', 'MACRO1', 'MACRO2', 'MACRO3'], - ['char*', 'hex', 'int', 'int', 'int', 'int'], + expression_code = write_parameters(stream, + ['"Yahoo"', '"abcdef00"', '0', + 'MACRO1', 'MACRO2', 'MACRO3'], + ['char*', 'hex', 'int', + 'int', 'int', 'int'], unique_expressions) self.assertEqual(len(unique_expressions), 3) self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) @@ -1298,21 +1411,29 @@ class WriteParams(TestCase): } break;''' self.assertEqual(expression_code, expected_expression_code) - self.assertEqual(s.getvalue(), ':char*:"Yahoo":hex:"abcdef00":int:0:exp:0:exp:1:exp:2\n') + self.assertEqual(stream.getvalue(), + ':char*:"Yahoo":hex:"abcdef00":int:0:exp:0:exp:1' + ':exp:2\n') - def test_with_repeate_calls(self): + def test_with_repeat_calls(self): """ Test when write_parameter() is called with same macro or expression. :return: """ - s = StringIOWrapper('test_suite_ut.data', '') + stream = StringIOWrapper('test_suite_ut.data', '') unique_expressions = [] expression_code = '' - expression_code += write_parameters(s, ['"Yahoo"', 'MACRO1', 'MACRO2'], ['char*', 'int', 'int'], + expression_code += write_parameters(stream, + ['"Yahoo"', 'MACRO1', 'MACRO2'], + ['char*', 'int', 'int'], unique_expressions) - expression_code += write_parameters(s, ['"abcdef00"', 'MACRO2', 'MACRO3'], ['hex', 'int', 'int'], + expression_code += write_parameters(stream, + ['"abcdef00"', 'MACRO2', 'MACRO3'], + ['hex', 'int', 'int'], unique_expressions) - expression_code += write_parameters(s, ['0', 'MACRO3', 'MACRO1'], ['int', 'int', 'int'], + expression_code += write_parameters(stream, + ['0', 'MACRO3', 'MACRO1'], + ['int', 'int', 'int'], unique_expressions) self.assertEqual(len(unique_expressions), 3) self.assertEqual(unique_expressions, ['MACRO1', 'MACRO2', 'MACRO3']) @@ -1337,31 +1458,34 @@ class WriteParams(TestCase): :hex:"abcdef00":exp:1:exp:2 :int:0:exp:2:exp:0 ''' - self.assertEqual(s.getvalue(), expected_data_file) + self.assertEqual(stream.getvalue(), expected_data_file) -class GenTestSuiteDepsChecks(TestCase): +class GenTestSuiteDependenciesChecks(TestCase): """ - + Test suite for testing gen_suite_dep_checks() """ - def test_empty_suite_deps(self): + def test_empty_suite_dependencies(self): """ - Test with empty suite_deps list. + Test with empty suite_dependencies list. :return: """ - dep_check_code, expression_code = gen_suite_deps_checks([], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') + dep_check_code, expression_code = \ + gen_suite_dep_checks([], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') self.assertEqual(dep_check_code, 'DEP_CHECK_CODE') self.assertEqual(expression_code, 'EXPRESSION_CODE') - def test_suite_deps(self): + def test_suite_dependencies(self): """ - Test with suite_deps list. + Test with suite_dependencies list. :return: """ - dep_check_code, expression_code = gen_suite_deps_checks(['SUITE_DEP'], 'DEP_CHECK_CODE', 'EXPRESSION_CODE') - exprectd_dep_check_code = ''' + dep_check_code, expression_code = \ + gen_suite_dep_checks(['SUITE_DEP'], 'DEP_CHECK_CODE', + 'EXPRESSION_CODE') + expected_dep_check_code = ''' #if defined(SUITE_DEP) DEP_CHECK_CODE #endif @@ -1371,7 +1495,7 @@ DEP_CHECK_CODE EXPRESSION_CODE #endif ''' - self.assertEqual(dep_check_code, exprectd_dep_check_code) + self.assertEqual(dep_check_code, expected_dep_check_code) self.assertEqual(expression_code, expected_expression_code) def test_no_dep_no_exp(self): @@ -1379,7 +1503,7 @@ EXPRESSION_CODE Test when there are no dependency and expression code. :return: """ - dep_check_code, expression_code = gen_suite_deps_checks([], '', '') + dep_check_code, expression_code = gen_suite_dep_checks([], '', '') self.assertEqual(dep_check_code, '') self.assertEqual(expression_code, '') @@ -1389,10 +1513,13 @@ class GenFromTestData(TestCase): Test suite for gen_from_test_data() """ - @patch("generate_test_code.write_deps") + @staticmethod + @patch("generate_test_code.write_dependencies") @patch("generate_test_code.write_parameters") - @patch("generate_test_code.gen_suite_deps_checks") - def test_intermediate_data_file(self, gen_suite_deps_checks_mock, write_parameters_mock, write_deps_mock): + @patch("generate_test_code.gen_suite_dependencies_checks") + def test_intermediate_data_file(func_mock1, + write_parameters_mock, + write_dependencies_mock): """ Test that intermediate data file is written with expected data. :return: @@ -1405,13 +1532,15 @@ func1:0 data_f = StringIOWrapper('test_suite_ut.data', data) out_data_f = StringIOWrapper('test_suite_ut.datax', '') func_info = {'test_func1': (1, ('int',))} - suite_deps = [] + suite_dependencies = [] write_parameters_mock.side_effect = write_parameters - write_deps_mock.side_effect = write_deps - gen_suite_deps_checks_mock.side_effect = gen_suite_deps_checks - gen_from_test_data(data_f, out_data_f, func_info, suite_deps) - write_deps_mock.assert_called_with(out_data_f, ['DEP1'], ['DEP1']) - write_parameters_mock.assert_called_with(out_data_f, ['0'], ('int',), []) + write_dependencies_mock.side_effect = write_dependencies + func_mock1.side_effect = gen_suite_dep_checks + gen_from_test_data(data_f, out_data_f, func_info, suite_dependencies) + write_dependencies_mock.assert_called_with(out_data_f, + ['DEP1'], ['DEP1']) + write_parameters_mock.assert_called_with(out_data_f, ['0'], + ('int',), []) expected_dep_check_code = ''' case 0: { @@ -1422,7 +1551,8 @@ func1:0 #endif } break;''' - gen_suite_deps_checks_mock.assert_called_with(suite_deps, expected_dep_check_code, '') + func_mock1.assert_called_with( + suite_dependencies, expected_dep_check_code, '') def test_function_not_found(self): """ @@ -1437,12 +1567,14 @@ func1:0 data_f = StringIOWrapper('test_suite_ut.data', data) out_data_f = StringIOWrapper('test_suite_ut.datax', '') func_info = {'test_func2': (1, ('int',))} - suite_deps = [] - self.assertRaises(GeneratorInputError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + suite_dependencies = [] + self.assertRaises(GeneratorInputError, gen_from_test_data, + data_f, out_data_f, func_info, suite_dependencies) def test_different_func_args(self): """ - Test that AssertError is raised when no. of parameters and function args differ. + Test that AssertError is raised when no. of parameters and + function args differ. :return: """ data = ''' @@ -1452,9 +1584,10 @@ func1:0 ''' data_f = StringIOWrapper('test_suite_ut.data', data) out_data_f = StringIOWrapper('test_suite_ut.datax', '') - func_info = {'test_func2': (1, ('int','hex'))} - suite_deps = [] - self.assertRaises(GeneratorInputError, gen_from_test_data, data_f, out_data_f, func_info, suite_deps) + func_info = {'test_func2': (1, ('int', 'hex'))} + suite_dependencies = [] + self.assertRaises(GeneratorInputError, gen_from_test_data, data_f, + out_data_f, func_info, suite_dependencies) def test_output(self): """ @@ -1472,9 +1605,12 @@ func2:"yahoo":88:MACRO1 ''' data_f = StringIOWrapper('test_suite_ut.data', data) out_data_f = StringIOWrapper('test_suite_ut.datax', '') - func_info = {'test_func1': (0, ('int', 'int', 'int', 'int')), 'test_func2': (1, ('char*', 'int', 'int'))} - suite_deps = [] - dep_check_code, expression_code = gen_from_test_data(data_f, out_data_f, func_info, suite_deps) + func_info = {'test_func1': (0, ('int', 'int', 'int', 'int')), + 'test_func2': (1, ('char*', 'int', 'int'))} + suite_dependencies = [] + dep_check_code, expression_code = \ + gen_from_test_data(data_f, out_data_f, func_info, + suite_dependencies) expected_dep_check_code = ''' case 0: { @@ -1494,7 +1630,7 @@ func2:"yahoo":88:MACRO1 #endif } break;''' - expecrted_data = '''My test 1 + expected_data = '''My test 1 depends_on:0 0:int:0:int:0xfa:exp:0:exp:1 @@ -1515,9 +1651,9 @@ depends_on:0:1 } break;''' self.assertEqual(dep_check_code, expected_dep_check_code) - self.assertEqual(out_data_f.getvalue(), expecrted_data) + self.assertEqual(out_data_f.getvalue(), expected_data) self.assertEqual(expression_code, expected_expression_code) -if __name__=='__main__': +if __name__ == '__main__': unittest_main() From 8d686bfdb1df2b614e73e6af035e068ca7537c9e Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Wed, 4 Jul 2018 23:29:46 +0100 Subject: [PATCH 0755/1100] Incorporated code revoew comments. --- tests/scripts/generate_test_code.py | 131 ++++++++++++++++++++-------- tests/scripts/mbedtls_test.py | 21 ++--- tests/suites/host_test.function | 10 +-- 3 files changed, 112 insertions(+), 50 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index a28a73669d..036ed1c02e 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Test suites code generator. # -# Copyright (C) 2018, ARM Limited, All Rights Reserved +# Copyright (C) 2018, Arm Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -180,9 +180,19 @@ END_SUITE_HELPERS_REGEX = r'/\*\s*END_SUITE_HELPERS\s*\*/' BEGIN_DEP_REGEX = r'BEGIN_DEPENDENCIES' END_DEP_REGEX = r'END_DEPENDENCIES' -BEGIN_CASE_REGEX = r'/\*\s*BEGIN_CASE\s*(.*?)\s*\*/' +BEGIN_CASE_REGEX = r'/\*\s*BEGIN_CASE\s*(?P.*?)\s*\*/' END_CASE_REGEX = r'/\*\s*END_CASE\s*\*/' +DEPENDENCY_REGEX = r'depends_on:(?P.*)' +C_IDENTIFIER_REGEX = r'!?[a-z_][a-z0-9_]*' +TEST_FUNCTION_VALIDATION_REGEX = r'\s*void\s+(\w+)\s*\(' +INT_CHECK_REGEX = r'int\s+.*' +CHAR_CHECK_REGEX = r'char\s*\*\s*.*' +DATA_T_CHECK_REGEX = r'data_t\s*\*\s*.*' +FUNCTION_ARG_LIST_START_REGEX = r'.*?\s+(\w+)\s*\(' +FUNCTION_ARG_LIST_END_REGEX = r'.*\)' +EXIT_LABEL_REGEX = r'^exit:' + class GeneratorInputError(Exception): """ @@ -228,7 +238,7 @@ class FileWrapper(io.FileIO, object): self._line_no += 1 # Convert byte array to string with correct encoding and # strip any whitespaces added in the decoding process. - return line.decode(sys.getdefaultencoding()).strip() + "\n" + return line.decode(sys.getdefaultencoding()).rstrip() + '\n' return None # Python 3 iterator method @@ -351,7 +361,7 @@ def parse_until_pattern(funcs_f, end_regex): Matches pattern end_regex to the lines read from the file object. Returns the lines read until end pattern is matched. - :param funcs_f: file object for .functions file + :param funcs_f: file object for .function file :param end_regex: Pattern to stop parsing :return: Lines read before the end pattern """ @@ -367,6 +377,31 @@ def parse_until_pattern(funcs_f, end_regex): return headers +def validate_dependency(dependency): + """ + Validates a C macro and raises GeneratorInputError on invalid input. + :param dependency: Input macro dependency + :return: input dependency stripped of leading & trailing white spaces. + """ + dependency = dependency.strip() + if not re.match(C_IDENTIFIER_REGEX, dependency, re.I): + raise GeneratorInputError('Invalid dependency %s' % dependency) + return dependency + + +def parse_dependencies(inp_str): + """ + Parses dependencies out of inp_str, validates them and returns a + list of macros. + + :param inp_str: Input string with macros delimited by ':'. + :return: list of dependencies + """ + dependencies = [dep for dep in map(validate_dependency, + inp_str.split(':'))] + return dependencies + + def parse_suite_dependencies(funcs_f): """ Parses test suite dependencies specified at the top of a @@ -374,14 +409,18 @@ def parse_suite_dependencies(funcs_f): and end with END_DEPENDENCIES. Dependencies are specified after pattern 'depends_on:' and are delimited by ':'. - :param funcs_f: file object for .functions file + :param funcs_f: file object for .function file :return: List of test suite dependencies. """ dependencies = [] for line in funcs_f: - match = re.search('depends_on:(.*)', line.strip()) + match = re.search(DEPENDENCY_REGEX, line.strip()) if match: - dependencies += [x.strip() for x in match.group(1).split(':')] + try: + dependencies = parse_dependencies(match.group('dependencies')) + except GeneratorInputError as error: + raise GeneratorInputError( + str(error) + " - %s:%d" % (funcs_f.name, funcs_f.line_no)) if re.search(END_DEP_REGEX, line): break else: @@ -398,19 +437,18 @@ def parse_function_dependencies(line): comment BEGIN_CASE. Dependencies are specified after pattern 'depends_on:' and are delimited by ':'. - :param line: Line from .functions file that has dependencies. + :param line: Line from .function file that has dependencies. :return: List of dependencies. """ dependencies = [] match = re.search(BEGIN_CASE_REGEX, line) - dep_str = match.group(1) + dep_str = match.group('depends_on') if dep_str: - match = re.search('depends_on:(.*)', dep_str) + match = re.search(DEPENDENCY_REGEX, dep_str) if match: - dependencies = [x.strip() - for x in match.group(1).strip().split(':')] - return dependencies + dependencies += parse_dependencies(match.group('dependencies')) + return dependencies def parse_function_signature(line): """ @@ -418,7 +456,7 @@ def parse_function_signature(line): a dispatch wrapper function that translates input test vectors read from the data file into test function arguments. - :param line: Line from .functions file that has a function + :param line: Line from .function file that has a function signature. :return: function name, argument list, local variables for wrapper function and argument dispatch code. @@ -427,23 +465,27 @@ def parse_function_signature(line): local_vars = '' args_dispatch = [] # Check if the test function returns void. - match = re.search(r'\s*void\s+(\w+)\s*\(', line, re.I) + match = re.search(TEST_FUNCTION_VALIDATION_REGEX, line, re.I) if not match: raise ValueError("Test function should return 'void'\n%s" % line) name = match.group(1) line = line[len(match.group(0)):] arg_idx = 0 + # Process arguments, ex: arg1, arg2 ) + # This script assumes that the argument list is terminated by ')' + # i.e. the test functions will not have a function pointer + # argument. for arg in line[:line.find(')')].split(','): arg = arg.strip() if arg == '': continue - if re.search(r'int\s+.*', arg.strip()): + if re.search(INT_CHECK_REGEX, arg.strip()): args.append('int') args_dispatch.append('*( (int *) params[%d] )' % arg_idx) - elif re.search(r'char\s*\*\s*.*', arg.strip()): + elif re.search(CHAR_CHECK_REGEX, arg.strip()): args.append('char*') args_dispatch.append('(char *) params[%d]' % arg_idx) - elif re.search(r'data_t\s*\*\s*.*', arg.strip()): + elif re.search(DATA_T_CHECK_REGEX, arg.strip()): args.append('hex') # create a structure pointer_initializer = '(uint8_t *) params[%d]' % arg_idx @@ -472,21 +514,25 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): :return: Function name, arguments, function code and dispatch code. """ code = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) + has_exit_label = False for line in funcs_f: - # Check function signature - match = re.match(r'.*?\s+(\w+)\s*\(', line, re.I) + # Check function signature. This script expects function name + # and return type to be specified at the same line. + match = re.match(FUNCTION_ARG_LIST_START_REGEX, line, re.I) if match: # check if we have full signature i.e. split in more lines - if not re.match(r'.*\)', line): + if not re.match(FUNCTION_ARG_LIST_END_REGEX, line): for lin in funcs_f: line += lin - if re.search(r'.*?\)', line): + if re.search(FUNCTION_ARG_LIST_END_REGEX, line): break name, args, local_vars, args_dispatch = parse_function_signature( line) - code += line.replace(name, 'test_' + name) + code += line.replace(name, 'test_' + name, 1) name = 'test_' + name break + else: + code += line else: raise GeneratorInputError("file: %s - Test functions not found!" % funcs_f.name) @@ -494,6 +540,9 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): for line in funcs_f: if re.search(END_CASE_REGEX, line): break + if not has_exit_label: + has_exit_label = \ + re.search(EXIT_LABEL_REGEX, line.strip()) is not None code += line else: raise GeneratorInputError("file: %s - end case pattern [%s] not " @@ -504,7 +553,7 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): split_code = code.rsplit('}', 1) if len(split_code) == 2: code = """exit: - ;; + ; }""".join(split_code) code += gen_function_wrapper(name, local_vars, args_dispatch) @@ -541,7 +590,12 @@ def parse_functions(funcs_f): elif re.search(BEGIN_DEP_REGEX, line): suite_dependencies += parse_suite_dependencies(funcs_f) elif re.search(BEGIN_CASE_REGEX, line): - dependencies = parse_function_dependencies(line) + try: + dependencies = parse_function_dependencies(line) + except GeneratorInputError as error: + raise GeneratorInputError( + "%s:%d: %s" % (funcs_f.name, funcs_f.line_no, + str(error))) func_name, args, func_code, func_dispatch =\ parse_function_code(funcs_f, dependencies, suite_dependencies) suite_functions += func_code @@ -568,7 +622,7 @@ def escaped_split(inp_str, split_char): output. :param inp_str: String to split - :param split_char: split character + :param split_char: Split character :return: List of splits """ if len(split_char) > 1: @@ -609,7 +663,8 @@ def parse_test_data(data_f): name = '' for line in data_f: line = line.strip() - if line and line[0] == '#': # Skip comments + # Skip comments + if line.startswith('#'): continue # Blank line indicates end of test @@ -627,10 +682,15 @@ def parse_test_data(data_f): state = __state_read_args elif state == __state_read_args: # Check dependencies - match = re.search('depends_on:(.*)', line) + match = re.search(DEPENDENCY_REGEX, line) if match: - dependencies = [x.strip() for x in match.group(1).split(':') - if len(x.strip())] + try: + dependencies = parse_dependencies( + match.group('dependencies')) + except GeneratorInputError as error: + raise GeneratorInputError( + str(error) + " - %s:%d" % + (data_f.name, data_f.line_no)) else: # Read test vectors parts = escaped_split(line, ':') @@ -742,7 +802,8 @@ def write_parameters(out_data_f, test_args, func_args, unique_expressions): val = test_args[i] # check if val is a non literal int val (i.e. an expression) - if typ == 'int' and not re.match(r'(\d+$)|((0x)?[0-9a-fA-F]+$)', val): + if typ == 'int' and not re.match(r'(\d+|0x[0-9a-f]+)$', + val, re.I): typ = 'exp' if val not in unique_expressions: unique_expressions.append(val) @@ -764,7 +825,7 @@ def gen_suite_dep_checks(suite_dependencies, dep_check_code, expression_code): Generates preprocessor checks for test suite dependencies. :param suite_dependencies: Test suite dependencies read from the - .functions file. + .function file. :param dep_check_code: Dependency check code :param expression_code: Expression check code :return: Dependency and expression code guarded by test suite @@ -797,7 +858,7 @@ def gen_from_test_data(data_f, out_data_f, func_info, suite_dependencies): evaluation code. :param data_f: Data file object - :param out_data_f:Output intermediate data file + :param out_data_f: Output intermediate data file :param func_info: Dict keyed by function and with function id and arguments info :param suite_dependencies: Test suite dependencies @@ -983,7 +1044,7 @@ def generate_code(**input_info): write_test_source_file(template_file, c_file, snippets) -def check_cmd(): +def main(): """ Command line parser. @@ -1057,7 +1118,7 @@ def check_cmd(): if __name__ == "__main__": try: - check_cmd() + main() except GeneratorInputError as err: print("%s: input error: %s" % (os.path.basename(sys.argv[0]), str(err))) diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 8fd72613eb..a9730708a4 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -1,6 +1,6 @@ # Greentea host test script for Mbed TLS on-target test suite testing. # -# Copyright (C) 2018, ARM Limited, All Rights Reserved +# Copyright (C) 2018, Arm Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -19,19 +19,18 @@ """ -Mbed TLS on-target test suite tests are implemented as mbed-os Greentea +Mbed TLS on-target test suite tests are implemented as Greentea tests. Greentea tests are implemented in two parts: target test and host test. Target test is a C application that is built for the target platform and executes on the target. Host test is a Python class derived from mbed_host_tests.BaseHostTest. Target communicates -with the host over serial for the test data. +with the host over serial for the test data and sends back the result. Python tool mbedgt (Greentea) is responsible for flashing the test -binary on to the target and dynamically loading the host test. +binary on to the target and dynamically loading this host test module. -This script contains the host test for handling target test's -requests for test vectors. It also reports the test results -in format understood by Greentea. +Greentea documentation can be found here: +https://github.com/ARMmbed/greentea """ @@ -148,7 +147,9 @@ class MbedTlsTest(BaseHostTest): identifier, dependency identifiers, expression identifiers and the test data in binary form. Target test checks dependencies , evaluate integer constant expressions and dispatches the test - function with received test parameters. + function with received test parameters. After test function is + finished, target sends the result. This class handles the result + event and prints verdict in the form that Greentea understands. """ # status/error codes from suites/helpers.function @@ -323,14 +324,14 @@ class MbedTlsTest(BaseHostTest): """ Converts result from string type to integer :param value: Result code in string - :return: Integer result code + :return: Integer result code. Value is from the test status + constants defined under the MbedTlsTest class. """ try: return int(value) except ValueError: ValueError("Result should return error number. " "Instead received %s" % value) - return 0 @event_callback('GO') def on_go(self, _key, _value, _timestamp): diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function index 12431805f3..f03f40c21a 100644 --- a/tests/suites/host_test.function +++ b/tests/suites/host_test.function @@ -1,7 +1,7 @@ #line 2 "suites/host_test.function" /** - * \brief Varifies that string is in string parameter format i.e. "" + * \brief Verifies that string is in string parameter format i.e. "" * It also strips enclosing '"' from the input string. * * \param str String parameter. @@ -18,14 +18,14 @@ int verify_string( char **str ) return( -1 ); } - (*str)++; - (*str)[strlen( *str ) - 1] = '\0'; + ( *str )++; + ( *str )[strlen( *str ) - 1] = '\0'; return( 0 ); } /** - * \brief Varifies that string is an integer. Also gives the converted + * \brief Verifies that string is an integer. Also gives the converted * integer value. * * \param str Input string. @@ -243,7 +243,7 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store char ** out = params; int ret = ( DISPATCH_TEST_SUCCESS ); - while ( cur - params < (int) cnt ) + while ( cur < params + cnt ) { char * type = *cur++; char * val = *cur++; From 4084ec7ae5f4885f25319888eeed771d42cde720 Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 5 Jul 2018 14:20:08 +0100 Subject: [PATCH 0756/1100] Fixed unit tests in test_generate_test_code.py --- tests/scripts/generate_test_code.py | 1 + tests/scripts/test_generate_test_code.py | 61 +++++++++++------------- 2 files changed, 29 insertions(+), 33 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 036ed1c02e..b744d7c07a 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -450,6 +450,7 @@ def parse_function_dependencies(line): return dependencies + def parse_function_signature(line): """ Parses test function signature for validation and generates diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index f0a935d202..29d9e4f446 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # Unit test for generate_test_code.py # -# Copyright (C) 2018, ARM Limited, All Rights Reserved +# Copyright (C) 2018, Arm Limited, All Rights Reserved # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -23,7 +23,6 @@ Unit tests for generate_test_code.py """ -import sys from StringIO import StringIO from unittest import TestCase, main as unittest_main from mock import patch @@ -288,7 +287,7 @@ class StringIOWrapper(StringIO, object): """ file like class to mock file object in tests. """ - def __init__(self, file_name, data, line_no=1): + def __init__(self, file_name, data, line_no=0): """ Init file handle. @@ -308,14 +307,8 @@ class StringIOWrapper(StringIO, object): :return: Line read from file. """ - parent = super(StringIOWrapper, self) - line = parent.next() # Python 2 - if line: - self.line_no += 1 - # Convert byte array to string with correct encoding and - # strip any whitespaces added in the decoding process. - return line.decode(sys.getdefaultencoding()).strip() + "\n" - return None + line = super(StringIOWrapper, self).next() + return line __next__ = next @@ -327,7 +320,7 @@ class StringIOWrapper(StringIO, object): :return: """ line = super(StringIOWrapper, self).readline() - if line: + if line is not None: self.line_no += 1 return line @@ -510,10 +503,10 @@ class ParseFuncSignature(TestCase): self.assertEqual(name, 'entropy_threshold') self.assertEqual(args, ['char*', 'hex', 'int']) self.assertEqual(local, - ' data_t hex1 = {(uint8_t *) params[1], ' + ' data_t data1 = {(uint8_t *) params[1], ' '*( (uint32_t *) params[2] )};\n') self.assertEqual(arg_dispatch, ['(char *) params[0]', - '&hex1', + '&data1', '*( (int *) params[3] )']) def test_non_void_function(self): @@ -629,13 +622,14 @@ void func() gen_function_wrapper_mock.assert_called_with('test_func', '', []) self.assertEqual(name, 'test_func') self.assertEqual(arg, []) - expected = '''#line 2 "test_suite_ut.function" + expected = '''#line 1 "test_suite_ut.function" + void test_func() { ba ba black sheep have you any wool exit: - ;; + ; } ''' self.assertEqual(code, expected) @@ -671,7 +665,8 @@ exit: stream = StringIOWrapper('test_suite_ut.function', data) _, _, code, _ = parse_function_code(stream, [], []) - expected = '''#line 2 "test_suite_ut.function" + expected = '''#line 1 "test_suite_ut.function" + void test_func() { ba ba black sheep @@ -708,7 +703,7 @@ class ParseFunction(TestCase): stream = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(Exception, parse_functions, stream) parse_until_pattern_mock.assert_called_with(stream, END_HEADER_REGEX) - self.assertEqual(stream.line_no, 2) + self.assertEqual(stream.line_no, 1) @patch("generate_test_code.parse_until_pattern") def test_begin_helper(self, parse_until_pattern_mock): @@ -731,7 +726,7 @@ void print_hello_world() self.assertRaises(Exception, parse_functions, stream) parse_until_pattern_mock.assert_called_with(stream, END_SUITE_HELPERS_REGEX) - self.assertEqual(stream.line_no, 2) + self.assertEqual(stream.line_no, 1) @patch("generate_test_code.parse_suite_dependencies") def test_begin_dep(self, parse_suite_dependencies_mock): @@ -752,7 +747,7 @@ void print_hello_world() stream = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(Exception, parse_functions, stream) parse_suite_dependencies_mock.assert_called_with(stream) - self.assertEqual(stream.line_no, 2) + self.assertEqual(stream.line_no, 1) @patch("generate_test_code.parse_function_dependencies") def test_begin_function_dep(self, func_mock): @@ -775,7 +770,7 @@ void print_hello_world() stream = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(Exception, parse_functions, stream) func_mock.assert_called_with(dependencies_str) - self.assertEqual(stream.line_no, 2) + self.assertEqual(stream.line_no, 1) @patch("generate_test_code.parse_function_code") @patch("generate_test_code.parse_function_dependencies") @@ -866,17 +861,17 @@ void func2() ''' self.assertEqual(dispatch_code, expected_dispatch_code) expected_func_code = '''#if defined(MBEDTLS_ECP_C) -#line 3 "test_suite_ut.function" +#line 2 "test_suite_ut.function" #include "mbedtls/ecp.h" #define ECP_PF_UNKNOWN -1 #if defined(MBEDTLS_ENTROPY_NV_SEED) #if defined(MBEDTLS_FS_IO) -#line 14 "test_suite_ut.function" +#line 13 "test_suite_ut.function" void test_func1() { exit: - ;; + ; } void test_func1_wrapper( void ** params ) @@ -889,11 +884,11 @@ void test_func1_wrapper( void ** params ) #endif /* MBEDTLS_ENTROPY_NV_SEED */ #if defined(MBEDTLS_ENTROPY_NV_SEED) #if defined(MBEDTLS_FS_IO) -#line 20 "test_suite_ut.function" +#line 19 "test_suite_ut.function" void test_func2() { exit: - ;; + ; } void test_func2_wrapper( void ** params ) @@ -989,20 +984,20 @@ class EscapedSplit(TestCase): Test input that has escaped delimiter. :return: """ - test_str = r'yahoo\\\:google:facebook' + test_str = r'yahoo\\:google:facebook' splits = escaped_split(test_str, ':') - self.assertEqual(splits, [r'yahoo\\\\', 'google', 'facebook']) + self.assertEqual(splits, [r'yahoo\\', 'google', 'facebook']) def test_all_at_once(self): """ Test input that has escaped delimiter. :return: """ - test_str = r'yahoo\\\:google:facebook\:instagram\\\:bbc\\\\:wikipedia' + test_str = r'yahoo\\:google:facebook\:instagram\\:bbc\\:wikipedia' splits = escaped_split(test_str, ':') - self.assertEqual(splits, [r'yahoo\\\\', r'google', - r'facebook\:instagram\\\\', - r'bbc\\\\', r'wikipedia']) + self.assertEqual(splits, [r'yahoo\\', r'google', + r'facebook\:instagram\\', + r'bbc\\', r'wikipedia']) class ParseTestData(TestCase): @@ -1516,7 +1511,7 @@ class GenFromTestData(TestCase): @staticmethod @patch("generate_test_code.write_dependencies") @patch("generate_test_code.write_parameters") - @patch("generate_test_code.gen_suite_dependencies_checks") + @patch("generate_test_code.gen_suite_dep_checks") def test_intermediate_data_file(func_mock1, write_parameters_mock, write_dependencies_mock): From fcdf68530265ecb15d0b846aae915c2df6fb203b Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 5 Jul 2018 17:31:46 +0100 Subject: [PATCH 0757/1100] Make test function parsing robust This commit enhances parsing of the test function in generate_test_code.py for cases where return type and function name are on separate lines. --- tests/scripts/generate_test_code.py | 46 +++++---- tests/scripts/test_generate_test_code.py | 122 ++++++++++++++++------- 2 files changed, 112 insertions(+), 56 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index b744d7c07a..b01bd3511b 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -185,11 +185,10 @@ END_CASE_REGEX = r'/\*\s*END_CASE\s*\*/' DEPENDENCY_REGEX = r'depends_on:(?P.*)' C_IDENTIFIER_REGEX = r'!?[a-z_][a-z0-9_]*' -TEST_FUNCTION_VALIDATION_REGEX = r'\s*void\s+(\w+)\s*\(' +TEST_FUNCTION_VALIDATION_REGEX = r'\s*void\s+(?P\w+)\s*\(' INT_CHECK_REGEX = r'int\s+.*' CHAR_CHECK_REGEX = r'char\s*\*\s*.*' DATA_T_CHECK_REGEX = r'data_t\s*\*\s*.*' -FUNCTION_ARG_LIST_START_REGEX = r'.*?\s+(\w+)\s*\(' FUNCTION_ARG_LIST_END_REGEX = r'.*\)' EXIT_LABEL_REGEX = r'^exit:' @@ -451,7 +450,7 @@ def parse_function_dependencies(line): return dependencies -def parse_function_signature(line): +def parse_function_arguments(line): """ Parses test function signature for validation and generates a dispatch wrapper function that translates input test vectors @@ -459,19 +458,15 @@ def parse_function_signature(line): :param line: Line from .function file that has a function signature. - :return: function name, argument list, local variables for + :return: argument list, local variables for wrapper function and argument dispatch code. """ args = [] local_vars = '' args_dispatch = [] - # Check if the test function returns void. - match = re.search(TEST_FUNCTION_VALIDATION_REGEX, line, re.I) - if not match: - raise ValueError("Test function should return 'void'\n%s" % line) - name = match.group(1) - line = line[len(match.group(0)):] arg_idx = 0 + # Remove characters before arguments + line = line[line.find('(') + 1:] # Process arguments, ex: arg1, arg2 ) # This script assumes that the argument list is terminated by ')' # i.e. the test functions will not have a function pointer @@ -501,7 +496,7 @@ def parse_function_signature(line): "'char *' or 'data_t'\n%s" % line) arg_idx += 1 - return name, args, local_vars, args_dispatch + return args, local_vars, args_dispatch def parse_function_code(funcs_f, dependencies, suite_dependencies): @@ -514,30 +509,38 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): :param suite_dependencies: List of test suite dependencies :return: Function name, arguments, function code and dispatch code. """ - code = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) + line_directive = '#line %d "%s"\n' % (funcs_f.line_no + 1, funcs_f.name) + code = '' has_exit_label = False for line in funcs_f: - # Check function signature. This script expects function name - # and return type to be specified at the same line. - match = re.match(FUNCTION_ARG_LIST_START_REGEX, line, re.I) + # Check function signature. Function signature may be split + # across multiple lines. Here we try to find the start of + # arguments list, then remove '\n's and apply the regex to + # detect function start. + up_to_arg_list_start = code + line[:line.find('(') + 1] + match = re.match(TEST_FUNCTION_VALIDATION_REGEX, + up_to_arg_list_start.replace('\n', ' '), re.I) if match: # check if we have full signature i.e. split in more lines + name = match.group('func_name') if not re.match(FUNCTION_ARG_LIST_END_REGEX, line): for lin in funcs_f: line += lin if re.search(FUNCTION_ARG_LIST_END_REGEX, line): break - name, args, local_vars, args_dispatch = parse_function_signature( + args, local_vars, args_dispatch = parse_function_arguments( line) - code += line.replace(name, 'test_' + name, 1) - name = 'test_' + name - break - else: code += line + break + code += line else: raise GeneratorInputError("file: %s - Test functions not found!" % funcs_f.name) + # Prefix test function name with 'test_' + code = code.replace(name, 'test_' + name, 1) + name = 'test_' + name + for line in funcs_f: if re.search(END_CASE_REGEX, line): break @@ -557,7 +560,8 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): ; }""".join(split_code) - code += gen_function_wrapper(name, local_vars, args_dispatch) + code = line_directive + code + gen_function_wrapper(name, local_vars, + args_dispatch) preprocessor_check_start, preprocessor_check_end = \ gen_dependencies(dependencies) dispatch_code = gen_dispatch(name, suite_dependencies + dependencies) diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index 29d9e4f446..149159c8c5 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -31,7 +31,7 @@ from generate_test_code import gen_function_wrapper, gen_dispatch from generate_test_code import parse_until_pattern, GeneratorInputError from generate_test_code import parse_suite_dependencies from generate_test_code import parse_function_dependencies -from generate_test_code import parse_function_signature, parse_function_code +from generate_test_code import parse_function_arguments, parse_function_code from generate_test_code import parse_functions, END_HEADER_REGEX from generate_test_code import END_SUITE_HELPERS_REGEX, escaped_split from generate_test_code import parse_test_data, gen_dep_check @@ -476,7 +476,7 @@ class ParseFuncDependencies(TestCase): class ParseFuncSignature(TestCase): """ - Test Suite for parse_function_signature(). + Test Suite for parse_function_arguments(). """ def test_int_and_char_params(self): @@ -485,8 +485,7 @@ class ParseFuncSignature(TestCase): :return: """ line = 'void entropy_threshold( char * a, int b, int result )' - name, args, local, arg_dispatch = parse_function_signature(line) - self.assertEqual(name, 'entropy_threshold') + args, local, arg_dispatch = parse_function_arguments(line) self.assertEqual(args, ['char*', 'int', 'int']) self.assertEqual(local, '') self.assertEqual(arg_dispatch, ['(char *) params[0]', @@ -499,8 +498,7 @@ class ParseFuncSignature(TestCase): :return: """ line = 'void entropy_threshold( char * a, data_t * h, int result )' - name, args, local, arg_dispatch = parse_function_signature(line) - self.assertEqual(name, 'entropy_threshold') + args, local, arg_dispatch = parse_function_arguments(line) self.assertEqual(args, ['char*', 'hex', 'int']) self.assertEqual(local, ' data_t data1 = {(uint8_t *) params[1], ' @@ -509,21 +507,13 @@ class ParseFuncSignature(TestCase): '&data1', '*( (int *) params[3] )']) - def test_non_void_function(self): - """ - Test invalid signature (non void). - :return: - """ - line = 'int entropy_threshold( char * a, data_t * h, int result )' - self.assertRaises(ValueError, parse_function_signature, line) - def test_unsupported_arg(self): """ Test unsupported arguments (not among int, char * and data_t) :return: """ - line = 'int entropy_threshold( char * a, data_t * h, int * result )' - self.assertRaises(ValueError, parse_function_signature, line) + line = 'void entropy_threshold( char * a, data_t * h, char result )' + self.assertRaises(ValueError, parse_function_arguments, line) def test_no_params(self): """ @@ -531,8 +521,7 @@ class ParseFuncSignature(TestCase): :return: """ line = 'void entropy_threshold()' - name, args, local, arg_dispatch = parse_function_signature(line) - self.assertEqual(name, 'entropy_threshold') + args, local, arg_dispatch = parse_function_arguments(line) self.assertEqual(args, []) self.assertEqual(local, '') self.assertEqual(arg_dispatch, []) @@ -554,8 +543,9 @@ test function ''' stream = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(GeneratorInputError, parse_function_code, stream, [], - []) + err_msg = 'file: test_suite_ut.function - Test functions not found!' + self.assertRaisesRegexp(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) def test_no_end_case_comment(self): """ @@ -568,17 +558,19 @@ void test_func() } ''' stream = StringIOWrapper('test_suite_ut.function', data) - self.assertRaises(GeneratorInputError, parse_function_code, stream, [], - []) + err_msg = r'file: test_suite_ut.function - '\ + 'end case pattern .*? not found!' + self.assertRaisesRegexp(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) - @patch("generate_test_code.parse_function_signature") + @patch("generate_test_code.parse_function_arguments") def test_function_called(self, - parse_function_signature_mock): + parse_function_arguments_mock): """ Test parse_function_code() :return: """ - parse_function_signature_mock.return_value = ('test_func', [], '', []) + parse_function_arguments_mock.return_value = ([], '', []) data = ''' void test_func() { @@ -587,14 +579,14 @@ void test_func() stream = StringIOWrapper('test_suite_ut.function', data) self.assertRaises(GeneratorInputError, parse_function_code, stream, [], []) - self.assertTrue(parse_function_signature_mock.called) - parse_function_signature_mock.assert_called_with('void test_func()\n') + self.assertTrue(parse_function_arguments_mock.called) + parse_function_arguments_mock.assert_called_with('void test_func()\n') @patch("generate_test_code.gen_dispatch") @patch("generate_test_code.gen_dependencies") @patch("generate_test_code.gen_function_wrapper") - @patch("generate_test_code.parse_function_signature") - def test_return(self, parse_function_signature_mock, + @patch("generate_test_code.parse_function_arguments") + def test_return(self, parse_function_arguments_mock, gen_function_wrapper_mock, gen_dependencies_mock, gen_dispatch_mock): @@ -602,7 +594,7 @@ void test_func() Test generated code. :return: """ - parse_function_signature_mock.return_value = ('func', [], '', []) + parse_function_arguments_mock.return_value = ([], '', []) gen_function_wrapper_mock.return_value = '' gen_dependencies_mock.side_effect = gen_dependencies gen_dispatch_mock.side_effect = gen_dispatch @@ -617,8 +609,8 @@ void func() stream = StringIOWrapper('test_suite_ut.function', data) name, arg, code, dispatch_code = parse_function_code(stream, [], []) - self.assertTrue(parse_function_signature_mock.called) - parse_function_signature_mock.assert_called_with('void func()\n') + self.assertTrue(parse_function_arguments_mock.called) + parse_function_arguments_mock.assert_called_with('void func()\n') gen_function_wrapper_mock.assert_called_with('test_func', '', []) self.assertEqual(name, 'test_func') self.assertEqual(arg, []) @@ -638,8 +630,8 @@ exit: @patch("generate_test_code.gen_dispatch") @patch("generate_test_code.gen_dependencies") @patch("generate_test_code.gen_function_wrapper") - @patch("generate_test_code.parse_function_signature") - def test_with_exit_label(self, parse_function_signature_mock, + @patch("generate_test_code.parse_function_arguments") + def test_with_exit_label(self, parse_function_arguments_mock, gen_function_wrapper_mock, gen_dependencies_mock, gen_dispatch_mock): @@ -647,7 +639,7 @@ exit: Test when exit label is present. :return: """ - parse_function_signature_mock.return_value = ('func', [], '', []) + parse_function_arguments_mock.return_value = ([], '', []) gen_function_wrapper_mock.return_value = '' gen_dependencies_mock.side_effect = gen_dependencies gen_dispatch_mock.side_effect = gen_dispatch @@ -675,6 +667,66 @@ exit: yes sir yes sir 3 bags full } +''' + self.assertEqual(code, expected) + + def test_non_void_function(self): + """ + Test invalid signature (non void). + :return: + """ + data = 'int entropy_threshold( char * a, data_t * h, int result )' + err_msg = 'file: test_suite_ut.function - Test functions not found!' + stream = StringIOWrapper('test_suite_ut.function', data) + self.assertRaisesRegexp(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) + + @patch("generate_test_code.gen_dispatch") + @patch("generate_test_code.gen_dependencies") + @patch("generate_test_code.gen_function_wrapper") + @patch("generate_test_code.parse_function_arguments") + def test_functio_name_on_newline(self, parse_function_arguments_mock, + gen_function_wrapper_mock, + gen_dependencies_mock, + gen_dispatch_mock): + """ + Test when exit label is present. + :return: + """ + parse_function_arguments_mock.return_value = ([], '', []) + gen_function_wrapper_mock.return_value = '' + gen_dependencies_mock.side_effect = gen_dependencies + gen_dispatch_mock.side_effect = gen_dispatch + data = ''' +void + + +func() +{ + ba ba black sheep + have you any wool +exit: + yes sir yes sir + 3 bags full +} +/* END_CASE */ +''' + stream = StringIOWrapper('test_suite_ut.function', data) + _, _, code, _ = parse_function_code(stream, [], []) + + expected = '''#line 1 "test_suite_ut.function" + +void + + +test_func() +{ + ba ba black sheep + have you any wool +exit: + yes sir yes sir + 3 bags full +} ''' self.assertEqual(code, expected) From 630281349e8b693cc0cc1bf96ae80c9e2a5296cd Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Thu, 5 Jul 2018 17:53:11 +0100 Subject: [PATCH 0758/1100] Replaced escaped_split() logic with regex --- tests/scripts/generate_test_code.py | 16 ++++------------ tests/scripts/mbedtls_test.py | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index b01bd3511b..ece35dfb40 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -632,18 +632,10 @@ def escaped_split(inp_str, split_char): """ if len(split_char) > 1: raise ValueError('Expected split character. Found string!') - out = [] - part = '' - escape = False - for character in inp_str: - if not escape and character == split_char: - out.append(part) - part = '' - else: - part += character - escape = not escape and character == '\\' - if part: - out.append(part) + out = re.sub(r'(\\.)|' + split_char, + lambda m: m.group(1) or '\n', inp_str, + len(inp_str)).split('\n') + out = filter(lambda x: x or False, out) return out diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index a9730708a4..557031099e 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -77,18 +77,10 @@ class TestDataParser(object): """ if len(split_char) > 1: raise ValueError('Expected split character. Found string!') - out = [] - part = '' - escape = False - for character in inp_str: - if not escape and character == split_char: - out.append(part) - part = '' - else: - part += character - escape = not escape and character == '\\' - if part: - out.append(part) + out = re.sub(r'(\\.)|' + split_char, + lambda m: m.group(1) or '\n', inp_str, + len(inp_str)).split('\n') + out = filter(lambda x: x or False, out) return out def __parse(self, data_f): From 32cbcdac8fecf4709908372779a8f0fa160e6990 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Fri, 6 Jul 2018 00:29:09 +0100 Subject: [PATCH 0759/1100] Fix Pylint errors in Python scripts --- tests/scripts/generate_test_code.py | 54 +++++++++++++++++++---------- tests/scripts/mbedtls_test.py | 2 +- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index ece35dfb40..2468063d14 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -499,6 +499,33 @@ def parse_function_arguments(line): return args, local_vars, args_dispatch +def generate_function_code(name, code, local_vars, args_dispatch, + dependencies): + """ + Generate function code with preprocessor checks and parameter dispatch + wrapper. + + :param name: Function name + :param code: Function code + :param local_vars: Local variables for function wrapper + :param args_dispatch: Argument dispatch code + :param dependencies: Preprocessor dependencies list + :return: Final function code + """ + # Add exit label if not present + if code.find('exit:') == -1: + split_code = code.rsplit('}', 1) + if len(split_code) == 2: + code = """exit: + ; +}""".join(split_code) + + code += gen_function_wrapper(name, local_vars, args_dispatch) + preprocessor_check_start, preprocessor_check_end = \ + gen_dependencies(dependencies) + return preprocessor_check_start + code + preprocessor_check_end + + def parse_function_code(funcs_f, dependencies, suite_dependencies): """ Parses out a function from function file object and generates @@ -552,21 +579,11 @@ def parse_function_code(funcs_f, dependencies, suite_dependencies): raise GeneratorInputError("file: %s - end case pattern [%s] not " "found!" % (funcs_f.name, END_CASE_REGEX)) - # Add exit label if not present - if code.find('exit:') == -1: - split_code = code.rsplit('}', 1) - if len(split_code) == 2: - code = """exit: - ; -}""".join(split_code) - - code = line_directive + code + gen_function_wrapper(name, local_vars, - args_dispatch) - preprocessor_check_start, preprocessor_check_end = \ - gen_dependencies(dependencies) + code = line_directive + code + code = generate_function_code(name, code, local_vars, args_dispatch, + dependencies) dispatch_code = gen_dispatch(name, suite_dependencies + dependencies) - return (name, args, preprocessor_check_start + code + - preprocessor_check_end, dispatch_code) + return (name, args, code, dispatch_code) def parse_functions(funcs_f): @@ -587,11 +604,10 @@ def parse_functions(funcs_f): dispatch_code = '' for line in funcs_f: if re.search(BEGIN_HEADER_REGEX, line): - headers = parse_until_pattern(funcs_f, END_HEADER_REGEX) - suite_helpers += headers + suite_helpers += parse_until_pattern(funcs_f, END_HEADER_REGEX) elif re.search(BEGIN_SUITE_HELPERS_REGEX, line): - helpers = parse_until_pattern(funcs_f, END_SUITE_HELPERS_REGEX) - suite_helpers += helpers + suite_helpers += parse_until_pattern(funcs_f, + END_SUITE_HELPERS_REGEX) elif re.search(BEGIN_DEP_REGEX, line): suite_dependencies += parse_suite_dependencies(funcs_f) elif re.search(BEGIN_CASE_REGEX, line): @@ -635,7 +651,7 @@ def escaped_split(inp_str, split_char): out = re.sub(r'(\\.)|' + split_char, lambda m: m.group(1) or '\n', inp_str, len(inp_str)).split('\n') - out = filter(lambda x: x or False, out) + out = [x for x in out if x] return out diff --git a/tests/scripts/mbedtls_test.py b/tests/scripts/mbedtls_test.py index 557031099e..8e8a89ba91 100755 --- a/tests/scripts/mbedtls_test.py +++ b/tests/scripts/mbedtls_test.py @@ -80,7 +80,7 @@ class TestDataParser(object): out = re.sub(r'(\\.)|' + split_char, lambda m: m.group(1) or '\n', inp_str, len(inp_str)).split('\n') - out = filter(lambda x: x or False, out) + out = [x for x in out if x] return out def __parse(self, data_f): From 539aa06f6490701d1e462561b299fed8e5130f08 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Fri, 6 Jul 2018 00:29:50 +0100 Subject: [PATCH 0760/1100] Fix Python 2 & 3 compatibility in test_generate_test_code.py --- tests/scripts/test_generate_test_code.py | 73 +++++++++++++++++++----- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py index 149159c8c5..2ef12e18dc 100755 --- a/tests/scripts/test_generate_test_code.py +++ b/tests/scripts/test_generate_test_code.py @@ -23,9 +23,19 @@ Unit tests for generate_test_code.py """ -from StringIO import StringIO +try: + # Python 2 + from StringIO import StringIO +except ImportError: + # Python 3 + from io import StringIO from unittest import TestCase, main as unittest_main -from mock import patch +try: + # Python 2 + from mock import patch +except ImportError: + # Python 3 + from unittest.mock import patch from generate_test_code import gen_dependencies, gen_dependencies_one_line from generate_test_code import gen_function_wrapper, gen_dispatch from generate_test_code import parse_until_pattern, GeneratorInputError @@ -307,9 +317,16 @@ class StringIOWrapper(StringIO, object): :return: Line read from file. """ - line = super(StringIOWrapper, self).next() + parent = super(StringIOWrapper, self) + if getattr(parent, 'next', None): + # Python 2 + line = parent.next() + else: + # Python 3 + line = parent.__next__() return line + # Python 3 __next__ = next def readline(self, length=0): @@ -532,6 +549,38 @@ class ParseFunctionCode(TestCase): Test suite for testing parse_function_code() """ + def assert_raises_regex(self, exp, regex, func, *args): + """ + Python 2 & 3 portable wrapper of assertRaisesRegex(p)? function. + + :param exp: Exception type expected to be raised by cb. + :param regex: Expected exception message + :param func: callable object under test + :param args: variable positional arguments + """ + parent = super(ParseFunctionCode, self) + + # Pylint does not appreciate that the super method called + # conditionally can be available in other Python version + # then that of Pylint. + # Workaround is to call the method via getattr. + # Pylint ignores that the method got via getattr is + # conditionally executed. Method has to be a callable. + # Hence, using a dummy callable for getattr default. + dummy = lambda *x: None + # First Python 3 assertRaisesRegex is checked, since Python 2 + # assertRaisesRegexp is also available in Python 3 but is + # marked deprecated. + for name in ('assertRaisesRegex', 'assertRaisesRegexp'): + method = getattr(parent, name, dummy) + if method is not dummy: + method(exp, regex, func, *args) + break + else: + raise AttributeError(" 'ParseFunctionCode' object has no attribute" + " 'assertRaisesRegex' or 'assertRaisesRegexp'" + ) + def test_no_function(self): """ Test no test function found. @@ -544,8 +593,8 @@ function ''' stream = StringIOWrapper('test_suite_ut.function', data) err_msg = 'file: test_suite_ut.function - Test functions not found!' - self.assertRaisesRegexp(GeneratorInputError, err_msg, - parse_function_code, stream, [], []) + self.assert_raises_regex(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) def test_no_end_case_comment(self): """ @@ -560,8 +609,8 @@ void test_func() stream = StringIOWrapper('test_suite_ut.function', data) err_msg = r'file: test_suite_ut.function - '\ 'end case pattern .*? not found!' - self.assertRaisesRegexp(GeneratorInputError, err_msg, - parse_function_code, stream, [], []) + self.assert_raises_regex(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) @patch("generate_test_code.parse_function_arguments") def test_function_called(self, @@ -678,8 +727,8 @@ exit: data = 'int entropy_threshold( char * a, data_t * h, int result )' err_msg = 'file: test_suite_ut.function - Test functions not found!' stream = StringIOWrapper('test_suite_ut.function', data) - self.assertRaisesRegexp(GeneratorInputError, err_msg, - parse_function_code, stream, [], []) + self.assert_raises_regex(GeneratorInputError, err_msg, + parse_function_code, stream, [], []) @patch("generate_test_code.gen_dispatch") @patch("generate_test_code.gen_dependencies") @@ -1155,8 +1204,7 @@ dhm_do_dhm:10:"93450983094850938450983409623":10:"9345098304850938450983409622" for _, _, _, _ in parse_test_data(stream): pass except GeneratorInputError as err: - pass - self.assertEqual(type(err), GeneratorInputError) + self.assertEqual(type(err), GeneratorInputError) def test_incomplete_data(self): """ @@ -1174,8 +1222,7 @@ depends_on:YAHOO for _, _, _, _ in parse_test_data(stream): pass except GeneratorInputError as err: - pass - self.assertEqual(type(err), GeneratorInputError) + self.assertEqual(type(err), GeneratorInputError) class GenDepCheck(TestCase): From 21798105f61dae6fb5c0246a1c61fb970e89322b Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Fri, 6 Jul 2018 00:41:08 +0100 Subject: [PATCH 0761/1100] Pylint tests in all.sh --- .pylint | 425 ++++++++++++++++++++++++++++ tests/scripts/all.sh | 2 + tests/scripts/check-python-files.sh | 18 ++ 3 files changed, 445 insertions(+) create mode 100644 .pylint create mode 100755 tests/scripts/check-python-files.sh diff --git a/.pylint b/.pylint new file mode 100644 index 0000000000..934f30be5c --- /dev/null +++ b/.pylint @@ -0,0 +1,425 @@ +[MASTER] + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code +extension-pkg-whitelist= + +# Add files or directories to the blacklist. They should be base names, not +# paths. +ignore=CVS + +# Add files or directories matching the regex patterns to the blacklist. The +# regex matches against base names, not paths. +ignore-patterns= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. +jobs=1 + +# List of plugins (as comma separated values of python modules names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Specify a configuration file. +#rcfile= + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED +confidence= + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once).You can also use "--disable=all" to +# disable everything first and then reenable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use"--disable=all --enable=classes +# --disable=W" +disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable= + + +[REPORTS] + +# Python expression which should return a note less than 10 (10 is the highest +# note). You have access to the variables errors warning, statement which +# respectively contain the number of errors / warnings messages and the total +# number of statements analyzed. This is used by the global evaluation report +# (RP0004). +evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details +#msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio).You can also give a reporter class, eg +# mypackage.mymodule.MyReporterClass. +output-format=text + +# Tells whether to display a full report or only the messages +reports=no + +# Activate the evaluation score. +score=yes + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + + +[SIMILARITIES] + +# Ignore comments when computing similarities. +ignore-comments=yes + +# Ignore docstrings when computing similarities. +ignore-docstrings=yes + +# Ignore imports when computing similarities. +ignore-imports=no + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=79 + +# Maximum number of lines in a module +max-module-lines=2000 + +# List of optional constructs for which whitespace checking is disabled. `dict- +# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. +# `trailing-comma` allows a space between comma and closing bracket: (a, ). +# `empty-line` allows space-only lines. +no-space-check=trailing-comma,dict-separator + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[BASIC] + +# Naming hint for argument names +argument-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Regular expression matching correct argument names +argument-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Naming hint for attribute names +attr-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Regular expression matching correct attribute names +attr-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Bad variable names which should always be refused, separated by a comma +bad-names=foo,bar,baz,toto,tutu,tata + +# Naming hint for class attribute names +class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ + +# Regular expression matching correct class attribute names +class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ + +# Naming hint for class names +class-name-hint=[A-Z_][a-zA-Z0-9]+$ + +# Regular expression matching correct class names +class-rgx=[A-Z_][a-zA-Z0-9]+$ + +# Naming hint for constant names +const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$ + +# Regular expression matching correct constant names +const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming hint for function names +function-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Regular expression matching correct function names +function-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Good variable names which should always be accepted, separated by a comma +good-names=i,j,k,ex,Run,_ + +# Include a hint for the correct naming format with invalid-name +include-naming-hint=no + +# Naming hint for inline iteration names +inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$ + +# Regular expression matching correct inline iteration names +inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ + +# Naming hint for method names +method-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Regular expression matching correct method names +method-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Naming hint for module names +module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Regular expression matching correct module names +module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +property-classes=abc.abstractproperty + +# Naming hint for variable names +variable-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + +# Regular expression matching correct variable names +variable-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$ + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether missing members accessed in mixin class should be ignored. A +# mixin class is detected if its name ends with "mixin" (case insensitive). +ignore-mixin-members=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis. It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid to define new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_,_cb + +# A regular expression matching the name of dummy variables (i.e. expectedly +# not used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. Default to name +# with leading underscore +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,future.builtins + + +[SPELLING] + +# Spelling dictionary name. Available dictionaries: none. To make it working +# install python-enchant package. +spelling-dict= + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to indicated private dictionary in +# --spelling-private-dict-file option instead of raising a message. +spelling-store-unknown-words=no + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME,XXX,TODO + + +[LOGGING] + +# Logging modules to check that the string format arguments are in logging +# function parameter format +logging-modules=logging + + +[CLASSES] + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__,__new__,setUp + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict,_fields,_replace,_source,_make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs + + +[DESIGN] + +# Maximum number of arguments for function / method +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in a if statement +max-bool-expr=5 + +# Maximum number of branch for function / method body +max-branches=12 + +# Maximum number of locals for function / method body +max-locals=15 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body +max-returns=6 + +# Maximum number of statements in function / method body +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[IMPORTS] + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Deprecated modules which should not be used, separated by a comma +deprecated-modules=regsub,TERMIOS,Bastion,rexec + +# Create a graph of external dependencies in the given file (report RP0402 must +# not be disabled) +ext-import-graph= + +# Create a graph of every (i.e. internal and external) dependencies in the +# given file (report RP0402 must not be disabled) +import-graph= + +# Create a graph of internal dependencies in the given file (report RP0402 must +# not be disabled) +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when being caught. Defaults to +# "Exception" +overgeneral-exceptions=Exception diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index d7d5a8c1a1..41ea080262 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1050,6 +1050,8 @@ for optimization_flag in -O2 -O3 -Ofast -Os; do done done +msg "Analyse: Python source with Pylint" +tests/scripts/check-python-files.sh ################################################################ diff --git a/tests/scripts/check-python-files.sh b/tests/scripts/check-python-files.sh new file mode 100755 index 0000000000..e987945c6d --- /dev/null +++ b/tests/scripts/check-python-files.sh @@ -0,0 +1,18 @@ +#! /usr/bin/env sh + +# This file is part of mbed TLS (https://tls.mbed.org) +# +# Copyright (c) 2018, ARM Limited, All Rights Reserved +# +# Purpose +# +# Run 'pylint' on Python files for programming errors and helps enforcing +# PEP8 coding standards. + +if `hash pylint > /dev/null 2>&1`; then + pylint -j 2 tests/scripts/generate_test_code.py --rcfile .pylint + pylint -j 2 tests/scripts/test_generate_test_code.py --rcfile .pylint + pylint -j 2 tests/scripts/mbedtls_test.py --rcfile .pylint +else + echo "$0: WARNING: 'pylint' not found! Skipping checks on Python files." +fi From ee6529eb834434901aea0a080b15eabd497f9583 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Fri, 6 Jul 2018 00:50:34 +0100 Subject: [PATCH 0762/1100] Add generate_test_code.py unit tests in all.sh --- tests/scripts/all.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 41ea080262..ca9c93ef2d 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1050,9 +1050,11 @@ for optimization_flag in -O2 -O3 -Ofast -Os; do done done -msg "Analyse: Python source with Pylint" +msg "Lint: Python scripts" tests/scripts/check-python-files.sh +msg "uint test: generate_test_code.py" +./tests/scripts/test_generate_test_code.py ################################################################ #### Termination From 440d8737c6ec7dbde182fb8058d86e6ab4ace075 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 18 Jul 2018 12:50:49 +0100 Subject: [PATCH 0763/1100] Fix macro validation regex --- tests/scripts/generate_test_code.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 2468063d14..77e235dec8 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -184,7 +184,7 @@ BEGIN_CASE_REGEX = r'/\*\s*BEGIN_CASE\s*(?P.*?)\s*\*/' END_CASE_REGEX = r'/\*\s*END_CASE\s*\*/' DEPENDENCY_REGEX = r'depends_on:(?P.*)' -C_IDENTIFIER_REGEX = r'!?[a-z_][a-z0-9_]*' +C_IDENTIFIER_REGEX = r'!?[a-z_][a-z0-9_]*$' TEST_FUNCTION_VALIDATION_REGEX = r'\s*void\s+(?P\w+)\s*\(' INT_CHECK_REGEX = r'int\s+.*' CHAR_CHECK_REGEX = r'char\s*\*\s*.*' @@ -1133,5 +1133,5 @@ if __name__ == "__main__": try: main() except GeneratorInputError as err: - print("%s: input error: %s" % - (os.path.basename(sys.argv[0]), str(err))) + sys.exit("%s: input error: %s" % + (os.path.basename(sys.argv[0]), str(err))) From d2d0112ca8c83b9c64e73571fd26b6223f8e9475 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 18 Jul 2018 17:48:37 +0100 Subject: [PATCH 0764/1100] Style fixes --- tests/scripts/check-python-files.sh | 6 ++-- tests/scripts/generate_test_code.py | 11 +++---- tests/suites/helpers.function | 4 +-- tests/suites/host_test.function | 49 ++++++++++++++--------------- tests/suites/main_test.function | 4 +-- tests/suites/target_test.function | 14 ++++----- 6 files changed, 41 insertions(+), 47 deletions(-) diff --git a/tests/scripts/check-python-files.sh b/tests/scripts/check-python-files.sh index e987945c6d..009ba4cb01 100755 --- a/tests/scripts/check-python-files.sh +++ b/tests/scripts/check-python-files.sh @@ -1,10 +1,10 @@ #! /usr/bin/env sh -# This file is part of mbed TLS (https://tls.mbed.org) +# This file is part of Mbed TLS (https://tls.mbed.org) # -# Copyright (c) 2018, ARM Limited, All Rights Reserved +# Copyright (c) 2018, Arm Limited, All Rights Reserved # -# Purpose +# Purpose: # # Run 'pylint' on Python files for programming errors and helps enforcing # PEP8 coding standards. diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 77e235dec8..26d1c29cb3 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -57,10 +57,9 @@ Parameters can be of type string, binary data specified as hex string and integer constants specified as integer, macro or as an expression. Following is an example test definition: -X509 CRL Unsupported critical extension (issuingDistributionPoint) -depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_RSA_C:MBEDTLS_SHA256_C -mbedtls_x509_crl_parse:"data_files/crl-idp.pem":\ - MBEDTLS_ERR_X509_INVALID_EXTENSIONS + MBEDTLS_ERR_ASN1_UNEXPECTED_TAG + AES 128 GCM Encrypt and decrypt 8 bytes + depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C + enc_dec_buf:MBEDTLS_CIPHER_AES_128_GCM:"AES-128-GCM":128:8:-1 Test functions: --------------- @@ -965,13 +964,11 @@ def write_test_source_file(template_file, c_file, snippets): :return: """ with open(template_file, 'r') as template_f, open(c_file, 'w') as c_f: - line_no = 1 - for line in template_f.readlines(): + for line_no, line in enumerate(template_f.readlines(), 1): # Update line number. +1 as #line directive sets next line number snippets['line_no'] = line_no + 1 code = line.format(**snippets) c_f.write(code) - line_no += 1 def parse_function_file(funcs_file, snippets): diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function index 56ae629164..32b1b790d4 100644 --- a/tests/suites/helpers.function +++ b/tests/suites/helpers.function @@ -455,13 +455,13 @@ static void test_fail( const char *test, int line_no, const char* filename ) test_info.filename = filename; } -int hexcmp( uint8_t * a, uint8_t * b, uint32_t a_len, uint32_t b_len) +int hexcmp( uint8_t * a, uint8_t * b, uint32_t a_len, uint32_t b_len ) { int ret = 0; uint32_t i = 0; if ( a_len != b_len ) - return( a_len - b_len ); + return( -1 ); for( i = 0; i < a_len; i++ ) { diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function index f03f40c21a..b354af4737 100644 --- a/tests/suites/host_test.function +++ b/tests/suites/host_test.function @@ -10,8 +10,8 @@ */ int verify_string( char **str ) { - if( (*str)[0] != '"' || - (*str)[strlen( *str ) - 1] != '"' ) + if( ( *str )[0] != '"' || + ( *str )[strlen( *str ) - 1] != '"' ) { mbedtls_fprintf( stderr, "Expected string (with \"\") for parameter and got: %s\n", *str ); @@ -49,7 +49,7 @@ int verify_int( char *str, int *value ) } if( ( ( minus && i == 2 ) || ( !minus && i == 1 ) ) && - str[i - 1] == '0' && str[i] == 'x' ) + str[i - 1] == '0' && ( str[i] == 'x' || str[i] == 'X' ) ) { hex = 1; continue; @@ -87,8 +87,9 @@ int verify_int( char *str, int *value ) #define USAGE \ "Usage: %s [OPTIONS] files...\n\n" \ " Command line arguments:\n" \ - " files... One or more test data file. If no file is specified\n" \ - " the followimg default test case is used:\n" \ + " files... One or more test data files. If no file is\n" \ + " specified the following default test case\n" \ + " file is used:\n" \ " %s\n\n" \ " Options:\n" \ " -v | --verbose Display full information about each test\n" \ @@ -165,7 +166,7 @@ static int parse_arguments( char *buf, size_t len, char **params, params[cnt++] = cur; - while( *p != '\0' && p < buf + len ) + while( *p != '\0' && p < ( buf + len ) ) { if( *p == '\\' ) { @@ -195,23 +196,23 @@ static int parse_arguments( char *buf, size_t len, char **params, while( *p != '\0' ) { - if( *p == '\\' && *(p + 1) == 'n' ) + if( *p == '\\' && *( p + 1 ) == 'n' ) { p += 2; - *(q++) = '\n'; + *( q++ ) = '\n'; } - else if( *p == '\\' && *(p + 1) == ':' ) + else if( *p == '\\' && *( p + 1 ) == ':' ) { p += 2; - *(q++) = ':'; + *( q++ ) = ':'; } - else if( *p == '\\' && *(p + 1) == '?' ) + else if( *p == '\\' && *( p + 1 ) == '?' ) { p += 2; - *(q++) = '?'; + *( q++ ) = '?'; } else - *(q++) = *(p++); + *( q++ ) = *( p++ ); } *q = '\0'; } @@ -231,8 +232,8 @@ static int parse_arguments( char *buf, size_t len, char **params, * } * * - * \param cnt Input string. - * \param params Out array of found strings. + * \param cnt Parameter array count. + * \param params Out array of found parameters. * \param int_params_store Memory for storing processed integer parameters. * * \return 0 for success else 1 @@ -241,7 +242,7 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store { char ** cur = params; char ** out = params; - int ret = ( DISPATCH_TEST_SUCCESS ); + int ret = DISPATCH_TEST_SUCCESS; while ( cur < params + cnt ) { @@ -262,7 +263,7 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store } else if ( strcmp( type, "int" ) == 0 ) { - if ( verify_int ( val, int_params_store ) == 0 ) + if ( verify_int( val, int_params_store ) == 0 ) { *out++ = (char *) int_params_store++; } @@ -276,12 +277,7 @@ static int convert_params( size_t cnt , char ** params , int * int_params_store { if ( verify_string( &val ) == 0 ) { - int j; *int_params_store = unhexify( (unsigned char *) val, val ); - printf ("\n"); - for (j = 0; j < *int_params_store; j++) - printf ("%02x ", (uint8_t)val[j]); - printf ("\n len %d\n", *int_params_store); *out++ = val; *out++ = (char *)(int_params_store++); } @@ -401,7 +397,8 @@ int execute_tests( int argc , const char ** argv ) FILE *file; char buf[5000]; char *params[50]; - int int_params[50]; // Store for proccessed integer params. + /* Store for proccessed integer params. */ + int int_params[50]; void *pointer; #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) int stdout_fd = -1; @@ -436,10 +433,10 @@ int execute_tests( int argc , const char ** argv ) while( arg_index < argc ) { - next_arg = argv[ arg_index ]; + next_arg = argv[arg_index]; - if( strcmp(next_arg, "--verbose" ) == 0 || - strcmp(next_arg, "-v" ) == 0 ) + if( strcmp( next_arg, "--verbose" ) == 0 || + strcmp( next_arg, "-v" ) == 0 ) { option_verbose = 1; } diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index fa8a0afeef..9b37782782 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -16,7 +16,7 @@ * Test suite data : {test_case_data_file} * * - * This file is part of mbed TLS (https://tls.mbed.org) + * This file is part of Mbed TLS (https://tls.mbed.org) */ #if !defined(MBEDTLS_CONFIG_FILE) @@ -149,7 +149,7 @@ int dispatch_test( int func_idx, void ** params ) int ret = DISPATCH_TEST_SUCCESS; TestWrapper_t fp = NULL; - if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) + if ( func_idx < (int)( sizeof( test_funcs ) / sizeof( TestWrapper_t ) ) ) {{ fp = test_funcs[func_idx]; if ( fp ) diff --git a/tests/suites/target_test.function b/tests/suites/target_test.function index f662eee868..56abf29489 100644 --- a/tests/suites/target_test.function +++ b/tests/suites/target_test.function @@ -31,11 +31,11 @@ while( 0 ) * \param len Length of byte array * */ -#define ALIGN_32BIT(p, start, len) do \ -{ \ - uint32_t align = ( - (uintptr_t)( p ) ) % 4;\ - INCR_ASSERT( ( p ), ( start ), ( len ), align);\ -} \ +#define ALIGN_32BIT(p, start, len) do \ +{ \ + uint32_t align = ( - (uintptr_t)( p ) ) % 4; \ + INCR_ASSERT( ( p ), ( start ), ( len ), align );\ +} \ while( 0 ) @@ -210,7 +210,7 @@ uint32_t find_hex_count( uint8_t count, uint8_t * data, uint32_t data_len ) * the memory after use. */ void ** parse_parameters( uint8_t count, uint8_t * data, uint32_t data_len, - int * error ) + int * error ) { uint32_t i = 0, hex_count = 0; char c; @@ -393,7 +393,7 @@ int execute_tests( int args, const char ** argv ) if ( data ) { - free(data); + free( data ); data = NULL; } From 5cb7017077dcf9b1cc6eac277323ab2443678d78 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Thu, 19 Jul 2018 11:32:30 +0100 Subject: [PATCH 0765/1100] Less obscure test suites template --- tests/scripts/generate_test_code.py | 17 ++--- tests/suites/main_test.function | 108 ++++++++++++++-------------- 2 files changed, 63 insertions(+), 62 deletions(-) diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py index 26d1c29cb3..ce6f88c3cf 100755 --- a/tests/scripts/generate_test_code.py +++ b/tests/scripts/generate_test_code.py @@ -122,7 +122,7 @@ dependency checks, expression evaluation and function dispatch. These functions are populated with checks and return codes by this script. Template file contains "replacement" fields that are formatted -strings processed by Python str.format() method. +strings processed by Python string.Template.substitute() method. This script: ============ @@ -132,9 +132,9 @@ code that is generated or read from helpers and platform files. This script replaces following fields in the template and generates the test source file: -{test_common_helpers} <-- All common code from helpers.function +$test_common_helpers <-- All common code from helpers.function is substituted here. -{functions_code} <-- Test functions are substituted here +$functions_code <-- Test functions are substituted here from the input test_suit_xyz.function file. C preprocessor checks are generated for the build dependencies specified @@ -143,21 +143,21 @@ the test source file: functions with code to expand the string parameters read from the data file. -{expression_code} <-- This script enumerates the +$expression_code <-- This script enumerates the expressions in the .data file and generates code to handle enumerated expression Ids and return the values. -{dep_check_code} <-- This script enumerates all +$dep_check_code <-- This script enumerates all build dependencies and generate code to handle enumerated build dependency Id and return status: if the dependency is defined or not. -{dispatch_code} <-- This script enumerates the functions +$dispatch_code <-- This script enumerates the functions specified in the input test data file and generates the initializer for the function table in the template file. -{platform_code} <-- Platform specific setup and test +$platform_code <-- Platform specific setup and test dispatch code. """ @@ -167,6 +167,7 @@ import io import os import re import sys +import string import argparse @@ -967,7 +968,7 @@ def write_test_source_file(template_file, c_file, snippets): for line_no, line in enumerate(template_f.readlines(), 1): # Update line number. +1 as #line directive sets next line number snippets['line_no'] = line_no + 1 - code = line.format(**snippets) + code = string.Template(line).substitute(**snippets) c_f.write(code) diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function index 9b37782782..2ba919ce07 100644 --- a/tests/suites/main_test.function +++ b/tests/suites/main_test.function @@ -3,17 +3,17 @@ * *** THIS FILE HAS BEEN MACHINE GENERATED *** * * This file has been machine generated using the script: - * {generator_script} + * $generator_script * - * Test file : {test_file} + * Test file : $test_file * * The following files were used to create this file. * - * Main code file : {test_main_file} - * Platform code file : {test_platform_file} - * Helper file : {test_common_helper_file} - * Test suite file : {test_case_file} - * Test suite data : {test_case_data_file} + * Main code file : $test_main_file + * Platform code file : $test_platform_file + * Helper file : $test_common_helper_file + * Test suite file : $test_case_file + * Test suite data : $test_case_data_file * * * This file is part of Mbed TLS (https://tls.mbed.org) @@ -29,9 +29,9 @@ /*----------------------------------------------------------------------------*/ /* Common helper code */ -{test_common_helpers} +$test_common_helpers -#line {line_no} "suites/main_test.function" +#line $line_no "suites/main_test.function" /*----------------------------------------------------------------------------*/ @@ -40,9 +40,9 @@ #define TEST_SUITE_ACTIVE -{functions_code} +$functions_code -#line {line_no} "suites/main_test.function" +#line $line_no "suites/main_test.function" /*----------------------------------------------------------------------------*/ @@ -54,7 +54,7 @@ * For optimizing space for embedded targets each expression/macro * is identified by a unique identifier instead of string literals. * Identifiers and evaluation code is generated by script: - * {generator_script} + * $generator_script * * \param exp_id Expression identifier. * \param out_value Pointer to int to hold the integer. @@ -62,24 +62,24 @@ * \return 0 if exp_id is found. 1 otherwise. */ int get_expression( int32_t exp_id, int32_t * out_value ) -{{ +{ int ret = KEY_VALUE_MAPPING_FOUND; (void) exp_id; (void) out_value; switch( exp_id ) - {{ -{expression_code} -#line {line_no} "suites/main_test.function" + { +$expression_code +#line $line_no "suites/main_test.function" default: - {{ + { ret = KEY_VALUE_MAPPING_NOT_FOUND; - }} + } break; - }} + } return( ret ); -}} +} /** @@ -87,27 +87,27 @@ int get_expression( int32_t exp_id, int32_t * out_value ) * For optimizing space for embedded targets each dependency * is identified by a unique identifier instead of string literals. * Identifiers and check code is generated by script: - * {generator_script} + * $generator_script * * \param exp_id Dependency identifier. * * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED */ int dep_check( int dep_id ) -{{ +{ int ret = DEPENDENCY_NOT_SUPPORTED; (void) dep_id; switch( dep_id ) - {{ -{dep_check_code} -#line {line_no} "suites/main_test.function" + { +$dep_check_code +#line $line_no "suites/main_test.function" default: break; - }} + } return( ret ); -}} +} /** @@ -125,14 +125,14 @@ typedef void (*TestWrapper_t)( void ** ); /** * \brief Table of test function wrappers. Used by dispatch_test(). * This table is populated by script: - * {generator_script} + * $generator_script * */ TestWrapper_t test_funcs[] = -{{ -{dispatch_code} -#line {line_no} "suites/main_test.function" -}}; +{ +$dispatch_code +#line $line_no "suites/main_test.function" +}; /** @@ -145,25 +145,25 @@ TestWrapper_t test_funcs[] = * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. */ int dispatch_test( int func_idx, void ** params ) -{{ +{ int ret = DISPATCH_TEST_SUCCESS; TestWrapper_t fp = NULL; if ( func_idx < (int)( sizeof( test_funcs ) / sizeof( TestWrapper_t ) ) ) - {{ + { fp = test_funcs[func_idx]; if ( fp ) fp( params ); else - ret = ( DISPATCH_UNSUPPORTED_SUITE ); - }} + ret = DISPATCH_UNSUPPORTED_SUITE; + } else - {{ - ret = ( DISPATCH_TEST_FN_NOT_FOUND ); - }} + { + ret = DISPATCH_TEST_FN_NOT_FOUND; + } return( ret ); -}} +} /** @@ -176,28 +176,28 @@ int dispatch_test( int func_idx, void ** params ) * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. */ int check_test( int func_idx ) -{{ +{ int ret = DISPATCH_TEST_SUCCESS; TestWrapper_t fp = NULL; if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) - {{ + { fp = test_funcs[func_idx]; if ( fp == NULL ) - ret = ( DISPATCH_UNSUPPORTED_SUITE ); - }} + ret = DISPATCH_UNSUPPORTED_SUITE; + } else - {{ - ret = ( DISPATCH_TEST_FN_NOT_FOUND ); - }} + { + ret = DISPATCH_TEST_FN_NOT_FOUND; + } return( ret ); -}} +} -{platform_code} +$platform_code -#line {line_no} "suites/main_test.function" +#line $line_no "suites/main_test.function" /*----------------------------------------------------------------------------*/ /* Main Test code */ @@ -212,17 +212,17 @@ int check_test( int func_idx ) * \return Exit code. */ int main( int argc, const char *argv[] ) -{{ +{ int ret = platform_setup(); if( ret != 0 ) - {{ + { mbedtls_fprintf( stderr, "FATAL: Failed to initialize platform - error %d\n", ret ); return( -1 ); - }} + } ret = execute_tests( argc, argv ); platform_teardown(); return( ret ); -}} +} From 58e9c1833bfb386e385a345776c6f853306adddc Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Mon, 6 Aug 2018 11:48:06 +0100 Subject: [PATCH 0766/1100] Fix Wformat-overflow warning in ssl_mail_client.c sprintf( (char *) buf, "%s\r\n", base ); Above code generates Wformat-overflow warning since both buf and base are of same size. buf should be sizeof( base ) + characters added in the format. In this case format 2 bytes for "\r\n". --- programs/ssl/ssl_mail_client.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index d3b569cb0c..0ce6727dde 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -356,9 +356,11 @@ int main( int argc, char *argv[] ) int ret = 1, len; int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context server_fd; - unsigned char buf[1024]; #if defined(MBEDTLS_BASE64_C) unsigned char base[1024]; + unsigned char buf[ sizeof( base ) + 2 ]; +#else + unsigned char buf[1024]; #endif char hostname[32]; const char *pers = "ssl_mail_client"; From 27a046058a660f9c177587071d10ddd9446a53d9 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 6 Aug 2018 20:09:16 +0200 Subject: [PATCH 0767/1100] Unify the grammar of descriptions Use "program: does this and then does that" throughout. --- programs/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/programs/README.md b/programs/README.md index 7075ae2dd5..f9e961f884 100644 --- a/programs/README.md +++ b/programs/README.md @@ -26,25 +26,25 @@ This subdirectory mostly contains sample programs that illustrate specific featu * [`pkey/key_app_writer.c`](pkey/key_app_writer.c): loads a PEM or DER public key or private key file and writes it to a new PEM or DER file. -* [`pkey/pk_encrypt.c`](pkey/pk_encrypt.c), [`pkey/pk_decrypt.c`](pkey/pk_decrypt.c): load a PEM or DER public/private key file and use the key to encrypt/decrypt a short string through the generic public-key interface. +* [`pkey/pk_encrypt.c`](pkey/pk_encrypt.c), [`pkey/pk_decrypt.c`](pkey/pk_decrypt.c): loads a PEM or DER public/private key file and uses the key to encrypt/decrypt a short string through the generic public-key interface. -* [`pkey/pk_sign.c`](pkey/pk_sign.c), [`pkey/pk_verify.c`](pkey/pk_verify.c): load a PEM or DER private/public key file and use the key to sign/verify a short string. +* [`pkey/pk_sign.c`](pkey/pk_sign.c), [`pkey/pk_verify.c`](pkey/pk_verify.c): loads a PEM or DER private/public key file and uses the key to sign/verify a short string. ### ECDSA and RSA signature examples -* [`pkey/ecdsa.c`](pkey/ecdsa.c): generate an ECDSA key, sign a fixed message and verify the signature. +* [`pkey/ecdsa.c`](pkey/ecdsa.c): generates an ECDSA key, sign a fixed message and verify the signature. -* [`pkey/rsa_encrypt.c`](pkey/rsa_encrypt.c), [`pkey/rsa_decrypt.c`](pkey/rsa_decrypt.c): load an RSA public/private key and use it to encrypt/decrypt a short string through the low-level RSA interface. +* [`pkey/rsa_encrypt.c`](pkey/rsa_encrypt.c), [`pkey/rsa_decrypt.c`](pkey/rsa_decrypt.c): loads an RSA public/private key and uses it to encrypt/decrypt a short string through the low-level RSA interface. -* [`pkey/rsa_genkey.c`](pkey/rsa_genkey.c): generate an RSA key and write it to a file that can be used with the other RSA sample programs. +* [`pkey/rsa_genkey.c`](pkey/rsa_genkey.c): generates an RSA key and writes it to a file that can be used with the other RSA sample programs. -* [`pkey/rsa_sign.c`](pkey/rsa_sign.c), [`pkey/rsa_verify.c`](pkey/rsa_verify.c): load an RSA private/public key and use it to sign/verify a short string with the RSA PKCS#1 v1.5 algorithm. +* [`pkey/rsa_sign.c`](pkey/rsa_sign.c), [`pkey/rsa_verify.c`](pkey/rsa_verify.c): loads an RSA private/public key and uses it to sign/verify a short string with the RSA PKCS#1 v1.5 algorithm. -* [`pkey/rsa_sign_pss.c`](pkey/rsa_sign_pss.c), [`pkey/rsa_verify_pss.c`](pkey/rsa_verify_pss.c): load an RSA private/public key and use it to sign/verify a short string with the RSASSA-PSS algorithm. +* [`pkey/rsa_sign_pss.c`](pkey/rsa_sign_pss.c), [`pkey/rsa_verify_pss.c`](pkey/rsa_verify_pss.c): loads an RSA private/public key and use it to sign/verify a short string with the RSASSA-PSS algorithm. ### Diffie-Hellman key exchange examples -* [`pkey/dh_client.c`](pkey/dh_client.c), [`pkey/dh_server.c`](pkey/dh_server.c): secure channel demonstrators (client, server). Illustrates how to set up a secure channel using RSA for authentication and Diffie-Hellman to generate a shared AES session key. +* [`pkey/dh_client.c`](pkey/dh_client.c), [`pkey/dh_server.c`](pkey/dh_server.c): secure channel demonstrators (client, server). This pair of programs illustrates how to set up a secure channel using RSA for authentication and Diffie-Hellman to generate a shared AES session key. * [`pkey/ecdh_curve25519.c`](pkey/ecdh_curve25519.c): demonstration of a elliptic curve Diffie-Hellman (ECDH) key agreement. @@ -115,7 +115,7 @@ In addition to providing options for testing client-side features, the `ssl_clie * [`x509/cert_req.c`](x509/cert_req.c): generates a certificate signing request (CSR) for a private key. -* [`x509/cert_write.c`](x509/cert_write.c): signs a certificate signing request, or self-sign a certificate. +* [`x509/cert_write.c`](x509/cert_write.c): signs a certificate signing request, or self-signs a certificate. * [`x509/crl_app.c`](x509/crl_app.c): loads and dumps a certificate revocation list (CRL). From aa22030e21c7b2af27ee5095d823402af1e9072a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Mon, 6 Aug 2018 20:19:50 +0200 Subject: [PATCH 0768/1100] Further wording improvements --- programs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/programs/README.md b/programs/README.md index f9e961f884..ef20993e94 100644 --- a/programs/README.md +++ b/programs/README.md @@ -59,7 +59,7 @@ This subdirectory mostly contains sample programs that illustrate specific featu * [`random/gen_entropy.c`](random/gen_entropy.c): shows how to use the default entropy sources to generate random data. Note: most applications should only use the entropy generator to seed a cryptographic pseudorandom generator, as illustrated by `random/gen_random_ctr_drbg.c`. -* [`random/gen_random_ctr_drbg.c`](random/gen_random_ctr_drbg.c): shows how to use the default entropy sources to seed a pseudorandom generator, and using the resulting random generator to generate random data. +* [`random/gen_random_ctr_drbg.c`](random/gen_random_ctr_drbg.c): shows how to use the default entropy sources to seed a pseudorandom generator, and how to use the resulting random generator to generate random data. * [`random/gen_random_havege.c`](random/gen_random_havege.c): demonstrates the HAVEGE entropy collector. @@ -81,7 +81,7 @@ This subdirectory mostly contains sample programs that illustrate specific featu * [`ssl/ssl_pthread_server.c`](ssl/ssl_pthread_server.c): a simple HTTPS server using one thread per client to send a fixed response. This program requires the pthread library. -* [`ssl/ssl_server.c`](ssl/ssl_server.c): a simple HTTPS server that sends a fixed response. This server accepts a single client at a time. +* [`ssl/ssl_server.c`](ssl/ssl_server.c): a simple HTTPS server that sends a fixed response. It serves a single client at a time. ### SSL/TLS feature demonstrators @@ -91,7 +91,7 @@ Note: unlike most of the other programs under the `programs/` directory, these t * [`ssl/ssl_server2.c`](ssl/ssl_server2.c): an HTTPS server that sends a fixed response, with options to select TLS protocol features and Mbed TLS library features. -In addition to providing options for testing client-side features, the `ssl_client2` program has options to exercise certain behaviors in the server (for example, to select ciphersuites, or to force a renegotiation), which are useful to test the corresponding features in a TLS server. Likewise, `ssl_server2` has options to activate certain behaviors that are useful to test a TLS client. +In addition to providing options for testing client-side features, the `ssl_client2` program has options that allow you to trigger certain behaviors in the server. For example, there are options to select ciphersuites, or to force a renegotiation. These options are useful for testing the corresponding features in a TLS server. Likewise, `ssl_server2` has options to activate certain behaviors that are useful for testing a TLS client. ## Test utilities From ce6eebb0b89ce7deaa87009404399e9511c2af0b Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 7 Aug 2018 20:26:55 +0100 Subject: [PATCH 0769/1100] Use gmtime when target is not windows or posix --- include/mbedtls/threading.h | 9 +++++++++ library/threading.c | 17 +++++++++++++++++ library/x509.c | 24 +++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index c25daa5cdf..4cfaadde2a 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -99,6 +99,15 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); #if defined(MBEDTLS_FS_IO) extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif +#if defined(MBEDTLS_HAVE_TIME_DATE) +#if !defined(_WIN32) && (defined(__unix__) || \ + (defined(__APPLE__) && defined(__MACH__))) +#include +#if !defined(_POSIX_VERSION) +extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; +#endif /* !_POSIX_VERSION */ +#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ +#endif /* MBEDTLS_HAVE_TIME_DATE */ #endif /* MBEDTLS_THREADING_C */ #ifdef __cplusplus diff --git a/library/threading.c b/library/threading.c index 7a32e672c7..fa4f6c9289 100644 --- a/library/threading.c +++ b/library/threading.c @@ -29,6 +29,14 @@ #include "mbedtls/threading.h" +#if !defined(_WIN32) && (defined(__unix__) || \ + (defined(__APPLE__) && defined(__MACH__))) +#include +#if !defined(_POSIX_VERSION) +#define MBEDTLS_THREADING_USE_GMTIME +#endif /* !_POSIX_VERSION */ +#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ + #if defined(MBEDTLS_THREADING_PTHREAD) static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) { @@ -114,6 +122,9 @@ void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * #if defined(MBEDTLS_FS_IO) mbedtls_mutex_init( &mbedtls_threading_readdir_mutex ); #endif +#if defined(MBEDTLS_THREADING_USE_GMTIME) + mbedtls_mutex_init( &mbedtls_threading_gmtime_mutex ); +#endif } /* @@ -124,6 +135,9 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_mutex_free( &mbedtls_threading_readdir_mutex ); #endif +#if defined(MBEDTLS_THREADING_USE_GMTIME) + mbedtls_mutex_free( &mbedtls_threading_gmtime_mutex ); +#endif } #endif /* MBEDTLS_THREADING_ALT */ @@ -136,5 +150,8 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex MUTEX_INIT; #endif +#if defined(MBEDTLS_THREADING_USE_GMTIME) +mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex MUTEX_INIT; +#endif #endif /* MBEDTLS_THREADING_C */ diff --git a/library/x509.c b/library/x509.c index 2e6795f750..b7e799b44d 100644 --- a/library/x509.c +++ b/library/x509.c @@ -890,6 +890,14 @@ int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ) } #if defined(MBEDTLS_HAVE_TIME_DATE) +#if !defined(_WIN32) && (defined(__unix__) || \ + (defined(__APPLE__) && defined(__MACH__))) +#include +#if !defined(_POSIX_VERSION) +#define MBEDTLS_X509_USE_GMTIME +#endif /* !_POSIX_VERSION */ +#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ + /* * Set the time structure to the current time. * Return 0 on success, non-zero on failure. @@ -900,11 +908,20 @@ static int x509_get_current_time( mbedtls_x509_time *now ) mbedtls_time_t tt; int ret = 0; + (void)tm_buf; + +#if defined(MBEDTLS_THREADING_C) && defined(MBEDTLS_X509_USE_GMTIME) + if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 ) + return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); +#endif /* MBEDTLS_THREADING_C && MBEDTLS_X509_USE_GMTIME */ + tt = mbedtls_time( NULL ); #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) lt = gmtime_s( &tm_buf, &tt ) == 0 ? &tm_buf : NULL; -#else +#elif defined(_POSIX_VERSION) lt = gmtime_r( &tt, &tm_buf ); +#else + lt = gmtime( &tt ); #endif if( lt == NULL ) @@ -919,6 +936,11 @@ static int x509_get_current_time( mbedtls_x509_time *now ) now->sec = lt->tm_sec; } +#if defined(MBEDTLS_THREADING_C) && defined(MBEDTLS_X509_USE_GMTIME) + if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 ) + return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); +#endif /* MBEDTLS_THREADING_C && MBEDTLS_X509_USE_GMTIME */ + return( ret ); } From 824dfb34b4b34854daefa71211a8896c634f33f4 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 7 Aug 2018 20:29:57 +0100 Subject: [PATCH 0770/1100] Add ChangeLog entry for use of gmtime --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index bda3de8f5c..d8b2829900 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ mbed TLS ChangeLog (Sorted per branch, date) Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 + * Fix build failures on where only gmtime() is available but neither + gmtime_r() nor gmtime_s() are present. Fixes #1907. = mbed TLS 2.12.0 branch released 2018-07-25 From 97f3ecb972f2901c55c9a490a69f175012e7e6d1 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 7 Aug 2018 20:39:27 +0100 Subject: [PATCH 0771/1100] Document dependency on gmtime, gmtime_r & gmtime_s --- include/mbedtls/config.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 70820be56f..9ee86ff240 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -137,12 +137,20 @@ /** * \def MBEDTLS_HAVE_TIME_DATE * - * System has time.h and time(), gmtime() and the clock is correct. + * System has time.h and time(), gmtime_s() (Windows), gmtime_r() (POSIX) or + * gmtime() and the clock is correct. * The time needs to be correct (not necesarily very accurate, but at least * the date should be correct). This is used to verify the validity period of * X.509 certificates. * * Comment if your system does not have a correct clock. + * + * \warning gmtime() is used if the target platform is neither Windows nor + * POSIX. Unfortunately, gmtime() is not thread-safe, so a mutex is used when + * MBEDTLS_THREADING_C is defined to guarantee sequential usage of gmtime() + * across Mbed TLS threads. However, applications must ensure that calls to + * gmtime() from outside the library also use the mutex to avoid concurrency + * issues. */ #define MBEDTLS_HAVE_TIME_DATE From d7177435e3eb9ec7c1c34e16da9b6385003543e9 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 8 Aug 2018 09:41:17 +0100 Subject: [PATCH 0772/1100] Fix check-names.sh fail with USE_GMTIME macro --- library/threading.c | 8 ++++---- library/x509.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/library/threading.c b/library/threading.c index fa4f6c9289..95ae8d1446 100644 --- a/library/threading.c +++ b/library/threading.c @@ -33,7 +33,7 @@ (defined(__APPLE__) && defined(__MACH__))) #include #if !defined(_POSIX_VERSION) -#define MBEDTLS_THREADING_USE_GMTIME +#define THREADING_USE_GMTIME #endif /* !_POSIX_VERSION */ #endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ @@ -122,7 +122,7 @@ void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * #if defined(MBEDTLS_FS_IO) mbedtls_mutex_init( &mbedtls_threading_readdir_mutex ); #endif -#if defined(MBEDTLS_THREADING_USE_GMTIME) +#if defined(THREADING_USE_GMTIME) mbedtls_mutex_init( &mbedtls_threading_gmtime_mutex ); #endif } @@ -135,7 +135,7 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_mutex_free( &mbedtls_threading_readdir_mutex ); #endif -#if defined(MBEDTLS_THREADING_USE_GMTIME) +#if defined(THREADING_USE_GMTIME) mbedtls_mutex_free( &mbedtls_threading_gmtime_mutex ); #endif } @@ -150,7 +150,7 @@ void mbedtls_threading_free_alt( void ) #if defined(MBEDTLS_FS_IO) mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex MUTEX_INIT; #endif -#if defined(MBEDTLS_THREADING_USE_GMTIME) +#if defined(THREADING_USE_GMTIME) mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex MUTEX_INIT; #endif diff --git a/library/x509.c b/library/x509.c index b7e799b44d..03c3bbe1dd 100644 --- a/library/x509.c +++ b/library/x509.c @@ -894,7 +894,7 @@ int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ) (defined(__APPLE__) && defined(__MACH__))) #include #if !defined(_POSIX_VERSION) -#define MBEDTLS_X509_USE_GMTIME +#define X509_USE_GMTIME #endif /* !_POSIX_VERSION */ #endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ @@ -910,10 +910,10 @@ static int x509_get_current_time( mbedtls_x509_time *now ) (void)tm_buf; -#if defined(MBEDTLS_THREADING_C) && defined(MBEDTLS_X509_USE_GMTIME) +#if defined(MBEDTLS_THREADING_C) && defined(X509_USE_GMTIME) if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 ) return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif /* MBEDTLS_THREADING_C && MBEDTLS_X509_USE_GMTIME */ +#endif /* MBEDTLS_THREADING_C && X509_USE_GMTIME */ tt = mbedtls_time( NULL ); #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) @@ -936,10 +936,10 @@ static int x509_get_current_time( mbedtls_x509_time *now ) now->sec = lt->tm_sec; } -#if defined(MBEDTLS_THREADING_C) && defined(MBEDTLS_X509_USE_GMTIME) +#if defined(MBEDTLS_THREADING_C) && defined(X509_USE_GMTIME) if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 ) return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif /* MBEDTLS_THREADING_C && MBEDTLS_X509_USE_GMTIME */ +#endif /* MBEDTLS_THREADING_C && X509_USE_GMTIME */ return( ret ); } From 0b54419bc8c7274bb66cbd5fe320eb82506ba29c Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 10 Aug 2018 11:32:11 +0200 Subject: [PATCH 0773/1100] More grammar alignment --- programs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/README.md b/programs/README.md index ef20993e94..d8e4cd62b8 100644 --- a/programs/README.md +++ b/programs/README.md @@ -32,7 +32,7 @@ This subdirectory mostly contains sample programs that illustrate specific featu ### ECDSA and RSA signature examples -* [`pkey/ecdsa.c`](pkey/ecdsa.c): generates an ECDSA key, sign a fixed message and verify the signature. +* [`pkey/ecdsa.c`](pkey/ecdsa.c): generates an ECDSA key, signs a fixed message and verifies the signature. * [`pkey/rsa_encrypt.c`](pkey/rsa_encrypt.c), [`pkey/rsa_decrypt.c`](pkey/rsa_decrypt.c): loads an RSA public/private key and uses it to encrypt/decrypt a short string through the low-level RSA interface. @@ -40,7 +40,7 @@ This subdirectory mostly contains sample programs that illustrate specific featu * [`pkey/rsa_sign.c`](pkey/rsa_sign.c), [`pkey/rsa_verify.c`](pkey/rsa_verify.c): loads an RSA private/public key and uses it to sign/verify a short string with the RSA PKCS#1 v1.5 algorithm. -* [`pkey/rsa_sign_pss.c`](pkey/rsa_sign_pss.c), [`pkey/rsa_verify_pss.c`](pkey/rsa_verify_pss.c): loads an RSA private/public key and use it to sign/verify a short string with the RSASSA-PSS algorithm. +* [`pkey/rsa_sign_pss.c`](pkey/rsa_sign_pss.c), [`pkey/rsa_verify_pss.c`](pkey/rsa_verify_pss.c): loads an RSA private/public key and uses it to sign/verify a short string with the RSASSA-PSS algorithm. ### Diffie-Hellman key exchange examples From ffbdc614493e9688ece2c11ab87fadff8aab9dde Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 10 Aug 2018 11:48:52 +0200 Subject: [PATCH 0774/1100] Add test/zeroize.c --- programs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/programs/README.md b/programs/README.md index d8e4cd62b8..eb25a7f694 100644 --- a/programs/README.md +++ b/programs/README.md @@ -103,6 +103,8 @@ In addition to providing options for testing client-side features, the `ssl_clie * [`test/udp_proxy.c`](test/udp_proxy.c): a UDP proxy that can inject certain failures (delay, duplicate, drop). Useful for testing DTLS. +* [`test/zeroize.c`](test/zeroize.c): a test program for `mbedtls_platform_zeroize`, used by [`tests/scripts/test_zeroize.gdb`](tests/scripts/test_zeroize.gdb). + ## Development utilities * [`util/pem2der.c`](util/pem2der.c): a PEM to DER converter. Mbed TLS can read PEM files directly, but this utility can be useful for interacting with other tools or with minimal Mbed TLS builds that lack PEM support. From 372b50b25205329003a825563e3e8c0ecac81c0c Mon Sep 17 00:00:00 2001 From: Jaeden Amero Date: Fri, 10 Aug 2018 10:56:31 +0100 Subject: [PATCH 0775/1100] Add a ChangeLog entry for #1816 --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 8c757a5123..0642bea78b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,10 @@ Bugfix * Fix a memory leak in ecp_mul_comb() if ecp_precompute_comb() fails. Fix contributed by Espressif Systems. +Changes + * Copy headers preserving timestamps when doing a "make install". + Contributed by xueruini. + = mbed TLS 2.12.0 branch released 2018-07-25 Security From d1a4762adb4a05fdf297d960383aec19ac578b35 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 13 Aug 2018 13:49:52 +0300 Subject: [PATCH 0776/1100] Use mbedtls_printf instead of printf Replace usages of `printf()` with `mbedtls_printf()` in `aria.c` which were accidently merged. Fixes #1908 --- ChangeLog | 1 + library/aria.c | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index abd5e61bbd..61d0e4e83f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. + * Replace printf with mbedtls_printf in aria. Found by TrinityTonic in #1908. Changes * Copy headers preserving timestamps when doing a "make install". diff --git a/library/aria.c b/library/aria.c index e9bcd6d135..ca9e147f0d 100644 --- a/library/aria.c +++ b/library/aria.c @@ -875,11 +875,11 @@ static const uint8_t aria_test2_ctr_ct[3][48] = // CTR ciphertext #define ARIA_SELF_TEST_IF_FAIL \ { \ if( verbose ) \ - printf( "failed\n" ); \ + mbedtls_printf( "failed\n" ); \ return( 1 ); \ } else { \ if( verbose ) \ - printf( "passed\n" ); \ + mbedtls_printf( "passed\n" ); \ } /* @@ -908,7 +908,7 @@ int mbedtls_aria_self_test( int verbose ) { /* test ECB encryption */ if( verbose ) - printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-ECB-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, aria_test1_ecb_pt, blk ); if( memcmp( blk, aria_test1_ecb_ct[i], MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) @@ -916,14 +916,14 @@ int mbedtls_aria_self_test( int verbose ) /* test ECB decryption */ if( verbose ) - printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-ECB-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_dec( &ctx, aria_test1_ecb_key, 128 + 64 * i ); mbedtls_aria_crypt_ecb( &ctx, aria_test1_ecb_ct[i], blk ); if( memcmp( blk, aria_test1_ecb_pt, MBEDTLS_ARIA_BLOCKSIZE ) != 0 ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf( "\n" ); + mbedtls_printf( "\n" ); /* * Test set 2 @@ -933,7 +933,7 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CBC encryption */ if( verbose ) - printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CBC-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0x55, sizeof( buf ) ); @@ -944,7 +944,7 @@ int mbedtls_aria_self_test( int verbose ) /* Test CBC decryption */ if( verbose ) - printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CBC-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_dec( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0xAA, sizeof( buf ) ); @@ -954,7 +954,7 @@ int mbedtls_aria_self_test( int verbose ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf( "\n" ); + mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CBC */ @@ -963,7 +963,7 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CFB encryption */ if( verbose ) - printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CFB-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0x55, sizeof( buf ) ); @@ -975,7 +975,7 @@ int mbedtls_aria_self_test( int verbose ) /* Test CFB decryption */ if( verbose ) - printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CFB-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memcpy( iv, aria_test2_iv, MBEDTLS_ARIA_BLOCKSIZE ); memset( buf, 0xAA, sizeof( buf ) ); @@ -986,7 +986,7 @@ int mbedtls_aria_self_test( int verbose ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf( "\n" ); + mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CFB */ #if defined(MBEDTLS_CIPHER_MODE_CTR) @@ -994,7 +994,7 @@ int mbedtls_aria_self_test( int verbose ) { /* Test CTR encryption */ if( verbose ) - printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CTR-%d (enc): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 memset( buf, 0x55, sizeof( buf ) ); @@ -1006,7 +1006,7 @@ int mbedtls_aria_self_test( int verbose ) /* Test CTR decryption */ if( verbose ) - printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i ); + mbedtls_printf( " ARIA-CTR-%d (dec): ", 128 + 64 * i ); mbedtls_aria_setkey_enc( &ctx, aria_test2_key, 128 + 64 * i ); memset( iv, 0, MBEDTLS_ARIA_BLOCKSIZE ); // IV = 0 memset( buf, 0xAA, sizeof( buf ) ); @@ -1017,7 +1017,7 @@ int mbedtls_aria_self_test( int verbose ) ARIA_SELF_TEST_IF_FAIL; } if( verbose ) - printf( "\n" ); + mbedtls_printf( "\n" ); #endif /* MBEDTLS_CIPHER_MODE_CTR */ return( 0 ); From 446227a1bd177e988091acb84d338316262f4924 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 13 Aug 2018 14:46:45 +0300 Subject: [PATCH 0777/1100] Enhance nist_kw with some NULL buffers tests Enhance the nist_kw test suite, with setting zero length input\output buffers. Resolves #1882. --- tests/suites/test_suite_nist_kw.data | 21 ++++++++++++++++ tests/suites/test_suite_nist_kw.function | 32 +++++++++++++----------- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/tests/suites/test_suite_nist_kw.data b/tests/suites/test_suite_nist_kw.data index eee45743ed..446255857b 100644 --- a/tests/suites/test_suite_nist_kw.data +++ b/tests/suites/test_suite_nist_kw.data @@ -69,6 +69,27 @@ nist_kw_ciphertext_lengths:32:16:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT NIST KW lengths #16 KWP unwrapping output buffer too short nist_kw_ciphertext_lengths:24:12:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA +NIST KW lengths #17 KW plaintext NULL (2 to 2^54 - 1 semiblocks) +nist_kw_plaintext_lengths:0:8:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #18 KW wrapping output NULL +nist_kw_plaintext_lengths:8:0:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #19 KWP wrapping output NULL +nist_kw_plaintext_lengths:8:0:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #20 KW ciphertext NULL +nist_kw_ciphertext_lengths:0:8:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #21 KWP ciphertext NULL +nist_kw_ciphertext_lengths:0:8:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #15 KW unwrapping output NULL +nist_kw_ciphertext_lengths:32:0:MBEDTLS_KW_MODE_KW:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + +NIST KW lengths #16 KWP unwrapping output NULL +nist_kw_ciphertext_lengths:24:0:MBEDTLS_KW_MODE_KWP:MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA + NIST KW wrap AES-128 CAVS 17.4 PLAINTEXT LENGTH = 128 count 7 depends_on:MBEDTLS_AES_C mbedtls_nist_kw_wrap:MBEDTLS_CIPHER_ID_AES:MBEDTLS_KW_MODE_KW:"095e293f31e317ba6861114b95c90792":"64349d506ae85ecd84459c7a5c423f55":"97de4425572274bd7fb2d6688d5afd4454d992348d42a643" diff --git a/tests/suites/test_suite_nist_kw.function b/tests/suites/test_suite_nist_kw.function index eb67c03f0c..ff5bb8be0d 100644 --- a/tests/suites/test_suite_nist_kw.function +++ b/tests/suites/test_suite_nist_kw.function @@ -158,19 +158,17 @@ void nist_kw_plaintext_lengths( int in_len, int out_len, int mode, int res ) memset( key, 0, sizeof( key ) ); - if (in_len == 0) - { - /* mbedtls_calloc can return NULL for zero-length buffers. Make sure we - * always have a plaintext buffer, even if the length is 0. */ - plaintext = mbedtls_calloc( 1, 1 ); - } - else + if( in_len != 0 ) { plaintext = mbedtls_calloc( 1, in_len ); } - TEST_ASSERT( plaintext != NULL ); - ciphertext = mbedtls_calloc( 1, output_len ); - TEST_ASSERT( ciphertext != NULL ); + TEST_ASSERT( in_len == 0 || plaintext != NULL ); + + if( out_len != 0 ) + { + ciphertext = mbedtls_calloc( 1, output_len ); + } + TEST_ASSERT( out_len == 0 || ciphertext != NULL ); memset( plaintext, 0, in_len ); memset( ciphertext, 0, output_len ); @@ -216,10 +214,16 @@ void nist_kw_ciphertext_lengths( int in_len, int out_len, int mode, int res ) memset( key, 0, sizeof( key ) ); - plaintext = mbedtls_calloc( 1, output_len ); - TEST_ASSERT( plaintext != NULL ); - ciphertext = mbedtls_calloc( 1, in_len ); - TEST_ASSERT( ciphertext != NULL ); + if( out_len != 0 ) + { + plaintext = mbedtls_calloc( 1, output_len ); + } + TEST_ASSERT( out_len == 0 || plaintext != NULL ); + if( in_len != 0 ) + { + ciphertext = mbedtls_calloc( 1, in_len ); + } + TEST_ASSERT( in_len == 0 || ciphertext != NULL ); memset( plaintext, 0, output_len ); memset( ciphertext, 0, in_len ); From 7864090ec1ac5ebcdb76db39f324a0faf8e4cf18 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 13 Aug 2018 16:35:15 +0100 Subject: [PATCH 0778/1100] Reset session_in/out pointers in ssl_session_reset_int() Fixes #1941. --- library/ssl_tls.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 91f96c8ab6..3b047fc0bf 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -5973,6 +5973,9 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->transform_in = NULL; ssl->transform_out = NULL; + ssl->session_in = NULL; + ssl->session_out = NULL; + memset( ssl->out_buf, 0, MBEDTLS_SSL_OUT_BUFFER_LEN ); if( partial == 0 ) memset( ssl->in_buf, 0, MBEDTLS_SSL_IN_BUFFER_LEN ); @@ -6842,14 +6845,14 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) size_t transform_expansion; const mbedtls_ssl_transform *transform = ssl->transform_out; + if( transform == NULL ) + return( (int) mbedtls_ssl_hdr_len( ssl ) ); + #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); #endif - if( transform == NULL ) - return( (int) mbedtls_ssl_hdr_len( ssl ) ); - switch( mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ) ) { case MBEDTLS_MODE_GCM: From 361f254eab6780f05ecb10ceb66022a2197d48a8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 13 Aug 2018 16:36:58 +0100 Subject: [PATCH 0779/1100] Adapt ChangeLog --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index abd5e61bbd..61a6552efa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,8 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. + * Fix potential segmentation fault in mbedtls_ssl_get_max_frag_len() + and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. Changes * Copy headers preserving timestamps when doing a "make install". From 9ebdcffef4d1841dc2e81f41c25ad200ac91e049 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Mon, 6 Aug 2018 11:48:06 +0100 Subject: [PATCH 0780/1100] Fix Wformat-overflow warning in ssl_mail_client.c sprintf( (char *) buf, "%s\r\n", base ); Above code generates Wformat-overflow warning since both buf and base are of same size. buf should be sizeof( base ) + characters added in the format. In this case format 2 bytes for "\r\n". --- programs/ssl/ssl_mail_client.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_mail_client.c b/programs/ssl/ssl_mail_client.c index d3b569cb0c..16cedfe946 100644 --- a/programs/ssl/ssl_mail_client.c +++ b/programs/ssl/ssl_mail_client.c @@ -356,9 +356,15 @@ int main( int argc, char *argv[] ) int ret = 1, len; int exit_code = MBEDTLS_EXIT_FAILURE; mbedtls_net_context server_fd; - unsigned char buf[1024]; #if defined(MBEDTLS_BASE64_C) unsigned char base[1024]; + /* buf is used as the destination buffer for printing base with the format: + * "%s\r\n". Hence, the size of buf should be at least the size of base + * plus 2 bytes for the \r and \n characters. + */ + unsigned char buf[sizeof( base ) + 2]; +#else + unsigned char buf[1024]; #endif char hostname[32]; const char *pers = "ssl_mail_client"; From 9dc3be760131fbd4aa1637b9d961ce7a9178c12d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 15:22:05 +0100 Subject: [PATCH 0781/1100] Improve wording in ChangeLog --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 61a6552efa..59561fd072 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,7 +10,7 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. - * Fix potential segmentation fault in mbedtls_ssl_get_max_frag_len() + * Fix potential use-after-free in mbedtls_ssl_get_max_frag_len() and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. Changes From d0a78e91b39e3851b69550d214872a812d1130ac Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Mon, 6 Aug 2018 13:55:46 +0100 Subject: [PATCH 0782/1100] HKDF: Fix style issue --- include/mbedtls/hkdf.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/hkdf.h b/include/mbedtls/hkdf.h index 6833e7272e..235c5ad5e3 100644 --- a/include/mbedtls/hkdf.h +++ b/include/mbedtls/hkdf.h @@ -99,8 +99,8 @@ int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, * * \param md A hash function; md.size denotes the length of the hash * function output in bytes. - * \param prk A pseudorandom key of at least md.size bytes. \p prk is usually, - * the output from the HKDF extract step. + * \param prk A pseudorandom key of at least md.size bytes. \p prk is + * usually the output from the HKDF extract step. * \param prk_len The length in bytes of \p prk. * \param info An optional context and application specific information * string. This can be a zero-length string. From 08a4aebc4694640f555b775f3bc4ad0a6a74170e Mon Sep 17 00:00:00 2001 From: Janos Follath Date: Mon, 6 Aug 2018 14:20:15 +0100 Subject: [PATCH 0783/1100] HKDF: Add warning to partial functions The standard HKDF security guarantees only hold if `mbedtls_hkdf()` is used or if `mbedtls_hkdf_extract()` and `mbedtls_hkdf_expand()` are called in succession carefully and an equivalent way. Making `mbedtls_hkdf_extract()` and `mbedtls_hkdf_expand()` static would prevent any misuse, but doing so would require the TLS 1.3 stack to break abstraction and bypass the module API. To reduce the risk of misuse we add warnings to the function descriptions. --- ChangeLog | 5 +++++ include/mbedtls/hkdf.h | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index bda3de8f5c..5575678830 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,11 @@ Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 +Changes + * Add warnings to the documentation of the HKDF module to reduce the risk + of misusing the mbedtls_hkdf_extract() and mbedtls_hkdf_expand() + functions. Fixes #1775. Reported by Brian J. Murray. + = mbed TLS 2.12.0 branch released 2018-07-25 Security diff --git a/include/mbedtls/hkdf.h b/include/mbedtls/hkdf.h index 235c5ad5e3..e6ed7cde97 100644 --- a/include/mbedtls/hkdf.h +++ b/include/mbedtls/hkdf.h @@ -73,6 +73,11 @@ int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt, * \brief Take the input keying material \p ikm and extract from it a * fixed-length pseudorandom key \p prk. * + * \warning This function should only be used if the security of it has been + * studied and established in that particular context (eg. TLS 1.3 + * key schedule). For standard HKDF security guarantees use + * \c mbedtls_hkdf instead. + * * \param md A hash function; md.size denotes the length of the * hash function output in bytes. * \param salt An optional salt value (a non-secret random value); @@ -97,6 +102,11 @@ int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, * \brief Expand the supplied \p prk into several additional pseudorandom * keys, which is the output of the HKDF. * + * \warning This function should only be used if the security of it has been + * studied and established in that particular context (eg. TLS 1.3 + * key schedule). For standard HKDF security guarantees use + * \c mbedtls_hkdf instead. + * * \param md A hash function; md.size denotes the length of the hash * function output in bytes. * \param prk A pseudorandom key of at least md.size bytes. \p prk is From 2c069dfad3aba3d8267a27d84dd7e253584c8e13 Mon Sep 17 00:00:00 2001 From: Mohammad Azim Khan Date: Wed, 15 Aug 2018 13:55:37 +0100 Subject: [PATCH 0784/1100] Fix typo in test_suite_entropy.function --- tests/suites/test_suite_entropy.function | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/suites/test_suite_entropy.function b/tests/suites/test_suite_entropy.function index 26a0f5911a..0b1cfe80d4 100644 --- a/tests/suites/test_suite_entropy.function +++ b/tests/suites/test_suite_entropy.function @@ -311,7 +311,6 @@ void entropy_nv_seed( data_t * read_seed ) unsigned char entropy[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char buf[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char empty[MBEDTLS_ENTROPY_BLOCK_SIZE]; - unsigned char read_seed->x[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char check_seed[MBEDTLS_ENTROPY_BLOCK_SIZE]; unsigned char check_entropy[MBEDTLS_ENTROPY_BLOCK_SIZE]; @@ -323,7 +322,7 @@ void entropy_nv_seed( data_t * read_seed ) memset( check_entropy, 3, MBEDTLS_ENTROPY_BLOCK_SIZE ); // Set the initial NV seed to read - memcpy( buffer_seed, read_seed->x, MBEDTLS_ENTROPY_BLOCK_SIZE ); + memcpy( buffer_seed, read_seed->x, read_seed->len ); // Make sure we read/write NV seed from our buffers mbedtls_platform_set_nv_seed( buffer_nv_seed_read, buffer_nv_seed_write ); @@ -348,7 +347,7 @@ void entropy_nv_seed( data_t * read_seed ) // First run for updating write_seed header[0] = 0; mbedtls_sha512_update( &accumulator, header, 2 ); - mbedtls_sha512_update( &accumulator, read_seed->x, MBEDTLS_ENTROPY_BLOCK_SIZE ); + mbedtls_sha512_update( &accumulator, read_seed->x, read_seed->len ); mbedtls_sha512_finish( &accumulator, buf ); memset( &accumulator, 0, sizeof( mbedtls_sha512_context ) ); From 31c1586893d975b139af191329eaafe19965506f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Sep 2017 09:38:11 +0200 Subject: [PATCH 0785/1100] Start separating handshake from record writing --- include/mbedtls/ssl_internal.h | 1 + library/ssl_cli.c | 12 +++--- library/ssl_srv.c | 20 ++++----- library/ssl_tls.c | 76 +++++++++++++++++++++++++++------- 4 files changed, 79 insertions(+), 30 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index d214703d77..68b5f3033b 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -559,6 +559,7 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ); int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ); +int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ); int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ); int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 321d6367a0..253c81f730 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1088,9 +1088,9 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) mbedtls_ssl_send_flight_completed( ssl ); #endif - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -3075,9 +3075,9 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -3260,9 +3260,9 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl ) ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 2872f1fb09..66de2e46ca 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2384,9 +2384,9 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) ssl->state = MBEDTLS_SSL_SERVER_HELLO_VERIFY_REQUEST_SENT; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -2624,7 +2624,7 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl ) ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_SERVER_HELLO; - ret = mbedtls_ssl_write_record( ssl ); + ret = mbedtls_ssl_write_handshake_msg( ssl ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server hello" ) ); @@ -2819,7 +2819,7 @@ static int ssl_write_certificate_request( mbedtls_ssl_context *ssl ) ssl->out_msg[4 + ct_len + sa_len] = (unsigned char)( total_dn_size >> 8 ); ssl->out_msg[5 + ct_len + sa_len] = (unsigned char)( total_dn_size ); - ret = mbedtls_ssl_write_record( ssl ); + ret = mbedtls_ssl_write_handshake_msg( ssl ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write certificate request" ) ); @@ -3336,9 +3336,9 @@ static int ssl_write_server_key_exchange( mbedtls_ssl_context *ssl ) ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -3363,9 +3363,9 @@ static int ssl_write_server_hello_done( mbedtls_ssl_context *ssl ) mbedtls_ssl_send_flight_completed( ssl ); #endif - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -4227,9 +4227,9 @@ static int ssl_write_new_session_ticket( mbedtls_ssl_context *ssl ) */ ssl->handshake->new_session_ticket = 0; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 3b047fc0bf..464cf69333 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2927,19 +2927,41 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_PROTO_DTLS */ /* - * Record layer functions + * Handshake layer functions */ /* - * Write current record. - * Uses ssl->out_msgtype, ssl->out_msglen and bytes at ssl->out_msg. + * Write current handshake (including CCS) message. + * + * - fill in handshake headers + * - update handshake checksum + * - DTLS: save message for resending + * - then pass to the record layer + * + * Inputs: + * - ssl->out_msglen: 4 + actual handshake message len + * (4 is the size of handshake headers for TLS) + * - ssl->out_msg[0]: the handshake type (ClientHello, ServerHello, etc) + * - ssl->out_msg + 4: the handshake message body + * + * Outputs: + * - ssl->out_msglen: the length of the record contents + * (including handshake headers but excluding record headers) + * - ssl->out_msg: the record contents (handshake headers + content) */ -int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) { - int ret, done = 0, out_msg_type; + int ret, out_msg_type; size_t len = ssl->out_msglen; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write record" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write handshake message" ) ); + + if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && + ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && @@ -3028,6 +3050,32 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) } #endif + ret = mbedtls_ssl_write_record( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write handshake message" ) ); + + return( ret ); +} + +/* + * Record layer functions + */ + +/* + * Write current record. + * + * Uses: + * - ssl->out_msgtype: type of the message (AppData, Handshake, Alert, CCS) + * - ssl->out_msglen: length of the record content (excl headers) + * - ssl->out_msg: record content + */ +int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) +{ + int ret, done = 0; + size_t len = ssl->out_msglen; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write record" ) ); + #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->transform_out != NULL && ssl->session_out->compression == MBEDTLS_SSL_COMPRESS_DEFLATE ) @@ -4542,9 +4590,9 @@ write_msg: ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -4955,9 +5003,9 @@ int mbedtls_ssl_write_change_cipher_spec( mbedtls_ssl_context *ssl ) ssl->state++; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -5583,9 +5631,9 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) mbedtls_ssl_send_flight_completed( ssl ); #endif - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } @@ -6984,9 +7032,9 @@ static int ssl_write_hello_request( mbedtls_ssl_context *ssl ) ssl->out_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; ssl->out_msg[0] = MBEDTLS_SSL_HS_HELLO_REQUEST; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_handshake_msg( ssl ) ) != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_handshake_msg", ret ); return( ret ); } From 9c3a8caa928d2ea1679f3ec088b5afcfc533c185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Sep 2017 09:54:27 +0200 Subject: [PATCH 0786/1100] Clarify code a bit in write_handshake_msg() - take advantage of the fact that we're only called for first send - put all sanity checks at the top - rename and constify shortcut variables - improve comments --- library/ssl_tls.c | 64 ++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 464cf69333..b66b4fec42 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2938,6 +2938,8 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) * - DTLS: save message for resending * - then pass to the record layer * + * DTLS: only used when first writing the message, not for resending. + * * Inputs: * - ssl->out_msglen: 4 + actual handshake message len * (4 is the size of handshake headers for TLS) @@ -2951,11 +2953,15 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) */ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) { - int ret, out_msg_type; - size_t len = ssl->out_msglen; + int ret; + const size_t hs_len = ssl->out_msglen - 4; + const unsigned char hs_type = ssl->out_msg[0]; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write handshake message" ) ); + /* + * Sanity checks + */ if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) { @@ -2963,29 +2969,32 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } + if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST && + ssl->handshake == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && ssl->handshake != NULL && ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) { - ; /* Skip special handshake treatment when resending */ + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); } - else #endif + + /* + * Fill handshake headers + */ if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) { - out_msg_type = ssl->out_msg[0]; - - if( out_msg_type != MBEDTLS_SSL_HS_HELLO_REQUEST && - ssl->handshake == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); - } - - ssl->out_msg[1] = (unsigned char)( ( len - 4 ) >> 16 ); - ssl->out_msg[2] = (unsigned char)( ( len - 4 ) >> 8 ); - ssl->out_msg[3] = (unsigned char)( ( len - 4 ) ); + ssl->out_msg[1] = (unsigned char)( hs_len >> 16 ); + ssl->out_msg[2] = (unsigned char)( hs_len >> 8 ); + ssl->out_msg[3] = (unsigned char)( hs_len ); /* * DTLS has additional fields in the Handshake layer, @@ -3002,17 +3011,16 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "DTLS handshake message too large: " "size %u, maximum %u", - (unsigned) ( ssl->in_hslen - 4 ), + (unsigned) ( hs_len ), (unsigned) ( MBEDTLS_SSL_OUT_CONTENT_LEN - 12 ) ) ); return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); } - memmove( ssl->out_msg + 12, ssl->out_msg + 4, len - 4 ); + memmove( ssl->out_msg + 12, ssl->out_msg + 4, hs_len ); ssl->out_msglen += 8; - len += 8; /* Write message_seq and update it, except for HelloRequest */ - if( out_msg_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) { ssl->out_msg[4] = ( ssl->handshake->out_msg_seq >> 8 ) & 0xFF; ssl->out_msg[5] = ( ssl->handshake->out_msg_seq ) & 0xFF; @@ -3024,23 +3032,22 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) ssl->out_msg[5] = 0; } - /* We don't fragment, so frag_offset = 0 and frag_len = len */ + /* Handshake hashes are computed without fragmentation, + * so set frag_offset = 0 and frag_len = hs_len for now */ memset( ssl->out_msg + 6, 0x00, 3 ); memcpy( ssl->out_msg + 9, ssl->out_msg + 1, 3 ); } #endif /* MBEDTLS_SSL_PROTO_DTLS */ - if( out_msg_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) - ssl->handshake->update_checksum( ssl, ssl->out_msg, len ); + /* Update running hashes of hanshake messages seen */ + if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + ssl->handshake->update_checksum( ssl, ssl->out_msg, ssl->out_msglen ); } - /* Save handshake and CCS messages for resending */ + /* Save for resending */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->handshake != NULL && - ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING && - ( ssl->out_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC || - ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) ) + hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) { if( ( ret = ssl_flight_append( ssl ) ) != 0 ) { @@ -3050,6 +3057,7 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) } #endif + /* Actually send out */ ret = mbedtls_ssl_write_record( ssl ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write handshake message" ) ); From 87a346f64e0d73522c17c22c5f4982c291d52641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Sep 2017 12:45:21 +0200 Subject: [PATCH 0787/1100] Always save flight first, (re)send later This will allow fragmentation to always happen in the same place, always from a buffer distinct from ssl->out_msg, and with the same way of resuming after returning WANT_WRITE --- include/mbedtls/ssl_internal.h | 1 + library/ssl_cli.c | 11 ++++++- library/ssl_srv.c | 20 +++++++++++- library/ssl_tls.c | 59 ++++++++++++++++++++++++++-------- 4 files changed, 75 insertions(+), 16 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 68b5f3033b..501202bb3c 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -669,6 +669,7 @@ static inline size_t mbedtls_ssl_hs_hdr_len( const mbedtls_ssl_context *ssl ) void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ); void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ); int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ); #endif /* Visible for testing purposes only */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 253c81f730..4b17deaaae 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1094,6 +1094,15 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); + return( ret ); + } +#endif + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write client hello" ) ); return( 0 ); @@ -3402,7 +3411,7 @@ int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) { - if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) return( ret ); } #endif diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 66de2e46ca..eda50bb342 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2390,6 +2390,15 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); + return( ret ); + } +#endif + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write hello verify request" ) ); return( 0 ); @@ -3369,6 +3378,15 @@ static int ssl_write_server_hello_done( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); + return( ret ); + } +#endif + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server hello done" ) ); return( 0 ); @@ -4258,7 +4276,7 @@ int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) { - if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) return( ret ); } #endif diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b66b4fec42..5f032232ae 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2822,18 +2822,34 @@ static void ssl_swap_epochs( mbedtls_ssl_context *ssl ) /* * Retransmit the current flight of messages. + */ +int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) +{ + int ret = 0; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_resend" ) ); + + ret = mbedtls_ssl_flight_transmit( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_resend" ) ); + + return( ret ); +} + +/* + * Transmit or retransmit the current flight of messages. * * Need to remember the current message in case flush_output returns * WANT_WRITE, causing us to exit this function and come back later. * This function must be called until state is no longer SENDING. */ -int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_resend" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise resending" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise fligh transmission" ) ); ssl->handshake->cur_msg = ssl->handshake->flight; ssl_swap_epochs( ssl ); @@ -2861,7 +2877,7 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) ssl->handshake->cur_msg = cur->next; - MBEDTLS_SSL_DEBUG_BUF( 3, "resent handshake message header", ssl->out_msg, 12 ); + MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) { @@ -2878,7 +2894,7 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) ssl_set_timer( ssl, ssl->handshake->retransmit_timeout ); } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_resend" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= mbedtls_ssl_flight_transmit" ) ); return( 0 ); } @@ -2931,14 +2947,15 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) */ /* - * Write current handshake (including CCS) message. + * Write (DTLS: or queue) current handshake (including CCS) message. * * - fill in handshake headers * - update handshake checksum * - DTLS: save message for resending * - then pass to the record layer * - * DTLS: only used when first writing the message, not for resending. + * DTLS: except for HelloRequest, messages are only queued, and will only be + * actually sent when calling flight_transmit() or resend(). * * Inputs: * - ssl->out_msglen: 4 + actual handshake message len @@ -2946,7 +2963,7 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) * - ssl->out_msg[0]: the handshake type (ClientHello, ServerHello, etc) * - ssl->out_msg + 4: the handshake message body * - * Outputs: + * Ouputs, ie state before passing to flight_append() or write_record(): * - ssl->out_msglen: the length of the record contents * (including handshake headers but excluding record headers) * - ssl->out_msg: the record contents (handshake headers + content) @@ -3044,7 +3061,7 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) ssl->handshake->update_checksum( ssl, ssl->out_msg, ssl->out_msglen ); } - /* Save for resending */ + /* Either send now, or just save to be sent (and resent) later */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) @@ -3055,14 +3072,19 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) return( ret ); } } + else #endif - - /* Actually send out */ - ret = mbedtls_ssl_write_record( ssl ); + { + if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_record", ret ); + return( ret ); + } + } MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write handshake message" ) ); - return( ret ); + return( 0 ); } /* @@ -5645,6 +5667,15 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) return( ret ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); + return( ret ); + } +#endif + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write finished" ) ); return( 0 ); @@ -7207,7 +7238,7 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) if( ssl->handshake != NULL && ssl->handshake->retransmit_state == MBEDTLS_SSL_RETRANS_SENDING ) { - if( ( ret = mbedtls_ssl_resend( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) return( ret ); } } From 28f4beab1c3f2df6a45000fa8985bf46736700b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 13 Sep 2017 14:00:05 +0200 Subject: [PATCH 0788/1100] Start implementing fragmentation --- include/mbedtls/ssl_internal.h | 5 ++- library/ssl_tls.c | 72 ++++++++++++++++++++++++++++++---- 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 501202bb3c..18982f89a0 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -298,8 +298,9 @@ struct mbedtls_ssl_handshake_params uint32_t retransmit_timeout; /*!< Current value of timeout */ unsigned char retransmit_state; /*!< Retransmission state */ - mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ - mbedtls_ssl_flight_item *cur_msg; /*!< Current message in flight */ + mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ + mbedtls_ssl_flight_item *cur_msg; /*!< Current message in flight */ + unsigned char *cur_msg_p; /*!< Position in current message */ unsigned int in_flight_start_seq; /*!< Minimum message sequence in the flight being received */ mbedtls_ssl_transform *alt_transform_out; /*!< Alternative transform for diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5f032232ae..6e0f6b6048 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2852,16 +2852,23 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise fligh transmission" ) ); ssl->handshake->cur_msg = ssl->handshake->flight; + ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12; ssl_swap_epochs( ssl ); ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_SENDING; } + /* + * XXX: this should not be hardcoded. + * Currently UDP limit - HS header - Record header + * (Should account for encryption overhead (renegotiation, finished)?) + */ +#define HS_LIMIT ( 512 - 12 - 13 ) + while( ssl->handshake->cur_msg != NULL ) { int ret; - mbedtls_ssl_flight_item *cur = ssl->handshake->cur_msg; - + const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; /* Swap epochs before sending Finished: we can't do it after * sending ChangeCipherSpec, in case write returns WANT_READ. * Must be done before copying, may change out_msg pointer */ @@ -2871,14 +2878,64 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ssl_swap_epochs( ssl ); } - memcpy( ssl->out_msg, cur->p, cur->len ); - ssl->out_msglen = cur->len; - ssl->out_msgtype = cur->type; + /* CCS is copied as is, while HS messages may need fragmentation */ + if( cur->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) + { + memcpy( ssl->out_msg, cur->p, cur->len ); + ssl->out_msglen = cur->len; + ssl->out_msgtype = cur->type; - ssl->handshake->cur_msg = cur->next; + /* Update position inside current message */ + ssl->handshake->cur_msg_p += cur->len; + } + else + { + const unsigned char * const p = ssl->handshake->cur_msg_p; + const size_t hs_len = cur->len - 12; + const size_t frag_off = p - ( cur->p + 12 ); + const size_t rem_len = hs_len - frag_off; + const size_t frag_len = rem_len > HS_LIMIT ? HS_LIMIT : rem_len; - MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); + /* Messages are stored with handshake headers as if not fragmented, + * copy beginning of headers then fill fragmentation fields. + * Handshake headers: type(1) len(3) seq(2) f_off(3) f_len(3) */ + memcpy( ssl->out_msg, cur->p, 6 ); + ssl->out_msg[6] = ( ( frag_off >> 16 ) & 0xff ); + ssl->out_msg[7] = ( ( frag_off >> 8 ) & 0xff ); + ssl->out_msg[8] = ( ( frag_off ) & 0xff ); + + ssl->out_msg[ 9] = ( ( frag_len >> 16 ) & 0xff ); + ssl->out_msg[10] = ( ( frag_len >> 8 ) & 0xff ); + ssl->out_msg[11] = ( ( frag_len ) & 0xff ); + + MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); + + /* Copy the handshame message content and set records fields */ + memcpy( ssl->out_msg + 12, p, frag_len ); + ssl->out_msglen = frag_len + 12; + ssl->out_msgtype = cur->type; + + /* Update position inside current message */ + ssl->handshake->cur_msg_p += frag_len; + } + + /* If done with the current message move to the next one if any */ + if( ssl->handshake->cur_msg_p >= cur->p + cur->len ) + { + if( cur->next != NULL ) + { + ssl->handshake->cur_msg = cur->next; + ssl->handshake->cur_msg_p = cur->next->p + 12; + } + else + { + ssl->handshake->cur_msg = NULL; + ssl->handshake->cur_msg_p = NULL; + } + } + + /* Actually send the message out */ if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); @@ -2886,6 +2943,7 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) } } + /* Update state and set timer */ if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; else From 2cb17e201b7a9508471bc4716f3f65951a73ed6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 19 Sep 2017 13:00:47 +0200 Subject: [PATCH 0789/1100] Make handshake fragmentation follow max_frag_len Note: no interop tests in ssl-opt.sh for now, as some of them make us run into bugs in (the CI's default versions of) OpenSSL and GnuTLS, so interop tests will be added later once the situation is clarified. <- TODO --- library/ssl_tls.c | 32 ++++++++++----- tests/ssl-opt.sh | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 11 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 6e0f6b6048..86a279c0e1 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2845,12 +2845,23 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) */ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + const size_t max_record_content_len = mbedtls_ssl_get_max_frag_len( ssl ); +#else + const size_t max_record_content_len = MBEDTLS_SSL_OUT_CONTENT_LEN; +#endif + /* DTLS handshake headers are 12 bytes */ + const size_t max_hs_fragment_len = max_record_content_len - 12; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise fligh transmission" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "max handshake fragment length: %u", + max_hs_fragment_len ) ); + ssl->handshake->cur_msg = ssl->handshake->flight; ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12; ssl_swap_epochs( ssl ); @@ -2858,13 +2869,6 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_SENDING; } - /* - * XXX: this should not be hardcoded. - * Currently UDP limit - HS header - Record header - * (Should account for encryption overhead (renegotiation, finished)?) - */ -#define HS_LIMIT ( 512 - 12 - 13 ) - while( ssl->handshake->cur_msg != NULL ) { int ret; @@ -2894,7 +2898,8 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) const size_t hs_len = cur->len - 12; const size_t frag_off = p - ( cur->p + 12 ); const size_t rem_len = hs_len - frag_off; - const size_t frag_len = rem_len > HS_LIMIT ? HS_LIMIT : rem_len; + const size_t frag_len = rem_len > max_hs_fragment_len + ? max_hs_fragment_len : rem_len; /* Messages are stored with handshake headers as if not fragmented, * copy beginning of headers then fill fragmentation fields. @@ -7029,15 +7034,20 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) */ max_len = ssl_mfl_code_to_length( ssl->conf->mfl_code ); - /* - * Check if a smaller max length was negotiated - */ + /* Check if a smaller max length was negotiated */ if( ssl->session_out != NULL && ssl_mfl_code_to_length( ssl->session_out->mfl_code ) < max_len ) { max_len = ssl_mfl_code_to_length( ssl->session_out->mfl_code ); } + /* During a handshake, use the value being negotiated */ + if( ssl->session_negotiate != NULL && + ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ) < max_len ) + { + max_len = ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ); + } + return max_len; } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 937a27b763..0cf288f128 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4877,6 +4877,108 @@ run_test "DTLS reassembly: fragmentation, nbio (openssl server)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Tests for sending fragmented handshake messages with DTLS +# +# Use client auth when we need the client to send large messages, +# and use large cert chains on both sides too (the long chains we have all use +# both RSA and ECDSA, but ideally we should have long chains with either). +# Sizes reached (UDP payload): +# - 2037B for server certificate +# - 1542B for client certificate +# - 1013B for newsessionticket +# - all others below 512B +# All those tests assume MAX_CONTENT_LEN is at least 2048 + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: none (for reference)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -C "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: server only" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=1024" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: server only (more)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: client-initiated, server only" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=none \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=512" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: client-initiated, both" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From 01ec4af0238e62cf296b7eeade42ca5835327879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 21 Sep 2017 13:16:52 +0200 Subject: [PATCH 0790/1100] Add ChangeLog entry --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 59561fd072..948e4c3dac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,9 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Features + * Add support for fragmentation of outoing DTLS handshake messages. + Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 From 0b1d9b2c75b6f220b4eb8f1447a5d487e277b081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 21 Sep 2017 13:15:27 +0200 Subject: [PATCH 0791/1100] Declare ssl_conf_mtu() --- ChangeLog | 3 +++ include/mbedtls/ssl.h | 43 +++++++++++++++++++++++++++++++++++++++++++ library/ssl_tls.c | 7 +++++++ 3 files changed, 53 insertions(+) diff --git a/ChangeLog b/ChangeLog index 948e4c3dac..7233d4d23a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24,6 +24,9 @@ Changes * Improve compatibility with some alternative CCM implementations by using CCM test vectors from RAM. +INTERNAL NOTE: need to bump soversion of libmbedtls: +- added new member 'mtu' to public 'mbedtls_ssl_conf' structure + = mbed TLS 2.12.0 branch released 2018-07-25 Security diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 2d511a8ea1..0283eee625 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -958,6 +958,10 @@ struct mbedtls_ssl_config unsigned int dhm_min_bitlen; /*!< min. bit length of the DHM prime */ #endif +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint16_t mtu; /*!< path mtu, used to fragment outoing messages */ +#endif + unsigned char max_major_ver; /*!< max. major version used */ unsigned char max_minor_ver; /*!< max. minor version used */ unsigned char min_major_ver; /*!< min. major version used */ @@ -2423,6 +2427,33 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, char cert_req_ca_list ); #endif /* MBEDTLS_SSL_SRV_C */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) +/** + * \brief Set the Maximum Tranport Unit (MTU). + * This represents the maximum size of a datagram payload + * handled by the transport layer (usually UDP) as determined + * by the network link and stack. In practice, this controls + * the maximum size datagram the DTLS layer will pass to the + * \c f_send() callback set using \c mbedtls_ssl_set_bio(). + * + * \note This only controls the size of the packet we send. + * Client-side, you can request the server to use smaller + * records with \c mbedtls_conf_max_frag_len(). + * + * \note If both a MTU and a maximum fragment length have been + * configured (or negotiated with the peer), the lower limit + * is used. + * + * \note Values larger than \c MBEDTLS_SSL_OUT_CONTENT_LEN have no + * effect. This can only be used to decrease the maximum size + * of detagrams sent. + * + * \param conf SSL configuration + * \param mtu Value of the path MTU in bytes + */ +void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** * \brief Set the maximum fragment length to emit and/or negotiate @@ -2433,6 +2464,18 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, * (Client: set maximum fragment length to emit *and* * negotiate with the server during handshake) * + * \note With TLS, this currently only affects ApplicationData (sent + * with \c mbedtls_ssl_read()), not handshake messages. + * With DTLS, this affects both ApplicationData and handshake. + * + * \note This sets the maximum length for a record's paylaod, + * excluding record overhead that will be added to it, see + * \c mbedtls_ssl_get_record_expansion(). + * + * \note For DTLS, it is also possible to set a limit for the total + * size of daragrams passed to the transport layer, including + * record overhead, see \c mbedtls_ssl_conf_mtu(). + * * \param conf SSL configuration * \param mfl_code Code for maximum fragment length (allowed values: * MBEDTLS_SSL_MAX_FRAG_LEN_512, MBEDTLS_SSL_MAX_FRAG_LEN_1024, diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 86a279c0e1..4b124ba8f6 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6750,6 +6750,13 @@ void mbedtls_ssl_conf_arc4_support( mbedtls_ssl_config *conf, char arc4 ) } #endif +#if defined(MBEDTLS_SSL_PROTO_DTLS) +void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ) +{ + conf->mtu = mtu; +} +#endif + #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) int mbedtls_ssl_conf_max_frag_len( mbedtls_ssl_config *conf, unsigned char mfl_code ) { From 9468ff1966faea814edbd2600ad196dd98c96686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 21 Sep 2017 13:49:50 +0200 Subject: [PATCH 0792/1100] Implement support for MTU setting --- include/mbedtls/ssl.h | 43 ++++++++++++++++++++++----- library/ssl_tls.c | 69 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 92 insertions(+), 20 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 0283eee625..706e27284b 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2430,6 +2430,7 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, #if defined(MBEDTLS_SSL_PROTO_DTLS) /** * \brief Set the Maximum Tranport Unit (MTU). + * Special value: 0 means unset (no limit). * This represents the maximum size of a datagram payload * handled by the transport layer (usually UDP) as determined * by the network link and stack. In practice, this controls @@ -2446,7 +2447,8 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, * * \note Values larger than \c MBEDTLS_SSL_OUT_CONTENT_LEN have no * effect. This can only be used to decrease the maximum size - * of detagrams sent. + * of datagrams sent. Values lower than record layer expansion + * are ignored. * * \param conf SSL configuration * \param mtu Value of the path MTU in bytes @@ -2738,6 +2740,9 @@ const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl ); * \brief Return the (maximum) number of bytes added by the record * layer: header + encryption/MAC overhead (inc. padding) * + * \note This function is not available (always returns an error) + * when record compression is enabled. + * * \param ssl SSL context * * \return Current maximum record expansion in bytes, or @@ -2752,12 +2757,8 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ); * This is the value negotiated with peer if any, * or the locally configured value. * - * \note With DTLS, \c mbedtls_ssl_write() will return an error if - * called with a larger length value. - * With TLS, \c mbedtls_ssl_write() will fragment the input if - * necessary and return the number of bytes written; it is up - * to the caller to call \c mbedtls_ssl_write() again in - * order to send the remaining bytes if any. + * \sa mbedtls_ssl_conf_max_frag_len() + * \sa mbedtls_ssl_get_max_record_payload() * * \param ssl SSL context * @@ -2766,6 +2767,34 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ); size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ +/** + * \brief Return the current maximum outgoing record payload in bytes. + * This takes into account the config.h setting \c + * MBEDTLS_SSL_OUT_CONTENT_LEN, the configured and negotiated + * max fragment length extension if used, and for DTLS the + * path MTU as configured and current record expansion. + * + * \note With DTLS, \c mbedtls_ssl_write() will return an error if + * called with a larger length value. + * With TLS, \c mbedtls_ssl_write() will fragment the input if + * necessary and return the number of bytes written; it is up + * to the caller to call \c mbedtls_ssl_write() again in + * order to send the remaining bytes if any. + * + * \note This function is not available (always returns an error) + * when record compression is enabled. + * + * \sa mbedtls_ssl_conf_mtu() + * \sa mbedtls_ssl_get_max_frag_len() + * \sa mbedtls_ssl_get_record_expansion() + * + * \param ssl SSL context + * + * \return Current maximum payload for an outgoing record, + * or a negative error code. + */ +int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ); + #if defined(MBEDTLS_X509_CRT_PARSE_C) /** * \brief Return the peer certificate from the current connection diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4b124ba8f6..7b2ab0fb03 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2845,16 +2845,20 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) */ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - const size_t max_record_content_len = mbedtls_ssl_get_max_frag_len( ssl ); -#else - const size_t max_record_content_len = MBEDTLS_SSL_OUT_CONTENT_LEN; -#endif + const int ret_payload = mbedtls_ssl_get_max_out_record_payload( ssl ); + const size_t max_record_payload = (size_t) ret_payload; /* DTLS handshake headers are 12 bytes */ - const size_t max_hs_fragment_len = max_record_content_len - 12; + const size_t max_hs_fragment_len = max_record_payload - 12; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); + if( ret_payload < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", + ret_payload ); + return( ret_payload ); + } + if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise fligh transmission" ) ); @@ -7008,6 +7012,7 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } #endif switch( mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ) ) @@ -7055,10 +7060,45 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) max_len = ssl_mfl_code_to_length( ssl->session_negotiate->mfl_code ); } - return max_len; + return( max_len ); } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ +int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) +{ + size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); + + if( max_len > mfl ) + max_len = mfl; +#endif + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->mtu != 0 ) + { + const size_t mtu = ssl->conf->mtu; + const int ret = mbedtls_ssl_get_record_expansion( ssl ); + const size_t overhead = (size_t) ret; + + if( ret < 0 ) + return( ret ); + + if( mtu <= overhead ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "MTU too low for record expansion" ) ); + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } + + if( max_len > mtu - overhead ) + max_len = mtu - overhead; + } +#endif + + return( (int) max_len ); +} + #if defined(MBEDTLS_X509_CRT_PARSE_C) const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ssl ) { @@ -7610,12 +7650,15 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) static int ssl_write_real( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len ) { - int ret; -#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) - size_t max_len = mbedtls_ssl_get_max_frag_len( ssl ); -#else - size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; -#endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ + int ret = mbedtls_ssl_get_max_out_record_payload( ssl ); + const size_t max_len = (size_t) ret; + + if( ret < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", ret ); + return( ret ); + } + if( len > max_len ) { #if defined(MBEDTLS_SSL_PROTO_DTLS) From b747c6cf9ba594f207c0d52b0ed572a875ee034b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Sun, 12 Aug 2018 13:28:53 +0200 Subject: [PATCH 0793/1100] Add basic first tests for MTU setting For now, just check that it causes us to fragment. More tests are coming in follow-up commits to ensure we respect the exact value set, including when renegotiating. --- library/ssl_tls.c | 3 ++ programs/ssl/ssl_client2.c | 15 +++++++- programs/ssl/ssl_server2.c | 15 +++++++- tests/ssl-opt.sh | 76 ++++++++++++++++++++++++++++++++++++-- 4 files changed, 103 insertions(+), 6 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ea46d85b34..b05d2883a0 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2905,6 +2905,9 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) const size_t frag_len = rem_len > max_hs_fragment_len ? max_hs_fragment_len : rem_len; + if( frag_off == 0 && frag_len != hs_len ) + MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message" ) ); + /* Messages are stored with handshake headers as if not fragmented, * copy beginning of headers then fill fragmentation fields. * Handshake headers: type(1) len(3) seq(2) f_off(3) f_len(3) */ diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 0dd9e3f7b1..7cdc53a54c 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -106,6 +106,7 @@ int main( void ) #define DFL_TRANSPORT MBEDTLS_SSL_TRANSPORT_STREAM #define DFL_HS_TO_MIN 0 #define DFL_HS_TO_MAX 0 +#define DFL_DTLS_MTU -1 #define DFL_FALLBACK -1 #define DFL_EXTENDED_MS -1 #define DFL_ETM -1 @@ -198,7 +199,8 @@ int main( void ) #define USAGE_DTLS \ " dtls=%%d default: 0 (TLS)\n" \ " hs_timeout=%%d-%%d default: (library default: 1000-60000)\n" \ - " range of DTLS handshake timeouts in millisecs\n" + " range of DTLS handshake timeouts in millisecs\n" \ + " mtu=%%d default: (library default: unlimited)\n" #else #define USAGE_DTLS "" #endif @@ -345,6 +347,7 @@ struct options int transport; /* TLS or DTLS? */ uint32_t hs_to_min; /* Initial value of DTLS handshake timer */ uint32_t hs_to_max; /* Max value of DTLS handshake timer */ + int dtls_mtu; /* UDP Maximum tranport unit for DTLS */ int fallback; /* is this a fallback connection? */ int extended_ms; /* negotiate extended master secret? */ int etm; /* negotiate encrypt then mac? */ @@ -617,6 +620,7 @@ int main( int argc, char *argv[] ) opt.transport = DFL_TRANSPORT; opt.hs_to_min = DFL_HS_TO_MIN; opt.hs_to_max = DFL_HS_TO_MAX; + opt.dtls_mtu = DFL_DTLS_MTU; opt.fallback = DFL_FALLBACK; opt.extended_ms = DFL_EXTENDED_MS; opt.etm = DFL_ETM; @@ -927,6 +931,12 @@ int main( int argc, char *argv[] ) if( opt.hs_to_min == 0 || opt.hs_to_max < opt.hs_to_min ) goto usage; } + else if( strcmp( p, "mtu" ) == 0 ) + { + opt.dtls_mtu = atoi( q ); + if( opt.dtls_mtu < 0 ) + goto usage; + } else if( strcmp( p, "recsplit" ) == 0 ) { opt.recsplit = atoi( q ); @@ -1327,6 +1337,9 @@ int main( int argc, char *argv[] ) if( opt.hs_to_min != DFL_HS_TO_MIN || opt.hs_to_max != DFL_HS_TO_MAX ) mbedtls_ssl_conf_handshake_timeout( &conf, opt.hs_to_min, opt.hs_to_max ); + + if( opt.dtls_mtu != DFL_DTLS_MTU ) + mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 7654a6446d..484f84fdd6 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -150,6 +150,7 @@ int main( void ) #define DFL_ANTI_REPLAY -1 #define DFL_HS_TO_MIN 0 #define DFL_HS_TO_MAX 0 +#define DFL_DTLS_MTU -1 #define DFL_BADMAC_LIMIT -1 #define DFL_EXTENDED_MS -1 #define DFL_ETM -1 @@ -297,7 +298,8 @@ int main( void ) #define USAGE_DTLS \ " dtls=%%d default: 0 (TLS)\n" \ " hs_timeout=%%d-%%d default: (library default: 1000-60000)\n" \ - " range of DTLS handshake timeouts in millisecs\n" + " range of DTLS handshake timeouts in millisecs\n" \ + " mtu=%%d default: (library default: unlimited)\n" #else #define USAGE_DTLS "" #endif @@ -470,6 +472,7 @@ struct options int anti_replay; /* Use anti-replay for DTLS? -1 for default */ uint32_t hs_to_min; /* Initial value of DTLS handshake timer */ uint32_t hs_to_max; /* Max value of DTLS handshake timer */ + int dtls_mtu; /* UDP Maximum tranport unit for DTLS */ int badmac_limit; /* Limit of records with bad MAC */ } opt; @@ -1338,6 +1341,7 @@ int main( int argc, char *argv[] ) opt.anti_replay = DFL_ANTI_REPLAY; opt.hs_to_min = DFL_HS_TO_MIN; opt.hs_to_max = DFL_HS_TO_MAX; + opt.dtls_mtu = DFL_DTLS_MTU; opt.badmac_limit = DFL_BADMAC_LIMIT; opt.extended_ms = DFL_EXTENDED_MS; opt.etm = DFL_ETM; @@ -1684,6 +1688,12 @@ int main( int argc, char *argv[] ) if( opt.hs_to_min == 0 || opt.hs_to_max < opt.hs_to_min ) goto usage; } + else if( strcmp( p, "mtu" ) == 0 ) + { + opt.dtls_mtu = atoi( q ); + if( opt.dtls_mtu < 0 ) + goto usage; + } else if( strcmp( p, "sni" ) == 0 ) { opt.sni = q; @@ -2155,6 +2165,9 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_PROTO_DTLS) if( opt.hs_to_min != DFL_HS_TO_MIN || opt.hs_to_max != DFL_HS_TO_MAX ) mbedtls_ssl_conf_handshake_timeout( &conf, opt.hs_to_min, opt.hs_to_max ); + + if( opt.dtls_mtu != DFL_DTLS_MTU ) + mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 0cf288f128..3d61ac3a4e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4911,7 +4911,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH -run_test "DTLS fragmenting: server only" \ +run_test "DTLS fragmenting: server only (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ @@ -4929,7 +4929,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH -run_test "DTLS fragmenting: server only (more)" \ +run_test "DTLS fragmenting: server only (more) (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ @@ -4947,7 +4947,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH -run_test "DTLS fragmenting: client-initiated, server only" \ +run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=none \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ @@ -4965,7 +4965,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH -run_test "DTLS fragmenting: client-initiated, both" \ +run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ @@ -4979,6 +4979,74 @@ run_test "DTLS fragmenting: client-initiated, both" \ -c "found fragmented DTLS handshake message" \ -C "error" +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: none (for reference) (MTU)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -C "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: client (MTU)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -C "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: server (MTU)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: both (MTU)" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From 72c2707d9c0db616a1b7d089c8e033c7b03dc705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 13 Aug 2018 12:37:51 +0200 Subject: [PATCH 0794/1100] Add tests for MTU with renegotiation This exercises our computation of record expansion. --- tests/ssl-opt.sh | 161 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 3d61ac3a4e..833b5e37f0 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5047,6 +5047,167 @@ run_test "DTLS fragmenting: both (MTU)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU, simple handshake" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +requires_config_enabled MBEDTLS_CHACHAPOLY_C +run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + exchanges=2 renegotiation=1 renegotiate=1 \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C +run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + exchanges=2 renegotiation=1 renegotiate=1 \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CCM_C +run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + exchanges=2 renegotiation=1 renegotiate=1 \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC +run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + exchanges=2 renegotiation=1 renegotiate=1 \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_SSL_RENEGOTIATION +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_CIPHER_MODE_CBC +run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + exchanges=2 renegotiation=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + exchanges=2 renegotiation=1 renegotiate=1 \ + mtu=512" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From 7e89c17788ae6d134090c639bb0c96562df7f5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 13 Aug 2018 12:45:26 +0200 Subject: [PATCH 0795/1100] Fix two typos in comments --- include/mbedtls/ssl.h | 2 +- library/ssl_tls.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 706e27284b..a3b514cd4f 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2470,7 +2470,7 @@ void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ); * with \c mbedtls_ssl_read()), not handshake messages. * With DTLS, this affects both ApplicationData and handshake. * - * \note This sets the maximum length for a record's paylaod, + * \note This sets the maximum length for a record's payload, * excluding record overhead that will be added to it, see * \c mbedtls_ssl_get_record_expansion(). * diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b05d2883a0..b25d9bfe7d 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2923,7 +2923,7 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); - /* Copy the handshame message content and set records fields */ + /* Copy the handshake message content and set records fields */ memcpy( ssl->out_msg + 12, p, frag_len ); ssl->out_msglen = frag_len + 12; ssl->out_msgtype = cur->type; From 19c62f90e4608fc57f382cdbe8799ffdb98c9dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 16 Aug 2018 10:50:39 +0200 Subject: [PATCH 0796/1100] Add test for session resumption --- library/ssl_tls.c | 11 ++++++----- tests/ssl-opt.sh | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b25d9bfe7d..530f283b47 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2861,10 +2861,7 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise fligh transmission" ) ); - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "max handshake fragment length: %u", - max_hs_fragment_len ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise flight transmission" ) ); ssl->handshake->cur_msg = ssl->handshake->flight; ssl->handshake->cur_msg_p = ssl->handshake->flight->p + 12; @@ -2906,7 +2903,11 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ? max_hs_fragment_len : rem_len; if( frag_off == 0 && frag_len != hs_len ) - MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message" ) ); + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message (%u > %u)", + (unsigned) hs_len, + (unsigned) max_hs_fragment_len ) ); + } /* Messages are stored with handshake headers as if not fragmented, * copy beginning of headers then fill fragmentation fields. diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 833b5e37f0..7028a07382 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5068,6 +5068,32 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ -c "found fragmented DTLS handshake message" \ -C "error" +# This ensures things still work after session_reset(), +# for example it would have caught #1941. +# It also exercises the "resumed hanshake" flow. +# Since we don't support reading fragmented ClientHello yet, +# up the MTU to 1450 (larger than ClientHello with session ticket, +# but still smaller than client's Certificate to ensure fragmentation). +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ + -p "$P_PXY mtu=1450" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=1450" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=1450 reconnect=1" \ + 0 \ + -S "resend" \ + -C "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 2d56f0d346efa628776f92dcc7fdf8c0da66e87a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 16 Aug 2018 11:09:03 +0200 Subject: [PATCH 0797/1100] Add test with unreliable connection --- tests/ssl-opt.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 7028a07382..397c565fe6 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5234,6 +5234,25 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +client_needs_more_time 2 +run_test "DTLS fragmenting: proxy MTU + 3d" \ + -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From ad17fe9c377def269b4d96537f21427e4fddcdd2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 15:51:34 +0100 Subject: [PATCH 0798/1100] Fix overly strict bounds check in ssl_parse_certificate_request() --- library/ssl_cli.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 321d6367a0..466608375f 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2721,7 +2721,7 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) * therefore the buffer length at this point must be greater than that * regardless of the actual code path. */ - if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + 3 + n ) + if( ssl->in_hslen <= mbedtls_ssl_hs_hdr_len( ssl ) + 2 + n ) { MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad certificate request message" ) ); mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, From ad0fe92fb6e63673ad90c8618f096ccf5ba7b6db Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 15:52:22 +0100 Subject: [PATCH 0799/1100] Adapt ChangeLog --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index abd5e61bbd..f505b38861 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,9 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. + * Fix overly strict bounds check in ssl_parse_certificate_request() + which could lead to valid CertificateRequest messages being rejected. + Fixes #1954. Changes * Copy headers preserving timestamps when doing a "make install". From 1abb368b8760569a53350f6d7f7cd628812f29d5 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 16 Aug 2018 21:42:09 +0100 Subject: [PATCH 0800/1100] Make gmtime() configurable at compile-time --- include/mbedtls/config.h | 19 +++++++++++++ include/mbedtls/platform_util.h | 43 +++++++++++++++++++++++++++++ include/mbedtls/threading.h | 4 +-- library/platform_util.c | 49 +++++++++++++++++++++++++++++++++ library/threading.c | 4 +-- library/x509.c | 31 ++------------------- 6 files changed, 117 insertions(+), 33 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 9ee86ff240..18fbf92dfc 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3091,6 +3091,25 @@ */ //#define MBEDTLS_PLATFORM_ZEROIZE_ALT +/** + * Uncomment the macro to let Mbed TLS use your alternate implementation of + * mbedtls_platform_gmtime(). This replaces the default implementation in + * platform_util.c. + * + * gmtime() is not a thread safe function as defined in the C standard. The + * library will try to use safer implementations of this function, such as + * gmtime_r() when available. However, if Mbed TLS cannot identify the target + * system, the implementation of mbedtls_platform_gmtime() will default to + * using the standard gmtime(). In this case, calls from the library to + * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex + * if MBEDTLS_THREADING_C is enable. It is advised that calls from outside the + * library are also guarded with this mutex to avoid race conditions. However, + * if the macro MBEDTLS_PLATFORM_GMTIME_ALT is defined, Mbed TLS will + * unconditionally use the implementation for mbedtls_platform_time() supplied + * at compile time. + */ +//#define MBEDTLS_PLATFORM_GMTIME_ALT + /* \} name SECTION: Customisation configuration options */ /* Target and application specific configurations */ diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 84f0732eeb..5f26fb82c0 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -25,7 +25,18 @@ #ifndef MBEDTLS_PLATFORM_UTIL_H #define MBEDTLS_PLATFORM_UTIL_H +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/platform_time.h" + #include +#if defined(MBEDTLS_HAVE_TIME_DATE) +#include +#endif /* MBEDTLS_HAVE_TIME_DATE */ #ifdef __cplusplus extern "C" { @@ -55,6 +66,38 @@ extern "C" { */ void mbedtls_platform_zeroize( void *buf, size_t len ); +#if defined(MBEDTLS_HAVE_TIME_DATE) +/** + * \brief Thread safe implementation of gmtime() + * + * The function is an abstraction that when called behaves similar + * to the gmtime() function from the C standard, but is thread + * safe. + * + * Mbed TLS will try to identify the underlying platform and + * configure an appropriate underlying implementation (e.g. + * gmtime_r() for POSIX and gmtime_s() for Windows). If this is + * not possible, then gmtime() will be used. In this case, calls + * from the library to gmtime() will be guarded by the mutex + * mbedtls_threading_gmtime_mutex if MBEDTLS_THREADING_C is + * enabled. It is recommended that calls from outside the library + * are also guarded by this mutex. + * + * If MBEDTLS_PLATFORM_GMTIME_ALT is defined, then Mbed TLS will + * unconditionally use the alternative implementation for + * mbedtls_platform_gmtime() supplied by the user at compile time + * + * \param tt Pointer to an object containing time (in seconds) since the + * Epoc to be converted + * \param tm Pointer to an object where the results will be stored + * + * \return Pointer to an object of type struct tm on success, otherwise + * NULL + */ +struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, + struct tm *tm_buf ); +#endif /* MBEDTLS_HAVE_TIME_DATE */ + #ifdef __cplusplus } #endif diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 4cfaadde2a..070715259d 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -103,9 +103,9 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #if !defined(_WIN32) && (defined(__unix__) || \ (defined(__APPLE__) && defined(__MACH__))) #include -#if !defined(_POSIX_VERSION) +#if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; -#endif /* !_POSIX_VERSION */ +#endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE */ #endif /* MBEDTLS_THREADING_C */ diff --git a/library/platform_util.c b/library/platform_util.c index 1a57de9393..e41f3c49c2 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -20,6 +20,12 @@ * This file is part of Mbed TLS (https://tls.mbed.org) */ +/* + * Ensure gmtime_r is available even with -std=c99; must be included before + * config.h, which pulls in glibc's features.h. Harmless on other platforms. + */ +#define _POSIX_C_SOURCE 200112L + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else @@ -27,6 +33,7 @@ #endif #include "mbedtls/platform_util.h" +#include "mbedtls/threading.h" #include #include @@ -65,3 +72,45 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) memset_func( buf, 0, len ); } #endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */ + +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) +#include +#if !defined(_WIN32) && (defined(__unix__) || \ + (defined(__APPLE__) && defined(__MACH__))) +#include +#if !defined(_POSIX_VERSION) || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS +#define PLATFORM_UTIL_USE_GMTIME +#endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ +#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ + +struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, + struct tm *tm_buf ) +{ +#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) + return ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL; +#elif !defined(PLATFORM_UTIL_USE_GMTIME) + return gmtime_r( tt, tm_buf ); +#else + struct tm *lt; + +#if defined(MBEDTLS_THREADING_C) + if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 ) + return( NULL ); +#endif /* MBEDTLS_THREADING_C */ + + lt = gmtime( tt ); + + if( lt != NULL ) + { + memcpy( tm_buf, lt, sizeof( struct tm ) ); + } + +#if defined(MBEDTLS_THREADING_C) + if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 ) + return( NULL ); +#endif /* MBEDTLS_THREADING_C */ + + return ( lt == NULL ) ? NULL : tm_buf; +#endif +} +#endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_ALT */ diff --git a/library/threading.c b/library/threading.c index 95ae8d1446..3d7f61b2e9 100644 --- a/library/threading.c +++ b/library/threading.c @@ -32,9 +32,9 @@ #if !defined(_WIN32) && (defined(__unix__) || \ (defined(__APPLE__) && defined(__MACH__))) #include -#if !defined(_POSIX_VERSION) +#if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS #define THREADING_USE_GMTIME -#endif /* !_POSIX_VERSION */ +#endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ #if defined(MBEDTLS_THREADING_PTHREAD) diff --git a/library/x509.c b/library/x509.c index 03c3bbe1dd..15c0123c38 100644 --- a/library/x509.c +++ b/library/x509.c @@ -29,10 +29,6 @@ * http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf */ -/* Ensure gmtime_r is available even with -std=c99; must be included before - * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ -#define _POSIX_C_SOURCE 200112L - #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else @@ -67,6 +63,7 @@ #include "mbedtls/platform_time.h" #endif #if defined(MBEDTLS_HAVE_TIME_DATE) +#include "mbedtls/platform_util.h" #include #endif @@ -890,14 +887,6 @@ int mbedtls_x509_key_size_helper( char *buf, size_t buf_size, const char *name ) } #if defined(MBEDTLS_HAVE_TIME_DATE) -#if !defined(_WIN32) && (defined(__unix__) || \ - (defined(__APPLE__) && defined(__MACH__))) -#include -#if !defined(_POSIX_VERSION) -#define X509_USE_GMTIME -#endif /* !_POSIX_VERSION */ -#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ - /* * Set the time structure to the current time. * Return 0 on success, non-zero on failure. @@ -910,19 +899,8 @@ static int x509_get_current_time( mbedtls_x509_time *now ) (void)tm_buf; -#if defined(MBEDTLS_THREADING_C) && defined(X509_USE_GMTIME) - if( mbedtls_mutex_lock( &mbedtls_threading_gmtime_mutex ) != 0 ) - return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif /* MBEDTLS_THREADING_C && X509_USE_GMTIME */ - tt = mbedtls_time( NULL ); -#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) - lt = gmtime_s( &tm_buf, &tt ) == 0 ? &tm_buf : NULL; -#elif defined(_POSIX_VERSION) - lt = gmtime_r( &tt, &tm_buf ); -#else - lt = gmtime( &tt ); -#endif + lt = mbedtls_platform_gmtime( &tt, &tm_buf ); if( lt == NULL ) ret = -1; @@ -936,11 +914,6 @@ static int x509_get_current_time( mbedtls_x509_time *now ) now->sec = lt->tm_sec; } -#if defined(MBEDTLS_THREADING_C) && defined(X509_USE_GMTIME) - if( mbedtls_mutex_unlock( &mbedtls_threading_gmtime_mutex ) != 0 ) - return( MBEDTLS_ERR_THREADING_MUTEX_ERROR ); -#endif /* MBEDTLS_THREADING_C && X509_USE_GMTIME */ - return( ret ); } From a7b9f15f2721850ba2d4a02d438e40e050358f12 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 16 Aug 2018 21:46:35 +0100 Subject: [PATCH 0801/1100] Add ChangeLog entry for configurable gmtime() in platform --- ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index d8b2829900..5aa54e57c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,14 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +API Changes + * Extend the platform module with an abstraction mbedtls_platform_gmtime() + whose implementation should behave as a thread safe version of gmtime(). + This allows users to configure such an implementation at compile time when + the target system cannot be deduced automatically. At this stage Mbed TLS + is only able to configure implementations for Windows and POSIX C + libraries. + Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 From 248e27c487ed2aca15b335112bf909808ba8ba10 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Thu, 16 Aug 2018 21:50:23 +0100 Subject: [PATCH 0802/1100] Remove redundant statement from x509_get_current_time --- library/x509.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/library/x509.c b/library/x509.c index 15c0123c38..c17697b226 100644 --- a/library/x509.c +++ b/library/x509.c @@ -897,8 +897,6 @@ static int x509_get_current_time( mbedtls_x509_time *now ) mbedtls_time_t tt; int ret = 0; - (void)tm_buf; - tt = mbedtls_time( NULL ); lt = mbedtls_platform_gmtime( &tt, &tm_buf ); From eb2b15accd4433cb15b144acff35a6328efa62f2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 09:47:22 +0100 Subject: [PATCH 0803/1100] Improve ChangeLog wording for the commmit that Fixes #1954. --- ChangeLog | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f505b38861..8260ad6517 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,9 +10,11 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. - * Fix overly strict bounds check in ssl_parse_certificate_request() - which could lead to valid CertificateRequest messages being rejected. - Fixes #1954. + * Fix a bug that caused SSL/TLS clients to incorrectly abort the handshake + with TLS versions 1.1 and earlier when the server requested authentication + without providing a list of CAs. This was due to an overly strict bounds + check in parsing the CertificateRequest message, + introduced in Mbed TLS 2.12.0. Fixes #1954. Changes * Copy headers preserving timestamps when doing a "make install". From 1218bc0f74a14436915e6c0807be0e3f752b9da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 17 Aug 2018 10:51:26 +0200 Subject: [PATCH 0804/1100] Add simple interop tests (reliable connection) --- tests/ssl-opt.sh | 114 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 397c565fe6..86e9f1e060 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5253,6 +5253,120 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ -c "found fragmented DTLS handshake message" \ -C "error" +# here and below we just want to test that the we fragment in a way that +# pleases other implementations, so we don't need the peer to fragment +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \ + "$G_SRV -u" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \ + "$G_SRV -u" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +# gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS +requires_ipv6 +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \ + "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 force_version=dtls1_2" \ + "$G_CLI -u" \ + 0 \ + -s "fragmenting handshake message" + +# gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS +requires_ipv6 +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \ + "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 force_version=dtls1" \ + "$G_CLI -u" \ + 0 \ + -s "fragmenting handshake message" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +run_test "DTLS fragmenting: openssl server, DTLS 1.2" \ + "$O_SRV -dtls1_2 -verify 10" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "DTLS fragmenting: openssl server, DTLS 1.0" \ + "$O_SRV -dtls1 -verify 10" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +run_test "DTLS fragmenting: openssl client, DTLS 1.2" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 force_version=dtls1_2" \ + "$O_CLI -dtls1_2" \ + 0 \ + -s "fragmenting handshake message" + +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "DTLS fragmenting: openssl client, DTLS 1.0" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 force_version=dtls1" \ + "$O_CLI -dtls1" \ + 0 \ + -s "fragmenting handshake message" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From 0794d49566224e4d7a61bc510503ad3c55907620 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 17 Aug 2018 10:54:24 +0200 Subject: [PATCH 0805/1100] Skip some tests with valgrind (spurious resend) --- tests/ssl-opt.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 86e9f1e060..beceafae61 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5048,6 +5048,7 @@ run_test "DTLS fragmenting: both (MTU)" \ -C "error" # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5074,6 +5075,7 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ # Since we don't support reading fragmented ClientHello yet, # up the MTU to 1450 (larger than ClientHello with session ticket, # but still smaller than client's Certificate to ensure fragmentation). +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5094,6 +5096,7 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5121,6 +5124,7 @@ run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5149,6 +5153,7 @@ run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5177,6 +5182,7 @@ run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5206,6 +5212,7 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From d26bb2090f86ea7068ce8493748cd7eaf5bbb66c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 09:54:10 +0100 Subject: [PATCH 0806/1100] Add tests for empty CA list in CertificateRequest, TLS 1.0 & 1.1 --- tests/ssl-opt.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 937a27b763..58defbfcc9 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -801,6 +801,22 @@ run_test "RC4: both enabled" \ -S "SSL - None of the common ciphersuites is usable" \ -S "SSL - The server has no ciphersuites in common" +# Test empty CA list in CertificateRequest in TLS 1.1 and earlier + +requires_gnutls +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +run_test "CertificateRequest with empty CA list, TLS 1.1 (GnuTLS server)" \ + "$G_SRV"\ + "$P_CLI force_version=tls1_1" \ + 0 + +requires_gnutls +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1 +run_test "CertificateRequest with empty CA list, TLS 1.0 (GnuTLS server)" \ + "$G_SRV"\ + "$P_CLI force_version=tls1" \ + 0 + # Tests for SHA-1 support requires_config_disabled MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES From 38110dfc0e2f59604f6d39093471ae790323c5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Fri, 17 Aug 2018 12:44:54 +0200 Subject: [PATCH 0807/1100] Add interop test with unreliable connection Adds a requirement for GNUTLS_NEXT (3.5.3 or above, in practice we should install 3.6.3) on the CI. See internal ref IOTSSL-2401 for analysis of the bugs and their impact on the tests. --- tests/ssl-opt.sh | 217 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index beceafae61..c27cc25c8e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -41,6 +41,28 @@ G_SRV="$GNUTLS_SERV --x509certfile data_files/server5.crt --x509keyfile data_fil G_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_CLI --x509cafile data_files/test-ca_cat12.crt" TCP_CLIENT="$PERL scripts/tcp_client.pl" +# alternative versions of OpenSSL and GnuTLS (no default path) + +if [ -n "${OPENSSL_LEGACY:-}" ]; then + O_LEGACY_SRV="$OPENSSL_LEGACY s_server -www -cert data_files/server5.crt -key data_files/server5.key" + O_LEGACY_CLI="echo 'GET / HTTP/1.0' | $OPENSSL_LEGACY s_client" +else + O_LEGACY_SRV=false + O_LEGACY_CLI=false +fi + +if [ -n "${GNUTLS_NEXT_SERV}" ]; then + G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key" +else + G_NEXT_SRV=false +fi + +if [ -n "${GNUTLS_NEXT_CLI}" ]; then + G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt" +else + G_NEXT_CLI=false +fi + TESTS=0 FAILS=0 SKIPS=0 @@ -163,6 +185,34 @@ requires_gnutls() { fi } +# skip next test if GnuTLS-next isn't available +requires_gnutls_next() { + if [ -z "${GNUTLS_NEXT_AVAILABLE:-}" ]; then + if ( which "${GNUTLS_NEXT_CLI:-}" && which "${GNUTLS_NEXT_SERV:-}" ) >/dev/null 2>&1; then + GNUTLS_NEXT_AVAILABLE="YES" + else + GNUTLS_NEXT_AVAILABLE="NO" + fi + fi + if [ "$GNUTLS_NEXT_AVAILABLE" = "NO" ]; then + SKIP_NEXT="YES" + fi +} + +# skip next test if OpenSSL-legacy isn't available +requires_openssl_legacy() { + if [ -z "${OPENSSL_LEGACY_AVAILABLE:-}" ]; then + if which "${OPENSSL_LEGACY:-}" >/dev/null 2>&1; then + OPENSSL_LEGACY_AVAILABLE="YES" + else + OPENSSL_LEGACY_AVAILABLE="NO" + fi + fi + if [ "$OPENSSL_LEGACY_AVAILABLE" = "NO" ]; then + SKIP_NEXT="YES" + fi +} + # skip next test if IPv6 isn't available on this host requires_ipv6() { if [ -z "${HAS_IPV6:-}" ]; then @@ -717,6 +767,19 @@ O_CLI="$O_CLI -connect localhost:+SRV_PORT" G_SRV="$G_SRV -p $SRV_PORT" G_CLI="$G_CLI -p +SRV_PORT localhost" +if [ -n "${OPENSSL_LEGACY:-}" ]; then + O_LEGACY_SRV="$O_LEGACY_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem" + O_LEGACY_CLI="$O_LEGACY_CLI -connect localhost:+SRV_PORT" +fi + +if [ -n "${GNUTLS_NEXT_SERV}" ]; then + G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT" +fi + +if [ -n "${GNUTLS_NEXT_CLI}" ]; then + G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT localhost" +fi + # Allow SHA-1, because many of our test certificates use it P_SRV="$P_SRV allow_sha1=1" P_CLI="$P_CLI allow_sha1=1" @@ -5260,6 +5323,8 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ -c "found fragmented DTLS handshake message" \ -C "error" +# interop tests for DTLS fragmentating with reliable connection +# # here and below we just want to test that the we fragment in a way that # pleases other implementations, so we don't need the peer to fragment requires_config_enabled MBEDTLS_SSL_PROTO_DTLS @@ -5374,6 +5439,158 @@ run_test "DTLS fragmenting: openssl client, DTLS 1.0" \ 0 \ -s "fragmenting handshake message" +# interop tests for DTLS fragmentating with unreliable connection +# +# again we just want to test that the we fragment in a way that +# pleases other implementations, so we don't need the peer to fragment +requires_gnutls_next +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +client_needs_more_time 2 +run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$G_NEXT_SRV -u" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +requires_gnutls_next +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +client_needs_more_time 2 +run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$G_NEXT_SRV -u" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +## The two tests below are disabled due to a bug in GnuTLS client that causes +## handshake failures when the NewSessionTicket message is lost, see +## https://gitlab.com/gnutls/gnutls/issues/543 +## We can re-enable them when a fixed version fo GnuTLS is available +## and installed in our CI system. +## +## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS +## requires_ipv6 +## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +## requires_config_enabled MBEDTLS_RSA_C +## requires_config_enabled MBEDTLS_ECDSA_C +## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +## client_needs_more_time 2 +## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \ +## -p "$P_PXY drop=8 delay=8 duplicate=8" \ +## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ +## crt_file=data_files/server7_int-ca.crt \ +## key_file=data_files/server7.key \ +## mtu=512 force_version=dtls1_2" \ +## "$G_CLI -u" \ +## 0 \ +## -s "fragmenting handshake message" +## +## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS +## requires_ipv6 +## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +## requires_config_enabled MBEDTLS_RSA_C +## requires_config_enabled MBEDTLS_ECDSA_C +## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +## client_needs_more_time 2 +## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ +## -p "$P_PXY drop=8 delay=8 duplicate=8" \ +## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ +## crt_file=data_files/server7_int-ca.crt \ +## key_file=data_files/server7.key \ +## mtu=512 force_version=dtls1" \ +## "$G_CLI -u" \ +## 0 \ +## -s "fragmenting handshake message" + +## Interop test with OpenSSL might triger a bug in recent versions (that +## probably won't be fixed before 1.1.1X), so we use an old version that +## doesn't have this bug, but unfortunately it doesn't have support for DTLS +## 1.2 either, so the DTLS 1.2 tests are commented for now. +## Bug report: https://github.com/openssl/openssl/issues/6902 +## They should be re-enabled (and the DTLS 1.0 switched back to a non-legacy +## version of OpenSSL once a fixed version of OpenSSL is available) +## +## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +## requires_config_enabled MBEDTLS_RSA_C +## requires_config_enabled MBEDTLS_ECDSA_C +## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +## client_needs_more_time 2 +## run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \ +## -p "$P_PXY drop=8 delay=8 duplicate=8" \ +## "$O_SRV -dtls1_2 -verify 10" \ +## "$P_CLI dtls=1 debug_level=2 \ +## crt_file=data_files/server8_int-ca2.crt \ +## key_file=data_files/server8.key \ +## mtu=512 force_version=dtls1_2" \ +## 0 \ +## -c "fragmenting handshake message" \ +## -C "error" + +requires_openssl_legacy +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +client_needs_more_time 2 +run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$O_LEGACY_SRV -dtls1 -verify 10" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 force_version=dtls1" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" + +## see comment on the previous-previous test +## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +## requires_config_enabled MBEDTLS_RSA_C +## requires_config_enabled MBEDTLS_ECDSA_C +## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +## client_needs_more_time 2 +## run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \ +## -p "$P_PXY drop=8 delay=8 duplicate=8" \ +## "$P_SRV dtls=1 debug_level=2 \ +## crt_file=data_files/server7_int-ca.crt \ +## key_file=data_files/server7.key \ +## mtu=512 force_version=dtls1_2" \ +## "$O_CLI -dtls1_2" \ +## 0 \ +## -s "fragmenting handshake message" + +# -nbio is added to prevent s_client from blocking in case of duplicated +# messages at the end of the handshake +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +client_needs_more_time 2 +run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 force_version=dtls1" \ + "$O_LEGACY_CLI -nbio -dtls1" \ + 0 \ + -s "fragmenting handshake message" + # Tests for specific things with "unreliable" UDP connection not_with_valgrind # spurious resend due to timeout From 3136ede0e85b135e0212973ef34dd2565eca6e56 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 15:28:19 +0100 Subject: [PATCH 0808/1100] Compute record expansion in steps to ease readability --- library/ssl_tls.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5905a6d921..1969eaf0c7 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6839,7 +6839,7 @@ const char *mbedtls_ssl_get_version( const mbedtls_ssl_context *ssl ) int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) { - size_t transform_expansion; + size_t transform_expansion = 0; const mbedtls_ssl_transform *transform = ssl->transform_out; unsigned block_size; @@ -6865,23 +6865,21 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) block_size = mbedtls_cipher_get_block_size( &transform->cipher_ctx_enc ); + /* Expansion due to the addition of the MAC. */ + transform_expansion += transform->maclen; + + /* Expansion due to the addition of CBC padding; + * Theoretically up to 256 bytes, but we never use + * more than the block size of the underlying cipher. */ + transform_expansion += block_size; + + /* For TLS 1.1 or higher, an explicit IV is added + * after the record header. */ #if defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2) if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - /* Expansion due to addition of - * - MAC - * - CBC padding (theoretically up to 256 bytes, but - * we never use more than block_size) - * - explicit IV - */ - transform_expansion = transform->maclen + 2 * block_size; - } - else + transform_expansion += block_size; #endif /* MBEDTLS_SSL_PROTO_TLS1_1 || MBEDTLS_SSL_PROTO_TLS1_2 */ - { - /* No explicit IV prior to TLS 1.1. */ - transform_expansion = transform->maclen + block_size; - } + break; default: From 5aa4e2cedd819b4fd307531eaa64f4f5ca8a01d4 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 09:26:08 +0100 Subject: [PATCH 0809/1100] Move deduction of internal record buffer pointers to function The SSL/TLS module maintains a number of internally used pointers `out_hdr`, `out_len`, `out_iv`, ..., indicating where to write the various parts of the record header. These pointers have to be kept in sync and sometimes need update: Most notably, the `out_msg` pointer should always point to the beginning of the record payload, and its offset from the pointer `out_iv` pointing to the end of the record header is determined by the length of the explicit IV used in the current record protection mechanism. This commit introduces functions deducing these pointers from the pointers `out_hdr` / `in_hdr` to the beginning of the header of the current outgoing / incoming record. The flexibility gained by these functions will subsequently be used to allow shifting of `out_hdr` for the purpose of packing multiple records into a single datagram. --- library/ssl_tls.c | 138 +++++++++++++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 50 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 530f283b47..4607749efe 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -96,6 +96,10 @@ static int ssl_check_timer( mbedtls_ssl_context *ssl ) return( 0 ); } +static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ); +static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ); #if defined(MBEDTLS_SSL_PROTO_DTLS) /* * Double the retransmit timeout value, within the allowed range, @@ -2799,14 +2803,7 @@ static void ssl_swap_epochs( mbedtls_ssl_context *ssl ) memcpy( ssl->handshake->alt_out_ctr, tmp_out_ctr, 8 ); /* Adjust to the newly activated transform */ - if( ssl->transform_out != NULL && - ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - ssl->out_msg = ssl->out_iv + ssl->transform_out->ivlen - - ssl->transform_out->fixed_ivlen; - } - else - ssl->out_msg = ssl->out_iv; + ssl_update_out_pointers( ssl, ssl->transform_out ); #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) if( mbedtls_ssl_hw_record_activate != NULL ) @@ -5171,16 +5168,7 @@ int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_PROTO_DTLS */ memset( ssl->in_ctr, 0, 8 ); - /* - * Set the in_msg pointer to the correct location based on IV length - */ - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - ssl->in_msg = ssl->in_iv + ssl->transform_negotiate->ivlen - - ssl->transform_negotiate->fixed_ivlen; - } - else - ssl->in_msg = ssl->in_iv; + ssl_update_in_pointers( ssl, ssl->transform_negotiate ); #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) if( mbedtls_ssl_hw_record_activate != NULL ) @@ -5631,16 +5619,7 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write finished" ) ); - /* - * Set the out_msg pointer to the correct location based on IV length - */ - if( ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) - { - ssl->out_msg = ssl->out_iv + ssl->transform_negotiate->ivlen - - ssl->transform_negotiate->fixed_ivlen; - } - else - ssl->out_msg = ssl->out_iv; + ssl_update_out_pointers( ssl, ssl->transform_negotiate ); ssl->handshake->calc_finished( ssl, ssl->out_msg + 4, ssl->conf->endpoint ); @@ -5999,6 +5978,78 @@ static int ssl_cookie_check_dummy( void *ctx, } #endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY && MBEDTLS_SSL_SRV_C */ +/* Once ssl->out_hdr as the address of the beginning of the + * next outgoing record is set, deduce the other pointers. + * + * Note: For TLS, we save the implicit record sequence number + * (entering MAC computation) in the 8 bytes before ssl->out_hdr, + * and the caller has to make sure there's space for this. + */ + +static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_ctr = ssl->out_hdr + 3; + ssl->out_len = ssl->out_hdr + 11; + ssl->out_iv = ssl->out_hdr + 13; + } + else +#endif + { + ssl->out_ctr = ssl->out_hdr - 8; + ssl->out_len = ssl->out_hdr + 3; + ssl->out_iv = ssl->out_hdr + 5; + } + + /* Adjust out_msg to make space for explicit IV, if used. */ + if( transform != NULL && + ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + ssl->out_msg = ssl->out_iv + transform->ivlen - transform->fixed_ivlen; + } + else + ssl->out_msg = ssl->out_iv; +} + +/* Once ssl->in_hdr as the address of the beginning of the + * next incoming record is set, deduce the other pointers. + * + * Note: For TLS, we save the implicit record sequence number + * (entering MAC computation) in the 8 bytes before ssl->in_hdr, + * and the caller has to make sure there's space for this. + */ + +static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->in_ctr = ssl->in_hdr + 3; + ssl->in_len = ssl->in_hdr + 11; + ssl->in_iv = ssl->in_hdr + 13; + } + else +#endif + { + ssl->in_ctr = ssl->in_hdr - 8; + ssl->in_len = ssl->in_hdr + 3; + ssl->in_iv = ssl->in_hdr + 5; + } + + /* Offset in_msg from in_iv to allow space for explicit IV, if used. */ + if( transform != NULL && + ssl->minor_ver >= MBEDTLS_SSL_MINOR_VERSION_2 ) + { + ssl->in_msg = ssl->in_iv + transform->ivlen - transform->fixed_ivlen; + } + else + ssl->in_msg = ssl->in_iv; +} + /* * Initialize an SSL context */ @@ -6036,37 +6087,24 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); } + /* Set the incoming and outgoing record pointers. */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) { ssl->out_hdr = ssl->out_buf; - ssl->out_ctr = ssl->out_buf + 3; - ssl->out_len = ssl->out_buf + 11; - ssl->out_iv = ssl->out_buf + 13; - ssl->out_msg = ssl->out_buf + 13; - - ssl->in_hdr = ssl->in_buf; - ssl->in_ctr = ssl->in_buf + 3; - ssl->in_len = ssl->in_buf + 11; - ssl->in_iv = ssl->in_buf + 13; - ssl->in_msg = ssl->in_buf + 13; + ssl->in_hdr = ssl->in_buf; } else -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ { - ssl->out_ctr = ssl->out_buf; - ssl->out_hdr = ssl->out_buf + 8; - ssl->out_len = ssl->out_buf + 11; - ssl->out_iv = ssl->out_buf + 13; - ssl->out_msg = ssl->out_buf + 13; - - ssl->in_ctr = ssl->in_buf; - ssl->in_hdr = ssl->in_buf + 8; - ssl->in_len = ssl->in_buf + 11; - ssl->in_iv = ssl->in_buf + 13; - ssl->in_msg = ssl->in_buf + 13; + ssl->out_hdr = ssl->out_buf + 8; + ssl->in_hdr = ssl->in_buf + 8; } + /* Derive other internal pointers. */ + ssl_update_out_pointers( ssl, NULL /* no transform enabled */ ); + ssl_update_in_pointers ( ssl, NULL /* no transform enabled */ ); + if( ( ret = ssl_handshake_init( ssl ) ) != 0 ) return( ret ); From 198594709baa82d55bba4e5ee442ffb5ffe886b4 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 09:40:20 +0100 Subject: [PATCH 0810/1100] Store outgoing record sequence number outside record buffer This commit is another step towards supporting the packing of multiple records within a single datagram. Previously, the incremental outgoing record sequence number was statically stored within the record buffer, at its final place within the record header. This slightly increased efficiency as it was not necessary to copy the sequence number when writing outgoing records. When allowing multiple records within a single datagram, it is necessary to allow the position of the current record within the datagram buffer to be flexible; in particular, there is no static address for the record sequence number field within the record header. This commit introduces an additional field `cur_out_ctr` within the main SSL context structure `mbedtls_ssl_context` to keep track of the outgoing record sequence number independent of the buffer used for the current record / datagram. Whenever a new record is written, this sequence number is copied to the the address `out_ctr` of the sequence number header field within the current outgoing record. --- include/mbedtls/ssl.h | 2 ++ library/ssl_srv.c | 2 +- library/ssl_tls.c | 17 ++++++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index a3b514cd4f..f27f6c02fc 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1116,6 +1116,8 @@ struct mbedtls_ssl_context size_t out_msglen; /*!< record header: message length */ size_t out_left; /*!< amount of data not yet written */ + unsigned char cur_out_ctr[8]; /*!< Outgoing record sequence number. */ + #if defined(MBEDTLS_ZLIB_SUPPORT) unsigned char *compress_buf; /*!< zlib data buffer */ #endif diff --git a/library/ssl_srv.c b/library/ssl_srv.c index eda50bb342..7101f461f3 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -1294,7 +1294,7 @@ read_record_header: return( MBEDTLS_ERR_SSL_BAD_HS_CLIENT_HELLO ); } - memcpy( ssl->out_ctr + 2, ssl->in_ctr + 2, 6 ); + memcpy( ssl->cur_out_ctr + 2, ssl->in_ctr + 2, 6 ); #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) if( mbedtls_ssl_dtls_replay_check( ssl ) != 0 ) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4607749efe..f2373eb519 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2798,8 +2798,8 @@ static void ssl_swap_epochs( mbedtls_ssl_context *ssl ) ssl->handshake->alt_transform_out = tmp_transform; /* Swap epoch + sequence_number */ - memcpy( tmp_out_ctr, ssl->out_ctr, 8 ); - memcpy( ssl->out_ctr, ssl->handshake->alt_out_ctr, 8 ); + memcpy( tmp_out_ctr, ssl->cur_out_ctr, 8 ); + memcpy( ssl->cur_out_ctr, ssl->handshake->alt_out_ctr, 8 ); memcpy( ssl->handshake->alt_out_ctr, tmp_out_ctr, 8 ); /* Adjust to the newly activated transform */ @@ -3210,6 +3210,7 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, ssl->conf->transport, ssl->out_hdr + 1 ); + memcpy( ssl->out_ctr, ssl->cur_out_ctr, 8 ); ssl->out_len[0] = (unsigned char)( len >> 8 ); ssl->out_len[1] = (unsigned char)( len ); @@ -5671,14 +5672,14 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) /* Remember current epoch settings for resending */ ssl->handshake->alt_transform_out = ssl->transform_out; - memcpy( ssl->handshake->alt_out_ctr, ssl->out_ctr, 8 ); + memcpy( ssl->handshake->alt_out_ctr, ssl->cur_out_ctr, 8 ); /* Set sequence_number to zero */ - memset( ssl->out_ctr + 2, 0, 6 ); + memset( ssl->cur_out_ctr + 2, 0, 6 ); /* Increment epoch */ for( i = 2; i > 0; i-- ) - if( ++ssl->out_ctr[i - 1] != 0 ) + if( ++ssl->cur_out_ctr[i - 1] != 0 ) break; /* The loop goes to its end iff the counter is wrapping */ @@ -5690,7 +5691,7 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_SSL_PROTO_DTLS */ - memset( ssl->out_ctr, 0, 8 ); + memset( ssl->cur_out_ctr, 0, 8 ); ssl->transform_out = ssl->transform_negotiate; ssl->session_out = ssl->session_negotiate; @@ -6166,6 +6167,8 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->split_done = 0; #endif + memset( ssl->cur_out_ctr, 0, sizeof( ssl->cur_out_ctr ) ); + ssl->transform_in = NULL; ssl->transform_out = NULL; @@ -7381,7 +7384,7 @@ static int ssl_check_ctr_renegotiate( mbedtls_ssl_context *ssl ) in_ctr_cmp = memcmp( ssl->in_ctr + ep_len, ssl->conf->renego_period + ep_len, 8 - ep_len ); - out_ctr_cmp = memcmp( ssl->out_ctr + ep_len, + out_ctr_cmp = memcmp( ssl->cur_out_ctr + ep_len, ssl->conf->renego_period + ep_len, 8 - ep_len ); if( in_ctr_cmp <= 0 && out_ctr_cmp <= 0 ) From 04484621d0f6f6921f7d01bbef98eff6ceca0fb1 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 09:49:38 +0100 Subject: [PATCH 0811/1100] Increment record sequence number in ssl_write_record() Previously, the record sequence number was incremented at the end of each successful call to mbedtls_ssl_flush_output(), which works as long as there is precisely one such call for each outgoing record. When packing multiple records into a single datagram, this property is no longer true, and instead the increment of the record sequence number must happen after the record has been prepared, and not after it has been dispatched. This commit moves the code for incrementing the record sequence number from mbedtls_ssl_flush_output() to ssl_write_record(). --- library/ssl_tls.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f2373eb519..9342321af9 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2648,7 +2648,7 @@ int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ) int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) { int ret; - unsigned char *buf, i; + unsigned char *buf; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> flush output" ) ); @@ -2691,16 +2691,6 @@ int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) ssl->out_left -= ret; } - for( i = 8; i > ssl_ep_len( ssl ); i-- ) - if( ++ssl->out_ctr[i - 1] != 0 ) - break; - - /* The loop goes to its end iff the counter is wrapping */ - if( i == ssl_ep_len( ssl ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "outgoing message counter would wrap" ) ); - return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); - } MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); @@ -3236,6 +3226,16 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", ssl->out_hdr, mbedtls_ssl_hdr_len( ssl ) + ssl->out_msglen ); + for( i = 8; i > ssl_ep_len( ssl ); i-- ) + if( ++ssl->cur_out_ctr[i - 1] != 0 ) + break; + + /* The loop goes to its end iff the counter is wrapping */ + if( i == ssl_ep_len( ssl ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "outgoing message counter would wrap" ) ); + return( MBEDTLS_ERR_SSL_COUNTER_WRAPPING ); + } } if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) From 3b235902b86694728b54df430f247e4c145d30dd Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 09:54:53 +0100 Subject: [PATCH 0812/1100] Log calls to ssl_flight_append() in debugging output --- library/ssl_tls.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 9342321af9..edb233bbd0 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2707,6 +2707,9 @@ int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) static int ssl_flight_append( mbedtls_ssl_context *ssl ) { mbedtls_ssl_flight_item *msg; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_flight_append" ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "message appended to flight", + ssl->out_msg, ssl->out_msglen ); /* Allocate space for current message */ if( ( msg = mbedtls_calloc( 1, sizeof( mbedtls_ssl_flight_item ) ) ) == NULL ) @@ -2740,6 +2743,7 @@ static int ssl_flight_append( mbedtls_ssl_context *ssl ) cur->next = msg; } + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_flight_append" ) ); return( 0 ); } From 2b1e3547548acad8ce742eaef2df24c8d206684e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 11:19:13 +0100 Subject: [PATCH 0813/1100] Increase record buffer pointer after preparing a record The packing of multiple records within a single datagram works by increasing the pointer `out_hdr` (pointing to the beginning of the next outgoing record) within the datagram buffer, as long as space is available and no flush was mandatory. This commit does not yet change the code's behavior of always flushing after preparing a record, but it introduces the logic of increasing `out_hdr` after preparing the record, and resetting it after the flush has been completed. --- library/ssl_tls.c | 60 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index edb233bbd0..ad071a9763 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -101,6 +101,17 @@ static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform ); #if defined(MBEDTLS_SSL_PROTO_DTLS) + +static uint16_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) +{ + uint16_t mtu = ssl->conf->mtu; + + if( mtu != 0 && mtu < MBEDTLS_SSL_OUT_BUFFER_LEN ) + return( (int) mtu ); + + return( MBEDTLS_SSL_OUT_BUFFER_LEN ); +} + /* * Double the retransmit timeout value, within the allowed range, * returning -1 if the maximum value has already been reached. @@ -2671,8 +2682,7 @@ int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "message length: %d, out_left: %d", mbedtls_ssl_hdr_len( ssl ) + ssl->out_msglen, ssl->out_left ) ); - buf = ssl->out_hdr + mbedtls_ssl_hdr_len( ssl ) + - ssl->out_msglen - ssl->out_left; + buf = ssl->out_hdr - ssl->out_left; ret = ssl->f_send( ssl->p_bio, buf, ssl->out_left ); MBEDTLS_SSL_DEBUG_RET( 2, "ssl->f_send", ret ); @@ -2691,6 +2701,17 @@ int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ) ssl->out_left -= ret; } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_hdr = ssl->out_buf; + } + else +#endif + { + ssl->out_hdr = ssl->out_buf + 8; + } + ssl_update_out_pointers( ssl, ssl->transform_out ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= flush output" ) ); @@ -3200,6 +3221,9 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ if( !done ) { + unsigned i; + size_t protected_record_size; + ssl->out_hdr[0] = (unsigned char) ssl->out_msgtype; mbedtls_ssl_write_version( ssl->major_ver, ssl->minor_ver, ssl->conf->transport, ssl->out_hdr + 1 ); @@ -3221,15 +3245,37 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) ssl->out_len[1] = (unsigned char)( len ); } - ssl->out_left = mbedtls_ssl_hdr_len( ssl ) + ssl->out_msglen; + protected_record_size = len + mbedtls_ssl_hdr_len( ssl ); + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* In case of DTLS, double-check that we don't exceed + * the remaining space in the datagram. */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ret = ssl_get_maximum_datagram_size( ssl ); + if( ret < 0 ) + return( ret ); + + if( protected_record_size > (size_t) ret ) + { + /* Should never happen */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ MBEDTLS_SSL_DEBUG_MSG( 3, ( "output record: msgtype = %d, " - "version = [%d:%d], msglen = %d", - ssl->out_hdr[0], ssl->out_hdr[1], ssl->out_hdr[2], - ( ssl->out_len[0] << 8 ) | ssl->out_len[1] ) ); + "version = [%d:%d], msglen = %d", + ssl->out_hdr[0], ssl->out_hdr[1], ssl->out_hdr[2], len ) ); + MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", - ssl->out_hdr, mbedtls_ssl_hdr_len( ssl ) + ssl->out_msglen ); + ssl->out_hdr, protected_record_size ); + + ssl->out_left += protected_record_size; + ssl->out_hdr += protected_record_size; + ssl_update_out_pointers( ssl, ssl->transform_out ); + for( i = 8; i > ssl_ep_len( ssl ); i-- ) if( ++ssl->cur_out_ctr[i - 1] != 0 ) break; From 67bc7c3a384aae3d42de45cc2fb79a83a252c770 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 11:33:50 +0100 Subject: [PATCH 0814/1100] Don't immediately flush datagram after preparing a record This commit finally enables datagram packing by modifying the record preparation function ssl_write_record() to not always calling mbedtls_ssl_flush_output(). --- include/mbedtls/ssl_internal.h | 2 +- library/ssl_tls.c | 160 ++++++++++++++++++++++++++------- 2 files changed, 128 insertions(+), 34 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 18982f89a0..765da7a71b 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -561,7 +561,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ); int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ); int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ); -int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ); int mbedtls_ssl_flush_output( mbedtls_ssl_context *ssl ); int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ad071a9763..878495b172 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -100,6 +100,10 @@ static void ssl_update_out_pointers( mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform ); static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, mbedtls_ssl_transform *transform ); + +#define SSL_DONT_FORCE_FLUSH 0 +#define SSL_FORCE_FLUSH 1 + #if defined(MBEDTLS_SSL_PROTO_DTLS) static uint16_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) @@ -112,6 +116,55 @@ static uint16_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) return( MBEDTLS_SSL_OUT_BUFFER_LEN ); } +static int ssl_get_remaining_space_in_datagram( mbedtls_ssl_context const *ssl ) +{ + size_t const bytes_written = ssl->out_left; + uint16_t const mtu = ssl_get_maximum_datagram_size( ssl ); + + /* Double-check that the write-index hasn't gone + * past what we can transmit in a single datagram. */ + if( bytes_written > (size_t) mtu ) + { + /* Should never happen... */ + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + return( (int) ( mtu - bytes_written ) ); +} + +static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl ) +{ + int ret; + size_t remaining, expansion; + size_t max_len = MBEDTLS_SSL_MAX_CONTENT_LEN; + +#if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) + const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); + + if( max_len > mfl ) + max_len = mfl; +#endif + + ret = ssl_get_remaining_space_in_datagram( ssl ); + if( ret < 0 ) + return( ret ); + remaining = (size_t) ret; + + ret = mbedtls_ssl_get_record_expansion( ssl ); + if( ret < 0 ) + return( ret ); + expansion = (size_t) ret; + + if( remaining <= expansion ) + return( 0 ); + + remaining -= expansion; + if( remaining >= max_len ) + remaining = max_len; + + return( (int) remaining ); +} + /* * Double the retransmit timeout value, within the allowed range, * returning -1 if the maximum value has already been reached. @@ -2857,20 +2910,9 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) */ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { - const int ret_payload = mbedtls_ssl_get_max_out_record_payload( ssl ); - const size_t max_record_payload = (size_t) ret_payload; - /* DTLS handshake headers are 12 bytes */ - const size_t max_hs_fragment_len = max_record_payload - 12; - + int ret; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); - if( ret_payload < 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", - ret_payload ); - return( ret_payload ); - } - if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise flight transmission" ) ); @@ -2884,22 +2926,38 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) while( ssl->handshake->cur_msg != NULL ) { - int ret; + size_t max_frag_len; const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; + /* Swap epochs before sending Finished: we can't do it after * sending ChangeCipherSpec, in case write returns WANT_READ. * Must be done before copying, may change out_msg pointer */ if( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && - cur->p[0] == MBEDTLS_SSL_HS_FINISHED ) + cur->p[0] == MBEDTLS_SSL_HS_FINISHED && + ssl->handshake->cur_msg_p == ( cur->p + 12 ) ) { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "swap epochs to send finished message" ) ); ssl_swap_epochs( ssl ); } + ret = ssl_get_remaining_payload_in_datagram( ssl ); + if( ret < 0 ) + return( ret ); + max_frag_len = (size_t) ret; + /* CCS is copied as is, while HS messages may need fragmentation */ if( cur->type == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) { + if( max_frag_len == 0 ) + { + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + continue; + } + memcpy( ssl->out_msg, cur->p, cur->len ); - ssl->out_msglen = cur->len; + ssl->out_msglen = cur->len; ssl->out_msgtype = cur->type; /* Update position inside current message */ @@ -2911,14 +2969,31 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) const size_t hs_len = cur->len - 12; const size_t frag_off = p - ( cur->p + 12 ); const size_t rem_len = hs_len - frag_off; - const size_t frag_len = rem_len > max_hs_fragment_len - ? max_hs_fragment_len : rem_len; + size_t cur_hs_frag_len, max_hs_frag_len; - if( frag_off == 0 && frag_len != hs_len ) + if( max_frag_len < 12 ) + { + if( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && + cur->p[0] == MBEDTLS_SSL_HS_FINISHED ) + { + ssl_swap_epochs( ssl ); + } + + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + + continue; + } + max_hs_frag_len = max_frag_len - 12; + + cur_hs_frag_len = rem_len > max_hs_frag_len ? + max_hs_frag_len : rem_len; + + if( frag_off == 0 && cur_hs_frag_len != hs_len ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message (%u > %u)", - (unsigned) hs_len, - (unsigned) max_hs_fragment_len ) ); + (unsigned) cur_hs_frag_len, + (unsigned) max_hs_frag_len ) ); } /* Messages are stored with handshake headers as if not fragmented, @@ -2930,19 +3005,19 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ssl->out_msg[7] = ( ( frag_off >> 8 ) & 0xff ); ssl->out_msg[8] = ( ( frag_off ) & 0xff ); - ssl->out_msg[ 9] = ( ( frag_len >> 16 ) & 0xff ); - ssl->out_msg[10] = ( ( frag_len >> 8 ) & 0xff ); - ssl->out_msg[11] = ( ( frag_len ) & 0xff ); + ssl->out_msg[ 9] = ( ( cur_hs_frag_len >> 16 ) & 0xff ); + ssl->out_msg[10] = ( ( cur_hs_frag_len >> 8 ) & 0xff ); + ssl->out_msg[11] = ( ( cur_hs_frag_len ) & 0xff ); MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); - /* Copy the handshake message content and set records fields */ - memcpy( ssl->out_msg + 12, p, frag_len ); - ssl->out_msglen = frag_len + 12; + /* Copy the handshame message content and set records fields */ + memcpy( ssl->out_msg + 12, p, cur_hs_frag_len ); + ssl->out_msglen = cur_hs_frag_len + 12; ssl->out_msgtype = cur->type; /* Update position inside current message */ - ssl->handshake->cur_msg_p += frag_len; + ssl->handshake->cur_msg_p += cur_hs_frag_len; } /* If done with the current message move to the next one if any */ @@ -2961,13 +3036,17 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) } /* Actually send the message out */ - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_record( ssl, + SSL_DONT_FORCE_FLUSH ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); } } + if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) + return( ret ); + /* Update state and set timer */ if( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER ) ssl->handshake->retransmit_state = MBEDTLS_SSL_RETRANS_FINISHED; @@ -3158,7 +3237,7 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) else #endif { - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "ssl_write_record", ret ); return( ret ); @@ -3182,10 +3261,11 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) * - ssl->out_msglen: length of the record content (excl headers) * - ssl->out_msg: record content */ -int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) { int ret, done = 0; size_t len = ssl->out_msglen; + uint8_t flush = force_flush; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> write record" ) ); @@ -3288,7 +3368,21 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl ) } } - if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + size_t remaining = ssl_get_remaining_payload_in_datagram( ssl ); + if( remaining == 0 ) + flush = SSL_FORCE_FLUSH; + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Stil %u bytes available in current datagram", (unsigned) remaining ) ); + } + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + + if( ( flush == SSL_FORCE_FLUSH ) && + ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flush_output", ret ); return( ret ); @@ -4570,7 +4664,7 @@ int mbedtls_ssl_send_alert_message( mbedtls_ssl_context *ssl, ssl->out_msg[0] = level; ssl->out_msg[1] = message; - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); @@ -7815,7 +7909,7 @@ static int ssl_write_real( mbedtls_ssl_context *ssl, ssl->out_msgtype = MBEDTLS_SSL_MSG_APPLICATION_DATA; memcpy( ssl->out_msg, buf, len ); - if( ( ret = mbedtls_ssl_write_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_record( ssl, SSL_FORCE_FLUSH ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); From b50a253a879f91c6cf6db83e09f5fc3138b6e404 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 11:52:54 +0100 Subject: [PATCH 0815/1100] Move size check for records --- library/ssl_tls.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 878495b172..d1e699ce44 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1413,14 +1413,6 @@ static int ssl_encrypt_buf( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 4, "before encrypt: output payload", ssl->out_msg, ssl->out_msglen ); - if( ssl->out_msglen > MBEDTLS_SSL_OUT_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record content %u too large, maximum %d", - (unsigned) ssl->out_msglen, - MBEDTLS_SSL_OUT_CONTENT_LEN ) ); - return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA ); - } - /* * Add MAC before if needed */ @@ -3166,6 +3158,23 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) } #endif + /* Double-check that we did not exceed the bounds + * of the outgoing record buffer. + * This should never fail as the various message + * writing functions must obey the bounds of the + * outgoing record buffer, but better be safe. + * + * Note: We deliberately do not check for the MTU or MFL here. + */ + if( ssl->out_msglen > MBEDTLS_SSL_OUT_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Record too large: " + "size %u, maximum %u", + (unsigned) ssl->out_msglen, + (unsigned) MBEDTLS_SSL_OUT_CONTENT_LEN ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + /* * Fill handshake headers */ From 111fa497aa29cd537b823681a9267683d28e30fa Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 6 Aug 2018 12:26:33 +0100 Subject: [PATCH 0816/1100] TEST-ONLY: Remove delayed CCS test The test exercising a delayed CCS message is not expected to work when datagram packing is used, as the current UDP proxy is not able to recognize records which are not at the beginning of a datagram. --- tests/ssl-opt.sh | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index c27cc25c8e..54794415ae 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5701,16 +5701,6 @@ run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\ -s "too many records with bad MAC" \ -s "Verification of the message MAC failed" -run_test "DTLS proxy: delay ChangeCipherSpec" \ - -p "$P_PXY delay_ccs=1" \ - "$P_SRV dtls=1 debug_level=1" \ - "$P_CLI dtls=1 debug_level=1" \ - 0 \ - -c "record from another epoch" \ - -s "record from another epoch" \ - -s "Extra-header:" \ - -c "HTTP/1.0 200 OK" - # Tests for "randomly unreliable connection": try a variety of flows and peers client_needs_more_time 2 From 2a43f6f539309637fd3a41c0835a109b6ec95797 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 10 Aug 2018 11:12:52 +0100 Subject: [PATCH 0817/1100] Introduce function to reset in/out pointers --- library/ssl_tls.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index d1e699ce44..4e3c190d63 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -54,6 +54,8 @@ #include "mbedtls/oid.h" #endif +static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); + /* Length of the "epoch" field in the record header */ static inline size_t ssl_ep_len( const mbedtls_ssl_context *ssl ) { @@ -6215,6 +6217,28 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl ) /* * Setup an SSL context */ + +static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ) +{ + /* Set the incoming and outgoing record pointers. */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + { + ssl->out_hdr = ssl->out_buf; + ssl->in_hdr = ssl->in_buf; + } + else +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + ssl->out_hdr = ssl->out_buf + 8; + ssl->in_hdr = ssl->in_buf + 8; + } + + /* Derive other internal pointers. */ + ssl_update_out_pointers( ssl, NULL /* no transform enabled */ ); + ssl_update_in_pointers ( ssl, NULL /* no transform enabled */ ); +} + int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, const mbedtls_ssl_config *conf ) { @@ -6241,23 +6265,7 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl, return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); } - /* Set the incoming and outgoing record pointers. */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) - if( conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) - { - ssl->out_hdr = ssl->out_buf; - ssl->in_hdr = ssl->in_buf; - } - else -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - { - ssl->out_hdr = ssl->out_buf + 8; - ssl->in_hdr = ssl->in_buf + 8; - } - - /* Derive other internal pointers. */ - ssl_update_out_pointers( ssl, NULL /* no transform enabled */ ); - ssl_update_in_pointers ( ssl, NULL /* no transform enabled */ ); + ssl_reset_in_out_pointers( ssl ); if( ( ret = ssl_handshake_init( ssl ) ) != 0 ) return( ret ); From 4ccbf064ed77ef0008ed026d31f69b1d253cface Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 10 Aug 2018 11:20:38 +0100 Subject: [PATCH 0818/1100] Minor improvements in ssl_session_reset_int() --- library/ssl_tls.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4e3c190d63..f2bb748389 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6304,8 +6304,6 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->in_msg = ssl->in_buf + 13; ssl->in_msgtype = 0; ssl->in_msglen = 0; - if( partial == 0 ) - ssl->in_left = 0; #if defined(MBEDTLS_SSL_PROTO_DTLS) ssl->next_record_offset = 0; ssl->in_epoch = 0; @@ -6337,8 +6335,14 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->session_out = NULL; memset( ssl->out_buf, 0, MBEDTLS_SSL_OUT_BUFFER_LEN ); + +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) && defined(MBEDTLS_SSL_SRV_C) if( partial == 0 ) +#endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ + { + ssl->in_left = 0; memset( ssl->in_buf, 0, MBEDTLS_SSL_IN_BUFFER_LEN ); + } #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) if( mbedtls_ssl_hw_record_reset != NULL ) @@ -6371,7 +6375,9 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) #endif #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) +#if defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) if( partial == 0 ) +#endif { mbedtls_free( ssl->cli_id ); ssl->cli_id = NULL; From f29d4702f703e4a3bb0aa2276e7bd6ec7b24defa Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 10 Aug 2018 11:31:15 +0100 Subject: [PATCH 0819/1100] Reset in/out pointers on SSL session reset If a previous session was interrupted during flushing, the out pointers might point arbitrarily into the output buffer. --- library/ssl_tls.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f2bb748389..df21cbd2bb 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6300,8 +6300,8 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->secure_renegotiation = MBEDTLS_SSL_LEGACY_RENEGOTIATION; ssl->in_offt = NULL; + ssl_reset_in_out_pointers( ssl ); - ssl->in_msg = ssl->in_buf + 13; ssl->in_msgtype = 0; ssl->in_msglen = 0; #if defined(MBEDTLS_SSL_PROTO_DTLS) @@ -6317,7 +6317,6 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) ssl->keep_current_message = 0; - ssl->out_msg = ssl->out_buf + 13; ssl->out_msgtype = 0; ssl->out_msglen = 0; ssl->out_left = 0; From 0defedb48823b931f04e8b626356f80b5b2de7c5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 10 Aug 2018 12:35:02 +0100 Subject: [PATCH 0820/1100] Fix unused variable warning in mbedtls_ssl_get_max_record_payload If neither the maximum fragment length extension nor DTLS are used, the SSL context argument is unnecessary as the maximum payload length is hardcoded as MBEDTLS_SSL_MAX_CONTENT_LEN. --- library/ssl_tls.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index df21cbd2bb..a57761ecbe 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -7328,6 +7328,11 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) } #endif +#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ + !defined(MBEDTLS_SSL_PROTO_DTLS) + ((void) ssl); +#endif + return( (int) max_len ); } From 7e7721350bba4d26e374a70b7771cd3c89186701 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 10 Aug 2018 12:38:21 +0100 Subject: [PATCH 0821/1100] Fix unused variable warning in ssl_session_reset_int() The `partial` argument is only used when DTLS and same port client reconnect are enabled. This commit marks the variable as unused if that's not the case. --- library/ssl_tls.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index a57761ecbe..98e508ec6c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6284,6 +6284,11 @@ static int ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ) { int ret; +#if !defined(MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE) || \ + !defined(MBEDTLS_SSL_SRV_C) + ((void) partial); +#endif + ssl->state = MBEDTLS_SSL_HELLO_REQUEST; /* Cancel any possibly running timer */ From 12405e76b5b59ef871a95e02703ee36d9ef71a25 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 13 Aug 2018 16:45:46 +0100 Subject: [PATCH 0822/1100] Increase max_frag_len / MTU in fragmentation ref tests The tests "DTLS fragmenting: none (for reference)" and "DTLS fragmenting: none (for reference) (MTU)" used a maximum fragment length resp. MTU value of 2048 which was meant to be large enough so that fragmentation of the certificate message would not be necessary. However, it is not large enough to hold the entire flight to which the certificate belongs, and hence there will be fragmentation as soon as datagram packing is used. This commit increases the maximum fragment length resp. MTU values to 4096 bytes to ensure that even with datagram packing in place, no fragmentation is necessary. A similar change was made in "DTLS fragmenting: client (MTU)". --- tests/ssl-opt.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 54794415ae..1986c25b3a 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4960,11 +4960,11 @@ run_test "DTLS fragmenting: none (for reference)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - max_frag_len=2048" \ + max_frag_len=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=2048" \ + max_frag_len=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ -C "found fragmented DTLS handshake message" \ @@ -5049,11 +5049,11 @@ run_test "DTLS fragmenting: none (for reference) (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=2048" \ + mtu=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=2048" \ + mtu=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ -C "found fragmented DTLS handshake message" \ @@ -5066,7 +5066,7 @@ run_test "DTLS fragmenting: client (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=2048" \ + mtu=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ From 04da1892256999a9549775820758a187fcb19070 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 13:22:10 +0100 Subject: [PATCH 0823/1100] Make datagram packing dynamically configurable This commit adds a public function `mbedtls_ssl_conf_datagram_packing()` that allows to allow / forbid the packing of multiple records within a single datagram. --- include/mbedtls/ssl.h | 37 +++++++++++++++++++++++++++++++++++++ library/ssl_tls.c | 16 +++++++++++++--- 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index f27f6c02fc..85ab722062 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1102,6 +1102,11 @@ struct mbedtls_ssl_context int keep_current_message; /*!< drop or reuse current message on next call to record layer? */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint8_t disable_datagram_packing; /*!< Disable packing multiple records + * within a single datagram. */ +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + /* * Record layer (outgoing data) */ @@ -1763,6 +1768,38 @@ void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limi #endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ #if defined(MBEDTLS_SSL_PROTO_DTLS) + +/** + * \brief Allow or disallow packing of multiple handshake records + * within a single datagram. + * + * \param ssl The SSL context to configure. + * \param allow_packing This determines whether datagram packing may + * be used or not. A value of \c 0 means that every + * record will be sent in a separate datagram; a + * value of \c 1 means that, if space permits, + * multiple handshake messages (including CCS) belonging to + * a single flight may be packed within a single datagram. + * + * \note This is enabled by default and should only be disabled + * for test purposes, or if datagram packing causes + * interoperability issues with peers that don't support it. + * + * \note Allowing datagram packing reduces the network load since + * there's less overhead if multiple messages share the same + * datagram. Also, it increases the handshake efficiency + * since messages belonging to a single datagram will not + * be reordered in transit, and so future message buffering + * or flight retransmission (if no buffering is used) as + * means to deal with reordering are needed less frequently. + * + * \note Application datagrams are not affected by this option and + * are currently always sent in separate datagrams. + * + */ +void mbedtls_ssl_conf_datagram_packing( mbedtls_ssl_context *ssl, + unsigned allow_packing ); + /** * \brief Set retransmit timeout values for the DTLS handshake. * (DTLS only, no effect on TLS.) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 98e508ec6c..9b8f7fea3f 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2923,6 +2923,9 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) size_t max_frag_len; const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; + uint8_t const force_flush = ssl->disable_datagram_packing == 1 ? + SSL_FORCE_FLUSH : SSL_DONT_FORCE_FLUSH; + /* Swap epochs before sending Finished: we can't do it after * sending ChangeCipherSpec, in case write returns WANT_READ. * Must be done before copying, may change out_msg pointer */ @@ -3030,8 +3033,7 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) } /* Actually send the message out */ - if( ( ret = mbedtls_ssl_write_record( ssl, - SSL_DONT_FORCE_FLUSH ) ) != 0 ) + if( ( ret = mbedtls_ssl_write_record( ssl, force_flush ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); @@ -6432,7 +6434,15 @@ void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limi #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) -void mbedtls_ssl_conf_handshake_timeout( mbedtls_ssl_config *conf, uint32_t min, uint32_t max ) + +void mbedtls_ssl_conf_datagram_packing( mbedtls_ssl_context *ssl, + unsigned allow_packing ) +{ + ssl->disable_datagram_packing = !allow_packing; +} + +void mbedtls_ssl_conf_handshake_timeout( mbedtls_ssl_config *conf, + uint32_t min, uint32_t max ) { conf->hs_timeout_min = min; conf->hs_timeout_max = max; From e7675d0d3df9f89b784ea0b3c9d552e12062776f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 13:28:56 +0100 Subject: [PATCH 0824/1100] Add cmd line option to ssl_server2 for datagram packing This commit adds a new command line option `dgram_packing` to the example server application programs/ssl/ssl_server2 allowing to allow/forbid the use of datagram packing. --- programs/ssl/ssl_server2.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 484f84fdd6..12f8276112 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -152,6 +152,7 @@ int main( void ) #define DFL_HS_TO_MAX 0 #define DFL_DTLS_MTU -1 #define DFL_BADMAC_LIMIT -1 +#define DFL_DGRAM_PACKING 1 #define DFL_EXTENDED_MS -1 #define DFL_ETM -1 @@ -299,7 +300,10 @@ int main( void ) " dtls=%%d default: 0 (TLS)\n" \ " hs_timeout=%%d-%%d default: (library default: 1000-60000)\n" \ " range of DTLS handshake timeouts in millisecs\n" \ - " mtu=%%d default: (library default: unlimited)\n" + " mtu=%%d default: (library default: unlimited)\n" \ + " dgram_packing=%%d default: 1 (allowed)\n" \ + " allow or forbid packing of multiple\n" \ + " records within a single datgram.\n" #else #define USAGE_DTLS "" #endif @@ -473,6 +477,7 @@ struct options uint32_t hs_to_min; /* Initial value of DTLS handshake timer */ uint32_t hs_to_max; /* Max value of DTLS handshake timer */ int dtls_mtu; /* UDP Maximum tranport unit for DTLS */ + int dgram_packing; /* allow/forbid datagram packing */ int badmac_limit; /* Limit of records with bad MAC */ } opt; @@ -1342,6 +1347,7 @@ int main( int argc, char *argv[] ) opt.hs_to_min = DFL_HS_TO_MIN; opt.hs_to_max = DFL_HS_TO_MAX; opt.dtls_mtu = DFL_DTLS_MTU; + opt.dgram_packing = DFL_DGRAM_PACKING; opt.badmac_limit = DFL_BADMAC_LIMIT; opt.extended_ms = DFL_EXTENDED_MS; opt.etm = DFL_ETM; @@ -1694,6 +1700,15 @@ int main( int argc, char *argv[] ) if( opt.dtls_mtu < 0 ) goto usage; } + else if( strcmp( p, "dgram_packing" ) == 0 ) + { + opt.dgram_packing = atoi( q ); + if( opt.dgram_packing != 0 && + opt.dgram_packing != 1 ) + { + goto usage; + } + } else if( strcmp( p, "sni" ) == 0 ) { opt.sni = q; @@ -2168,6 +2183,9 @@ int main( int argc, char *argv[] ) if( opt.dtls_mtu != DFL_DTLS_MTU ) mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); + + if( opt.dgram_packing != DFL_DGRAM_PACKING ) + mbedtls_ssl_conf_datagram_packing( &ssl, opt.dgram_packing ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) @@ -2178,6 +2196,7 @@ int main( int argc, char *argv[] ) }; #endif + #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) if( opt.trunc_hmac != DFL_TRUNC_HMAC ) mbedtls_ssl_conf_truncated_hmac( &conf, opt.trunc_hmac ); From 4d61591c0c5380921d2815ebe410b4d106acf75b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 13:33:30 +0100 Subject: [PATCH 0825/1100] Add cmd line option to ssl_client2 for datagram packing This commit adds a new command line option `dgram_packing` to the example server application programs/ssl/ssl_client2 allowing to allow/forbid the use of datagram packing. --- programs/ssl/ssl_client2.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 7cdc53a54c..e723273152 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -107,6 +107,7 @@ int main( void ) #define DFL_HS_TO_MIN 0 #define DFL_HS_TO_MAX 0 #define DFL_DTLS_MTU -1 +#define DFL_DGRAM_PACKING 1 #define DFL_FALLBACK -1 #define DFL_EXTENDED_MS -1 #define DFL_ETM -1 @@ -200,7 +201,10 @@ int main( void ) " dtls=%%d default: 0 (TLS)\n" \ " hs_timeout=%%d-%%d default: (library default: 1000-60000)\n" \ " range of DTLS handshake timeouts in millisecs\n" \ - " mtu=%%d default: (library default: unlimited)\n" + " mtu=%%d default: (library default: unlimited)\n" \ + " dgram_packing=%%d default: 1 (allowed)\n" \ + " allow or forbid packing of multiple\n" \ + " records within a single datgram.\n" #else #define USAGE_DTLS "" #endif @@ -349,6 +353,7 @@ struct options uint32_t hs_to_max; /* Max value of DTLS handshake timer */ int dtls_mtu; /* UDP Maximum tranport unit for DTLS */ int fallback; /* is this a fallback connection? */ + int dgram_packing; /* allow/forbid datagram packing */ int extended_ms; /* negotiate extended master secret? */ int etm; /* negotiate encrypt then mac? */ } opt; @@ -624,6 +629,7 @@ int main( int argc, char *argv[] ) opt.fallback = DFL_FALLBACK; opt.extended_ms = DFL_EXTENDED_MS; opt.etm = DFL_ETM; + opt.dgram_packing = DFL_DGRAM_PACKING; for( i = 1; i < argc; i++ ) { @@ -937,6 +943,15 @@ int main( int argc, char *argv[] ) if( opt.dtls_mtu < 0 ) goto usage; } + else if( strcmp( p, "dgram_packing" ) == 0 ) + { + opt.dgram_packing = atoi( q ); + if( opt.dgram_packing != 0 && + opt.dgram_packing != 1 ) + { + goto usage; + } + } else if( strcmp( p, "recsplit" ) == 0 ) { opt.recsplit = atoi( q ); @@ -1340,6 +1355,9 @@ int main( int argc, char *argv[] ) if( opt.dtls_mtu != DFL_DTLS_MTU ) mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); + + if( opt.dgram_packing != DFL_DGRAM_PACKING ) + mbedtls_ssl_conf_datagram_packing( &ssl, opt.dgram_packing ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) From c4305238b5df651d04222c1ffcab2e1784635bdb Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 13:41:21 +0100 Subject: [PATCH 0826/1100] Re-enable delayed CCS test Now that datagram packing can be dynamically configured, the test exercising the behavior of Mbed TLS when facing an out-of-order CCS message can be re-introduced, disabling datagram packing for the sender of the delayed CCS. --- tests/ssl-opt.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 1986c25b3a..abb8d8f1ac 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5701,6 +5701,16 @@ run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\ -s "too many records with bad MAC" \ -s "Verification of the message MAC failed" +run_test "DTLS proxy: delay ChangeCipherSpec" \ + -p "$P_PXY delay_ccs=1" \ + "$P_SRV dtls=1 debug_level=1 dgram_packing=0" \ + "$P_CLI dtls=1 debug_level=1 dgram_packing=0" \ + 0 \ + -c "record from another epoch" \ + -s "record from another epoch" \ + -s "Extra-header:" \ + -c "HTTP/1.0 200 OK" + # Tests for "randomly unreliable connection": try a variety of flows and peers client_needs_more_time 2 From 1c9a24ce8c2c647c6b7e4cef1109efd883c4ec4d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 13:46:33 +0100 Subject: [PATCH 0827/1100] Disable datagram packing for various UDP proxy tests The UDP proxy does currently not dissect datagrams into records, an hence the coverage of the reordering, package loss and duplication tests is much smaller if datagram packing is in use. This commit disables datagram packing for most UDP proxy tests, in particular all 3D (drop, duplicate, delay) tests. --- tests/ssl-opt.sh | 108 +++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index abb8d8f1ac..9b8ef5561d 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5310,11 +5310,11 @@ requires_config_enabled MBEDTLS_ECDSA_C client_needs_more_time 2 run_test "DTLS fragmenting: proxy MTU + 3d" \ -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ - "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ mtu=512" \ - "$P_CLI dtls=1 debug_level=2 \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ mtu=512" \ @@ -5452,7 +5452,7 @@ client_needs_more_time 2 run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$G_NEXT_SRV -u" \ - "$P_CLI dtls=1 debug_level=2 \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ mtu=512 force_version=dtls1_2" \ @@ -5469,7 +5469,7 @@ client_needs_more_time 2 run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$G_NEXT_SRV -u" \ - "$P_CLI dtls=1 debug_level=2 \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ mtu=512 force_version=dtls1_2" \ @@ -5550,7 +5550,7 @@ client_needs_more_time 2 run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$O_LEGACY_SRV -dtls1 -verify 10" \ - "$P_CLI dtls=1 debug_level=2 \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ mtu=512 force_version=dtls1" \ @@ -5583,7 +5583,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 client_needs_more_time 2 run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ - "$P_SRV dtls=1 debug_level=2 \ + "$P_SRV dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ mtu=512 force_version=dtls1" \ @@ -5612,8 +5612,8 @@ run_test "DTLS proxy: reference" \ not_with_valgrind # spurious resend due to timeout run_test "DTLS proxy: duplicate every packet" \ -p "$P_PXY duplicate=1" \ - "$P_SRV dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ 0 \ -c "replayed record" \ -s "replayed record" \ @@ -5625,8 +5625,8 @@ run_test "DTLS proxy: duplicate every packet" \ run_test "DTLS proxy: duplicate every packet, server anti-replay off" \ -p "$P_PXY duplicate=1" \ - "$P_SRV dtls=1 debug_level=2 anti_replay=0" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2 anti_replay=0" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ 0 \ -c "replayed record" \ -S "replayed record" \ @@ -5639,24 +5639,24 @@ run_test "DTLS proxy: duplicate every packet, server anti-replay off" \ run_test "DTLS proxy: multiple records in same datagram" \ -p "$P_PXY pack=50" \ - "$P_SRV dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ 0 \ -c "next record in same datagram" \ -s "next record in same datagram" run_test "DTLS proxy: multiple records in same datagram, duplicate every packet" \ -p "$P_PXY pack=50 duplicate=1" \ - "$P_SRV dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ 0 \ -c "next record in same datagram" \ -s "next record in same datagram" run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \ -p "$P_PXY bad_ad=1" \ - "$P_SRV dtls=1 debug_level=1" \ - "$P_CLI dtls=1 debug_level=1 read_timeout=100" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=1" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \ 0 \ -c "discarding invalid record (mac)" \ -s "discarding invalid record (mac)" \ @@ -5667,8 +5667,8 @@ run_test "DTLS proxy: inject invalid AD record, default badmac_limit" \ run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \ -p "$P_PXY bad_ad=1" \ - "$P_SRV dtls=1 debug_level=1 badmac_limit=1" \ - "$P_CLI dtls=1 debug_level=1 read_timeout=100" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=1" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \ 1 \ -C "discarding invalid record (mac)" \ -S "discarding invalid record (mac)" \ @@ -5679,8 +5679,8 @@ run_test "DTLS proxy: inject invalid AD record, badmac_limit 1" \ run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \ -p "$P_PXY bad_ad=1" \ - "$P_SRV dtls=1 debug_level=1 badmac_limit=2" \ - "$P_CLI dtls=1 debug_level=1 read_timeout=100" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100" \ 0 \ -c "discarding invalid record (mac)" \ -s "discarding invalid record (mac)" \ @@ -5691,8 +5691,8 @@ run_test "DTLS proxy: inject invalid AD record, badmac_limit 2" \ run_test "DTLS proxy: inject invalid AD record, badmac_limit 2, exchanges 2"\ -p "$P_PXY bad_ad=1" \ - "$P_SRV dtls=1 debug_level=1 badmac_limit=2 exchanges=2" \ - "$P_CLI dtls=1 debug_level=1 read_timeout=100 exchanges=2" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=1 badmac_limit=2 exchanges=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=1 read_timeout=100 exchanges=2" \ 1 \ -c "discarding invalid record (mac)" \ -s "discarding invalid record (mac)" \ @@ -5716,9 +5716,9 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ client_needs_more_time 2 run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ -s "Extra-header:" \ @@ -5727,8 +5727,8 @@ run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, \"short\" RSA handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 \ force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ 0 \ -s "Extra-header:" \ @@ -5737,8 +5737,8 @@ run_test "DTLS proxy: 3d, \"short\" RSA handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -5746,8 +5746,8 @@ run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, FS, client auth" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=required" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=required" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -5755,8 +5755,8 @@ run_test "DTLS proxy: 3d, FS, client auth" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, FS, ticket" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=1 auth_mode=none" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=1" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -5764,8 +5764,8 @@ run_test "DTLS proxy: 3d, FS, ticket" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=1 auth_mode=required" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=1" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1 auth_mode=required" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -5773,9 +5773,9 @@ run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, max handshake, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 nbio=2 tickets=1 \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 nbio=2 tickets=1 \ auth_mode=required" \ - "$P_CLI dtls=1 hs_timeout=250-10000 nbio=2 tickets=1" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 nbio=2 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -5783,9 +5783,9 @@ run_test "DTLS proxy: 3d, max handshake, nbio" \ client_needs_more_time 4 run_test "DTLS proxy: 3d, min handshake, resumption" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 debug_level=3" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -5797,9 +5797,9 @@ run_test "DTLS proxy: 3d, min handshake, resumption" \ client_needs_more_time 4 run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 debug_level=3 nbio=2" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \ 0 \ @@ -5812,9 +5812,9 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiation=1 debug_level=2" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ renegotiate=1 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -5827,9 +5827,9 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiation=1 debug_level=2" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ renegotiate=1 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -5842,10 +5842,10 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \ debug_level=2" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ renegotiation=1 exchanges=4 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -5858,10 +5858,10 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \ debug_level=2 nbio=2" \ - "$P_CLI dtls=1 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ renegotiation=1 exchanges=4 debug_level=2 nbio=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -5875,7 +5875,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 2048" \ - "$P_CLI dtls=1 hs_timeout=250-60000 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -5884,7 +5884,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 768" \ - "$P_CLI dtls=1 hs_timeout=250-60000 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -5893,7 +5893,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 768" \ - "$P_CLI dtls=1 hs_timeout=250-60000 nbio=2 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 nbio=2 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -5903,7 +5903,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 2048 -a" \ - "$P_CLI dtls=1 hs_timeout=250-60000" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" @@ -5914,7 +5914,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server, fragmentation" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 512" \ - "$P_CLI dtls=1 hs_timeout=250-60000" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" @@ -5925,7 +5925,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 512" \ - "$P_CLI dtls=1 hs_timeout=250-60000 nbio=2" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 nbio=2" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" From 7ae8a76ced295aa9721ebaaa1f05498756863e02 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 15:43:35 +0100 Subject: [PATCH 0828/1100] Add tests for datagram packing option to ssl-opt.sh This commit adds four tests to ssl-opt.sh running default DTLS client and server with and without datagram packing enabled, and checking that datagram packing is / is not used by inspecting the debug output. --- tests/ssl-opt.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9b8ef5561d..995478019e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -912,6 +912,35 @@ run_test "SHA-256 allowed by default in client certificate" \ "$P_CLI key_file=data_files/cli-rsa.key crt_file=data_files/cli-rsa-sha256.crt" \ 0 +# Tests for datagram packing +run_test "DTLS: multiple records in same datagram, client and server" \ + "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \ + 0 \ + -c "next record in same datagram" \ + -s "next record in same datagram" + +run_test "DTLS: multiple records in same datagram, client only" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=1 debug_level=2" \ + 0 \ + -s "next record in same datagram" \ + -C "next record in same datagram" + +run_test "DTLS: multiple records in same datagram, server only" \ + "$P_SRV dtls=1 dgram_packing=1 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ + 0 \ + -S "next record in same datagram" \ + -c "next record in same datagram" + +run_test "DTLS: multiple records in same datagram, neither client nor server" \ + "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ + "$P_CLI dtls=1 dgram_packing=0 debug_level=2" \ + 0 \ + -S "next record in same datagram" \ + -C "next record in same datagram" + # Tests for Truncated HMAC extension run_test "Truncated HMAC: client default, server default" \ From d87a59cc3679e04f417be281057e479d7b7ae0ae Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 14 Aug 2018 16:34:55 +0100 Subject: [PATCH 0829/1100] Adapt ChangeLog --- ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index bab69f6762..ef8abc8bf6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,12 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add support for fragmentation of outoing DTLS handshake messages. + * Add support for packing multiple records within a single datagram, + enabled by default. + +API Changes + * Add function mbedtls_ssl_conf_datagram_packing() to configure + the use of datagram packing (enabled by default). Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if From bc73e4a822b57d0ab924b817d3ede91ef170cac7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 15:53:21 +0100 Subject: [PATCH 0830/1100] Allow GNUTLS_NEXT_CLI / GNUTLS_NEXT_SERV to be unset in ssl-opt.sh --- tests/ssl-opt.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 995478019e..f5de2ee009 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -51,13 +51,13 @@ else O_LEGACY_CLI=false fi -if [ -n "${GNUTLS_NEXT_SERV}" ]; then +if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key" else G_NEXT_SRV=false fi -if [ -n "${GNUTLS_NEXT_CLI}" ]; then +if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt" else G_NEXT_CLI=false @@ -772,11 +772,11 @@ if [ -n "${OPENSSL_LEGACY:-}" ]; then O_LEGACY_CLI="$O_LEGACY_CLI -connect localhost:+SRV_PORT" fi -if [ -n "${GNUTLS_NEXT_SERV}" ]; then +if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT" fi -if [ -n "${GNUTLS_NEXT_CLI}" ]; then +if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT localhost" fi From 4a9d006f5f524890f2d2f77e3df00ccc02fc7364 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 16:10:47 +0100 Subject: [PATCH 0831/1100] Add missing dependency in ssl-opt.sh --- tests/ssl-opt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index f5de2ee009..4fa8609f94 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5605,6 +5605,7 @@ run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ # -nbio is added to prevent s_client from blocking in case of duplicated # messages at the end of the handshake +requires_openssl_legacy requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From e1dcb0355743aab27b3e538ebf9eda53f4f9ef61 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 16:47:58 +0100 Subject: [PATCH 0832/1100] Don't send empty fragments of nonempty handshake messages This for example lead to the following corner case bug: The code attempted to piggy-back a Finished message at the end of a datagram where precisely 12 bytes of payload were still available. This lead to an empty Finished fragment being sent, and when mbedtls_ssl_flight_transmit() was called again, it believed that it was just starting to send the Finished message, thereby calling ssl_swap_epochs() which had already happened in the call sending the empty fragment. Therefore, the second call would send the 'rest' of the Finished message with wrong epoch. --- library/ssl_tls.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 9b8f7fea3f..cc470583a1 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2923,15 +2923,17 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) size_t max_frag_len; const mbedtls_ssl_flight_item * const cur = ssl->handshake->cur_msg; + int const is_finished = + ( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && + cur->p[0] == MBEDTLS_SSL_HS_FINISHED ); + uint8_t const force_flush = ssl->disable_datagram_packing == 1 ? SSL_FORCE_FLUSH : SSL_DONT_FORCE_FLUSH; /* Swap epochs before sending Finished: we can't do it after * sending ChangeCipherSpec, in case write returns WANT_READ. * Must be done before copying, may change out_msg pointer */ - if( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && - cur->p[0] == MBEDTLS_SSL_HS_FINISHED && - ssl->handshake->cur_msg_p == ( cur->p + 12 ) ) + if( is_finished && ssl->handshake->cur_msg_p == ( cur->p + 12 ) ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "swap epochs to send finished message" ) ); ssl_swap_epochs( ssl ); @@ -2968,13 +2970,10 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) const size_t rem_len = hs_len - frag_off; size_t cur_hs_frag_len, max_hs_frag_len; - if( max_frag_len < 12 ) + if( ( max_frag_len < 12 ) || ( max_frag_len == 12 && hs_len != 0 ) ) { - if( cur->type == MBEDTLS_SSL_MSG_HANDSHAKE && - cur->p[0] == MBEDTLS_SSL_HS_FINISHED ) - { + if( is_finished ) ssl_swap_epochs( ssl ); - } if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) return( ret ); From 327c93b1824c0e086ed45b325659ad0fb8f3c428 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 13:56:18 +0100 Subject: [PATCH 0833/1100] Add parameter to ssl_read_record() controlling checksum update Previously, mbedtls_ssl_read_record() always updated the handshake checksum in case a handshake record was received. While desirable most of the time, for the CertificateVerify message the checksum update must only happen after the message has been fully processed, because the validation requires the handshake digest up to but excluding the CertificateVerify itself. As a remedy, the bulk of mbedtls_ssl_read_record() was previously duplicated within ssl_parse_certificate_verify(), hardening maintenance in case mbedtls_ssl_read_record() is subject to changes. This commit adds a boolean parameter to mbedtls_ssl_read_record() indicating whether the checksum should be updated in case of a handshake message or not. This allows using it also for ssl_parse_certificate_verify(), manually updating the checksum after the message has been processed. --- include/mbedtls/ssl_internal.h | 2 +- library/ssl_cli.c | 10 +++++----- library/ssl_srv.c | 21 +++------------------ library/ssl_tls.c | 16 +++++++++------- 4 files changed, 18 insertions(+), 31 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 765da7a71b..c817def23c 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -557,7 +557,7 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); * following the above definition. * */ -int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ); +int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_digest ); int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ); int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 73e4391a0e..d160c42d02 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1500,7 +1500,7 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl ) buf = ssl->in_msg; - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { /* No alert on a read error. */ MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); @@ -2349,7 +2349,7 @@ static int ssl_parse_server_key_exchange( mbedtls_ssl_context *ssl ) #endif /* MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED || MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED */ - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -2656,7 +2656,7 @@ static int ssl_parse_certificate_request( mbedtls_ssl_context *ssl ) return( 0 ); } - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -2808,7 +2808,7 @@ static int ssl_parse_server_hello_done( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse server hello done" ) ); - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -3297,7 +3297,7 @@ static int ssl_parse_new_session_ticket( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse new session ticket" ) ); - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 7101f461f3..84c83e3303 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -3728,7 +3728,7 @@ static int ssl_parse_client_key_exchange( mbedtls_ssl_context *ssl ) } else #endif - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -4038,25 +4038,10 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl ) } /* Read the message without adding it to the checksum */ - do { - - do ret = mbedtls_ssl_read_record_layer( ssl ); - while( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); - - if( ret != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); - return( ret ); - } - - ret = mbedtls_ssl_handle_message_type( ssl ); - - } while( MBEDTLS_ERR_SSL_NON_FATAL == ret || - MBEDTLS_ERR_SSL_CONTINUE_PROCESSING == ret ); - + ret = mbedtls_ssl_read_record( ssl, 0 /* no checksum update */ ); if( 0 != ret ) { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_handle_message_type" ), ret ); + MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record" ), ret ); return( ret ); } diff --git a/library/ssl_tls.c b/library/ssl_tls.c index cc470583a1..23b066c5cb 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4283,7 +4283,8 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); * RFC 6347 4.1.2.7) and continue reading until a valid record is found. * */ -int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ) +int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, + unsigned update_digest ) { int ret; @@ -4313,7 +4314,8 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl ) return( ret ); } - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE ) + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && + update_digest == 1 ) { mbedtls_ssl_update_handshake_status( ssl ); } @@ -4900,7 +4902,7 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl ) } #endif - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { /* mbedtls_ssl_read_record may have sent an alert already. We let it decide whether to alert. */ @@ -5275,7 +5277,7 @@ int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse change cipher spec" ) ); - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -5904,7 +5906,7 @@ int mbedtls_ssl_parse_finished( mbedtls_ssl_context *ssl ) ssl->handshake->calc_finished( ssl, buf, ssl->conf->endpoint ^ 1 ); - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_read_record", ret ); return( ret ); @@ -7653,7 +7655,7 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) ssl_set_timer( ssl, ssl->conf->read_timeout ); } - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) return( 0 ); @@ -7668,7 +7670,7 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) /* * OpenSSL sends empty messages to randomize the IV */ - if( ( ret = mbedtls_ssl_read_record( ssl ) ) != 0 ) + if( ( ret = mbedtls_ssl_read_record( ssl, 1 ) ) != 0 ) { if( ret == MBEDTLS_ERR_SSL_CONN_EOF ) return( 0 ); From 02f5907499a29998ef112324e1c6715446b6b1e7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:00:24 +0100 Subject: [PATCH 0834/1100] Correct misleading debugging output Usually, debug messages beginning with "=> and "<=" match up and indicate entering of and returning from functions, respectively. This commit fixes one exception to this rule in mbedtls_ssl_read_record(), which sometimes printed two messages of the form "<= XXX". --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 23b066c5cb..910e584985 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4322,7 +4322,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, } else { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= reuse previously read message" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "reuse previously read message" ) ); ssl->keep_current_message = 0; } From a4b143a57ccc16243dce5f206e197ce44559955a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:01:34 +0100 Subject: [PATCH 0835/1100] Remove nested loop in mbedtls_ssl_read_record() --- library/ssl_tls.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 910e584985..8e209e78ac 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4294,8 +4294,9 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, { do { - do ret = mbedtls_ssl_read_record_layer( ssl ); - while( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); + ret = mbedtls_ssl_read_record_layer( ssl ); + if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) + continue; if( ret != 0 ) { From 4162b11eb4cb46822c79269cb241d10d86156f23 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:05:04 +0100 Subject: [PATCH 0836/1100] Make mbedtls_ssl_read_record_layer() static This function was previously global because it was used directly within ssl_parse_certificate_verify() in library/ssl_srv.c. The previous commit removed this dependency, replacing the call by a call to the global parent function mbedtls_ssl_read_record(). This renders mbedtls_ssl_read_record_layer() internal and therefore allows to make it static, and accordingly rename it as ssl_read_record_layer(). --- include/mbedtls/ssl_internal.h | 1 - library/ssl_tls.c | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index c817def23c..0522778918 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -479,7 +479,6 @@ int mbedtls_ssl_send_fatal_handshake_failure( mbedtls_ssl_context *ssl ); void mbedtls_ssl_reset_checksum( mbedtls_ssl_context *ssl ); int mbedtls_ssl_derive_keys( mbedtls_ssl_context *ssl ); -int mbedtls_ssl_read_record_layer( mbedtls_ssl_context *ssl ); int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ); int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ); void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8e209e78ac..b8f271527c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4283,6 +4283,8 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); * RFC 6347 4.1.2.7) and continue reading until a valid record is found. * */ +static int ssl_read_record_layer( mbedtls_ssl_context *ssl ); + int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_digest ) { @@ -4294,7 +4296,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, { do { - ret = mbedtls_ssl_read_record_layer( ssl ); + ret = ssl_read_record_layer( ssl ); if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) continue; @@ -4332,7 +4334,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, return( 0 ); } -int mbedtls_ssl_read_record_layer( mbedtls_ssl_context *ssl ) +static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) { int ret; From 1097b34022a416ee180c13dd7a84d3bcbbd85542 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:09:41 +0100 Subject: [PATCH 0837/1100] Extract message-consuming code-path to separate function The first part of the function ssl_read_record_layer() was to mark the previous message as consumed. This commit moves the corresponding code-path to a separate static function ssl_consume_current_message(). --- library/ssl_tls.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b8f271527c..23a5bddac2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4283,6 +4283,9 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); * RFC 6347 4.1.2.7) and continue reading until a valid record is found. * */ + +/* Helper functions for mbedtls_ssl_read_record(). */ +static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); static int ssl_read_record_layer( mbedtls_ssl_context *ssl ); int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, @@ -4334,13 +4337,9 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, return( 0 ); } -static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) +static int ssl_consume_current_message( mbedtls_ssl_context *ssl ) { - int ret; - /* - * Step A - * * Consume last content-layer message and potentially * update in_msglen which keeps track of the contents' * consumption state. @@ -4422,6 +4421,25 @@ static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) ssl->in_msglen = 0; } + return( 0 ); +} + +static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) +{ + int ret; + + /* + * Step A + * + * Consume last content-layer message and potentially + * update in_msglen which keeps track of the contents' + * consumption state. + */ + + ret = ssl_consume_current_message( ssl ); + if( ret != 0 ) + return( ret ); + /* * Step B * From 2699459529927fa33061d32c94b78ef5260f501f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:14:59 +0100 Subject: [PATCH 0838/1100] Move call to ssl_consume_current_message() Subsequent commits will potentially inject buffered messages after the last incoming message has been consumed, but before a new one is fetched. As a preparatory step to this, this commit moves the call to ssl_consume_current_message() from ssl_read_record_layer() to the calling function mbedtls_ssl_read_record(). --- library/ssl_tls.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 23a5bddac2..54bb443594 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4299,6 +4299,10 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, { do { + ret = ssl_consume_current_message( ssl ); + if( ret != 0 ) + return( ret ); + ret = ssl_read_record_layer( ssl ); if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) continue; @@ -4429,22 +4433,7 @@ static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) int ret; /* - * Step A - * - * Consume last content-layer message and potentially - * update in_msglen which keeps track of the contents' - * consumption state. - */ - - ret = ssl_consume_current_message( ssl ); - if( ret != 0 ) - return( ret ); - - /* - * Step B - * * Fetch and decode new record if current one is fully consumed. - * */ if( ssl->in_msglen > 0 ) From e74d556b43232409d3b98a13e6e224ef15d8a202 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:26:08 +0100 Subject: [PATCH 0839/1100] Introduce function to indicate if record is fully processed This commit introduces a function ssl_record_is_in_progress() to indicate if there is there is more data within the current record to be processed. Further, it moves the corresponding call from ssl_read_record_layer() to the parent function mbedtls_ssl_read_record(). With this change, ssl_read_record_layer() has the sole purpose of fetching and decoding a new record, and hence this commit also renames it to ssl_get_next_record(). --- library/ssl_tls.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 54bb443594..cfb95eae29 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4286,7 +4286,8 @@ static void ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); /* Helper functions for mbedtls_ssl_read_record(). */ static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); -static int ssl_read_record_layer( mbedtls_ssl_context *ssl ); +static int ssl_get_next_record( mbedtls_ssl_context *ssl ); +static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_digest ) @@ -4303,14 +4304,17 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, if( ret != 0 ) return( ret ); - ret = ssl_read_record_layer( ssl ); - if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) - continue; - - if( ret != 0 ) + if( ssl_record_is_in_progress( ssl ) == 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); - return( ret ); + ret = ssl_get_next_record( ssl ); + if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) + continue; + + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); + return( ret ); + } } ret = mbedtls_ssl_handle_message_type( ssl ); @@ -4428,22 +4432,22 @@ static int ssl_consume_current_message( mbedtls_ssl_context *ssl ) return( 0 ); } -static int ssl_read_record_layer( mbedtls_ssl_context *ssl ) +static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_msglen > 0 ) + return( 1 ); + + return( 0 ); +} + +static int ssl_get_next_record( mbedtls_ssl_context *ssl ) { int ret; /* - * Fetch and decode new record if current one is fully consumed. + * Fetch and decode new record */ - if( ssl->in_msglen > 0 ) - { - /* There's something left to be processed in the current record. */ - return( 0 ); - } - - /* Current record either fully processed or to be discarded. */ - if( ( ret = mbedtls_ssl_fetch_input( ssl, mbedtls_ssl_hdr_len( ssl ) ) ) != 0 ) { MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_fetch_input", ret ); From 40f50848fad3e1371ad5b0a933013f9542d0d749 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 14:48:01 +0100 Subject: [PATCH 0840/1100] Add frame for loading and storing buffered messages This commit introduces the frame for saving and loading buffered messages within message reading function mbedtls_ssl_read_record(). --- include/mbedtls/ssl.h | 1 + library/ssl_tls.c | 70 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 65 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 85ab722062..3a8dd21e99 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -121,6 +121,7 @@ #define MBEDTLS_ERR_SSL_INVALID_VERIFY_HASH -0x6600 /**< Couldn't set the hash for verifying CertificateVerify */ #define MBEDTLS_ERR_SSL_CONTINUE_PROCESSING -0x6580 /**< Internal-only message signaling that further message-processing should be done */ #define MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS -0x6500 /**< The asynchronous operation is not completed yet. */ +#define MBEDTLS_ERR_SSL_EARLY_MESSAGE -0x6480 /**< Internal-only message signaling that a message arrived early. */ /* * Various constants diff --git a/library/ssl_tls.c b/library/ssl_tls.c index cfb95eae29..41292a53bc 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4289,6 +4289,12 @@ static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); static int ssl_get_next_record( mbedtls_ssl_context *ssl ); static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) +static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); +static int ssl_buffer_message( mbedtls_ssl_context *ssl ); +static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_digest ) { @@ -4306,19 +4312,47 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, if( ssl_record_is_in_progress( ssl ) == 0 ) { - ret = ssl_get_next_record( ssl ); - if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) - continue; +#if defined(MBEDTLS_SSL_PROTO_DTLS) + int have_buffered = 0; - if( ret != 0 ) + /* We only check for buffered messages if the + * current datagram is fully consumed. */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl_another_record_in_datagram( ssl ) == 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); - return( ret ); + if( ssl_load_buffered_message( ssl ) == 0 ) + have_buffered = 1; + } + + if( have_buffered == 0 ) +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + { + ret = ssl_get_next_record( ssl ); + if( ret == MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ) + continue; + + if( ret != 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); + return( ret ); + } } } ret = mbedtls_ssl_handle_message_type( ssl ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) + { + /* Buffer future message */ + ret = ssl_buffer_message( ssl ); + if( ret != 0 ) + return( ret ); + + ret = MBEDTLS_ERR_SSL_CONTINUE_PROCESSING; + } +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + } while( MBEDTLS_ERR_SSL_NON_FATAL == ret || MBEDTLS_ERR_SSL_CONTINUE_PROCESSING == ret ); @@ -4345,6 +4379,30 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, return( 0 ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) +static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_left > ssl->next_record_offset ) + return( 1 ); + + return( 0 ); +} + +static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) +{ + /* No buffering support so far. */ + ((void) ssl ); + return( -1 ); +} + +static int ssl_buffer_message( mbedtls_ssl_context *ssl ) +{ + /* No buffering support so far. */ + ((void) ssl ); + return( 0 ); +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + static int ssl_consume_current_message( mbedtls_ssl_context *ssl ) { /* From 2ed6bcc79335314fc2ddf3da0722940bdba962ce Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 15:11:57 +0100 Subject: [PATCH 0841/1100] Implement support for remembering CCS messages This commit implements support for remembering out-of-order CCS messages. Specifically, a flag is set whenever a CCS message is read which remains until the end of a flight, and when a CCS message is expected and a CCS message has been seen in the current flight, a synthesized CCS record is created. --- include/mbedtls/ssl_internal.h | 3 + library/ssl_tls.c | 101 ++++++++++++++++++++++++++++----- 2 files changed, 89 insertions(+), 15 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 0522778918..ec840476f7 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -307,6 +307,9 @@ struct mbedtls_ssl_handshake_params resending messages */ unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter for resending messages */ + + uint8_t seen_ccs; /*!< Indicates if a CCS message has + * been seen in the current flight. */ #endif /* MBEDTLS_SSL_PROTO_DTLS */ /* diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 41292a53bc..6a44145d7e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3069,6 +3069,9 @@ void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ) /* The next incoming flight will start with this msg_seq */ ssl->handshake->in_flight_start_seq = ssl->handshake->in_msg_seq; + /* We don't want to remember CCS's across flight boundaries. */ + ssl->handshake->seen_ccs = 0; + /* Cancel timer */ ssl_set_timer( ssl, 0 ); @@ -4138,15 +4141,6 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) } #endif - /* Drop unexpected ChangeCipherSpec messages */ - if( ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC && - ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && - ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping unexpected ChangeCipherSpec" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); - } - /* Drop unexpected ApplicationData records, * except at the beginning of renegotiations */ if( ssl->in_msgtype == MBEDTLS_SSL_MSG_APPLICATION_DATA && @@ -4390,16 +4384,75 @@ static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ) static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { - /* No buffering support so far. */ - ((void) ssl ); - return( -1 ); + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + int ret = 0; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); + + if( hs == NULL ) + return( -1 ); + + if( ssl->state == MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC || + ssl->state == MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + { + /* Check if we have seen a ChangeCipherSpec before. + * If yes, synthesize a CCS record. */ + if( ! hs->seen_ccs ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); + ret = -1; + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Inject buffered CCS message" ) ); + ssl->in_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; + ssl->in_msglen = 1; + ssl->in_msg[0] = 1; + + /* As long as they are equal, the exact value doesn't matter. */ + ssl->in_left = 0; + ssl->next_record_offset = 0; + + hs->seen_ccs = 0; + goto exit; + } + ret = -1; + +exit: + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_message" ) ); + return( ret ); } static int ssl_buffer_message( mbedtls_ssl_context *ssl ) { - /* No buffering support so far. */ - ((void) ssl ); - return( 0 ); + int ret = 0; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + if( hs == NULL ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_buffer_message" ) ); + + switch( ssl->in_msgtype ) + { + case MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC: + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Remember CCS message" ) ); + hs->seen_ccs = 1; + break; + + case MBEDTLS_SSL_MSG_HANDSHAKE: + /* No support for buffering handshake messages so far. */ + break; + + default: + break; + } + +exit: + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_buffer_message" ) ); + return( ret ); } #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -4649,6 +4702,24 @@ int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ) } } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* Drop unexpected ChangeCipherSpec messages */ + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC && + ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && + ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + { + if( ssl->handshake == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping ChangeCipherSpec outside handshake" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "received out-of-order ChangeCipherSpec - remember" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } +#endif + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) { if( ssl->in_msglen != 2 ) From aa5d0c44937727a36a82d4cca0776dad91b6db35 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 13:15:19 +0100 Subject: [PATCH 0842/1100] Add test for buffering out-of-order CCS --- tests/ssl-opt.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 4fa8609f94..c056000242 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5741,6 +5741,16 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" +# Tests for reordering support with DTLS + +run_test "DTLS reordering: Buffer out-of-order CCS message"\ + -p "$P_PXY delay=3 seed=1" \ + "$P_SRV cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dtls=1 debug_level=2" \ + 0 \ + -c "Inject buffered CCS message" \ + -c "Remember CCS message" + # Tests for "randomly unreliable connection": try a variety of flows and peers client_needs_more_time 2 From 9e1ec22c36bb1f96bbcaf834a97840fcced0ca1b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 15 Aug 2018 15:54:43 +0100 Subject: [PATCH 0843/1100] Return MBEDTLS_ERR_SSL_EARLY_MESSAGE for future HS messages This leads future HS messages to traverse the buffering function ssl_buffer_message(), which however doesn't do anything at the moment for HS messages. Since the error code MBEDTLS_ERR_SSL_EARLY_MESSAGE is afterwards remapped to MBEDTLS_ERR_SSL_CONTINUE_PROCESSING -- which is what was returned prior to this commit when receiving a future handshake message -- this commit therefore does not yet introduce any change in observable behavior. --- library/ssl_tls.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 6a44145d7e..bca5b403cb 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3656,6 +3656,14 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) ( ssl->state == MBEDTLS_SSL_HANDSHAKE_OVER && ssl->in_msg[0] != MBEDTLS_SSL_HS_CLIENT_HELLO ) ) ) { + if( recv_msg_seq > ssl->handshake->in_msg_seq ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "received future handshake message of sequence number %u (next %u)", + recv_msg_seq, + ssl->handshake->in_msg_seq ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } + /* Retransmit only on last message from previous flight, to avoid * too many retransmissions. * Besides, No sane server ever retransmits HelloVerifyRequest */ From 56e205e2c9db8359bd7755c60d9c88c34d57d572 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 09:06:12 +0100 Subject: [PATCH 0844/1100] Prepare handshake reassembly in separate function This commit moves the code-path preparing the handshake reassembly buffer, consisting of header, message content, and reassembly bitmap, to a separate function ssl_prepare_reassembly_buffer(). --- library/ssl_tls.c | 56 ++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index bca5b403cb..e0ce692a8b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3470,6 +3470,39 @@ static int ssl_bitmask_check( unsigned char *mask, size_t len ) return( 0 ); } +/* msg_len does not include the handshake header */ +static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ + unsigned msg_len, + unsigned char **target ) +{ + size_t alloc_len; + unsigned char *buf; + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", + msg_len ) ); + + /* NOTE: That should be checked earlier */ + if( msg_len > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too large" ) ); + return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); + } + + alloc_len = 12; /* Handshake header */ + alloc_len += msg_len; /* Content buffer */ + alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ + + buf = mbedtls_calloc( 1, alloc_len ); + if( buf == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc failed (%d bytes)", alloc_len ) ); + return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); + } + + *target = buf; + return( 0 ); +} + /* * Reassemble fragmented DTLS handshake messages. * @@ -3495,26 +3528,9 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) */ if( ssl->handshake->hs_msg == NULL ) { - size_t alloc_len; - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", - msg_len ) ); - - if( ssl->in_hslen > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too large" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } - - /* The bitmask needs one bit per byte of message excluding header */ - alloc_len = 12 + msg_len + msg_len / 8 + ( msg_len % 8 != 0 ); - - ssl->handshake->hs_msg = mbedtls_calloc( 1, alloc_len ); - if( ssl->handshake->hs_msg == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc failed (%d bytes)", alloc_len ) ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } + ret = ssl_prepare_reassembly_buffer( msg_len, &ssl->handshake->hs_msg ); + if( ret != 0 ) + return( ret ); /* Prepare final header: copy msg_type, length and message_seq, * then add standardised fragment_offset and fragment_length */ From d07df86871498129db908377288ae3da8a396aa8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 09:14:58 +0100 Subject: [PATCH 0845/1100] Make allocation of reassembly bitmap optional This commit adds a parameter to ssl_prepare_reassembly_buffer() allowing to disable the allocation of space for a reassembly bitmap. This will allow this function to be used for the allocation of buffers for future handshake messages in case these need no fragmentation. --- library/ssl_tls.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e0ce692a8b..a9f84d497a 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3473,6 +3473,7 @@ static int ssl_bitmask_check( unsigned char *mask, size_t len ) /* msg_len does not include the handshake header */ static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ unsigned msg_len, + unsigned add_bitmap, unsigned char **target ) { size_t alloc_len; @@ -3490,7 +3491,9 @@ static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ alloc_len = 12; /* Handshake header */ alloc_len += msg_len; /* Content buffer */ - alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ + + if( add_bitmap ) + alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ buf = mbedtls_calloc( 1, alloc_len ); if( buf == NULL ) @@ -3528,7 +3531,8 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) */ if( ssl->handshake->hs_msg == NULL ) { - ret = ssl_prepare_reassembly_buffer( msg_len, &ssl->handshake->hs_msg ); + ret = ssl_prepare_reassembly_buffer( msg_len, 1, + &ssl->handshake->hs_msg ); if( ret != 0 ) return( ret ); From e25e3b7d960a11c2509698be61a0e4319aabf068 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 09:30:53 +0100 Subject: [PATCH 0846/1100] Add function to check is HS msg is a proper fragment This commit introduces a static function ssl_hs_is_proper_fragment() to check if the current incoming handshake message is a proper fragment. It is used within mbedtls_ssl_prepare_handshake_record() to decide whether handshake reassembly through ssl_reassemble_dtls_handshake() is needed. The commit changes the behavior of the library in the (unnatural) situation where proper fragments for a handshake message are followed by a non-fragmented version of the same message. In this case, the previous code invoked the handshake reassembly routine ssl_reassemble_dtls_handshake(), while with this commit, the full handshake message is directly forwarded to the user, no altering the handshake reassembly state -- in particular, not freeing it. As a remedy, freeing of a potential handshake reassembly structure is now done as part of the handshake update function mbedtls_ssl_update_handshake_status(). --- library/ssl_tls.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index a9f84d497a..c2daeb36e3 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3409,6 +3409,17 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) } #if defined(MBEDTLS_SSL_PROTO_DTLS) + +static int ssl_hs_is_proper_fragment( mbedtls_ssl_context *ssl ) +{ + if( ssl->in_msglen < ssl->in_hslen || + memcmp( ssl->in_msg + 6, "\0\0\0", 3 ) != 0 || + memcmp( ssl->in_msg + 9, ssl->in_msg + 1, 3 ) != 0 ) + { + return( 1 ); + } + return( 0 ); +} /* * Mark bits in bitmask (used for DTLS HS reassembly) */ @@ -3636,9 +3647,6 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) memcpy( ssl->in_msg, ssl->handshake->hs_msg, ssl->in_hslen ); - mbedtls_free( ssl->handshake->hs_msg ); - ssl->handshake->hs_msg = NULL; - MBEDTLS_SSL_DEBUG_BUF( 3, "reassembled handshake message", ssl->in_msg, ssl->in_hslen ); @@ -3646,6 +3654,7 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_PROTO_DTLS */ + int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) { if( ssl->in_msglen < mbedtls_ssl_hs_hdr_len( ssl ) ) @@ -3713,12 +3722,7 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) } /* Wait until message completion to increment in_msg_seq */ - /* Reassemble if current message is fragmented or reassembly is - * already in progress */ - if( ssl->in_msglen < ssl->in_hslen || - memcmp( ssl->in_msg + 6, "\0\0\0", 3 ) != 0 || - memcmp( ssl->in_msg + 9, ssl->in_msg + 1, 3 ) != 0 || - ( ssl->handshake != NULL && ssl->handshake->hs_msg != NULL ) ) + if( ssl_hs_is_proper_fragment( ssl ) == 1 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "found fragmented DTLS handshake message" ) ); @@ -3756,6 +3760,13 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) ssl->handshake != NULL ) { ssl->handshake->in_msg_seq++; + + /* Clear up handshake reassembly structure, if any. */ + if( ssl->handshake->hs_msg != NULL ) + { + mbedtls_free( ssl->handshake->hs_msg ); + ssl->handshake->hs_msg = NULL; + } } #endif } From d7f8ae2508ddb901e5204efc2d8a7f8492db6e22 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 09:45:56 +0100 Subject: [PATCH 0847/1100] Introduce sub-structure of ssl_handshake_params for buffering This commit introduces a sub-structure `buffering` within mbedtls_ssl_handshake_params that shall contain all data related to the reassembly and/or buffering of handshake messages. Currently, only buffering of CCS messages is implemented, so the only member of this struct is the previously introduced `seen_ccs` field. --- include/mbedtls/ssl_internal.h | 6 +++++- library/ssl_tls.c | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index ec840476f7..b9084b437f 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -308,8 +308,12 @@ struct mbedtls_ssl_handshake_params unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter for resending messages */ - uint8_t seen_ccs; /*!< Indicates if a CCS message has + struct + { + uint8_t seen_ccs; /*!< Indicates if a CCS message has * been seen in the current flight. */ + + } buffering; #endif /* MBEDTLS_SSL_PROTO_DTLS */ /* diff --git a/library/ssl_tls.c b/library/ssl_tls.c index c2daeb36e3..5e573422ec 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3070,7 +3070,7 @@ void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ) ssl->handshake->in_flight_start_seq = ssl->handshake->in_msg_seq; /* We don't want to remember CCS's across flight boundaries. */ - ssl->handshake->seen_ccs = 0; + ssl->handshake->buffering.seen_ccs = 0; /* Cancel timer */ ssl_set_timer( ssl, 0 ); @@ -4436,11 +4436,11 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { /* Check if we have seen a ChangeCipherSpec before. * If yes, synthesize a CCS record. */ - if( ! hs->seen_ccs ) + if( ! hs->buffering.seen_ccs ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); ret = -1; - goto exit; + return( -1 ); } MBEDTLS_SSL_DEBUG_MSG( 2, ( "Inject buffered CCS message" ) ); @@ -4452,7 +4452,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) ssl->in_left = 0; ssl->next_record_offset = 0; - hs->seen_ccs = 0; + hs->buffering.seen_ccs = 0; goto exit; } ret = -1; @@ -4477,7 +4477,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) { case MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC: MBEDTLS_SSL_DEBUG_MSG( 2, ( "Remember CCS message" ) ); - hs->seen_ccs = 1; + hs->buffering.seen_ccs = 1; break; case MBEDTLS_SSL_MSG_HANDSHAKE: From 0271f967d60f8c8058aabb610d59e4eb4d69e50c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 13:23:47 +0100 Subject: [PATCH 0848/1100] Introduce buffering structure for handshake messages This commit introduces, but does not yet put to use, a sub-structure of mbedtls_ssl_handshake_params::buffering that will be used for the buffering and/or reassembly of handshake messages with handshake sequence numbers that are greater or equal to the next expected sequence number. --- include/mbedtls/ssl_internal.h | 13 ++++++++ library/ssl_tls.c | 58 ++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index b9084b437f..a34d385210 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -155,6 +155,9 @@ #define MBEDTLS_SSL_OUT_PAYLOAD_LEN ( MBEDTLS_SSL_PAYLOAD_OVERHEAD + \ ( MBEDTLS_SSL_OUT_CONTENT_LEN ) ) +/* The maximum number of buffered handshake messages. */ +#define MBEDTLS_SSL_MAX_BUFFERED_HS 2 + /* Maximum length we can advertise as our max content length for RFC 6066 max_fragment_length extension negotiation purposes (the lesser of both sizes, if they are unequal.) @@ -313,6 +316,14 @@ struct mbedtls_ssl_handshake_params uint8_t seen_ccs; /*!< Indicates if a CCS message has * been seen in the current flight. */ + struct mbedtls_ssl_hs_buffer + { + uint8_t is_valid : 1; + uint8_t is_fragmented : 1; + uint8_t is_complete : 1; + unsigned char *data; + } hs[MBEDTLS_SSL_MAX_BUFFERED_HS]; + } buffering; #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -372,6 +383,8 @@ struct mbedtls_ssl_handshake_params #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ }; +typedef struct mbedtls_ssl_hs_buffer mbedtls_ssl_hs_buffer; + /* * This structure contains a full set of runtime transform parameters * either in negotiation or active. diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5e573422ec..7e01aa35a2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -167,6 +167,8 @@ static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl return( (int) remaining ); } +static void ssl_buffering_free( mbedtls_ssl_context *ssl ); + /* * Double the retransmit timeout value, within the allowed range, * returning -1 if the maximum value has already been reached. @@ -3072,6 +3074,9 @@ void mbedtls_ssl_recv_flight_completed( mbedtls_ssl_context *ssl ) /* We don't want to remember CCS's across flight boundaries. */ ssl->handshake->buffering.seen_ccs = 0; + /* Clear future message buffering structure. */ + ssl_buffering_free( ssl ); + /* Cancel timer */ ssl_set_timer( ssl, 0 ); @@ -3747,9 +3752,9 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) { + mbedtls_ssl_handshake_params * const hs = ssl->handshake; - if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && - ssl->handshake != NULL ) + if( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && hs != NULL ) { ssl->handshake->update_checksum( ssl, ssl->in_msg, ssl->in_hslen ); } @@ -3759,7 +3764,8 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && ssl->handshake != NULL ) { - ssl->handshake->in_msg_seq++; + unsigned offset; + mbedtls_ssl_hs_buffer *hs_buf; /* Clear up handshake reassembly structure, if any. */ if( ssl->handshake->hs_msg != NULL ) @@ -3767,6 +3773,28 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) mbedtls_free( ssl->handshake->hs_msg ); ssl->handshake->hs_msg = NULL; } + + /* Increment handshake sequence number */ + hs->in_msg_seq++; + + /* + * Clear up handshake buffering and reassembly structure. + */ + + /* Free first entry */ + hs_buf = &hs->buffering.hs[0]; + if( hs_buf->is_valid ) + mbedtls_free( hs_buf->data ); + + /* Shift all other entries */ + for( offset = 0; offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; + offset++, hs_buf++ ) + { + *hs_buf = *(hs_buf + 1); + } + + /* Create a fresh last entry */ + memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); } #endif } @@ -8286,6 +8314,29 @@ static void ssl_key_cert_free( mbedtls_ssl_key_cert *key_cert ) } #endif /* MBEDTLS_X509_CRT_PARSE_C */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +static void ssl_buffering_free( mbedtls_ssl_context *ssl ) +{ + unsigned offset; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + if( hs == NULL ) + return; + + for( offset = 0; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) + { + mbedtls_ssl_hs_buffer *hs_buf = &hs->buffering.hs[offset]; + if( hs_buf->is_valid == 1 ) + { + mbedtls_free( hs_buf->data ); + memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); + } + } +} + +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) { mbedtls_ssl_handshake_params *handshake = ssl->handshake; @@ -8367,6 +8418,7 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) mbedtls_free( handshake->verify_cookie ); mbedtls_free( handshake->hs_msg ); ssl_flight_free( handshake->flight ); + ssl_buffering_free( ssl ); #endif mbedtls_platform_zeroize( handshake, From 12555c61d3a39c215476e841030a65eea0b3b997 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 12:47:53 +0100 Subject: [PATCH 0849/1100] Introduce function to parse total handshake length This commit introduces a static helper function ssl_get_hs_total_len() parsing the total message length field in the handshake header, and puts it to use in mbedtls_ssl_prepare_handshake_record(). --- library/ssl_tls.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 7e01aa35a2..d7c61655e3 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -55,6 +55,7 @@ #endif static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context *ssl ); /* Length of the "epoch" field in the record header */ static inline size_t ssl_ep_len( const mbedtls_ssl_context *ssl ) @@ -3659,6 +3660,12 @@ static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_PROTO_DTLS */ +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context *ssl ) +{ + return( ( ssl->in_msg[1] << 16 ) | + ( ssl->in_msg[2] << 8 ) | + ssl->in_msg[3] ); +} int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) { @@ -3669,10 +3676,7 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_INVALID_RECORD ); } - ssl->in_hslen = mbedtls_ssl_hs_hdr_len( ssl ) + ( - ( ssl->in_msg[1] << 16 ) | - ( ssl->in_msg[2] << 8 ) | - ssl->in_msg[3] ); + ssl->in_hslen = mbedtls_ssl_hs_hdr_len( ssl ) + ssl_get_hs_total_len( ssl ); MBEDTLS_SSL_DEBUG_MSG( 3, ( "handshake message: msglen =" " %d, type = %d, hslen = %d", From 44650b7a7448460d07d02172285151f9a650c746 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 12:51:11 +0100 Subject: [PATCH 0850/1100] Introduce function checking sanity of the DTLS HS header This commit introduces helper functions - ssl_get_hs_frag_len() - ssl_get_hs_frag_off() to parse the fragment length resp. fragment offset fields in the handshake header. Moreover, building on these helper functions, it adds a function ssl_check_hs_header() checking the validity of a DTLS handshake header with respect to the specification, i.e. the indicated fragment must be a subrange of the total handshake message, and the total handshake fragment length (including header) must not exceed the record content size. These checks were previously performed at a later stage during ssl_reassemble_dtls_handshake(). --- library/ssl_tls.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index d7c61655e3..a321eaf420 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3426,6 +3426,41 @@ static int ssl_hs_is_proper_fragment( mbedtls_ssl_context *ssl ) } return( 0 ); } + +static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context *ssl ) +{ + return( ( ssl->in_msg[9] << 16 ) | + ( ssl->in_msg[10] << 8 ) | + ssl->in_msg[11] ); +} + +static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context *ssl ) +{ + return( ( ssl->in_msg[6] << 16 ) | + ( ssl->in_msg[7] << 8 ) | + ssl->in_msg[8] ); +} + +static int ssl_check_hs_header( mbedtls_ssl_context *ssl ) +{ + uint32_t msg_len, frag_off, frag_len; + + msg_len = ssl_get_hs_total_len( ssl ); + frag_off = ssl_get_hs_frag_off( ssl ); + frag_len = ssl_get_hs_frag_len( ssl ); + + if( frag_off > msg_len ) + return( -1 ); + + if( frag_len > msg_len - frag_off ) + return( -1 ); + + if( frag_len + 12 > ssl->in_msglen ) + return( -1 ); + + return( 0 ); +} + /* * Mark bits in bitmask (used for DTLS HS reassembly) */ @@ -3688,6 +3723,12 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) int ret; unsigned int recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; + if( ssl_check_hs_header( ssl ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid handshake header" ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + if( ssl->handshake != NULL && ( ( ssl->state != MBEDTLS_SSL_HANDSHAKE_OVER && recv_msg_seq != ssl->handshake->in_msg_seq ) || From 6d97ef5a0366cb1ee1ae8d586d076fecbb8293e5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 13:09:04 +0100 Subject: [PATCH 0851/1100] Use uniform treatment for future messages and proper HS fragments This commit returns the error code MBEDTLS_ERR_SSL_EARLY_MESSAGE for proper handshake fragments, forwarding their treatment to the buffering function ssl_buffer_message(); currently, though, this function does not yet buffer or reassembly HS messages, so: ! This commit temporarily disables support for handshake reassembly ! --- include/mbedtls/ssl_internal.h | 2 - library/ssl_tls.c | 156 ++------------------------------- 2 files changed, 6 insertions(+), 152 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index a34d385210..fbf3e70e84 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -297,8 +297,6 @@ struct mbedtls_ssl_handshake_params unsigned char verify_cookie_len; /*!< Cli: cookie length Srv: flag for sending a cookie */ - unsigned char *hs_msg; /*!< Reassembled handshake message */ - uint32_t retransmit_timeout; /*!< Current value of timeout */ unsigned char retransmit_state; /*!< Retransmission state */ mbedtls_ssl_flight_item *flight; /*!< Current outgoing flight */ diff --git a/library/ssl_tls.c b/library/ssl_tls.c index a321eaf420..ed41686315 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3558,141 +3558,6 @@ static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ return( 0 ); } -/* - * Reassemble fragmented DTLS handshake messages. - * - * Use a temporary buffer for reassembly, divided in two parts: - * - the first holds the reassembled message (including handshake header), - * - the second holds a bitmask indicating which parts of the message - * (excluding headers) have been received so far. - */ -static int ssl_reassemble_dtls_handshake( mbedtls_ssl_context *ssl ) -{ - unsigned char *msg, *bitmask; - size_t frag_len, frag_off; - size_t msg_len = ssl->in_hslen - 12; /* Without headers */ - - if( ssl->handshake == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "not supported outside handshake (for now)" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } - - /* - * For first fragment, check size and allocate buffer - */ - if( ssl->handshake->hs_msg == NULL ) - { - ret = ssl_prepare_reassembly_buffer( msg_len, 1, - &ssl->handshake->hs_msg ); - if( ret != 0 ) - return( ret ); - - /* Prepare final header: copy msg_type, length and message_seq, - * then add standardised fragment_offset and fragment_length */ - memcpy( ssl->handshake->hs_msg, ssl->in_msg, 6 ); - memset( ssl->handshake->hs_msg + 6, 0, 3 ); - memcpy( ssl->handshake->hs_msg + 9, - ssl->handshake->hs_msg + 1, 3 ); - } - else - { - /* Make sure msg_type and length are consistent */ - if( memcmp( ssl->handshake->hs_msg, ssl->in_msg, 4 ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "fragment header mismatch" ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - } - - msg = ssl->handshake->hs_msg + 12; - bitmask = msg + msg_len; - - /* - * Check and copy current fragment - */ - frag_off = ( ssl->in_msg[6] << 16 ) | - ( ssl->in_msg[7] << 8 ) | - ssl->in_msg[8]; - frag_len = ( ssl->in_msg[9] << 16 ) | - ( ssl->in_msg[10] << 8 ) | - ssl->in_msg[11]; - - if( frag_off + frag_len > msg_len ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid fragment offset/len: %d + %d > %d", - frag_off, frag_len, msg_len ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - if( frag_len + 12 > ssl->in_msglen ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid fragment length: %d + 12 > %d", - frag_len, ssl->in_msglen ) ); - return( MBEDTLS_ERR_SSL_INVALID_RECORD ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "adding fragment, offset = %d, length = %d", - frag_off, frag_len ) ); - - memcpy( msg + frag_off, ssl->in_msg + 12, frag_len ); - ssl_bitmask_set( bitmask, frag_off, frag_len ); - - /* - * Do we have the complete message by now? - * If yes, finalize it, else ask to read the next record. - */ - if( ssl_bitmask_check( bitmask, msg_len ) != 0 ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "message is not complete yet" ) ); - return( MBEDTLS_ERR_SSL_CONTINUE_PROCESSING ); - } - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "handshake message completed" ) ); - - if( frag_len + 12 < ssl->in_msglen ) - { - /* - * We'got more handshake messages in the same record. - * This case is not handled now because no know implementation does - * that and it's hard to test, so we prefer to fail cleanly for now. - */ - MBEDTLS_SSL_DEBUG_MSG( 1, ( "last fragment not alone in its record" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } - - if( ssl->in_left > ssl->next_record_offset ) - { - /* - * We've got more data in the buffer after the current record, - * that we don't want to overwrite. Move it before writing the - * reassembled message, and adjust in_left and next_record_offset. - */ - unsigned char *cur_remain = ssl->in_hdr + ssl->next_record_offset; - unsigned char *new_remain = ssl->in_msg + ssl->in_hslen; - size_t remain_len = ssl->in_left - ssl->next_record_offset; - - /* First compute and check new lengths */ - ssl->next_record_offset = new_remain - ssl->in_hdr; - ssl->in_left = ssl->next_record_offset + remain_len; - - if( ssl->in_left > MBEDTLS_SSL_IN_BUFFER_LEN - - (size_t)( ssl->in_hdr - ssl->in_buf ) ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "reassembled message too large for buffer" ) ); - return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL ); - } - - memmove( new_remain, cur_remain, remain_len ); - } - - memcpy( ssl->in_msg, ssl->handshake->hs_msg, ssl->in_hslen ); - - MBEDTLS_SSL_DEBUG_BUF( 3, "reassembled handshake message", - ssl->in_msg, ssl->in_hslen ); - - return( 0 ); -} #endif /* MBEDTLS_SSL_PROTO_DTLS */ static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context *ssl ) @@ -3772,15 +3637,14 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) } /* Wait until message completion to increment in_msg_seq */ + /* Message reassembly is handled alongside buffering of future + * messages; the commonality is that both handshake fragments and + * future messages cannot be forwarded immediately to the handshake + * handshake logic layer. */ if( ssl_hs_is_proper_fragment( ssl ) == 1 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "found fragmented DTLS handshake message" ) ); - - if( ( ret = ssl_reassemble_dtls_handshake( ssl ) ) != 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "ssl_reassemble_dtls_handshake", ret ); - return( ret ); - } + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); } } else @@ -3812,13 +3676,6 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) unsigned offset; mbedtls_ssl_hs_buffer *hs_buf; - /* Clear up handshake reassembly structure, if any. */ - if( ssl->handshake->hs_msg != NULL ) - { - mbedtls_free( ssl->handshake->hs_msg ); - ssl->handshake->hs_msg = NULL; - } - /* Increment handshake sequence number */ hs->in_msg_seq++; @@ -4554,7 +4411,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) break; case MBEDTLS_SSL_MSG_HANDSHAKE: - /* No support for buffering handshake messages so far. */ + /* TODO: Implement buffering and reassembly here. */ break; default: @@ -8461,7 +8318,6 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_PROTO_DTLS) mbedtls_free( handshake->verify_cookie ); - mbedtls_free( handshake->hs_msg ); ssl_flight_free( handshake->flight ); ssl_buffering_free( ssl ); #endif From 37f95320814e29fc2d65e4a6b900e28f32a1116f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 13:55:32 +0100 Subject: [PATCH 0852/1100] Implement future message buffering and loading This commit implements future handshake message buffering and loading by implementing ssl_load_buffered_message() and ssl_buffer_message(). Whenever a handshake message is received which is - a future handshake message (i.e., the sequence number is larger than the next expected one), or which is - a proper fragment of the next expected handshake message, ssl_buffer_message() is called, which does the following: - Ignore message if its sequence number is too far ahead of the next expected sequence number, as controlled by the macro constant MBEDTLS_SSL_MAX_BUFFERED_HS. - Otherwise, check if buffering for the message with the respective sequence number has already commenced. - If not, allocate space to back up the message within the buffering substructure of mbedtls_ssl_handshake_params. If the message is a proper fragment, allocate additional space for a reassembly bitmap; if it is a full message, omit the bitmap. In any case, fall throuh to the next case. - If the message has already been buffered, check that the header is the same, and add the current fragment if the message is not yet complete (this excludes the case where a future message has been received in a single fragment, hence omitting the bitmap, and is afterwards also received as a series of proper fragments; in this case, the proper fragments will be ignored). For loading buffered messages in ssl_load_buffered_message(), the approach is the following: - Check the first entry in the buffering window (the window is always based at the next expected handshake message). If buffering hasn't started or if reassembly is still in progress, ignore. If the next expected message has been fully received, copy it to the input buffer (which is empty, as ssl_load_buffered_message() is only called in this case). --- library/ssl_tls.c | 171 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 170 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ed41686315..b6e2c0edb2 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4354,6 +4354,7 @@ static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ) static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { mbedtls_ssl_handshake_params * const hs = ssl->handshake; + mbedtls_ssl_hs_buffer * hs_buf; int ret = 0; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); @@ -4385,6 +4386,58 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) hs->buffering.seen_ccs = 0; goto exit; } + + /* Debug only */ + { + unsigned offset; + for( offset = 1; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) + { + hs_buf = &hs->buffering.hs[offset]; + if( hs_buf->is_valid == 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Future message with sequence number %u %s buffered.", + hs->in_msg_seq + offset, + hs_buf->is_complete ? "fully" : "partitially" ) ); + } + } + } + + /* Check if we have buffered and/or fully reassembled the + * next handshake message. */ + hs_buf = &hs->buffering.hs[0]; + if( ( hs_buf->is_valid == 1 ) && ( hs_buf->is_complete == 1 ) ) + { + /* Synthesize a record containing the buffered HS message. */ + size_t msg_len = ( hs_buf->data[1] << 16 ) | + ( hs_buf->data[2] << 8 ) | + hs_buf->data[3]; + + /* Double-check that we haven't accidentally buffered + * a message that doesn't fit into the input buffer. */ + if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message has been buffered - load" ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered handshake message (incl. header)", + hs_buf->data, msg_len + 12 ); + + ssl->in_msgtype = MBEDTLS_SSL_MSG_HANDSHAKE; + ssl->in_hslen = msg_len + 12; + ssl->in_msglen = msg_len + 12; + memcpy( ssl->in_msg, hs_buf->data, ssl->in_hslen ); + + ret = 0; + goto exit; + } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Next handshake message %u not or only partially bufffered", + hs->in_msg_seq ) ); + } + ret = -1; exit: @@ -4411,8 +4464,124 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) break; case MBEDTLS_SSL_MSG_HANDSHAKE: - /* TODO: Implement buffering and reassembly here. */ + { + unsigned recv_msg_seq_offset; + unsigned recv_msg_seq = ( ssl->in_msg[4] << 8 ) | ssl->in_msg[5]; + mbedtls_ssl_hs_buffer *hs_buf; + size_t msg_len = ssl->in_hslen - 12; + + /* We should never receive an old handshake + * message - double-check nonetheless. */ + if( recv_msg_seq < ssl->handshake->in_msg_seq ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + recv_msg_seq_offset = recv_msg_seq - ssl->handshake->in_msg_seq; + if( recv_msg_seq_offset >= MBEDTLS_SSL_MAX_BUFFERED_HS ) + { + /* Silently ignore -- message too far in the future */ + MBEDTLS_SSL_DEBUG_MSG( 2, + ( "Ignore future HS message with sequence number %u, " + "buffering window %u - %u", + recv_msg_seq, ssl->handshake->in_msg_seq, + ssl->handshake->in_msg_seq + MBEDTLS_SSL_MAX_BUFFERED_HS - 1 ) ); + + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering HS message with sequence number %u, offset %u ", + recv_msg_seq, recv_msg_seq_offset ) ); + + hs_buf = &hs->buffering.hs[ recv_msg_seq_offset ]; + + /* Check if the buffering for this seq nr has already commenced. */ + if( ! hs_buf->is_valid ) + { + hs_buf->is_fragmented = + ( ssl_hs_is_proper_fragment( ssl ) == 1 ); + + /* We copy the message back into the input buffer + * after reassembly, so check that it's not too large. + * This is an implementation-specific limitation + * and not one from the standard, hence it is not + * checked in ssl_check_hs_header(). */ + if( msg_len > MBEDTLS_SSL_IN_CONTENT_LEN ) + { + /* Ignore message */ + goto exit; + } + + ret = ssl_prepare_reassembly_buffer( ssl, msg_len, + hs_buf->is_fragmented, + &hs_buf->data ); + if( ret == MBEDTLS_ERR_SSL_ALLOC_FAILED && + recv_msg_seq_offset > 0 ) + { + /* If we run out of RAM trying to buffer a *future* + * message, simply ignore instead of failing. */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Not enough RAM available to buffer future message - ignore" ) ); + goto exit; + } + else if( ret != 0 ) + return( ret ); + + /* Prepare final header: copy msg_type, length and message_seq, + * then add standardised fragment_offset and fragment_length */ + memcpy( hs_buf->data, ssl->in_msg, 6 ); + memset( hs_buf->data + 6, 0, 3 ); + memcpy( hs_buf->data + 9, hs_buf->data + 1, 3 ); + + hs_buf->is_valid = 1; + } + else + { + /* Make sure msg_type and length are consistent */ + if( memcmp( hs_buf->data, ssl->in_msg, 4 ) != 0 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "Fragment header mismatch - ignore" ) ); + /* Ignore */ + goto exit; + } + } + + if( ! hs_buf->is_complete ) + { + size_t frag_len, frag_off; + unsigned char * const msg = hs_buf->data + 12; + + /* + * Check and copy current fragment + */ + + /* Validation of header fields already done in + * mbedtls_ssl_prepare_handshake_record(). */ + frag_off = ssl_get_hs_frag_off( ssl ); + frag_len = ssl_get_hs_frag_len( ssl ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "adding fragment, offset = %d, length = %d", + frag_off, frag_len ) ); + memcpy( msg + frag_off, ssl->in_msg + 12, frag_len ); + + if( hs_buf->is_fragmented ) + { + unsigned char * const bitmask = msg + msg_len; + ssl_bitmask_set( bitmask, frag_off, frag_len ); + hs_buf->is_complete = ( ssl_bitmask_check( bitmask, + msg_len ) == 0 ); + } + else + { + hs_buf->is_complete = 1; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "message %scomplete", + hs_buf->is_complete ? "" : "not yet " ) ); + } + break; + } default: break; From e38422107e0f8ea4107fbc85e6253cf8f41cfec8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 15:28:59 +0100 Subject: [PATCH 0853/1100] Add test for reordering of handshake messages --- tests/ssl-opt.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index c056000242..15481e183e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5743,6 +5743,14 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ # Tests for reordering support with DTLS +run_test "DTLS reordering: Buffer out-of-order handshake message" \ + -p "$P_PXY delay=2 seed=1" \ + "$P_SRV cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dtls=1 debug_level=2" \ + 0 \ + -c "Buffering HS message" \ + -c "Next handshake message has been buffered - load" + run_test "DTLS reordering: Buffer out-of-order CCS message"\ -p "$P_PXY delay=3 seed=1" \ "$P_SRV cookies=0 dtls=1 debug_level=2" \ From 5f066e7aac1b0a8e8d7178291978bc1b87ee6eac Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 14:56:31 +0100 Subject: [PATCH 0854/1100] Implement future record buffering This commit implements the buffering of a record from the next epoch. - The buffering substructure of mbedtls_ssl_handshake_params gets another field to hold a raw record (incl. header) from a future epoch. - If ssl_parse_record_header() sees a record from the next epoch, it signals that it might be suitable for buffering by returning MBEDTLS_ERR_SSL_EARLY_MESSAGE. - If ssl_get_next_record() finds this error code, it passes control to ssl_buffer_future_record() which may or may not decide to buffer the record; it does so if - a handshake is in progress, - the record is a handshake record - no record has already been buffered. If these conditions are met, the record is backed up in the aforementioned buffering substructure. - If the current datagram is fully processed, ssl_load_buffered_record() is called to check if a record has been buffered, and if yes, if by now the its epoch is the current one; if yes, it copies the record into the (empty! otherwise, ssl_load_buffered_record() wouldn't have been called) input buffer. --- include/mbedtls/ssl_internal.h | 7 ++ library/ssl_tls.c | 148 ++++++++++++++++++++++++++++++++- 2 files changed, 152 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index fbf3e70e84..6601734013 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -322,6 +322,13 @@ struct mbedtls_ssl_handshake_params unsigned char *data; } hs[MBEDTLS_SSL_MAX_BUFFERED_HS]; + struct + { + unsigned char *data; + size_t len; + unsigned epoch; + } future_record; + } buffering; #endif /* MBEDTLS_SSL_PROTO_DTLS */ diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b6e2c0edb2..85ed1e51c7 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4097,7 +4097,16 @@ static int ssl_parse_record_header( mbedtls_ssl_context *ssl ) } else #endif /* MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE && MBEDTLS_SSL_SRV_C */ + { + /* Consider buffering the record. */ + if( rec_epoch == (unsigned int) ssl->in_epoch + 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Consider record for buffering" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } } #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) @@ -4254,7 +4263,9 @@ static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); #if defined(MBEDTLS_SSL_PROTO_DTLS) static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); +static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); static int ssl_buffer_message( mbedtls_ssl_context *ssl ); +static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ); static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -4689,13 +4700,133 @@ static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ) return( 0 ); } +#if defined(MBEDTLS_SSL_PROTO_DTLS) + +static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + if( hs == NULL ) + return; + + mbedtls_free( hs->buffering.future_record.data ); + hs->buffering.future_record.data = NULL; +} + +static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + unsigned char * rec; + size_t rec_len; + unsigned rec_epoch; + + if( ssl->conf->transport != MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 0 ); + + if( hs == NULL ) + return( 0 ); + + /* Only consider loading future records if the + * input buffer is empty. */ + if( ssl_another_record_in_datagram( ssl ) == 1 ) + return( 0 ); + + rec = hs->buffering.future_record.data; + rec_len = hs->buffering.future_record.len; + rec_epoch = hs->buffering.future_record.epoch; + + if( rec == NULL ) + return( 0 ); + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_record" ) ); + + if( rec_epoch != ssl->in_epoch ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffered record not from current epoch." ) ); + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Found buffered record from current epoch - load" ) ); + + /* Double-check that the record is not too large */ + if( rec_len > MBEDTLS_SSL_IN_BUFFER_LEN - + (size_t)( ssl->in_hdr - ssl->in_buf ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + + memcpy( ssl->in_hdr, rec, rec_len ); + ssl->in_left = rec_len; + ssl->next_record_offset = 0; + + ssl_free_buffered_record( ssl ); + +exit: + MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= ssl_load_buffered_record" ) ); + return( 0 ); +} + +static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + size_t const rec_hdr_len = 13; + + /* Don't buffer future records outside handshakes. */ + if( hs == NULL ) + return( 0 ); + + /* Only buffer handshake records (we are only interested + * in Finished messages). */ + if( ssl->in_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE ) + return( 0 ); + + /* Don't buffer more than one future epoch record. */ + if( hs->buffering.future_record.data != NULL ) + return( 0 ); + + /* Buffer record */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffer record from epoch %u", + ssl->in_epoch + 1 ) ); + MBEDTLS_SSL_DEBUG_BUF( 3, "Buffered record", ssl->in_hdr, + rec_hdr_len + ssl->in_msglen ); + + /* ssl_parse_record_header() only considers records + * of the next epoch as candidates for buffering. */ + hs->buffering.future_record.epoch = ssl->in_epoch + 1; + hs->buffering.future_record.len = rec_hdr_len + ssl->in_msglen; + + hs->buffering.future_record.data = + mbedtls_calloc( 1, hs->buffering.future_record.len ); + if( hs->buffering.future_record.data == NULL ) + { + /* If we run out of RAM trying to buffer a + * record from the next epoch, just ignore. */ + return( 0 ); + } + + memcpy( hs->buffering.future_record.data, + ssl->in_hdr, rec_hdr_len + ssl->in_msglen ); + + return( 0 ); +} + +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + static int ssl_get_next_record( mbedtls_ssl_context *ssl ) { int ret; - /* - * Fetch and decode new record - */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + /* We might have buffered a future record; if so, + * and if the epoch matches now, load it. + * On success, this call will set ssl->in_left to + * the length of the buffered record, so that + * the calls to ssl_fetch_input() below will + * essentially be no-ops. */ + ret = ssl_load_buffered_record( ssl ); + if( ret != 0 ) + return( ret ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ if( ( ret = mbedtls_ssl_fetch_input( ssl, mbedtls_ssl_hdr_len( ssl ) ) ) != 0 ) { @@ -4709,6 +4840,16 @@ static int ssl_get_next_record( mbedtls_ssl_context *ssl ) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && ret != MBEDTLS_ERR_SSL_CLIENT_RECONNECT ) { + if( ret == MBEDTLS_ERR_SSL_EARLY_MESSAGE ) + { + ret = ssl_buffer_future_record( ssl ); + if( ret != 0 ) + return( ret ); + + /* Fall through to handling of unexpected records */ + ret = MBEDTLS_ERR_SSL_UNEXPECTED_RECORD; + } + if( ret == MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ) { /* Skip unexpected record (but not whole datagram) */ @@ -8489,6 +8630,7 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) mbedtls_free( handshake->verify_cookie ); ssl_flight_free( handshake->flight ); ssl_buffering_free( ssl ); + ssl_free_buffered_record( ssl ); #endif mbedtls_platform_zeroize( handshake, From b34149c00ff3b629a531feb5f57ea817c10f5c97 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 15:29:06 +0100 Subject: [PATCH 0855/1100] Add test for buffering of record from next epoch --- tests/ssl-opt.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 15481e183e..b9601980d6 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5751,6 +5751,14 @@ run_test "DTLS reordering: Buffer out-of-order handshake message" \ -c "Buffering HS message" \ -c "Next handshake message has been buffered - load" +run_test "DTLS reordering: Buffer record from future epoch" \ + -p "$P_PXY drop=3 seed=2" \ + "$P_SRV cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dtls=1 debug_level=2" \ + 0 \ + -s "Buffer record from epoch 1" \ + -s "Found buffered record from current epoch - load" + run_test "DTLS reordering: Buffer out-of-order CCS message"\ -p "$P_PXY delay=3 seed=1" \ "$P_SRV cookies=0 dtls=1 debug_level=2" \ From b063a5ffade4eade10539b5b198e82af121e54ba Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 16:06:44 +0100 Subject: [PATCH 0856/1100] Update error codes --- library/error.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/error.c b/library/error.c index 774244b454..6c88689190 100644 --- a/library/error.c +++ b/library/error.c @@ -515,6 +515,8 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "SSL - Internal-only message signaling that further message-processing should be done" ); if( use_ret == -(MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS) ) mbedtls_snprintf( buf, buflen, "SSL - The asynchronous operation is not completed yet" ); + if( use_ret == -(MBEDTLS_ERR_SSL_EARLY_MESSAGE) ) + mbedtls_snprintf( buf, buflen, "SSL - Internal-only message signaling that a message arrived early" ); #endif /* MBEDTLS_SSL_TLS_C */ #if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C) From f103542c3db905c19ac99f4de1a18b42f1176e08 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 16:07:27 +0100 Subject: [PATCH 0857/1100] Adapt ChangeLog --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index ef8abc8bf6..9455318617 100644 --- a/ChangeLog +++ b/ChangeLog @@ -35,6 +35,7 @@ Changes Drozd. Fixes #1215 raised by randombit. * Improve compatibility with some alternative CCM implementations by using CCM test vectors from RAM. + * Add support for buffering of out-of-order handshake messages. INTERNAL NOTE: need to bump soversion of libmbedtls: - added new member 'mtu' to public 'mbedtls_ssl_conf' structure From d488b9e490d10906953d1e31a16253d3060e962f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 16:35:37 +0100 Subject: [PATCH 0858/1100] Increase maximum number of buffered handshake messages --- include/mbedtls/ssl_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 6601734013..eb9885a178 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -156,7 +156,7 @@ ( MBEDTLS_SSL_OUT_CONTENT_LEN ) ) /* The maximum number of buffered handshake messages. */ -#define MBEDTLS_SSL_MAX_BUFFERED_HS 2 +#define MBEDTLS_SSL_MAX_BUFFERED_HS 4 /* Maximum length we can advertise as our max content length for RFC 6066 max_fragment_length extension negotiation purposes From 872730481d3d34d287a8a94ff294222778d94b9c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 16 Aug 2018 16:53:13 +0100 Subject: [PATCH 0859/1100] Disable datagram packing in reordering tests --- tests/ssl-opt.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index b9601980d6..5434ecfb72 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5745,24 +5745,24 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ run_test "DTLS reordering: Buffer out-of-order handshake message" \ -p "$P_PXY delay=2 seed=1" \ - "$P_SRV cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -c "Buffering HS message" \ -c "Next handshake message has been buffered - load" run_test "DTLS reordering: Buffer record from future epoch" \ -p "$P_PXY drop=3 seed=2" \ - "$P_SRV cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -s "Buffer record from epoch 1" \ -s "Found buffered record from current epoch - load" run_test "DTLS reordering: Buffer out-of-order CCS message"\ -p "$P_PXY delay=3 seed=1" \ - "$P_SRV cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -c "Inject buffered CCS message" \ -c "Remember CCS message" From 56d5eaa96c94725df8dc94702e48b4e3eff74911 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 09:06:31 +0100 Subject: [PATCH 0860/1100] Mark SSL ctx unused in ssl_prepare_reassembly_buffer() if !DEBUG The SSL context is passed to the reassembly preparation function ssl_prepare_reassembly_buffer() solely for the purpose of allowing debugging output. This commit marks the context as unused if debugging is disabled (through !MBEDTLS_DEBUG_C). --- library/ssl_tls.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 85ed1e51c7..c00c974962 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3531,6 +3531,11 @@ static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ size_t alloc_len; unsigned char *buf; +#if !defined(MBEDTLS_DEBUG_C) + /* The SSL context is used for debugging only. */ + ((void) ssl); +#endif + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", msg_len ) ); From 01ea77836356405885f436f26c93c96fc0edf16a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 13:33:41 +0100 Subject: [PATCH 0861/1100] UDP proxy: Add option to delay specific handshake messages --- programs/test/udp_proxy.c | 109 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 55e0f249ce..2986ee30a7 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -40,6 +40,8 @@ #define mbedtls_time time #define mbedtls_time_t time_t #define mbedtls_printf printf +#define mbedtls_calloc calloc +#define mbedtls_free free #define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE #endif /* MBEDTLS_PLATFORM_C */ @@ -106,6 +108,21 @@ int main( void ) " delay=%%d default: 0 (no delayed packets)\n" \ " delay about 1:N packets randomly\n" \ " delay_ccs=0/1 default: 0 (don't delay ChangeCipherSpec)\n" \ + " delay_cli=%%s Handshake message from client that should be\n"\ + " delayed. Possible values are 'ClientHello',\n" \ + " 'Certificate', 'CertificateVerify', and\n" \ + " 'ClientKeyExchange'.\n" \ + " May be used multiple times, even for the same\n"\ + " message, in which case the respective message\n"\ + " gets delayed multiple times.\n" \ + " delay_srv=%%s Handshake message from server that should be\n"\ + " delayed. Possible values are 'HelloRequest',\n"\ + " 'ServerHello', 'ServerHelloDone', 'Certificate'\n"\ + " 'ServerKeyExchange', 'NewSessionTicket',\n"\ + " 'HelloVerifyRequest' and ''CertificateRequest'.\n"\ + " May be used multiple times, even for the same\n"\ + " message, in which case the respective message\n"\ + " gets delayed multiple times.\n" \ " drop=%%d default: 0 (no dropped packets)\n" \ " drop about 1:N packets randomly\n" \ " mtu=%%d default: 0 (unlimited)\n" \ @@ -121,6 +138,9 @@ int main( void ) /* * global options */ + +#define MAX_DELAYED_HS 10 + static struct options { const char *server_addr; /* address to forward packets to */ @@ -131,6 +151,12 @@ static struct options int duplicate; /* duplicate 1 in N packets (none if 0) */ int delay; /* delay 1 packet in N (none if 0) */ int delay_ccs; /* delay ChangeCipherSpec */ + char* delay_cli[MAX_DELAYED_HS]; /* handshake types of messages from + * client that should be delayed. */ + uint8_t delay_cli_cnt; /* Number of entries in delay_cli. */ + char* delay_srv[MAX_DELAYED_HS]; /* handshake types of messages from + * server that should be delayed. */ + uint8_t delay_srv_cnt; /* Number of entries in delay_srv. */ int drop; /* drop 1 packet in N (none if 0) */ int mtu; /* drop packets larger than this */ int bad_ad; /* inject corrupted ApplicationData record */ @@ -164,6 +190,11 @@ static void get_options( int argc, char *argv[] ) opt.pack = DFL_PACK; /* Other members default to 0 */ + opt.delay_cli_cnt = 0; + opt.delay_srv_cnt = 0; + memset( opt.delay_cli, 0, sizeof( opt.delay_cli ) ); + memset( opt.delay_srv, 0, sizeof( opt.delay_srv ) ); + for( i = 1; i < argc; i++ ) { p = argv[i]; @@ -197,6 +228,43 @@ static void get_options( int argc, char *argv[] ) if( opt.delay_ccs < 0 || opt.delay_ccs > 1 ) exit_usage( p, q ); } + else if( strcmp( p, "delay_cli" ) == 0 || + strcmp( p, "delay_srv" ) == 0 ) + { + uint8_t *delay_cnt; + char **delay_list; + size_t len; + char *buf; + + if( strcmp( p, "delay_cli" ) == 0 ) + { + delay_cnt = &opt.delay_cli_cnt; + delay_list = opt.delay_cli; + } + else + { + delay_cnt = &opt.delay_srv_cnt; + delay_list = opt.delay_srv; + } + + if( *delay_cnt == MAX_DELAYED_HS ) + { + mbedtls_printf( " maximally %d uses of delay_cli argument allows\n", + MAX_DELAYED_HS ); + exit_usage( p, NULL ); + } + + len = strlen( q ); + buf = mbedtls_calloc( 1, len + 1 ); + if( buf == NULL ) + { + mbedtls_printf( " Allocation failure\n" ); + exit( 1 ); + } + memcpy( buf, q, len + 1 ); + + delay_list[ (*delay_cnt)++ ] = buf; + } else if( strcmp( p, "drop" ) == 0 ) { opt.drop = atoi( q ); @@ -540,6 +608,10 @@ int handle_message( const char *way, packet cur; size_t id; + uint8_t delay_idx; + char ** delay_list; + uint8_t delay_list_len; + /* receive packet */ if( ( ret = mbedtls_net_recv( src, cur.buf, sizeof( cur.buf ) ) ) <= 0 ) { @@ -555,6 +627,36 @@ int handle_message( const char *way, id = cur.len % sizeof( dropped ); + if( strcmp( way, "S <- C" ) == 0 ) + { + delay_list = opt.delay_cli; + delay_list_len = opt.delay_cli_cnt; + } + else + { + delay_list = opt.delay_srv; + delay_list_len = opt.delay_srv_cnt; + } + /* Check if message type is in the list of messages + * that should be delayed */ + for( delay_idx = 0; delay_idx < delay_list_len; delay_idx++ ) + { + if( delay_list[ delay_idx ] == NULL ) + continue; + + if( strcmp( delay_list[ delay_idx ], cur.type ) == 0 ) + { + /* Delay message */ + memcpy( &prev, &cur, sizeof( packet ) ); + + /* Remove entry from list */ + mbedtls_free( delay_list[delay_idx] ); + delay_list[delay_idx] = NULL; + + return( 0 ); + } + } + /* do we want to drop, delay, or forward it? */ if( ( opt.mtu != 0 && cur.len > (unsigned) opt.mtu ) || @@ -604,6 +706,7 @@ int main( int argc, char *argv[] ) { int ret = 1; int exit_code = MBEDTLS_EXIT_FAILURE; + uint8_t delay_idx; mbedtls_net_context listen_fd, client_fd, server_fd; @@ -798,6 +901,12 @@ exit: } #endif + for( delay_idx = 0; delay_idx < MAX_DELAYED_HS; delay_idx++ ) + { + mbedtls_free( opt.delay_cli + delay_idx ); + mbedtls_free( opt.delay_srv + delay_idx ); + } + mbedtls_net_free( &client_fd ); mbedtls_net_free( &server_fd ); mbedtls_net_free( &listen_fd ); From 56cdfd1e2995c76a5bb95d74651d1fc9815330b1 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 13:42:15 +0100 Subject: [PATCH 0862/1100] Refine reordering tests Now that the UDP proxy has the ability to delay specific handshake message on the client and server side, use this to rewrite the reordering tests and thereby make them independent on the choice of PRNG used by the proxy (which is not stable across platforms). --- tests/ssl-opt.sh | 70 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 5434ecfb72..4b32314c53 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5743,29 +5743,71 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ # Tests for reordering support with DTLS -run_test "DTLS reordering: Buffer out-of-order handshake message" \ - -p "$P_PXY delay=2 seed=1" \ +run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ + -p "$P_PXY delay_srv=ServerHello" \ "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -c "Buffering HS message" \ - -c "Next handshake message has been buffered - load" + -c "Next handshake message has been buffered - load"\ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load"\ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" -run_test "DTLS reordering: Buffer record from future epoch" \ - -p "$P_PXY drop=3 seed=2" \ +run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ + -p "$P_PXY delay_cli=Certificate" \ + "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -C "Buffering HS message" \ + -C "Next handshake message has been buffered - load"\ + -s "Buffering HS message" \ + -s "Next handshake message has been buffered - load" \ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" + +run_test "DTLS reordering: Buffer out-of-order CCS message on client"\ + -p "$P_PXY delay_srv=NewSessionTicket" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -C "Buffering HS message" \ + -C "Next handshake message has been buffered - load"\ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load" \ + -c "Inject buffered CCS message" \ + -c "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" + +run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ + -p "$P_PXY delay_cli=ClientKeyExchange" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -C "Buffering HS message" \ + -C "Next handshake message has been buffered - load"\ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load" \ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -s "Inject buffered CCS message" \ + -s "Remember CCS message" + +run_test "DTLS reordering: Buffer record from future epoch (client and server)" \ + -p "$P_PXY delay_ccs=1" \ "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -s "Buffer record from epoch 1" \ - -s "Found buffered record from current epoch - load" - -run_test "DTLS reordering: Buffer out-of-order CCS message"\ - -p "$P_PXY delay=3 seed=1" \ - "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ - 0 \ - -c "Inject buffered CCS message" \ - -c "Remember CCS message" + -s "Found buffered record from current epoch - load" \ + -c "Buffer record from epoch 1" \ + -c "Found buffered record from current epoch - load" # Tests for "randomly unreliable connection": try a variety of flows and peers From 34b03ef78f3953f83b2e06d1b23459d21648f0fa Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 20 Aug 2018 10:38:35 +0300 Subject: [PATCH 0863/1100] Remove redundant `else` statement Remove `else` statement, as it is redundant. resolves #1776 --- ChangeLog | 3 +++ library/ecp.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index abd5e61bbd..0d3d40a634 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,9 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. + * Remove redundant else statement, which is not readable, and the positive + path in the if statement results in exiting the funciton. Raised by irwir + in #1776. Changes * Copy headers preserving timestamps when doing a "make install". diff --git a/library/ecp.c b/library/ecp.c index 68c6f4914e..9e2c085bb6 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1897,7 +1897,6 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, const mbedtls_mpi * mbedtls_mpi_get_bit( d, 1 ) != 0 || mbedtls_mpi_bitlen( d ) - 1 != grp->nbits ) /* mbedtls_mpi_bitlen is one-based! */ return( MBEDTLS_ERR_ECP_INVALID_KEY ); - else /* see [Curve25519] page 5 */ if( grp->nbits == 254 && mbedtls_mpi_get_bit( d, 2 ) != 0 ) From 0d4b376ddf559b88b6625ba1821ae4b128f9a08a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 09:36:59 +0100 Subject: [PATCH 0864/1100] Return through cleanup section in ssl_load_buffered_message() --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index c00c974962..e6b5ad2095 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4387,7 +4387,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); ret = -1; - return( -1 ); + goto exit; } MBEDTLS_SSL_DEBUG_MSG( 2, ( "Inject buffered CCS message" ) ); From 6e7aaca146da9b4945895986abbb91ae3068c811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 10:37:23 +0200 Subject: [PATCH 0865/1100] Move MTU setting to SSL context, not config This setting belongs to the individual connection, not to a configuration shared by many connections. (If a default value is desired, that can be handled by the application code that calls mbedtls_ssl_set_mtu().) There are at least two ways in which this matters: - per-connection settings can be adjusted if MTU estimates become available during the lifetime of the connection - it is at least conceivable that a server might recognize restricted clients based on range of IPs and immediately set a lower MTU for them. This is much easier to do with a per-connection setting than by maintaining multiple near-duplicated ssl_config objects that differ only by the MTU setting. --- ChangeLog | 5 ++- include/mbedtls/ssl.h | 74 ++++++++++++++++++++------------------ library/ssl_tls.c | 18 +++++----- programs/ssl/ssl_client2.c | 10 +++--- programs/ssl/ssl_server2.c | 8 +++-- 5 files changed, 63 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index bab69f6762..a95cc6c59e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,7 +3,10 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Features - * Add support for fragmentation of outoing DTLS handshake messages. + * Add support for fragmentation of outgoing DTLS handshake messages. This + is controlled by the maximum fragment length as set locally or negotiated + with the peer, as well as new per-connection MTU option, set using + mbedtls_ssl_set_mtu(). Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index a3b514cd4f..69a2e8618c 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -958,10 +958,6 @@ struct mbedtls_ssl_config unsigned int dhm_min_bitlen; /*!< min. bit length of the DHM prime */ #endif -#if defined(MBEDTLS_SSL_PROTO_DTLS) - uint16_t mtu; /*!< path mtu, used to fragment outoing messages */ -#endif - unsigned char max_major_ver; /*!< max. major version used */ unsigned char max_minor_ver; /*!< max. minor version used */ unsigned char min_major_ver; /*!< min. major version used */ @@ -1116,6 +1112,10 @@ struct mbedtls_ssl_context size_t out_msglen; /*!< record header: message length */ size_t out_left; /*!< amount of data not yet written */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + uint16_t mtu; /*!< path mtu, used to fragment outoing messages */ +#endif + #if defined(MBEDTLS_ZLIB_SUPPORT) unsigned char *compress_buf; /*!< zlib data buffer */ #endif @@ -1378,6 +1378,39 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, mbedtls_ssl_recv_t *f_recv, mbedtls_ssl_recv_timeout_t *f_recv_timeout ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) +/** + * \brief Set the Maximum Tranport Unit (MTU). + * Special value: 0 means unset (no limit). + * This represents the maximum size of a datagram payload + * handled by the transport layer (usually UDP) as determined + * by the network link and stack. In practice, this controls + * the maximum size datagram the DTLS layer will pass to the + * \c f_send() callback set using \c mbedtls_ssl_set_bio(). + * + * \note This can be called at any point during the connection, for + * example when a PMTU estimate becomes available from other + * sources, such as lower (or higher) protocol layers. + * + * \note This only controls the size of the packet we send. + * Client-side, you can request the server to use smaller + * records with \c mbedtls_conf_max_frag_len(). + * + * \note If both a MTU and a maximum fragment length have been + * configured (or negotiated with the peer), the lower limit + * is used. + * + * \note Values larger than \c MBEDTLS_SSL_OUT_CONTENT_LEN have no + * effect. This can only be used to decrease the maximum size + * of datagrams sent. Values lower than record layer expansion + * are ignored. + * + * \param ssl SSL context + * \param mtu Value of the path MTU in bytes + */ +void mbedtls_ssl_set_mtu( mbedtls_ssl_context *ssl, uint16_t mtu ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + /** * \brief Set the timeout period for mbedtls_ssl_read() * (Default: no timeout.) @@ -2427,35 +2460,6 @@ void mbedtls_ssl_conf_cert_req_ca_list( mbedtls_ssl_config *conf, char cert_req_ca_list ); #endif /* MBEDTLS_SSL_SRV_C */ -#if defined(MBEDTLS_SSL_PROTO_DTLS) -/** - * \brief Set the Maximum Tranport Unit (MTU). - * Special value: 0 means unset (no limit). - * This represents the maximum size of a datagram payload - * handled by the transport layer (usually UDP) as determined - * by the network link and stack. In practice, this controls - * the maximum size datagram the DTLS layer will pass to the - * \c f_send() callback set using \c mbedtls_ssl_set_bio(). - * - * \note This only controls the size of the packet we send. - * Client-side, you can request the server to use smaller - * records with \c mbedtls_conf_max_frag_len(). - * - * \note If both a MTU and a maximum fragment length have been - * configured (or negotiated with the peer), the lower limit - * is used. - * - * \note Values larger than \c MBEDTLS_SSL_OUT_CONTENT_LEN have no - * effect. This can only be used to decrease the maximum size - * of datagrams sent. Values lower than record layer expansion - * are ignored. - * - * \param conf SSL configuration - * \param mtu Value of the path MTU in bytes - */ -void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ); -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** * \brief Set the maximum fragment length to emit and/or negotiate @@ -2476,7 +2480,7 @@ void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ); * * \note For DTLS, it is also possible to set a limit for the total * size of daragrams passed to the transport layer, including - * record overhead, see \c mbedtls_ssl_conf_mtu(). + * record overhead, see \c mbedtls_ssl_set_mtu(). * * \param conf SSL configuration * \param mfl_code Code for maximum fragment length (allowed values: @@ -2784,7 +2788,7 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); * \note This function is not available (always returns an error) * when record compression is enabled. * - * \sa mbedtls_ssl_conf_mtu() + * \sa mbedtls_ssl_set_mtu() * \sa mbedtls_ssl_get_max_frag_len() * \sa mbedtls_ssl_get_record_expansion() * diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 530f283b47..7f85ddff1b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6270,6 +6270,13 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, ssl->f_recv_timeout = f_recv_timeout; } +#if defined(MBEDTLS_SSL_PROTO_DTLS) +void mbedtls_ssl_set_mtu( mbedtls_ssl_context *ssl, uint16_t mtu ) +{ + ssl->mtu = mtu; +} +#endif + void mbedtls_ssl_conf_read_timeout( mbedtls_ssl_config *conf, uint32_t timeout ) { conf->read_timeout = timeout; @@ -6758,13 +6765,6 @@ void mbedtls_ssl_conf_arc4_support( mbedtls_ssl_config *conf, char arc4 ) } #endif -#if defined(MBEDTLS_SSL_PROTO_DTLS) -void mbedtls_ssl_conf_mtu( mbedtls_ssl_config *conf, uint16_t mtu ) -{ - conf->mtu = mtu; -} -#endif - #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) int mbedtls_ssl_conf_max_frag_len( mbedtls_ssl_config *conf, unsigned char mfl_code ) { @@ -7101,9 +7101,9 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->mtu != 0 ) + if( ssl->mtu != 0 ) { - const size_t mtu = ssl->conf->mtu; + const size_t mtu = ssl->mtu; const int ret = mbedtls_ssl_get_record_expansion( ssl ); const size_t overhead = (size_t) ret; diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 7cdc53a54c..e4a7412a98 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -1337,10 +1337,7 @@ int main( int argc, char *argv[] ) if( opt.hs_to_min != DFL_HS_TO_MIN || opt.hs_to_max != DFL_HS_TO_MAX ) mbedtls_ssl_conf_handshake_timeout( &conf, opt.hs_to_min, opt.hs_to_max ); - - if( opt.dtls_mtu != DFL_DTLS_MTU ) - mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); -#endif /* MBEDTLS_SSL_PROTO_DTLS */ +#endif #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) if( ( ret = mbedtls_ssl_conf_max_frag_len( &conf, opt.mfl_code ) ) != 0 ) @@ -1498,6 +1495,11 @@ int main( int argc, char *argv[] ) mbedtls_net_send, mbedtls_net_recv, opt.nbio == 0 ? mbedtls_net_recv_timeout : NULL ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( opt.dtls_mtu != DFL_DTLS_MTU ) + mbedtls_ssl_set_mtu( &ssl, opt.dtls_mtu ); +#endif + #if defined(MBEDTLS_TIMING_C) mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay, mbedtls_timing_get_delay ); diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 484f84fdd6..71ec85bd33 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -2165,9 +2165,6 @@ int main( int argc, char *argv[] ) #if defined(MBEDTLS_SSL_PROTO_DTLS) if( opt.hs_to_min != DFL_HS_TO_MIN || opt.hs_to_max != DFL_HS_TO_MAX ) mbedtls_ssl_conf_handshake_timeout( &conf, opt.hs_to_min, opt.hs_to_max ); - - if( opt.dtls_mtu != DFL_DTLS_MTU ) - mbedtls_ssl_conf_mtu( &conf, opt.dtls_mtu ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) @@ -2486,6 +2483,11 @@ int main( int argc, char *argv[] ) mbedtls_ssl_set_bio( &ssl, &client_fd, mbedtls_net_send, mbedtls_net_recv, opt.nbio == 0 ? mbedtls_net_recv_timeout : NULL ); +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( opt.dtls_mtu != DFL_DTLS_MTU ) + mbedtls_ssl_set_mtu( &ssl, opt.dtls_mtu ); +#endif + #if defined(MBEDTLS_TIMING_C) mbedtls_ssl_set_timer_cb( &ssl, &timer, mbedtls_timing_set_delay, mbedtls_timing_get_delay ); From e00ae375d3cb981e0c804486517b33e99d89b540 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 09:39:42 +0100 Subject: [PATCH 0866/1100] Omit debug output in ssl_load_buffered_message outside a handshake --- library/ssl_tls.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e6b5ad2095..8ead5fa7c7 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4373,11 +4373,11 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) mbedtls_ssl_hs_buffer * hs_buf; int ret = 0; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); - if( hs == NULL ) return( -1 ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_messsage" ) ); + if( ssl->state == MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC || ssl->state == MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) { From 4422bbb096ec1ebfde9112714153f3fdc03b2814 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 09:40:19 +0100 Subject: [PATCH 0867/1100] Whitespace fixes --- library/ssl_tls.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8ead5fa7c7..b8ca1545f9 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4383,7 +4383,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { /* Check if we have seen a ChangeCipherSpec before. * If yes, synthesize a CCS record. */ - if( ! hs->buffering.seen_ccs ) + if( !hs->buffering.seen_ccs ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "CCS not seen in the current flight" ) ); ret = -1; @@ -4513,7 +4513,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) hs_buf = &hs->buffering.hs[ recv_msg_seq_offset ]; /* Check if the buffering for this seq nr has already commenced. */ - if( ! hs_buf->is_valid ) + if( !hs_buf->is_valid ) { hs_buf->is_fragmented = ( ssl_hs_is_proper_fragment( ssl ) == 1 ); @@ -4562,7 +4562,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) } } - if( ! hs_buf->is_complete ) + if( !hs_buf->is_complete ) { size_t frag_len, frag_off; unsigned char * const msg = hs_buf->data + 12; From 3a0aad1c9d9380cdcab2b019e7b5a41dafe8d781 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 09:44:02 +0100 Subject: [PATCH 0868/1100] Rename `update_digest` to `update_hs_digest` --- include/mbedtls/ssl_internal.h | 8 ++++++-- library/ssl_tls.c | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index eb9885a178..bfc3a5a424 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -515,7 +515,10 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); * of the logic of (D)TLS from the implementation * of the secure transport. * - * \param ssl SSL context to use + * \param ssl The SSL context to use. + * \param update_hs_digest This indicates if the handshake digest + * should be automatically updated in case + * a handshake message is found. * * \return 0 or non-zero error code. * @@ -581,7 +584,8 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ); * following the above definition. * */ -int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_digest ); +int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, + unsigned update_hs_digest ); int mbedtls_ssl_fetch_input( mbedtls_ssl_context *ssl, size_t nb_want ); int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index b8ca1545f9..19523bac92 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4275,7 +4275,7 @@ static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, - unsigned update_digest ) + unsigned update_hs_digest ) { int ret; @@ -4342,7 +4342,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, } if( ssl->in_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && - update_digest == 1 ) + update_hs_digest == 1 ) { mbedtls_ssl_update_handshake_status( ssl ); } From caf874189165c202ea1b744c2d4a4f1d572164ac Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 09:45:51 +0100 Subject: [PATCH 0869/1100] Fix typo in documentation of UDP proxy argument 'delay_cli' --- programs/test/udp_proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 2986ee30a7..77eaa5d2f4 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -249,7 +249,7 @@ static void get_options( int argc, char *argv[] ) if( *delay_cnt == MAX_DELAYED_HS ) { - mbedtls_printf( " maximally %d uses of delay_cli argument allows\n", + mbedtls_printf( " maximally %d uses of delay_cli argument allowed\n", MAX_DELAYED_HS ); exit_usage( p, NULL ); } From 02f3a8a921ba4aec77238eaa43305cebf1520eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 10:49:28 +0200 Subject: [PATCH 0870/1100] Adjust timeout values for 3d test Use the same values as other 3d tests: this makes the test hopefully a bit faster than the default values, while not increasing the failure rate. While at it: - adjust "needs_more_time" setting for 3d interop tests (we can't set the timeout values for other implementations, so the test might be slow) - fix some supposedly DTLS 1.0 test that were using dtls1_2 on the command line --- tests/ssl-opt.sh | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index c27cc25c8e..e966649d10 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5313,11 +5313,11 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=512" \ + hs_timeout=250-10000 mtu=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512" \ + hs_timeout=250-10000 mtu=512" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5350,7 +5350,7 @@ run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512 force_version=dtls1_2" \ + mtu=512 force_version=dtls1" \ 0 \ -c "fragmenting handshake message" \ -C "error" @@ -5448,14 +5448,14 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -client_needs_more_time 2 +client_needs_more_time 4 run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.2" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$G_NEXT_SRV -u" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512 force_version=dtls1_2" \ + hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ 0 \ -c "fragmenting handshake message" \ -C "error" @@ -5465,14 +5465,14 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 -client_needs_more_time 2 +client_needs_more_time 4 run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$G_NEXT_SRV -u" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512 force_version=dtls1_2" \ + hs_timeout=250-60000 mtu=512 force_version=dtls1" \ 0 \ -c "fragmenting handshake message" \ -C "error" @@ -5489,13 +5489,13 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C ## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 2 +## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ ## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ ## crt_file=data_files/server7_int-ca.crt \ ## key_file=data_files/server7.key \ -## mtu=512 force_version=dtls1_2" \ +## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ ## "$G_CLI -u" \ ## 0 \ ## -s "fragmenting handshake message" @@ -5506,13 +5506,13 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C ## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 -## client_needs_more_time 2 +## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ ## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ ## crt_file=data_files/server7_int-ca.crt \ ## key_file=data_files/server7.key \ -## mtu=512 force_version=dtls1" \ +## hs_timeout=250-60000 mtu=512 force_version=dtls1" \ ## "$G_CLI -u" \ ## 0 \ ## -s "fragmenting handshake message" @@ -5529,14 +5529,14 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C ## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 2 +## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ ## "$O_SRV -dtls1_2 -verify 10" \ ## "$P_CLI dtls=1 debug_level=2 \ ## crt_file=data_files/server8_int-ca2.crt \ ## key_file=data_files/server8.key \ -## mtu=512 force_version=dtls1_2" \ +## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ ## 0 \ ## -c "fragmenting handshake message" \ ## -C "error" @@ -5546,14 +5546,14 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 -client_needs_more_time 2 +client_needs_more_time 4 run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$O_LEGACY_SRV -dtls1 -verify 10" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512 force_version=dtls1" \ + hs_timeout=250-60000 mtu=512 force_version=dtls1" \ 0 \ -c "fragmenting handshake message" \ -C "error" @@ -5563,13 +5563,13 @@ run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C ## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 2 +## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ ## "$P_SRV dtls=1 debug_level=2 \ ## crt_file=data_files/server7_int-ca.crt \ ## key_file=data_files/server7.key \ -## mtu=512 force_version=dtls1_2" \ +## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ ## "$O_CLI -dtls1_2" \ ## 0 \ ## -s "fragmenting handshake message" @@ -5580,13 +5580,13 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 -client_needs_more_time 2 +client_needs_more_time 4 run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ "$P_SRV dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=512 force_version=dtls1" \ + hs_timeout=250-60000 mtu=512 force_version=dtls1" \ "$O_LEGACY_CLI -nbio -dtls1" \ 0 \ -s "fragmenting handshake message" From 065a2a3472e6d24be99bfcde65931dbfa75f4c86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 11:09:26 +0200 Subject: [PATCH 0871/1100] Fix some typos and links in comments and doc --- include/mbedtls/ssl.h | 6 +++--- library/ssl_tls.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 69a2e8618c..1d392ab316 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1113,7 +1113,7 @@ struct mbedtls_ssl_context size_t out_left; /*!< amount of data not yet written */ #if defined(MBEDTLS_SSL_PROTO_DTLS) - uint16_t mtu; /*!< path mtu, used to fragment outoing messages */ + uint16_t mtu; /*!< path mtu, used to fragment outgoing messages */ #endif #if defined(MBEDTLS_ZLIB_SUPPORT) @@ -1394,13 +1394,13 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * * \note This only controls the size of the packet we send. * Client-side, you can request the server to use smaller - * records with \c mbedtls_conf_max_frag_len(). + * records with \c mbedtls_ssl_conf_max_frag_len(). * * \note If both a MTU and a maximum fragment length have been * configured (or negotiated with the peer), the lower limit * is used. * - * \note Values larger than \c MBEDTLS_SSL_OUT_CONTENT_LEN have no + * \note Values larger than #MBEDTLS_SSL_OUT_CONTENT_LEN have no * effect. This can only be used to decrease the maximum size * of datagrams sent. Values lower than record layer expansion * are ignored. diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 7f85ddff1b..5f3abe5978 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3034,7 +3034,7 @@ void mbedtls_ssl_send_flight_completed( mbedtls_ssl_context *ssl ) * - ssl->out_msg[0]: the handshake type (ClientHello, ServerHello, etc) * - ssl->out_msg + 4: the handshake message body * - * Ouputs, ie state before passing to flight_append() or write_record(): + * Outputs, ie state before passing to flight_append() or write_record(): * - ssl->out_msglen: the length of the record contents * (including handshake headers but excluding record headers) * - ssl->out_msg: the record contents (handshake headers + content) From 050dd6ad354f89f9e20ff94483a40526e520ccfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 11:16:40 +0200 Subject: [PATCH 0872/1100] Improve documentation of ssl_set_mtu(). --- include/mbedtls/ssl.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 1d392ab316..f563437d13 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1392,18 +1392,25 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * example when a PMTU estimate becomes available from other * sources, such as lower (or higher) protocol layers. * - * \note This only controls the size of the packet we send. + * \note This only controls the size of the packets we send. * Client-side, you can request the server to use smaller * records with \c mbedtls_ssl_conf_max_frag_len(). * * \note If both a MTU and a maximum fragment length have been - * configured (or negotiated with the peer), the lower limit - * is used. + * configured (or negotiated with the peer), the resulting + * lower limit (after translating the MTU setting to a limit + * on the record content length) is used. * - * \note Values larger than #MBEDTLS_SSL_OUT_CONTENT_LEN have no - * effect. This can only be used to decrease the maximum size - * of datagrams sent. Values lower than record layer expansion - * are ignored. + * \note This can only be used to decrease the maximum size + * of datagrams sent. It cannot be used to increase the + * maximum size of records over the limit set by + * #MBEDTLS_SSL_OUT_CONTENT_LEN. + * + * \note Values lower than the current record layer expansion will + * result in an error when trying to send data. + * + * \note Using record compression together with a non-zero MTU value + * will result in an error when trying to send data. * * \param ssl SSL context * \param mtu Value of the path MTU in bytes From 58e9dc3d4bf2d30be1eddf96b161ab3571df03b7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 15:53:21 +0100 Subject: [PATCH 0873/1100] Allow GNUTLS_NEXT_CLI / GNUTLS_NEXT_SERV to be unset in ssl-opt.sh --- tests/ssl-opt.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index e966649d10..205cc5dd1a 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -51,13 +51,13 @@ else O_LEGACY_CLI=false fi -if [ -n "${GNUTLS_NEXT_SERV}" ]; then +if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then G_NEXT_SRV="$GNUTLS_NEXT_SERV --x509certfile data_files/server5.crt --x509keyfile data_files/server5.key" else G_NEXT_SRV=false fi -if [ -n "${GNUTLS_NEXT_CLI}" ]; then +if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then G_NEXT_CLI="echo 'GET / HTTP/1.0' | $GNUTLS_NEXT_CLI --x509cafile data_files/test-ca_cat12.crt" else G_NEXT_CLI=false @@ -772,11 +772,11 @@ if [ -n "${OPENSSL_LEGACY:-}" ]; then O_LEGACY_CLI="$O_LEGACY_CLI -connect localhost:+SRV_PORT" fi -if [ -n "${GNUTLS_NEXT_SERV}" ]; then +if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then G_NEXT_SRV="$G_NEXT_SRV -p $SRV_PORT" fi -if [ -n "${GNUTLS_NEXT_CLI}" ]; then +if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT localhost" fi From 982931523551b8b5e7e5db1f95eebe0c47ebdb30 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 17 Aug 2018 16:10:47 +0100 Subject: [PATCH 0874/1100] Add missing dependency in ssl-opt.sh --- tests/ssl-opt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 205cc5dd1a..9ff0795bc3 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5576,6 +5576,7 @@ run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ # -nbio is added to prevent s_client from blocking in case of duplicated # messages at the end of the handshake +requires_openssl_legacy requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 4532329397dc3201c292a628d4e875a3e7ca6569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 11:52:24 +0200 Subject: [PATCH 0875/1100] Add proxy-enforcement to a MTU test --- tests/ssl-opt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9ff0795bc3..f1c19828b9 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5097,6 +5097,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: both (MTU)" \ + -p "$P_PXY mtu=512" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ From a1071a58a3606e755e1e9832300bd4a35493e42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 11:56:14 +0200 Subject: [PATCH 0876/1100] Compute record expansion at the right time Depends on the current transform, which might change when retransmitting a flight containing a Finished message, so compute it only after the transform is swapped. --- library/ssl_tls.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5f3abe5978..da21db237e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2845,20 +2845,8 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) */ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { - const int ret_payload = mbedtls_ssl_get_max_out_record_payload( ssl ); - const size_t max_record_payload = (size_t) ret_payload; - /* DTLS handshake headers are 12 bytes */ - const size_t max_hs_fragment_len = max_record_payload - 12; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); - if( ret_payload < 0 ) - { - MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", - ret_payload ); - return( ret_payload ); - } - if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialise flight transmission" ) ); @@ -2895,6 +2883,10 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) } else { + const int ret_payload = mbedtls_ssl_get_max_out_record_payload( ssl ); + const size_t max_record_payload = (size_t) ret_payload; + /* DTLS handshake headers are 12 bytes */ + const size_t max_hs_fragment_len = max_record_payload - 12; const unsigned char * const p = ssl->handshake->cur_msg_p; const size_t hs_len = cur->len - 12; const size_t frag_off = p - ( cur->p + 12 ); @@ -2902,6 +2894,13 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) const size_t frag_len = rem_len > max_hs_fragment_len ? max_hs_fragment_len : rem_len; + if( ret_payload < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_get_max_out_record_payload", + ret_payload ); + return( ret_payload ); + } + if( frag_off == 0 && frag_len != hs_len ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "fragmenting handshake message (%u > %u)", From 4cb782d2f67d186feef72e57c376f5831c20b0c8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 11:19:05 +0100 Subject: [PATCH 0877/1100] Return from ssl_load_buffered_record early if no record is buffered --- library/ssl_tls.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 19523bac92..058173c4aa 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4730,11 +4730,6 @@ static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) if( hs == NULL ) return( 0 ); - /* Only consider loading future records if the - * input buffer is empty. */ - if( ssl_another_record_in_datagram( ssl ) == 1 ) - return( 0 ); - rec = hs->buffering.future_record.data; rec_len = hs->buffering.future_record.len; rec_epoch = hs->buffering.future_record.epoch; @@ -4742,6 +4737,11 @@ static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) if( rec == NULL ) return( 0 ); + /* Only consider loading future records if the + * input buffer is empty. */ + if( ssl_another_record_in_datagram( ssl ) == 1 ) + return( 0 ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_record" ) ); if( rec_epoch != ssl->in_epoch ) From 513815a38dd3e864531456d9537298de8b32d7ce Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 11:56:09 +0100 Subject: [PATCH 0878/1100] Fix typo in debugging output --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index cc470583a1..05a2a9f01c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3388,7 +3388,7 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) flush = SSL_FORCE_FLUSH; else { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Stil %u bytes available in current datagram", (unsigned) remaining ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Still %u bytes available in current datagram", (unsigned) remaining ) ); } } #endif /* MBEDTLS_SSL_PROTO_DTLS */ From 4e1a9c17f29f9b4af76d95202a0030c7aa46873b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 12:21:35 +0100 Subject: [PATCH 0879/1100] ssl-opt.sh: Preserve proxy log, too, if --preserve-logs is specified --- tests/ssl-opt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 4fa8609f94..09728314d9 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -682,6 +682,9 @@ run_test() { if [ "$PRESERVE_LOGS" -gt 0 ]; then mv $SRV_OUT o-srv-${TESTS}.log mv $CLI_OUT o-cli-${TESTS}.log + if [ -n "$PXY_CMD" ]; then + mv $PXY_OUT o-pxy-${TESTS}.log + fi fi rm -f $SRV_OUT $CLI_OUT $PXY_OUT From 7be2e5bb165c3061f1ac6eda46ce82dcdf448d64 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 12:21:35 +0100 Subject: [PATCH 0880/1100] ssl-opt.sh: Preserve proxy log, too, if --preserve-logs is specified --- tests/ssl-opt.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index a1c7d04904..4a93a1772b 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -632,6 +632,9 @@ run_test() { if [ "$PRESERVE_LOGS" -gt 0 ]; then mv $SRV_OUT o-srv-${TESTS}.log mv $CLI_OUT o-cli-${TESTS}.log + if [ -n "$PXY_CMD" ]; then + mv $PXY_OUT o-pxy-${TESTS}.log + fi fi rm -f $SRV_OUT $CLI_OUT $PXY_OUT From f362c297fa199fc4269d940e252b8933426fce2b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Mon, 20 Aug 2018 12:40:23 +0100 Subject: [PATCH 0881/1100] ssl-opt.sh Add dependency on gnutls in two fragmentation tests --- tests/ssl-opt.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 09728314d9..b6af4dff07 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5359,6 +5359,7 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ # # here and below we just want to test that the we fragment in a way that # pleases other implementations, so we don't need the peer to fragment +requires_gnutls requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5373,6 +5374,7 @@ run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \ -c "fragmenting handshake message" \ -C "error" +requires_gnutls requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 94347133684093e57668a8b4775735b31d3cdbfc Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 20 Aug 2018 14:59:33 +0300 Subject: [PATCH 0882/1100] Move the assertion Move the assertion for checking the heap allocatino succeeded. --- tests/suites/test_suite_nist_kw.function | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/suites/test_suite_nist_kw.function b/tests/suites/test_suite_nist_kw.function index ff5bb8be0d..5d0cd801ae 100644 --- a/tests/suites/test_suite_nist_kw.function +++ b/tests/suites/test_suite_nist_kw.function @@ -161,14 +161,14 @@ void nist_kw_plaintext_lengths( int in_len, int out_len, int mode, int res ) if( in_len != 0 ) { plaintext = mbedtls_calloc( 1, in_len ); + TEST_ASSERT( plaintext != NULL ); } - TEST_ASSERT( in_len == 0 || plaintext != NULL ); if( out_len != 0 ) { ciphertext = mbedtls_calloc( 1, output_len ); + TEST_ASSERT( ciphertext != NULL ); } - TEST_ASSERT( out_len == 0 || ciphertext != NULL ); memset( plaintext, 0, in_len ); memset( ciphertext, 0, output_len ); @@ -217,13 +217,13 @@ void nist_kw_ciphertext_lengths( int in_len, int out_len, int mode, int res ) if( out_len != 0 ) { plaintext = mbedtls_calloc( 1, output_len ); + TEST_ASSERT( plaintext != NULL ); } - TEST_ASSERT( out_len == 0 || plaintext != NULL ); if( in_len != 0 ) { ciphertext = mbedtls_calloc( 1, in_len ); + TEST_ASSERT( ciphertext != NULL ); } - TEST_ASSERT( in_len == 0 || ciphertext != NULL ); memset( plaintext, 0, output_len ); memset( ciphertext, 0, in_len ); From 615129839558690d2bca8fbdcc1ca885ee8d208e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 21 Aug 2018 09:40:07 +0200 Subject: [PATCH 0883/1100] Add missing requires_gnutls guards --- tests/ssl-opt.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index f1c19828b9..4a6234803e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5332,6 +5332,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +requires_gnutls run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \ "$G_SRV -u" \ "$P_CLI dtls=1 debug_level=2 \ @@ -5346,6 +5347,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +requires_gnutls run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \ "$G_SRV -u" \ "$P_CLI dtls=1 debug_level=2 \ @@ -5362,6 +5364,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +requires_gnutls run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \ "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ crt_file=data_files/server7_int-ca.crt \ @@ -5377,6 +5380,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +requires_gnutls run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \ "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ crt_file=data_files/server7_int-ca.crt \ @@ -5486,6 +5490,7 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## ## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS ## requires_ipv6 +## requires_gnutls ## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C @@ -5503,6 +5508,7 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## ## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS ## requires_ipv6 +## requires_gnutls ## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS ## requires_config_enabled MBEDTLS_RSA_C ## requires_config_enabled MBEDTLS_ECDSA_C From f2f1d40d6d96fd5f7c0973d91b5620d30a6e0913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 21 Aug 2018 09:53:22 +0200 Subject: [PATCH 0884/1100] Improve wording in ChangeLog and documentation --- ChangeLog | 2 +- include/mbedtls/ssl.h | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index a95cc6c59e..3f144a7e99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,7 +5,7 @@ mbed TLS ChangeLog (Sorted per branch, date) Features * Add support for fragmentation of outgoing DTLS handshake messages. This is controlled by the maximum fragment length as set locally or negotiated - with the peer, as well as new per-connection MTU option, set using + with the peer, as well as by a new per-connection MTU option, set using mbedtls_ssl_set_mtu(). Bugfix diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index f563437d13..4471de507b 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1392,9 +1392,11 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * example when a PMTU estimate becomes available from other * sources, such as lower (or higher) protocol layers. * - * \note This only controls the size of the packets we send. - * Client-side, you can request the server to use smaller - * records with \c mbedtls_ssl_conf_max_frag_len(). + * \note This setting only controls the size of the packets we send, + * and does not restrict the size of the datagrams we're + * willing to receive. Client-side, you can request the + * server to use smaller records with \c + * mbedtls_ssl_conf_max_frag_len(). * * \note If both a MTU and a maximum fragment length have been * configured (or negotiated with the peer), the resulting @@ -1402,7 +1404,8 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * on the record content length) is used. * * \note This can only be used to decrease the maximum size - * of datagrams sent. It cannot be used to increase the + * of datagrams (hence records, as records cannot span + * multiple datagrams) sent. It cannot be used to increase the * maximum size of records over the limit set by * #MBEDTLS_SSL_OUT_CONTENT_LEN. * From 000281e07d796576d615243b5883b243f22dc53f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 21 Aug 2018 11:20:58 +0200 Subject: [PATCH 0885/1100] Fix "unused parameter" warning in small configs --- library/ssl_tls.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index da21db237e..faa9467e10 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -7092,6 +7092,11 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) { size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; +#if !defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) && \ + !defined(MBEDTLS_SSL_PROTO_DTLS) + (void) ssl; +#endif + #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); From 661103595e90529a2a3fc0af3648331f02b1af30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 21 Aug 2018 11:55:40 +0200 Subject: [PATCH 0886/1100] Try to further clarify documentation --- include/mbedtls/ssl.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 4471de507b..35f4d320a2 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1388,6 +1388,10 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * the maximum size datagram the DTLS layer will pass to the * \c f_send() callback set using \c mbedtls_ssl_set_bio(). * + * \note The limit on datagram size is converted to a limit on + * record payload by subtracting the current overhead of + * encapsulation and encryption/authentication if any. + * * \note This can be called at any point during the connection, for * example when a PMTU estimate becomes available from other * sources, such as lower (or higher) protocol layers. @@ -1400,14 +1404,12 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * * \note If both a MTU and a maximum fragment length have been * configured (or negotiated with the peer), the resulting - * lower limit (after translating the MTU setting to a limit - * on the record content length) is used. + * lower limit on record payload (see first note) is used. * * \note This can only be used to decrease the maximum size - * of datagrams (hence records, as records cannot span - * multiple datagrams) sent. It cannot be used to increase the - * maximum size of records over the limit set by - * #MBEDTLS_SSL_OUT_CONTENT_LEN. + * of datagrams (hence records, see first note) sent. It + * cannot be used to increase the maximum size of records over + * the limit set by #MBEDTLS_SSL_OUT_CONTENT_LEN. * * \note Values lower than the current record layer expansion will * result in an error when trying to send data. From 2f2d9020cd4eaab26b4159fd87e1220211e35a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 21 Aug 2018 12:17:54 +0200 Subject: [PATCH 0887/1100] Add delay in test to avoid race condition We previously observed random-looking failures from this test. I think they were caused by a race condition where the client tries to reconnect while the server is still closing the connection and has not yet returned to an accepting state. In that case, the server would fail to see and reply to the ClientHello, and the client would have to resend it. I believe logs of failing runs are compatible with this interpretation: - the proxy logs show the new ClientHello and the server's closing Alert are sent the same millisecond. - the client logs show the server's closing Alert is received after the new handshake has been started (discarding message from wrong epoch). The attempted fix is for the client to wait a bit before reconnecting, which should vastly enhance the probability of the server reaching its accepting state before the client tries to reconnect. The value of 1 second is arbitrary but should be more than enough even on loaded machines. The test was run locally 100 times in a row on a slightly loaded machine (an instance of all.sh running in parallel) without any failure after this fix. --- tests/ssl-opt.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 4a6234803e..f811789e6f 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5139,6 +5139,8 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ # Since we don't support reading fragmented ClientHello yet, # up the MTU to 1450 (larger than ClientHello with session ticket, # but still smaller than client's Certificate to ensure fragmentation). +# reco_delay avoids races where the client reconnects before the server has +# resumed listening, which would result in a spurious resend. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5152,7 +5154,7 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=1450 reconnect=1" \ + mtu=1450 reconnect=1 reco_delay=1" \ 0 \ -S "resend" \ -C "resend" \ From f61ff4e1d689388d76abb83f685f48a5c1c1f914 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:17:47 +0100 Subject: [PATCH 0888/1100] ssl_server2: Remove redundant new line --- programs/ssl/ssl_server2.c | 1 - 1 file changed, 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 4378e4f258..8d414364a4 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -2193,7 +2193,6 @@ int main( int argc, char *argv[] ) }; #endif - #if defined(MBEDTLS_SSL_TRUNCATED_HMAC) if( opt.trunc_hmac != DFL_TRUNC_HMAC ) mbedtls_ssl_conf_truncated_hmac( &conf, opt.trunc_hmac ); From ecff20554821ca9962c587fd9f55768f4d9fe787 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:20:00 +0100 Subject: [PATCH 0889/1100] Remove stray bracket if MBEDTLS_ZLIB_SUPPORT is defined --- library/ssl_tls.c | 1 - 1 file changed, 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 0b3fea1777..08ed75dc22 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -7238,7 +7238,6 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_ZLIB_SUPPORT) if( ssl->session_out->compression != MBEDTLS_SSL_COMPRESS_NULL ) return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } #endif switch( mbedtls_cipher_get_cipher_mode( &transform->cipher_ctx_enc ) ) From 1f5a15d86dcc7350c5684b350e33b9d769b7cfd4 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:31:31 +0100 Subject: [PATCH 0890/1100] Check retval of remaining_payload_in_datagram in ssl_write_record() --- library/ssl_tls.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 08ed75dc22..e888812f6e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3383,7 +3383,16 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) { - size_t remaining = ssl_get_remaining_payload_in_datagram( ssl ); + size_t remaining; + ret = ssl_get_remaining_payload_in_datagram( ssl ); + if( ret < 0 ) + { + MBEDTLS_SSL_DEBUG_RET( 1, "ssl_get_remaining_payload_in_datagram", + ret ); + return( ret ); + } + + remaining = (size_t) ret; if( remaining == 0 ) flush = SSL_FORCE_FLUSH; else From 47db877039d61ff28d2c3ce121acaed47e55b437 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:32:13 +0100 Subject: [PATCH 0891/1100] ssl_write_record: Consider setting flush variable only if unset --- library/ssl_tls.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e888812f6e..e4ea5c2bcf 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3381,7 +3381,8 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) } #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + flush == SSL_DONT_FORCE_FLUSH ) { size_t remaining; ret = ssl_get_remaining_payload_in_datagram( ssl ); From 6b13afe1a5295ef092a30dba32d3d8ae7c1d9a07 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Tue, 21 Aug 2018 16:11:13 +0300 Subject: [PATCH 0892/1100] Fix indentation Fix indentation in the test. --- tests/suites/test_suite_nist_kw.function | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/suites/test_suite_nist_kw.function b/tests/suites/test_suite_nist_kw.function index 5d0cd801ae..ae3ef80623 100644 --- a/tests/suites/test_suite_nist_kw.function +++ b/tests/suites/test_suite_nist_kw.function @@ -167,7 +167,7 @@ void nist_kw_plaintext_lengths( int in_len, int out_len, int mode, int res ) if( out_len != 0 ) { ciphertext = mbedtls_calloc( 1, output_len ); - TEST_ASSERT( ciphertext != NULL ); + TEST_ASSERT( ciphertext != NULL ); } memset( plaintext, 0, in_len ); From e678eaa93e37d2833c6a5565a8b320f6a7640249 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 14:57:46 +0100 Subject: [PATCH 0893/1100] Reject invalid CCS records early This commit moves the length and content check for CCS messages to the function mbedtls_ssl_handle_message_type() which is called after a record has been deprotected. Previously, these checks were performed in the function mbedtls_ssl_parse_change_cipher_spec(); however, now that the arrival of out-of-order CCS messages is remembered as a boolean flag, the check also has to happen when this flag is set. Moving the length and content check to mbedtls_ssl_handle_message_type() allows to treat both checks uniformly. --- library/ssl_tls.c | 49 +++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 058173c4aa..4b64fe6239 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4476,6 +4476,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) { case MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC: MBEDTLS_SSL_DEBUG_MSG( 2, ( "Remember CCS message" ) ); + hs->buffering.seen_ccs = 1; break; @@ -4986,23 +4987,38 @@ int mbedtls_ssl_handle_message_type( mbedtls_ssl_context *ssl ) } } -#if defined(MBEDTLS_SSL_PROTO_DTLS) - /* Drop unexpected ChangeCipherSpec messages */ - if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC && - ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && - ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + if( ssl->in_msgtype == MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) { - if( ssl->handshake == NULL ) + if( ssl->in_msglen != 1 ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping ChangeCipherSpec outside handshake" ) ); - return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, len: %d", + ssl->in_msglen ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); } - MBEDTLS_SSL_DEBUG_MSG( 1, ( "received out-of-order ChangeCipherSpec - remember" ) ); - return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); - } + if( ssl->in_msg[0] != 1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid CCS message, content: %02x", + ssl->in_msg[0] ) ); + return( MBEDTLS_ERR_SSL_INVALID_RECORD ); + } + +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && + ssl->state != MBEDTLS_SSL_CLIENT_CHANGE_CIPHER_SPEC && + ssl->state != MBEDTLS_SSL_SERVER_CHANGE_CIPHER_SPEC ) + { + if( ssl->handshake == NULL ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "dropping ChangeCipherSpec outside handshake" ) ); + return( MBEDTLS_ERR_SSL_UNEXPECTED_RECORD ); + } + + MBEDTLS_SSL_DEBUG_MSG( 1, ( "received out-of-order ChangeCipherSpec - remember" ) ); + return( MBEDTLS_ERR_SSL_EARLY_MESSAGE ); + } #endif + } if( ssl->in_msgtype == MBEDTLS_SSL_MSG_ALERT ) { @@ -5718,13 +5734,8 @@ int mbedtls_ssl_parse_change_cipher_spec( mbedtls_ssl_context *ssl ) return( MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE ); } - if( ssl->in_msglen != 1 || ssl->in_msg[0] != 1 ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "bad change cipher spec message" ) ); - mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL, - MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR ); - return( MBEDTLS_ERR_SSL_BAD_HS_CHANGE_CIPHER_SPEC ); - } + /* CCS records are only accepted if they have length 1 and content '1', + * so we don't need to check this here. */ /* * Switch to our negotiated transform and session parameters for inbound From 5bcf2b081f4ba0ec395478611d19e03f0793c7b6 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 14:25:40 +0100 Subject: [PATCH 0894/1100] ssl-opt.sh: Allow spurious resend in DTLS session resumption test When a server replies to a cookieless ClientHello with a HelloVerifyRequest, it is supposed to reset the connection and wait for a subsequent ClientHello which includes the cookie from the HelloVerifyRequest. In testing environments, it might happen that the reset of the server takes longer than for the client to replying to the HelloVerifyRequest with the ClientHello+Cookie. In this case, the ClientHello gets lost and the client will need retransmit. This may happen even if the underlying datagram transport is reliable. This commit removes a guard in the ssl-opt.sh test 'DTLS fragmenting: proxy MTU, resumed handshake' which made the test fail in case the log showed a resend from the client. --- tests/ssl-opt.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 886c44cfac..9b416fbb2c 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5171,6 +5171,9 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ # Since we don't support reading fragmented ClientHello yet, # up the MTU to 1450 (larger than ClientHello with session ticket, # but still smaller than client's Certificate to ensure fragmentation). +# +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5187,7 +5190,6 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ mtu=1450 reconnect=1" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" From a4588d49272ae93a7a4f8cd4907403c0fdc7e7bd Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 30 Jul 2018 16:59:36 +0300 Subject: [PATCH 0895/1100] enable the use of variable size keys in ctr_drbg (was hard-coded 256bit before) --- include/mbedtls/ctr_drbg.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index 3a4b7f3f13..1323043ffb 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -8,8 +8,11 @@ * Recommendation for Random Number Generation Using Deterministic Random * Bit Generators. * - * The Mbed TLS implementation of CTR_DRBG uses AES-256 as the underlying - * block cipher. + * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 + * as the underlying block cipher. + * + * * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers instead. */ /* * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved @@ -45,7 +48,16 @@ #define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read or write error in file. */ #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ +#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_256) #define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher. */ +#else +#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) +#warning Warning: using smaller (128bit) key size for CTR DRBG may reduce the security of some operations. +#define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher. */ +#else +#error for ctr DRBG either MBEDTLS_CTR_DRBG_KEYSIZE_256 (default) or MBEDTLS_CTR_DRBG_KEYSIZE_128 must be set +#endif +#endif #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ #define MBEDTLS_CTR_DRBG_SEEDLEN ( MBEDTLS_CTR_DRBG_KEYSIZE + MBEDTLS_CTR_DRBG_BLOCKSIZE ) /**< The seed length, calculated as (counter + AES key). */ From 604e60d915e3894db546bad2f543366162cacac2 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 30 Jul 2018 17:01:10 +0300 Subject: [PATCH 0896/1100] add default value for CTR DRBG key size --- include/mbedtls/config.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 70820be56f..a79dff83ea 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2018,7 +2018,7 @@ /** * \def MBEDTLS_CTR_DRBG_C * - * Enable the CTR_DRBG AES-256-based random generator. + * Enable the CTR_DRBG AES-256-based(default) or AES-128-based random generator. * * Module: library/ctr_drbg.c * Caller: @@ -2029,6 +2029,16 @@ */ #define MBEDTLS_CTR_DRBG_C +/** + * configure key size for ctr DRBG , either + * MBEDTLS_CTR_DRBG_KEYSIZE_256 (default) + * or + * MBEDTLS_CTR_DRBG_KEYSIZE_128 + * must be set. + */ +#if !defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) +#define MBEDTLS_CTR_DRBG_KEY_SIZE_256 1 +#endif /** * \def MBEDTLS_DEBUG_C * From 2a97b0e7a37b5ccc0e84118552aac7f6e58724c5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 15:47:49 +0100 Subject: [PATCH 0897/1100] Introduce function to return size of buffer needed for reassembly A previous commit introduced the function ssl_prepare_reassembly_buffer() which took a message length and a boolean flag indicating if a reassembly bit map was needed, and attempted to heap-allocate a buffer of sufficient size to hold both the message, its header, and potentially the reassembly bitmap. A subsequent commit is going to introduce a limit on the amount of heap allocations allowed for the purpose of buffering, and this change will need to know the reassembly buffer size before attempting the allocation. To this end, this commit changes ssl_prepare_reassembly_buffer() into ssl_get_reassembly_buffer_size() which solely computes the reassembly buffer size, and performing the heap allocation manually in ssl_buffer_message(). --- library/ssl_tls.c | 43 +++++++++---------------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4b64fe6239..7eb1c89a8f 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3523,28 +3523,10 @@ static int ssl_bitmask_check( unsigned char *mask, size_t len ) } /* msg_len does not include the handshake header */ -static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ - unsigned msg_len, - unsigned add_bitmap, - unsigned char **target ) +static size_t ssl_get_reassembly_buffer_size( unsigned msg_len, + unsigned add_bitmap ) { size_t alloc_len; - unsigned char *buf; - -#if !defined(MBEDTLS_DEBUG_C) - /* The SSL context is used for debugging only. */ - ((void) ssl); -#endif - - MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", - msg_len ) ); - - /* NOTE: That should be checked earlier */ - if( msg_len > MBEDTLS_SSL_IN_CONTENT_LEN ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "handshake message too large" ) ); - return( MBEDTLS_ERR_SSL_FEATURE_UNAVAILABLE ); - } alloc_len = 12; /* Handshake header */ alloc_len += msg_len; /* Content buffer */ @@ -3552,15 +3534,7 @@ static int ssl_prepare_reassembly_buffer( mbedtls_ssl_context *ssl, /* debug */ if( add_bitmap ) alloc_len += msg_len / 8 + ( msg_len % 8 != 0 ); /* Bitmap */ - buf = mbedtls_calloc( 1, alloc_len ); - if( buf == NULL ) - { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc failed (%d bytes)", alloc_len ) ); - return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); - } - - *target = buf; - return( 0 ); + return( alloc_len ); } #endif /* MBEDTLS_SSL_PROTO_DTLS */ @@ -4516,6 +4490,8 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) /* Check if the buffering for this seq nr has already commenced. */ if( !hs_buf->is_valid ) { + size_t reassembly_buf_sz; + hs_buf->is_fragmented = ( ssl_hs_is_proper_fragment( ssl ) == 1 ); @@ -4530,11 +4506,10 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) goto exit; } - ret = ssl_prepare_reassembly_buffer( ssl, msg_len, - hs_buf->is_fragmented, - &hs_buf->data ); - if( ret == MBEDTLS_ERR_SSL_ALLOC_FAILED && - recv_msg_seq_offset > 0 ) + reassembly_buf_sz = ssl_get_reassembly_buffer_size( msg_len, + hs_buf->is_fragmented ); + hs_buf->data = mbedtls_calloc( 1, reassembly_buf_sz ); + if( hs_buf->data == NULL ) { /* If we run out of RAM trying to buffer a *future* * message, simply ignore instead of failing. */ From c9547cc23b118475a4428adf08d19166cf5c7ab7 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 30 Jul 2018 17:03:40 +0300 Subject: [PATCH 0898/1100] add NIST test vector for 128 bit keys (not passing yet). --- tests/suites/test_suite_ctr_drbg.data | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index 666165851e..e0474468bf 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -733,3 +733,6 @@ ctr_drbg_special_behaviours: CTR_DRBG self test ctr_drbg_selftest: +CTR_DRBG NIST Validation (AES-128 use df,True,256,128,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_pr:"d254fcff021e69d229c9cfad85fa486c":"c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068":"":"":"34011656b429008f3563ecb5f2590723" From 04354b079621e7f2e5d0eca26a63b598a7ead5f6 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 30 Jul 2018 17:22:13 +0300 Subject: [PATCH 0899/1100] add ChangeLog entry --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0598cfa1a1..d43ba740fe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -71,6 +71,8 @@ Features independently contributed again by Paul Sokolovsky. * Add support for key wrapping modes based on AES as defined by NIST SP 800-38F algorithms KW and KWP and by RFC 3394 and RFC 5649. + * Add support different keys sizes to CTR_CRBG. Note: using shorter keys + than 256 bit may decrease security. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which From eb73f7ab6fdb5cfcec1f90cee52fa1c490e11b56 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 30 Jul 2018 17:46:49 +0300 Subject: [PATCH 0900/1100] fix trailing white spaces --- include/mbedtls/config.h | 6 +++--- include/mbedtls/ctr_drbg.h | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index a79dff83ea..ad35f7b8ee 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2030,13 +2030,13 @@ #define MBEDTLS_CTR_DRBG_C /** - * configure key size for ctr DRBG , either + * configure key size for ctr DRBG , either * MBEDTLS_CTR_DRBG_KEYSIZE_256 (default) - * or + * or * MBEDTLS_CTR_DRBG_KEYSIZE_128 * must be set. */ -#if !defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) +#if !defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) #define MBEDTLS_CTR_DRBG_KEY_SIZE_256 1 #endif /** diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index 1323043ffb..f0f8163123 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -8,9 +8,9 @@ * Recommendation for Random Number Generation Using Deterministic Random * Bit Generators. * - * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 + * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 * as the underlying block cipher. - * + * * * \warning ARC4 is considered a weak cipher and its use constitutes a * security risk. We recommend considering stronger ciphers instead. */ @@ -48,14 +48,14 @@ #define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read or write error in file. */ #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ -#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_256) +#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_256) #define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher. */ -#else -#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) +#else +#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) #warning Warning: using smaller (128bit) key size for CTR DRBG may reduce the security of some operations. #define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher. */ -#else -#error for ctr DRBG either MBEDTLS_CTR_DRBG_KEYSIZE_256 (default) or MBEDTLS_CTR_DRBG_KEYSIZE_128 must be set +#else +#error for ctr DRBG either MBEDTLS_CTR_DRBG_KEY_SIZE_256 (default) or MBEDTLS_CTR_DRBG_KEY_SIZE_128 must be set #endif #endif #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ From 954f9879e9a28a8ad613229bc14fada9324ae7d4 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Thu, 2 Aug 2018 18:08:26 +0300 Subject: [PATCH 0901/1100] change warning about 128bit keys to print change was made because an actual warning may break CI or customers that compile using warnings as errors. --- include/mbedtls/ctr_drbg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index f0f8163123..66bfc12df5 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -52,7 +52,7 @@ #define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher. */ #else #if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) -#warning Warning: using smaller (128bit) key size for CTR DRBG may reduce the security of some operations. +#pragma message("Warning: using smaller (128bit) key size for CTR DRBG may reduce the security of some operations.") #define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher. */ #else #error for ctr DRBG either MBEDTLS_CTR_DRBG_KEY_SIZE_256 (default) or MBEDTLS_CTR_DRBG_KEY_SIZE_128 must be set From ed7da5979877169ae5a8623f03a137b8aebd033e Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:16:52 +0200 Subject: [PATCH 0902/1100] ctr_drbg: add comments relating the code with the NIST specification --- library/ctr_drbg.c | 63 +++++++++++++++++++++++ tests/suites/test_suite_ctr_drbg.function | 17 +++--- 2 files changed, 74 insertions(+), 6 deletions(-) diff --git a/library/ctr_drbg.c b/library/ctr_drbg.c index d0e5ba862d..fead18f723 100644 --- a/library/ctr_drbg.c +++ b/library/ctr_drbg.c @@ -66,6 +66,18 @@ void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ) * Non-public function wrapped by mbedtls_ctr_drbg_seed(). Necessary to allow * NIST tests to succeed (which require known length fixed entropy) */ +/* CTR_DRBG_Instantiate with derivation function (SP 800-90A §10.2.1.3.2) + * mbedtls_ctr_drbg_seed_entropy_len(ctx, f_entropy, p_entropy, + * custom, len, entropy_len) + * implements + * CTR_DRBG_Instantiate(entropy_input, nonce, personalization_string, + * security_strength) -> initial_working_state + * with inputs + * custom[:len] = nonce || personalization_string + * where entropy_input comes from f_entropy for entropy_len bytes + * and with outputs + * ctx = initial_working_state + */ int mbedtls_ctr_drbg_seed_entropy_len( mbedtls_ctr_drbg_context *ctx, int (*f_entropy)(void *, unsigned char *, size_t), @@ -256,6 +268,14 @@ exit: return( ret ); } +/* CTR_DRBG_Update (SP 800-90A §10.2.1.2) + * ctr_drbg_update_internal(ctx, provided_data) + * implements + * CTR_DRBG_Update(provided_data, Key, V) + * with inputs and outputs + * ctx->aes_ctx = Key + * ctx->counter = V + */ static int ctr_drbg_update_internal( mbedtls_ctr_drbg_context *ctx, const unsigned char data[MBEDTLS_CTR_DRBG_SEEDLEN] ) { @@ -301,6 +321,18 @@ static int ctr_drbg_update_internal( mbedtls_ctr_drbg_context *ctx, return( 0 ); } +/* CTR_DRBG_Instantiate with derivation function (SP 800-90A §10.2.1.3.2) + * mbedtls_ctr_drbg_update(ctx, additional, add_len) + * implements + * CTR_DRBG_Instantiate(entropy_input, nonce, personalization_string, + * security_strength) -> initial_working_state + * with inputs + * ctx->counter = all-bits-0 + * ctx->aes_ctx = context from all-bits-0 key + * additional[:add_len] = entropy_input || nonce || personalization_string + * and with outputs + * ctx = initial_working_state + */ void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t add_len ) { @@ -318,6 +350,18 @@ void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx, } } +/* CTR_DRBG_Reseed with derivation function (SP 800-90A §10.2.1.4.2) + * mbedtls_ctr_drbg_reseed(ctx, additional, len) + * implements + * CTR_DRBG_Reseed(working_state, entropy_input, additional_input) + * -> new_working_state + * with inputs + * ctx contains working_state + * additional[:len] = additional_input + * and entropy_input comes from calling ctx->f_entropy + * and with output + * ctx contains new_working_state + */ int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, const unsigned char *additional, size_t len ) { @@ -371,6 +415,25 @@ int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, return( 0 ); } +/* CTR_DRBG_Generate with derivation function (SP 800-90A §10.2.1.5.2) + * mbedtls_ctr_drbg_random_with_add(ctx, output, output_len, additional, add_len) + * implements + * CTR_DRBG_Reseed(working_state, entropy_input, additional[:add_len]) + * -> working_state_after_reseed + * if required, then + * CTR_DRBG_Generate(working_state_after_reseed, + * requested_number_of_bits, additional_input) + * -> status, returned_bits, new_working_state + * with inputs + * ctx contains working_state + * requested_number_of_bits = 8 * output_len + * additional[:add_len] = additional_input + * and entropy_input comes from calling ctx->f_entropy + * and with outputs + * status = SUCCESS (this function does the reseed internally) + * returned_bits = output[:output_len] + * ctx contains new_working_state + */ int mbedtls_ctr_drbg_random_with_add( void *p_rng, unsigned char *output, size_t output_len, const unsigned char *additional, size_t add_len ) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index c8d2aff4d4..efa5161f70 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -62,12 +62,15 @@ void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, test_offset_idx = 0; - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy->x, add_init->x, add_init->len, 32 ) == 0 ); + /* CTR_DRBG_Instantiate(entropy[:entropy_len/3], nonce, perso, ) + * where nonce||perso = add_init[add_init_len] */ mbedtls_ctr_drbg_set_prediction_resistance( &ctx, MBEDTLS_CTR_DRBG_PR_ON ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1->x, add1->len ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2->x, add2->len ) == 0 ); + /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ + /* Then reseed because of prediction resistance. */ TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); + /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ + /* Then reseed because of prediction resistance. */ exit: mbedtls_ctr_drbg_free( &ctx ); @@ -86,12 +89,14 @@ void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, test_offset_idx = 0; - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy->x, add_init->x, add_init->len, 32 ) == 0 ); + /* CTR_DRBG_Instantiate(entropy[:entropy_len/2], nonce, perso, ) + * where nonce||perso = add_init[add_init_len] */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add1->x, add1->len ) == 0 ); + /* CTR_DRBG_Generate(16 * 8 bits, add1[:add1_len]) -> buf */ TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, add_reseed->x, add_reseed->len ) == 0 ); - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, 16, add2->x, add2->len ) == 0 ); + /* CTR_DRBG_Reseed(entropy[entropy_len/2:entropy_len], add_reseed[:add_reseed_len]) */ TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); + /* CTR_DRBG_Generate(16 * 8 bits, add2[:add2_len]) -> buf */ exit: mbedtls_ctr_drbg_free( &ctx ); From ef0624f7919a7b1ea14aa8a4d09e192a8da226b9 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:23:09 +0200 Subject: [PATCH 0903/1100] ctr_drbg tests: make input sizes flexible The ctr_drbg_validate_xxx test functions had hard-coded sizes for the entropy and the output size. Generalize the sizes. Keep track of the current entropy size. Unhexify the expected output and compare with the actual output, rather than hexifying the actual output and comparing the hex. --- tests/suites/test_suite_ctr_drbg.function | 33 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index efa5161f70..09626ec13d 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -1,11 +1,15 @@ /* BEGIN_HEADER */ +#include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" #include "string.h" -static int test_offset_idx; +static size_t test_offset_idx; +static size_t test_max_idx; static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len ) { const unsigned char *p = (unsigned char *) data; + if( test_offset_idx + len > test_max_idx ) + return( MBEDTLS_ERR_ENTROPY_SOURCE_FAILED ); memcpy( buf, p + test_offset_idx, len ); test_offset_idx += len; return( 0 ); @@ -53,24 +57,32 @@ exit: /* BEGIN_CASE */ void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, data_t * add1, data_t * add2, - data_t * result_str ) + char *result_string ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; + unsigned char result[512]; + size_t entropy_len, add_init_len, add1_len, add2_len, result_len; mbedtls_ctr_drbg_init( &ctx ); + entropy_len = unhexify( entropy, entropy_string ); + result_len = unhexify( result, result_string ); test_offset_idx = 0; + test_max_idx = entropy_len; /* CTR_DRBG_Instantiate(entropy[:entropy_len/3], nonce, perso, ) * where nonce||perso = add_init[add_init_len] */ + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len / 3 ) == 0 ); mbedtls_ctr_drbg_set_prediction_resistance( &ctx, MBEDTLS_CTR_DRBG_PR_ON ); /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ /* Then reseed because of prediction resistance. */ - TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ /* Then reseed because of prediction resistance. */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); + TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); @@ -80,23 +92,31 @@ exit: /* BEGIN_CASE */ void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, data_t * add1, data_t * add_reseed, - data_t * add2, data_t * result_str ) + char *add2_string, char *result_string ) { mbedtls_ctr_drbg_context ctx; unsigned char buf[512]; + unsigned char result[512]; + size_t entropy_len, add_init_len, add1_len, add_reseed_len, add2_len, result_len; mbedtls_ctr_drbg_init( &ctx ); + entropy_len = unhexify( entropy, entropy_string ); + result_len = unhexify( result, result_string ); test_offset_idx = 0; + test_max_idx = entropy_len; /* CTR_DRBG_Instantiate(entropy[:entropy_len/2], nonce, perso, ) * where nonce||perso = add_init[add_init_len] */ + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len / 2 ) == 0 ); /* CTR_DRBG_Generate(16 * 8 bits, add1[:add1_len]) -> buf */ - TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, add_reseed->x, add_reseed->len ) == 0 ); + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); /* CTR_DRBG_Reseed(entropy[entropy_len/2:entropy_len], add_reseed[:add_reseed_len]) */ TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); /* CTR_DRBG_Generate(16 * 8 bits, add2[:add2_len]) -> buf */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); + TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); @@ -111,10 +131,11 @@ void ctr_drbg_entropy_usage( ) unsigned char entropy[1024]; mbedtls_ctr_drbg_context ctx; size_t i, reps = 10; - int last_idx; + size_t last_idx; mbedtls_ctr_drbg_init( &ctx ); test_offset_idx = 0; + test_max_idx = sizeof( entropy ); memset( entropy, 0, sizeof( entropy ) ); memset( out, 0, sizeof( out ) ); memset( add, 0, sizeof( add ) ); From 4c78665ccd510bf885c89bf6efdfe20605b69517 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:24:54 +0200 Subject: [PATCH 0904/1100] ctr_drbg tests: new validation function that doesn't reseed This is one of the test scenarios from the CAVP test vectors. --- tests/suites/test_suite_ctr_drbg.function | 41 +++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 09626ec13d..7f7d4950de 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -55,8 +55,45 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, - data_t * add1, data_t * add2, + +/* BEGIN_CASE */ +void ctr_drbg_validate_no_reseed( char *add_init_string, char *entropy_string, + char *add1_string, char *add2_string, + char *result_string ) +{ + unsigned char entropy[512]; + unsigned char add_init[512]; + unsigned char add1[512]; + unsigned char add2[512]; + mbedtls_ctr_drbg_context ctx; + unsigned char buf[512]; + unsigned char result[512]; + size_t entropy_len, add_init_len, add1_len, add2_len, result_len; + + mbedtls_ctr_drbg_init( &ctx ); + + entropy_len = unhexify( entropy, entropy_string ); + add_init_len = unhexify( add_init, add_init_string ); + add1_len = unhexify( add1, add1_string ); + add2_len = unhexify( add2, add2_string ); + result_len = unhexify( result, result_string ); + + test_offset_idx = 0; + test_max_idx = entropy_len; + /* CTR_DRBG_Instantiate(entropy[:entropy_len], nonce, perso, ) + * where nonce||perso = add_init[add_init_len] */ + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len ) == 0 ); + + /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); + /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); + TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); + +exit: + mbedtls_ctr_drbg_free( &ctx ); +} +/* END_CASE */ char *result_string ) { mbedtls_ctr_drbg_context ctx; From 5ef5a9aeb40a9c2433eb847b7e2c858aab5ce55b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:27:50 +0200 Subject: [PATCH 0905/1100] ctr_drbg tests: unify validate functions Unify the three existing validation functions (with prediction resistance, with manual reseeding between generations, and with no reseeding) into a single function that supports these three scenarios plus a fourth one (reseed before the first generation). The four supported scenarios cover the three scenarios from the current CAVP test vectors (no reseed, reseed before generating, prediction resistance) plus a fourth scenario used by the existing test vectors (reseed after generating). (cherry picked from commit cee9bedee6bc1a8e2b22fa8a31647b62ebb8a0a4) --- tests/suites/test_suite_ctr_drbg.function | 167 ++++++++++++---------- 1 file changed, 94 insertions(+), 73 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 7f7d4950de..714af5598b 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -3,6 +3,15 @@ #include "mbedtls/ctr_drbg.h" #include "string.h" +/* Modes for ctr_drbg_validate */ +enum reseed_mode +{ + RESEED_NEVER, /* never reseed */ + RESEED_FIRST, /* instantiate, reseed, generate, generate */ + RESEED_SECOND, /* instantiate, generate, reseed, generate */ + RESEED_ALWAYS /* prediction resistance, no explicit reseed */ +}; + static size_t test_offset_idx; static size_t test_max_idx; static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len ) @@ -55,74 +64,107 @@ exit: /* END_CASE */ /* BEGIN_CASE */ - -/* BEGIN_CASE */ -void ctr_drbg_validate_no_reseed( char *add_init_string, char *entropy_string, - char *add1_string, char *add2_string, - char *result_string ) +void ctr_drbg_validate( int reseed_mode, char *nonce_string, + int entropy_len_arg, char *entropy_string, + char *reseed_string, + char *add1_string, char *add2_string, + char *result_string ) { - unsigned char entropy[512]; - unsigned char add_init[512]; - unsigned char add1[512]; - unsigned char add2[512]; + unsigned char entropy[144]; + unsigned char nonce[64]; + unsigned char reseed[32]; + unsigned char add1[48]; + unsigned char add2[48]; mbedtls_ctr_drbg_context ctx; - unsigned char buf[512]; - unsigned char result[512]; - size_t entropy_len, add_init_len, add1_len, add2_len, result_len; + unsigned char buf[64]; + unsigned char result[64]; + size_t entropy_chunk_len = (size_t) entropy_len_arg; + size_t nonce_len, reseed_len, add1_len, add2_len, result_len; + test_offset_idx = 0; mbedtls_ctr_drbg_init( &ctx ); - entropy_len = unhexify( entropy, entropy_string ); - add_init_len = unhexify( add_init, add_init_string ); + test_max_idx = unhexify( entropy, entropy_string ); + nonce_len = unhexify( nonce, nonce_string ); + reseed_len = unhexify( reseed, reseed_string ); add1_len = unhexify( add1, add1_string ); add2_len = unhexify( add2, add2_string ); result_len = unhexify( result, result_string ); - test_offset_idx = 0; - test_max_idx = entropy_len; /* CTR_DRBG_Instantiate(entropy[:entropy_len], nonce, perso, ) - * where nonce||perso = add_init[add_init_len] */ - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len ) == 0 ); + * where nonce||perso = nonce[nonce_len] */ + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( + &ctx, + mbedtls_test_entropy_func, entropy, + nonce, nonce_len, + entropy_chunk_len ) == 0 ); + if( reseed_mode == RESEED_ALWAYS ) + mbedtls_ctr_drbg_set_prediction_resistance( + &ctx, + MBEDTLS_CTR_DRBG_PR_ON ); + + if( reseed_mode == RESEED_FIRST ) + { + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], + * reseed[:reseed_len]) */ + TEST_ASSERT( mbedtls_ctr_drbg_reseed( + &ctx, + reseed, reseed_len ) == 0 ); + } /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); + /* Then reseed if prediction resistance is enabled. */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( + &ctx, + buf, result_len, + add1, add1_len ) == 0 ); + + + if( reseed_mode == RESEED_SECOND ) + { + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], + * reseed[:reseed_len]) */ + TEST_ASSERT( mbedtls_ctr_drbg_reseed( + &ctx, + reseed, reseed_len ) == 0 ); + } + /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); + /* Then reseed if prediction resistance is enabled. */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( + &ctx, + buf, result_len, + add2, add2_len ) == 0 ); TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); exit: mbedtls_ctr_drbg_free( &ctx ); } /* END_CASE */ + +/* BEGIN_CASE */ +void ctr_drbg_validate_no_reseed( char *add_init_string, char *entropy_string, + char *add1_string, char *add2_string, + char *result_string ) +{ + test_suite_ctr_drbg_validate( RESEED_NEVER, add_init_string, + strlen( entropy_string ) / 2, entropy_string, + "", add1_string, add2_string, + result_string ); + goto exit; +} +/* END_CASE */ + +/* BEGIN_CASE */ +void ctr_drbg_validate_pr( char *add_init_string, char *entropy_string, + char *add1_string, char *add2_string, char *result_string ) { - mbedtls_ctr_drbg_context ctx; - unsigned char buf[512]; - unsigned char result[512]; - size_t entropy_len, add_init_len, add1_len, add2_len, result_len; - - mbedtls_ctr_drbg_init( &ctx ); - - entropy_len = unhexify( entropy, entropy_string ); - result_len = unhexify( result, result_string ); - - test_offset_idx = 0; - test_max_idx = entropy_len; - /* CTR_DRBG_Instantiate(entropy[:entropy_len/3], nonce, perso, ) - * where nonce||perso = add_init[add_init_len] */ - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len / 3 ) == 0 ); - mbedtls_ctr_drbg_set_prediction_resistance( &ctx, MBEDTLS_CTR_DRBG_PR_ON ); - - /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ - /* Then reseed because of prediction resistance. */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); - /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ - /* Then reseed because of prediction resistance. */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); - TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); - -exit: - mbedtls_ctr_drbg_free( &ctx ); + test_suite_ctr_drbg_validate( RESEED_ALWAYS, add_init_string, + strlen( entropy_string ) / 6, entropy_string, + "", add1_string, add2_string, + result_string ); + goto exit; } /* END_CASE */ @@ -131,32 +173,11 @@ void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, data_t * add1, data_t * add_reseed, char *add2_string, char *result_string ) { - mbedtls_ctr_drbg_context ctx; - unsigned char buf[512]; - unsigned char result[512]; - size_t entropy_len, add_init_len, add1_len, add_reseed_len, add2_len, result_len; - - mbedtls_ctr_drbg_init( &ctx ); - - entropy_len = unhexify( entropy, entropy_string ); - result_len = unhexify( result, result_string ); - - test_offset_idx = 0; - test_max_idx = entropy_len; - /* CTR_DRBG_Instantiate(entropy[:entropy_len/2], nonce, perso, ) - * where nonce||perso = add_init[add_init_len] */ - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy, add_init, add_init_len, entropy_len / 2 ) == 0 ); - - /* CTR_DRBG_Generate(16 * 8 bits, add1[:add1_len]) -> buf */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add1, add1_len ) == 0 ); - /* CTR_DRBG_Reseed(entropy[entropy_len/2:entropy_len], add_reseed[:add_reseed_len]) */ - TEST_ASSERT( hexcmp( buf, result_str->x, 16, result_str->len ) == 0 ); - /* CTR_DRBG_Generate(16 * 8 bits, add2[:add2_len]) -> buf */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, buf, result_len, add2, add2_len ) == 0 ); - TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); - -exit: - mbedtls_ctr_drbg_free( &ctx ); + test_suite_ctr_drbg_validate( RESEED_SECOND, add_init_string, + strlen( entropy_string ) / 4, entropy_string, + add_reseed_string, add1_string, add2_string, + result_string ); + goto exit; } /* END_CASE */ From cfc1de766b6488a13c671af77bfae92853a37b0d Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:31:41 +0200 Subject: [PATCH 0906/1100] ctr_drbg: sample vectors from NIST Test vectors from https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Standards-and-Guidelines/documents/examples/CTR_DRBG_withDF.pdf --- tests/suites/test_suite_ctr_drbg.data | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index e0474468bf..9a2dc9d12e 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -1,3 +1,35 @@ +CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=no +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"8da6cc59e703ced07d58d96e5b6d7836c32599735b734f88c1a73b53c7a6d82e" + +CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=yes +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"81daaf9800c34ff0a104e51d87e36f5b17eb14b9abc5064cadda976ec4f77d34" + +CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=no +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"bb2a0f5f0ca6d30634ba6068eb94aae8701437db7223a1b5afe8771547da3cee" + +CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=yes +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"98a28e3b1ba363c9daf0f6887a1cf52b833d3354d77a7c10837dd63dd2e645f8" + +CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=no +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"259dc78ccfaec4210c30af815e4f75a5662b7da4b41013bdc00302dfb6076492" + +CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=yes +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"386debbbf091bbf0502957b0329938fb836b82e594a2f5fdd5eb28d4e35528f4" + +CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=no +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"601f95384f0d85946301d1eace8f645a825ce38f1e2565b0c0c439448e9ca8ac" + +CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=yes +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"738e99c95af59519aad37ff3d5180986adebab6e95836725097e50a8d1d0bd28" + CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #0 ctr_drbg_validate_pr:"d254fcff021e69d229c9cfad85fa486c":"c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068":"":"":"34011656b429008f3563ecb5f2590723" From e4b77b96398625f29e02c9be38ece27000fb0fcb Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 3 Aug 2018 20:32:38 +0200 Subject: [PATCH 0907/1100] ctr_drbg: add a few test vectors from CAVP 14.3 These test vectors are from https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip --- tests/suites/test_suite_ctr_drbg.data | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index 9a2dc9d12e..687e0077ab 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -750,6 +750,18 @@ ctr_drbg_validate_nopr:"898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984 CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 ctr_drbg_validate_nopr:"50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2":"5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d":"d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e":"ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342":"53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75":"9fb0df053e0345e5640aa97fedef50a6" +CTR_DRBG CAVS 14.3 (AES-256 use df,no reseed,256,128,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"496f25b0f1301b4f501be30380a137eb":"36401940fa8b1fba91a1661f211d78a0b9389a74e5bccfece8d766af1a6d3b14":"":"":"5862eb38bd558dd978a696e6df164782ddd887e7e9a6c9f3f1fbafb78941b535a64912dfd224c6dc7454e5250b3d97165e16260c2faf1cc7735cb75fb4f07e1d" + +CTR_DRBG CAVS 14.3 (AES-256 use df,False,256,128,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_FIRST:"0bf814b411f65ec4866be1abb59d3c32":32:"2d4c9f46b981c6a0b2b5d8c69391e569ff13851437ebc0fc00d616340252fed593500fae4fa32b86033b7a7bac9d37e710dcc67ca266bc8607d665937766d207":"":"":"":"322dd28670e75c0ea638f3cb68d6a9d6e50ddfd052b772a7b1d78263a7b8978b6740c2b65a9550c3a76325866fa97e16d74006bc96f26249b9f0a90d076f08e5" + +CTR_DRBG CAVS 14.3 (AES-256 use df,True,256,128,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_pr:"a2d015f22d854e29de278d910c573de5":"16a1f035388cd8d956026e3b0117cb524dd3eb563f9a7720bb7dcb0fc6fbe743cf140bcd4d7130e7e3ea14046c56442b57c43b34ad219553e7105c18f6e561afe27c9f0be60d82d6cc474efb7fc737b16a6895d9a3a45b971d19b743c1a4ac8f":"":"":"b4e8395bcb7503410a94633f70e9904a5b30e62c35bc6dd2a03496c4a49932e184fbffdbcf1de1c72c50d36dc2ae8f04f40f96aae159c3fb816ca16df99b6c3e" + CTR_DRBG entropy usage ctr_drbg_entropy_usage: From aecf8c941adf001a2aa5382656e77b9845240a0f Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Sun, 5 Aug 2018 23:49:18 +0300 Subject: [PATCH 0908/1100] adding more ctr_drbg test vectors (CAVP 14.3) addtional test vectors add tests for both AES-256 and AES-128 variants of ctr_drbg --- tests/suites/test_suite_ctr_drbg.data | 73 +++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index 687e0077ab..81d17d3187 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -750,18 +750,86 @@ ctr_drbg_validate_nopr:"898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984 CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 ctr_drbg_validate_nopr:"50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2":"5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d":"d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e":"ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342":"53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75":"9fb0df053e0345e5640aa97fedef50a6" -CTR_DRBG CAVS 14.3 (AES-256 use df,no reseed,256,128,0,0) #0 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)a #0 depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 ctr_drbg_validate_no_reseed:"496f25b0f1301b4f501be30380a137eb":"36401940fa8b1fba91a1661f211d78a0b9389a74e5bccfece8d766af1a6d3b14":"":"":"5862eb38bd558dd978a696e6df164782ddd887e7e9a6c9f3f1fbafb78941b535a64912dfd224c6dc7454e5250b3d97165e16260c2faf1cc7735cb75fb4f07e1d" +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)a #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"41c71a24d17d974190982bb7515ce7f5":"8148d65d86513ce7d38923ec2f26b9e7c677dcc8997e325b7372619e753ed944":"55b446046c2d14bdd0cdba4b71873fd4762650695a11507949462da8d964ab6a":"91468f1a097d99ee339462ca916cb4a10f63d53850a4f17f598eac490299b02e":"54603d1a506132bbfa05b153a04f22a1d516cc46323cef15111af221f030f38d6841d4670518b4914a4631af682e7421dffaac986a38e94d92bfa758e2eb101f" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)b #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"bac0fdc0c417aa269bbdea77e928f9f8":"8b0bcb3f932170416739ea42e7dcdc6fa960645bc018820134f714b3c6912b56":"":"":"d9c4fd81f6621a8cf06d612e9a84b80fa13d098dceaf2c083dc81cd80caedd105c7f2789963a167d72f76e81178001fd93de4623c260fe9eebced89f7b4b047a" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)b #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"69ff3310141dbf3ece409ade58745113":"d67439abf1e162e5b25941605a8aeba7d686dec133257f6c220e1c595e954a07":"03e795be8379c481cb32534011ca6bf524dc754978ee5ebee475129ad39eca98":"5685c7330f33004515f8c0ab27f2a1cbe0c8a4a6806d6c8486e0217b43e859f2":"a6d22a4370251c51978fedc7e7753c78179ed1943d2ff1b5a374860106041a304b124d47cfa304c909f7d417843846d52dcc7ebcf5c93afef885c893b40c81ed" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)c #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"aaa46610681167ff8d4d2c51e77911d4":"58a5f79da44b9f23a98a39352972ad16031fe13637bd18d6cb6c9f5269d8e240":"":"":"c1714f89459ce746b151509e5066d4811a06ad06c1e9b13b50c0fc7cdd77ceedc233908ebe1ea8140ec2dc262a43201be667008e081e5476b19b27214111d325" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)c #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"6ca848651d420fb02f9b66f06b377e59":"001ec3b192ddc765553e15742dffeb21cc7d97a4bcf866e3664d8a5ecb4c2463":"99f139ab5ee4f7eed6148e82d79ad5f2b9fa638d574e5db79b650c0e682ca466":"6e7bf0ae28a797ccbb47101f26bfe5a0b1e450c57aedf731272411fa7b6c4ed4":"865b6dd4363c5940d6228cc90ba8f1a21efbaa99b0c7b37361f7fed7e969a97b68d550dd6ad4bbfaf6626779bfb43c66845c2923df9f55307c8bc9f0a3872fa7" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)d #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"1c6a80d82012c39c9f14a808643f08e7":"4ee68b3352b874e1cc29375028851dee9d5dfd88a40664c79e2b724fb11b2808":"":"":"7c58d2a5522a88341fb55facefdb6e24840cae283948d53148a384e13b5407d7712c33434bd3d19448b43270c54860bf3495579057c70bff3084dddff08a091d" + +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)d #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate_no_reseed:"70bdedbc6825c4fe0a9f7e45290ddd51":"481e505bf7a36f9d96690d49154d98d6a247c14a703dbfed7cf1b7a71bee737f":"5b07610c2c946eda2975a26ddadf7d73e3d287e923d9b1a2d2070776a446d8e6":"2792a988ebb2e768eee0d5c263bcd76a675d6f339e5f1ab2ca595e6b3b4d024a":"303448a355fc0a69a130b6ab194997b220970bf680914913da904e92109dee3d9f23871130c407045cf463ce783a5dfafd603a8384790573af385d479acd7206" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)a #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"aad471ef3ef1d203":"890eb067acf7382eff80b0c73bc872c6":"":"":"a5514ed7095f64f3d0d3a5760394ab42062f373a25072a6ea6bcfd8489e94af6cf18659fea22ed1ca0a9e33f718b115ee536b12809c31b72b08ddd8be1910fa3" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)a #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"026c768fd577b92a":"b408cefb5bc7157d3f26cb95a8b1d7ac":"5737ef81dee365b6dadb3feebf5d1084":"3368a516b3431a3daaa60dc8743c8297":"4e909ebb24147a0004063a5e47ee044fead610d62324bd0f963f756fb91361e8b87e3a76a398143fe88130fe1b547b661a6480c711b739f18a9df3ae51d41bc9" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)b #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"259195269ec11af6":"2d2ab564202918c4ef5b102dda385a18":"":"":"2c5cd79ed87622a91b8654c8903d852242cd49cb5df2d4b4150584301c59f01fd95a702ac157c84cc15f42c8211335672d8ce1291ef9b1def78149a04fa2697c" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)b #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"b25716931b6e3cc1":"adf5711f93d8c8997349429ccaedae0a":"abf8cd66dd39758b01d7dbb99ab17dc3":"4be0f6b2755377c6e881fbb261b56beb":"d420604dee6467492db5957c86207a708fd242ed67942aed299425335c83b41437418582f41bc7fc0ef0d6927f34d83acd67c70133644fd711dd5a65731f9f02" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)c #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"38aa5590f6bfaa4b":"2e1724db482232a3e61f92c1c266faf8":"":"":"4438b48a45fb0141e31f0a9624dfe6fcc2f9edc075c0a52bc5fc46d85a966c853feee6af913234b3f9a679f667898dc15a24aaed89f035bfa5da516e435bbad1" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)c #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"111d8612a0f04e2a":"9bfaefb698b1b5fcc62db2c16498c33a":"aedbe02847b1b08b6a673bdf25b0224c":"9901ead62ce56573b0f71cd020fe3469":"dff8bf2aec531f8532607e738bd79f91d6085cb19568b7b0240ce6a6b371a282bafcdba02137df990535d9ebf0ba77117751626b2678aca7be4decfd6b9d4b38" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)d #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"e78c5571c5f926f9":"6bdf5332bdce4655d45c2cfea897b000":"":"":"e0715688765a3285e7b7db555f277924e7171f7541bf26122b13dbaaa39f9e2b0345c659583ff8c9cfd888f1abd2f3b36a7c9d47c687b01c819a9f9888542e0f" + +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)d #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_no_reseed:"7ee2614ead3c128e":"8b80936e69c67edb771c28f9b9452124":"fc35cba97a1e211bc420e8af53f8e13c":"fba438aaa75a3cd4cd0cce399bfec74a":"6721cc1ada5ebc1713f74c759000765652eeb5f3f9c24fb9341b36a369cec1d27ea80d6b73b56047af07138c5a43c99a87753115c471b8587ea65fa2065e3ce0" + CTR_DRBG CAVS 14.3 (AES-256 use df,False,256,128,0,0) #0 depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 ctr_drbg_validate:RESEED_FIRST:"0bf814b411f65ec4866be1abb59d3c32":32:"2d4c9f46b981c6a0b2b5d8c69391e569ff13851437ebc0fc00d616340252fed593500fae4fa32b86033b7a7bac9d37e710dcc67ca266bc8607d665937766d207":"":"":"":"322dd28670e75c0ea638f3cb68d6a9d6e50ddfd052b772a7b1d78263a7b8978b6740c2b65a9550c3a76325866fa97e16d74006bc96f26249b9f0a90d076f08e5" +CTR_DRBG CAVS 14.3 (AES-128 use df,False,128,64,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +ctr_drbg_validate:RESEED_FIRST:"5209e5b4ed82a234":16:"0f65da13dca407999d4773c2b4a11d851dea0a12c52bf64339dd291c80d8ca89":"":"":"":"2859cc468a76b08661ffd23b28547ffd0997ad526a0f51261b99ed3a37bd407bf418dbe6c6c3e26ed0ddefcb7474d899bd99f3655427519fc5b4057bcaf306d4" + CTR_DRBG CAVS 14.3 (AES-256 use df,True,256,128,0,0) #0 depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 ctr_drbg_validate_pr:"a2d015f22d854e29de278d910c573de5":"16a1f035388cd8d956026e3b0117cb524dd3eb563f9a7720bb7dcb0fc6fbe743cf140bcd4d7130e7e3ea14046c56442b57c43b34ad219553e7105c18f6e561afe27c9f0be60d82d6cc474efb7fc737b16a6895d9a3a45b971d19b743c1a4ac8f":"":"":"b4e8395bcb7503410a94633f70e9904a5b30e62c35bc6dd2a03496c4a49932e184fbffdbcf1de1c72c50d36dc2ae8f04f40f96aae159c3fb816ca16df99b6c3e" +CTR_DRBG CAVS 14.3 (AES-128 use df,True,128,64,0,0) #0 +depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +ctr_drbg_validate_pr:"d4f1f4ae08bcb3e1":"5d4041942bcf68864a4997d8171f1f9fef55a769b7eaf03fe082029bb32a2b9d8239e865c0a42e14b964b9c09de85a20":"":"":"4155320287eedcf7d484c2c2a1e2eb64b9c9ce77c87202a1ae1616c7a5cfd1c687c7a0bfcc85bda48fdd4629fd330c22d0a76076f88fc7cd04037ee06b7af602" + CTR_DRBG entropy usage ctr_drbg_entropy_usage: @@ -777,6 +845,3 @@ ctr_drbg_special_behaviours: CTR_DRBG self test ctr_drbg_selftest: -CTR_DRBG NIST Validation (AES-128 use df,True,256,128,0,0) #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 -ctr_drbg_validate_pr:"d254fcff021e69d229c9cfad85fa486c":"c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068":"":"":"34011656b429008f3563ecb5f2590723" From e0b150f96bfa4430d5d3b960f9d40153dfa13dfb Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 15:51:03 +0100 Subject: [PATCH 0909/1100] Allow limiting the total amount of heap allocations for buffering This commit introduces a compile time constant MBEDTLS_SSL_DTLS_MAX_BUFFERING to mbedtls/config.h which allows the user to control the cumulative size of all heap buffer allocated for the purpose of reassembling and buffering handshake messages. It is put to use by introducing a new field `total_bytes_buffered` to the buffering substructure of `mbedtls_ssl_handshake_params` that keeps track of the total size of heap allocated buffers for the purpose of reassembly and buffering at any time. It is increased whenever a handshake message is buffered or prepared for reassembly, and decreased when a buffered or fully reassembled message is copied into the input buffer and passed to the handshake logic layer. This commit does not yet include future epoch record buffering into account; this will be done in a subsequent commit. Also, it is now conceivable that the reassembly of the next expected handshake message fails because too much buffering space has already been used up for future messages. This case currently leads to an error, but instead, the stack should get rid of buffered messages to be able to buffer the next one. This will need to be implemented in one of the next commits. --- include/mbedtls/config.h | 8 ++++++ include/mbedtls/ssl.h | 4 +++ include/mbedtls/ssl_internal.h | 4 +++ library/ssl_tls.c | 46 ++++++++++++++++++++++++++++++---- 4 files changed, 57 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 70820be56f..70dd4be2b4 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3010,6 +3010,14 @@ */ //#define MBEDTLS_SSL_OUT_CONTENT_LEN 16384 +/** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING + * + * Maximum number of heap-allocated bytes for the purpose of + * DTLS handshake message reassembly and future message buffering. + * + */ +//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING ( 2 * 16384 ) + //#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ //#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ //#define MBEDTLS_SSL_COOKIE_TIMEOUT 60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number of cookies issued */ diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 3a8dd21e99..29c139ed16 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -243,6 +243,10 @@ #define MBEDTLS_SSL_OUT_CONTENT_LEN MBEDTLS_SSL_MAX_CONTENT_LEN #endif +#if !defined(MBEDTLS_SSL_DTLS_MAX_BUFFERING) +#define MBEDTLS_SSL_DTLS_MAX_BUFFERING ( 2 * MBEDTLS_SSL_IN_CONTENT_LEN ) +#endif + /* \} name SECTION: Module settings */ /* diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index bfc3a5a424..2c0684f3dc 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -311,6 +311,9 @@ struct mbedtls_ssl_handshake_params struct { + size_t total_bytes_buffered; /*!< Cumulative size of heap allocated + * buffers used for message buffering. */ + uint8_t seen_ccs; /*!< Indicates if a CCS message has * been seen in the current flight. */ @@ -320,6 +323,7 @@ struct mbedtls_ssl_handshake_params uint8_t is_fragmented : 1; uint8_t is_complete : 1; unsigned char *data; + size_t data_len; } hs[MBEDTLS_SSL_MAX_BUFFERED_HS]; struct diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 7eb1c89a8f..f4ed28a669 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3665,7 +3665,10 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) /* Free first entry */ hs_buf = &hs->buffering.hs[0]; if( hs_buf->is_valid ) + { + hs->buffering.total_bytes_buffered -= hs_buf->data_len; mbedtls_free( hs_buf->data ); + } /* Shift all other entries */ for( offset = 0; offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; @@ -4506,18 +4509,49 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) goto exit; } + /* Check if we have enough space to buffer the message. */ + if( hs->buffering.total_bytes_buffered > + MBEDTLS_SSL_DTLS_MAX_BUFFERING ) + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } + reassembly_buf_sz = ssl_get_reassembly_buffer_size( msg_len, hs_buf->is_fragmented ); + + if( reassembly_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + if( recv_msg_seq_offset > 0 ) + { + /* If we can't buffer a future message because + * of space limitations -- ignore. */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- ignore\n", + (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, + (unsigned) hs->buffering.total_bytes_buffered ) ); + goto exit; + } + + /* TODO: Remove future messages in the attempt to make + * space for the current one. */ + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", + (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, + (unsigned) hs->buffering.total_bytes_buffered ) ); + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; + goto exit; + } + + MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", + msg_len ) ); + hs_buf->data = mbedtls_calloc( 1, reassembly_buf_sz ); if( hs_buf->data == NULL ) { - /* If we run out of RAM trying to buffer a *future* - * message, simply ignore instead of failing. */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Not enough RAM available to buffer future message - ignore" ) ); + ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; goto exit; } - else if( ret != 0 ) - return( ret ); + hs_buf->data_len = reassembly_buf_sz; /* Prepare final header: copy msg_type, length and message_seq, * then add standardised fragment_offset and fragment_length */ @@ -4526,6 +4560,8 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) memcpy( hs_buf->data + 9, hs_buf->data + 1, 3 ); hs_buf->is_valid = 1; + + hs->buffering.total_bytes_buffered += reassembly_buf_sz; } else { From 96a6c69d0c41df4b09fc43f05a83c556c5f96fa7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 15:56:03 +0100 Subject: [PATCH 0910/1100] Correct bounds check in ssl_buffer_message() The previous bounds check omitted the DTLS handshake header. --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f4ed28a669..17010b5943 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4503,7 +4503,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) * This is an implementation-specific limitation * and not one from the standard, hence it is not * checked in ssl_check_hs_header(). */ - if( msg_len > MBEDTLS_SSL_IN_CONTENT_LEN ) + if( msg_len + 12 > MBEDTLS_SSL_IN_CONTENT_LEN ) { /* Ignore message */ goto exit; From e605b196312edf5e20538386d7686d47eec13ec1 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 15:59:07 +0100 Subject: [PATCH 0911/1100] Add function to free a particular buffering slot This commit adds a static function ssl_buffering_free_slot() which allows to free a particular structure used to buffer and/or reassembly some handshake message. --- library/ssl_tls.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 17010b5943..5ab172d65b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -170,6 +170,9 @@ static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl static void ssl_buffering_free( mbedtls_ssl_context *ssl ); +static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, + uint8_t slot ); + /* * Double the retransmit timeout value, within the allowed range, * returning -1 if the maximum value has already been reached. @@ -3663,15 +3666,11 @@ void mbedtls_ssl_update_handshake_status( mbedtls_ssl_context *ssl ) */ /* Free first entry */ - hs_buf = &hs->buffering.hs[0]; - if( hs_buf->is_valid ) - { - hs->buffering.total_bytes_buffered -= hs_buf->data_len; - mbedtls_free( hs_buf->data ); - } + ssl_buffering_free_slot( ssl, 0 ); /* Shift all other entries */ - for( offset = 0; offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; + for( offset = 0, hs_buf = &hs->buffering.hs[0]; + offset + 1 < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++, hs_buf++ ) { *hs_buf = *(hs_buf + 1); @@ -8564,13 +8563,19 @@ static void ssl_buffering_free( mbedtls_ssl_context *ssl ) return; for( offset = 0; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) + ssl_buffering_free_slot( ssl, offset ); +} + +static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, + uint8_t slot ) +{ + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + mbedtls_ssl_hs_buffer * const hs_buf = &hs->buffering.hs[slot]; + if( hs_buf->is_valid == 1 ) { - mbedtls_ssl_hs_buffer *hs_buf = &hs->buffering.hs[offset]; - if( hs_buf->is_valid == 1 ) - { - mbedtls_free( hs_buf->data ); - memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); - } + hs->buffering.total_bytes_buffered -= hs_buf->data_len; + mbedtls_free( hs_buf->data ); + memset( hs_buf, 0, sizeof( mbedtls_ssl_hs_buffer ) ); } } From 55e9e2aa6b60dabaa5d461742cb73b1fff74324c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 16:07:55 +0100 Subject: [PATCH 0912/1100] Free future buffers if next handshake messages can't be reassembled If the next expected handshake message can't be reassembled because buffered future messages have already used up too much of the available space for buffering, free those future message buffers in order to make space for the reassembly, starting with the handshake message that's farthest in the future. --- library/ssl_tls.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5ab172d65b..d0d5d72c57 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4522,6 +4522,8 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) if( reassembly_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - hs->buffering.total_bytes_buffered ) ) { + int offset; + if( recv_msg_seq_offset > 0 ) { /* If we can't buffer a future message because @@ -4532,13 +4534,34 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) goto exit; } - /* TODO: Remove future messages in the attempt to make - * space for the current one. */ - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", + /* We don't have enough space to buffer the next expected + * handshake message. Remove buffers used for future msgs + * to gain space, starting with the most distant one. */ + for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; + offset >= 0; offset-- ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", + offset ) ); + + ssl_buffering_free_slot( ssl, offset ); + + /* Check if we have enough space available now. */ + if( reassembly_buf_sz <= + ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + break; + } + } + + if( offset == -1 ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, (unsigned) hs->buffering.total_bytes_buffered ) ); - ret = MBEDTLS_ERR_SSL_ALLOC_FAILED; - goto exit; + ret = MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; + goto exit; + } } MBEDTLS_SSL_DEBUG_MSG( 2, ( "initialize reassembly, total length = %d", From 101bcba26fda95e166f0692ba5bbc120b647f40e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 16:39:51 +0100 Subject: [PATCH 0913/1100] UDP proxy: Allow more than one message to be delayed Previously, the UDP proxy could only remember one delayed message for future transmission; if two messages were delayed in succession, without another one being normally forwarded in between, the message that got delayed first would be dropped. This commit enhances the UDP proxy to allow to delay an arbitrary (compile-time fixed) number of messages in succession. --- programs/test/udp_proxy.c | 45 ++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 77eaa5d2f4..0428d28884 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -556,11 +556,37 @@ int send_packet( const packet *p, const char *why ) return( 0 ); } -static packet prev; +#define MAX_DELAYED_MSG 5 +static size_t prev_len; +static packet prev[MAX_DELAYED_MSG]; void clear_pending( void ) { memset( &prev, 0, sizeof( packet ) ); + prev_len = 0; +} + +void delay_packet( packet *delay ) +{ + if( prev_len == MAX_DELAYED_MSG ) + return; + + memcpy( &prev[prev_len++], delay, sizeof( packet ) ); +} + +int send_delayed() +{ + uint8_t offset; + int ret; + for( offset = 0; offset < prev_len; offset++ ) + { + ret = send_packet( &prev[offset], "delayed" ); + if( ret != 0 ) + return( ret ); + } + + clear_pending(); + return( 0 ); } /* @@ -647,7 +673,7 @@ int handle_message( const char *way, if( strcmp( delay_list[ delay_idx ], cur.type ) == 0 ) { /* Delay message */ - memcpy( &prev, &cur, sizeof( packet ) ); + delay_packet( &cur ); /* Remove entry from list */ mbedtls_free( delay_list[delay_idx] ); @@ -676,12 +702,11 @@ int handle_message( const char *way, strcmp( cur.type, "ApplicationData" ) != 0 && ! ( opt.protect_hvr && strcmp( cur.type, "HelloVerifyRequest" ) == 0 ) && - prev.dst == NULL && cur.len != (size_t) opt.protect_len && dropped[id] < DROP_MAX && rand() % opt.delay == 0 ) ) { - memcpy( &prev, &cur, sizeof( packet ) ); + delay_packet( &cur ); } else { @@ -689,14 +714,10 @@ int handle_message( const char *way, if( ( ret = send_packet( &cur, "forwarded" ) ) != 0 ) return( ret ); - /* send previously delayed message if any */ - if( prev.dst != NULL ) - { - ret = send_packet( &prev, "delayed" ); - memset( &prev, 0, sizeof( packet ) ); - if( ret != 0 ) - return( ret ); - } + /* send previously delayed messages if any */ + ret = send_delayed(); + if( ret != 0 ) + return( ret ); } return( 0 ); From e35670528bc0d93021bba1d22cff63a03ca9ec1a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 16:50:43 +0100 Subject: [PATCH 0914/1100] ssl-opt.sh: Add test for reassembly after reordering --- tests/ssl-opt.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 4b32314c53..8d4ffde77e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5757,6 +5757,20 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ -S "Inject buffered CCS message" \ -S "Remember CCS message" +run_test "DTLS reordering: Buffer out-of-order handshake message on client before reassembling next" \ + -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -c "Buffering HS message" \ + -c "Next handshake message has been buffered - load"\ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load"\ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" + run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ -p "$P_PXY delay_cli=Certificate" \ "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2" \ From e1801399a9a3513ed9189ba9399daca26338aac3 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 16:51:05 +0100 Subject: [PATCH 0915/1100] Add another debug message to ssl_buffer_message() Report if there's not enough buffering space available to reassemble the next expected incoming message. --- library/ssl_tls.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index d0d5d72c57..bb4c0000cd 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4533,6 +4533,12 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) (unsigned) hs->buffering.total_bytes_buffered ) ); goto exit; } + else + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- attempt to make space by freeing buffered future messages\n", + (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, + (unsigned) hs->buffering.total_bytes_buffered ) ); + } /* We don't have enough space to buffer the next expected * handshake message. Remove buffers used for future msgs From 175cb8fc699a1d755ba81976e53b91a131be445e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 17:00:10 +0100 Subject: [PATCH 0916/1100] ssl-opt.sh: Allow resend in DTLS session resumption tests, cont'd This commit continues commit 47db877 by removing resend guards in the ssl-opt.sh tests 'DTLS fragmenting: proxy MTU, XXX' which sometimes made the tests fail in case the log showed a resend from the client. See 47db877 for more information. --- tests/ssl-opt.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9b416fbb2c..ab53cc46c0 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5194,6 +5194,8 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ -c "found fragmented DTLS handshake message" \ -C "error" +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5217,11 +5219,12 @@ run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5246,11 +5249,12 @@ run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5275,11 +5279,12 @@ run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5305,11 +5310,12 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" +# A resend on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "resend"' below. not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5334,7 +5340,6 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" From a02b0b462d2508e70e0a1f870597480e68edb7fd Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 17:20:27 +0100 Subject: [PATCH 0917/1100] Add function making space for current message reassembly This commit adds a static function ssl_buffer_make_space() which takes a buffer size as an argument and attempts to free as many future message bufffers as necessary to ensure that the desired amount of buffering space is available without violating the total buffering limit set by MBEDTLS_SSL_DTLS_MAX_BUFFERING. --- library/ssl_tls.c | 53 +++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index bb4c0000cd..a1cf5749d0 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4438,6 +4438,35 @@ exit: return( ret ); } +static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, + size_t desired ) +{ + int offset; + mbedtls_ssl_handshake_params * const hs = ssl->handshake; + + + /* We don't have enough space to buffer the next expected + * handshake message. Remove buffers used for future msgs + * to gain space, starting with the most distant one. */ + for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; + offset >= 0; offset-- ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", + offset ) ); + + ssl_buffering_free_slot( ssl, offset ); + + /* Check if we have enough space available now. */ + if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + return( 0 ); + } + } + + return( -1 ); +} + static int ssl_buffer_message( mbedtls_ssl_context *ssl ) { int ret = 0; @@ -4522,8 +4551,6 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) if( reassembly_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - hs->buffering.total_bytes_buffered ) ) { - int offset; - if( recv_msg_seq_offset > 0 ) { /* If we can't buffer a future message because @@ -4540,27 +4567,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) (unsigned) hs->buffering.total_bytes_buffered ) ); } - /* We don't have enough space to buffer the next expected - * handshake message. Remove buffers used for future msgs - * to gain space, starting with the most distant one. */ - for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; - offset >= 0; offset-- ) - { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", - offset ) ); - - ssl_buffering_free_slot( ssl, offset ); - - /* Check if we have enough space available now. */ - if( reassembly_buf_sz <= - ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - - hs->buffering.total_bytes_buffered ) ) - { - break; - } - } - - if( offset == -1 ) + if( ssl_buffer_make_space( ssl, reassembly_buf_sz ) != 0 ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, From 01315ea03a142f232d218dfd14a07e963bf95a0c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 17:22:17 +0100 Subject: [PATCH 0918/1100] Account for future epoch records in the total buffering size Previous commits introduced the field `total_bytes_buffered` which is supposed to keep track of the cumulative size of all heap allocated buffers used for the purpose of reassembly and/or buffering of future messages. However, the buffering of future epoch records were not reflected in this field so far. This commit changes this, adding the length of a future epoch record to `total_bytes_buffered` when it's buffered, and subtracting it when it's freed. --- library/ssl_tls.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index a1cf5749d0..72be09716e 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4438,12 +4438,22 @@ exit: return( ret ); } +static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ); static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, size_t desired ) { int offset; mbedtls_ssl_handshake_params * const hs = ssl->handshake; + /* Get rid of future records epoch first, if such exist. */ + ssl_free_buffered_record( ssl ); + + /* Check if we have enough space available now. */ + if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + return( 0 ); + } /* We don't have enough space to buffer the next expected * handshake message. Remove buffers used for future msgs @@ -4760,8 +4770,14 @@ static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ) if( hs == NULL ) return; - mbedtls_free( hs->buffering.future_record.data ); - hs->buffering.future_record.data = NULL; + if( hs->buffering.future_record.data != NULL ) + { + hs->buffering.total_bytes_buffered -= + hs->buffering.future_record.len; + + mbedtls_free( hs->buffering.future_record.data ); + hs->buffering.future_record.data = NULL; + } } static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) @@ -4822,6 +4838,7 @@ static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) { mbedtls_ssl_handshake_params * const hs = ssl->handshake; size_t const rec_hdr_len = 13; + size_t const total_buf_sz = rec_hdr_len + ssl->in_msglen; /* Don't buffer future records outside handshakes. */ if( hs == NULL ) @@ -4836,6 +4853,16 @@ static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) if( hs->buffering.future_record.data != NULL ) return( 0 ); + /* Don't buffer record if there's not enough buffering space remaining. */ + if( total_buf_sz > ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - + hs->buffering.total_bytes_buffered ) ) + { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffering of future epoch record of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- ignore\n", + (unsigned) total_buf_sz, MBEDTLS_SSL_DTLS_MAX_BUFFERING, + (unsigned) hs->buffering.total_bytes_buffered ) ); + return( 0 ); + } + /* Buffer record */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "Buffer record from epoch %u", ssl->in_epoch + 1 ) ); @@ -4845,7 +4872,7 @@ static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) /* ssl_parse_record_header() only considers records * of the next epoch as candidates for buffering. */ hs->buffering.future_record.epoch = ssl->in_epoch + 1; - hs->buffering.future_record.len = rec_hdr_len + ssl->in_msglen; + hs->buffering.future_record.len = total_buf_sz; hs->buffering.future_record.data = mbedtls_calloc( 1, hs->buffering.future_record.len ); @@ -4856,9 +4883,9 @@ static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ) return( 0 ); } - memcpy( hs->buffering.future_record.data, - ssl->in_hdr, rec_hdr_len + ssl->in_msglen ); + memcpy( hs->buffering.future_record.data, ssl->in_hdr, total_buf_sz ); + hs->buffering.total_bytes_buffered += total_buf_sz; return( 0 ); } From 1d7399351e8e3685c5811d0008f9e80d0aac7ad7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:55:22 +0100 Subject: [PATCH 0919/1100] ssl-opt.sh: Add DTLS session resumption tests Fixes #1969. --- tests/ssl-opt.sh | 160 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 937a27b763..92b7686eda 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -1364,6 +1364,71 @@ run_test "Session resume using tickets: openssl client" \ -s "session successfully restored from ticket" \ -s "a session has been resumed" +# Tests for Session Tickets with DTLS + +run_test "Session resume using tickets, DTLS: basic" \ + "$P_SRV debug_level=3 dtls=1 tickets=1" \ + "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1" \ + 0 \ + -c "client hello, adding session ticket extension" \ + -s "found session ticket extension" \ + -s "server hello, adding session ticket extension" \ + -c "found session_ticket extension" \ + -c "parse new session ticket" \ + -S "session successfully restored from cache" \ + -s "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using tickets, DTLS: cache disabled" \ + "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0" \ + "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1" \ + 0 \ + -c "client hello, adding session ticket extension" \ + -s "found session ticket extension" \ + -s "server hello, adding session ticket extension" \ + -c "found session_ticket extension" \ + -c "parse new session ticket" \ + -S "session successfully restored from cache" \ + -s "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using tickets, DTLS: timeout" \ + "$P_SRV debug_level=3 dtls=1 tickets=1 cache_max=0 ticket_timeout=1" \ + "$P_CLI debug_level=3 dtls=1 tickets=1 reconnect=1 reco_delay=2" \ + 0 \ + -c "client hello, adding session ticket extension" \ + -s "found session ticket extension" \ + -s "server hello, adding session ticket extension" \ + -c "found session_ticket extension" \ + -c "parse new session ticket" \ + -S "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -S "a session has been resumed" \ + -C "a session has been resumed" + +run_test "Session resume using tickets, DTLS: openssl server" \ + "$O_SRV -dtls1" \ + "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \ + 0 \ + -c "client hello, adding session ticket extension" \ + -c "found session_ticket extension" \ + -c "parse new session ticket" \ + -c "a session has been resumed" + +run_test "Session resume using tickets, DTLS: openssl client" \ + "$P_SRV dtls=1 debug_level=3 tickets=1" \ + "( $O_CLI -dtls1 -sess_out $SESSION; \ + $O_CLI -dtls1 -sess_in $SESSION; \ + rm -f $SESSION )" \ + 0 \ + -s "found session ticket extension" \ + -s "server hello, adding session ticket extension" \ + -S "session successfully restored from cache" \ + -s "session successfully restored from ticket" \ + -s "a session has been resumed" + # Tests for Session Resume based on session-ID and cache run_test "Session resume using cache: tickets enabled on client" \ @@ -1459,6 +1524,101 @@ run_test "Session resume using cache: openssl server" \ -C "parse new session ticket" \ -c "a session has been resumed" +# Tests for Session Resume based on session-ID and cache, DTLS + +run_test "Session resume using cache, DTLS: tickets enabled on client" \ + "$P_SRV dtls=1 debug_level=3 tickets=0" \ + "$P_CLI dtls=1 debug_level=3 tickets=1 reconnect=1" \ + 0 \ + -c "client hello, adding session ticket extension" \ + -s "found session ticket extension" \ + -S "server hello, adding session ticket extension" \ + -C "found session_ticket extension" \ + -C "parse new session ticket" \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using cache, DTLS: tickets enabled on server" \ + "$P_SRV dtls=1 debug_level=3 tickets=1" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \ + 0 \ + -C "client hello, adding session ticket extension" \ + -S "found session ticket extension" \ + -S "server hello, adding session ticket extension" \ + -C "found session_ticket extension" \ + -C "parse new session ticket" \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using cache, DTLS: cache_max=0" \ + "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=0" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \ + 0 \ + -S "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -S "a session has been resumed" \ + -C "a session has been resumed" + +run_test "Session resume using cache, DTLS: cache_max=1" \ + "$P_SRV dtls=1 debug_level=3 tickets=0 cache_max=1" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \ + 0 \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using cache, DTLS: timeout > delay" \ + "$P_SRV dtls=1 debug_level=3 tickets=0" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=0" \ + 0 \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using cache, DTLS: timeout < delay" \ + "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=1" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=2" \ + 0 \ + -S "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -S "a session has been resumed" \ + -C "a session has been resumed" + +run_test "Session resume using cache, DTLS: no timeout" \ + "$P_SRV dtls=1 debug_level=3 tickets=0 cache_timeout=0" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1 reco_delay=2" \ + 0 \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" \ + -c "a session has been resumed" + +run_test "Session resume using cache, DTLS: openssl client" \ + "$P_SRV dtls=1 debug_level=3 tickets=0" \ + "( $O_CLI -dtls1 -sess_out $SESSION; \ + $O_CLI -dtls1 -sess_in $SESSION; \ + rm -f $SESSION )" \ + 0 \ + -s "found session ticket extension" \ + -S "server hello, adding session ticket extension" \ + -s "session successfully restored from cache" \ + -S "session successfully restored from ticket" \ + -s "a session has been resumed" + +run_test "Session resume using cache, DTLS: openssl server" \ + "$O_SRV -dtls1" \ + "$P_CLI dtls=1 debug_level=3 tickets=0 reconnect=1" \ + 0 \ + -C "found session_ticket extension" \ + -C "parse new session ticket" \ + -c "a session has been resumed" + # Tests for Max Fragment Length extension if [ "$MAX_CONTENT_LEN" -lt "4096" ]; then From aa71500173ada7bb0c2d7f533d461f29a752932a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 13:55:31 +0100 Subject: [PATCH 0920/1100] Fix bug in SSL ticket implementation removing keys of age < 1s Fixes #1968. --- library/ssl_ticket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_ticket.c b/library/ssl_ticket.c index a2b304869e..985b7cd507 100644 --- a/library/ssl_ticket.c +++ b/library/ssl_ticket.c @@ -97,7 +97,7 @@ static int ssl_ticket_update_keys( mbedtls_ssl_ticket_context *ctx ) uint32_t current_time = (uint32_t) mbedtls_time( NULL ); uint32_t key_time = ctx->keys[ctx->active].generation_time; - if( current_time > key_time && + if( current_time >= key_time && current_time - key_time < ctx->ticket_lifetime ) { return( 0 ); From 5e863e02ac202341beceb33942fa6f63ec37d56d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 21 Aug 2018 17:51:53 +0100 Subject: [PATCH 0921/1100] Adapt ChangeLog --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0598cfa1a1..fb1e91810a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,8 @@ Bugfix * Replace printf with mbedtls_printf in aria. Found by TrinityTonic in #1908. * Fix potential use-after-free in mbedtls_ssl_get_max_frag_len() and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. + * Fix a bug in the update function for SSL ticket keys which previously + invalidated keys of a lifetime of less than a 1s. Fixes #1968. Changes * Copy headers preserving timestamps when doing a "make install". @@ -21,6 +23,7 @@ Changes Drozd. Fixes #1215 raised by randombit. * Improve compatibility with some alternative CCM implementations by using CCM test vectors from RAM. + * Add tests for session resumption in DTLS. = mbed TLS 2.12.0 branch released 2018-07-25 From c99b12b158b7897fd91b821849358db7f695f266 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 21 Aug 2018 19:32:44 +0100 Subject: [PATCH 0922/1100] Fix documentation for MBEDTLS_HAVE_DATE_TIME --- include/mbedtls/config.h | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 18fbf92dfc..ff123560c3 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -137,20 +137,25 @@ /** * \def MBEDTLS_HAVE_TIME_DATE * - * System has time.h and time(), gmtime_s() (Windows), gmtime_r() (POSIX) or - * gmtime() and the clock is correct. + * System has time.h, time(), an implementation for mbedtls_platform_gmtime(), + * and the clock is correct. * The time needs to be correct (not necesarily very accurate, but at least * the date should be correct). This is used to verify the validity period of * X.509 certificates. * * Comment if your system does not have a correct clock. * - * \warning gmtime() is used if the target platform is neither Windows nor - * POSIX. Unfortunately, gmtime() is not thread-safe, so a mutex is used when - * MBEDTLS_THREADING_C is defined to guarantee sequential usage of gmtime() - * across Mbed TLS threads. However, applications must ensure that calls to - * gmtime() from outside the library also use the mutex to avoid concurrency - * issues. + * \note mbedtls_platform_gmtime() is an abstraction in platform_util.h that + * when called behaves similar to the gmtime() function from the C standard, + * but is thread safe. Mbed TLS will try to identify the underlying platform + * and configure an appropriate underlying implementation (e.g. gmtime_r() for + * POSIX and gmtime_s() for Windows). If this is not possible, then gmtime() + * will be used. Refer to the documentation for mbedtls_platform_gmtime() for + * more information. + * + * \note It is possible to configure an implementation for + * mbedtls_platform_gmtime() at compile-time by using the macro + * MBEDTLS_PLATFORM_GMTIME_ALT. */ #define MBEDTLS_HAVE_TIME_DATE From a658d7dd9ddbf1dd7e00ccc9862eee51ba62f092 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Tue, 21 Aug 2018 19:33:02 +0100 Subject: [PATCH 0923/1100] Fix style for mbedtls_platform_gmtime() --- library/platform_util.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/platform_util.c b/library/platform_util.c index e41f3c49c2..68d2522b54 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -87,9 +87,9 @@ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, struct tm *tm_buf ) { #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) - return ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL; + return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL ); #elif !defined(PLATFORM_UTIL_USE_GMTIME) - return gmtime_r( tt, tm_buf ); + return( gmtime_r( tt, tm_buf ) ); #else struct tm *lt; @@ -110,7 +110,7 @@ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, return( NULL ); #endif /* MBEDTLS_THREADING_C */ - return ( lt == NULL ) ? NULL : tm_buf; -#endif + return( ( lt == NULL ) ? NULL : tm_buf ); +#endif /* _WIN32 && !EFIX64 && !EFI32 */ } #endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_ALT */ From 3d183cefb5bbc3e37fa033c2c85fdcde127a296c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Aug 2018 09:56:22 +0200 Subject: [PATCH 0924/1100] Allow client-side resend in proxy MTU tests From Hanno: When a server replies to a cookieless ClientHello with a HelloVerifyRequest, it is supposed to reset the connection and wait for a subsequent ClientHello which includes the cookie from the HelloVerifyRequest. In testing environments, it might happen that the reset of the server takes longer than for the client to replying to the HelloVerifyRequest with the ClientHello+Cookie. In this case, the ClientHello gets lost and the client will need retransmit. This may happen even if the underlying datagram transport is reliable. --- tests/ssl-opt.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index f811789e6f..8cf0c82a6e 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5112,6 +5112,8 @@ run_test "DTLS fragmenting: both (MTU)" \ -C "error" # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend +# OTOH the client might resend if the server is to slow to reset after sending +# a HelloVerifyRequest, so only check for no retransmission server-side not_with_valgrind # spurious resend due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5128,7 +5130,6 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5157,7 +5158,6 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ mtu=1450 reconnect=1 reco_delay=1" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5185,7 +5185,6 @@ run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5214,7 +5213,6 @@ run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5243,7 +5241,6 @@ run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5273,7 +5270,6 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5302,7 +5298,6 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ mtu=512" \ 0 \ -S "resend" \ - -C "resend" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" From c1d54b74ec756186e373a266e4cfc453225b0708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Aug 2018 10:02:59 +0200 Subject: [PATCH 0925/1100] Add tests with non-blocking I/O Make sure we behave properly when f_send() or f_recv() return MBEDTLS_ERR_SSL_WANT_{WRITE,READ}. --- tests/ssl-opt.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 8cf0c82a6e..ec2717ad57 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5134,6 +5134,26 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ -c "found fragmented DTLS handshake message" \ -C "error" +not_with_valgrind # spurious resend due to timeout +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + mtu=512 nbio=2" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + mtu=512 nbio=2" \ + 0 \ + -S "resend" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # This ensures things still work after session_reset(), # for example it would have caught #1941. # It also exercises the "resumed hanshake" flow. @@ -5321,6 +5341,25 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ -c "found fragmented DTLS handshake message" \ -C "error" +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +client_needs_more_time 2 +run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \ + -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=250-10000 mtu=512 nbio=2" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + hs_timeout=250-10000 mtu=512 nbio=2" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # interop tests for DTLS fragmentating with reliable connection # # here and below we just want to test that the we fragment in a way that From 68ae351dbec53e8e6b5eae3ff1392952055f1a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Aug 2018 10:24:31 +0200 Subject: [PATCH 0926/1100] Fix some whitespace in documentation --- include/mbedtls/ssl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 35f4d320a2..090660733d 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1398,7 +1398,7 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * * \note This setting only controls the size of the packets we send, * and does not restrict the size of the datagrams we're - * willing to receive. Client-side, you can request the + * willing to receive. Client-side, you can request the * server to use smaller records with \c * mbedtls_ssl_conf_max_frag_len(). * From b8eec192f6c0150186c07ae1fbc2ea103cd38be1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 20 Aug 2018 09:34:02 +0200 Subject: [PATCH 0927/1100] Implement PMTU auto-reduction in handshake --- ChangeLog | 3 +++ include/mbedtls/ssl_internal.h | 1 + library/ssl_tls.c | 29 ++++++++++++++++++++++++++--- tests/ssl-opt.sh | 19 +++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f144a7e99..fc47441017 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,9 @@ Features is controlled by the maximum fragment length as set locally or negotiated with the peer, as well as by a new per-connection MTU option, set using mbedtls_ssl_set_mtu(). + * Add support for auto-adjustment of MTU to a safe value during the + handshake when flights do not get through (RFC 6347, section 4.1.1.1, + last paragraph). Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 18982f89a0..6be684e052 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -307,6 +307,7 @@ struct mbedtls_ssl_handshake_params resending messages */ unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter for resending messages */ + uint16_t mtu; /*!< Handshake mtu, used to fragment outoing messages */ #endif /* MBEDTLS_SSL_PROTO_DTLS */ /* diff --git a/library/ssl_tls.c b/library/ssl_tls.c index faa9467e10..30c1a78f2a 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -108,6 +108,15 @@ static int ssl_double_retransmit_timeout( mbedtls_ssl_context *ssl ) if( ssl->handshake->retransmit_timeout >= ssl->conf->hs_timeout_max ) return( -1 ); + /* Implement the final paragraph of RFC 6347 section 4.1.1.1 + * in the following way: after the initial transmission and a first + * retransmission, back off to a temporary estimated MTU of 508 bytes. + * This value is guaranteed to be deliverable (if not guaranteed to be + * delivered) of any compliant IPv4 (and IPv6) network, and should work + * on most non-IP stacks too. */ + if( ssl->handshake->retransmit_timeout != ssl->conf->hs_timeout_min ) + ssl->handshake->mtu = 508; + new_timeout = 2 * ssl->handshake->retransmit_timeout; /* Avoid arithmetic overflow and range overflow */ @@ -7088,6 +7097,20 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ +#if defined(MBEDTLS_SSL_PROTO_DTLS) +static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ) +{ + if( ssl->handshake == NULL || ssl->handshake->mtu == 0 ) + return( ssl->mtu ); + + if( ssl->mtu == 0 ) + return( ssl->handshake->mtu ); + + return( ssl->mtu < ssl->handshake->mtu ? + ssl->mtu : ssl->handshake->mtu ); +} +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) { size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; @@ -7105,9 +7128,9 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) #endif #if defined(MBEDTLS_SSL_PROTO_DTLS) - if( ssl->mtu != 0 ) + if( ssl_get_current_mtu( ssl ) != 0 ) { - const size_t mtu = ssl->mtu; + const size_t mtu = ssl_get_current_mtu( ssl ); const int ret = mbedtls_ssl_get_record_expansion( ssl ); const size_t overhead = (size_t) ret; @@ -7123,7 +7146,7 @@ int mbedtls_ssl_get_max_out_record_payload( const mbedtls_ssl_context *ssl ) if( max_len > mtu - overhead ) max_len = mtu - overhead; } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ return( (int) max_len ); } diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ec2717ad57..9fc16bfde2 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5111,6 +5111,25 @@ run_test "DTLS fragmenting: both (MTU)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Test for automatic MTU reduction on repeated resend +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ + -p "$P_PXY mtu=508" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key\ + hs_timeout=100-400" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + hs_timeout=100-400" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend # OTOH the client might resend if the server is to slow to reset after sending # a HelloVerifyRequest, so only check for no retransmission server-side From f47a4afea327073aa69089d6dfca9ad843eaab55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 22 Aug 2018 10:38:52 +0200 Subject: [PATCH 0928/1100] Fix a typo in comments --- include/mbedtls/ssl_internal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 6be684e052..7d4418e7b6 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -307,7 +307,7 @@ struct mbedtls_ssl_handshake_params resending messages */ unsigned char alt_out_ctr[8]; /*!< Alternative record epoch/counter for resending messages */ - uint16_t mtu; /*!< Handshake mtu, used to fragment outoing messages */ + uint16_t mtu; /*!< Handshake mtu, used to fragment outgoing messages */ #endif /* MBEDTLS_SSL_PROTO_DTLS */ /* From aa249378536da468d9958852512fe208351dbf91 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 10:27:13 +0100 Subject: [PATCH 0929/1100] Adapt ChangeLog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 975b3bac07..f5e5fa5398 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,10 @@ Features last paragraph). * Add support for packing multiple records within a single datagram, enabled by default. + * Add support for buffering out-of-order handshake messages. + The maximum amount of RAM used for this can be controlled by the + compile-time constant MBEDTLS_SSL_DTLS_MAX_BUFFERING defined + in mbedtls/config.h. API Changes * Add function mbedtls_ssl_conf_datagram_packing() to configure From 98081a09e66f358eaa7aeb1cca1fe7b4d836c8bd Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 13:32:50 +0100 Subject: [PATCH 0930/1100] Don't use uint8_t for bitfields Fixing a build failure using armcc. --- include/mbedtls/ssl_internal.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index 3f595a3223..4b4417a5fa 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -319,9 +319,9 @@ struct mbedtls_ssl_handshake_params struct mbedtls_ssl_hs_buffer { - uint8_t is_valid : 1; - uint8_t is_fragmented : 1; - uint8_t is_complete : 1; + unsigned is_valid : 1; + unsigned is_fragmented : 1; + unsigned is_complete : 1; unsigned char *data; size_t data_len; } hs[MBEDTLS_SSL_MAX_BUFFERED_HS]; From 11682ccc78fd739fca2fe5c6be3319401ea6c0f6 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 14:41:02 +0100 Subject: [PATCH 0931/1100] Uniformly treat MTU as size_t --- library/ssl_tls.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8cf7aa1ce5..533e8490a1 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -109,24 +109,24 @@ static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_PROTO_DTLS) static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); -static uint16_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) +static size_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) { - uint16_t mtu = ssl_get_current_mtu( ssl ); + size_t mtu = ssl_get_current_mtu( ssl ); if( mtu != 0 && mtu < MBEDTLS_SSL_OUT_BUFFER_LEN ) - return( (int) mtu ); + return( mtu ); return( MBEDTLS_SSL_OUT_BUFFER_LEN ); } static int ssl_get_remaining_space_in_datagram( mbedtls_ssl_context const *ssl ) { - size_t const bytes_written = ssl->out_left; - uint16_t const mtu = ssl_get_maximum_datagram_size( ssl ); + size_t const bytes_written = ssl->out_left; + size_t const mtu = ssl_get_maximum_datagram_size( ssl ); /* Double-check that the write-index hasn't gone * past what we can transmit in a single datagram. */ - if( bytes_written > (size_t) mtu ) + if( bytes_written > mtu ) { /* Should never happen... */ return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); From 2c98db24785cb5683b8f63d5fae5a5793cb47d28 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 16:05:47 +0100 Subject: [PATCH 0932/1100] ssl_write_handshake_msg(): Allow alert on client-side SSLv3 In SSLv3, the client sends a NoCertificate alert in response to a CertificateRequest if it doesn't have a CRT. This previously lead to failure in ssl_write_handshake_msg() which only accepted handshake or CCS records. --- library/ssl_tls.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 533e8490a1..e54bb0e503 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3146,11 +3146,19 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) /* * Sanity checks */ - if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && + if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + /* In SSLv3, the client might send a NoCertificate alert. */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_CLI_C) + if( ! ( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && + ssl->out_msgtype == MBEDTLS_SSL_MSG_ALERT && + ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) ) +#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } } if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && From 551835d5e77a1b40566f6f89a12114e88e552e6f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 16:07:59 +0100 Subject: [PATCH 0933/1100] ssl_write_handshake_msg(): Always append CCS messages to flights The previous code appended messages to flights only if their handshake type, as derived from the first byte in the message, was different from MBEDTLS_SSL_HS_HELLO_REQUEST. This check should only be performed for handshake records, while CCS records should immediately be appended. --- library/ssl_tls.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index e54bb0e503..cceb96fd05 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3256,7 +3256,8 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) /* Either send now, or just save to be sent (and resent) later */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + ( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE || + hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) ) { if( ( ret = ssl_flight_append( ssl ) ) != 0 ) { From 554b0af1953a6fd57d20c5914e72daf1bf985c64 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 20:33:41 +0100 Subject: [PATCH 0934/1100] Fix assertion in mbedtls_ssl_write_record() --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index cceb96fd05..0ea7898cf7 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3363,7 +3363,7 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) * the remaining space in the datagram. */ if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) { - ret = ssl_get_maximum_datagram_size( ssl ); + ret = ssl_get_remaining_space_in_datagram( ssl ); if( ret < 0 ) return( ret ); From 65dc885a3b04572a32c32d708ee10adc9217d77d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 09:40:49 +0100 Subject: [PATCH 0935/1100] Use size_t for msg_len argument in ssl_get_reassembly_buffer_size() --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 2090e33b4a..651d5a55b6 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3555,7 +3555,7 @@ static int ssl_bitmask_check( unsigned char *mask, size_t len ) } /* msg_len does not include the handshake header */ -static size_t ssl_get_reassembly_buffer_size( unsigned msg_len, +static size_t ssl_get_reassembly_buffer_size( size_t msg_len, unsigned add_bitmap ) { size_t alloc_len; From 12b72c182e6e9885f88e5cc5cb1c5e22e7c25e0d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 13:15:36 +0100 Subject: [PATCH 0936/1100] UDP proxy: Fix bug in freeing delayed messages --- programs/test/udp_proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 0428d28884..2585220037 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -562,7 +562,7 @@ static packet prev[MAX_DELAYED_MSG]; void clear_pending( void ) { - memset( &prev, 0, sizeof( packet ) ); + memset( &prev, 0, sizeof( prev ) ); prev_len = 0; } From b309b92ee83a2f852f886815dae963ce2ab3bb36 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 13:18:05 +0100 Subject: [PATCH 0937/1100] ssl_buffering_free_slot(): Double-check validity of slot index --- library/ssl_tls.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 651d5a55b6..41803b6094 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4493,7 +4493,7 @@ static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, MBEDTLS_SSL_DEBUG_MSG( 2, ( "Free buffering slot %d to make space for reassembly of next handshake message", offset ) ); - ssl_buffering_free_slot( ssl, offset ); + ssl_buffering_free_slot( ssl, (uint8_t) offset ); /* Check if we have enough space available now. */ if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - @@ -8681,6 +8681,10 @@ static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, { mbedtls_ssl_handshake_params * const hs = ssl->handshake; mbedtls_ssl_hs_buffer * const hs_buf = &hs->buffering.hs[slot]; + + if( slot >= MBEDTLS_SSL_MAX_BUFFERED_HS ) + return; + if( hs_buf->is_valid == 1 ) { hs->buffering.total_bytes_buffered -= hs_buf->data_len; From 55c11ba2833baac36dd80c824e3c9a6d7195fb76 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 14:36:33 +0100 Subject: [PATCH 0938/1100] Correct memory-leak in pk_encrypt example program --- programs/pkey/pk_encrypt.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c index 400619c5c8..24c5b566a8 100644 --- a/programs/pkey/pk_encrypt.c +++ b/programs/pkey/pk_encrypt.c @@ -73,6 +73,8 @@ int main( int argc, char *argv[] ) const char *pers = "mbedtls_pk_encrypt"; mbedtls_ctr_drbg_init( &ctr_drbg ); + mbedtls_entropy_init( &entropy ); + mbedtls_pk_init( &pk ); if( argc != 3 ) { @@ -88,7 +90,6 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Seeding the random number generator..." ); fflush( stdout ); - mbedtls_entropy_init( &entropy ); if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, strlen( pers ) ) ) != 0 ) @@ -100,8 +101,6 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Reading public key from '%s'", argv[1] ); fflush( stdout ); - mbedtls_pk_init( &pk ); - if( ( ret = mbedtls_pk_parse_public_keyfile( &pk, argv[1] ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_pk_parse_public_keyfile returned -0x%04x\n", -ret ); @@ -136,6 +135,7 @@ int main( int argc, char *argv[] ) if( ( f = fopen( "result-enc.txt", "wb+" ) ) == NULL ) { mbedtls_printf( " failed\n ! Could not create %s\n\n", "result-enc.txt" ); + ret = 1; goto exit; } @@ -150,8 +150,10 @@ int main( int argc, char *argv[] ) exit_code = MBEDTLS_EXIT_SUCCESS; exit: - mbedtls_ctr_drbg_free( &ctr_drbg ); + + mbedtls_pk_free( &pk ); mbedtls_entropy_free( &entropy ); + mbedtls_ctr_drbg_free( &ctr_drbg ); #if defined(MBEDTLS_ERROR_C) if( exit_code != MBEDTLS_EXIT_SUCCESS ) From bd336c1fac94d5d057900cb9b406faf3c613bf86 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Sun, 8 Oct 2017 16:44:10 +0100 Subject: [PATCH 0939/1100] Correct memory leak in pk_decrypt example program --- programs/pkey/pk_decrypt.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index 00bd71ed3e..ec82ca41db 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -73,7 +73,10 @@ int main( int argc, char *argv[] ) const char *pers = "mbedtls_pk_decrypt"; ((void) argv); + mbedtls_pk_init( &pk ); + mbedtls_entropy_init( &entropy ); mbedtls_ctr_drbg_init( &ctr_drbg ); + memset(result, 0, sizeof( result ) ); if( argc != 2 ) @@ -90,7 +93,6 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Seeding the random number generator..." ); fflush( stdout ); - mbedtls_entropy_init( &entropy ); if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, strlen( pers ) ) ) != 0 ) @@ -102,8 +104,6 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Reading private key from '%s'", argv[1] ); fflush( stdout ); - mbedtls_pk_init( &pk ); - if( ( ret = mbedtls_pk_parse_keyfile( &pk, argv[1], "" ) ) != 0 ) { mbedtls_printf( " failed\n ! mbedtls_pk_parse_keyfile returned -0x%04x\n", -ret ); @@ -116,6 +116,7 @@ int main( int argc, char *argv[] ) if( ( f = fopen( "result-enc.txt", "rb" ) ) == NULL ) { mbedtls_printf( "\n ! Could not open %s\n\n", "result-enc.txt" ); + ret = 1; goto exit; } @@ -147,8 +148,10 @@ int main( int argc, char *argv[] ) exit_code = MBEDTLS_EXIT_SUCCESS; exit: - mbedtls_ctr_drbg_free( &ctr_drbg ); + + mbedtls_pk_free( &pk ); mbedtls_entropy_free( &entropy ); + mbedtls_ctr_drbg_free( &ctr_drbg ); #if defined(MBEDTLS_ERROR_C) if( exit_code != MBEDTLS_EXIT_SUCCESS ) From a70fb95c824ade75a76317ce2be74f6543c26484 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Sun, 8 Oct 2017 16:13:03 +0100 Subject: [PATCH 0940/1100] Adapt ChangeLog --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0598cfa1a1..77dbb486d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,8 @@ Bugfix * Replace printf with mbedtls_printf in aria. Found by TrinityTonic in #1908. * Fix potential use-after-free in mbedtls_ssl_get_max_frag_len() and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. + * Fix memory leak and free without initialization in pk_encrypt + and pk_decrypt example programs. Reported by Brace Stout. Fixes #1128. Changes * Copy headers preserving timestamps when doing a "make install". From ae513a539668cf27119db13746204c2e3e0839c2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 14:39:04 +0100 Subject: [PATCH 0941/1100] Minor formatting improvements in pk_encrypt and pk_decrypt examples --- programs/pkey/pk_decrypt.c | 17 ++++++++++------- programs/pkey/pk_encrypt.c | 19 ++++++++++++------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index ec82ca41db..6d3a1dc947 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -93,11 +93,12 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Seeding the random number generator..." ); fflush( stdout ); - if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, - (const unsigned char *) pers, - strlen( pers ) ) ) != 0 ) + if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, + &entropy, (const unsigned char *) pers, + strlen( pers ) ) ) != 0 ) { - mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", ret ); + mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", + ret ); goto exit; } @@ -121,10 +122,11 @@ int main( int argc, char *argv[] ) } i = 0; - while( fscanf( f, "%02X", &c ) > 0 && i < (int) sizeof( buf ) ) + { buf[i++] = (unsigned char) c; + } fclose( f ); @@ -137,7 +139,8 @@ int main( int argc, char *argv[] ) if( ( ret = mbedtls_pk_decrypt( &pk, buf, i, result, &olen, sizeof(result), mbedtls_ctr_drbg_random, &ctr_drbg ) ) != 0 ) { - mbedtls_printf( " failed\n ! mbedtls_pk_decrypt returned -0x%04x\n", -ret ); + mbedtls_printf( " failed\n ! mbedtls_pk_decrypt returned -0x%04x\n", + -ret ); goto exit; } @@ -156,7 +159,7 @@ exit: #if defined(MBEDTLS_ERROR_C) if( exit_code != MBEDTLS_EXIT_SUCCESS ) { - mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); + mbedtls_strerror( ret, (char *) buf, sizeof( buf ) ); mbedtls_printf( " ! Last error was: %s\n", buf ); } #endif diff --git a/programs/pkey/pk_encrypt.c b/programs/pkey/pk_encrypt.c index 24c5b566a8..22dedba103 100644 --- a/programs/pkey/pk_encrypt.c +++ b/programs/pkey/pk_encrypt.c @@ -90,11 +90,12 @@ int main( int argc, char *argv[] ) mbedtls_printf( "\n . Seeding the random number generator..." ); fflush( stdout ); - if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, - (const unsigned char *) pers, - strlen( pers ) ) ) != 0 ) + if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, + &entropy, (const unsigned char *) pers, + strlen( pers ) ) ) != 0 ) { - mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned -0x%04x\n", -ret ); + mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned -0x%04x\n", + -ret ); goto exit; } @@ -125,7 +126,8 @@ int main( int argc, char *argv[] ) buf, &olen, sizeof(buf), mbedtls_ctr_drbg_random, &ctr_drbg ) ) != 0 ) { - mbedtls_printf( " failed\n ! mbedtls_pk_encrypt returned -0x%04x\n", -ret ); + mbedtls_printf( " failed\n ! mbedtls_pk_encrypt returned -0x%04x\n", + -ret ); goto exit; } @@ -134,14 +136,17 @@ int main( int argc, char *argv[] ) */ if( ( f = fopen( "result-enc.txt", "wb+" ) ) == NULL ) { - mbedtls_printf( " failed\n ! Could not create %s\n\n", "result-enc.txt" ); + mbedtls_printf( " failed\n ! Could not create %s\n\n", + "result-enc.txt" ); ret = 1; goto exit; } for( i = 0; i < olen; i++ ) + { mbedtls_fprintf( f, "%02X%s", buf[i], ( i + 1 ) % 16 == 0 ? "\r\n" : " " ); + } fclose( f ); @@ -158,7 +163,7 @@ exit: #if defined(MBEDTLS_ERROR_C) if( exit_code != MBEDTLS_EXIT_SUCCESS ) { - mbedtls_strerror( ret, (char *) buf, sizeof(buf) ); + mbedtls_strerror( ret, (char *) buf, sizeof( buf ) ); mbedtls_printf( " ! Last error was: %s\n", buf ); } #endif From 25d882b9162052f9237268a93cb0cd6835208539 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 15:26:06 +0100 Subject: [PATCH 0942/1100] Fix typos in programs/x509/cert_write.c Fixes #1922. --- programs/x509/cert_write.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index 09a91e077f..fa994613d6 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -164,7 +164,7 @@ struct options const char *issuer_key; /* filename of the issuer key file */ const char *subject_pwd; /* password for the subject key file */ const char *issuer_pwd; /* password for the issuer key file */ - const char *output_file; /* where to store the constructed key file */ + const char *output_file; /* where to store the constructed CRT */ const char *subject_name; /* subject name for certificate */ const char *issuer_name; /* issuer name for certificate */ const char *not_before; /* validity period not before */ @@ -770,7 +770,7 @@ int main( int argc, char *argv[] ) } /* - * 1.2. Writing the request + * 1.2. Writing the certificate */ mbedtls_printf( " . Writing the certificate..." ); fflush( stdout ); From a63c1c3a258758cac7f216268c6fa2255ac47bc9 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 23 Aug 2018 15:56:03 +0100 Subject: [PATCH 0943/1100] pk_encrypt: Uniformize debugging output --- programs/pkey/pk_decrypt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/pkey/pk_decrypt.c b/programs/pkey/pk_decrypt.c index 6d3a1dc947..1d8c959a09 100644 --- a/programs/pkey/pk_decrypt.c +++ b/programs/pkey/pk_decrypt.c @@ -97,8 +97,8 @@ int main( int argc, char *argv[] ) &entropy, (const unsigned char *) pers, strlen( pers ) ) ) != 0 ) { - mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned %d\n", - ret ); + mbedtls_printf( " failed\n ! mbedtls_ctr_drbg_seed returned -0x%04x\n", + -ret ); goto exit; } From 34aa187df6a914d94d56d8b3aeab5692a1a3d59c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Thu, 23 Aug 2018 19:07:15 +0200 Subject: [PATCH 0944/1100] Force IPv4 for gnutls-cli DTLS tests Depending on the settings of the local machine, gnutls-cli will either try IPv4 or IPv6 when trying to connect to localhost. With TLS, whatever it tries first, it will notice if any failure happens and try the other protocol if necessary. With DTLS it can't do that. Unfortunately for now there isn't really any good way to specify an address and hostname independently, though that might come soon: https://gitlab.com/gnutls/gnutls/issues/344 A work around is to specify an address directly and then use --insecure to ignore certificate hostname mismatch; that is OK for tests that are completely unrelated to certificate verification (such as the recent fragmenting tests) but unacceptable for others. For that reason, don't specify a default hostname for gnutls-cli, but instead let each test choose between `--insecure 127.0.0.1` and `localhost` (or `--insecure '::1'` if desired). Alternatives include: - having test certificates with 127.0.0.1 as the hostname, but having an IP as the CN is unusual, and we would need to change our test certs; - have our server open two sockets under the hood and listen on both IPv4 and IPv6 (that's what gnutls-serv does, and IMO it's a good thing) but that obviously requires development and testing (esp. for windows compatibility) - wait for a newer version of GnuTLS to be released, install it on the CI and developer machines, and use that in all tests - quite satisfying but can't be done now (and puts stronger requirements on test environment). --- tests/ssl-opt.sh | 52 ++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ec2717ad57..e89d3a9817 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -765,7 +765,7 @@ P_PXY="$P_PXY server_addr=127.0.0.1 server_port=$SRV_PORT listen_addr=127.0.0.1 O_SRV="$O_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem" O_CLI="$O_CLI -connect localhost:+SRV_PORT" G_SRV="$G_SRV -p $SRV_PORT" -G_CLI="$G_CLI -p +SRV_PORT localhost" +G_CLI="$G_CLI -p +SRV_PORT" if [ -n "${OPENSSL_LEGACY:-}" ]; then O_LEGACY_SRV="$O_LEGACY_SRV -accept $SRV_PORT -dhparam data_files/dhparams.pem" @@ -777,7 +777,7 @@ if [ -n "${GNUTLS_NEXT_SERV:-}" ]; then fi if [ -n "${GNUTLS_NEXT_CLI:-}" ]; then - G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT localhost" + G_NEXT_CLI="$G_NEXT_CLI -p +SRV_PORT" fi # Allow SHA-1, because many of our test certificates use it @@ -2118,7 +2118,7 @@ run_test "Renego ext: gnutls server unsafe, client break legacy" \ requires_gnutls run_test "Renego ext: gnutls client strict, server default" \ "$P_SRV debug_level=3" \ - "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION" \ + "$G_CLI --priority=NORMAL:%SAFE_RENEGOTIATION localhost" \ 0 \ -s "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \ -s "server hello, secure renegotiation extension" @@ -2126,7 +2126,7 @@ run_test "Renego ext: gnutls client strict, server default" \ requires_gnutls run_test "Renego ext: gnutls client unsafe, server default" \ "$P_SRV debug_level=3" \ - "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \ + "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \ 0 \ -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \ -S "server hello, secure renegotiation extension" @@ -2134,7 +2134,7 @@ run_test "Renego ext: gnutls client unsafe, server default" \ requires_gnutls run_test "Renego ext: gnutls client unsafe, server break legacy" \ "$P_SRV debug_level=3 allow_legacy=-1" \ - "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION" \ + "$G_CLI --priority=NORMAL:%DISABLE_SAFE_RENEGOTIATION localhost" \ 1 \ -S "received TLS_EMPTY_RENEGOTIATION_INFO\|found renegotiation extension" \ -S "server hello, secure renegotiation extension" @@ -2145,7 +2145,7 @@ requires_gnutls run_test "DER format: no trailing bytes" \ "$P_SRV crt_file=data_files/server5-der0.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2153,7 +2153,7 @@ requires_gnutls run_test "DER format: with a trailing zero byte" \ "$P_SRV crt_file=data_files/server5-der1a.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2161,7 +2161,7 @@ requires_gnutls run_test "DER format: with a trailing random byte" \ "$P_SRV crt_file=data_files/server5-der1b.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2169,7 +2169,7 @@ requires_gnutls run_test "DER format: with 2 trailing random bytes" \ "$P_SRV crt_file=data_files/server5-der2.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2177,7 +2177,7 @@ requires_gnutls run_test "DER format: with 4 trailing random bytes" \ "$P_SRV crt_file=data_files/server5-der4.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2185,7 +2185,7 @@ requires_gnutls run_test "DER format: with 8 trailing random bytes" \ "$P_SRV crt_file=data_files/server5-der8.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -2193,7 +2193,7 @@ requires_gnutls run_test "DER format: with 9 trailing random bytes" \ "$P_SRV crt_file=data_files/server5-der9.crt \ key_file=data_files/server5.key" \ - "$G_CLI " \ + "$G_CLI localhost" \ 0 \ -c "Handshake was completed" \ @@ -3758,14 +3758,14 @@ run_test "Per-version suites: TLS 1.2" \ requires_gnutls run_test "ClientHello without extensions, SHA-1 allowed" \ "$P_SRV debug_level=3" \ - "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION" \ + "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \ 0 \ -s "dumping 'client hello extensions' (0 bytes)" requires_gnutls run_test "ClientHello without extensions, SHA-1 forbidden in certificates on server" \ "$P_SRV debug_level=3 key_file=data_files/server2.key crt_file=data_files/server2.crt allow_sha1=0" \ - "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION" \ + "$G_CLI --priority=NORMAL:%NO_EXTENSIONS:%DISABLE_SAFE_RENEGOTIATION localhost" \ 0 \ -s "dumping 'client hello extensions' (0 bytes)" @@ -5394,35 +5394,31 @@ run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \ -c "fragmenting handshake message" \ -C "error" -# gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS -requires_ipv6 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 requires_gnutls run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \ - "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ + "$P_SRV dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ mtu=512 force_version=dtls1_2" \ - "$G_CLI -u" \ + "$G_CLI -u --insecure 127.0.0.1" \ 0 \ -s "fragmenting handshake message" -# gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS -requires_ipv6 requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 requires_gnutls run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \ - "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ + "$P_SRV dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ mtu=512 force_version=dtls1" \ - "$G_CLI -u" \ + "$G_CLI -u --insecure 127.0.0.1" \ 0 \ -s "fragmenting handshake message" @@ -5524,8 +5520,6 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## We can re-enable them when a fixed version fo GnuTLS is available ## and installed in our CI system. ## -## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS -## requires_ipv6 ## requires_gnutls ## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS ## requires_config_enabled MBEDTLS_RSA_C @@ -5534,16 +5528,14 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ +## "$P_SRV dtls=1 debug_level=2 \ ## crt_file=data_files/server7_int-ca.crt \ ## key_file=data_files/server7.key \ ## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ -## "$G_CLI -u" \ +## "$G_CLI -u --insecure 127.0.0.1" \ ## 0 \ ## -s "fragmenting handshake message" ## -## # gnutls-cli always tries IPv6 first, and doesn't fall back to IPv4 with DTLS -## requires_ipv6 ## requires_gnutls ## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS ## requires_config_enabled MBEDTLS_RSA_C @@ -5552,11 +5544,11 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## client_needs_more_time 4 ## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ ## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$P_SRV dtls=1 debug_level=2 server_addr=::1 \ +## "$P_SRV dtls=1 debug_level=2 \ ## crt_file=data_files/server7_int-ca.crt \ ## key_file=data_files/server7.key \ ## hs_timeout=250-60000 mtu=512 force_version=dtls1" \ -## "$G_CLI -u" \ +## "$G_CLI -u --insecure 127.0.0.1" \ ## 0 \ ## -s "fragmenting handshake message" From c83d2b3e095e114d2cdaf7597bfc6cbb318ccf8d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 16:05:47 +0100 Subject: [PATCH 0945/1100] ssl_write_handshake_msg(): Allow alert on client-side SSLv3 In SSLv3, the client sends a NoCertificate alert in response to a CertificateRequest if it doesn't have a CRT. This previously lead to failure in ssl_write_handshake_msg() which only accepted handshake or CCS records. --- library/ssl_tls.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index faa9467e10..d22b0e228d 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3049,11 +3049,19 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) /* * Sanity checks */ - if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && + if( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE && ssl->out_msgtype != MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC ) { - MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); - return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + /* In SSLv3, the client might send a NoCertificate alert. */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) && defined(MBEDTLS_SSL_CLI_C) + if( ! ( ssl->minor_ver == MBEDTLS_SSL_MINOR_VERSION_0 && + ssl->out_msgtype == MBEDTLS_SSL_MSG_ALERT && + ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT ) ) +#endif /* MBEDTLS_SSL_PROTO_SSL3 && MBEDTLS_SSL_SRV_C */ + { + MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) ); + return( MBEDTLS_ERR_SSL_INTERNAL_ERROR ); + } } if( ssl->out_msgtype == MBEDTLS_SSL_MSG_HANDSHAKE && From 081bd81865881b82fc5d04847189b01fe4df8c1e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 22 Aug 2018 16:07:59 +0100 Subject: [PATCH 0946/1100] ssl_write_handshake_msg(): Always append CCS messages to flights The previous code appended messages to flights only if their handshake type, as derived from the first byte in the message, was different from MBEDTLS_SSL_HS_HELLO_REQUEST. This check should only be performed for handshake records, while CCS records should immediately be appended. --- library/ssl_tls.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index d22b0e228d..3a972a5982 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3142,7 +3142,8 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) /* Either send now, or just save to be sent (and resent) later */ #if defined(MBEDTLS_SSL_PROTO_DTLS) if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) + ( ssl->out_msgtype != MBEDTLS_SSL_MSG_HANDSHAKE || + hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) ) { if( ( ret = ssl_flight_append( ssl ) ) != 0 ) { From 283f5efe7dac73a6ed0e12f495dfb10b3bdef846 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 09:34:47 +0100 Subject: [PATCH 0947/1100] Buffering: Free future record epoch after each flight The function ssl_free_buffered_record() frees a future epoch record, if such is present. Previously, it was called in mbedtls_handshake_free(), i.e. an unused buffered record would be cleared at the end of the handshake. This commit moves the call to the function ssl_buffering_free() responsible for freeing all buffering-related data, and which is called not only at the end of the handshake, but at the end of every flight. In particular, future record epochs won't be buffered across flight boundaries anymore, and they shouldn't. --- library/ssl_tls.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 41803b6094..d8d2563780 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -8672,6 +8672,8 @@ static void ssl_buffering_free( mbedtls_ssl_context *ssl ) if( hs == NULL ) return; + ssl_free_buffered_record( ssl ); + for( offset = 0; offset < MBEDTLS_SSL_MAX_BUFFERED_HS; offset++ ) ssl_buffering_free_slot( ssl, offset ); } @@ -8776,7 +8778,6 @@ void mbedtls_ssl_handshake_free( mbedtls_ssl_context *ssl ) mbedtls_free( handshake->verify_cookie ); ssl_flight_free( handshake->flight ); ssl_buffering_free( ssl ); - ssl_free_buffered_record( ssl ); #endif mbedtls_platform_zeroize( handshake, From f4b010efc4b7f5056847810b4be4c960006b78cb Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 10:47:29 +0100 Subject: [PATCH 0948/1100] Limit MTU by maximum fragment length setting By the standard (RFC 6066, Sect. 4), the Maximum Fragment Length (MFL) extension limits the maximum record payload size, but not the maximum datagram size. However, not inferring any limitations on the MTU when setting the MFL means that a party has no means to dynamically inform the peer about MTU limitations. This commit changes the function ssl_get_remaining_payload_in_datagram() to never return more than MFL - { Total size of all records within the current datagram } thereby limiting the MTU to MFL + { Maximum Record Expansion }. --- library/ssl_tls.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 0ea7898cf7..37ba93baff 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -146,6 +146,20 @@ static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl if( max_len > mfl ) max_len = mfl; + + /* By the standard (RFC 6066 Sect. 4), the MFL extension + * only limits the maximum record payload size, so in theory + * we would be allowed to pack multiple records of payload size + * MFL into a single datagram. However, this would mean that there's + * no way to explicitly communicate MTU restrictions to the peer. + * + * The following reduction of max_len makes sure that we never + * write datagrams larger than MFL + Record Expansion Overhead. + */ + if( max_len <= ssl->out_left ) + return( 0 ); + + max_len -= ssl->out_left; #endif ret = ssl_get_remaining_space_in_datagram( ssl ); From 1841b0a11c34e2c9bda4ccc5c72eb35313a226d5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 11:13:57 +0100 Subject: [PATCH 0949/1100] Rename ssl_conf_datagram_packing() to ssl_set_datagram_packing() The naming convention is that functions of the form mbedtls_ssl_conf_xxx() apply to the SSL configuration. --- ChangeLog | 2 +- include/mbedtls/ssl.h | 4 ++-- library/ssl_tls.c | 4 ++-- programs/ssl/ssl_client2.c | 2 +- programs/ssl/ssl_server2.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4bf4c8eb90..8f05896b75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,7 +14,7 @@ Features enabled by default. API Changes - * Add function mbedtls_ssl_conf_datagram_packing() to configure + * Add function mbedtls_ssl_set_datagram_packing() to configure the use of datagram packing (enabled by default). Bugfix diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index c86a0f9286..e7f7ea40b4 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1842,8 +1842,8 @@ void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limi * are currently always sent in separate datagrams. * */ -void mbedtls_ssl_conf_datagram_packing( mbedtls_ssl_context *ssl, - unsigned allow_packing ); +void mbedtls_ssl_set_datagram_packing( mbedtls_ssl_context *ssl, + unsigned allow_packing ); /** * \brief Set retransmit timeout values for the DTLS handshake. diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 37ba93baff..378137c7e0 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -6477,8 +6477,8 @@ void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limi #if defined(MBEDTLS_SSL_PROTO_DTLS) -void mbedtls_ssl_conf_datagram_packing( mbedtls_ssl_context *ssl, - unsigned allow_packing ) +void mbedtls_ssl_set_datagram_packing( mbedtls_ssl_context *ssl, + unsigned allow_packing ) { ssl->disable_datagram_packing = !allow_packing; } diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index cfcb27d1cc..efd2b30434 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -1354,7 +1354,7 @@ int main( int argc, char *argv[] ) opt.hs_to_max ); if( opt.dgram_packing != DFL_DGRAM_PACKING ) - mbedtls_ssl_conf_datagram_packing( &ssl, opt.dgram_packing ); + mbedtls_ssl_set_datagram_packing( &ssl, opt.dgram_packing ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 8d414364a4..070c005553 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -2182,7 +2182,7 @@ int main( int argc, char *argv[] ) mbedtls_ssl_conf_handshake_timeout( &conf, opt.hs_to_min, opt.hs_to_max ); if( opt.dgram_packing != DFL_DGRAM_PACKING ) - mbedtls_ssl_conf_datagram_packing( &ssl, opt.dgram_packing ); + mbedtls_ssl_set_datagram_packing( &ssl, opt.dgram_packing ); #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) From eb57008d7d02d547b74a20fc5b210d25b9547f52 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 11:28:35 +0100 Subject: [PATCH 0950/1100] Fix typo in documentation of mbedtls_ssl_set_datagram_packing() --- include/mbedtls/ssl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index e7f7ea40b4..da4b688287 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1838,7 +1838,7 @@ void mbedtls_ssl_conf_dtls_badmac_limit( mbedtls_ssl_config *conf, unsigned limi * or flight retransmission (if no buffering is used) as * means to deal with reordering are needed less frequently. * - * \note Application datagrams are not affected by this option and + * \note Application records are not affected by this option and * are currently always sent in separate datagrams. * */ From c92b5c8a0d913cf32586623e065ba113867593a6 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 11:48:01 +0100 Subject: [PATCH 0951/1100] ssl-opt.sh: Add tests checking that MFL implies bounds on MTU This commit introduces some tests to ssl-opt.sh checking that setting the MFL limits the MTU to MFL + { Maximum Record Expansion }. --- tests/ssl-opt.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index e63d45fafc..9ac80a5cf2 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5038,6 +5038,32 @@ run_test "DTLS fragmenting: server only (more) (max_frag_len)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# While not required by the standard defining the MFL extension +# (according to which it only applies to records, not to datagrams), +# Mbed TLS will never send datagrams larger than MFL + { Max record expansion }, +# as otherwise there wouldn't be any means to communicate MTU restrictions +# to the peer. +# The next test checks that no datagrams significantly larger than the +# negotiated MFL are sent. +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: server only (more) (max_frag_len), proxy MTU" \ + -p "$P_PXY mtu=560" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=2048" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5056,6 +5082,32 @@ run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# While not required by the standard defining the MFL extension +# (according to which it only applies to records, not to datagrams), +# Mbed TLS will never send datagrams larger than MFL + { Max record expansion }, +# as otherwise there wouldn't be any means to communicate MTU restrictions +# to the peer. +# The next test checks that no datagrams significantly larger than the +# negotiated MFL are sent. +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \ + -p "$P_PXY mtu=560" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=none \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=512" \ + 0 \ + -S "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5074,6 +5126,32 @@ run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# While not required by the standard defining the MFL extension +# (according to which it only applies to records, not to datagrams), +# Mbed TLS will never send datagrams larger than MFL + { Max record expansion }, +# as otherwise there wouldn't be any means to communicate MTU restrictions +# to the peer. +# The next test checks that no datagrams significantly larger than the +# negotiated MFL are sent. +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \ + -p "$P_PXY mtu=560" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + max_frag_len=2048" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + max_frag_len=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 69ca0ad5c4e5dda5143793bcb114022edc18a473 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 12:11:35 +0100 Subject: [PATCH 0952/1100] ssl-opt.sh: Remove wrong test exercising MTU implications of MFL The negotiated MFL is always the one suggested by the client, even if the server has a smaller MFL configured locally. Hence, in the test where the client asks for an MFL of 4096 bytes while the server locally has an MFL of 512 bytes configured, the client will still send datagrams of up to ~4K size. --- tests/ssl-opt.sh | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 953afae556..211c8544b6 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5020,6 +5020,10 @@ run_test "DTLS fragmenting: server only (max_frag_len)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# With the MFL extension, the server has no way of forcing +# the client to not exceed a certain MTU; hence, the following +# test can't be replicated with an MTU proxy such as the one +# `client-initiated, server only (max_frag_len)` below. requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5032,33 +5036,7 @@ run_test "DTLS fragmenting: server only (more) (max_frag_len)" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=2048" \ - 0 \ - -S "found fragmented DTLS handshake message" \ - -c "found fragmented DTLS handshake message" \ - -C "error" - -# While not required by the standard defining the MFL extension -# (according to which it only applies to records, not to datagrams), -# Mbed TLS will never send datagrams larger than MFL + { Max record expansion }, -# as otherwise there wouldn't be any means to communicate MTU restrictions -# to the peer. -# The next test checks that no datagrams significantly larger than the -# negotiated MFL are sent. -requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -requires_config_enabled MBEDTLS_RSA_C -requires_config_enabled MBEDTLS_ECDSA_C -requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH -run_test "DTLS fragmenting: server only (more) (max_frag_len), proxy MTU" \ - -p "$P_PXY mtu=560" \ - "$P_SRV dtls=1 debug_level=2 auth_mode=required \ - crt_file=data_files/server7_int-ca.crt \ - key_file=data_files/server7.key \ - max_frag_len=512" \ - "$P_CLI dtls=1 debug_level=2 \ - crt_file=data_files/server8_int-ca2.crt \ - key_file=data_files/server8.key \ - max_frag_len=2048" \ + max_frag_len=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ From 6e12c1ea7d2aaa80b1d8265b0a181ffa3a5aa7bd Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 14:39:15 +0100 Subject: [PATCH 0953/1100] Enhance debugging output --- library/ssl_tls.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index d28be2a39d..ccd73996d8 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4487,6 +4487,8 @@ static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, { int offset; mbedtls_ssl_handshake_params * const hs = ssl->handshake; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Attempt to free buffered messages to have %u bytes available", + (unsigned) desired ) ); /* Get rid of future records epoch first, if such exist. */ ssl_free_buffered_record( ssl ); @@ -4495,6 +4497,7 @@ static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - hs->buffering.total_bytes_buffered ) ) { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing future epoch record" ) ); return( 0 ); } @@ -4513,6 +4516,7 @@ static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, if( desired <= ( MBEDTLS_SSL_DTLS_MAX_BUFFERING - hs->buffering.total_bytes_buffered ) ) { + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Enough space available after freeing buffered HS messages" ) ); return( 0 ); } } @@ -4622,8 +4626,10 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) if( ssl_buffer_make_space( ssl, reassembly_buf_sz ) != 0 ) { - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", - (unsigned) msg_len, MBEDTLS_SSL_DTLS_MAX_BUFFERING, + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Reassembly of next message of size %u (%u with bitmap) would exceed the compile-time limit %u (already %u bytes buffered) -- fail\n", + (unsigned) msg_len, + (unsigned) reassembly_buf_sz, + MBEDTLS_SSL_DTLS_MAX_BUFFERING, (unsigned) hs->buffering.total_bytes_buffered ) ); ret = MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL; goto exit; From 5cd017f931d15f3b351a888061841082cb04fdd9 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 14:40:12 +0100 Subject: [PATCH 0954/1100] ssl-opt.sh: Allow numerical constraints for tests This commit adds functions requires_config_value_at_most() and requires_config_value_at_least() which can be used to only run tests when a numerical value from config.h (e.g. MBEDTLS_SSL_IN_CONTENT_LEN) is within a certain range. --- tests/ssl-opt.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index c12ca6a8e3..bfcc6342df 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -156,6 +156,26 @@ requires_config_disabled() { fi } +requires_config_value_at_least() { + NAME="$1" + DEF_VAL=$( grep ".*#define.*MBEDTLS_SSL_DTLS_MAX_BUFFERING" ../include/mbedtls/config.h | + sed 's/^.*\s\([0-9]*\)$/\1/' ) + VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) + if [ "$VAL" -lt "$2" ]; then + SKIP_NEXT="YES" + fi +} + +requires_config_value_at_most() { + NAME="$1" + DEF_VAL=$( grep ".*#define.*MBEDTLS_SSL_DTLS_MAX_BUFFERING" ../include/mbedtls/config.h | + sed 's/^.*\s\([0-9]*\)$/\1/' ) + VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) + if [ "$VAL" -gt "$2" ]; then + SKIP_NEXT="YES" + fi +} + # skip next test if OpenSSL doesn't support FALLBACK_SCSV requires_openssl_with_fallback_scsv() { if [ -z "${OPENSSL_HAS_FBSCSV:-}" ]; then From a1adcca1dabf048d3e4152df26161c6534081494 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 14:41:07 +0100 Subject: [PATCH 0955/1100] ssl-opt.sh: Add tests exercising freeing of buffered messages This commit adds tests to ssl-opt.sh which trigger code-paths responsible for freeing future buffered messages when the buffering limitations set by MBEDTLS_SSL_DTLS_MAX_BUFFERING don't allow the next expected message to be reassembled. These tests only work for very specific ranges of MBEDTLS_SSL_DTLS_MAX_BUFFERING and will therefore be skipped on a run of ssl-opt.sh in ordinary configurations. --- tests/ssl-opt.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index bfcc6342df..ff36e6c574 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5904,13 +5904,39 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ -S "Inject buffered CCS message" \ -S "Remember CCS message" -run_test "DTLS reordering: Buffer out-of-order handshake message on client before reassembling next" \ +# The client buffers the ServerKeyExchange before receiving the fragmented +# Certificate message; at the time of writing, together these are aroudn 1200b +# in size, so that the bound below ensures that the certificate can be reassembled +# while keeping the ServerKeyExchange. +requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300 +run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \ -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \ "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ 0 \ -c "Buffering HS message" \ -c "Next handshake message has been buffered - load"\ + -C "attempt to make space by freeing buffered messages" \ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load"\ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" + +# The size constraints ensure that the delayed certificate message can't +# be reassembled while keeping the ServerKeyExchange message, but it can +# when dropping it first. +requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900 +requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299 +run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \ + -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -c "Buffering HS message" \ + -c "attempt to make space by freeing buffered future messages" \ + -c "Enough space available after freeing buffered HS messages" \ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load"\ -C "Inject buffered CCS message" \ @@ -5960,7 +5986,7 @@ run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ -s "Inject buffered CCS message" \ -s "Remember CCS message" -run_test "DTLS reordering: Buffer record from future epoch (client and server)" \ +run_test "DTLS reordering: Buffer encrypted Finished message" \ -p "$P_PXY delay_ccs=1" \ "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ @@ -5970,6 +5996,34 @@ run_test "DTLS reordering: Buffer record from future epoch (client and server -c "Buffer record from epoch 1" \ -c "Found buffered record from current epoch - load" +# In this test, both the fragmented NewSessionTicket and the ChangeCipherSpec +# from the server are delayed, so that the encrypted Finished message +# is received and buffered. When the fragmented NewSessionTicket comes +# in afterwards, the encrypted Finished message must be freed in order +# to make space for the NewSessionTicket to be reassembled. +# This works only in very particular circumstances: +# - MBEDTLS_SSL_DTLS_MAX_BUFFERING must be large enough to allow buffering +# of the NewSessionTicket, but small enough to also allow buffering of +# the encrypted Finished message. +# - The MTU setting on the server must be so small that the NewSessionTicket +# needs to be fragmented. +# - All messages sent by the server must be small enough to be either sent +# without fragmentation or be reassembled within the bounds of +# MBEDTLS_SSL_DTLS_MAX_BUFFERING. Achieve this by testing with a PSK-based +# handshake, omitting CRTs. +requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 240 +requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 280 +run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" \ + -p "$P_PXY delay_srv=NewSessionTicket delay_srv=NewSessionTicket delay_ccs=1" \ + "$P_SRV mtu=190 dgram_packing=0 psk=abc123 psk_identity=foo cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 psk=abc123 psk_identity=foo" \ + 0 \ + -s "Buffer record from epoch 1" \ + -s "Found buffered record from current epoch - load" \ + -c "Buffer record from epoch 1" \ + -C "Found buffered record from current epoch - load" \ + -c "Enough space available after freeing future epoch record" + # Tests for "randomly unreliable connection": try a variety of flows and peers client_needs_more_time 2 From 2f5aa4c64eb4df3758245a4be7199856795248cb Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 14:43:44 +0100 Subject: [PATCH 0956/1100] all.sh: Add builds allowing to test dropping buffered messages This commit adds two builds to all.sh which use a value of MBEDTLS_SSL_DTLS_MAX_BUFFERING that allows to run the reordering tests in ssl-opt.sh introduced in the last commit. --- tests/scripts/all.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index d7d5a8c1a1..0606caae3f 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -558,6 +558,26 @@ make msg "test: small SSL_IN_CONTENT_LEN - ssl-opt.sh MFL tests" if_build_succeeded tests/ssl-opt.sh -f "Max fragment" +msg "build: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #0" +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl set MBEDTLS_SSL_DTLS_MAX_BUFFERING 1000 +CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . +make + +msg "test: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #0 - ssl-opt.sh specific reordering test" +if_build_succeeded tests/ssl-opt.sh -f "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" + +msg "build: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #1" +cleanup +cp "$CONFIG_H" "$CONFIG_BAK" +scripts/config.pl set MBEDTLS_SSL_DTLS_MAX_BUFFERING 240 +CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . +make + +msg "test: small MBEDTLS_SSL_DTLS_MAX_BUFFERING #1 - ssl-opt.sh specific reordering test" +if_build_succeeded tests/ssl-opt.sh -f "DTLS reordering: Buffer encrypted Finished message, drop for fragmented NewSessionTicket" + msg "build: cmake, full config, clang" # ~ 50s cleanup cp "$CONFIG_H" "$CONFIG_BAK" From 159a37f75dc1db92f32fc86259cf8a0f0afc55f8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 24 Aug 2018 15:07:29 +0100 Subject: [PATCH 0957/1100] config.h: Don't use arithmetical exp for SSL_DTLS_MAX_BUFFERING The functions requires_config_value_at_least and requires_config_value_at_most only work with numerical constants. --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 70dd4be2b4..1cdff71f18 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3016,7 +3016,7 @@ * DTLS handshake message reassembly and future message buffering. * */ -//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING ( 2 * 16384 ) +//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768 //#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ //#define MBEDTLS_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ From 6a4f224ac3406d8afa6ed5753aa77110a132c454 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Mon, 27 Aug 2018 08:00:13 -0400 Subject: [PATCH 0958/1100] ssl-opt.sh: change expected output for large srv packet test with SSLv3 This test also exercises a protection against BEAST and should expect message splitting. --- tests/ssl-opt.sh | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 92151fd87f..9903aad73c 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -4493,15 +4493,6 @@ run_test "Large client packet TLS 1.2 AEAD shorter tag" \ -s "Read from client: 16384 bytes read" # Test for large server packets - -requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 -run_test "Large server packet SSLv3 BlockCipher" \ - "$P_SRV response_size=16384 min_version=ssl3" \ - "$P_CLI force_version=ssl3 recsplit=0 \ - force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ - 0 \ - -c "Read from server: 16384 bytes read" - requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 run_test "Large server packet SSLv3 StreamCipher" \ "$P_SRV response_size=16384 min_version=ssl3 arc4=1 force_ciphersuite=TLS-RSA-WITH-RC4-128-SHA" \ @@ -4510,7 +4501,17 @@ run_test "Large server packet SSLv3 StreamCipher" \ 0 \ -c "Read from server: 16384 bytes read" -# Checking next 2 tests logs for 1n-1 split against BEAST too +# Checking next 4 tests logs for 1n-1 split against BEAST too +requires_config_enabled MBEDTLS_SSL_PROTO_SSL3 +run_test "Large server packet SSLv3 BlockCipher" \ + "$P_SRV response_size=16384 min_version=ssl3" \ + "$P_CLI force_version=ssl3 recsplit=0 \ + force_ciphersuite=TLS-RSA-WITH-AES-256-CBC-SHA" \ + 0 \ + -c "Read from server: 1 bytes read"\ + -c "16383 bytes read"\ + -C "Read from server: 16384 bytes read" + run_test "Large server packet TLS 1.0 BlockCipher" \ "$P_SRV response_size=16384" \ "$P_CLI force_version=tls1 recsplit=0 \ From 280075104e64a326985417c1e3f7dc4658586c8c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 09:46:44 +0100 Subject: [PATCH 0959/1100] DTLS Reordering: Improve doc of MBEDTLS_SSL_DTLS_MAX_BUFFERING --- include/mbedtls/config.h | 9 +++++++++ include/mbedtls/ssl.h | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 1cdff71f18..70770de435 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3015,6 +3015,15 @@ * Maximum number of heap-allocated bytes for the purpose of * DTLS handshake message reassembly and future message buffering. * + * This should be at least 9/8 * MBEDTLSSL_MAX_IN_CONTENT_LEN + * to account for a reassembled handshake message of maximum size, + * together with its reassembly bitmap. + * + * A value of 2 * MBEDTLS_SSL_MAX_IN_CONTENT_LEN (32768 by default) + * should be sufficient for all practical situations as it allows + * to reassembly a large handshake message (such as a certificate) + * while buffering multiple smaller handshake messages. + * */ //#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768 diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 39c7bfaa10..5de911cd53 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -243,8 +243,12 @@ #define MBEDTLS_SSL_OUT_CONTENT_LEN MBEDTLS_SSL_MAX_CONTENT_LEN #endif +/* + * Maximum number of heap-allocated bytes for the purpose of + * DTLS handshake message reassembly and future message buffering. + */ #if !defined(MBEDTLS_SSL_DTLS_MAX_BUFFERING) -#define MBEDTLS_SSL_DTLS_MAX_BUFFERING ( 2 * MBEDTLS_SSL_IN_CONTENT_LEN ) +#define MBEDTLS_SSL_DTLS_MAX_BUFFERING 32768 #endif /* \} name SECTION: Module settings */ From 3f7b973e32dc659b7e0984ec4298e5d044bc0bbf Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 09:53:25 +0100 Subject: [PATCH 0960/1100] Correct typo in mbedtls_ssl_flight_transmit() --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ccd73996d8..ceea17fa38 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3037,7 +3037,7 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_BUF( 3, "handshake header", ssl->out_msg, 12 ); - /* Copy the handshame message content and set records fields */ + /* Copy the handshake message content and set records fields */ memcpy( ssl->out_msg + 12, p, cur_hs_frag_len ); ssl->out_msglen = cur_hs_frag_len + 12; ssl->out_msgtype = cur->type; From ecbdf1c0481a2a9caeb9e32f1c8e80967457ed04 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 09:53:54 +0100 Subject: [PATCH 0961/1100] Style: Correct indentation of debug msgs in mbedtls_ssl_write_record --- library/ssl_tls.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index ceea17fa38..5f1ec07730 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3402,12 +3402,12 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) #endif /* MBEDTLS_SSL_PROTO_DTLS */ MBEDTLS_SSL_DEBUG_MSG( 3, ( "output record: msgtype = %d, " - "version = [%d:%d], msglen = %d", - ssl->out_hdr[0], ssl->out_hdr[1], ssl->out_hdr[2], len ) ); - + "version = [%d:%d], msglen = %d", + ssl->out_hdr[0], ssl->out_hdr[1], + ssl->out_hdr[2], len ) ); MBEDTLS_SSL_DEBUG_BUF( 4, "output record sent to network", - ssl->out_hdr, protected_record_size ); + ssl->out_hdr, protected_record_size ); ssl->out_left += protected_record_size; ssl->out_hdr += protected_record_size; From f0da6670dcf2485da3f6aa2e08eb679d5e509c7e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 09:55:10 +0100 Subject: [PATCH 0962/1100] Style: Add braces around if-branch where else-branch has them --- library/ssl_tls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 5f1ec07730..4cb543ca79 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3440,7 +3440,9 @@ int mbedtls_ssl_write_record( mbedtls_ssl_context *ssl, uint8_t force_flush ) remaining = (size_t) ret; if( remaining == 0 ) + { flush = SSL_FORCE_FLUSH; + } else { MBEDTLS_SSL_DEBUG_MSG( 2, ( "Still %u bytes available in current datagram", (unsigned) remaining ) ); From b8f50147ee79024f07593542339330bef25a937f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:01:34 +0100 Subject: [PATCH 0963/1100] Add explicit MBEDTLS_DEBUG_C-guard around debugging code --- library/ssl_tls.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4cb543ca79..4777844c45 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4424,6 +4424,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) goto exit; } +#if defined(MBEDTLS_DEBUG_C) /* Debug only */ { unsigned offset; @@ -4438,6 +4439,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) } } } +#endif /* MBEDTLS_DEBUG_C */ /* Check if we have buffered and/or fully reassembled the * next handshake message. */ From 4f432ad44de7fadbf015d9576e3f657ef551faab Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:02:32 +0100 Subject: [PATCH 0964/1100] Style: Don't use abbreviations in comments --- library/ssl_tls.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 4777844c45..425cdee93a 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4505,9 +4505,9 @@ static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, return( 0 ); } - /* We don't have enough space to buffer the next expected - * handshake message. Remove buffers used for future msgs - * to gain space, starting with the most distant one. */ + /* We don't have enough space to buffer the next expected handshake + * message. Remove buffers used for future messages to gain space, + * starting with the most distant one. */ for( offset = MBEDTLS_SSL_MAX_BUFFERED_HS - 1; offset >= 0; offset-- ) { From 360bef3fe39b5f0b2887db4d39ca7d2e1636ea56 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:04:33 +0100 Subject: [PATCH 0965/1100] Reordering: Document that only HS and CCS msgs are buffered --- library/ssl_tls.c | 1 + 1 file changed, 1 insertion(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 425cdee93a..0703b6a7bf 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4710,6 +4710,7 @@ static int ssl_buffer_message( mbedtls_ssl_context *ssl ) } default: + /* We don't buffer other types of messages. */ break; } From d58477769d355fd753afef5dc77c5447b13cedd1 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:09:23 +0100 Subject: [PATCH 0966/1100] Style: Group buffering-related forward declarations in ssl_tls.c --- library/ssl_tls.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 0703b6a7bf..38d9d02968 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -109,6 +109,17 @@ static void ssl_update_in_pointers( mbedtls_ssl_context *ssl, #if defined(MBEDTLS_SSL_PROTO_DTLS) +/* Forward declarations for functions related to message buffering. */ +static void ssl_buffering_free( mbedtls_ssl_context *ssl ); +static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, + uint8_t slot ); +static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ); +static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); +static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); +static int ssl_buffer_message( mbedtls_ssl_context *ssl ); +static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ); +static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); + static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); static size_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) { @@ -183,11 +194,6 @@ static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl return( (int) remaining ); } -static void ssl_buffering_free( mbedtls_ssl_context *ssl ); - -static void ssl_buffering_free_slot( mbedtls_ssl_context *ssl, - uint8_t slot ); - /* * Double the retransmit timeout value, within the allowed range, * returning -1 if the maximum value has already been reached. @@ -4287,14 +4293,6 @@ static int ssl_consume_current_message( mbedtls_ssl_context *ssl ); static int ssl_get_next_record( mbedtls_ssl_context *ssl ); static int ssl_record_is_in_progress( mbedtls_ssl_context *ssl ); -#if defined(MBEDTLS_SSL_PROTO_DTLS) -static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); -static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); -static int ssl_buffer_message( mbedtls_ssl_context *ssl ); -static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ); -static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); -#endif /* MBEDTLS_SSL_PROTO_DTLS */ - int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, unsigned update_hs_digest ) { @@ -4485,7 +4483,6 @@ exit: return( ret ); } -static void ssl_free_buffered_record( mbedtls_ssl_context *ssl ); static int ssl_buffer_make_space( mbedtls_ssl_context *ssl, size_t desired ) { From cf469458caf74173c045e62b508a602016f02c9a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:09:47 +0100 Subject: [PATCH 0967/1100] Style: Add empty line before comment in UDP proxy code --- programs/test/udp_proxy.c | 1 + 1 file changed, 1 insertion(+) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 2585220037..46f7035b92 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -663,6 +663,7 @@ int handle_message( const char *way, delay_list = opt.delay_srv; delay_list_len = opt.delay_srv_cnt; } + /* Check if message type is in the list of messages * that should be delayed */ for( delay_idx = 0; delay_idx < delay_list_len; delay_idx++ ) From bc2498a9ffc3d80816cef82055309eb5ab4f915c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:13:29 +0100 Subject: [PATCH 0968/1100] Style: Add numerous comments indicating condition guarded by #endif --- include/mbedtls/ssl.h | 22 +++++++++++----------- library/ssl_cli.c | 4 ++-- library/ssl_srv.c | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 5de911cd53..91101cd28c 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1031,14 +1031,14 @@ struct mbedtls_ssl_context int renego_records_seen; /*!< Records since renego request, or with DTLS, number of retransmissions of request if renego_max_records is < 0 */ -#endif +#endif /* MBEDTLS_SSL_RENEGOTIATION */ int major_ver; /*!< equal to MBEDTLS_SSL_MAJOR_VERSION_3 */ int minor_ver; /*!< either 0 (SSL3) or 1 (TLS1.0) */ #if defined(MBEDTLS_SSL_DTLS_BADMAC_LIMIT) unsigned badmac_seen; /*!< records with a bad MAC received */ -#endif +#endif /* MBEDTLS_SSL_DTLS_BADMAC_LIMIT */ mbedtls_ssl_send_t *f_send; /*!< Callback for network send */ mbedtls_ssl_recv_t *f_recv; /*!< Callback for network receive */ @@ -1094,11 +1094,11 @@ struct mbedtls_ssl_context uint16_t in_epoch; /*!< DTLS epoch for incoming records */ size_t next_record_offset; /*!< offset of the next record in datagram (equal to in_left if none) */ -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) uint64_t in_window_top; /*!< last validated record seq_num */ uint64_t in_window; /*!< bitmask for replay detection */ -#endif +#endif /* MBEDTLS_SSL_DTLS_ANTI_REPLAY */ size_t in_hslen; /*!< current handshake message length, including the handshake header */ @@ -1130,14 +1130,14 @@ struct mbedtls_ssl_context #if defined(MBEDTLS_SSL_PROTO_DTLS) uint16_t mtu; /*!< path mtu, used to fragment outgoing messages */ -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_ZLIB_SUPPORT) unsigned char *compress_buf; /*!< zlib data buffer */ -#endif +#endif /* MBEDTLS_ZLIB_SUPPORT */ #if defined(MBEDTLS_SSL_CBC_RECORD_SPLITTING) signed char split_done; /*!< current record already splitted? */ -#endif +#endif /* MBEDTLS_SSL_CBC_RECORD_SPLITTING */ /* * PKI layer @@ -1150,11 +1150,11 @@ struct mbedtls_ssl_context #if defined(MBEDTLS_X509_CRT_PARSE_C) char *hostname; /*!< expected peer CN for verification (and SNI if available) */ -#endif +#endif /* MBEDTLS_X509_CRT_PARSE_C */ #if defined(MBEDTLS_SSL_ALPN) const char *alpn_chosen; /*!< negotiated protocol */ -#endif +#endif /* MBEDTLS_SSL_ALPN */ /* * Information for DTLS hello verify @@ -1162,7 +1162,7 @@ struct mbedtls_ssl_context #if defined(MBEDTLS_SSL_DTLS_HELLO_VERIFY) && defined(MBEDTLS_SSL_SRV_C) unsigned char *cli_id; /*!< transport-level ID of the client */ size_t cli_id_len; /*!< length of cli_id */ -#endif +#endif /* MBEDTLS_SSL_DTLS_HELLO_VERIFY && MBEDTLS_SSL_SRV_C */ /* * Secure renegotiation @@ -1174,7 +1174,7 @@ struct mbedtls_ssl_context size_t verify_data_len; /*!< length of verify data stored */ char own_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ char peer_verify_data[MBEDTLS_SSL_VERIFY_DATA_MAX_LEN]; /*!< previous handshake verify data */ -#endif +#endif /* MBEDTLS_SSL_RENEGOTIATION */ }; #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index d160c42d02..2c325aab61 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -1101,7 +1101,7 @@ static int ssl_write_client_hello( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); return( ret ); } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write client hello" ) ); @@ -3414,7 +3414,7 @@ int mbedtls_ssl_handshake_client_step( mbedtls_ssl_context *ssl ) if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) return( ret ); } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ /* Change state now, so that it is right in mbedtls_ssl_read_record(), used * by DTLS for dropping out-of-sequence ChangeCipherSpec records */ diff --git a/library/ssl_srv.c b/library/ssl_srv.c index 84c83e3303..36ca0d69f9 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -2397,7 +2397,7 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); return( ret ); } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write hello verify request" ) ); @@ -3385,7 +3385,7 @@ static int ssl_write_server_hello_done( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_flight_transmit", ret ); return( ret ); } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= write server hello done" ) ); @@ -4264,7 +4264,7 @@ int mbedtls_ssl_handshake_server_step( mbedtls_ssl_context *ssl ) if( ( ret = mbedtls_ssl_flight_transmit( ssl ) ) != 0 ) return( ret ); } -#endif +#endif /* MBEDTLS_SSL_PROTO_DTLS */ switch( ssl->state ) { From b9a0086975fa966bf113db2d853bd978c4498475 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:20:22 +0100 Subject: [PATCH 0969/1100] ssl-opt.sh: Explain use of --insecure in GnuTLS client tests --- tests/ssl-opt.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ff36e6c574..01867e1fd6 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5535,6 +5535,13 @@ run_test "DTLS fragmenting: gnutls server, DTLS 1.0" \ -c "fragmenting handshake message" \ -C "error" +# We use --insecure for the GnuTLS client because it expects +# the hostname / IP it connects to to be the name used in the +# certificate obtained from the server. Here, however, it +# connects to 127.0.0.1 while our test certificates use 'localhost' +# as the server name in the certificate. This will make the +# certifiate validation fail, but passing --insecure makes +# GnuTLS continue the connection nonetheless. requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5549,6 +5556,7 @@ run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \ 0 \ -s "fragmenting handshake message" +# See previous test for the reason to use --insecure requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 3b8b40c16dbfb3df1c33025bd08c6d9bcf15a147 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:25:41 +0100 Subject: [PATCH 0970/1100] ssl-opt.sh: Add function to skip next test --- tests/ssl-opt.sh | 105 +++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 48 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 01867e1fd6..852597d9d2 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -142,6 +142,14 @@ get_options() { done } +# Skip next test; use this macro to skip tests which are legitimate +# in theory and expected to be re-introduced at some point, but +# aren't expected to succeed at the moment due to problems outside +# our control (such as bugs in other TLS implementations). +skip_next_test() { + SKIP_NEXT="YES" +} + # skip next test if the flag is not enabled in config.h requires_config_enabled() { if grep "^#define $1" $CONFIG_H > /dev/null; then :; else @@ -5668,38 +5676,39 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## https://gitlab.com/gnutls/gnutls/issues/543 ## We can re-enable them when a fixed version fo GnuTLS is available ## and installed in our CI system. -## -## requires_gnutls -## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -## requires_config_enabled MBEDTLS_RSA_C -## requires_config_enabled MBEDTLS_ECDSA_C -## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 4 -## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \ -## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$P_SRV dtls=1 debug_level=2 \ -## crt_file=data_files/server7_int-ca.crt \ -## key_file=data_files/server7.key \ -## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ -## "$G_CLI -u --insecure 127.0.0.1" \ -## 0 \ -## -s "fragmenting handshake message" -## -## requires_gnutls -## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -## requires_config_enabled MBEDTLS_RSA_C -## requires_config_enabled MBEDTLS_ECDSA_C -## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 -## client_needs_more_time 4 -## run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ -## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$P_SRV dtls=1 debug_level=2 \ -## crt_file=data_files/server7_int-ca.crt \ -## key_file=data_files/server7.key \ -## hs_timeout=250-60000 mtu=512 force_version=dtls1" \ -## "$G_CLI -u --insecure 127.0.0.1" \ -## 0 \ -## -s "fragmenting handshake message" +skip_next_test +requires_gnutls +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +client_needs_more_time 4 +run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.2" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ + "$G_CLI -u --insecure 127.0.0.1" \ + 0 \ + -s "fragmenting handshake message" + +skip_next_test +requires_gnutls +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 +client_needs_more_time 4 +run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=250-60000 mtu=512 force_version=dtls1" \ + "$G_CLI -u --insecure 127.0.0.1" \ + 0 \ + -s "fragmenting handshake message" ## Interop test with OpenSSL might triger a bug in recent versions (that ## probably won't be fixed before 1.1.1X), so we use an old version that @@ -5708,22 +5717,22 @@ run_test "DTLS fragmenting: 3d, gnutls server, DTLS 1.0" \ ## Bug report: https://github.com/openssl/openssl/issues/6902 ## They should be re-enabled (and the DTLS 1.0 switched back to a non-legacy ## version of OpenSSL once a fixed version of OpenSSL is available) -## -## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -## requires_config_enabled MBEDTLS_RSA_C -## requires_config_enabled MBEDTLS_ECDSA_C -## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 4 -## run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \ -## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$O_SRV -dtls1_2 -verify 10" \ -## "$P_CLI dtls=1 debug_level=2 \ -## crt_file=data_files/server8_int-ca2.crt \ -## key_file=data_files/server8.key \ -## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ -## 0 \ -## -c "fragmenting handshake message" \ -## -C "error" +skip_next_test +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +client_needs_more_time 4 +run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$O_SRV -dtls1_2 -verify 10" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ + 0 \ + -c "fragmenting handshake message" \ + -C "error" requires_openssl_legacy requires_config_enabled MBEDTLS_SSL_PROTO_DTLS From b841b4f107aa3368ade353de8845b10858aeaee8 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:25:51 +0100 Subject: [PATCH 0971/1100] ssl-opt.sh: Remove reference to Github issue --- tests/ssl-opt.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 852597d9d2..17629b41f4 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5289,9 +5289,8 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ -c "found fragmented DTLS handshake message" \ -C "error" -# This ensures things still work after session_reset(), -# for example it would have caught #1941. -# It also exercises the "resumed hanshake" flow. +# This ensures things still work after session_reset(). +# It also exercises the "resumed handshake" flow. # Since we don't support reading fragmented ClientHello yet, # up the MTU to 1450 (larger than ClientHello with session ticket, # but still smaller than client's Certificate to ensure fragmentation). From 0207e533b21776e304c99b6bb9e2a2826cf2d421 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:28:28 +0100 Subject: [PATCH 0972/1100] Style: Correct typo in ssl-tls.c --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 38d9d02968..c123c7a320 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3280,7 +3280,7 @@ int mbedtls_ssl_write_handshake_msg( mbedtls_ssl_context *ssl ) } #endif /* MBEDTLS_SSL_PROTO_DTLS */ - /* Update running hashes of hanshake messages seen */ + /* Update running hashes of handshake messages seen */ if( hs_type != MBEDTLS_SSL_HS_HELLO_REQUEST ) ssl->handshake->update_checksum( ssl, ssl->out_msg, ssl->out_msglen ); } From eefe084f7299959b5138a80709aa1dc6f05f4885 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 10:29:17 +0100 Subject: [PATCH 0973/1100] Style: Spell out PMTU in ssl.h --- include/mbedtls/ssl.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 91101cd28c..83849a5645 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -1409,8 +1409,9 @@ void mbedtls_ssl_set_bio( mbedtls_ssl_context *ssl, * encapsulation and encryption/authentication if any. * * \note This can be called at any point during the connection, for - * example when a PMTU estimate becomes available from other - * sources, such as lower (or higher) protocol layers. + * example when a Path Maximum Transfer Unit (PMTU) + * estimate becomes available from other sources, + * such as lower (or higher) protocol layers. * * \note This setting only controls the size of the packets we send, * and does not restrict the size of the datagrams we're From 41038108e93f1176e7e62a67059e6dd816e484ac Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 11:15:32 +0100 Subject: [PATCH 0974/1100] Style: Correct indentation in UDP proxy code --- programs/test/udp_proxy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 46f7035b92..0165d3f6a4 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -152,10 +152,10 @@ static struct options int delay; /* delay 1 packet in N (none if 0) */ int delay_ccs; /* delay ChangeCipherSpec */ char* delay_cli[MAX_DELAYED_HS]; /* handshake types of messages from - * client that should be delayed. */ + * client that should be delayed. */ uint8_t delay_cli_cnt; /* Number of entries in delay_cli. */ char* delay_srv[MAX_DELAYED_HS]; /* handshake types of messages from - * server that should be delayed. */ + * server that should be delayed. */ uint8_t delay_srv_cnt; /* Number of entries in delay_srv. */ int drop; /* drop 1 packet in N (none if 0) */ int mtu; /* drop packets larger than this */ From e604556febc8dd666f34e200b7ebc22061bfc6ce Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 11:24:55 +0100 Subject: [PATCH 0975/1100] ssl-opt.sh: Don't hardcode varname in requires_config_value_xxx() --- tests/ssl-opt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 17629b41f4..86bede8933 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -166,7 +166,7 @@ requires_config_disabled() { requires_config_value_at_least() { NAME="$1" - DEF_VAL=$( grep ".*#define.*MBEDTLS_SSL_DTLS_MAX_BUFFERING" ../include/mbedtls/config.h | + DEF_VAL=$( grep ".*#define.*${NAME}" ../include/mbedtls/config.h | sed 's/^.*\s\([0-9]*\)$/\1/' ) VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) if [ "$VAL" -lt "$2" ]; then @@ -176,7 +176,7 @@ requires_config_value_at_least() { requires_config_value_at_most() { NAME="$1" - DEF_VAL=$( grep ".*#define.*MBEDTLS_SSL_DTLS_MAX_BUFFERING" ../include/mbedtls/config.h | + DEF_VAL=$( grep ".*#define.*${NAME}" ../include/mbedtls/config.h | sed 's/^.*\s\([0-9]*\)$/\1/' ) VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) if [ "$VAL" -gt "$2" ]; then From 02f6f5af2641ff1d1505fa3f3626583d0e08bfe5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 12:54:27 +0100 Subject: [PATCH 0976/1100] Adapt ChangeLog Make explicit that buffering support is about DTLS. --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a97bfaa89f..b9b873be8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,7 +12,7 @@ Features last paragraph). * Add support for packing multiple records within a single datagram, enabled by default. - * Add support for buffering out-of-order handshake messages. + * Add support for buffering out-of-order handshake messages in DTLS. The maximum amount of RAM used for this can be controlled by the compile-time constant MBEDTLS_SSL_DTLS_MAX_BUFFERING defined in mbedtls/config.h. From 97a1c134b232b9a2145c1e1482548a6808f370c2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 14:42:15 +0100 Subject: [PATCH 0977/1100] Correct typo in documentation of MBEDTLS_SSL_DTLS_MAX_BUFFERING --- include/mbedtls/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 70770de435..052aed0d3f 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3015,11 +3015,11 @@ * Maximum number of heap-allocated bytes for the purpose of * DTLS handshake message reassembly and future message buffering. * - * This should be at least 9/8 * MBEDTLSSL_MAX_IN_CONTENT_LEN + * This should be at least 9/8 * MBEDTLSSL_IN_CONTENT_LEN * to account for a reassembled handshake message of maximum size, * together with its reassembly bitmap. * - * A value of 2 * MBEDTLS_SSL_MAX_IN_CONTENT_LEN (32768 by default) + * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default) * should be sufficient for all practical situations as it allows * to reassembly a large handshake message (such as a certificate) * while buffering multiple smaller handshake messages. From dc1e95017048dbd2a5a242632ce6fa48e6dbb47f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 16:02:33 +0100 Subject: [PATCH 0978/1100] DTLS reordering: Add test for buffering a proper fragment This commit adds a test to ssl-opt.sh which exercises the behavior of the library in the situation where a single proper fragment of a future handshake message is received prior to the next expected handshake message (concretely, the client receives the first fragment of the server's Certificate message prior to the server's ServerHello). --- tests/ssl-opt.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 86bede8933..7ea9245671 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5920,6 +5920,22 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ -S "Inject buffered CCS message" \ -S "Remember CCS message" +run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \ + -p "$P_PXY delay_srv=ServerHello" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + 0 \ + -c "Buffering HS message" \ + -c "found fragmented DTLS handshake message"\ + -c "Next handshake message 1 not or only partially bufffered" \ + -c "Next handshake message has been buffered - load"\ + -S "Buffering HS message" \ + -S "Next handshake message has been buffered - load"\ + -C "Inject buffered CCS message" \ + -C "Remember CCS message" \ + -S "Inject buffered CCS message" \ + -S "Remember CCS message" + # The client buffers the ServerKeyExchange before receiving the fragmented # Certificate message; at the time of writing, together these are aroudn 1200b # in size, so that the bound below ensures that the certificate can be reassembled From 7c48dd11dbee505e8bab82b2d5941cd3c190243e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 16:09:22 +0100 Subject: [PATCH 0979/1100] ssl-opt.sh: Add function extracting val or default val from config.h --- tests/ssl-opt.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 7ea9245671..b0ee3d47ea 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -164,21 +164,22 @@ requires_config_disabled() { fi } -requires_config_value_at_least() { +get_config_value_or_default() { NAME="$1" DEF_VAL=$( grep ".*#define.*${NAME}" ../include/mbedtls/config.h | sed 's/^.*\s\([0-9]*\)$/\1/' ) - VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) + ../scripts/config.pl get $NAME || echo "$DEF_VAL" +} + +requires_config_value_at_least() { + VAL=$( get_config_value_or_default "$1" ) if [ "$VAL" -lt "$2" ]; then SKIP_NEXT="YES" fi } requires_config_value_at_most() { - NAME="$1" - DEF_VAL=$( grep ".*#define.*${NAME}" ../include/mbedtls/config.h | - sed 's/^.*\s\([0-9]*\)$/\1/' ) - VAL=$( ../scripts/config.pl get $NAME || echo "$DEF_VAL" ) + VAL=$( get_config_value_or_default "$1" ) if [ "$VAL" -gt "$2" ]; then SKIP_NEXT="YES" fi From c573ac33dd2c74e706b80d05a665e3f7d18e035c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:15:25 +0100 Subject: [PATCH 0980/1100] Fix typos in debug message and comment in ssl-tls.c --- library/ssl_tls.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index c123c7a320..7386fdd6e0 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4331,7 +4331,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, if( ret != 0 ) { - MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ssl_read_record_layer" ), ret ); + MBEDTLS_SSL_DEBUG_RET( 1, ( "ssl_get_next_record" ), ret ); return( ret ); } } @@ -7725,7 +7725,7 @@ int mbedtls_ssl_check_pending( const mbedtls_ssl_context *ssl ) /* * In all other cases, the rest of the message can be dropped. - * As in ssl_read_record_layer, this needs to be adapted if + * As in ssl_get_next_record, this needs to be adapted if * we implement support for multiple alerts in single records. */ From ef7afdfa5a8c0bd95d38091a722e826f9e35997c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:16:31 +0100 Subject: [PATCH 0981/1100] Rename another_record_in_datagram to next_record_is_in_datagram --- library/ssl_tls.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 7386fdd6e0..f7663c7005 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -118,7 +118,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ); static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ); static int ssl_buffer_message( mbedtls_ssl_context *ssl ); static int ssl_buffer_future_record( mbedtls_ssl_context *ssl ); -static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ); +static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ); static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); static size_t ssl_get_maximum_datagram_size( mbedtls_ssl_context const *ssl ) @@ -4316,7 +4316,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, /* We only check for buffered messages if the * current datagram is fully consumed. */ if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM && - ssl_another_record_in_datagram( ssl ) == 0 ) + ssl_next_record_is_in_datagram( ssl ) == 0 ) { if( ssl_load_buffered_message( ssl ) == 0 ) have_buffered = 1; @@ -4378,7 +4378,7 @@ int mbedtls_ssl_read_record( mbedtls_ssl_context *ssl, } #if defined(MBEDTLS_SSL_PROTO_DTLS) -static int ssl_another_record_in_datagram( mbedtls_ssl_context *ssl ) +static int ssl_next_record_is_in_datagram( mbedtls_ssl_context *ssl ) { if( ssl->in_left > ssl->next_record_offset ) return( 1 ); @@ -4853,7 +4853,7 @@ static int ssl_load_buffered_record( mbedtls_ssl_context *ssl ) /* Only consider loading future records if the * input buffer is empty. */ - if( ssl_another_record_in_datagram( ssl ) == 1 ) + if( ssl_next_record_is_in_datagram( ssl ) == 1 ) return( 0 ); MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> ssl_load_buffered_record" ) ); From 39b8bc9aef62d3672203b6edd0ea7ecaef7ffbed Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:17:13 +0100 Subject: [PATCH 0982/1100] Change wording of debug message --- library/ssl_tls.c | 2 +- tests/ssl-opt.sh | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index f7663c7005..6fa32418fa 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4409,7 +4409,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) goto exit; } - MBEDTLS_SSL_DEBUG_MSG( 2, ( "Inject buffered CCS message" ) ); + MBEDTLS_SSL_DEBUG_MSG( 2, ( "Injecting buffered CCS message" ) ); ssl->in_msgtype = MBEDTLS_SSL_MSG_CHANGE_CIPHER_SPEC; ssl->in_msglen = 1; ssl->in_msg[0] = 1; diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index b0ee3d47ea..3575429df7 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5916,9 +5916,9 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ -c "Next handshake message has been buffered - load"\ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load"\ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \ @@ -5932,9 +5932,9 @@ run_test "DTLS reordering: Buffer out-of-order handshake message fragment on -c "Next handshake message has been buffered - load"\ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load"\ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" # The client buffers the ServerKeyExchange before receiving the fragmented @@ -5952,9 +5952,9 @@ run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling nex -C "attempt to make space by freeing buffered messages" \ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load"\ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" # The size constraints ensure that the delayed certificate message can't @@ -5972,9 +5972,9 @@ run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling nex -c "Enough space available after freeing buffered HS messages" \ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load"\ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ @@ -5986,9 +5986,9 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ -C "Next handshake message has been buffered - load"\ -s "Buffering HS message" \ -s "Next handshake message has been buffered - load" \ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" run_test "DTLS reordering: Buffer out-of-order CCS message on client"\ @@ -6000,9 +6000,9 @@ run_test "DTLS reordering: Buffer out-of-order CCS message on client"\ -C "Next handshake message has been buffered - load"\ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load" \ - -c "Inject buffered CCS message" \ + -c "Injecting buffered CCS message" \ -c "Remember CCS message" \ - -S "Inject buffered CCS message" \ + -S "Injecting buffered CCS message" \ -S "Remember CCS message" run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ @@ -6014,9 +6014,9 @@ run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ -C "Next handshake message has been buffered - load"\ -S "Buffering HS message" \ -S "Next handshake message has been buffered - load" \ - -C "Inject buffered CCS message" \ + -C "Injecting buffered CCS message" \ -C "Remember CCS message" \ - -s "Inject buffered CCS message" \ + -s "Injecting buffered CCS message" \ -s "Remember CCS message" run_test "DTLS reordering: Buffer encrypted Finished message" \ From cd9dcda0a0f47b556d0d0e6796cd97d49dfe1bca Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:18:56 +0100 Subject: [PATCH 0983/1100] Add const qualifier to handshake header reading functions --- library/ssl_tls.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 6fa32418fa..15e4aa6bcc 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -55,7 +55,7 @@ #endif static void ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); -static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context *ssl ); +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ); /* Length of the "epoch" field in the record header */ static inline size_t ssl_ep_len( const mbedtls_ssl_context *ssl ) @@ -3481,21 +3481,21 @@ static int ssl_hs_is_proper_fragment( mbedtls_ssl_context *ssl ) return( 0 ); } -static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context *ssl ) +static uint32_t ssl_get_hs_frag_len( mbedtls_ssl_context const *ssl ) { return( ( ssl->in_msg[9] << 16 ) | ( ssl->in_msg[10] << 8 ) | ssl->in_msg[11] ); } -static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context *ssl ) +static uint32_t ssl_get_hs_frag_off( mbedtls_ssl_context const *ssl ) { return( ( ssl->in_msg[6] << 16 ) | ( ssl->in_msg[7] << 8 ) | ssl->in_msg[8] ); } -static int ssl_check_hs_header( mbedtls_ssl_context *ssl ) +static int ssl_check_hs_header( mbedtls_ssl_context const *ssl ) { uint32_t msg_len, frag_off, frag_len; @@ -3593,7 +3593,7 @@ static size_t ssl_get_reassembly_buffer_size( size_t msg_len, #endif /* MBEDTLS_SSL_PROTO_DTLS */ -static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context *ssl ) +static uint32_t ssl_get_hs_total_len( mbedtls_ssl_context const *ssl ) { return( ( ssl->in_msg[1] << 16 ) | ( ssl->in_msg[2] << 8 ) | From 83ab41c665611fbb75e08b521f6fcae0aaf37101 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:19:38 +0100 Subject: [PATCH 0984/1100] Correct typo in comment --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 15e4aa6bcc..125f6bca9c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3672,7 +3672,7 @@ int mbedtls_ssl_prepare_handshake_record( mbedtls_ssl_context *ssl ) /* Message reassembly is handled alongside buffering of future * messages; the commonality is that both handshake fragments and - * future messages cannot be forwarded immediately to the handshake + * future messages cannot be forwarded immediately to the * handshake logic layer. */ if( ssl_hs_is_proper_fragment( ssl ) == 1 ) { From a591c48302977592b4c31148c36ec5c51cfb8a55 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:20:00 +0100 Subject: [PATCH 0985/1100] Correct typo in debug message --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 125f6bca9c..1354442f12 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -4433,7 +4433,7 @@ static int ssl_load_buffered_message( mbedtls_ssl_context *ssl ) { MBEDTLS_SSL_DEBUG_MSG( 2, ( "Future message with sequence number %u %s buffered.", hs->in_msg_seq + offset, - hs_buf->is_complete ? "fully" : "partitially" ) ); + hs_buf->is_complete ? "fully" : "partially" ) ); } } } From f34a4c176c19f68d2dd2e3513e9805bd0433f53c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 28 Aug 2018 17:22:26 +0100 Subject: [PATCH 0986/1100] UDP proxy: Correct debug output for delay_srv option --- programs/test/udp_proxy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/test/udp_proxy.c b/programs/test/udp_proxy.c index 0165d3f6a4..41739d057f 100644 --- a/programs/test/udp_proxy.c +++ b/programs/test/udp_proxy.c @@ -249,8 +249,8 @@ static void get_options( int argc, char *argv[] ) if( *delay_cnt == MAX_DELAYED_HS ) { - mbedtls_printf( " maximally %d uses of delay_cli argument allowed\n", - MAX_DELAYED_HS ); + mbedtls_printf( " too many uses of %s: only %d allowed\n", + p, MAX_DELAYED_HS ); exit_usage( p, NULL ); } From ce266e4ca221fca99f5af2d582476e71bf071d5b Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 10:11:46 +0300 Subject: [PATCH 0987/1100] use single define for 128bit key for ctr_drbg and update test dependencies the change is designed to make configuring 128bit keys for ctr_drbg more similar to other configuration options. Tests have been updated accordingly. also clarified test naming. --- include/mbedtls/config.h | 15 +- include/mbedtls/ctr_drbg.h | 8 +- tests/suites/test_suite_ctr_drbg.data | 329 ++++++++++++++++++++++---- 3 files changed, 291 insertions(+), 61 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index ad35f7b8ee..58b2f25930 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2018,7 +2018,9 @@ /** * \def MBEDTLS_CTR_DRBG_C * - * Enable the CTR_DRBG AES-256-based(default) or AES-128-based random generator. + * Enable the CTR_DRBG AES-based random generator. + * The CTR_DRBG generator uses AES-256 by default. + * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below. * * Module: library/ctr_drbg.c * Caller: @@ -2029,16 +2031,6 @@ */ #define MBEDTLS_CTR_DRBG_C -/** - * configure key size for ctr DRBG , either - * MBEDTLS_CTR_DRBG_KEYSIZE_256 (default) - * or - * MBEDTLS_CTR_DRBG_KEYSIZE_128 - * must be set. - */ -#if !defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) -#define MBEDTLS_CTR_DRBG_KEY_SIZE_256 1 -#endif /** * \def MBEDTLS_DEBUG_C * @@ -2920,6 +2912,7 @@ //#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ //#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ //#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ +//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY /**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */ /* HMAC_DRBG options */ //#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index 66bfc12df5..5e0d1f03cd 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -48,15 +48,11 @@ #define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read or write error in file. */ #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ -#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_256) + +#if !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) /* Use default 256-bit key for CTR_DRBG. */ #define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher. */ #else -#if defined(MBEDTLS_CTR_DRBG_KEY_SIZE_128) -#pragma message("Warning: using smaller (128bit) key size for CTR DRBG may reduce the security of some operations.") #define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher. */ -#else -#error for ctr DRBG either MBEDTLS_CTR_DRBG_KEY_SIZE_256 (default) or MBEDTLS_CTR_DRBG_KEY_SIZE_128 must be set -#endif #endif #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ #define MBEDTLS_CTR_DRBG_SEEDLEN ( MBEDTLS_CTR_DRBG_KEYSIZE + MBEDTLS_CTR_DRBG_BLOCKSIZE ) /**< The seed length, calculated as (counter + AES key). */ diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index 81d17d3187..972836c82f 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -1,833 +1,1073 @@ CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=no -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"8da6cc59e703ced07d58d96e5b6d7836c32599735b734f88c1a73b53c7a6d82e" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=yes -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"81daaf9800c34ff0a104e51d87e36f5b17eb14b9abc5064cadda976ec4f77d34" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=no -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"bb2a0f5f0ca6d30634ba6068eb94aae8701437db7223a1b5afe8771547da3cee" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=yes -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"98a28e3b1ba363c9daf0f6887a1cf52b833d3354d77a7c10837dd63dd2e645f8" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=no -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"259dc78ccfaec4210c30af815e4f75a5662b7da4b41013bdc00302dfb6076492" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=yes -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"386debbbf091bbf0502957b0329938fb836b82e594a2f5fdd5eb28d4e35528f4" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=no -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"601f95384f0d85946301d1eace8f645a825ce38f1e2565b0c0c439448e9ca8ac" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=yes -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"738e99c95af59519aad37ff3d5180986adebab6e95836725097e50a8d1d0bd28" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"d254fcff021e69d229c9cfad85fa486c":"c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068":"":"":"34011656b429008f3563ecb5f2590723" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"7be87545266dadd1d73546c0927afc8d":"a7f38c750bd6ff41c4e79f5b7dd3024d58ca3f1f4c096486c4a73c4f74a2410c4c9c5143eb8c09df842ba4427f385bbf65c350b0bf2c87242c7a23c8c2e0e419e44e500c250f6bc0dc25ec0ce929c4ad5ffb7a87950c618f8cee1af4831b4b8e":"":"":"d5b1da77f36ce58510b75dfde71dbd5d" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"3771416b162f4d9c5f48a05b7aa73938":"d20a0e5cdb714f01b48e00bae51909f345af05de13217e5d55fc6c2d705aea550420d9a458594d825b71e16b36130020cf5948fe813462061c1a222d1ff0e1e4b3d21ae8eee31d3260330d668d24ef3c8941b8720e8591b7deec4bd35a3a1f1a":"":"":"3cbd7d53ac1772c959311419adad836e" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"f2bad8f7dab3f5886faa1cf6e1f52c87":"4df54a483b4510ed76049faae14b962fbb16459d1f6b4f4dbeca85deded6018361223c893f9442719c51eb5695e1304a1c2be8c05d0846b6510a9525a28831a8efcbd82aa50540d7e7864e2b8a42d44380cdc6e02eebb48d0b5a840b7cdd6e04":"":"":"0062d822bc549bea292c37846340789b" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"1c5760aa0fd4ce308735b28682b67246":"89defd4445061c080e4762afac194b9f79c4bb1ed88c961af41d9d37bd388a1d45c82ca46f404348a2ae5e22ce00aa35ebc7c5051d8800890d44d25284489efcbd1f5e2b16e403f6921f71bbdfcf7b9aeddef65bc92fbd1cb9e4ea389aee5179":"":"":"3baf81155548afca67d57c503d00a5b4" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"b72b9451a5e866e226978623d36b3491":"2713d74affed98e3433559e17d240288bb1a1790904cd7754cad97007e205a157b8ddca704a3624413f2ec8361ccd85442fb0b7cc60a247f0fd102cef44677321514ea4186d0203ab7387925d0222800ce2078c4588bc50cdfccbc04fbecd593":"":"":"047a50890c282e26bfede4c0904f5369" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"91b955a3e7eccd7f07290cba4464baff":"b160465448894c7d5ee1963bb3e1a2f3f75fcd167ffa332c41c4c91c1830b7c07413bd580302958aa6fa81588ad2b3173698a4afafda468acb368dbbd524207196b9a3be37ac21ba7a072b4c8223492ee18b48551524d5c3449c5c8d3517212e":"":"":"af2c062fedb98ee599ae1f47fc202071" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"d08114670c4f6016a4cf9d2da3e3a674":"38dfbfb52c185acf74de00b5a50f0cd9688286747ab340cfe9ad30d38b390fd2443bfd7ea93941d8262ae0f66b0eab4ff64ba59a2ff940c3c26fda103e0d798dbcaa1318e842143975673af8408b5af48dfbaa56ca4f9ddc87100028b4a95549":"":"":"55030fef65c679ecaffb0dc070bfd4d2" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"e2af9abe8770e33798a5f05b22057d24":"88fb2a8020e604ea64a620f4704078857062cc97e24604c30de4c70cbf5e5bea0f0db79d16f4db636a2d6cd992c5890389a40cfe93967eac609e5b9f66788944285758547c7136ef2ee3b38724ed340d61763d0d5991ece4924bb72483b96945":"":"":"a44f0cfa383916811fffb2e0cfc9bfc3" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"ae30f1642753c5cb6e118d7ff5d59f1d":"340def3420b608420d81b4ea8252a3d86d3e1dd7597e6063ed923a73a7b8e981e6079f7f0c42deb9f4ef11d2f3581abadf44b06d882afdc47896777ce8dafd85ec040f7873d0e25c4be709c614a28b708e547266ac8f07f5fdb450d63bc0c999":"":"":"c7e7670145573581842bd1f3e0c6e90b" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"711ecfe467d6f83bcc82e566729669af":"21d6c822706d1af09e4d233c0ebac7f4ec60c7be2500dd41a85a19b2dc5c7da27f8a82164bd2a644218cb5ac283c547da1064784413eed5ecf32fadd00357abaae81225ac8d0391ead533362cff56798825445d639b0b45e0312aa7047c00b4d":"":"":"d3a0d2c457f5e9d1328a9e1d22b6eaf6" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"f9b22152bc0eff1ebf0bfafeea40aecf":"4ee32f0aeadb3936e17f1aa3b18c10f773def5f83500c2ba96f84408a2521c1258f6be9aa5cee528746629aa2b8118ac41dd98ef1b3de31d26b8c2ad3442081203f5ef21df409df3381fbf2e064fbaec64d731dc93b3218e34bb3b03bfd88373":"":"":"86009b14c4906a409abe6ca9b0718cbe" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"5174e76e904ff1471367ccace9c66ed9":"fa81535670275e8ab74121377cf88a4742dd0d7a99cf06eb9c2b4fe2b03423dbe441201144c22a9fc0ca49f5ef614987a2271cc1089d10ee01b25163c090a1f263797e4f130920cdc3b890a078e8abbb070ded2e8fd717f4389f06ff2c10d180":"":"":"18d6fcd35457d2678175df36df5e215d" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"73c372f60519e8eca371eaa13fb54f88":"930c290a797b85d58b52d0d92356436977b2f636f07d5a80c987fb7eea6b750cceb9eb87860547ab4029865a6810fc5c3663c4e369f290994461d2e9c7160a8b5985853bd9088b3e969f988fe6923b3994040eeee09ad353b969d58938237cfe":"":"":"f62c7cfbe74555744790bcc7930e03c3" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"75ba8ddeef24f9f5b00b426a362c4f02":"7065d128ddb2fc6ea31f4110b6c0934ed112c51d74a4a0741a0843d8befac22902a01353322674c3d58935144a0f8f171a99dbeab71272ff7518c46cc7ebb573adbf95bff8ec68eeba5e8ec1221655aed8420086bda89c7de34f217dce73ccab":"":"":"700761857ea2763e8739b8f6f6481d1c" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"14051b57277bc3d3bbae51bdecfb9f5d":"82c80d922c47bbec0f664dd623e22a11a3b84d308351e45e30ee286e89547d22c43e17b3ca0fa08f77eef1001ba696932e9ee890e7aac4661c138e5b5ce36773d3120c35f8c94e0a78ffbf407a63ca435392e17c07461522fdc1f63f037aacff":"b70e7c1c4b8e0f1770e05b29a93f9d7a6540f23ab84136b05b161d85e5f19251":"5a737c128bd69f927f8f3ad68f93f6356d5f4ec0e36b6b50ced43dcd5c44dbc2":"a4e6c754194a09614994b36ecce33b55" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"4526b268128ea35f8558b4e1d08388f2":"952f3f179cbbda27ebd30f4fc31bf96baccb2adbaa9c090bc0f37044a44e85b3bc668cd3533faaf56b5da9242844d65733f7ac1f55c38b175749b88e18d19672b7bdab54e0ababdd4519fb07e0c25578f64ad40d0beb0a26275d5e2f4906aa70":"6b167c7cebea2e585ab974b60c4d305a113102ca8c3dc87651665728c4c675ad":"a038f1ca1f420eae449791f13be4901bfb91e41e052e02635b1f1817bd8969b1":"745ec376282e20fd1f9151f7040ed94a" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"c1aafa90f394e0ba9a528032dc6780d3":"75fd042bfd994de2c92e5aa505945ec93bd7cf366d86a356723fca3c9479ee17fb59c6ca8ba89784d43f06cdad113e5081e02427ee0714439d88dc1a6257fc91d99c1a15e92527847ab10883cc8f471cad8cf0882f5b6d33a846a00dee154012":"c704164ce80a400cb2f54d1b2d7efa20f32b699fa881bfc7b56cfd7c4bee1ea6":"f3baff4b6f42c8e75b70c2a72a027b14a99ae49a5a47c7af0f538843c94e1a69":"7af9113cd607cdb4c6534f401fe4e96c" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"e6e726b72e7b264a36ec0cd60d4578b5":"0c3c6dd706076d6484478347559b495d7ee898c39cde06027bc99f7bf69ce1140ca04602265e1308af6dd6446a1cf151749b22a99e8a05d30cc3ccd00e663bc1bc37e08ee62834fcc52a4bc8c1d6442544187484f81dc729417d5bedfcab5a54":"d84b978483c0bd8f8c231d92ea88ac21e6e667215804b15725a7ed32f7fc5dd7":"9a8971f6c559f7f197c73a94a92f957d1919ad305f4167c56fe729d50e5754a5":"e16ee5bceca30f1fbcadb5de2d7cfc42" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"0272d86db283244eb7ee0ed8c8054b89":"a08ce39f2f671e1f934821a8db9070f39a734a7a20e70307fccca17db15bb4e8a421600df11d1a6e7806a14826739322c8043649ea707180f1d00dea752c2c36398030519465864c4d38163f5b0dd5be07dbc0ae29693ad4a67ca69f28414634":"aa97055cf46ba26465dfb3ef1cf93191625c352768b2d8e34459499a27502e50":"dddd0007eb29fdf942220e920ca0637db4b91cbf898efd2696576ff6bfacb9d1":"9db0057e39ca6e0f16e79b4f8a0ed5c7" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"4ad8f72a0d0e28a758722b20e3017d7e":"89af36a1c53f730c1b818b26aa510627b17e6f9da51c8e53930de883b7cc7a3e8c3c463c910646ac3ff08f05bca8e340daf9a322d133ae453fdf7e6860a27ff4495c89875431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8":"9d060b7ed63bdb59263c75ebe6a54bf3a4ac9c9926ca8fb49caa905a2651eead":"016099232dc44bb7cdb492f4955ab1aabc5dc0b5731447cea2eb1d92e41482d1":"4b658e95adae4bf0c418fded4431c27f" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"aa19b944c2e1b9d27933bc87322bdf14":"dc8c60dd42c85fed86cb32af035bbde5737526eb07991397c853256f2f0cb311bce70e1c5e32fc3510402d7d7e3de36fa5e584234daf391bc53cc651e001ab7fcf760679b3c82057f9d09bfdcab8e158d4daa63b20c0e1102f7a06bf5a2788dd":"6b98fec5f7de8098ff9df80f62473c73831edace832a767abf5965ea8bf789ba":"cc998bd5752f9c96ec35d9658cc8b3833dd6ab80c7accd6777c06c2cf7c01e59":"fc58833e0e27f7705e4937dd2aadb238" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"10c8c17a25041e2ef0d3cc80671e4cfe":"513fb96b6164ece801e52855aad28cb80131e7872d8432d27a974fb62d8d0100bb7ebcb8f5c066e230377a8847d6798c3d8090469b9719a80ac956ac33186b00eb8ca64c5530421f93932bc7c98ee92651e85dab562483bdb189676802726647":"240f36a0a598fe2116ffa682824f25acc35132f137f5221bc0ff05b501f5fd97":"22a5eb5aa00309a762ab60a8c2647eebe1083f8905104b5d375ed1661b4c8478":"145a16109ec39b0615a9916d07f0854e" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"cea0c3c12be683c0f27693650a6a3d7d":"df8bc70e45fe14abb02c1b9a9754c37497fc2f67709edd854196fc4d074b12797ce7cb292f14cb1d6904abf32bf229299db5ccf5a791a3b8cd3e40a64f38f6b57df759a863e09d7676d2f3ff2762cdab221151000dba32a67f38cab93d5b7a55":"bf2ac545d94e318066ff88f39791a8385e1a8539e99ac4fa5a6b97a4caead9d4":"846efef8672d256c63aa05a61de86a1bbc6950de8bfb9808d1c1066aef7f7d70":"8d8f0389d41adcac8ca7b61fc02409c3" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"1b782af2545352631983dc89945ffc37":"51930fb7095edef3fc20aca2a24127f03d3c4b983329e013ad8a35016f581dd7b2d11bafbf971c1fdefd95a0024195e6e90a60ec39b1a8dbe0cb0c3aabf9cf56b662efc722b2dffa6c3be651f199cbc3da2315b4d55aeafd1492283889e1c34f":"1b6295986f6fb55dc4c4c19a3dba41066fdc0297d50fb14e9501ba4378d662ed":"6e66ff63fc457014550b85210a18f00beab765f9e12aa16818f29d1449620d28":"78dfcb662736a831efaa592153a9aff9" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"6580f6df5c8de7c4a105c11ed44435c2":"d37403db6f84a7ba162e1cc351fe2e44d674ae8606280c9dac3e3975f30cbe1c9925e502a9804b91aada5cc97b259b90ccb5b8103394d9a28f0709fc9b5ffe9d73ad3672e02064ea68cebe3face5d823ee605c46c173db591135f564558dab4c":"97486a5e6ce6c6cf9d3f9a313d346cbc34b2bd54db80c5f8d74d6f6939f89519":"8377fcb52556f9974f1aa325d6e141d7b81355bd160abbc86e0007571b3c1904":"77031d3474303470dca9336b1692c504" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"f5303f148d6d6faca90aa88b07ab2ba9":"a0de51b8efa44b8245dba31d78f7840b2b7abced4e265b4cd9628eabc6ebbccb0f118dd8cc958b36dc959e22c4a03dafa212eeedec7d25ee6c5961187bee83b1ed3a75c7bdd9d0713b16cc67e68231f4cb274c8f3dfcc7e5d288c426a0d43b8f":"8d1fddc11dbad007e9b14679a5599e5e8a836197f14d010f3329d164c02d46d6":"9ceb6570568455d42a7397f8ca8b8af7a961a33a73770544cca563c04bc919ca":"9882f0bd1f6129a78b51d108e752b2d9" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"5a799c58985aa2898cc8fe8e5bc4a9f8":"dbdbef9d217e9051025c321b628c1cc823d508ffdd13fc4edbe8677658a57ef5b64395a6b7d62c0e93dc0956ee0217ec48ae054f1d4680023cc1b2af666efa9e1458cf6b0dae72eef2392e93687bd1fb5f366bb2cdd12937ad09724e39db4189":"8c179b35739e75719e74f7c3e038bc06eb3e212d6ade85275cfebf12b2dce2a2":"af617f2e228adde3edaf52a7e5979476dbb9cd2956a1737d93a16563bbbb4888":"49a04f3b4ef052747c7f4e77c91603e8" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"8f5b51983a8156a529f559ac3afebbf0":"bf22b182d39622e941017285adbdfe446c3d1a72601d0e5a15674f3b1b260170b1b2ab6b588a0267d86776a5d4ce80e132d7135a581af75ea6de65153680e28ce35ce78d0917b4932000d62260149e5a3ae72bc250548390b664f53c697dac45":"4cbb5b2d6e666d5dd3dd99b951ea435cae5a75d2e1eb41a48c775829b860e98b":"a4b4171c2592516404434932ad0a8ee67bd776a03479b507c406405b3d8962bc":"cab49631733f06e3fb3e0898e5ad22e7" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"9f305a77cbaec1ab408cfc0eb89c6cbb":"1e50fada1e76a0d243e6f64c36a173ddc1f47a1dab834f5cd492568792958d5be22cce3110c8e8958b47f07b5c63f86b254942361d4d553e47d36103f47cd7f0bbee27d2e238b1d85671afe8284ee1fd2a431a5f69b2df73e95341c3a2e4fe4b":"c254f3b40e773eb09053b226820f68cafa3458ad403ad36f715245a854752a93":"699e177b7be3353c45ce7b7a0d573b00087d700a9f2c1cd2e370e05d4ddadc86":"bb6b02b25a496f29245315f58a16febc" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"e09f65dcffc0d3a4d84bacc41617a4e46ce5184eca011049ab657566f728e4aa28315ffac166ebe50e1269b01c95b3a2":"545a783ae97d827ed0b81d9752ad0f7e965f511b1f5dae0f872e9ec37cfe63af86c1d15e153887989b605773b16ad5505e65f617cfa8ef46547c4c3f9d0c4fd0b6e1cff5ca0f1929266fe43ba8f45ad664cfe5e90903a9cb722b42ae8989c148":"":"":"1e77d7cc18775fef9a3d3e00903da01b" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"056cd44c8847d89da05fbef95e9660d589046b0c02f9b42c17fd8b069f831c73cd896005ec080113589b6f07be6e42ea":"dde6c0850fe642602eb222ca7371213c598cef8c3e71e0593ea8edb54e1bed130b9b0aebe0893093b950c52f56eb9b338aa4bd01dae030515726ece1bf751660b4a3602da6400e4b94edebba646b5c3d4e64ceea1c4f14b7a19f0142783247df":"":"":"a790ab939e63555d02ea1e9696051725" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"73c72c7dfe138ef4b9817d41b9722b3940762b59bda26b3f6bb8b30583e01d088a29726b71d36ffeebdb387010cb1bb6":"6fe09520e26f5abece0fceadc54913c650a9f55725af45a9a5f373d09b9970b8706b9041d0189a204f6a4eb527dfa86584a3bee3265b809c3932ae5e7228194a3cf7592fc9301c833b45a53be32b9caec9f0f91ba86519f12b0b235f68419c1e":"":"":"798d997f46ff7cc4206994085340325e" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"cdba7c7033c34852b7bc1a6b33edab36f41d563bd0395d1001c02ffc0c42ec8595ed2b5ddabc923372e3b6bb457833fa":"532960c23c8c8b2146576dde52fadc985134914abf42ca1c5f47206937fda41289ae5d9f935dc4ce45f77cad230a4f345599e3bae4071188324483a0b93593c96d8b6ac6c0d8b52f8795c44171f0d8cd0b1e85dc75ce8abe65d5f25460166ba0":"":"":"9d48160aca60f1a82baaa8a7d804a3d8" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"02cef01aca992f60aa12db4b2c441689e4972a6f9deaf3663082afed642c1502b67b42d490af1c52c7e6eaf459882eca":"9216c9a833f81953792260a688eb7c3dfc85565ae6a6033203741a763db056247808e0ecd5ba1fc4549c3a757eba535adc786e810ddaae9a2714d31f5154f2c3ee81108669f1239f4f4efd6e18aabfa2d88f0ac25f4740108f6cfebffeb2d857":"":"":"d6378bcf43be1ad42da83780c1dab314" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"d7d80084e9d1fbb9315c3bce1510dbf22cf11fa54177d913a3b04b64cb30957395bd6f3d7e3d866d1be41b29db9ed81d":"80d4741e4e646748bb65e1289f1f9b3c21bffec4d0a666b301f199d76b4a83464583057079b069946b03d6ac81ebf9e6fa8d4081120f18bf58286a0c4de7576f36f3c7c353126f481a065ac28bdf28e13cd0c1e7911db6343c47d613f1750dc6":"":"":"9165a92ed92248b2d237d9f46d39bde8" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"df5a68d3bede467fd69716f5f8fbac297594b8573921afb864ba76aaa6dd89e83b89e359a5a0dd1aac9b4acb9573d218":"52df6336f93781115c2a77bd8f99cb717871fe14707947a21f6093dd9205bc378acf61329f8831369b4b1af0a9edfb25d74f5863f26859ad9c920767b113c47ed2690053bf9a2f7c7a67a8d680e08865720b9e9f7b6ae697e3c93e66f24b6ddc":"":"":"c542cf248a163bbceee7b9f1453bd90b" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"2945527372ff71edfa5776f55f7e4a247544aa6de974e81b2eba5552843ab6dfa248695f4f3225a43d4bf3672c3a6b2e":"aa560af2132cbd0624a69c7a7e733cd59a4f2d4e61d2b830087bd88f30fa792c7e4d3168fa86a10f7619d5b9dcf4f7bb08b350ba6a6bfc0fdfb7ee7aca07260c9a11abe49963c36efaefa94d2978ed09472bf93cc873d0f24c000762bb1402cd":"":"":"33af0134eeca279dce5e69c2cda3f3f4" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"b30cb767125674f6099a5cf7cb2e4f5b6c1cd1e32ffc1e393b1c5698b52b37f971f12521a7c1ffaaf3233d5391bc4c86":"2d42b00248d95d9378a2aece40d636bc1ab22edaaa64daa34335195a9efa4c1b58f13ac184ca2be52e15c3a977abde2aa505243fc106c4ea6f0671fe0f209b106ea8965645af73d8ebb8a80251db2967149c701cfe1d157cc189b03bf1bff1ac":"":"":"1e10eff9ceebc7e5f66e5213cb07fca4" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"c962a2da4524f08adcdd5ceddc04e669ad6154aee06164645e80c832506b98f9919451c7ec1d3a6a9704f83def8f6e2d":"a1ff68a85e437475b1b518821dbaac1730071a4ddd3255361778194fb0cfe3293e38df81527d8b8da15d03acb26467b6b53d7952441b79f95b633f4a979d998fd0417b9193023288b657d30c0cb2dada264addf9d13f1f8ed10b74e2dd2b56b3":"":"":"58990069b72b7557c234d5caf4334853" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"a3cc1fe561d03a055e8eedaa0e713be490c4bd4c6839a5b98c2ac0139bf215bdc46783d2a3e6b9d15d9b7a8bfe15104b":"207267911c12125cb3012230e4fafd257777ccbfb91653f77e4c1287574f9b79d81af7fb304790349dd457983cc99b48d5f4677ccd979fcc6e545cbf5b5c8b98102c9a89ae354349dbdee31a362d47c7cdae128034c0f4c3e71e298fe1af33c6":"":"":"ffd1d259acd79111a6fb508181272831" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"ecf186071b81e0ed384d4ebfb5bf261b4054e2e6072b51d21dfb6817adc51ff1c8956ff3612767538cdc8d73fade78b3":"3b9aec9f8bf8495004c5e4e731e5c347988e787caf003f001e68584e3510a6abdedffa15895702c2d57c304300f4f0af80a89bcc36b3cea2f08a0740236b80cfd2ea6e5cfe4144bc4ae09270fb6bc58c313dbaaedc16d643fc0565171f963222":"":"":"a2d917f5ec39a090b55d51713006e49d" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"3fcedba86089709aa638d00713150df781d4a93e85f155338e90ff537bcbf017f37a2d62259f5d8cc40ddfb041592539":"6b1e9d45c2ec598de7527b6414a339f26192fc4e3f5eff4b3a3e2a80ee0f2e9743031804d1be12b3c7ff6fbc222db1d97226890addeef0e1579a860e2279292c2f769416b7068f582f6ffc192ae4c4f1eeb41d5f77f0a612b059c47aef8e3d8e":"":"":"aa414799c51957de97c0070fb00eb919" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"f4c45fb8f58b7ebf73a0cd81c6a26686977558d4b8bf1cedfc6bd3754de6aaed5008fd72208437c54d8feb9a16ce3224":"6d170cf472ea07da6146a7087ed15d3f5b6ad72b8c99e46bae3b89e49a6e63467199ee16096516c2362dbd181bf5343a29fd0932d72eeb019fc3bfea3a3b01ffc2b985e341cfb6479d9dc71e2197b5cffc402587182e5fe93b5a8cf75eac2e42":"":"":"f557f627688fe63c119cf0f25274aa74" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"7120742a7807b66c5a9b50995d5494a5b9451bb795393c0d8a30ae665879269408f8297d49ab87410a7f16a65a54b1cb":"c08a6f9797ea668cd14ba6338cb5d23c0921e637e66a96259f78e33e45aafd035edb44394cb459453b9b48beac1e32d3b6f281473cda42fb6fd6c6b9858e7a4143d81bfc2faf4ef4b632c473be50a87b982815be589a91ca750dc875a0808b89":"":"":"521973eac38e81de4e41ccc35db6193d" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"add2bbbab76589c3216c55332b36ffa46ecae72072d3845a32d34b2472c4632b9d12240c23268e8316370bd1064f686d":"6168fc1af0b5956b85099b743f1378493b85ec93133ba94f96ab2ce4c88fdd6a0b23afdff162d7d34397f87704a84220bdf60fc1172f9f54bb561786680ebaa9bf6c592a0d440fae9a5e0373d8a6e1cf25613824869e53e8a4df56f406079c0f":"7e084abbe3217cc923d2f8b07398ba847423ab068ae222d37bce9bd24a76b8de":"946bc99fab8dc5ec71881d008c8968e4c8077736176d7978c7064e99042829c3":"224ab4b8b6ee7db19ec9f9a0d9e29700" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"8964ebde61f0c4e23f8e91244ae9682ed0b17e424edd4c025b461a2d209a538583f29465df3f89cf04f703b771ff5c90":"4db8e8a27fe7a0378e37d4cc01b6a465d34be91f48c52fdc1023ef2ea1241082f522805bc8777fda6c10e3d441b58f648edcd7d4df3df8c8a398d7b005c4fd6f41c9b033bd38fc5f577069251529b58273f6a9175feb3978798fdeb78a043232":"5eb3fb44784f181852d80fcf7c2e3b8414ae797f7b9b013b59cf86b9d3a19006":"3eec358f7f9e789e4ad5a78dd73987addbf3ae5b06d826cec2d54425289dc9af":"9a66c015d2550e3f78c44b901075fabb" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"98784aa794df5400890e6803f06d886aeb0833b1fea28a5f7952397aa21092ceafdb9194079f3609bc68233147c778e7":"7338521e8e127e70da259b37f5f5cdf83079bdb4024234b8ceecfba8d8c3f1c8510ff91f3bd08f2c54f11b534048a320a15ba0fccec8da34d4ef7f49ade4847814c859831907992d0adab27046324d4d9a853eb986b8de25b34ea74eb3d11048":"b14c5314aac11cb43f45730e474b84fbf5d1480d94d0699b80e3570f6636aa72":"d6208912348236feee1d258092283dd9db75899769dd109cc2f0f26d88dcc6bf":"5ec75fdd1ed3a742328e11344784b681" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"fe9b7df306c4ccd02afd6142c6650418325617945147de436a55e78aa45866116d6678e013a0e2c5a13e0d01fbd84039":"c4da56f4239fde0bc49b1d852cb36c80205f9e99e5995a80be04bbbba15f25b8d054c397a34cff1326a71f0acc4f7942795cabc3fa46339dc54b4bf7f11c095af8503004d97c485acec8815d1404674592c896ecfabefcbf222f4fe5a3ced0af":"086d09a6ee20c69bf5c054ebc6250f06097c8da1a932fb3d4b1fb5f40af6268a":"44e64b14c49ebb75c536329bb41ab198848849ca121c960db99f7b26330b1f6d":"7aa3a7e159d194399fc8ef9eb531a704" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"c0d47ee2328185df2c299d270e11fee26df753a5b4f899fdc0dff79eb50748232f9f79cf3f5e9bd4a26a48e743843b02":"a6b5dd5f1bad95331caae5852be50a26267af655c98feb8b66c45a8ae2ddfca270ab0d8023e43e6e22a7b5904d63482f045e85556b9c105cde0f3eb7b1fff1026086c80b195196803b5f664362b659578894d6551fb7c4566eec02202fdc298f":"3b575d028046e7f6005dfcdfcdcf03ff77a9cacd2516bcdff7f3601a9a951317":"f13b58daed46f5bf3c62b518ab5c508dd2bc3e33d132939049421ff29c31c4f0":"8469dfa89453d1481abedd6cc62e4e44" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"a0db812a939fbf3942b00be018cff4578b9fb62629c766a50f3518fe634100b1cbc4244ae843fe32125c53b653705457":"7e3dca20a7a977b6616a684e309015cf6a37edd0d85819fe91d074c915b0c9540a8aa486f58685b064851d6164150b1c1b0e2e545c6358d28b2f5263b2fd12c503d271ab6de76d4fa4c604cae469335840328008d8ce5545586b9ea6b21da4f9":"554b297bc32866a52884fabfc6d837690de30467b8f9158b258869e6f4ed0831":"4f688cba5908e0699b33b508847f7dac32f233e6f02cf093efdacae74259f3b6":"9696dd6ed5875cdef4a918a6686455a8" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"ff6cd20443a32c9e938f2a617bbb969ba54040b12723b0d452a669b584ba16ffaacbe38af62b5a62e0c67d165d022344":"efcf7536f32932526fe82b3a2333508404727878723fc09cbd902581d82463cf6acf1ddf4217ea6404469193e8db0e7e8c864ae655b49c6a095f80f1ab16985453f0fb729c119d8a3b820034626a93b1f70eb99b6cd8c990dda34a1c6a4b6eea":"8d412208091b987ee0781ff679c50dbab9ef389156f570f27aaf3e699bdade48":"501381ce5e7718c92ee73e9c247965dd5f0bbde013c4b5e625e9af8907e40566":"4f323934adb8a2096f17d5c4d7444078" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"bd14779153ed9696d3e5143c50b2050b6acd3ea2f8b670ef0e5f4bedf01705727bf9e64ae859214abe6ef497163f0236":"bfb0931b05a3fe232614e1b1c3060b3b07fb75d23ac10190a47a7245a6ecad5f3834e6727b75acc37e9d512d01a4a9cef6cb17eb97e4d1d7c1df572296972f0437a89c19894f721cbe085cf3b89767291a82b999bf3925357d860f181a3681ce":"0b5dc1cdfc40cfdc225798da773411dc9a8779316ceb18d1e8f13809466c6366":"843eb7297570e536b5760c3158adb27c0c426c77d798c08314f53b59aa72d08b":"1e703f3122455a40536c39f9ea3ceaa6" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"64b155fd4b8634663a7e8a602e2b9fe2477be74692643ccfd0b316a025ea6f1fc0dfd0833248cb011082be36cba3c5d1":"a5b15cb1e039d7bbe2db80a32d4f402c7d3c59a45b05255401d1122770dbdb9894841964d5cadc9ae9af007d63e870d0510078885ca402bd222f16d2d27892e23292b65cf370b15d5e5a739ddd13e3e27f7c2e2b945f8e21897c3bbf05d8b043":"aea2fe995be77dfdca6ebaa1c05ba4c84d0e6b9a87905c398a3dfe08aeb26d38":"f4e9e7eb0eea4e2d419de6ad2909d36ec06c79097884bf98981e86dedae366ba":"4a28955dc97936b1c0aed0751a1afed5" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"e6c08e8b8d8e418477087911610096f7e0422083a376a77198e9c60fb2dc8c14aff33d7835878b65322f1561738b1ebb":"d4e0347c2158b882eb1e165f7f2aa1324d6606fe259ca730b2a3367435cb93b89108e49bd97355215063f63e78e8926b264c8a97571fd4d55882364915b7bd544254c25c2b67cdd979737c7811bcdeef5b052d8fe05a89b3291ef669d5579a61":"6607541177bc0c5f278c11cb2dcb187fc9f2c9a9e8eefa657ba92dee12d84b07":"7a439c8593b927867cfa853949e592baea0eeb394b0e2fe9ab0876243b7e11e2":"420888122f2e0334757c4af87bbc28a4" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"4413ff775c9b7d9a3003e0b727e34554e0f615471d52aeb4a059777b372d60332a1a4bcaf906e598581bc5a369b2c933":"a21cf567362fed0edddfd0b1c2d85ff6d2db5484fca8bf90a82da2ab76efcac9286e417628496f37effda150ef4912125aac68aac72e6f900a70192d4ef0b4cc4e9419c93ffb245965ae30c5f8abe20f732d76080bde5a1c6b3f075eb35622d1":"b924d145fc3ecd76f000f12638ef0a49a5d4cf887aa93fc9e5c536febc454f2d":"73dbb40b257e6598744f9107c8e7ff51a080407fc9e80d39d9a4db94f167c116":"84457ea753771ad7c97ce9c03ab08f43" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"5e409d56afb6940f9ffa45e0f92ef4972acedd3557b8e0f5418e302f2720ae5289294176045ad3096ea68db634cf5597":"c5a63c886af7ed7496473a6ae2f27f056c7e61c9aca8c5d095af11b2efe1a6b43344f92b37c7b6977ddbef1273e9511d9305fcbe7f32bc6a62f28d34841350362d2717dd00467224a35985b9fecc2739acd198743849dbfa97f458e2e7d6b1dc":"7fda133a23e929b17548a05013ff9c7085c5af9c979057b8f961ba7514509ff3":"bd061292b6bc3d3e71ed01af091f0169f70f23862efccd9e76345ff607dff3ec":"75b35dab3ad5e35c10ee39529a7f840f" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"ed2a52169791d7c7d332cf258ea4847c359335f9a6839ee767a8f76800ba28e94858cc9b7f526e62a93603fa2b1caa6b":"0a6155ff422ff6ae9814f81bf353bd3454d0c9892f9f3d730dcd8c87626f813cbe1dff1922fe73e4a319be53f4ec05e965c27f239b1e51869069a7e7cdd916fc1fd6f640bfe4b761a8040f8db37fb5ee7508e7d226c7695fb2a8bd791fe49ef2":"14073a1b4f07f3b594fa43d0c8781b8089dd2d9b8ad266e0321aaa6b71a0d058":"4247fc6886e8657b84369cf14469b42aa371d57d27093ee724f87bf20fa9e4e6":"f2aea2bc23e7c70f4ee2f7b60c59d24d" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"f0d3a46501da7ab23d8688725f53f4289ce3bfa627646fe301533ec585f866caafb8131e95460566270f68cd25e1f153":"223d49f99a56cfcf2eb8cca39a8a82ee306c6272d521257f3d7d2a87699111e442fc55a399994d57373141f2207d43a8bbc1e086d67343b7dc2a891853c860fe43fb6be32cf035aca582bf5590cb5001b09b4976ea617fa7bd56da81fdef2df9":"7d12673cad5ad5003400fb94547e2b987e934acf6b930c0e7aec72634bfb8388":"e8583b9983b3ac589a6bb7a8405edfc05d7aa5874a8643f9ac30a3d8945a9f96":"ce72c0ea0e76be6bc82331c9bddd7ffb" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,256,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"1e4644df1d01f9a0f31d1d0c67bc9fb9a1ee2223fbfb25520d3881cde2b183b73fe1a8cc5f17796cf22aaaed57607420":"cdac62b5e4ccee8609b1f4b7a8733e69068c71219b6292ecb318b9d3479516807af280cfa20e455d5e96eb6794a3b963957f3c099fd1e1199706d36a06011836af890f3b7b15cda6346a06fdd0f194de40bfbec12b021b02eeabaa34d35b30a3":"8169251ea55cce534c6efd0e8a2956d32ed73be71d12477cea8e0f1ab8251b50":"865d14cb37dd160a3f02f56ac32738f9e350da9e789a1f280ee7b7961ec918a7":"ff11ba8349daa9b9c87cf6ab4c2adfd7" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1b54b8ff0642bff521f15c1c0b665f3f":"5a194d5e2b31581454def675fb7958fec7db873e5689fc9d03217c68d8033820f9e65e04d856f3a9c44a4cbdc1d00846f5983d771c1b137e4e0f9d8ef409f92e":"":"":"":"a054303d8a7ea9889d903e077c6f218f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"90bc3b555b9d6b6aeb1774a583f98cad":"93b7055d7888ae234bfb431e379069d00ae810fbd48f2e06c204beae3b0bfaf091d1d0e853525ead0e7f79abb0f0bf68064576339c3585cfd6d9b55d4f39278d":"":"":"":"aaf27fc2bf64b0320dd3564bb9b03377" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"4a2a7dcbde58b8b3c3f4697beb67bba2":"58364ceefad37581c518b7d42ac4f9aae22befd84cbc986c08d1fb20d3bd2400a899bafd470278fad8f0a50f8490af29f938471b4075654fda577dad20fa01ca":"":"":"":"20c5117a8aca72ee5ab91468daf44f29" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"911faab1347ae2b3093a607c8bc77bfe":"2f044b8651e1c9d99317084cc6c4fa1f502dd62466a57d4b88bc0d703cabc562708201ac19cdb5cf918fae29c009fb1a2cf42fd714cc9a53ca5acb715482456a":"":"":"":"aae0c0ac97f53d222b83578a2b3dd05d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f959f1bc100ae30088017fae51289d8e":"77d0f0efbc7ca794a51dff96e85b8e7dfd4875fbfb6e5593ae17908bfbddc313e051cb7d659c838180d834fdd987ae3c7f605aaa1b3a936575384b002a35dd98":"":"":"":"5d80bc3fffa42b89ccb390e8447e33e5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"45a8bb33062783eede09b05a35bd44dd":"6bb14dc34f669759f8fa5453c4899eb5ac4e33a69e35e89b19a46dbd0888429d1367f7f3191e911b3b355b6e3b2426e242ef4140ddcc9676371101209662f253":"":"":"":"0dfa9955a13a9c57a3546a04108b8e9e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0ada129f9948073d628c11274cec3f69":"b3d01bcb1ec747fdb7feb5a7de92807afa4338aba1c81ce1eb50955e125af46b19aed891366ec0f70b079037a5aeb33f07f4c894fdcda3ff41e2867ace1aa05c":"":"":"":"f34710c9ebf9d5aaa5f797fd85a1c413" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"052a5ad4cd38de90e5d3c2fc430fa51e":"98482e58e44b8e4a6b09fa02c05fcc491da03a479a7fad13a83b6080d30b3b255e01a43568a9d6dd5cecf99b0ce9fd594d69eff8fa88159b2da24c33ba81a14d":"":"":"":"3f55144eec263aed50f9c9a641538e55" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"004cd2f28f083d1cee68975d5cbbbe4f":"6238d448015e86aa16af62cdc287f1c17b78a79809fa00b8c655e06715cd2b935bf4df966e3ec1f14b28cc1d080f882a7215e258430c91a4a0a2aa98d7cd8053":"":"":"":"b137119dbbd9d752a8dfceec05b884b6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f985b3ea2d8b15db26a71895a2ff57cd":"50d3c4ecb1d6e95aebb87e9e8a5c869c11fb945dfad2e45ee90fb61931fcedd47d6005aa5df24bb9efc11bbb96bb21065d44e2532a1e17493f974a4bf8f8b580":"":"":"":"eb419628fbc441ae6a03e26aeecb34a6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"100f196991b6e96f8b96a3456f6e2baf":"d27cbeac39a6c899938197f0e61dc90be3a3a20fa5c5e1f7a76adde00598e59555c1e9fd102d4b52e1ae9fb004be8944bad85c58e341d1bee014057da98eb3bc":"":"":"":"e3e09d0ed827e4f24a20553fd1087c9d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"88f55d9ba8fef7828483298321133fec":"16f9f5354d624c5ab1f82c750e05f51f2a2eeca7e5b774fd96148ddba3b38d34ba7f1472567c52087252480d305ad1c69e4aac8472a154ae03511d0e8aac905a":"":"":"":"07cd821012ef03f16d8510c23b86baf3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"126479abd70b25acd891e1c4c92044f9":"70afbc83bf9ff09535d6f0ddc51278ad7909f11e6f198b59132c9e269deb41ba901c62346283e293b8714fd3241ae870f974ff33c35f9aff05144be039d24e50":"":"":"":"0f90df350741d88552a5b03b6488e9fb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a45f2fca553089fe04e7832059dc7976":"5e5a9e1e3cb80738c238464ede1b6b6a321261a3b006a98a79265ad1f635573bba48dccf17b12f6868478252f556b77c3ec57a3bf6bb6599429453db2d050352":"":"":"":"6eb85ae2406c43814b687f74f4e942bc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"52dbb43241002415966eaec2615aba27":"31cfe60e5ed12ff37d7f2270963def598726320c02b910b5c6c795e2209b4b4a95866c64cb097af1d6404d1e6182edf9600e1855345375b201801d6f4c4e4b32":"":"":"":"2a270f5ef815665ddd07527c48719ab1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"176200bb44808b5400b24e1b5f56cf73":"f84d395b1734eac4600dbc36f6b1e1599bc7f2608dc8ecb3a55369d7b1b122a09f5ac9c16d9a2be37d2ff70a9bba732fc3785b23ff4ade3c8404da3f09f95a8f":"aef28c9169e9af74c73432d4aa6f5dff9ea4a53433de2ecb9bf380a8868c86e1":"0626ae19763c5313b627a8d65cf1cfba46dfd6773242738b9b81fde8d566ade1":"63c160ed6a6c1fffd0586f52fa488a9055533930b36d4fa5ea3467cda9ffe198":"e8f91633725d786081625fb99336a993" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"19c3d16197ac93bf58c4110c9e864804":"50755cc0178c68ae70befd7744f6f1e3f6a59b3bbe484a744436079c7fae8d83c4965516fb952c63e1d0561d92cccc56037465815c9e549c9adce4a064877128":"5cb82d2c297404f3db1909480c597dd081d94ca282ba9370786a50f3cbab6a9b":"96d130faf1a971920c2bf57bcd6c02d5a4af7d3c840706081e4a50e55f38bf96":"1b0d04f179690a30d501e8f6f82201dbab6d972ece2a0edfb5ca66a8c9bcf47d":"4628b26492e5cb3b21956d4160f0b911" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"4b1edd0f53bf4e012def80efd740140b":"e50c31ebbb735c4a53fc0535647ae1fff7a5ac4fa4068ba90f1fa03ca4ddedecd5b1898d5e38185054b0de7e348034b57067a82a478b0057e0c46de4a7280cd9":"e7154ec1f7ac369d0bd41238f603b5315314d1dc82f71191de9e74364226eb09":"9444238bd27c45128a25d55e0734d3adafecccb2c24abdaa50ac2ca479c3830b":"ab2488c8b7e819d8ce5ec1ffb77efc770453970d6b852b496426d5db05c03947":"a488a87c04eb1c7586b8141ed45e7761" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1f89c914649ae8a234c0e9230f3460f9":"5e029c173dc28ab19851a8db008efbcf862f4187fca84e4e6f5ba686e3005dba5b95c5a0bcf78fb35ada347af58ec0aca09ed4799cd8a734739f3c425273e441":"b51f5fd5888552af0e9b667c2750c79106ce37c00c850afbe3776746d8c3bce1":"9b132a2cbffb8407aa06954ae6ebee265f986666757b5453601207e0cbb4871b":"f1c435e2ebf083a222218ee4602263872a2d3e097b536a8cc32a5a2220b8065f":"a065cc203881254ca81bd9595515e705" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0ef2be2d00a16051404fc2a0faa74fdc":"b66c882ae02c5215ed3bcd9e9a40934b09bf48a15fe7558c9d9ceb0ebec63625ea18f7c3ab341d9f7edd8e1d8816edecb34dbd71ae02771327b5ebc74613dadd":"1ebe9893957a5c4a707793906d31bb201e88d88a22abd6baa6461fc61def7ffb":"f81e26744834413cb95af8d438d0050c7c968f929a33e35ee5c6715a0a520950":"687a848b2b6c715a0e613b3f3bb16cf2f056543eb9dd6b8aee8de8aa6fd8a1e6":"a6c4a7e99d08cc847ac0b8c8bcf22ec0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"eb2439d156c4f51fb1943c26f27de8af":"ad153fd266d9f73b21f4e5e88d3d13ba8325abdec427d5d8f671cfccdbd3510e9774d59a14d9b5472b217b7bcf355436a51965d2dff7c4ac586ab812f20d326e":"e24bd6b69a40fa0a02cefbbaa282f8f63a80e154be338d1b913418d4ff7a810d":"fd40baf11d7cdd77641a2b46916cb0c12980e02612ef59fb6fe7dabbbe7a85c0":"a40019e3b85d7d5775e793dd4c09b2bdc8253694b1dcb73e63a18b066a7f7d0c":"7cd8d2710147a0b7f053bb271edf07b5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b23796d88ee5ae75ff2ba4fbbd5e2de8":"b249d2d9b269b58c5355710aaae98be12d8fb2e79046b4e6deeec28adad7e789999847e20de11f7c3277216374f117e3e006bdf99bb8631aa4c4c542cd482840":"79f0214b6b0c5ffb21b1d521498b71d22c67be4607c16300ab8dde3b52498097":"582be1e080264b3e68ec184347a5b6db1e8be1811578206e14ad84029fe39f71":"f5e9c3356810793f461f889d8c5003b1c0b20a284cb348301ce7b2dd7a1c7dd7":"1aa8cf54994be6b329e9eb897007abf0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"081db0b1620a56afd87c2fd2bebb1db3":"3f1e90d88870a0bd03364036b655495e3e7d51bf67fb64ba0cbf003430af5585f5936b84ab3b8a55c02b8b6c54bea09cf2d77691858c5818991383add5f0c644":"5b98bc83ae8bed5c49cb71689dc39fee38d5d08bdfa2a01cee9d61e9f3d1e115":"aad3e58fdd98aa60fc2cae0df3fc734fff01a07f29f69c5ffeb96d299200d0d8":"bad9039ebb7c3a44061353542a2b1c1a89b3e9b493e9f59e438bfc80de3d1836":"8d01e3dc48b28f016fc34655c54be81f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a8427443d9c34abcdcca061a2bbcff52":"b0e9b2192adc8912653d90a634d5d40c53ca4383290a8764bdf92667f859d833c3e72ad0ff41e07fe257b1ead11649be655c58a5df233114e7eda2558b7214d7":"c6cad9fb17ada437d195d1f8b6a7fa463e20050e94024170d2ffc34b80a50108":"be461a9c1a72ebaf28ee732219e3ca54cbee36921daaa946917a7c63279a6b0e":"b6d110d6b746d7ccf7a48a4337ba341d52508d0336d017ae20377977163c1a20":"16ccd63dbf7b24b6b427126b863f7c86" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"86bd02976e6c50656372b8c212cf0a7a":"89900b0febf6b4e19ab8fc5babb4122a8aad86d658d0c2f98988c99fbd8530ff4ad365bd5fddaa15f96537bd72deb5384405b610e6ebae83e848307051fd6c82":"41bf3794ee54647a48a2588fdfdea686f1af6792e957d42f181f2631b207ac0c":"c4478afbea4eecb225448f069b02a74c2a222698c68e37eb144aff9e457f9610":"41a99e0d3f5b767f9bedcb2f878a5d99d42856bed29042d568b04e347624bf7f":"863337529aac9ab1e9f7f8187ea7aa7d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e809ef8d4c3d82575833d51ac69481b2":"3e831b7715ce202c95ec85337e2c0061d972169955bd96fbe1f758508c0336b3226260ea5e66f943b538eb115ffe4d5e534cbe58262a610528641629bc12fc75":"4d40c6a961168445c1691fea02ebd693cb4b3f74b03d45a350c65f0aaccb118b":"b07dc50e6ca7544ed6fdebd8f00ed5fa9b1f2213b477de8568eb92dddaabfe3f":"cbac982aa9f1830d0dc7373d9907670f561642adb1888f66b4150d3487bf0b8d":"2814be767d79778ebb82a096976f30db" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ad71caa50420d213b25f5558e0dc1170":"6a3fd23e7dc934e6de6eb4cc846c0dc3cf35ea4be3f561c34666aed1bbd6331004afba5a5b83fff1e7b8a957fbee7cd9f8142326c796ca129ec9fbacf295b882":"3042dd041b89aaa61f185fdda706c77667515c037f2a88c6d47f23ddadc828ae":"9b1e3f72aaab66b202f17c5cc075cfba7242817b2b38c19fe8924ca325b826ea":"8660b503329aaea56acdb73ca83763299bac0f30264702cb9d52cbaf3d71d69d":"c204a3174784d82b664e9a1c0a13ffa6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"5fd6606b08e7e625af788814bef7f263":"baf8750e07194fc7172c736e0fdea0a632810d45602dff17ce37adf106d652f87e31b6bd24d21481c86444d8109586118672a6f93731b7438a3f0f39648b83a3":"3c37193d40e79ce8d569d8aa7ef80aabaa294f1b6d5a8341805f5ac67a6abf42":"c7033b3b68be178d120379e7366980d076c73280e629dd6e82f5af1af258931b":"452218a426a58463940785a67cb34799a1787f39d376c9e56e4a3f2215785dad":"561e16a8b297e458c4ec39ba43f0b67e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"08def734914ecf74b9eccb5dfaa045b8":"6697f889fcf6dae16881dc1e540e5c07f9461d409acee31842b04f93c00efbba670dfbf6040c1c2e29ad89064eae283fd6d431832f356e492bc5b2049f229892":"a6ac87af21efd3508990aac51d36243d46237b3755a0e68680adb59e19e8ae23":"0052152872b21615775431eb51889a264fed6ca44fa0436b72a419b91f92604c":"ebadf71565d9a8cc2621403c36e6411e7bed67193a843b90ccf2f7aa9f229ca2":"c83fa5df210b63f4bf4a0aca63650aab" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6437862e93060def199029ff2182f1e5":"719d1afcb6dc8ca26cba6a7c10f59cf82345b2a0c631a7879812d6f2d2663b49f9e92daecb81ff7c0790205d66694526477d6de54a269f542cb5e77fe4bc8db3":"5c961db0ac2ea8caf62c9acc44465dcfb4d721fcb2cd3e1c76cdcb61bfaa7e75":"24eabd392d37493e306705d0b287be11a4d72dd4b9577ac4098ef0dae69b0000":"9e4f05c1b85613e97958bc3863e521331b2bd78fdf2585f84607bf2238e82415":"21aaae76dc97c9bf7cf858054839653e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"cd7a1981c1b7079c1c38f5aeee86db22207cb9faed8c576b1724ca7817aa6abfb26c42a019eb4c2f4064f0587ea2b952":"7f88c3805ae0857c5cbb085a5d6259d26fb3a88dfe7084172ec959066f26296a800953ce19a24785b6acef451c4ce4c2dfb565cbe057f21b054a28633afbdd97":"":"":"":"76c1cdb0b95af271b52ac3b0c9289146" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0ccdac2fd65a86bf8f8e9ddcabffb9d29a935139f627c165a815b23137eeee94cbb21be86ac5117379177d37728db6fd":"6f61703f92d3192cd982b2e52a8683e0d62918d51b12e084deae06c4a8e08ecfb3d2d30a980a70b083710bc45d9d407966b52829cf3813cc970b859aa4c871fe":"":"":"":"e6c73e159d73c2ba8950cd77acb39c10" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"fbbcc4abfd671296de3e0dcf409a139e35deae126c1941bf1afcc8d3da3a2d65f54a6d317bb6d683a3a77f6266b007ff":"c662ed723e7041877542fdcf629533d4a74393eb4dae4f3ec06d2d1c0d37ed7f519609a8485cb8deb578ae4cbb45c98ef7f2f2e677363e89fb3744286db6bfc1":"":"":"":"9d934d34417c6d0858f4a3faacbe759e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1b824790b6b22b246bcc1bcfbbb61a76045476672f917b72e79cca358e650eb29ed49fb0a5739e097f5f5336d46fc619":"c57a5686486ebacc2422236b19110c754795a869a8157901cf71303de1adc6af16a952190a395d6c20e155e690f41922f6f721dc8e93da81afb844f68714cba7":"":"":"":"13e7bf23d88f3bb5a5106a8227c8c456" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2ea7861e374232cb8ceecbbd9a18fc1f63c31f833fe394f1e19c8ef61092a56f28342fa5b591f7b951583d50c12ef081":"6a0873634094be7028b885c345cd5016295eec5e524f069de6510ae8ac843dba2cc05c10baa8aad75eac8e8d1a8570f4d2a3cf718914a199deb3edf8c993a822":"":"":"":"c008f46a242ae0babad17268c9e0839a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"39caa986b82b5303d98e07b211ddc5ce89a67506095cad1aeed63b8bfe0d9c3d3c906f0c05cfb6b26bab4af7d03c9e1a":"f2059f7fb797e8e22de14dac783c56942a33d092c1ab68a762528ae8d74b7ad0690694ede462edbd6527550677b6d080d80cdabe51c963d5d6830a4ae04c993f":"":"":"":"202d3b2870be8f29b518f2e3e52f1564" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a4e25102c1b04bafd66bfe1ce4a4b340797f776f54a2b3afe351eede44e75c28e3525155f837e7974269d398048c83c3":"0a03b7d026fab3773e9724dacb436197954b770eca3060535f2f8152aa136942915304dede1de0f5e89bd91d8e92531b5e39373013628fea4ee7622b9255d179":"":"":"":"be21cab637218ddffa3510c86271db7f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6de33a116425ebfe01f0a0124ad3fad382ca28473f5fc53885639788f9b1a470ab523b649bad87e76dee768f6abacb55":"d88312da6acbe792d087012c0bf3c83f363fa6b7a9dd45c3501009fb47b4cfcfeb7b31386155fe3b967f46e2898a00ecf51ec38b6e420852bef0a16081d778cc":"":"":"":"2c285bfd758f0156e782bb4467f6832c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b8ab42fd3f6306426602cae0c48eb02ffa7053940389900c17846e1d9726251762095383f2ec3406b3381d94a6d53dd8":"6a7873ccb7afb140e923acbec8256fa78232f40c0c8ba3dcbcf7074d26d6d18a7e78fffda328f097706b6d358048ee6a4728c92a6f62b3f2730a753b7bf5ec1f":"":"":"":"13504a2b09474f90d2e9ef40d1f2d0d5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"042b524444b9903c1ecb80af21eef0e884115561a15a1ab2f9f3a322edcbf14174f54d315196a632940c2c6f56612c09":"31ba5f801aeaac790f2480fbd2373a76ba1685ebebc5ae7cd4844733ec3cfb112634b3899104dcc16050e1206f8b3fb787d43d54de2c804fd3d8eb98e512bb00":"":"":"":"0a0484c14e7868178e68d6d5c5f57c5c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"632758f92efaca39615862177c267906ab0424230d481ee0a5aa1a5f66697d3918d4aab3f310b72a7f2d71c0a96b9247":"46dc837620872a5ffa642399213b4eebfb28ca069c5eaaf2a636f5bd647de365c11402b10ecd7780c56d464f56b653e17af8550b90a54adb38173a0b2f9e2ea7":"":"":"":"90432ce3f7b580961abecde259aa5af6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"7b389118af3d0f8336b41cf58c2d810f0e5f9940703fd56a46c10a315fb09aafd7670c9e96ffa61e0cb750cb2aa6a7fe":"76e92e9f00fc7d0c525c48739a8b3601c51f8f5996117a7e07497afee36829636e714dbcb84c8f8d57e0850a361a5bdfc21084a1c30fb7797ce6280e057309b7":"":"":"":"7243964051082c0617e200fcbbe7ff45" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e50d38434e9dfe3601e7ea1765d9fe777d467d9918974b5599ec19f42d7054b70ff6db63a3403d2fd09333eda17a5e76":"c9aa4739011c60f8e99db0580b3cad4269874d1dda1c81ffa872f01669e8f75215aaad1ccc301c12f90cd240bf99ad42bb06965afb0aa2bd3fcb681c710aa375":"":"":"":"28499495c94c6ceec1bd494e364ad97c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"3253cb074d610db602b0a0d2836df1f20c3ee162d80b90b31660bb86ef3f0789fa857af4f45a5897bdd73c2295f879b6":"b06960a92d32a9e9658d9800de87a3800f3595e173fdc46bef22966264953672e2d7c638cc7b1cada747026726baf6cea4c64ba956be8bb1d1801158bee5e5d4":"":"":"":"b6608d6e5fcb4591a718f9149b79f8f1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"83e4733566f90c8d69e6bcbe9fb52521ff3e26f806d9b7b86e9344cca0305dbf106de855240f1d35492cc6d651b8b6ae":"0e0105b12af35ac87cb23cf9ca8fb6a44307c3dcdc5bc890eb5253f4034c1533392a1760c98ba30d7751af93dd865d4bd66fbbeb215d7ff239b700527247775d":"":"":"":"68d64d1522c09a859b9b85b528d0d912" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a94da55afdc50ce51c9a3b8a4c4484408b52a24a93c34ea71e1ca705eb829ba65de4d4e07fa3d86b37845ff1c7d5f6d2":"a53e371017439193591e475087aaddd5c1c386cdca0ddb68e002d80fdc401a47dd40e5987b2716731568d276bf0c6715757903d3dede914642ddd467c879c81e":"20f422edf85ca16a01cfbe5f8d6c947fae12a857db2aa9bfc7b36581808d0d46":"7fd81fbd2ab51c115d834e99f65ca54020ed388ed59ee07593fe125e5d73fb75":"cd2cff14693e4c9efdfe260de986004930bab1c65057772a62392c3b74ebc90d":"4f78beb94d978ce9d097feadfafd355e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e8649d4f86b3de85fe39ff04d7afe6e4dd00770931330b27e975a7b1e7b5206ee2f247d50401a372c3a27197fec5da46":"78d7d65c457218a63e2eb1eba287f121c5466728ac4f963aeaabf593b9d72b6376daea6436e55415ad097dee10c40a1ff61fca1c30b8ab51ed11ff090d19ef9a":"cc57adc98b2540664403ad6fd50c9042f0bf0e0b54ed33584ee189e072d0fb8f":"ab2f99e2d983aa8dd05336a090584f4f84d485a4763e00ced42ddda72483cd84":"0ecd7680e2e9f0250a43e28f2f8936d7ef16f45d79c0fa3f69e4fafce4aeb362":"08e38625611bb0fb844f43439550bd7a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6c79e1556889b3c074fc083a120d73784b888c5acb877899f17ce52e424b84178d144441aa9f328c730a951b02b048df":"c78ff6b9fc91cbce246c9fcc2366d5f7dd6d99fb1325d8997f36819232d5fcd12ccafdcbefd01409d90acd0e0ffb7427c820b2d729fe7e845e6a6168fc1af0b5":"60cba10826de22c5e85d06357de63d6b2ff0719694dafca6ab33283f3a4aacdd":"8943c22fb68b30811790a99b9cbb056e1a2c329185a199c76ba5aeceb2fcd769":"70671a50e8387bf232989d904c19215c7535ad2d0c5dec30a744c8d2706be6ec":"f6b94b671cae8dfa8387719bfd75ee84" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f5ab77b2a8e370548b88febfd79772144cd5fc8d78062582addd4ff1e5c10094b390e66b3c4efb087510de1b9d25703f":"21a21c9314b37d4ade4a50a5d85995e0be07e358ed9bca19daa867a8d47847105dca7a424f32f715adb8fea5d3a41cfe388872a42ab18aa5cbcd7bde4adc3f8b":"023d582569a7ff1405e44cf09ceebb9d3254eef72286e4b87e6577a8ab091a06":"39597519872d49fbd186704241ba1dc10b1f84f9296fb61d597dbd655a18f997":"3091c9fe96109b41da63aa5fa00d716b5fa20e96d4f3e0f9c97666a706fa56f1":"1fb57058b3ba8751df5a99f018798983" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f0b79e292d0e393e78b6d6117e06d2e725823fe35bde1146502967a78d99d6bca564f0e2f324272f968be5baab4aeb29":"192054dddac02157a35eb7f75ae8ebdb43d6b969e33942fb16ff06cd6d8a602506c41e4e743b8230e8239b71b31b2d5e3614e3a65d79e91d5b9fc9d2a66f8553":"b12241e90d80f129004287c5b9911a70f7159794e6f9c1023b3b68da9237e8b7":"59e9c3c0f90e91f22c35a3be0c65f16157c569c7e3c78a545d9840f648c60069":"089a59af69f47ddb4191bd27720bb4c29216f738c48c0e14d2b8afd68de63c17":"15287156e544617529e7eede4aa9c70e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e3f33843aecb35d01001ff92ab9a0f1a5431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8c353bbbd":"ef081af1f62400a3d193969d689a40234998afb646d99a7c4b9cbbf47e650cda93a90e754a16fffa25fc2a2edab09720b4520c47309ec4f6d9f76f0162af6cae":"e7cc55b72862544a8661b5034e15587b1e5a45eb5dc744f5fa1db9b267f1c3ff":"882d30c888eb8e344b1d17057074606fe232ceb42eb71055264ede7bb638f2a2":"9ce65e95c1e735fe950e52c324e7551403d0ef70ad865bd31fef1e22b129fdd6":"205e3a53367c4a5183be74bb875fa717" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f30a18d597d8591a22dee908de95c5af74884b025f39b4f6707d28447d9d0a3114a57bc2d9eed8e621ec75e8ce389a16":"fae3d554d12a14e29de1b622922f27559559ca1518c9f800375a37a212e8b9a653cc3700223e9404d5bf781d15fccf638050a1394592caba001cfc65d61ef90b":"54240edd89016ed27e3bb3977a206836f5ef1fba0f000af95337d79caca9cf71":"250611e51852d933ff1a177b509c05e3228cb9f46dfb7b26848a68aad2ce4779":"f8b602d89fa1a0bfb31d0bd49246b458200a1adb28b64a68f7c197f335d69706":"7b63bfb325bafe7d9ef342cd14ea40a4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c8dbc3d39beb612811c52e2b46ef76d2b7bd5d3a90ceddf9fb864fe6f44e36687d88158d61014e192f9a3cd474338e13":"8e60115b4af9c8e5606223792539e9ba87e9ef46cd16fcc09046db1ef8d3c036241cae5d61141711818e9e861dbd833632069ebf5af1bd6d4e513f059ab1efd3":"9b56eba0838457f736fc5efa2cfbe698908340f07d4680e279d21dd530fdc8c8":"62c47ece469a7a409e4b2b76d1c793aaf11654e177cc8bf63faff3e6c5a5395c":"4251597013d0c949c53bbd945477b78aa91baa95f1ff757c3a039ccc4e1f4789":"af2f37160940f0cc27d144a043ddf79b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a37f9ed6c4e8f74ff16046b0678ef7bd24fcdca247b771ea1ce1fd48e3f5d2067e38aaf64ec59f1f49d96fa85e60ef03":"95da91f4185b254322ef0fc852473a9b9e4c274b242ded8a4eae6f1e2badde0664cf57f2128aa3dc83e436f7e80928a01d93bf25011eedf0190d0bf3619cd555":"b4a22f5598f79d34f0b9600763c081b0200ba489da7028ad0283828545c6d594":"fa3edc0962b20a9d9e1d0afcad907c8097c21d7a65c0e47c63d65cea94bf43bd":"49ba791a227e9e391e04225ad67f43f64754daac0b0bb4c6db77320943231ec3":"32f313ded225289793c14a71d1d32c9f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"87f85b9c19eba1d953b6613cf555c21bc74428d9a8fee15e6cd717e240506f3e80860423973a66c61820d4ce1c6bb77d":"f22dd3517350176e35e1b7ecc8c00bea4747f0ac17bda1b1ddf8cdf7be53ff8c326268366e89cf3b023a9646177a0dcca902f0c98bf3840c9cbdf5c0494bee3c":"611caa00f93d4456fd2abb90de4dbcd934afbf1a56c2c4633b704c998f649960":"cba68367dc2fc92250e23e2b1a547fb3231b2beaab5e5a2ee39c5c74c9bab5f5":"f4895c9653b44a96152b893b7c94db80057fb67824d61c5c4186b9d8f16d3d98":"a05de6531a1aa1b2ba3faea8ad6ac209" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9670deb707caabc888a3b0df7270942934732e02be728a4bedb5fc9ca4d675b2f3b47c7132c364ce6292cef7c19b60c7":"bba34e6f4ee27e5d4e885e59f8bbb0dc7353a8912e66637d7515a66e5398d9a8cbd328fed32f71bdd34c73cdf97e0d211be6dabfb0144e1011fd136cf01ea4e4":"9f55da36babd6ea42082f5f5d4330f023440bb864f8ad5498a29cf89757eaeab":"8013a309058c91c80f4d966f98bce1d4291003ad547e915777a3fce8ae2eaf77":"c83106272d44e832e94c7096c9c11f6342e12ec06d5db336424af73d12451406":"bc8d4d00609662c1163dca930901821d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6d984c8ab923a7e118447fd53ad287b8f01d1e6112cff12bfb338ecd3ed16bafdd634677c600bdd68f852a946f45c3d9":"ed0e524ed2990ef348dbb15b3f964b12ad3109978d6952ae193b21e94510a47406926620798e71a0ffcbdd2e54ec45509d784a8bfc9d59cb733f9f11fc474b5e":"0a3a32260d04dd7a82fb0873ecae7db5e5a4b6a51b09f4bf8a989e1afacbda3b":"3cbcabb83aab5a3e54836bbf12d3a7862a18e2dffeeb8bdd5770936d61fd839a":"f63b30a3efc0273eba03bf3cf90b1e4ac20b00e53a317dbf77b0fe70960e7c60":"ab9af144e8fad6a978a636ad84e0469e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2c59520d6f8ce946dcc5222f4fc80ba83f38df9dce2861412eebb1614245331626e7fb93eedbad33a12e94c276deff0a":"2882d4a30b22659b87ad2d71db1d7cf093ffca80079a4ef21660de9223940969afec70b0384a54b1de9bcca6b43fb182e58d8dfcad82b0df99a8929201476ae9":"d3c17a2d9c5da051b2d1825120814eaee07dfca65ab4df01195c8b1fcea0ed41":"dcc39555b87f31973ae085f83eaf497441d22ab6d87b69e47296b0ab51733687":"9a8a1b4ccf8230e3d3a1be79e60ae06c393fe6b1ca245281825317468ca114c7":"fba523a09c587ecad4e7e7fd81e5ca39" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1c1207f50b645aaed5c16fe36f6aae83af4924e6b98a7e2a2533a584c1bac123f8b6f0e05109e0132950ae97b389001a":"8ae9a5903da32a38b7c6fed92dd0c6a035ca5104a3528d71a3eacc2f1681379724991a0053e8dac65e35f3deee0435e99f86364577c8ebdba321872973dc9790":"568bfee681d7f9be23a175a3cbf441b513829a9cbdf0706c145fdcd7803ce099":"e32cb5fec72c068894aaeabfc1b8d5e0de0b5acdf287a82e130a46e846770dc2":"d4418c333687a1c15cac7d4021f7d8823a114bb98f92c8a6dccc59ff8ad51c1f":"194e3018377cef71610794006b95def5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"28254014c5d6ebf9bd9e5f3946fc98e55fe351deee8fc70333e4f20f1f7719a522b3ea9a4424afe68208d1cc6c128c47":"98a0db985544c33990aee0f69655dba7198e6720ce56ff9d4662e26f0c6b4ee7ab599932c05295f6c5a4011085c5b2c861a5a8ae4f572ce614ff2dafc0fddb34":"64215cbe384f1f4cf548078ffd51f91eee9a8bae5aacdd19ca16bcaaf354f8ad":"2e21df638dabe24aebf62d97e25f701f781d12d0064f2f5a4a44d320c90b7260":"7f936274f74a466cbf69dbfe46db79f3c349377df683cb461f2da3b842ad438e":"25c469cc8407b82f42e34f11db3d8462" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e26c8a13dae5c2da81023f27ab10b878":"fea104f90c5881df7ad1c863307bad22c98770ecd0d717513a2807682582e3e18e81d7935c8a7bacddd5176e7ca4911b9f8f5b1d9c349152fa215393eb006384":"":"":"":"fd87337c305a0a8ef8eef797601732c2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"8d7dda20a9807804bfc37bd7472d3b0c":"1d723cbc2ff2c115160e7240340adbf31c717696d0fdfecf3ec21150fca00cde477d37e2abbe32f399a505b74d82e502fbff94cecac87e87127d1397d3d76532":"":"":"":"7221761b913b1f50125abca6c3b2f229" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c02e3b6fd4fea7ec517a232f48aaa8cb":"0820fc21cecba6b2fe053a269a34e6a7637dedaf55ef46d266f672ca7cfd9cc21cd807e2b7f6a1c640b4f059952ae6da7282c5c32959fed39f734a5e88a408d2":"":"":"":"667d4dbefe938d6a662440a17965a334" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9aee0326f9b16f88a4114e8d49b8e282":"ef0aae3f9c425253205215e5bf0ad70f141ad8cc72a332247cfe989601ca4fc52ba48b82db4d00fe1f279979b5aed1ae2ec2b02d2c921ee2d9cb89e3a900b97d":"":"":"":"651ad783fe3def80a8456552e405b98d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1e7a4961d1cd2fd30f571b92a763c2c5":"a9262ed5b54880cc8ecd4119cce9afe3de8875d403f7ca6b8ed8c88559470b29e644fddd83e127c5f938bc8a425db169c33c5c2d0b0c5133c8f87bbc0b0a7d79":"":"":"":"1124c509ca52693977cf461b0f0a0da9" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ae0b0d2e84f48c632f031356cdea60ac":"554cf6fad1c376ad6148cd40b53105c16e2f5dd5fa564865b26faa8c318150bfb2294e711735df5eb86ff4b4e778531793bad42403d93a80d05c5421229a53da":"":"":"":"1212e5d3070b1cdf52c0217866481c58" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"16b8c7495d43cd2ff5f65ad2ab48ecef":"7cffe2bef0d42374f7263a386b67fba991e59cefd73590cbcde3a4dc635a5a328f1a8e5edd3ada75854f251ee9f2de6cd247f64c6ca4f6c983805aa0fe9d3106":"":"":"":"d3869a9c5004b8a6ae8d8f0f461b602b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a2d5eff6f73f98e5b04c01967dffa69b":"59759bb91b3c4feb18c0f086269ec52e097b67698f4dfe91ebe8bef851caa35cadb3fd22d1309f13510e1252856c71394a8e210fdbf3c7aae7998865f98e8744":"":"":"":"a1f99bd9522342e963af2ec8eed25c08" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ea1f47fe5e281136706419ea9b652967":"0ec7c617f85bec74044111020c977be32ab8050b326ebc03715bbbffa5a34622f2264d4b5141b7883281c21ea91981155a64fb7b902e674e9a41a8a86c32052b":"":"":"":"daf75b8288fc66802b23af5fd04a9434" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6f072c681a82c00dcd0d9dd5b7ffa2af":"cd7ce90f0141e80f6bd6ff3d981d8a0a877d0ddae7c98f9091763b5946fc38b64c1ef698485007d53251ad278daf5d4ae94a725d617fc9a45a919a9e785a9849":"":"":"":"39c0144f28c5a490eff6221b62384602" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9d730655366e2aa89ee09332bd0a5053":"854766e842eb165a31551f96008354bca1628a9520d29c3cc4f6a41068bf76d8054b75b7d69f5865266c310b5e9f0290af37c5d94535cb5dc9c854ea1cb36eb7":"":"":"":"baa2a3ed6fdc049d0f158693db8c70ef" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"3363881611bfd5d16814360e83d8544f":"6abfab14cbf222d553d0e930a38941f6f271b48943ea6f69e796e30135bc9eb30204b77ab416ac066da0a649c8558e5a0eac62f54f2f6e66c207cab461c71510":"":"":"":"5be410ce54288e881acd3e566964df78" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"14e589065423528ff84a1f89507ab519":"0d2e446cad387a962ff2217c7cf4826dcabb997ab7f74f64aa18fbcb69151993f263925ae71f9dfdff122bb61802480f2803930efce01a3f37c97101893c140f":"":"":"":"fc2d3df6c9aae68fb01d8382fcd82104" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"974c5ae90347d839475f0f994f2bf01d":"aa04d9fc56349fdd31d868e9efc2938f9104c0291e55ac0aa0c24ec4609731b8e0ac04b42180bde1af6ad1b26faff8a6de60a8a4a828cd6f8758c54b6037a0ee":"":"":"":"3caec482015003643d5a319a2af48fb4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b3a110587a16c1eafe51128a66816ecf":"203bba645fb5ccee3383cf402e04c713b7a6b6cca8b154e827520daac4ea3a0247bbdc3b2cd853e170587d22c70fb96c320ea71cb80c04826316c7317c797b8a":"":"":"":"9af4f67a30a4346e0cfcf51c45fd2589" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"55546068cd524c51496c5fc9622b64c6":"951e712d057028158831ca8c74d4ae303c6e4641c344a1c80292260bdd9d8e2f5b97606370e95903e3124659de3e3f6e021cd9ccc86aa4a619c0e94b2a9aa3cc":"2d6de8661c7a30a0ca6a20c13c4c04421ba200fbef4f6eb499c17aee1561faf1":"41797b2eeaccb8a002538d3480cb0b76060ee5ba9d7e4a2bb2b201154f61c975":"b744980bb0377e176b07f48e7994fffd7b0d8a539e1f02a5535d2f4051f054f3":"65b9f7382ed578af03efa2008dbdd56f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a0c92565640a3315cac8da6d0458fb07":"6e9b31755c1f45df7d685f86044ab3bc25433a3ff08ab5de7154e06b0867f4e3531ed2e2a15ab63c611fc2894240fdac1d3292d1b36da87caa2080d1c41bcf24":"c6c74690bdee26288d2f87a06435d664431206b23b24f426e847fb892d40d5d5":"4e7dc1adbc8bc16ba7b584c18a0d7e4383c470bff2f320af54ad5ade5f43265b":"c6fb8ee194a339726f5051b91925c6a214079a661ec78358e98fc4f41e8c4724":"c3f849ee7d87291301e11b467fa2162f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"63e143bd6a87065a00eea930593f9b29":"62c2c790cb56518ed2d8d65952bbd4ab85a56463495c940b94f403a93338bdc96129feea9335b1a3e0ada7cf4c207f4732013bc6a52db41407bf5d6fe9183b3c":"7b4e9ff0c8f8c90f8b324c7189226d3adccd79df2d0c22b52fb31dbb5dfefba6":"49e1aecf2b96a366325dc1892c016a5535dd2480360a382e9cc78bf75b2bba37":"f4ce1d27e759f3ba4a56aaab713642b4c56810c9995fbfc04ce285429f95a8f4":"513111abaae3069e599b56f7e5fb91d1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"98dc16e95f97b5b9d8287875774d9d19":"2fab4a629e4b21f27488a0c9ed36fc8e75bee0c386346c6ec59a6f045975e29818440a6638eb3b9e952e19df82d6dc7b8b9c18530aef763d0709b3b55433ddc6":"2e9d2f52a55df05fb8b9549947f8690c9ce410268d1d3aa7d69e63cbb28e4eb8":"57ecdad71d709dcdb1eba6cf36e0ecf04aaccd7527ca44c6f96768968027274f":"7b2da3d1ae252a71bccbb318e0eec95493a236f0dec97f2600de9f0743030529":"841882e4d9346bea32b1216eebc06aac" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"5dbac5c313527d4d0e5ca9b6f5596ed7":"c00b28c78da4f9ce159741437fe7f90e4e23ecd01cd292f197202decbbc823d9ce46b8191c11e8f8d007d38e2ecd93b8bd9bbad5812aaf547ddf4c7a6738b777":"460c54f4c3fe49d9b25b069ff6664517ed3b234890175a59cde5c3bc230c0a9e":"bf5187f1f55ae6711c2bc1884324490bf2d29d29e95cad7a1c295045eed5a310":"28fd8277dcb807741d4d5cb255a8d9a32ef56a880ccf2b3dcca54645bd6f1013":"b488f5c13bb017b0d9de2092d577c76e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"254d5f5044415c694a89249b0b6e1a2c":"4c1cc9ebe7a03cde31860637d8222faeefa9cbf789fab62e99a98d83084fef29eafcf7177d62d55435a1acb77e7a61ad86c47d1950b8683e167fe3ece3f8c9e8":"71af584657160f0f0b81740ef93017a37c174bee5a02c8967f087fdbfd33bfde":"96e8522f6ed8e8a9772ffb19e9416a1c6293ad6d1ecd317972e2f6258d7d68dd":"3aaa5e4d6af79055742150e630c5e3a46288e216d6607793c021d6705349f96a":"66629af4a0e90550b9bd3811243d6b86" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b46fceed0fcc29665815cc9459971913":"ff62d52aed55d8e966044f7f7c5013b4915197c73668e01b4487c3243bbf5f9248a4fdd6ef0f63b87fc8d1c5d514ff243319b2fbdfa474d5f83b935399655e15":"994d6b5393fbf0351f0bcfb48e1e763b377b732c73bf8e28dec720a2cadcb8a5":"118bb8c7a43b9c30afaf9ce4db3e6a60a3f9d01c30b9ab3572662955808b41e4":"bb47e443090afc32ee34873bd106bf867650adf5b5d90a2e7d0e58ed0ae83e8a":"1865fee6024db510690725f16b938487" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e1a5dd32fc7cefb281d5d6ce3200f4ca":"bf1ba4166007b53fcaee41f9c54771c8a0b309a52ea7894a005783c1e3e43e2eb9871d7909a1c3567953aabdf75e38c8f5578c51a692d883755102a0c82c7c12":"32e9922bd780303828091a140274d04f879cd821f352bd18bcaa49ffef840010":"01830ddd2f0e323c90830beddedf1480e6c23b0d99c2201871f18cc308ab3139":"f36d792dbde7609b8bf4724d7d71362840b309c5f2961e2537c8b5979a569ae8":"7080e8379a43c2e28e07d0c7ed9705a8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"d1b7be857a422b425ae62c61e90a192a":"6ac34c4ce22b644632283ab13e294df2093e939d32411340b046c26fcc449d0fd6d14132c7205df303dbb663190e6e86ad12e14e145b6603308241f38d94eb5d":"aacfe8553d5ffef6abc3fd8f94d796cae2079ff04f7ab1b41982003f02427c7a":"01d2d1bc29d6a6b52bb29bd6652be772096ca23c838c40730d5b4a4f8f735daa":"27af728ee07d3f5902f4e56453b6a9feb308ef14795eb5630b2651debdd36d5b":"b03fbcd03fa1cc69db0a4e3492a52bad" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a2c49aa6f3f92e36266bf267af5877ed":"5684c3eb99314127078484959314d52b3bc50cb3615c0eef6b48850d98aee04c528b0693be13ed1bb4040e8e96cb13c316143f0815cd68d1bb7931a3d9b88a3d":"566522085426b76bdef152adefd73ef0f76eee4614bc5a4391629ec49e0acffb":"30ef9585148dd2270c41540a4235328de8952f28cf5472df463e88e837419e99":"adc46e0afcf69302f62c84c5c4bfcbb7132f8db118d1a84dc2b910753fe86a2d":"4edc4383977ee91aaa2f5b9ac4257570" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"43852c53041a3a4f710435dbd3e4382b":"ab7bca5595084bccdba80ade7ac3df2a0ce198fa49d29414c0249ec3d1c50d271ca74ba5c3521576a89a1964e6deded2d5ba7ff28a364a8f9235981bec1bedfa":"c5612a9540b64fc134074cb36f4c9ea62fff993938709b5d354a917e5265adee":"eee2258aba665aa6d3f5b8c2207f135276f597adb2a0fbfb16a20460e8cc3c68":"a6d6d126bed13dbcf2b327aa884b7260a9c388cb03751dbe9feb28a3fe351d62":"e04c3de51a1ffe8cda89e881c396584b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"52628551ce90c338ed94b655d4f05811":"b3a4a3c4d3d53ffa41b85ce3b8f292b1cc8e5af7488286d4c581005f8c02c5545c09bb08d8470b8cffdf62731b1d4b75c036af7dc4f2f1fc7e9a496f3d235f2d":"f5f9d5b51075b12aa300afdc7b8ea3944fc8cf4d1e95625cc4e42fdfdcbeb169":"60bccbc7345f23733fe8f8eb9760975057238705d9cee33b3269f9bfedd72202":"c0fa3afd6e9decfbffa7ea6678d2481c5f55ec0a35172ff93214b997400e97c3":"5a113906e1ef76b7b75fefbf20d78ef8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0e4873c4cbcde280abc6711a66dbb81a":"1ab7c7d8fe8f505e1dd7ddb8e7cda962572f7004b2a14c7a7c5bcf24bd16616e2c42c50ae5db9981ccd7d0c79062ac572d3893486bd0ae1f99cbc1d28a9e4c1e":"e4b89e28663e853f8b380c8a4491b54121fe6927340a74342362c37d8d615b66":"619775878879eff9ee2189790ff6f187baed4ed1b156029b80e7a070a1072a09":"ba3d673e5e41bd1abbc7191cc4b9a945201b8fef0016e4774047ee2abf499e74":"4758fd021c34a5cf6bea760ad09438a0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0684e8ef93c3363ba535c4e573af1c24":"748a5f5fde271c563a8f8d15520d6818f7ed0efb9b434adf2ff9471b391dd225b37868179ffa9a6e58df3b1b765b8945685a2f966d29648dd86a42078339650b":"e90c82153d2280f1ddb55bd65e7752bf6717fbe08c49414f6c129bf608578db7":"c17e97c93cfabe0b925ca5d22615a06430a201b7595ad0d9967cc89a4777947d":"3d554c430c8928dcdb1f6d5e5a4306b309856a9b78c5f431c55d7ebd519443bb":"d3da71af70e196483c951d95eb3f0135" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"89b885ddb12abc4f7422334f27c00439":"e2366eec626bfd9cb932bcaa0569de6a7a37cf1dfde1f25d00d1a0c89fe25fea592cbd2af7c8202521fa48e15f7cc7e97e431b222b516a3ad2bb7b55b7fcf7f4":"c77ee92bd17939efe9bee48af66589aee1d9fe4cd6c8ae26b74b3799e35342a6":"23e80d36ca72ecc38551e7e0a4f9502bed0e160f382d802f48fb2714ec6e3315":"6b83f7458dc813ce0b963b231c424e8bced599d002c0ef91a9c20dcc3f172ea5":"81d13a6b79f05137e233e3c3a1091360" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ff568be02a46343113f06949a16cc7d9da315aef82f5681f0459650e5e180e65d1d77b00e5ce3e3f9eb6c18efff4db36":"77de4e5db3b308c38c814228583dfd1eb415771f4ae30f9cc2d35b48075286a4e8c2c6f441d1aac496d0d4be395d078519e31cb77d06d6f7fd4c033bc40fd659":"":"":"":"448ac707ba934c909335425de62944d6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"6f092b85eb9f96427642f69467911172cba6df86e0db08d04e824cde6fb91d9b9af2cea53f42d53c45ee3e69a2327172":"667d3ed9f41a154ea33b55182b8bee4d7d46eff8e890c7036cf7c2665d44c28f9e3a8cff166dabfaf262933d337e729e0b6a60a51d00ba18f877bdc9d0cc659e":"":"":"":"16a200f683ab862947e061cddaac5597" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"26e635a6a2b6402b968c1eea13c6a980a0ee9b8497abc14fccdc5bf8439008861f74de2c200505185bf5907d3adc9de2":"80e56f9893beb9f22b2b03caa8f1861d5b31b37f636f2ccbc7e4040ad3073aa20f2f3c6bfefc041df8e57e7100794c42732b6d4b63d8bb51329ca99671d53c7c":"":"":"":"807586c977febcf2ad28fcd45e1a1deb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b239c485d319ce964d69bd3dbc5b7ab9cc72ac9134a25e641bcd3c8b6f89e7e08ef2d0a45cf67667a4e2e634b32d73ff":"c963e17ef46b7b2c68756019704ec7435ec093c423600b3f2f99dd8989f8539a11b1b0598e93e84d50b65e816e794421ab546b202e4b224a8494538dda85da82":"":"":"":"2a3218b4d59f99bd3825631a6eefb09c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0239545a23735b803ae7cb7766194917d6cce164f7ec4f65c6ccd5ec1db5297722d4b7466589da4d39f4585856bc1d7e":"71a440b70a2b5ce41b85de27d987fa2a0628d7990dd7cd1460fddc5410ce6e9bb0ae4f90231f45bc71188fd94e4170389a8bbe4a7e781c95c9a97ad78ba7d07b":"":"":"":"9dafaa8b727c4829dda10a831e67419d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"237e8916eadd65e3422fe59ab257b7e6957fe24f760b499fbd052241879e8294b01d2169ec2b98f52660d9f5170dee22":"d8908cfc1ea8518c1442e46731f30fdad85399894db262b8f4fdc0dbcbf11b60b60b25d3108f4b169fcbef621a14c635525fa3af8ccef6b91f808479509967f4":"":"":"":"593c39c56bb9e476550299ee8d85d2fc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"28b6639b415c79012c749dc2a0d18433ec36eda55815f0841241453fa11b9d572b7c29208e01dbb0be91e1075f305d7f":"6767c3eb6ba1b19412c32bfe44e4d0317beba10f3abea328cda7b7c14109b72046c8691c1c7b28487037d381f77a3bbc8464a51b87de68bdc50ec9c658f915ab":"":"":"":"e390806219fa727e74a90011b4835ed6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ce735a8549fc3f9dfc7b96bf0d48936a711439ac7271d715a278718aca9e2fe3c801030bc74b048ac1e40852345e87cc":"510b0dc06e84ceb901c7195c2f00ad7a04bdd75e0ab52b3d2cd47ddfcd89248dd58e3f1aa8c1ffe306f493905f65369eaed2a5b337dff8ac81c4c1e8903a6ad5":"":"":"":"ba871ba5843083b553a57cf8defa39d7" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"841ea92fa42c06769c5c52fe152d07837b8ff0048392caa5dd045054353d363b25439eb5885e96771dded4005f2baf42":"97511ae52590a0b64b75c37e10b89671880d2d6e8f90780ac27263dbc0e32d0824be5e80a88cf8fc3d4c607eb873c0322d09b9ca3498c4015c53ca6fee890093":"":"":"":"a8fb31362bd997adf4d9116e23dbaf10" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"55cd76fa5f004b97bb8e14170f79f52715d18c60f142b06d16e8e06c274798190a79c8b325163989d86323c03dbe0d68":"bafc0ba64669c9a36514bde6169034101f29e2a0a4b9a55c0aae7dff0c5aca2371b523e26dc44bf75493bdaa023d1555294178288b70f1ae72150d9f7265b4e6":"":"":"":"fa16dbdaf01b3c202426adabf61fa64a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ff3f3098fa3d2b23b38ed982e7afb61d46b4848c878b9280f8e5ed6bd81176e76f0a2a85071a411829cf84421c22f23e":"92194e2c700fa724489683d0b6ddcf72c89b9c3f3ff584e802ae426be4908b1ade093bcf9baf7738b988dc0fde1739498a97c9610da853a7c83981c6a7b68096":"":"":"":"f85490426dc243ba09f9719bff73545a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"7242c1020a63770cccf6f8100970990232a9d11d61c9b0d38fe5e7a568a86252a66481212e5d53c868561298dd5bdeec":"7c3806a32ccf3252ac27a92a07209cd7000b160faa70b9024420b903587d1d77f002d3abe28b563d32ccc502b88f83bc5996f3dbbf0f57835839eadd94563b9d":"":"":"":"2232181f08c1569efaad1a82bcb5f3ba" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a2e445290fed8187df6d2a57e68385bb62d700cb8f140410766b53e69e6a0f2939bbfa7ce091525c9051f064e383a2e1":"fdae5f1ea253108fcb255d215a3ce1dc1d101acf89de4423b75a74619e95f3feaa35b5e0bec430b0ad9567df818989c36c77742129af335c90ceb6dd79c7d2c4":"":"":"":"3841e2d795b17cb9a2081d6016a1a71d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"bc885454e385d911336dda9b7a609a6a7079a4a5a860fcd704161c34658bd98685bb03418b7f24f2ed9475eb8ceb232e":"77bef884a91126564b3214029ac6842d86e4c1fa283e33d6828d428377416f66947e39a4a6708e10bfdae8337a6f302420a6649fc109d0f094c18c1e9361375a":"":"":"":"ea20780ed280d8109f811a6a398c3e76" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c1825cf00cdc2da93adb3e7a33c1f3a76c49166887883744ea2683ddca23f31900f25c434364c992a6d913f753a9c42a":"56940a6fc4823c9e42e8ffed63fc3cf46d0a2b305c236a511b0b5ec7005ecd8989bf2006ebe52ed55845f7cc25d3d0086cece95f0bff6fa7e17ddf474704abfe":"":"":"":"b037c7f0f85f4d7eaeeb17f4c8643a74" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"19b83c0deea6463a3912d21ffc8d8041a5b30640352abc9652770cfca99dc53c9c09942ddd67b91f4da50a8615462ce4":"5d85c56d0d20ee39958a90f301d2f8bb136fa34d09b41a0c9375114a0df9c1dcdb2a62c4be398d9eaf2440949b806f0e5a977da608eeb652a41711d1e9b72655":"9c1db928b95c84cb674060a6d2f6b7a6a5d43e9ee967e9f821bf309ca5f8821f":"a3111cb57365c617df0b0bb3a1aada49ca789bc75903eeb21e42a7d3d0dd0825":"ce7f557c70676987d13aca60bc4585147efeed97be139871a1b29caa1e180af9":"4a49430277d64446e2fa75763eb79ec6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"239f21be6cda23e8660c8a5e04c79f6dad6f363ac6dcffd9228699ae43fbce5ac3c51645500cb3eae68f0b604dc4472c":"2975a099f7e6530e5576534c25171f39131d6bffb99259f7f2bbf7d77de9fb1e829052b54a9631a733113021692eba1097438347c6de82307a0c2bb308edf065":"d451a54584e6d1d634217379e7e60e67303e19dd4ba63b097899c7349a5a7433":"a33dc24c6a656eb26275415581d568b7c2424a9c5fb9e2944ca35ecbf641f713":"8dfccc62379af46844df136122b72a878d9d61b40ccaa029b09e6b9f0b4d0192":"005e91760d89ecb64b5fc3b0e222fca3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e326abbe1db3ead3738d2ca4d9f1d62080cd23ff3396f43a0af992bed2420cec6661dfaac83c3c4d83347ac840f7dc14":"37c94d11ed0e93b8199d43d6eb242165dddd12fe39c0bea4cdef6bcfeb5d17bb866f080a9daef128f685fb3bc59c945927fb0aa3e17068515c3c92fbdf04a228":"1ff41405dbb3b12b8ddc973069edc2d2801af0e0dc9bde2cdd35c5b2d4091509":"138b6d2eabef4b32174afb0156ad1df570cf6e5f6ebde5d19cc30daffd9ca4f2":"f27cf7422808c54c58fcdde1cece92f5342c7a10ac43ab3b2e53362b2272e3ad":"506d6fae6fff9f222e65ac86df61a832" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"cb0229d2bb72d910b0169e8f93318905aef8dd93ed91a2f8388545db32db3f2489e7988b50de64c49a9f7feb5abe8630":"514ec8c02439290853434e75e3d0bd159eacd5ac13b8f202cfd5c36cdc0fe99b53a1b7a1619e94eb661ac825a48ea5ef8bb9120dd6efc351e39eb7cc5223f637":"a6ed69c9216c551793107f1bdaa04944f6d76fe4474f64bb08b0ebc10a18f337":"e0bc1cc56fdfeef686e0c7ec359e2e8bd48d76c8643c40d12325328170bbf702":"87c5b23aa3c100ff9e368fc47534ff8fa2f9e2bfd3599519ee6f60164485cf6d":"bd419968f636e374268ccdd62403f79c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"bdd156ef3c4e09b77fe8781c446eac55b562e4ee1b7d15515a966882d4c7fadb0fc7b37554ba03908838db40499ded5b":"9facd9f4587819acb358e4936d9f44b67ddf82616e79a44ffd6a2510f652f6b9cebc1424b5c642362b19f63c615f49686df66a8f80ddffb56ce0c0d8540150fb":"35ea316fe302786f626e3831530622b62eb33a3608d4af3384ecfcbd198f3f05":"8d4fae22290b6ef8618ded1c3412e85fab7b8d17fb9cbd09dbc87f97279cc72d":"2f54928372e4ce447201427a3ae05769ae1c54b2e83bdc86d380a90b07f2890c":"8045e8da88b1bc126785c8a771db5354" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"154876298a1b63334624b367da984eb31d7260abe79ced41de35ba68a716233a5df0937b90f89dde7fd55a9693c9031f":"36895f574e9e9d08e6c885d305eb4764c1e5689d1f99c2462b3ebdf659e8ce43818dfc886ec797843bfee361b554cd5f969b0c7b0381b53f4afc1bcadbf7eb1c":"c3a46105c50a167a5b0391053f3814a06c90cea2c1fa9329d97fdbc62887ff6d":"54c7d66c65dbddb4665981bff0f503de37d724362aeb67abce6a870fd6a7398a":"58204ca953cbd46dd6c8870b358cba77c436870db49bcd3e2f92697bb580b460":"cd903c0f11ea701214f91715cfec11a3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"94e273fde1e699f84aeef343eb0277c50d169bb5496575301021a2be50df6a555d1422ea88e0e4d905158e93fd8d0089":"1cd97b6e6e7f19401e409aea7b3ec33a8faefd71402b8f34a73c1cb1af215e0e87debe68bce590d41c1f90c6ad9db3d30b3901862e076d765ffdf58776e5fb7e":"6ee75e9f9aee6ac93e20f742f20427e5eb9b4ad2ed06fbba8c7b7870a96941ac":"0ba60399893ede284372bc4e0a37702a23b16aa8e5fe70ea95429af87ff291aa":"94bd2b51c32d29cd14e2123221e45ec0cf1f38766fb6bb0716856d0138f6fa39":"831793686abd406f7b385cd59e497b18" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"5a699113ebf98bff9cb780ce29747a61ba2d7581a5716065d018c89348d7c2ed3f5bba32442cd192c1e37b77b98f5791":"de6d2a3b6ad9af07058d3b1d1976cf61d49566b965eb4e9b74a4cad8e286e7a40b254b860e2e209a8cb4cff3a8e615b84f5ae7505957a758e266a4c3e915d251":"ed18c16a61ba5ecc0755f94c286390a6d46e6e26439dadd36c83ebdee42b4b4c":"7c4550d058b85580be2053fd9d933c87041c5c3f62a5b6b303259dafc90d9041":"ebebfcb9b4b3595e516939ca0688422bbdfc4b9f67b0d6619757cb315b7d7908":"1a5a496aa2268483444b3740c9cc4104" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"42450f2689b87a3dd940f3b9e3b32d4654c725a24ddd2c22f006694321dacf1980b50f7ac0401626453ec836039bfdc9":"4765399ccbbf3d33433bb992ee29e4381f28d800b05431f1c5b3e949c5db72c582bfe8ba08db1575b866816cabbe5e1d31d8a870ceed49fb75676c97020d1f22":"6ee5a7613c25ecec263a2fd2288948b2df9a05d50040c4031b0653878fdb067f":"68a1038481be7412d6a7c8474d4b2a2535c9b55ea301ee800d5a846127d345cb":"7a1915cf78e6da2dc7840cba40390d668d07571608b77857d2224c4531c17bb8":"80a6c622e64495f9a391f5a8a9c76818" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"873869e194201b822b140bdd7797dd1ed408f2190b759c068b7019e6707f60751e101d3465c4ec57dbf9d1ea7597fa44":"d2f92706ca3fb9ced8183c74704440d7eedee1542c2e812f65afc83f4b62dadf1c51fa68f8d5f457a893211c8afc82c93e6a1e15822eff0d4ada6efd25d271a0":"8d0393d2a1ae8930ea88773adfa47b49060f0bf2d3def2acc57786bfbd1e2d6f":"5bcf5ff4fbd9eaabf8bf82ec7c59b043fd64b0025ad1ab2b384e399b9e13147a":"6e2d05e286c90502a3abf2ee72ab7ffb520ce5facfb27e095787a09a412abec3":"e1ceda71b8feb4b0d14d35bbb57a79a2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1fecb5fe87c2a208b4f193e9c3ff810954c554150d544baea1685fb4774320315d5cb651be493ef120ef6966e3e7518c":"34bc292809674352ffb60786dca59ec799188aa401b366a48cdeddf37c12ee4c666f8fb3a0d53df4cd7191166d50ff01d992f94cd92da7a385ffe5795b197ced":"38249fed34a907768eac49267c2c613a65154eec5b73b541d7d7b314b5080061":"115be9cb914b50480fffe078d8170870b56129a0a74271dee063f8b2049e1be3":"69fa6faf7223f5bb1b55f35a544f78181579b1745990053357916fe507e51db6":"60cc92d3ba3ff0715f5627182334ed1b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"4d283eb5ecd85a1613c975e24832770643613c9a5aee0d8649bc0d68c89cf1ea6ec3a1a22eefd9e212d602c338d64c6e":"4aa6917a5c9f370590d70536fdd89c916fec5e5bcbade8c6a6cfcf5b232c98a6b3e6b79a2dfb0778fbc3f1da7b06044d7b0fa2c04ffc3b71324aca1ee19f936b":"05a7092a684ba7a7fbd33533f9be58a4140a3855d4c5f44a31d665a0720c1739":"557ef1bedc890d1543de6cfeb25642782683d77a46bc8aa0836b07157599c7c3":"e87e45073ff8e36c38b128cd2275a160e431787b5e81f6c2fd7a37909eb72ea5":"31ecfb1bcf3253ba5f71b185a66c7cff" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a6f488104a6c03e354d5d1805c62dcd3016322d218747fa83f9199e20f6ab1cfbc2b889536bda1187f59b7294d557ff2":"22f8ad57a2dfa8010e2865ad6263823652917b84dfea61f639efdb0fdbb35c6341ca7721095d69686212dffe78410c0d0db94f04756d52e7d76165d5a1d516d9":"fb9951d563f7aa88db545874b1a3049c5f79774d486e7a28aed1ed75f59224a5":"b1ea7c6b53e79e4e947e63086dee32dcc17bc4f27fba6142f8215ec081cdd5c9":"0d12cc0a39bfbf87194e4070f6b54caaabbe48fa192b96cfed2a794d95fa299d":"62a1c5678e6e8fc738d375e2ca48751f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9d67e017e0abdd7c079bc0354f33dab696ad64146802f06d6cefd9cdefbf55b197f5899e5efaa269cc0432c87648ce18":"d8be0ec1119ff959c32c9cf29914e3f7bf2b01bdbf806c2d9ba119ae2a2cfb565871762b02ee7bf68f1d280532fd7ae7368517f6f751739b228d23df2f207f35":"74a5e24477e8759bedfbaa196f398777108392efb8c64c65c0c9ecd6cd3b5f04":"70cbc6cfe1d6ab4bc30d66fa162d5d4b3029e4b1b9d759f3eae17fb508e91a46":"d3c538e042f0eb796b4af9b4e65cd850425c72e2c896fcea741c17172faf27d9":"559a5e04b75cec250aac2433176a725e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"10914608a6d373a26c53ab83014283b678d73dfea65b4a3540af17f2fafa3b3cf698925b423edb9f946b906f43110795":"9ded87d289412dfda8935e5b08ec66b68abd1bae1fc5363e4341f58db954f1f9bc4b681c0d930ba080f85f8fd04c173cb2b77723ce67692efa7ade48b82b6926":"225159b4c679094f277516b2335b1e8b7d0a7ea33fd56822906d481fe412586d":"4967cd401cd466aba0be5f55615ca0d9fb8adbde5cb4e6ae3a0159fcd6c36bf0":"fec14f325b8b458ddf3e7f2e10938f4c2d04c8d9885bb5b9277bdc229c70b354":"1cd5c0bdeb87c79235bead416c565d32" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b023f6a6f73d4749b36eb54867994432":"2462ad760ddbca4e013688bf61381f190c7b2de57cbeeec81d6ab7b6f067b75adc3545887f8d2aa5d9b9dfcbfa425d610faa9c247eb5d71145f302918e908ae5":"":"":"":"c0620c68515a4618e572db6e4c14473d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"7e0fcd953c1c8bb8d03d7a0e918fb59d":"56b2e11d5c2d87d2c9c90c285e0041beb4594a6efdd577580095612e50cf47c0b76208337e1e18453082d725629667d86226ab22944bbfb40c38b7986e489adb":"":"":"":"7194eee0d333fa5282dc44db964ecf5b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0130217d4a3945402ed99d7b8504fe4b":"28e592fd9db72b40ae4888078aedde260f6de4f0472a7601258e694d7bb6af6810ff4eabdffb332932765fa1d66650fb78cc2be484c0ba803eb9a2502020e865":"":"":"":"4652f0545385fdbe02d05aec21668608" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"07854447e33521d2d997d90c0887f42d":"c561ab6acfbfb98879982ac7add92b80471e0154b77ccc9fd98e7c2013c411e8075948e97ab4db7505797a99d456e54e6585042efeff7e3970e399ea0d27537c":"":"":"":"1a14a810c11b4f0af23c6467c47bbde0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"68a8ec01581d6066391f3e5977465026":"747c7e9aace6d4f840c7b5261e0af796c516477421d52850a7072a0ab2c768fcc80c9ba8d18b228e77a7f6131c788a76515fe31aef4ed67376568231a4700fac":"":"":"":"a5723c43743442fae3637bb553891aeb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1459038c60b70bae7af0da6cfab707a2":"9f7d839310846bd452827a185539c0eb0f106acc7bc4de80d3521a970b23483d57826b1484d329a2d1c2ecfeaf8eeffbaa6e1a305e3f1e47b96ad48a711ad1aa":"":"":"":"5fcd6bf108fe68b85f61f85c0556f5c0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a3357db173df98da4dd02ee24ce5c303":"f1ce08587ac0338b4d0b8e075b42b6501e77758b30087de028a8622fb7abd7f65e3b4f802d1a472dedb9c1a6dc9263c65918d8b7fafd0ae7e9c39e2e8684af3f":"":"":"":"8a5fa11d8e78fbf1ca4e4ca3e1ae82b8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"212f4c80c7e9287c8d25e3b965f91a3c":"bf1d715b3f56c433827c9cb429bee5ca61c80a8d9b2fd4498e1c86ce703637f8f7f34056ab0039e0baa63320df0ec61de60354f2ece06356d9be3c6d1cdcc4cf":"":"":"":"04ac2f969e828f375b03ee16317e8572" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"46e85752e0af82fc63932950120e4b5d":"ae4316424fa765179404188eb8839ce84ad8db92cb12f39089a93a2dbdc371e2fdbef1ad080eb354eecdda3a10ea66ef647aa095afa1786c01bd1c9f70d8da4f":"":"":"":"de576284d8ad36b31bd4f8f3da633e36" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ec2459b1dd7f50df63e14e40aa4a4e66":"b964a24bf98264327c0b9e2e1c99ed1b35f534be801c996f318bc2074ed2500ba8488c4feb442b507c3220523c0041c9543133379365e65e092850a5e3f96cc9":"":"":"":"4d466e2f388aae40d1b31ce1f8ddc5e8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"acf480d54f4c66d611519b72f2c0dca6":"d5b3277cf8badf6be86af27dd36f23ffc580847c5fcb56c4d8a42339336f185c38ffb86f4d8aa7646c1aaed6c2b0c7ae7e4d435f481d62bb01e632f6bbb2abf9":"":"":"":"746aaa5423ef77ea6b1eda47410262dd" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"edb80fddc595b234e3c5c03b2be3d721":"94aad8c772201435543efd9013c9f5f022038db6864e9ed4141ea75beb236844da6e6a17109262bc80f528427b37d9da6df03c7dd25be233774384a7f53197ea":"":"":"":"511927f10f800445b705ea3cfe6ec823" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c7790c9888b0e731ca6ccd60c32bb98a":"967050c11050a6d99a5da428d1f0fc8068b29ba4c66965addbfd31b745cb07d2439d268ab32a5fa2b1934bf277ff586506a941768468905ed980537d8baa1d07":"":"":"":"978493f0cece6f94d21863a519e06dbe" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"58c75625771df61c48a82590eeed3378":"be3120e8515a98701b4b2fb0667de2bad3f32bcbf10fb9b820956f9aa7ffa1bbbafb70002a9c7fdd1cf7e76a735261798dc60a1163919d58e39ef0c38b54b27b":"":"":"":"90f5c486e7efe932258610e744506487" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"d3f64c11aa21bb2d12278847547fb11b":"855c0e3a7567730b11e197c136e5c22b1dc7271d4dbe04bcdfd2fc0ef806b3c05b4264ee6c60d526506622ebf6130738dba4bf35c13ce33db19487312ee691fe":"":"":"":"33ed7089ebae738c6a7e6e2390d573e4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"132ad1c40afb066620f004f08409c59e":"2e5beadd89b663b3903d3a63c3ab5605bfb1a0045a42430e0220243c51a69f7ff7678c2f8edb7bb4a29b646f3edfaca2463f9defd342da87d22b1b8fdb012fd5":"150deb841d1a4d90e66e85b036d9f5a7efca726b907ae3e8f05e1d1338cdfd32":"fb199beeeaf3939be2a5f9e6ba22f97cdd2c7576e81eccc686facbdf8bb4f2aa":"4293341721f57e4548ce8c003531d38622446c8825904e1b868dcddc626c5164":"66d8f3bfb78186b57136ec2c1602e1ef" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"1c1502ca97c109399a72a77c8d6cc22b":"1d33b1b257a3ae1210fa2099307916a73dd92270769697ea2d7901f56865e3cae1be94b5024d0da3880bce06f0b31231c5a889f8ba3d92a20844b61009db672d":"23eede46eff4a04b08dcc2133e4537b332351f8469630f11b0c8853fb762a4bc":"6fd9f9da108e68aea9d1cecd81c49bcd0e7bedb348890f2248cb31c4277369f7":"76bcc11bd952123f78dd2ba60dd932d49203e418bb832d60b45c083e1e129834":"a1eee46001616f2bf87729895da0d0d1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c79c0a1db75e83af258cdf9ead81264d":"5e8cc0fdadc170ed0f5e12f79a6b9e585f9d7c2926c163686a6a724495d88fabcec940d752545cae63f1792dcb966a7325f61997ba8883559ad6f6f8fc09898a":"a2cf6c1c9e4489f504e17f385f08aa82775aa2b0a84abd0b7ee3c6b393d7fd50":"c7529b874e07d4b876196786d510cc038c9e1ab93c461df2474eba484ae6876f":"63c6e7f3548529386c9f47c5aece52ce8454da5db9a807a1b960f7730a61582b":"43b7931e0b3b3769ef8972d0026896a3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"b44d1dd914e88840bc65a94ee199b3ac":"c3dae1863d323cc78f43ccb3f632fde29130e6b23b843ff5a8d79fddc3c1f92b55cd3dcaf7848d40d189c0de7790bebb889e01be05980dcdf30d2b3333426c50":"41e2fce9b48642a1b9bd1695314adcdd38e1a8afe4891e633c5088c6753438a2":"1eb3f8bbacb0c6b901718bfd7eba29f6f87e1fe056ad442d6d38c1351a684e1f":"85570db773f3f5202967376f91a0a9c09c89cd4eddd58cdc6210335fd5e7acef":"bd53036538d9ed904a49966b5428a2a8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"5ef97f7af7df5cc6fa94f8428ec7be5c":"be67434ac4d77f0f50ec5bacc8112d1480bd9f20d6b4ea768d9b51bb69c1dffcd8c30e4412127644aaa6fc453e59fb633f6a5a8c2f69e40d1863e35d4d4c0227":"a64195b1e56cf97fd81e99fa1833d191faf62f534c874def4b8bed0ae7195ac7":"353cd3a8d9cd92bce82cd8d1cc198baa9276db478b0cfe50249e30c3042ee9db":"393ab4726f088fdfeb4df752e1b2aec678e41fa60781bc5e914296227d6b3dfc":"24bdc2cad5dccd2309425f11a24c8c39" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"567130da4e7ecc4db0f035d7ecb11878":"cc070df6aa3623f74afd85b59d1bef2b1fcd9c8093362512ff109ebfe992ed75bd58b5ae1561d702b69065eb3cc0bd328ab698d4c6ca274e96d673309b5df5df":"42033054cefa1f20b3443f8ab7d9635ae8f047b833c8529245ba8b4aa07edba3":"72972fb947bff60df291888ddbfd91e698e0c1c26a346b95fc7c5dac596d0073":"af29b6a13602ba9c6b11f8dbdeb6cb52e211f9cd2fc96e63b61e3c1ec631d2ea":"b0849f8317e043271a3fc5f2eaaaaba2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2c20ae36f1e74542ed8b0a177b8050aa":"c4bf7a39caf26dc3f61311f54ab3095493c626a988f5abee2826c67a4f4b4d6a02329c99a6bcb5e387fa160741c871acc2929c1cc07f2f0a7ce1619eb7da1ec4":"97c148dd10c3dd72b1eaaafbe37a9310ed15b23872e9f2b62d1feb91ea81ffe3":"23df0c30c68bf2eeb55d273a596f1f54ed916271595b906e4f7793b7a52f2573":"22f120fa09215105116919aaf8eebcb69eccd5da42feb737018a05268bf08e46":"b7c73b9ceea2e6ca0be6a3773cdd6886" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2076f9e116a2648e1e664b815b1b3674":"979b5aeafe555aeba152ed66e32e30e110df20ee1f227932a72acfb8218aec767941efaefa091c0128dad9b93b06b28fc76e01f275e8ce1c02f0eb567c914f89":"d12fb10b9fa6d2fd0f39cf76294cd44dcbfa80dca7c2f8537c75453d985ef551":"4228a99faf35547a58c1a4d842301dca374f1f13c6fd067b7c1b815863b73158":"a3a7d5f1e2dcf95a90715ec5fd32e7f88c38b0a452b6ccd1f107458db4f74fd6":"8a63a5002a3636b241f0bec14fd9c2ac" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a71015cf06ddd0a6cd72fa014cf0aee6":"c810cb9db0f169dbc30fda85ccb6d4c40db68d429eeb3653070db7641fbbaba60ef0ff970eaf40887b7e154e2ecd5331de7004689ec604e69927da630a8dd7a7":"5f99f45d8770041703e5a14521c501904fd05ff3340835ac0c41b86442e4939c":"eb7efa6e46ab926ea04c87eb9ce454f5b10717bd9d85305f27d71bea1bc991b3":"cbc80c6171d098fc81023486d327efe2415a0f32e5fa6f6793ce1d0e98783258":"a353f6b350404f3f7b4fb724f84a948a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"395931837614c322d8488ec6a2c4c919":"831fc8d63592b6ce358c08aeac39d67c3e48b4c2617735b6fe5e9fa44d7aee9d60f2fcf549db239d5bed9c608c94e8f8c23b32901442ac53442127377bdcf205":"eb261c737c0a17c8cb1ae055c143f701b74c96c852e4a76ca3ea045e7efdf5ee":"153276007b3843a897efbf022bd1bcabcf655c7eb8acef9baac710b339ecfd99":"a8a5cb17a2945e5b41ff370cc88ac498389b89b6cd82bb3bbde81c212f7c17d4":"537fc2b73183d2c0c106886937a6609c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9a1983859dd6c4cb602970d705952b2b":"68c5cf31f7959ffaa83af9dd55a75ec001befbf835e42a789ac42d39d96128eb6d9b3f07ced15e57e39760390c065fb4425c19ef7184635c18e5ed28256937e1":"e06497a181a5362980579c91d263f630ad4794519a64261ede8b36cf0ac5e713":"714e4fc52aea763e23a1f5b18949ab8fd949f1768560559bccb49d78d51dfab5":"6b6b7f65fd472ad428df2bbb86b85067d0a6f89d9233eea92f5189a9163d0419":"e32af8a81c59dc44540ed8845b447fdb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"230576e9518fb9a6a8391a84919b0d97":"6193f0e7b33ce19fde922aec9c93f1271ebcdd296d9c8c77029b59afa2064e3159088e07e91c14a4a3dc23b6005dd8ef1425d7d2ae8282a5b30b7498b6754234":"ffaca30a256d18836a0d49bbaad599a28fc7821d71aa91b97158a492d84a6280":"a3da13852d0717afed7c58c52530d2ae047b645a5e7aa8cfabc11478444151ac":"e15fdaeea31c95555fc509d2a266abf78d86ca11aa2f87ce1041142eb9f82bae":"7906f8da1e140345c191dbc2de5ead1b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e08a3a33adb4399a9be72fead224155f":"cfbe8b1464b00bb9e0d18b04d2040ed9bd822741188812b98a440fbc66ff018ddf6c0ea20c62d01b8237bc7c3da9e3f9fb874fca79a360b4f0f967d8d02083ba":"56f975849197e2eae5a2e6fb445a93c1fadf57280ac27e27c7cbea2cb00c10cc":"0a6d9e2d6e181addab0ea1ee89c65ce557e10fb8e8d43a24cdd27033d3fff507":"823e9400a9f563cc1fa5daf10f4ff1ab8affa18d8371f9cd0e067fcddce8caed":"5ded298f98cffb2e7f5ea97bd50c7e3e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"11c13b917d9f94fd7a008566d8598e89":"f53343a5a455132df3d1b03db39e44d933855b375d7422ad0d07dfdfb352af28946eb29980793456ec8634bf113e75783246bbd05aa8a7cb5886d372fa012f58":"ff1d8d33083023ffbe28f153bddfa9d9f3c221da16f8f20967d2508fa7752b55":"66a98c7d778d798617e1d31d4bdfabf8d381d38b82125838ddf43fb7f5b27dc6":"407c72d7c890c00b249be00a53ae722e5d8033c84b1e1a6a69d4b278ba5db9eb":"67ab88156f20d03b3a1bc363daefc0c6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"7b95343a4ac0f8c8b2645c33757a3146":"3d7e2987860cbcba14a12594e1a394ee754c9a7a65cecc990bc79b5e86e672e12f8c144d843e1abca46b4759a11b3d29f4e219077a8696efadee618f254cb80a":"16297534a79c4ae7493178226b29e42a6f1e0066aeaee8b5af65bcefa2ee3ebb":"b429ee986f16fb35fe2c47c03c0918870b4560f4ec4678f9df471cbd7ca6a887":"2b14d612eb00c7fba0d8e23bf91df91daef6f8e279e0050d5497ddf0f3466c76":"8f72c17405163090fe0bd795b65811c6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"327290da2e9a19c840de8d33e425efaa5aa7a7afa4e5a812065965478d640f78520cf3c670b098943fec1914d4c8c411":"80bdf18288cb8adb6e3dacb09c553af2e7317c194d37f433eec27e324a0bad752899bda91fd41e5a08acdfd76007aecabc19c95a8bcede310f7320ce97aaad0e":"":"":"":"c26222662ed3a649a1745dee5df4eef0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"be14f473472db07a43b7f9a517735d7f7ede2aa70dbdb729bc4f578a0dce9d7fe9fd97939cd1ef731262417b5213bd7f":"ac71ff53140c1383eb379e5311e37637af933db494e5e689d065661e9095b8302e4174c392f324fac43695d9381e3cf4626a5347938ed9e21502cbd789cca363":"":"":"":"4bab95f9f05fc36a337b6f2582c2ce98" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"88c31e24f4f859b668946ce73f8600621a70731440762b3c267ceab52a9d77a23d6f70ddba0e46a786697a906ccb18a3":"bf9bf25a949d447274a8c72f1ae51399521f8aca39b1b37bb7b4d5cf3c67d55ef8dbacfb71aa9c5949416e2868b968883e517215bc20292894f8406ab39c1ea1":"":"":"":"841aaa0b171d1526ef365b9201adbff3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"8545a0de5ea028c8e5976d5b58fa50079b20ba716f0856cc1af7b98537c895f0266b956542d2b8ca661aef5da1f7f8c5":"686f4f9ee74c3402845fbad9353d7dfeff727584d892eb64bd84b764110cbe4ac8581e7e23acb95caf12979983e8947c570264aec292f1c7b756f7184007dcba":"":"":"":"f6d6ae6449b2984df8bcb69584fb16f3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"d6cd4b4fb9105374605deac7bb49ad792eb225daa560f2a86f66269bf9afc2ea01b6ee6f0eb4926d2f09329df6e90d79":"5d1b8fa0ca2ee127d1bd41423c17b9a8c736715cc2906818e9216dfd81b7637b66c89b772b55ae707c6effa2d9ce7425df26f966646ab613d5599143cf51e5e8":"":"":"":"c36ab451116d733eb4377de3511db5ce" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"e73ebae0d0834fdff1829ac3d9722fe9f1bc65b5f652fae5f7615af116440e3d5709b5cddd6065d568c246820de46b09":"2026cf7c1b1fe9645ab8759958ac04fb1d8938b9913c3b7f22da81e398b2c00b1921e1d4edb5d21c4531515cb0f9644fe8068685b9fca813176e6780796e8ded":"":"":"":"98d1dce30593de8a8d5b4d956f6c684b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a53c1813c06b609eff9ddc77204b085ca985f22170b8ecfcbbf45ea11c45c24fcf25bc33150f9f97ce48244d5beb685c":"1d0dd1a87d59c69f28e118e1083d65f1ee0df31f6308a92dcc47503ec4d20a018d9821c6a7d64385724f0e941231426e028efe6d75e53ff8edf095ef1baf2656":"":"":"":"035cec3a24ba7c44e5c19436c2689a75" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"16d5b8290693a5c40c5a526dd6d653ac54cabb5608d77bb2cb7d6270b96c2fe2de076716ae8cf0a5c781edbde861dc70":"aa82a5ea33439d0c16a1cc13cbae53b169f4d369bcbdae81a9a38129c65ae0ea4f720576c012f8d7eb1c0202003c39d28453a22e502b4949cf5ba23a727721bf":"":"":"":"de4ed9d163d11e9b52470d078df4c869" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"68bfabdbb821cb978527ff18ce37c96c79ad751756551f36b6991981285a68854ec7f72f548c3395ad3ee40410064d4b":"3da9e9518eb1f1b6268e4597f158844ff672ddb414f7ec23fa66d6c86b90a732a7b3016a3387ec3dbed34eb479413d017932ebf9f2a2fea0b35d2bf4e06718f9":"":"":"":"ec4e3e2b6b8763deb17b8611d1fe7953" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"171a74ab694a7d7c2baa3ccf103ad94f11094e07a955ae9ac3bad370f1448753e99b63cc23d1878ab66f94136ec2ecac":"72ebeda7342770d03bc0e531754f946ca5cca684c41f9d089fe9147fad93b6154919c5cb2e6d162fbfde7b9ff0aa590a17993ca6c80bd59eee4134fc2ce944d8":"":"":"":"582ab4f105c3e1fed9593f58fc335fc3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"caed30015b34064762591eba9a59f440566a6621832f650572362229e8a38cd0f5d6d322afd8444132056690d6fa5540":"8e27f0dbeae4613bcf0011105f824ed2ecb150a83a0994f8f6607833755216e016fb175e51d42370afe27b11c18477886b530c95bc31bd1c0f8fe00f61fc15a0":"":"":"":"d42787e97147d457f1590c742443ad92" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"c58d62f8145622cd86cfbda66bc26d2ce4c5610cd9cd1c326b99b60355a6fe751783c07f2cc21ba68f1f20ca70f0ad31":"38a8b685e6bbab67824f4cc72995043ea2854f067f2afaec762c9e78ff9d585a25bc63c8d0d075d06d43f3f694733982d26cbe0648b2d0cf8053918b912c303a":"":"":"":"84001709f15a2fd167c161b5d376d86d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"dc9719050d5257152d8a7d60d3ef1fc5b8cb1700bafc7de863c019f244779c464b6214f21a2f6d0aa3ca282007615ce5":"f188a1ba21b1791ebf8a08d8ba555e49423d9178a561bcc1672539c3a7ba1d856eae9922c4d96c181ed045d6f1d15e855690cdae451edac60f1ca2021f1fec57":"":"":"":"7540fed313c96261cac255bf83b5ae99" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ff057781af4a4a1eefeb26ab38f82a2efb6f065de290ebf225bd693dfb1f97455b49143bdb430324c9d945c48824f6cc":"0ddd0f4a43a7b54d9abb0928a2242c378db7a95a0b206baa642afe5cd55108f412f1d727fd591bca2c76355aa62aa8638cfa1916739bc66e02b9459ccd0881ba":"":"":"":"8b6e74a94fcac0d2f212d3594213fbb6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"ef027327e47fc5875c01cb17d798fdc2b27a5c78000727842f8a516f4e8dd34afc167ae145b1e763bebdca51e2f461a7":"128566fe6c5b5595742190519445c25db85ee0ce29371f4cab213400d479d2bfe27655155be0fa237173abb214f0226a2f1770802dd69485adb25e6d837485e1":"":"":"":"76cd1553b2b73d4ef6043a09fb90d679" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"8e1a59210f876d017109cb90c7d5dd669b375d971266b7320ba8db9bd79b373bcc895974460e08eadd07a00ce7bdade9":"23677c04a2d6ab446b7b3c582a8071654d27859441b10799f08b788378b926ca4306e7cb5c0f9f104c607fbf0c379be49426e53bf5637225b551f0cc694d6593":"19e914ffbc6d872be010d66b17874010ec8b036a3d60d7f7dda5accc6962a542":"bd7a0c09e780e0ad783fd708355b8df77b4454c3d606fb8de053bffa5ecf9021":"d284dc2caf6d214f8909efc9a75297bccfc04353c2788a96f8b752749c7fec0c":"129d256e7db6269e5a0a160d2278f305" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"00674e633670c9971be7af789d37d5a4ef567b3ca4766722cd8f67e09d21cbbfa08d43ea1aa259999c6a307ae6347d62":"ec47b029643f85ea19388b6e9de6ab22705b060ae10cee71262027d0bdff5efd7393af619bc6658612fabc78439a0bd5a01255563a96013fa130dd06fd0f5442":"5b92bce3f87645126daa4704fd7df98b880aa07743a57399b985ad1a00b1f2fc":"8199de1338c688234c77262ef35423f4695b277726c76d8b5f426399c14d83b5":"eb95f5a4d8400cec2d4e0f548b6e92636b5e284fb6b61766a1f35bb9cdc5df0a":"9fbe95817578eb272aa9da2f509c2a06" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2553423c3cb0fae8ca54af56f496e9935d5af4738898f77f789a9bee867dfbc6010c4e5bc68da2b922cdd84eea68e1da":"a9bebd13711c0c22c94b3252654854515a9dc015fe69e688fbac9676b3d77ab67e19b020cd2427ac789ca17f656e499be3ba3ab2075ff95247c6355157eebc79":"e74e45fa28697a06dab08545fde0cc26e7eca31c40aa68ee41c4de402fdcc961":"5aa8abf7062079929d6a131cd3844a5fb6514c07061e25cad67677d867297685":"84819109b2e09b46ba3f5464c34b28ce25a186f0e0fd83fe5fa0ab026c01292a":"3846f3406e49040c48b5cfc9cbc75d1a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"856f1371454bb9aa06be897dcda9b295817c6eeb865a9acb3a89d145bfe29ce5e1b3b12b714571afdfaca7951cd47e33":"a691b8bf6a407c93a36d18aeced4c75f76d8397d4ecbcd4e8f820cb393186897f05c1ef668b027fc78ba6da9bd554cc31a467d47b5e534b5340c7799383ec05c":"2c81d1e94b33164a177d0183d182fe7d23ef4f88444246464e58bdd0de38d82c":"1b5dae81c96771bea091521c0973c5af76a03e3624160e2511e57ff43a1d32a9":"bf5878e2bd139f8f058f3d834acd771514da6d4c5b9ef84466e5a4e0e4b2eaaf":"6a5ea73aad476ce201e173d4d5a7ffcc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"0436075cf8cf62ce623c2301ebd45203c98282611cfa5a12dd7c04525ffa7eb343a607af2f57feb7ce3af97e0abc2285":"1ab9ada5eeebc3fc8e53f358b643476fcfd4dd9f092f21d2bc1c4bb1ffd01a0c5b207aaa09ff76a9cab0aa6ce62b6a65b2650ab448b8bb2e8696a7aa4b6f4e8d":"62f07d1f49e40f7f472985947ac4d8ef2d58216d918f7942b9c70f43daff8972":"37ae758141fbc890ee7e1d0854426b2984fb1c094677e6a61546e9315bab0898":"353d1dd0c8d8656bc418a6a3ace138ecd62819d4e21b8bd87694ea683ec0cc37":"bfee6bb4afc228da981bfe7f0d17578b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"d004a0893bf326d50ee52e04cb3e64409f204f4e9af780d5dd092d04162d088385b1f243000914c62cba3dadf9827c81":"c36004075f5fd078137ea08de6cb15f71aeb9eca21c891cfdf7a8c0d21790c94ffa93be5fa06beb5e82d9fbf173ef9b29c18511fee2455dbbe61d6b01baf024a":"7d313ada131650c7a506d2c194444ed202d568544caa75bbc60e57a0b74c9a10":"791d60238677ff53150cf7074061eac68335c0a7cec7de43ea63a5df0f312cd8":"6754366be264deb9e94f39e92ac2894bd93c1d7e1198d39e6eddccb0ea486f4d":"1c29795f03e3c771603293473e347ab4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"9a8c79b48ada409183f7260aa1415c9ee4e0b662e0fb81b5c56f85d76ed75efac5751dd4de7e7f8b53a36ee0dce2bc9e":"c4d68b76dc0e785823be2da9d339dc900132f12721e8a63ebe92e36d740c5a5e5564c367bff4a52bc70b1c60c86f0bcb7c1d99c414956a259963207184f01246":"04c7060f36569a5d9578c718627fc2695e8d783c0c8aefca2744da6664e67c8c":"1d4b7d587421dea4f7f3e77fcf997607ecfeb6e665a9a184138eb5736b16f516":"8cb8daf9cda230d8d39b829b968aaa5f5d3e3106d8b693227ab1b6201b78a7b8":"faa146098526546927a43fa4a5073e46" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"a0736a5a8b0a394625d8985b05e3a9f277c7ba03b253c0e783359a8c4c086121cb46ea469c7756d5f099f5ee8ed16243":"ea7a046fa1760866bcb37fecf9ade7bcea4444662ea782d6f2820b22a96bab97b4c5adcb0a50ced885121b6b85a5074444b1555d9655f4f6ded31fe15281b30e":"47f3655dd05c42454fad68e330aabca49f27c76ba05ef07b6d77fba41153c0ab":"a5d07da3e399cc51d136096599fcbd9779e839b1fd86f21d7d1e23acd91f9fa7":"150b028b64a988fc1ffdfc9e66b4c8dfe4fcd8538ee976c89923638ebad33802":"6ffdc685169b174ad0dd84cdeed050a7" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"d445a3d9332c8577715c1e93f119521bd31a464db08cdbd73d50080d62d5a48fba4cef2dd097ec749973037e33e8d6fa":"da5f9b2db13d0555846c00da96115036bb75ace66d56fc582d6cd0171e3e23335c5c2b8691e58af8899ed0204316479f849ca6f47309cae571ccb42d3d35c166":"79346394f795f05c5a5199423649b8b5345355ef11eb4239db1c767c68afa70a":"c22810de9987b228c19680eb044da22a08032148a6015f358849d6d608a214b9":"7747d68ca8bcb43931f1edce4f8c9727dd56c1d1d2600ad1fb767eb4fbc7b2d6":"f5c40babbec97cb60ba65200e82d7a68" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2728be06796e2a77c60a401752cd36e4a051724aa3276a146b4b351017eee79c8257398c612fc1129c0e74ecef455cd3":"d663d2cfcddf40ff61377c3811266d927a5dfc7b73cf549e673e5a15f4056ad1f9733c8ed875ff77928284dc1cdb33accc47971d3626615a45b9a16d9baf426e":"62349efbac4a4747d0e92727c67a6bc7f8404cf746002e7d3eeffb9a9be0bbdc":"381c0cffbdfa61a6af3f11ccd0e543208b584c3f520130e33617564ec7a48cf7":"6974043362f834fd793de07ceebd051599163d50489441005afc9db09a9ab44f":"df7894746c599e02d985b195ca3b4863" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"2b65b56de410ee82e55bd2bf80e6cee356a37c3a3aa7042df45fa750a74e097b071fc18d6eed96523dd4fbb677b8c729":"bf03a6b3e8e23ff53369b971217dc3d3f4c1211329c94847347b3aa77dc7a3e0670381573527844a1ade786f18631944558defffb9a00900ca55f97ec726126b":"59255e5cd2221316c945bd614471df76d5b2f394b8829de82e5c30bc178565e2":"5739bc14f0f2ef9d3393928aee67b0908adaf587650928916d8ae78b0077a3b3":"6b236cf0ee0dba0c92b26c60235d3868715a80c0efbc0c898b6f0b1ace8146e9":"8374b571d7f2d94ce2bdadeb9d815397" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"8756ee2c5e381c7c1dc530748b76a6274ef6583090e555d85210e2356feb2974a8f15119a04e9b481cd3bc557a197b8e":"19705743eaaaa0e8890a0faa2e0df37c820d556c7a45f04d76276f9f9ce2e7c133258ae6d1ba9cdf7745d01745763d18dcd1af2c9e9b0bed2806e60f0f9b636c":"2b4a92b682e9a557466af97b735e2ffdbac3bfc31fd5be2cd212cfbd4b8d690a":"e86504f10317bbeab346f3b9e4b310cbe9fbd81a42054f358eacd08cccab6eff":"19ffad856a6675268cc464ca6fdb8afd0912143e552668528d1484c9a54592cf":"f347fd58aff2999530e258be77591701" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"f58be57e5035d5c455b17a41ccf7542ffd77f5c009e0a737118ed6c4188f78fcbdbe946bf82e1fa50fd81691de82dcf3":"f9939592ab2b31d92ac72673da013a588ea17bbf02cfd6e79d79f8296601633d04ceb005110f266e6100040ef33194858def8b535314c73caa0e48fc4d2f6e2d":"bb1cb21a316d4b88093cbfc7917d614dca97090cdc8bb340d864547cb3e1fef6":"7e42d5439d81680c8edf5c571d548699730cfada33b650a4d510172a42b298bb":"e9e3cf180f72ba2c1a45d0a94b822943612143e0b642398796b0428ae1af6cf5":"d0c83a4bf3517648b441d411ddcb808c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984ef955cd5db76c1aa56aff83f1f6799f18fe531cc":"b8d6be3036eeb5657fb10766354d4be897bd27973b3530270ccc02a08169a2e437b30a3635eb6ccb310f319257f58d8aa030c8aab616418e0914a46131306a0c":"37572428df5826e6ae5ce95db4ef63f41e908f685204a7b64edb9f473c41e45c":"28beda0e0e346b447d32208c6b4c42dcd567acfe1e483fb4a95ea82cb8ce55a5":"7a0fffa541d723e16340eeb960b1b9c9aae912477e0ebfac03f8f1a3a8bdc531":"611c9f6fc5193dbe3db96cbcd276168a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_nopr:"50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2":"5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d":"d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e":"ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342":"53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75":"9fb0df053e0345e5640aa97fedef50a6" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)a #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0) block 1 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"496f25b0f1301b4f501be30380a137eb":"36401940fa8b1fba91a1661f211d78a0b9389a74e5bccfece8d766af1a6d3b14":"":"":"5862eb38bd558dd978a696e6df164782ddd887e7e9a6c9f3f1fbafb78941b535a64912dfd224c6dc7454e5250b3d97165e16260c2faf1cc7735cb75fb4f07e1d" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)a #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256) block 1 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"41c71a24d17d974190982bb7515ce7f5":"8148d65d86513ce7d38923ec2f26b9e7c677dcc8997e325b7372619e753ed944":"55b446046c2d14bdd0cdba4b71873fd4762650695a11507949462da8d964ab6a":"91468f1a097d99ee339462ca916cb4a10f63d53850a4f17f598eac490299b02e":"54603d1a506132bbfa05b153a04f22a1d516cc46323cef15111af221f030f38d6841d4670518b4914a4631af682e7421dffaac986a38e94d92bfa758e2eb101f" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)b #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0) block 2 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"bac0fdc0c417aa269bbdea77e928f9f8":"8b0bcb3f932170416739ea42e7dcdc6fa960645bc018820134f714b3c6912b56":"":"":"d9c4fd81f6621a8cf06d612e9a84b80fa13d098dceaf2c083dc81cd80caedd105c7f2789963a167d72f76e81178001fd93de4623c260fe9eebced89f7b4b047a" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)b #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256) block 2 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"69ff3310141dbf3ece409ade58745113":"d67439abf1e162e5b25941605a8aeba7d686dec133257f6c220e1c595e954a07":"03e795be8379c481cb32534011ca6bf524dc754978ee5ebee475129ad39eca98":"5685c7330f33004515f8c0ab27f2a1cbe0c8a4a6806d6c8486e0217b43e859f2":"a6d22a4370251c51978fedc7e7753c78179ed1943d2ff1b5a374860106041a304b124d47cfa304c909f7d417843846d52dcc7ebcf5c93afef885c893b40c81ed" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)c #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0) block 3 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"aaa46610681167ff8d4d2c51e77911d4":"58a5f79da44b9f23a98a39352972ad16031fe13637bd18d6cb6c9f5269d8e240":"":"":"c1714f89459ce746b151509e5066d4811a06ad06c1e9b13b50c0fc7cdd77ceedc233908ebe1ea8140ec2dc262a43201be667008e081e5476b19b27214111d325" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)c #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256) block 3 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"6ca848651d420fb02f9b66f06b377e59":"001ec3b192ddc765553e15742dffeb21cc7d97a4bcf866e3664d8a5ecb4c2463":"99f139ab5ee4f7eed6148e82d79ad5f2b9fa638d574e5db79b650c0e682ca466":"6e7bf0ae28a797ccbb47101f26bfe5a0b1e450c57aedf731272411fa7b6c4ed4":"865b6dd4363c5940d6228cc90ba8f1a21efbaa99b0c7b37361f7fed7e969a97b68d550dd6ad4bbfaf6626779bfb43c66845c2923df9f55307c8bc9f0a3872fa7" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0)d #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0) block 4 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"1c6a80d82012c39c9f14a808643f08e7":"4ee68b3352b874e1cc29375028851dee9d5dfd88a40664c79e2b724fb11b2808":"":"":"7c58d2a5522a88341fb55facefdb6e24840cae283948d53148a384e13b5407d7712c33434bd3d19448b43270c54860bf3495579057c70bff3084dddff08a091d" -CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256)d #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,256) block 4 #0 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"70bdedbc6825c4fe0a9f7e45290ddd51":"481e505bf7a36f9d96690d49154d98d6a247c14a703dbfed7cf1b7a71bee737f":"5b07610c2c946eda2975a26ddadf7d73e3d287e923d9b1a2d2070776a446d8e6":"2792a988ebb2e768eee0d5c263bcd76a675d6f339e5f1ab2ca595e6b3b4d024a":"303448a355fc0a69a130b6ab194997b220970bf680914913da904e92109dee3d9f23871130c407045cf463ce783a5dfafd603a8384790573af385d479acd7206" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)a #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0) block 1 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"aad471ef3ef1d203":"890eb067acf7382eff80b0c73bc872c6":"":"":"a5514ed7095f64f3d0d3a5760394ab42062f373a25072a6ea6bcfd8489e94af6cf18659fea22ed1ca0a9e33f718b115ee536b12809c31b72b08ddd8be1910fa3" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)a #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128) block 1 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"026c768fd577b92a":"b408cefb5bc7157d3f26cb95a8b1d7ac":"5737ef81dee365b6dadb3feebf5d1084":"3368a516b3431a3daaa60dc8743c8297":"4e909ebb24147a0004063a5e47ee044fead610d62324bd0f963f756fb91361e8b87e3a76a398143fe88130fe1b547b661a6480c711b739f18a9df3ae51d41bc9" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)b #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0) block 2 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"259195269ec11af6":"2d2ab564202918c4ef5b102dda385a18":"":"":"2c5cd79ed87622a91b8654c8903d852242cd49cb5df2d4b4150584301c59f01fd95a702ac157c84cc15f42c8211335672d8ce1291ef9b1def78149a04fa2697c" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)b #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128) block 2 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"b25716931b6e3cc1":"adf5711f93d8c8997349429ccaedae0a":"abf8cd66dd39758b01d7dbb99ab17dc3":"4be0f6b2755377c6e881fbb261b56beb":"d420604dee6467492db5957c86207a708fd242ed67942aed299425335c83b41437418582f41bc7fc0ef0d6927f34d83acd67c70133644fd711dd5a65731f9f02" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)c #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0) block 3 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"38aa5590f6bfaa4b":"2e1724db482232a3e61f92c1c266faf8":"":"":"4438b48a45fb0141e31f0a9624dfe6fcc2f9edc075c0a52bc5fc46d85a966c853feee6af913234b3f9a679f667898dc15a24aaed89f035bfa5da516e435bbad1" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)c #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128) block 3 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"111d8612a0f04e2a":"9bfaefb698b1b5fcc62db2c16498c33a":"aedbe02847b1b08b6a673bdf25b0224c":"9901ead62ce56573b0f71cd020fe3469":"dff8bf2aec531f8532607e738bd79f91d6085cb19568b7b0240ce6a6b371a282bafcdba02137df990535d9ebf0ba77117751626b2678aca7be4decfd6b9d4b38" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0)d #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,0) block 4 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"e78c5571c5f926f9":"6bdf5332bdce4655d45c2cfea897b000":"":"":"e0715688765a3285e7b7db555f277924e7171f7541bf26122b13dbaaa39f9e2b0345c659583ff8c9cfd888f1abd2f3b36a7c9d47c687b01c819a9f9888542e0f" -CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128)d #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +CTR_DRBG CAVS 14.3 (AES-128 use df,no reseed,128,64,0,128) block 4 #0 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_no_reseed:"7ee2614ead3c128e":"8b80936e69c67edb771c28f9b9452124":"fc35cba97a1e211bc420e8af53f8e13c":"fba438aaa75a3cd4cd0cce399bfec74a":"6721cc1ada5ebc1713f74c759000765652eeb5f3f9c24fb9341b36a369cec1d27ea80d6b73b56047af07138c5a43c99a87753115c471b8587ea65fa2065e3ce0" CTR_DRBG CAVS 14.3 (AES-256 use df,False,256,128,0,0) #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_FIRST:"0bf814b411f65ec4866be1abb59d3c32":32:"2d4c9f46b981c6a0b2b5d8c69391e569ff13851437ebc0fc00d616340252fed593500fae4fa32b86033b7a7bac9d37e710dcc67ca266bc8607d665937766d207":"":"":"":"322dd28670e75c0ea638f3cb68d6a9d6e50ddfd052b772a7b1d78263a7b8978b6740c2b65a9550c3a76325866fa97e16d74006bc96f26249b9f0a90d076f08e5" CTR_DRBG CAVS 14.3 (AES-128 use df,False,128,64,0,0) #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate:RESEED_FIRST:"5209e5b4ed82a234":16:"0f65da13dca407999d4773c2b4a11d851dea0a12c52bf64339dd291c80d8ca89":"":"":"":"2859cc468a76b08661ffd23b28547ffd0997ad526a0f51261b99ed3a37bd407bf418dbe6c6c3e26ed0ddefcb7474d899bd99f3655427519fc5b4057bcaf306d4" CTR_DRBG CAVS 14.3 (AES-256 use df,True,256,128,0,0) #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_256 +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"a2d015f22d854e29de278d910c573de5":"16a1f035388cd8d956026e3b0117cb524dd3eb563f9a7720bb7dcb0fc6fbe743cf140bcd4d7130e7e3ea14046c56442b57c43b34ad219553e7105c18f6e561afe27c9f0be60d82d6cc474efb7fc737b16a6895d9a3a45b971d19b743c1a4ac8f":"":"":"b4e8395bcb7503410a94633f70e9904a5b30e62c35bc6dd2a03496c4a49932e184fbffdbcf1de1c72c50d36dc2ae8f04f40f96aae159c3fb816ca16df99b6c3e" CTR_DRBG CAVS 14.3 (AES-128 use df,True,128,64,0,0) #0 -depends_on:MBEDTLS_CTR_DRBG_KEY_SIZE_128 +depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_validate_pr:"d4f1f4ae08bcb3e1":"5d4041942bcf68864a4997d8171f1f9fef55a769b7eaf03fe082029bb32a2b9d8239e865c0a42e14b964b9c09de85a20":"":"":"4155320287eedcf7d484c2c2a1e2eb64b9c9ce77c87202a1ae1616c7a5cfd1c687c7a0bfcc85bda48fdd4629fd330c22d0a76076f88fc7cd04037ee06b7af602" CTR_DRBG entropy usage @@ -843,5 +1083,6 @@ CTR_DRBG Special Behaviours ctr_drbg_special_behaviours: CTR_DRBG self test +depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY ctr_drbg_selftest: From b7ebbcaa2cdee4b63ac2649e696f99b65327e109 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 10:20:12 +0300 Subject: [PATCH 0988/1100] compile time warning of 128bit ctr_drbg keys and standardized warnings a compile time print was added warning in case of 128bit ctr_drbg keys. This was don't to avoid an actual warning in these cases (making build with warnings as errors possible). Additional warnings on the Changelog/headers were set to use the same phrasing phrasing was approved by Gilles and Janos. --- CMakeLists.txt | 18 +++++++++++++++++- ChangeLog | 4 ++-- Makefile | 12 ++++++++++++ include/mbedtls/ctr_drbg.h | 4 ++-- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 157eebab81..34710015d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,10 +36,26 @@ set(NULL_ENTROPY_WARNING "${WARNING_BORDER}" "${NULL_ENTROPY_WARN_L3}" "${WARNING_BORDER}") -find_package(PythonInterp) +set(CTR_DRBG_128_BIT_KEY_WARN_L1 "**** WARNING! MBEDTLS_CTR_DRBG_USE_128_BIT_KEY defined!\n") +set(CTR_DRBG_128_BIT_KEY_WARN_L2 "**** Using 128-bit keys for CTR_DRBG limits the security of generated\n") +set(CTR_DRBG_128_BIT_KEY_WARN_L3 "**** keys and operations that use random values generated to 128-bit security\n") + +set(CTR_DRBG_128_BIT_KEY_WARNING "${WARNING_BORDER}" + "${CTR_DRBG_128_BIT_KEY_WARN_L1}" + "${CTR_DRBG_128_BIT_KEY_WARN_L2}" + "${CTR_DRBG_128_BIT_KEY_WARN_L3}" + "${WARNING_BORDER}") + find_package(Perl) if(PERL_FOUND) + # If 128-bit keys are configured for CTR_DRBG, display an appropriate warning + execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/config.pl -f ${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + RESULT_VARIABLE result) + if(${result} EQUAL 0) + message(WARNING ${CTR_DRBG_128_BIT_KEY_WARNING}) + endif() + # If NULL Entropy is configured, display an appropriate warning execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/config.pl -f ${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_TEST_NULL_ENTROPY RESULT_VARIABLE result) diff --git a/ChangeLog b/ChangeLog index d43ba740fe..7bc671041d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -71,8 +71,8 @@ Features independently contributed again by Paul Sokolovsky. * Add support for key wrapping modes based on AES as defined by NIST SP 800-38F algorithms KW and KWP and by RFC 3394 and RFC 5649. - * Add support different keys sizes to CTR_CRBG. Note: using shorter keys - than 256 bit may decrease security. + * Add support for 128-bit keys in CTR_DRBG. Note that using keys shorter + than 256 bits limits the security of generated material to 128 bits. Bugfix * Fix the key_app_writer example which was writing a leading zero byte which diff --git a/Makefile b/Makefile index 78c1acb892..f4c0a00215 100644 --- a/Makefile +++ b/Makefile @@ -61,9 +61,21 @@ NULL_ENTROPY_WARN_L3=**** AND IS *NOT* SUITABLE FOR PRODUCTION USE ****\n NULL_ENTROPY_WARNING=\n$(WARNING_BORDER)$(NULL_ENTROPY_WARN_L1)$(NULL_ENTROPY_WARN_L2)$(NULL_ENTROPY_WARN_L3)$(WARNING_BORDER) +WARNING_BORDER_LONG =**********************************************************************************\n +CTR_DRBG_128_BIT_KEY_WARN_L1=**** WARNING! MBEDTLS_CTR_DRBG_USE_128_BIT_KEY defined! ****\n +CTR_DRBG_128_BIT_KEY_WARN_L2=**** Using 128-bit keys for CTR_DRBG limits the security of generated ****\n +CTR_DRBG_128_BIT_KEY_WARN_L3=**** keys and operations that use random values generated to 128-bit security ****\n + +CTR_DRBG_128_BIT_KEY_WARNING=\n$(WARNING_BORDER_LONG)$(CTR_DRBG_128_BIT_KEY_WARN_L1)$(CTR_DRBG_128_BIT_KEY_WARN_L2)$(CTR_DRBG_128_BIT_KEY_WARN_L3)$(WARNING_BORDER_LONG) + # Post build steps post_build: ifndef WINDOWS + + # If 128-bit keys are configured for CTR_DRBG, display an appropriate warning + -scripts/config.pl get MBEDTLS_CTR_DRBG_USE_128_BIT_KEY && ([ $$? -eq 0 ]) && \ + echo '$(CTR_DRBG_128_BIT_KEY_WARNING)' + # If NULL Entropy is configured, display an appropriate warning -scripts/config.pl get MBEDTLS_TEST_NULL_ENTROPY && ([ $$? -eq 0 ]) && \ echo '$(NULL_ENTROPY_WARNING)' diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index 5e0d1f03cd..f08a9798ca 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -11,8 +11,8 @@ * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 * as the underlying block cipher. * - * * \warning ARC4 is considered a weak cipher and its use constitutes a - * security risk. We recommend considering stronger ciphers instead. + * \warning Using 128-bit keys for CTR_DRBG limits the security of generated + * keys and operations that use random values generated to 128-bit security. */ /* * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved From 6275be34831cb6b07c1bf326cd795750dbe8886f Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 10:25:30 +0300 Subject: [PATCH 0989/1100] Re-factor test functions and add support for data_t parameters the testing functions were re-factored so that the common code was extracted to a single static function (removing the need for unclear goto statements). As part of the re-factor the test functions now use data_t for parameters (support for this was introduced in previous rebase), --- tests/suites/test_suite_ctr_drbg.function | 196 +++++++++++----------- 1 file changed, 99 insertions(+), 97 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index 714af5598b..f0465d3826 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -23,6 +23,74 @@ static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len test_offset_idx += len; return( 0 ); } + +static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, + int entropy_len_arg, data_t * entropy, + data_t * reseed, + data_t * add1, data_t * add2, + data_t * result ) +{ + mbedtls_ctr_drbg_context ctx; + unsigned char buf[64]; + + size_t entropy_chunk_len = (size_t) entropy_len_arg; + + test_offset_idx = 0; + mbedtls_ctr_drbg_init( &ctx ); + + test_max_idx = entropy->len; + + /* CTR_DRBG_Instantiate(entropy[:entropy_len], nonce, perso, ) + * where nonce||perso = nonce[nonce_len] */ + TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( + &ctx, + mbedtls_test_entropy_func, entropy->x, + nonce->x, nonce->len, + entropy_chunk_len ) == 0 ); + if( reseed_mode == RESEED_ALWAYS ) + mbedtls_ctr_drbg_set_prediction_resistance( + &ctx, + MBEDTLS_CTR_DRBG_PR_ON ); + + if( reseed_mode == RESEED_FIRST ) + { + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], + * reseed[:reseed_len]) */ + TEST_ASSERT( mbedtls_ctr_drbg_reseed( + &ctx, + reseed->x, reseed->len ) == 0 ); + } + + /* CTR_DRBG_Generate(result->len * 8 bits, add1[:add1_len]) -> buf */ + /* Then reseed if prediction resistance is enabled. */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( + &ctx, + buf, result->len, + add1->x, add1->len ) == 0 ); + + + if( reseed_mode == RESEED_SECOND ) + { + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], + * reseed[:reseed_len]) */ + TEST_ASSERT( mbedtls_ctr_drbg_reseed( + &ctx, + reseed->x, reseed->len ) == 0 ); + } + + /* CTR_DRBG_Generate(result->len * 8 bits, add2->x[:add2->len]) -> buf */ + /* Then reseed if prediction resistance is enabled. */ + TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( + &ctx, + buf, result->len, + add2->x, add2->len ) == 0 ); + TEST_ASSERT( memcmp( buf, result->x, result->len ) == 0 ); + +exit: + mbedtls_ctr_drbg_free( &ctx ); + return 0; +} + /* END_HEADER */ /* BEGIN_DEPENDENCIES @@ -31,7 +99,7 @@ static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len */ /* BEGIN_CASE */ -void ctr_drbg_special_behaviours( ) +void ctr_drbg_special_behaviours( ) { mbedtls_ctr_drbg_context ctx; unsigned char output[512]; @@ -64,120 +132,54 @@ exit: /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate( int reseed_mode, char *nonce_string, - int entropy_len_arg, char *entropy_string, - char *reseed_string, - char *add1_string, char *add2_string, - char *result_string ) +void ctr_drbg_validate( int reseed_mode, data_t * nonce, + int entropy_len_arg, data_t * entropy, + data_t * reseed, + data_t * add1, data_t * add2, + data_t * result_string ) { - unsigned char entropy[144]; - unsigned char nonce[64]; - unsigned char reseed[32]; - unsigned char add1[48]; - unsigned char add2[48]; - mbedtls_ctr_drbg_context ctx; - unsigned char buf[64]; - unsigned char result[64]; - size_t entropy_chunk_len = (size_t) entropy_len_arg; - size_t nonce_len, reseed_len, add1_len, add2_len, result_len; - - test_offset_idx = 0; - mbedtls_ctr_drbg_init( &ctx ); - - test_max_idx = unhexify( entropy, entropy_string ); - nonce_len = unhexify( nonce, nonce_string ); - reseed_len = unhexify( reseed, reseed_string ); - add1_len = unhexify( add1, add1_string ); - add2_len = unhexify( add2, add2_string ); - result_len = unhexify( result, result_string ); - - /* CTR_DRBG_Instantiate(entropy[:entropy_len], nonce, perso, ) - * where nonce||perso = nonce[nonce_len] */ - TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( - &ctx, - mbedtls_test_entropy_func, entropy, - nonce, nonce_len, - entropy_chunk_len ) == 0 ); - if( reseed_mode == RESEED_ALWAYS ) - mbedtls_ctr_drbg_set_prediction_resistance( - &ctx, - MBEDTLS_CTR_DRBG_PR_ON ); - - if( reseed_mode == RESEED_FIRST ) - { - /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], - * reseed[:reseed_len]) */ - TEST_ASSERT( mbedtls_ctr_drbg_reseed( - &ctx, - reseed, reseed_len ) == 0 ); - } - - /* CTR_DRBG_Generate(result_len * 8 bits, add1[:add1_len]) -> buf */ - /* Then reseed if prediction resistance is enabled. */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( - &ctx, - buf, result_len, - add1, add1_len ) == 0 ); - - - if( reseed_mode == RESEED_SECOND ) - { - /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], - * reseed[:reseed_len]) */ - TEST_ASSERT( mbedtls_ctr_drbg_reseed( - &ctx, - reseed, reseed_len ) == 0 ); - } - - /* CTR_DRBG_Generate(result_len * 8 bits, add2[:add2_len]) -> buf */ - /* Then reseed if prediction resistance is enabled. */ - TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( - &ctx, - buf, result_len, - add2, add2_len ) == 0 ); - TEST_ASSERT( memcmp( buf, result, result_len ) == 0 ); - -exit: - mbedtls_ctr_drbg_free( &ctx ); + TEST_ASSERT( ctr_drbg_validate_internal( reseed_mode, nonce, + entropy_len_arg, entropy, + reseed, add1, + add2, result_string) == 0 ); } /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_no_reseed( char *add_init_string, char *entropy_string, - char *add1_string, char *add2_string, - char *result_string ) +void ctr_drbg_validate_no_reseed( data_t * add_init, data_t * entropy, + data_t * add1, data_t * add2, + data_t * result_string ) { - test_suite_ctr_drbg_validate( RESEED_NEVER, add_init_string, - strlen( entropy_string ) / 2, entropy_string, - "", add1_string, add2_string, - result_string ); - goto exit; + data_t empty = {0}; + TEST_ASSERT( ctr_drbg_validate_internal( RESEED_NEVER, add_init, + entropy->len, entropy, + &empty, add1, add2, + result_string ) == 0); } /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_pr( char *add_init_string, char *entropy_string, - char *add1_string, char *add2_string, - char *result_string ) +void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, + data_t * add1, data_t * add2, + data_t * result_string ) { - test_suite_ctr_drbg_validate( RESEED_ALWAYS, add_init_string, - strlen( entropy_string ) / 6, entropy_string, - "", add1_string, add2_string, - result_string ); - goto exit; + data_t empty = {0}; + TEST_ASSERT( ctr_drbg_validate_internal( RESEED_ALWAYS, add_init, + entropy->len / 3, entropy, + &empty, add1, add2, + result_string ) == 0); } /* END_CASE */ /* BEGIN_CASE */ void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, data_t * add1, data_t * add_reseed, - char *add2_string, char *result_string ) + data_t * add2, data_t * result_string ) { - test_suite_ctr_drbg_validate( RESEED_SECOND, add_init_string, - strlen( entropy_string ) / 4, entropy_string, - add_reseed_string, add1_string, add2_string, - result_string ); - goto exit; + TEST_ASSERT( ctr_drbg_validate_internal( RESEED_SECOND, add_init, + entropy->len / 2, entropy, + add_reseed, add1, add2, + result_string ) == 0); } /* END_CASE */ From 0ff4e0b8242e05d32be20145c4b4baa94864bb19 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 29 Aug 2018 18:53:20 +0300 Subject: [PATCH 0990/1100] Add platform error codes Add error codes for the platform module, to be used by the setup \ terminate API. --- include/mbedtls/error.h | 1 + include/mbedtls/platform.h | 3 +++ library/error.c | 11 +++++++++++ scripts/generate_errors.pl | 2 +- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 6b82d4fbbe..95415dc722 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -80,6 +80,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 + * PLATFORM 2 0x0080-0x0082 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index a40a64f9c6..a1cd689f39 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -43,6 +43,9 @@ #include "platform_time.h" #endif +#define MBEDTLS_ERR_PLATFORM_INVALID_DATA -0x0080 /**< Bad input parameters to the platform function. */ +#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0082 /**< Hardware platform function failed. */ + #ifdef __cplusplus extern "C" { #endif diff --git a/library/error.c b/library/error.c index 774244b454..f34a6effa2 100644 --- a/library/error.c +++ b/library/error.c @@ -165,6 +165,10 @@ #include "mbedtls/pkcs5.h" #endif +#if defined(MBEDTLS_PLATFORM_C) +#include "mbedtls/platform.h" +#endif + #if defined(MBEDTLS_POLY1305_C) #include "mbedtls/poly1305.h" #endif @@ -821,6 +825,13 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) mbedtls_snprintf( buf, buflen, "PADLOCK - Input data should be aligned" ); #endif /* MBEDTLS_PADLOCK_C */ +#if defined(MBEDTLS_PLATFORM_C) + if( use_ret == -(MBEDTLS_ERR_PLATFORM_INVALID_DATA) ) + mbedtls_snprintf( buf, buflen, "PLATFORM - Bad input parameters to the platform function" ); + if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_FAILED) ) + mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware platform function failed" ); +#endif /* MBEDTLS_PLATFORM_C */ + #if defined(MBEDTLS_POLY1305_C) if( use_ret == -(MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA) ) mbedtls_snprintf( buf, buflen, "POLY1305 - Invalid input parameter(s)" ); diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl index ac171ed4a2..0c1f7e16ec 100755 --- a/scripts/generate_errors.pl +++ b/scripts/generate_errors.pl @@ -32,7 +32,7 @@ my $error_format_file = $data_dir.'/error.fmt'; my @low_level_modules = qw( AES ARC4 ARIA ASN1 BASE64 BIGNUM BLOWFISH CAMELLIA CCM CHACHA20 CHACHAPOLY CMAC CTR_DRBG DES ENTROPY GCM HKDF HMAC_DRBG MD2 MD4 MD5 - NET OID PADLOCK PBKDF2 POLY1305 RIPEMD160 + NET OID PADLOCK PBKDF2 PLATFORM POLY1305 RIPEMD160 SHA1 SHA256 SHA512 THREADING XTEA ); my @high_level_modules = qw( CIPHER DHM ECP MD PEM PK PKCS12 PKCS5 From b0ad58152671312854a7a80e3c52a80162382b32 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 29 Aug 2018 19:06:14 +0300 Subject: [PATCH 0991/1100] Remove the invalid input for platform module Remove the invalid input for the platform module, as it's not currently used in the Mbed OS platform setup \ termination code. --- include/mbedtls/error.h | 2 +- include/mbedtls/platform.h | 3 +-- library/error.c | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 95415dc722..2b83c2d9b6 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -80,7 +80,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 - * PLATFORM 2 0x0080-0x0082 + * PLATFORM 1 0x0080-0x0080 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index a1cd689f39..cb21d2ac05 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -43,8 +43,7 @@ #include "platform_time.h" #endif -#define MBEDTLS_ERR_PLATFORM_INVALID_DATA -0x0080 /**< Bad input parameters to the platform function. */ -#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0082 /**< Hardware platform function failed. */ +#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0080 /**< Hardware platform function failed. */ #ifdef __cplusplus extern "C" { diff --git a/library/error.c b/library/error.c index f34a6effa2..d3b155b624 100644 --- a/library/error.c +++ b/library/error.c @@ -826,8 +826,6 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #endif /* MBEDTLS_PADLOCK_C */ #if defined(MBEDTLS_PLATFORM_C) - if( use_ret == -(MBEDTLS_ERR_PLATFORM_INVALID_DATA) ) - mbedtls_snprintf( buf, buflen, "PLATFORM - Bad input parameters to the platform function" ); if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_FAILED) ) mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware platform function failed" ); #endif /* MBEDTLS_PLATFORM_C */ From 37029ebc63355dd7f228f1dbcc0fecf32ca909ac Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 29 Aug 2018 17:01:40 +0100 Subject: [PATCH 0992/1100] Skip MTU auto-reduction test when running valgrind --- tests/ssl-opt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9fc16bfde2..bc07a197fd 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5112,6 +5112,7 @@ run_test "DTLS fragmenting: both (MTU)" \ -C "error" # Test for automatic MTU reduction on repeated resend +not_with_valgrind requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From 108992e7763cd6bb9993b2c33c83275ee0d69c55 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 29 Aug 2018 17:04:18 +0100 Subject: [PATCH 0993/1100] Add MTU auto-reduction test with valgrind --- tests/ssl-opt.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index bc07a197fd..4104bb05fe 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5131,6 +5131,25 @@ run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ -c "found fragmented DTLS handshake message" \ -C "error" +only_with_valgrind +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ + -p "$P_PXY mtu=508" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key\ + hs_timeout=250-10000" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + hs_timeout=250-10000" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend # OTOH the client might resend if the server is to slow to reset after sending # a HelloVerifyRequest, so only check for no retransmission server-side From 85fcb58997194ea0e332c203153dee6a4651d0b4 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 23:38:57 +0300 Subject: [PATCH 0994/1100] Refactor test code for CTR DRBG to clarify test functions previously a single function was used for most test cases (ctr_drbg_validate) making it harder to understand what the exact scenario is as a result it was split into easier to understand functions. --- tests/suites/test_suite_ctr_drbg.data | 380 +++++++++++----------- tests/suites/test_suite_ctr_drbg.function | 80 ++--- 2 files changed, 233 insertions(+), 227 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.data b/tests/suites/test_suite_ctr_drbg.data index 972836c82f..d2307bf109 100644 --- a/tests/suites/test_suite_ctr_drbg.data +++ b/tests/suites/test_suite_ctr_drbg.data @@ -1,34 +1,34 @@ CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=no depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"8da6cc59e703ced07d58d96e5b6d7836c32599735b734f88c1a73b53c7a6d82e" +ctr_drbg_validate_no_reseed:"202122232425262728292a2b2c2d2e2f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"8da6cc59e703ced07d58d96e5b6d7836c32599735b734f88c1a73b53c7a6d82e" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=no, add=yes depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"81daaf9800c34ff0a104e51d87e36f5b17eb14b9abc5064cadda976ec4f77d34" +ctr_drbg_validate_no_reseed:"202122232425262728292a2b2c2d2e2f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"81daaf9800c34ff0a104e51d87e36f5b17eb14b9abc5064cadda976ec4f77d34" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=no depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"":"bb2a0f5f0ca6d30634ba6068eb94aae8701437db7223a1b5afe8771547da3cee" +ctr_drbg_validate_no_reseed:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"":"bb2a0f5f0ca6d30634ba6068eb94aae8701437db7223a1b5afe8771547da3cee" CTR_DRBG_withDF.pdf: AES-256, PR=no, perso=yes, add=yes depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_NEVER:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"98a28e3b1ba363c9daf0f6887a1cf52b833d3354d77a7c10837dd63dd2e645f8" +ctr_drbg_validate_no_reseed:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"98a28e3b1ba363c9daf0f6887a1cf52b833d3354d77a7c10837dd63dd2e645f8" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=no depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"259dc78ccfaec4210c30af815e4f75a5662b7da4b41013bdc00302dfb6076492" +ctr_drbg_validate_pr:"202122232425262728292a2b2c2d2e2f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"259dc78ccfaec4210c30af815e4f75a5662b7da4b41013bdc00302dfb6076492" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=no, add=yes depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"386debbbf091bbf0502957b0329938fb836b82e594a2f5fdd5eb28d4e35528f4" +ctr_drbg_validate_pr:"202122232425262728292a2b2c2d2e2f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"386debbbf091bbf0502957b0329938fb836b82e594a2f5fdd5eb28d4e35528f4" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=no depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"":"601f95384f0d85946301d1eace8f645a825ce38f1e2565b0c0c439448e9ca8ac" +ctr_drbg_validate_pr:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"":"601f95384f0d85946301d1eace8f645a825ce38f1e2565b0c0c439448e9ca8ac" CTR_DRBG_withDF.pdf: AES-256, PR=yes, perso=yes, add=yes depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_ALWAYS:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":48:"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"738e99c95af59519aad37ff3d5180986adebab6e95836725097e50a8d1d0bd28" +ctr_drbg_validate_pr:"202122232425262728292a2b2c2d2e2f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef":"606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f":"a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf":"738e99c95af59519aad37ff3d5180986adebab6e95836725097e50a8d1d0bd28" CTR_DRBG NIST Validation (AES-256 use df,True,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY @@ -272,723 +272,723 @@ ctr_drbg_validate_pr:"1e4644df1d01f9a0f31d1d0c67bc9fb9a1ee2223fbfb25520d3881cde2 CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1b54b8ff0642bff521f15c1c0b665f3f":"5a194d5e2b31581454def675fb7958fec7db873e5689fc9d03217c68d8033820f9e65e04d856f3a9c44a4cbdc1d00846f5983d771c1b137e4e0f9d8ef409f92e":"":"":"":"a054303d8a7ea9889d903e077c6f218f" +ctr_drbg_validate_reseed_between:"1b54b8ff0642bff521f15c1c0b665f3f":"5a194d5e2b31581454def675fb7958fec7db873e5689fc9d03217c68d8033820f9e65e04d856f3a9c44a4cbdc1d00846f5983d771c1b137e4e0f9d8ef409f92e":"":"":"":"a054303d8a7ea9889d903e077c6f218f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"90bc3b555b9d6b6aeb1774a583f98cad":"93b7055d7888ae234bfb431e379069d00ae810fbd48f2e06c204beae3b0bfaf091d1d0e853525ead0e7f79abb0f0bf68064576339c3585cfd6d9b55d4f39278d":"":"":"":"aaf27fc2bf64b0320dd3564bb9b03377" +ctr_drbg_validate_reseed_between:"90bc3b555b9d6b6aeb1774a583f98cad":"93b7055d7888ae234bfb431e379069d00ae810fbd48f2e06c204beae3b0bfaf091d1d0e853525ead0e7f79abb0f0bf68064576339c3585cfd6d9b55d4f39278d":"":"":"":"aaf27fc2bf64b0320dd3564bb9b03377" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"4a2a7dcbde58b8b3c3f4697beb67bba2":"58364ceefad37581c518b7d42ac4f9aae22befd84cbc986c08d1fb20d3bd2400a899bafd470278fad8f0a50f8490af29f938471b4075654fda577dad20fa01ca":"":"":"":"20c5117a8aca72ee5ab91468daf44f29" +ctr_drbg_validate_reseed_between:"4a2a7dcbde58b8b3c3f4697beb67bba2":"58364ceefad37581c518b7d42ac4f9aae22befd84cbc986c08d1fb20d3bd2400a899bafd470278fad8f0a50f8490af29f938471b4075654fda577dad20fa01ca":"":"":"":"20c5117a8aca72ee5ab91468daf44f29" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"911faab1347ae2b3093a607c8bc77bfe":"2f044b8651e1c9d99317084cc6c4fa1f502dd62466a57d4b88bc0d703cabc562708201ac19cdb5cf918fae29c009fb1a2cf42fd714cc9a53ca5acb715482456a":"":"":"":"aae0c0ac97f53d222b83578a2b3dd05d" +ctr_drbg_validate_reseed_between:"911faab1347ae2b3093a607c8bc77bfe":"2f044b8651e1c9d99317084cc6c4fa1f502dd62466a57d4b88bc0d703cabc562708201ac19cdb5cf918fae29c009fb1a2cf42fd714cc9a53ca5acb715482456a":"":"":"":"aae0c0ac97f53d222b83578a2b3dd05d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f959f1bc100ae30088017fae51289d8e":"77d0f0efbc7ca794a51dff96e85b8e7dfd4875fbfb6e5593ae17908bfbddc313e051cb7d659c838180d834fdd987ae3c7f605aaa1b3a936575384b002a35dd98":"":"":"":"5d80bc3fffa42b89ccb390e8447e33e5" +ctr_drbg_validate_reseed_between:"f959f1bc100ae30088017fae51289d8e":"77d0f0efbc7ca794a51dff96e85b8e7dfd4875fbfb6e5593ae17908bfbddc313e051cb7d659c838180d834fdd987ae3c7f605aaa1b3a936575384b002a35dd98":"":"":"":"5d80bc3fffa42b89ccb390e8447e33e5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"45a8bb33062783eede09b05a35bd44dd":"6bb14dc34f669759f8fa5453c4899eb5ac4e33a69e35e89b19a46dbd0888429d1367f7f3191e911b3b355b6e3b2426e242ef4140ddcc9676371101209662f253":"":"":"":"0dfa9955a13a9c57a3546a04108b8e9e" +ctr_drbg_validate_reseed_between:"45a8bb33062783eede09b05a35bd44dd":"6bb14dc34f669759f8fa5453c4899eb5ac4e33a69e35e89b19a46dbd0888429d1367f7f3191e911b3b355b6e3b2426e242ef4140ddcc9676371101209662f253":"":"":"":"0dfa9955a13a9c57a3546a04108b8e9e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0ada129f9948073d628c11274cec3f69":"b3d01bcb1ec747fdb7feb5a7de92807afa4338aba1c81ce1eb50955e125af46b19aed891366ec0f70b079037a5aeb33f07f4c894fdcda3ff41e2867ace1aa05c":"":"":"":"f34710c9ebf9d5aaa5f797fd85a1c413" +ctr_drbg_validate_reseed_between:"0ada129f9948073d628c11274cec3f69":"b3d01bcb1ec747fdb7feb5a7de92807afa4338aba1c81ce1eb50955e125af46b19aed891366ec0f70b079037a5aeb33f07f4c894fdcda3ff41e2867ace1aa05c":"":"":"":"f34710c9ebf9d5aaa5f797fd85a1c413" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"052a5ad4cd38de90e5d3c2fc430fa51e":"98482e58e44b8e4a6b09fa02c05fcc491da03a479a7fad13a83b6080d30b3b255e01a43568a9d6dd5cecf99b0ce9fd594d69eff8fa88159b2da24c33ba81a14d":"":"":"":"3f55144eec263aed50f9c9a641538e55" +ctr_drbg_validate_reseed_between:"052a5ad4cd38de90e5d3c2fc430fa51e":"98482e58e44b8e4a6b09fa02c05fcc491da03a479a7fad13a83b6080d30b3b255e01a43568a9d6dd5cecf99b0ce9fd594d69eff8fa88159b2da24c33ba81a14d":"":"":"":"3f55144eec263aed50f9c9a641538e55" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"004cd2f28f083d1cee68975d5cbbbe4f":"6238d448015e86aa16af62cdc287f1c17b78a79809fa00b8c655e06715cd2b935bf4df966e3ec1f14b28cc1d080f882a7215e258430c91a4a0a2aa98d7cd8053":"":"":"":"b137119dbbd9d752a8dfceec05b884b6" +ctr_drbg_validate_reseed_between:"004cd2f28f083d1cee68975d5cbbbe4f":"6238d448015e86aa16af62cdc287f1c17b78a79809fa00b8c655e06715cd2b935bf4df966e3ec1f14b28cc1d080f882a7215e258430c91a4a0a2aa98d7cd8053":"":"":"":"b137119dbbd9d752a8dfceec05b884b6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f985b3ea2d8b15db26a71895a2ff57cd":"50d3c4ecb1d6e95aebb87e9e8a5c869c11fb945dfad2e45ee90fb61931fcedd47d6005aa5df24bb9efc11bbb96bb21065d44e2532a1e17493f974a4bf8f8b580":"":"":"":"eb419628fbc441ae6a03e26aeecb34a6" +ctr_drbg_validate_reseed_between:"f985b3ea2d8b15db26a71895a2ff57cd":"50d3c4ecb1d6e95aebb87e9e8a5c869c11fb945dfad2e45ee90fb61931fcedd47d6005aa5df24bb9efc11bbb96bb21065d44e2532a1e17493f974a4bf8f8b580":"":"":"":"eb419628fbc441ae6a03e26aeecb34a6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"100f196991b6e96f8b96a3456f6e2baf":"d27cbeac39a6c899938197f0e61dc90be3a3a20fa5c5e1f7a76adde00598e59555c1e9fd102d4b52e1ae9fb004be8944bad85c58e341d1bee014057da98eb3bc":"":"":"":"e3e09d0ed827e4f24a20553fd1087c9d" +ctr_drbg_validate_reseed_between:"100f196991b6e96f8b96a3456f6e2baf":"d27cbeac39a6c899938197f0e61dc90be3a3a20fa5c5e1f7a76adde00598e59555c1e9fd102d4b52e1ae9fb004be8944bad85c58e341d1bee014057da98eb3bc":"":"":"":"e3e09d0ed827e4f24a20553fd1087c9d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"88f55d9ba8fef7828483298321133fec":"16f9f5354d624c5ab1f82c750e05f51f2a2eeca7e5b774fd96148ddba3b38d34ba7f1472567c52087252480d305ad1c69e4aac8472a154ae03511d0e8aac905a":"":"":"":"07cd821012ef03f16d8510c23b86baf3" +ctr_drbg_validate_reseed_between:"88f55d9ba8fef7828483298321133fec":"16f9f5354d624c5ab1f82c750e05f51f2a2eeca7e5b774fd96148ddba3b38d34ba7f1472567c52087252480d305ad1c69e4aac8472a154ae03511d0e8aac905a":"":"":"":"07cd821012ef03f16d8510c23b86baf3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"126479abd70b25acd891e1c4c92044f9":"70afbc83bf9ff09535d6f0ddc51278ad7909f11e6f198b59132c9e269deb41ba901c62346283e293b8714fd3241ae870f974ff33c35f9aff05144be039d24e50":"":"":"":"0f90df350741d88552a5b03b6488e9fb" +ctr_drbg_validate_reseed_between:"126479abd70b25acd891e1c4c92044f9":"70afbc83bf9ff09535d6f0ddc51278ad7909f11e6f198b59132c9e269deb41ba901c62346283e293b8714fd3241ae870f974ff33c35f9aff05144be039d24e50":"":"":"":"0f90df350741d88552a5b03b6488e9fb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a45f2fca553089fe04e7832059dc7976":"5e5a9e1e3cb80738c238464ede1b6b6a321261a3b006a98a79265ad1f635573bba48dccf17b12f6868478252f556b77c3ec57a3bf6bb6599429453db2d050352":"":"":"":"6eb85ae2406c43814b687f74f4e942bc" +ctr_drbg_validate_reseed_between:"a45f2fca553089fe04e7832059dc7976":"5e5a9e1e3cb80738c238464ede1b6b6a321261a3b006a98a79265ad1f635573bba48dccf17b12f6868478252f556b77c3ec57a3bf6bb6599429453db2d050352":"":"":"":"6eb85ae2406c43814b687f74f4e942bc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"52dbb43241002415966eaec2615aba27":"31cfe60e5ed12ff37d7f2270963def598726320c02b910b5c6c795e2209b4b4a95866c64cb097af1d6404d1e6182edf9600e1855345375b201801d6f4c4e4b32":"":"":"":"2a270f5ef815665ddd07527c48719ab1" +ctr_drbg_validate_reseed_between:"52dbb43241002415966eaec2615aba27":"31cfe60e5ed12ff37d7f2270963def598726320c02b910b5c6c795e2209b4b4a95866c64cb097af1d6404d1e6182edf9600e1855345375b201801d6f4c4e4b32":"":"":"":"2a270f5ef815665ddd07527c48719ab1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"176200bb44808b5400b24e1b5f56cf73":"f84d395b1734eac4600dbc36f6b1e1599bc7f2608dc8ecb3a55369d7b1b122a09f5ac9c16d9a2be37d2ff70a9bba732fc3785b23ff4ade3c8404da3f09f95a8f":"aef28c9169e9af74c73432d4aa6f5dff9ea4a53433de2ecb9bf380a8868c86e1":"0626ae19763c5313b627a8d65cf1cfba46dfd6773242738b9b81fde8d566ade1":"63c160ed6a6c1fffd0586f52fa488a9055533930b36d4fa5ea3467cda9ffe198":"e8f91633725d786081625fb99336a993" +ctr_drbg_validate_reseed_between:"176200bb44808b5400b24e1b5f56cf73":"f84d395b1734eac4600dbc36f6b1e1599bc7f2608dc8ecb3a55369d7b1b122a09f5ac9c16d9a2be37d2ff70a9bba732fc3785b23ff4ade3c8404da3f09f95a8f":"aef28c9169e9af74c73432d4aa6f5dff9ea4a53433de2ecb9bf380a8868c86e1":"0626ae19763c5313b627a8d65cf1cfba46dfd6773242738b9b81fde8d566ade1":"63c160ed6a6c1fffd0586f52fa488a9055533930b36d4fa5ea3467cda9ffe198":"e8f91633725d786081625fb99336a993" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"19c3d16197ac93bf58c4110c9e864804":"50755cc0178c68ae70befd7744f6f1e3f6a59b3bbe484a744436079c7fae8d83c4965516fb952c63e1d0561d92cccc56037465815c9e549c9adce4a064877128":"5cb82d2c297404f3db1909480c597dd081d94ca282ba9370786a50f3cbab6a9b":"96d130faf1a971920c2bf57bcd6c02d5a4af7d3c840706081e4a50e55f38bf96":"1b0d04f179690a30d501e8f6f82201dbab6d972ece2a0edfb5ca66a8c9bcf47d":"4628b26492e5cb3b21956d4160f0b911" +ctr_drbg_validate_reseed_between:"19c3d16197ac93bf58c4110c9e864804":"50755cc0178c68ae70befd7744f6f1e3f6a59b3bbe484a744436079c7fae8d83c4965516fb952c63e1d0561d92cccc56037465815c9e549c9adce4a064877128":"5cb82d2c297404f3db1909480c597dd081d94ca282ba9370786a50f3cbab6a9b":"96d130faf1a971920c2bf57bcd6c02d5a4af7d3c840706081e4a50e55f38bf96":"1b0d04f179690a30d501e8f6f82201dbab6d972ece2a0edfb5ca66a8c9bcf47d":"4628b26492e5cb3b21956d4160f0b911" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"4b1edd0f53bf4e012def80efd740140b":"e50c31ebbb735c4a53fc0535647ae1fff7a5ac4fa4068ba90f1fa03ca4ddedecd5b1898d5e38185054b0de7e348034b57067a82a478b0057e0c46de4a7280cd9":"e7154ec1f7ac369d0bd41238f603b5315314d1dc82f71191de9e74364226eb09":"9444238bd27c45128a25d55e0734d3adafecccb2c24abdaa50ac2ca479c3830b":"ab2488c8b7e819d8ce5ec1ffb77efc770453970d6b852b496426d5db05c03947":"a488a87c04eb1c7586b8141ed45e7761" +ctr_drbg_validate_reseed_between:"4b1edd0f53bf4e012def80efd740140b":"e50c31ebbb735c4a53fc0535647ae1fff7a5ac4fa4068ba90f1fa03ca4ddedecd5b1898d5e38185054b0de7e348034b57067a82a478b0057e0c46de4a7280cd9":"e7154ec1f7ac369d0bd41238f603b5315314d1dc82f71191de9e74364226eb09":"9444238bd27c45128a25d55e0734d3adafecccb2c24abdaa50ac2ca479c3830b":"ab2488c8b7e819d8ce5ec1ffb77efc770453970d6b852b496426d5db05c03947":"a488a87c04eb1c7586b8141ed45e7761" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1f89c914649ae8a234c0e9230f3460f9":"5e029c173dc28ab19851a8db008efbcf862f4187fca84e4e6f5ba686e3005dba5b95c5a0bcf78fb35ada347af58ec0aca09ed4799cd8a734739f3c425273e441":"b51f5fd5888552af0e9b667c2750c79106ce37c00c850afbe3776746d8c3bce1":"9b132a2cbffb8407aa06954ae6ebee265f986666757b5453601207e0cbb4871b":"f1c435e2ebf083a222218ee4602263872a2d3e097b536a8cc32a5a2220b8065f":"a065cc203881254ca81bd9595515e705" +ctr_drbg_validate_reseed_between:"1f89c914649ae8a234c0e9230f3460f9":"5e029c173dc28ab19851a8db008efbcf862f4187fca84e4e6f5ba686e3005dba5b95c5a0bcf78fb35ada347af58ec0aca09ed4799cd8a734739f3c425273e441":"b51f5fd5888552af0e9b667c2750c79106ce37c00c850afbe3776746d8c3bce1":"9b132a2cbffb8407aa06954ae6ebee265f986666757b5453601207e0cbb4871b":"f1c435e2ebf083a222218ee4602263872a2d3e097b536a8cc32a5a2220b8065f":"a065cc203881254ca81bd9595515e705" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0ef2be2d00a16051404fc2a0faa74fdc":"b66c882ae02c5215ed3bcd9e9a40934b09bf48a15fe7558c9d9ceb0ebec63625ea18f7c3ab341d9f7edd8e1d8816edecb34dbd71ae02771327b5ebc74613dadd":"1ebe9893957a5c4a707793906d31bb201e88d88a22abd6baa6461fc61def7ffb":"f81e26744834413cb95af8d438d0050c7c968f929a33e35ee5c6715a0a520950":"687a848b2b6c715a0e613b3f3bb16cf2f056543eb9dd6b8aee8de8aa6fd8a1e6":"a6c4a7e99d08cc847ac0b8c8bcf22ec0" +ctr_drbg_validate_reseed_between:"0ef2be2d00a16051404fc2a0faa74fdc":"b66c882ae02c5215ed3bcd9e9a40934b09bf48a15fe7558c9d9ceb0ebec63625ea18f7c3ab341d9f7edd8e1d8816edecb34dbd71ae02771327b5ebc74613dadd":"1ebe9893957a5c4a707793906d31bb201e88d88a22abd6baa6461fc61def7ffb":"f81e26744834413cb95af8d438d0050c7c968f929a33e35ee5c6715a0a520950":"687a848b2b6c715a0e613b3f3bb16cf2f056543eb9dd6b8aee8de8aa6fd8a1e6":"a6c4a7e99d08cc847ac0b8c8bcf22ec0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"eb2439d156c4f51fb1943c26f27de8af":"ad153fd266d9f73b21f4e5e88d3d13ba8325abdec427d5d8f671cfccdbd3510e9774d59a14d9b5472b217b7bcf355436a51965d2dff7c4ac586ab812f20d326e":"e24bd6b69a40fa0a02cefbbaa282f8f63a80e154be338d1b913418d4ff7a810d":"fd40baf11d7cdd77641a2b46916cb0c12980e02612ef59fb6fe7dabbbe7a85c0":"a40019e3b85d7d5775e793dd4c09b2bdc8253694b1dcb73e63a18b066a7f7d0c":"7cd8d2710147a0b7f053bb271edf07b5" +ctr_drbg_validate_reseed_between:"eb2439d156c4f51fb1943c26f27de8af":"ad153fd266d9f73b21f4e5e88d3d13ba8325abdec427d5d8f671cfccdbd3510e9774d59a14d9b5472b217b7bcf355436a51965d2dff7c4ac586ab812f20d326e":"e24bd6b69a40fa0a02cefbbaa282f8f63a80e154be338d1b913418d4ff7a810d":"fd40baf11d7cdd77641a2b46916cb0c12980e02612ef59fb6fe7dabbbe7a85c0":"a40019e3b85d7d5775e793dd4c09b2bdc8253694b1dcb73e63a18b066a7f7d0c":"7cd8d2710147a0b7f053bb271edf07b5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b23796d88ee5ae75ff2ba4fbbd5e2de8":"b249d2d9b269b58c5355710aaae98be12d8fb2e79046b4e6deeec28adad7e789999847e20de11f7c3277216374f117e3e006bdf99bb8631aa4c4c542cd482840":"79f0214b6b0c5ffb21b1d521498b71d22c67be4607c16300ab8dde3b52498097":"582be1e080264b3e68ec184347a5b6db1e8be1811578206e14ad84029fe39f71":"f5e9c3356810793f461f889d8c5003b1c0b20a284cb348301ce7b2dd7a1c7dd7":"1aa8cf54994be6b329e9eb897007abf0" +ctr_drbg_validate_reseed_between:"b23796d88ee5ae75ff2ba4fbbd5e2de8":"b249d2d9b269b58c5355710aaae98be12d8fb2e79046b4e6deeec28adad7e789999847e20de11f7c3277216374f117e3e006bdf99bb8631aa4c4c542cd482840":"79f0214b6b0c5ffb21b1d521498b71d22c67be4607c16300ab8dde3b52498097":"582be1e080264b3e68ec184347a5b6db1e8be1811578206e14ad84029fe39f71":"f5e9c3356810793f461f889d8c5003b1c0b20a284cb348301ce7b2dd7a1c7dd7":"1aa8cf54994be6b329e9eb897007abf0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"081db0b1620a56afd87c2fd2bebb1db3":"3f1e90d88870a0bd03364036b655495e3e7d51bf67fb64ba0cbf003430af5585f5936b84ab3b8a55c02b8b6c54bea09cf2d77691858c5818991383add5f0c644":"5b98bc83ae8bed5c49cb71689dc39fee38d5d08bdfa2a01cee9d61e9f3d1e115":"aad3e58fdd98aa60fc2cae0df3fc734fff01a07f29f69c5ffeb96d299200d0d8":"bad9039ebb7c3a44061353542a2b1c1a89b3e9b493e9f59e438bfc80de3d1836":"8d01e3dc48b28f016fc34655c54be81f" +ctr_drbg_validate_reseed_between:"081db0b1620a56afd87c2fd2bebb1db3":"3f1e90d88870a0bd03364036b655495e3e7d51bf67fb64ba0cbf003430af5585f5936b84ab3b8a55c02b8b6c54bea09cf2d77691858c5818991383add5f0c644":"5b98bc83ae8bed5c49cb71689dc39fee38d5d08bdfa2a01cee9d61e9f3d1e115":"aad3e58fdd98aa60fc2cae0df3fc734fff01a07f29f69c5ffeb96d299200d0d8":"bad9039ebb7c3a44061353542a2b1c1a89b3e9b493e9f59e438bfc80de3d1836":"8d01e3dc48b28f016fc34655c54be81f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a8427443d9c34abcdcca061a2bbcff52":"b0e9b2192adc8912653d90a634d5d40c53ca4383290a8764bdf92667f859d833c3e72ad0ff41e07fe257b1ead11649be655c58a5df233114e7eda2558b7214d7":"c6cad9fb17ada437d195d1f8b6a7fa463e20050e94024170d2ffc34b80a50108":"be461a9c1a72ebaf28ee732219e3ca54cbee36921daaa946917a7c63279a6b0e":"b6d110d6b746d7ccf7a48a4337ba341d52508d0336d017ae20377977163c1a20":"16ccd63dbf7b24b6b427126b863f7c86" +ctr_drbg_validate_reseed_between:"a8427443d9c34abcdcca061a2bbcff52":"b0e9b2192adc8912653d90a634d5d40c53ca4383290a8764bdf92667f859d833c3e72ad0ff41e07fe257b1ead11649be655c58a5df233114e7eda2558b7214d7":"c6cad9fb17ada437d195d1f8b6a7fa463e20050e94024170d2ffc34b80a50108":"be461a9c1a72ebaf28ee732219e3ca54cbee36921daaa946917a7c63279a6b0e":"b6d110d6b746d7ccf7a48a4337ba341d52508d0336d017ae20377977163c1a20":"16ccd63dbf7b24b6b427126b863f7c86" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"86bd02976e6c50656372b8c212cf0a7a":"89900b0febf6b4e19ab8fc5babb4122a8aad86d658d0c2f98988c99fbd8530ff4ad365bd5fddaa15f96537bd72deb5384405b610e6ebae83e848307051fd6c82":"41bf3794ee54647a48a2588fdfdea686f1af6792e957d42f181f2631b207ac0c":"c4478afbea4eecb225448f069b02a74c2a222698c68e37eb144aff9e457f9610":"41a99e0d3f5b767f9bedcb2f878a5d99d42856bed29042d568b04e347624bf7f":"863337529aac9ab1e9f7f8187ea7aa7d" +ctr_drbg_validate_reseed_between:"86bd02976e6c50656372b8c212cf0a7a":"89900b0febf6b4e19ab8fc5babb4122a8aad86d658d0c2f98988c99fbd8530ff4ad365bd5fddaa15f96537bd72deb5384405b610e6ebae83e848307051fd6c82":"41bf3794ee54647a48a2588fdfdea686f1af6792e957d42f181f2631b207ac0c":"c4478afbea4eecb225448f069b02a74c2a222698c68e37eb144aff9e457f9610":"41a99e0d3f5b767f9bedcb2f878a5d99d42856bed29042d568b04e347624bf7f":"863337529aac9ab1e9f7f8187ea7aa7d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e809ef8d4c3d82575833d51ac69481b2":"3e831b7715ce202c95ec85337e2c0061d972169955bd96fbe1f758508c0336b3226260ea5e66f943b538eb115ffe4d5e534cbe58262a610528641629bc12fc75":"4d40c6a961168445c1691fea02ebd693cb4b3f74b03d45a350c65f0aaccb118b":"b07dc50e6ca7544ed6fdebd8f00ed5fa9b1f2213b477de8568eb92dddaabfe3f":"cbac982aa9f1830d0dc7373d9907670f561642adb1888f66b4150d3487bf0b8d":"2814be767d79778ebb82a096976f30db" +ctr_drbg_validate_reseed_between:"e809ef8d4c3d82575833d51ac69481b2":"3e831b7715ce202c95ec85337e2c0061d972169955bd96fbe1f758508c0336b3226260ea5e66f943b538eb115ffe4d5e534cbe58262a610528641629bc12fc75":"4d40c6a961168445c1691fea02ebd693cb4b3f74b03d45a350c65f0aaccb118b":"b07dc50e6ca7544ed6fdebd8f00ed5fa9b1f2213b477de8568eb92dddaabfe3f":"cbac982aa9f1830d0dc7373d9907670f561642adb1888f66b4150d3487bf0b8d":"2814be767d79778ebb82a096976f30db" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ad71caa50420d213b25f5558e0dc1170":"6a3fd23e7dc934e6de6eb4cc846c0dc3cf35ea4be3f561c34666aed1bbd6331004afba5a5b83fff1e7b8a957fbee7cd9f8142326c796ca129ec9fbacf295b882":"3042dd041b89aaa61f185fdda706c77667515c037f2a88c6d47f23ddadc828ae":"9b1e3f72aaab66b202f17c5cc075cfba7242817b2b38c19fe8924ca325b826ea":"8660b503329aaea56acdb73ca83763299bac0f30264702cb9d52cbaf3d71d69d":"c204a3174784d82b664e9a1c0a13ffa6" +ctr_drbg_validate_reseed_between:"ad71caa50420d213b25f5558e0dc1170":"6a3fd23e7dc934e6de6eb4cc846c0dc3cf35ea4be3f561c34666aed1bbd6331004afba5a5b83fff1e7b8a957fbee7cd9f8142326c796ca129ec9fbacf295b882":"3042dd041b89aaa61f185fdda706c77667515c037f2a88c6d47f23ddadc828ae":"9b1e3f72aaab66b202f17c5cc075cfba7242817b2b38c19fe8924ca325b826ea":"8660b503329aaea56acdb73ca83763299bac0f30264702cb9d52cbaf3d71d69d":"c204a3174784d82b664e9a1c0a13ffa6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"5fd6606b08e7e625af788814bef7f263":"baf8750e07194fc7172c736e0fdea0a632810d45602dff17ce37adf106d652f87e31b6bd24d21481c86444d8109586118672a6f93731b7438a3f0f39648b83a3":"3c37193d40e79ce8d569d8aa7ef80aabaa294f1b6d5a8341805f5ac67a6abf42":"c7033b3b68be178d120379e7366980d076c73280e629dd6e82f5af1af258931b":"452218a426a58463940785a67cb34799a1787f39d376c9e56e4a3f2215785dad":"561e16a8b297e458c4ec39ba43f0b67e" +ctr_drbg_validate_reseed_between:"5fd6606b08e7e625af788814bef7f263":"baf8750e07194fc7172c736e0fdea0a632810d45602dff17ce37adf106d652f87e31b6bd24d21481c86444d8109586118672a6f93731b7438a3f0f39648b83a3":"3c37193d40e79ce8d569d8aa7ef80aabaa294f1b6d5a8341805f5ac67a6abf42":"c7033b3b68be178d120379e7366980d076c73280e629dd6e82f5af1af258931b":"452218a426a58463940785a67cb34799a1787f39d376c9e56e4a3f2215785dad":"561e16a8b297e458c4ec39ba43f0b67e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"08def734914ecf74b9eccb5dfaa045b8":"6697f889fcf6dae16881dc1e540e5c07f9461d409acee31842b04f93c00efbba670dfbf6040c1c2e29ad89064eae283fd6d431832f356e492bc5b2049f229892":"a6ac87af21efd3508990aac51d36243d46237b3755a0e68680adb59e19e8ae23":"0052152872b21615775431eb51889a264fed6ca44fa0436b72a419b91f92604c":"ebadf71565d9a8cc2621403c36e6411e7bed67193a843b90ccf2f7aa9f229ca2":"c83fa5df210b63f4bf4a0aca63650aab" +ctr_drbg_validate_reseed_between:"08def734914ecf74b9eccb5dfaa045b8":"6697f889fcf6dae16881dc1e540e5c07f9461d409acee31842b04f93c00efbba670dfbf6040c1c2e29ad89064eae283fd6d431832f356e492bc5b2049f229892":"a6ac87af21efd3508990aac51d36243d46237b3755a0e68680adb59e19e8ae23":"0052152872b21615775431eb51889a264fed6ca44fa0436b72a419b91f92604c":"ebadf71565d9a8cc2621403c36e6411e7bed67193a843b90ccf2f7aa9f229ca2":"c83fa5df210b63f4bf4a0aca63650aab" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6437862e93060def199029ff2182f1e5":"719d1afcb6dc8ca26cba6a7c10f59cf82345b2a0c631a7879812d6f2d2663b49f9e92daecb81ff7c0790205d66694526477d6de54a269f542cb5e77fe4bc8db3":"5c961db0ac2ea8caf62c9acc44465dcfb4d721fcb2cd3e1c76cdcb61bfaa7e75":"24eabd392d37493e306705d0b287be11a4d72dd4b9577ac4098ef0dae69b0000":"9e4f05c1b85613e97958bc3863e521331b2bd78fdf2585f84607bf2238e82415":"21aaae76dc97c9bf7cf858054839653e" +ctr_drbg_validate_reseed_between:"6437862e93060def199029ff2182f1e5":"719d1afcb6dc8ca26cba6a7c10f59cf82345b2a0c631a7879812d6f2d2663b49f9e92daecb81ff7c0790205d66694526477d6de54a269f542cb5e77fe4bc8db3":"5c961db0ac2ea8caf62c9acc44465dcfb4d721fcb2cd3e1c76cdcb61bfaa7e75":"24eabd392d37493e306705d0b287be11a4d72dd4b9577ac4098ef0dae69b0000":"9e4f05c1b85613e97958bc3863e521331b2bd78fdf2585f84607bf2238e82415":"21aaae76dc97c9bf7cf858054839653e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"cd7a1981c1b7079c1c38f5aeee86db22207cb9faed8c576b1724ca7817aa6abfb26c42a019eb4c2f4064f0587ea2b952":"7f88c3805ae0857c5cbb085a5d6259d26fb3a88dfe7084172ec959066f26296a800953ce19a24785b6acef451c4ce4c2dfb565cbe057f21b054a28633afbdd97":"":"":"":"76c1cdb0b95af271b52ac3b0c9289146" +ctr_drbg_validate_reseed_between:"cd7a1981c1b7079c1c38f5aeee86db22207cb9faed8c576b1724ca7817aa6abfb26c42a019eb4c2f4064f0587ea2b952":"7f88c3805ae0857c5cbb085a5d6259d26fb3a88dfe7084172ec959066f26296a800953ce19a24785b6acef451c4ce4c2dfb565cbe057f21b054a28633afbdd97":"":"":"":"76c1cdb0b95af271b52ac3b0c9289146" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0ccdac2fd65a86bf8f8e9ddcabffb9d29a935139f627c165a815b23137eeee94cbb21be86ac5117379177d37728db6fd":"6f61703f92d3192cd982b2e52a8683e0d62918d51b12e084deae06c4a8e08ecfb3d2d30a980a70b083710bc45d9d407966b52829cf3813cc970b859aa4c871fe":"":"":"":"e6c73e159d73c2ba8950cd77acb39c10" +ctr_drbg_validate_reseed_between:"0ccdac2fd65a86bf8f8e9ddcabffb9d29a935139f627c165a815b23137eeee94cbb21be86ac5117379177d37728db6fd":"6f61703f92d3192cd982b2e52a8683e0d62918d51b12e084deae06c4a8e08ecfb3d2d30a980a70b083710bc45d9d407966b52829cf3813cc970b859aa4c871fe":"":"":"":"e6c73e159d73c2ba8950cd77acb39c10" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"fbbcc4abfd671296de3e0dcf409a139e35deae126c1941bf1afcc8d3da3a2d65f54a6d317bb6d683a3a77f6266b007ff":"c662ed723e7041877542fdcf629533d4a74393eb4dae4f3ec06d2d1c0d37ed7f519609a8485cb8deb578ae4cbb45c98ef7f2f2e677363e89fb3744286db6bfc1":"":"":"":"9d934d34417c6d0858f4a3faacbe759e" +ctr_drbg_validate_reseed_between:"fbbcc4abfd671296de3e0dcf409a139e35deae126c1941bf1afcc8d3da3a2d65f54a6d317bb6d683a3a77f6266b007ff":"c662ed723e7041877542fdcf629533d4a74393eb4dae4f3ec06d2d1c0d37ed7f519609a8485cb8deb578ae4cbb45c98ef7f2f2e677363e89fb3744286db6bfc1":"":"":"":"9d934d34417c6d0858f4a3faacbe759e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1b824790b6b22b246bcc1bcfbbb61a76045476672f917b72e79cca358e650eb29ed49fb0a5739e097f5f5336d46fc619":"c57a5686486ebacc2422236b19110c754795a869a8157901cf71303de1adc6af16a952190a395d6c20e155e690f41922f6f721dc8e93da81afb844f68714cba7":"":"":"":"13e7bf23d88f3bb5a5106a8227c8c456" +ctr_drbg_validate_reseed_between:"1b824790b6b22b246bcc1bcfbbb61a76045476672f917b72e79cca358e650eb29ed49fb0a5739e097f5f5336d46fc619":"c57a5686486ebacc2422236b19110c754795a869a8157901cf71303de1adc6af16a952190a395d6c20e155e690f41922f6f721dc8e93da81afb844f68714cba7":"":"":"":"13e7bf23d88f3bb5a5106a8227c8c456" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2ea7861e374232cb8ceecbbd9a18fc1f63c31f833fe394f1e19c8ef61092a56f28342fa5b591f7b951583d50c12ef081":"6a0873634094be7028b885c345cd5016295eec5e524f069de6510ae8ac843dba2cc05c10baa8aad75eac8e8d1a8570f4d2a3cf718914a199deb3edf8c993a822":"":"":"":"c008f46a242ae0babad17268c9e0839a" +ctr_drbg_validate_reseed_between:"2ea7861e374232cb8ceecbbd9a18fc1f63c31f833fe394f1e19c8ef61092a56f28342fa5b591f7b951583d50c12ef081":"6a0873634094be7028b885c345cd5016295eec5e524f069de6510ae8ac843dba2cc05c10baa8aad75eac8e8d1a8570f4d2a3cf718914a199deb3edf8c993a822":"":"":"":"c008f46a242ae0babad17268c9e0839a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"39caa986b82b5303d98e07b211ddc5ce89a67506095cad1aeed63b8bfe0d9c3d3c906f0c05cfb6b26bab4af7d03c9e1a":"f2059f7fb797e8e22de14dac783c56942a33d092c1ab68a762528ae8d74b7ad0690694ede462edbd6527550677b6d080d80cdabe51c963d5d6830a4ae04c993f":"":"":"":"202d3b2870be8f29b518f2e3e52f1564" +ctr_drbg_validate_reseed_between:"39caa986b82b5303d98e07b211ddc5ce89a67506095cad1aeed63b8bfe0d9c3d3c906f0c05cfb6b26bab4af7d03c9e1a":"f2059f7fb797e8e22de14dac783c56942a33d092c1ab68a762528ae8d74b7ad0690694ede462edbd6527550677b6d080d80cdabe51c963d5d6830a4ae04c993f":"":"":"":"202d3b2870be8f29b518f2e3e52f1564" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a4e25102c1b04bafd66bfe1ce4a4b340797f776f54a2b3afe351eede44e75c28e3525155f837e7974269d398048c83c3":"0a03b7d026fab3773e9724dacb436197954b770eca3060535f2f8152aa136942915304dede1de0f5e89bd91d8e92531b5e39373013628fea4ee7622b9255d179":"":"":"":"be21cab637218ddffa3510c86271db7f" +ctr_drbg_validate_reseed_between:"a4e25102c1b04bafd66bfe1ce4a4b340797f776f54a2b3afe351eede44e75c28e3525155f837e7974269d398048c83c3":"0a03b7d026fab3773e9724dacb436197954b770eca3060535f2f8152aa136942915304dede1de0f5e89bd91d8e92531b5e39373013628fea4ee7622b9255d179":"":"":"":"be21cab637218ddffa3510c86271db7f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6de33a116425ebfe01f0a0124ad3fad382ca28473f5fc53885639788f9b1a470ab523b649bad87e76dee768f6abacb55":"d88312da6acbe792d087012c0bf3c83f363fa6b7a9dd45c3501009fb47b4cfcfeb7b31386155fe3b967f46e2898a00ecf51ec38b6e420852bef0a16081d778cc":"":"":"":"2c285bfd758f0156e782bb4467f6832c" +ctr_drbg_validate_reseed_between:"6de33a116425ebfe01f0a0124ad3fad382ca28473f5fc53885639788f9b1a470ab523b649bad87e76dee768f6abacb55":"d88312da6acbe792d087012c0bf3c83f363fa6b7a9dd45c3501009fb47b4cfcfeb7b31386155fe3b967f46e2898a00ecf51ec38b6e420852bef0a16081d778cc":"":"":"":"2c285bfd758f0156e782bb4467f6832c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b8ab42fd3f6306426602cae0c48eb02ffa7053940389900c17846e1d9726251762095383f2ec3406b3381d94a6d53dd8":"6a7873ccb7afb140e923acbec8256fa78232f40c0c8ba3dcbcf7074d26d6d18a7e78fffda328f097706b6d358048ee6a4728c92a6f62b3f2730a753b7bf5ec1f":"":"":"":"13504a2b09474f90d2e9ef40d1f2d0d5" +ctr_drbg_validate_reseed_between:"b8ab42fd3f6306426602cae0c48eb02ffa7053940389900c17846e1d9726251762095383f2ec3406b3381d94a6d53dd8":"6a7873ccb7afb140e923acbec8256fa78232f40c0c8ba3dcbcf7074d26d6d18a7e78fffda328f097706b6d358048ee6a4728c92a6f62b3f2730a753b7bf5ec1f":"":"":"":"13504a2b09474f90d2e9ef40d1f2d0d5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"042b524444b9903c1ecb80af21eef0e884115561a15a1ab2f9f3a322edcbf14174f54d315196a632940c2c6f56612c09":"31ba5f801aeaac790f2480fbd2373a76ba1685ebebc5ae7cd4844733ec3cfb112634b3899104dcc16050e1206f8b3fb787d43d54de2c804fd3d8eb98e512bb00":"":"":"":"0a0484c14e7868178e68d6d5c5f57c5c" +ctr_drbg_validate_reseed_between:"042b524444b9903c1ecb80af21eef0e884115561a15a1ab2f9f3a322edcbf14174f54d315196a632940c2c6f56612c09":"31ba5f801aeaac790f2480fbd2373a76ba1685ebebc5ae7cd4844733ec3cfb112634b3899104dcc16050e1206f8b3fb787d43d54de2c804fd3d8eb98e512bb00":"":"":"":"0a0484c14e7868178e68d6d5c5f57c5c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"632758f92efaca39615862177c267906ab0424230d481ee0a5aa1a5f66697d3918d4aab3f310b72a7f2d71c0a96b9247":"46dc837620872a5ffa642399213b4eebfb28ca069c5eaaf2a636f5bd647de365c11402b10ecd7780c56d464f56b653e17af8550b90a54adb38173a0b2f9e2ea7":"":"":"":"90432ce3f7b580961abecde259aa5af6" +ctr_drbg_validate_reseed_between:"632758f92efaca39615862177c267906ab0424230d481ee0a5aa1a5f66697d3918d4aab3f310b72a7f2d71c0a96b9247":"46dc837620872a5ffa642399213b4eebfb28ca069c5eaaf2a636f5bd647de365c11402b10ecd7780c56d464f56b653e17af8550b90a54adb38173a0b2f9e2ea7":"":"":"":"90432ce3f7b580961abecde259aa5af6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"7b389118af3d0f8336b41cf58c2d810f0e5f9940703fd56a46c10a315fb09aafd7670c9e96ffa61e0cb750cb2aa6a7fe":"76e92e9f00fc7d0c525c48739a8b3601c51f8f5996117a7e07497afee36829636e714dbcb84c8f8d57e0850a361a5bdfc21084a1c30fb7797ce6280e057309b7":"":"":"":"7243964051082c0617e200fcbbe7ff45" +ctr_drbg_validate_reseed_between:"7b389118af3d0f8336b41cf58c2d810f0e5f9940703fd56a46c10a315fb09aafd7670c9e96ffa61e0cb750cb2aa6a7fe":"76e92e9f00fc7d0c525c48739a8b3601c51f8f5996117a7e07497afee36829636e714dbcb84c8f8d57e0850a361a5bdfc21084a1c30fb7797ce6280e057309b7":"":"":"":"7243964051082c0617e200fcbbe7ff45" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e50d38434e9dfe3601e7ea1765d9fe777d467d9918974b5599ec19f42d7054b70ff6db63a3403d2fd09333eda17a5e76":"c9aa4739011c60f8e99db0580b3cad4269874d1dda1c81ffa872f01669e8f75215aaad1ccc301c12f90cd240bf99ad42bb06965afb0aa2bd3fcb681c710aa375":"":"":"":"28499495c94c6ceec1bd494e364ad97c" +ctr_drbg_validate_reseed_between:"e50d38434e9dfe3601e7ea1765d9fe777d467d9918974b5599ec19f42d7054b70ff6db63a3403d2fd09333eda17a5e76":"c9aa4739011c60f8e99db0580b3cad4269874d1dda1c81ffa872f01669e8f75215aaad1ccc301c12f90cd240bf99ad42bb06965afb0aa2bd3fcb681c710aa375":"":"":"":"28499495c94c6ceec1bd494e364ad97c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"3253cb074d610db602b0a0d2836df1f20c3ee162d80b90b31660bb86ef3f0789fa857af4f45a5897bdd73c2295f879b6":"b06960a92d32a9e9658d9800de87a3800f3595e173fdc46bef22966264953672e2d7c638cc7b1cada747026726baf6cea4c64ba956be8bb1d1801158bee5e5d4":"":"":"":"b6608d6e5fcb4591a718f9149b79f8f1" +ctr_drbg_validate_reseed_between:"3253cb074d610db602b0a0d2836df1f20c3ee162d80b90b31660bb86ef3f0789fa857af4f45a5897bdd73c2295f879b6":"b06960a92d32a9e9658d9800de87a3800f3595e173fdc46bef22966264953672e2d7c638cc7b1cada747026726baf6cea4c64ba956be8bb1d1801158bee5e5d4":"":"":"":"b6608d6e5fcb4591a718f9149b79f8f1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"83e4733566f90c8d69e6bcbe9fb52521ff3e26f806d9b7b86e9344cca0305dbf106de855240f1d35492cc6d651b8b6ae":"0e0105b12af35ac87cb23cf9ca8fb6a44307c3dcdc5bc890eb5253f4034c1533392a1760c98ba30d7751af93dd865d4bd66fbbeb215d7ff239b700527247775d":"":"":"":"68d64d1522c09a859b9b85b528d0d912" +ctr_drbg_validate_reseed_between:"83e4733566f90c8d69e6bcbe9fb52521ff3e26f806d9b7b86e9344cca0305dbf106de855240f1d35492cc6d651b8b6ae":"0e0105b12af35ac87cb23cf9ca8fb6a44307c3dcdc5bc890eb5253f4034c1533392a1760c98ba30d7751af93dd865d4bd66fbbeb215d7ff239b700527247775d":"":"":"":"68d64d1522c09a859b9b85b528d0d912" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a94da55afdc50ce51c9a3b8a4c4484408b52a24a93c34ea71e1ca705eb829ba65de4d4e07fa3d86b37845ff1c7d5f6d2":"a53e371017439193591e475087aaddd5c1c386cdca0ddb68e002d80fdc401a47dd40e5987b2716731568d276bf0c6715757903d3dede914642ddd467c879c81e":"20f422edf85ca16a01cfbe5f8d6c947fae12a857db2aa9bfc7b36581808d0d46":"7fd81fbd2ab51c115d834e99f65ca54020ed388ed59ee07593fe125e5d73fb75":"cd2cff14693e4c9efdfe260de986004930bab1c65057772a62392c3b74ebc90d":"4f78beb94d978ce9d097feadfafd355e" +ctr_drbg_validate_reseed_between:"a94da55afdc50ce51c9a3b8a4c4484408b52a24a93c34ea71e1ca705eb829ba65de4d4e07fa3d86b37845ff1c7d5f6d2":"a53e371017439193591e475087aaddd5c1c386cdca0ddb68e002d80fdc401a47dd40e5987b2716731568d276bf0c6715757903d3dede914642ddd467c879c81e":"20f422edf85ca16a01cfbe5f8d6c947fae12a857db2aa9bfc7b36581808d0d46":"7fd81fbd2ab51c115d834e99f65ca54020ed388ed59ee07593fe125e5d73fb75":"cd2cff14693e4c9efdfe260de986004930bab1c65057772a62392c3b74ebc90d":"4f78beb94d978ce9d097feadfafd355e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e8649d4f86b3de85fe39ff04d7afe6e4dd00770931330b27e975a7b1e7b5206ee2f247d50401a372c3a27197fec5da46":"78d7d65c457218a63e2eb1eba287f121c5466728ac4f963aeaabf593b9d72b6376daea6436e55415ad097dee10c40a1ff61fca1c30b8ab51ed11ff090d19ef9a":"cc57adc98b2540664403ad6fd50c9042f0bf0e0b54ed33584ee189e072d0fb8f":"ab2f99e2d983aa8dd05336a090584f4f84d485a4763e00ced42ddda72483cd84":"0ecd7680e2e9f0250a43e28f2f8936d7ef16f45d79c0fa3f69e4fafce4aeb362":"08e38625611bb0fb844f43439550bd7a" +ctr_drbg_validate_reseed_between:"e8649d4f86b3de85fe39ff04d7afe6e4dd00770931330b27e975a7b1e7b5206ee2f247d50401a372c3a27197fec5da46":"78d7d65c457218a63e2eb1eba287f121c5466728ac4f963aeaabf593b9d72b6376daea6436e55415ad097dee10c40a1ff61fca1c30b8ab51ed11ff090d19ef9a":"cc57adc98b2540664403ad6fd50c9042f0bf0e0b54ed33584ee189e072d0fb8f":"ab2f99e2d983aa8dd05336a090584f4f84d485a4763e00ced42ddda72483cd84":"0ecd7680e2e9f0250a43e28f2f8936d7ef16f45d79c0fa3f69e4fafce4aeb362":"08e38625611bb0fb844f43439550bd7a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6c79e1556889b3c074fc083a120d73784b888c5acb877899f17ce52e424b84178d144441aa9f328c730a951b02b048df":"c78ff6b9fc91cbce246c9fcc2366d5f7dd6d99fb1325d8997f36819232d5fcd12ccafdcbefd01409d90acd0e0ffb7427c820b2d729fe7e845e6a6168fc1af0b5":"60cba10826de22c5e85d06357de63d6b2ff0719694dafca6ab33283f3a4aacdd":"8943c22fb68b30811790a99b9cbb056e1a2c329185a199c76ba5aeceb2fcd769":"70671a50e8387bf232989d904c19215c7535ad2d0c5dec30a744c8d2706be6ec":"f6b94b671cae8dfa8387719bfd75ee84" +ctr_drbg_validate_reseed_between:"6c79e1556889b3c074fc083a120d73784b888c5acb877899f17ce52e424b84178d144441aa9f328c730a951b02b048df":"c78ff6b9fc91cbce246c9fcc2366d5f7dd6d99fb1325d8997f36819232d5fcd12ccafdcbefd01409d90acd0e0ffb7427c820b2d729fe7e845e6a6168fc1af0b5":"60cba10826de22c5e85d06357de63d6b2ff0719694dafca6ab33283f3a4aacdd":"8943c22fb68b30811790a99b9cbb056e1a2c329185a199c76ba5aeceb2fcd769":"70671a50e8387bf232989d904c19215c7535ad2d0c5dec30a744c8d2706be6ec":"f6b94b671cae8dfa8387719bfd75ee84" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f5ab77b2a8e370548b88febfd79772144cd5fc8d78062582addd4ff1e5c10094b390e66b3c4efb087510de1b9d25703f":"21a21c9314b37d4ade4a50a5d85995e0be07e358ed9bca19daa867a8d47847105dca7a424f32f715adb8fea5d3a41cfe388872a42ab18aa5cbcd7bde4adc3f8b":"023d582569a7ff1405e44cf09ceebb9d3254eef72286e4b87e6577a8ab091a06":"39597519872d49fbd186704241ba1dc10b1f84f9296fb61d597dbd655a18f997":"3091c9fe96109b41da63aa5fa00d716b5fa20e96d4f3e0f9c97666a706fa56f1":"1fb57058b3ba8751df5a99f018798983" +ctr_drbg_validate_reseed_between:"f5ab77b2a8e370548b88febfd79772144cd5fc8d78062582addd4ff1e5c10094b390e66b3c4efb087510de1b9d25703f":"21a21c9314b37d4ade4a50a5d85995e0be07e358ed9bca19daa867a8d47847105dca7a424f32f715adb8fea5d3a41cfe388872a42ab18aa5cbcd7bde4adc3f8b":"023d582569a7ff1405e44cf09ceebb9d3254eef72286e4b87e6577a8ab091a06":"39597519872d49fbd186704241ba1dc10b1f84f9296fb61d597dbd655a18f997":"3091c9fe96109b41da63aa5fa00d716b5fa20e96d4f3e0f9c97666a706fa56f1":"1fb57058b3ba8751df5a99f018798983" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f0b79e292d0e393e78b6d6117e06d2e725823fe35bde1146502967a78d99d6bca564f0e2f324272f968be5baab4aeb29":"192054dddac02157a35eb7f75ae8ebdb43d6b969e33942fb16ff06cd6d8a602506c41e4e743b8230e8239b71b31b2d5e3614e3a65d79e91d5b9fc9d2a66f8553":"b12241e90d80f129004287c5b9911a70f7159794e6f9c1023b3b68da9237e8b7":"59e9c3c0f90e91f22c35a3be0c65f16157c569c7e3c78a545d9840f648c60069":"089a59af69f47ddb4191bd27720bb4c29216f738c48c0e14d2b8afd68de63c17":"15287156e544617529e7eede4aa9c70e" +ctr_drbg_validate_reseed_between:"f0b79e292d0e393e78b6d6117e06d2e725823fe35bde1146502967a78d99d6bca564f0e2f324272f968be5baab4aeb29":"192054dddac02157a35eb7f75ae8ebdb43d6b969e33942fb16ff06cd6d8a602506c41e4e743b8230e8239b71b31b2d5e3614e3a65d79e91d5b9fc9d2a66f8553":"b12241e90d80f129004287c5b9911a70f7159794e6f9c1023b3b68da9237e8b7":"59e9c3c0f90e91f22c35a3be0c65f16157c569c7e3c78a545d9840f648c60069":"089a59af69f47ddb4191bd27720bb4c29216f738c48c0e14d2b8afd68de63c17":"15287156e544617529e7eede4aa9c70e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e3f33843aecb35d01001ff92ab9a0f1a5431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8c353bbbd":"ef081af1f62400a3d193969d689a40234998afb646d99a7c4b9cbbf47e650cda93a90e754a16fffa25fc2a2edab09720b4520c47309ec4f6d9f76f0162af6cae":"e7cc55b72862544a8661b5034e15587b1e5a45eb5dc744f5fa1db9b267f1c3ff":"882d30c888eb8e344b1d17057074606fe232ceb42eb71055264ede7bb638f2a2":"9ce65e95c1e735fe950e52c324e7551403d0ef70ad865bd31fef1e22b129fdd6":"205e3a53367c4a5183be74bb875fa717" +ctr_drbg_validate_reseed_between:"e3f33843aecb35d01001ff92ab9a0f1a5431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8c353bbbd":"ef081af1f62400a3d193969d689a40234998afb646d99a7c4b9cbbf47e650cda93a90e754a16fffa25fc2a2edab09720b4520c47309ec4f6d9f76f0162af6cae":"e7cc55b72862544a8661b5034e15587b1e5a45eb5dc744f5fa1db9b267f1c3ff":"882d30c888eb8e344b1d17057074606fe232ceb42eb71055264ede7bb638f2a2":"9ce65e95c1e735fe950e52c324e7551403d0ef70ad865bd31fef1e22b129fdd6":"205e3a53367c4a5183be74bb875fa717" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f30a18d597d8591a22dee908de95c5af74884b025f39b4f6707d28447d9d0a3114a57bc2d9eed8e621ec75e8ce389a16":"fae3d554d12a14e29de1b622922f27559559ca1518c9f800375a37a212e8b9a653cc3700223e9404d5bf781d15fccf638050a1394592caba001cfc65d61ef90b":"54240edd89016ed27e3bb3977a206836f5ef1fba0f000af95337d79caca9cf71":"250611e51852d933ff1a177b509c05e3228cb9f46dfb7b26848a68aad2ce4779":"f8b602d89fa1a0bfb31d0bd49246b458200a1adb28b64a68f7c197f335d69706":"7b63bfb325bafe7d9ef342cd14ea40a4" +ctr_drbg_validate_reseed_between:"f30a18d597d8591a22dee908de95c5af74884b025f39b4f6707d28447d9d0a3114a57bc2d9eed8e621ec75e8ce389a16":"fae3d554d12a14e29de1b622922f27559559ca1518c9f800375a37a212e8b9a653cc3700223e9404d5bf781d15fccf638050a1394592caba001cfc65d61ef90b":"54240edd89016ed27e3bb3977a206836f5ef1fba0f000af95337d79caca9cf71":"250611e51852d933ff1a177b509c05e3228cb9f46dfb7b26848a68aad2ce4779":"f8b602d89fa1a0bfb31d0bd49246b458200a1adb28b64a68f7c197f335d69706":"7b63bfb325bafe7d9ef342cd14ea40a4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c8dbc3d39beb612811c52e2b46ef76d2b7bd5d3a90ceddf9fb864fe6f44e36687d88158d61014e192f9a3cd474338e13":"8e60115b4af9c8e5606223792539e9ba87e9ef46cd16fcc09046db1ef8d3c036241cae5d61141711818e9e861dbd833632069ebf5af1bd6d4e513f059ab1efd3":"9b56eba0838457f736fc5efa2cfbe698908340f07d4680e279d21dd530fdc8c8":"62c47ece469a7a409e4b2b76d1c793aaf11654e177cc8bf63faff3e6c5a5395c":"4251597013d0c949c53bbd945477b78aa91baa95f1ff757c3a039ccc4e1f4789":"af2f37160940f0cc27d144a043ddf79b" +ctr_drbg_validate_reseed_between:"c8dbc3d39beb612811c52e2b46ef76d2b7bd5d3a90ceddf9fb864fe6f44e36687d88158d61014e192f9a3cd474338e13":"8e60115b4af9c8e5606223792539e9ba87e9ef46cd16fcc09046db1ef8d3c036241cae5d61141711818e9e861dbd833632069ebf5af1bd6d4e513f059ab1efd3":"9b56eba0838457f736fc5efa2cfbe698908340f07d4680e279d21dd530fdc8c8":"62c47ece469a7a409e4b2b76d1c793aaf11654e177cc8bf63faff3e6c5a5395c":"4251597013d0c949c53bbd945477b78aa91baa95f1ff757c3a039ccc4e1f4789":"af2f37160940f0cc27d144a043ddf79b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a37f9ed6c4e8f74ff16046b0678ef7bd24fcdca247b771ea1ce1fd48e3f5d2067e38aaf64ec59f1f49d96fa85e60ef03":"95da91f4185b254322ef0fc852473a9b9e4c274b242ded8a4eae6f1e2badde0664cf57f2128aa3dc83e436f7e80928a01d93bf25011eedf0190d0bf3619cd555":"b4a22f5598f79d34f0b9600763c081b0200ba489da7028ad0283828545c6d594":"fa3edc0962b20a9d9e1d0afcad907c8097c21d7a65c0e47c63d65cea94bf43bd":"49ba791a227e9e391e04225ad67f43f64754daac0b0bb4c6db77320943231ec3":"32f313ded225289793c14a71d1d32c9f" +ctr_drbg_validate_reseed_between:"a37f9ed6c4e8f74ff16046b0678ef7bd24fcdca247b771ea1ce1fd48e3f5d2067e38aaf64ec59f1f49d96fa85e60ef03":"95da91f4185b254322ef0fc852473a9b9e4c274b242ded8a4eae6f1e2badde0664cf57f2128aa3dc83e436f7e80928a01d93bf25011eedf0190d0bf3619cd555":"b4a22f5598f79d34f0b9600763c081b0200ba489da7028ad0283828545c6d594":"fa3edc0962b20a9d9e1d0afcad907c8097c21d7a65c0e47c63d65cea94bf43bd":"49ba791a227e9e391e04225ad67f43f64754daac0b0bb4c6db77320943231ec3":"32f313ded225289793c14a71d1d32c9f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"87f85b9c19eba1d953b6613cf555c21bc74428d9a8fee15e6cd717e240506f3e80860423973a66c61820d4ce1c6bb77d":"f22dd3517350176e35e1b7ecc8c00bea4747f0ac17bda1b1ddf8cdf7be53ff8c326268366e89cf3b023a9646177a0dcca902f0c98bf3840c9cbdf5c0494bee3c":"611caa00f93d4456fd2abb90de4dbcd934afbf1a56c2c4633b704c998f649960":"cba68367dc2fc92250e23e2b1a547fb3231b2beaab5e5a2ee39c5c74c9bab5f5":"f4895c9653b44a96152b893b7c94db80057fb67824d61c5c4186b9d8f16d3d98":"a05de6531a1aa1b2ba3faea8ad6ac209" +ctr_drbg_validate_reseed_between:"87f85b9c19eba1d953b6613cf555c21bc74428d9a8fee15e6cd717e240506f3e80860423973a66c61820d4ce1c6bb77d":"f22dd3517350176e35e1b7ecc8c00bea4747f0ac17bda1b1ddf8cdf7be53ff8c326268366e89cf3b023a9646177a0dcca902f0c98bf3840c9cbdf5c0494bee3c":"611caa00f93d4456fd2abb90de4dbcd934afbf1a56c2c4633b704c998f649960":"cba68367dc2fc92250e23e2b1a547fb3231b2beaab5e5a2ee39c5c74c9bab5f5":"f4895c9653b44a96152b893b7c94db80057fb67824d61c5c4186b9d8f16d3d98":"a05de6531a1aa1b2ba3faea8ad6ac209" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9670deb707caabc888a3b0df7270942934732e02be728a4bedb5fc9ca4d675b2f3b47c7132c364ce6292cef7c19b60c7":"bba34e6f4ee27e5d4e885e59f8bbb0dc7353a8912e66637d7515a66e5398d9a8cbd328fed32f71bdd34c73cdf97e0d211be6dabfb0144e1011fd136cf01ea4e4":"9f55da36babd6ea42082f5f5d4330f023440bb864f8ad5498a29cf89757eaeab":"8013a309058c91c80f4d966f98bce1d4291003ad547e915777a3fce8ae2eaf77":"c83106272d44e832e94c7096c9c11f6342e12ec06d5db336424af73d12451406":"bc8d4d00609662c1163dca930901821d" +ctr_drbg_validate_reseed_between:"9670deb707caabc888a3b0df7270942934732e02be728a4bedb5fc9ca4d675b2f3b47c7132c364ce6292cef7c19b60c7":"bba34e6f4ee27e5d4e885e59f8bbb0dc7353a8912e66637d7515a66e5398d9a8cbd328fed32f71bdd34c73cdf97e0d211be6dabfb0144e1011fd136cf01ea4e4":"9f55da36babd6ea42082f5f5d4330f023440bb864f8ad5498a29cf89757eaeab":"8013a309058c91c80f4d966f98bce1d4291003ad547e915777a3fce8ae2eaf77":"c83106272d44e832e94c7096c9c11f6342e12ec06d5db336424af73d12451406":"bc8d4d00609662c1163dca930901821d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6d984c8ab923a7e118447fd53ad287b8f01d1e6112cff12bfb338ecd3ed16bafdd634677c600bdd68f852a946f45c3d9":"ed0e524ed2990ef348dbb15b3f964b12ad3109978d6952ae193b21e94510a47406926620798e71a0ffcbdd2e54ec45509d784a8bfc9d59cb733f9f11fc474b5e":"0a3a32260d04dd7a82fb0873ecae7db5e5a4b6a51b09f4bf8a989e1afacbda3b":"3cbcabb83aab5a3e54836bbf12d3a7862a18e2dffeeb8bdd5770936d61fd839a":"f63b30a3efc0273eba03bf3cf90b1e4ac20b00e53a317dbf77b0fe70960e7c60":"ab9af144e8fad6a978a636ad84e0469e" +ctr_drbg_validate_reseed_between:"6d984c8ab923a7e118447fd53ad287b8f01d1e6112cff12bfb338ecd3ed16bafdd634677c600bdd68f852a946f45c3d9":"ed0e524ed2990ef348dbb15b3f964b12ad3109978d6952ae193b21e94510a47406926620798e71a0ffcbdd2e54ec45509d784a8bfc9d59cb733f9f11fc474b5e":"0a3a32260d04dd7a82fb0873ecae7db5e5a4b6a51b09f4bf8a989e1afacbda3b":"3cbcabb83aab5a3e54836bbf12d3a7862a18e2dffeeb8bdd5770936d61fd839a":"f63b30a3efc0273eba03bf3cf90b1e4ac20b00e53a317dbf77b0fe70960e7c60":"ab9af144e8fad6a978a636ad84e0469e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2c59520d6f8ce946dcc5222f4fc80ba83f38df9dce2861412eebb1614245331626e7fb93eedbad33a12e94c276deff0a":"2882d4a30b22659b87ad2d71db1d7cf093ffca80079a4ef21660de9223940969afec70b0384a54b1de9bcca6b43fb182e58d8dfcad82b0df99a8929201476ae9":"d3c17a2d9c5da051b2d1825120814eaee07dfca65ab4df01195c8b1fcea0ed41":"dcc39555b87f31973ae085f83eaf497441d22ab6d87b69e47296b0ab51733687":"9a8a1b4ccf8230e3d3a1be79e60ae06c393fe6b1ca245281825317468ca114c7":"fba523a09c587ecad4e7e7fd81e5ca39" +ctr_drbg_validate_reseed_between:"2c59520d6f8ce946dcc5222f4fc80ba83f38df9dce2861412eebb1614245331626e7fb93eedbad33a12e94c276deff0a":"2882d4a30b22659b87ad2d71db1d7cf093ffca80079a4ef21660de9223940969afec70b0384a54b1de9bcca6b43fb182e58d8dfcad82b0df99a8929201476ae9":"d3c17a2d9c5da051b2d1825120814eaee07dfca65ab4df01195c8b1fcea0ed41":"dcc39555b87f31973ae085f83eaf497441d22ab6d87b69e47296b0ab51733687":"9a8a1b4ccf8230e3d3a1be79e60ae06c393fe6b1ca245281825317468ca114c7":"fba523a09c587ecad4e7e7fd81e5ca39" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1c1207f50b645aaed5c16fe36f6aae83af4924e6b98a7e2a2533a584c1bac123f8b6f0e05109e0132950ae97b389001a":"8ae9a5903da32a38b7c6fed92dd0c6a035ca5104a3528d71a3eacc2f1681379724991a0053e8dac65e35f3deee0435e99f86364577c8ebdba321872973dc9790":"568bfee681d7f9be23a175a3cbf441b513829a9cbdf0706c145fdcd7803ce099":"e32cb5fec72c068894aaeabfc1b8d5e0de0b5acdf287a82e130a46e846770dc2":"d4418c333687a1c15cac7d4021f7d8823a114bb98f92c8a6dccc59ff8ad51c1f":"194e3018377cef71610794006b95def5" +ctr_drbg_validate_reseed_between:"1c1207f50b645aaed5c16fe36f6aae83af4924e6b98a7e2a2533a584c1bac123f8b6f0e05109e0132950ae97b389001a":"8ae9a5903da32a38b7c6fed92dd0c6a035ca5104a3528d71a3eacc2f1681379724991a0053e8dac65e35f3deee0435e99f86364577c8ebdba321872973dc9790":"568bfee681d7f9be23a175a3cbf441b513829a9cbdf0706c145fdcd7803ce099":"e32cb5fec72c068894aaeabfc1b8d5e0de0b5acdf287a82e130a46e846770dc2":"d4418c333687a1c15cac7d4021f7d8823a114bb98f92c8a6dccc59ff8ad51c1f":"194e3018377cef71610794006b95def5" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"28254014c5d6ebf9bd9e5f3946fc98e55fe351deee8fc70333e4f20f1f7719a522b3ea9a4424afe68208d1cc6c128c47":"98a0db985544c33990aee0f69655dba7198e6720ce56ff9d4662e26f0c6b4ee7ab599932c05295f6c5a4011085c5b2c861a5a8ae4f572ce614ff2dafc0fddb34":"64215cbe384f1f4cf548078ffd51f91eee9a8bae5aacdd19ca16bcaaf354f8ad":"2e21df638dabe24aebf62d97e25f701f781d12d0064f2f5a4a44d320c90b7260":"7f936274f74a466cbf69dbfe46db79f3c349377df683cb461f2da3b842ad438e":"25c469cc8407b82f42e34f11db3d8462" +ctr_drbg_validate_reseed_between:"28254014c5d6ebf9bd9e5f3946fc98e55fe351deee8fc70333e4f20f1f7719a522b3ea9a4424afe68208d1cc6c128c47":"98a0db985544c33990aee0f69655dba7198e6720ce56ff9d4662e26f0c6b4ee7ab599932c05295f6c5a4011085c5b2c861a5a8ae4f572ce614ff2dafc0fddb34":"64215cbe384f1f4cf548078ffd51f91eee9a8bae5aacdd19ca16bcaaf354f8ad":"2e21df638dabe24aebf62d97e25f701f781d12d0064f2f5a4a44d320c90b7260":"7f936274f74a466cbf69dbfe46db79f3c349377df683cb461f2da3b842ad438e":"25c469cc8407b82f42e34f11db3d8462" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e26c8a13dae5c2da81023f27ab10b878":"fea104f90c5881df7ad1c863307bad22c98770ecd0d717513a2807682582e3e18e81d7935c8a7bacddd5176e7ca4911b9f8f5b1d9c349152fa215393eb006384":"":"":"":"fd87337c305a0a8ef8eef797601732c2" +ctr_drbg_validate_reseed_between:"e26c8a13dae5c2da81023f27ab10b878":"fea104f90c5881df7ad1c863307bad22c98770ecd0d717513a2807682582e3e18e81d7935c8a7bacddd5176e7ca4911b9f8f5b1d9c349152fa215393eb006384":"":"":"":"fd87337c305a0a8ef8eef797601732c2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"8d7dda20a9807804bfc37bd7472d3b0c":"1d723cbc2ff2c115160e7240340adbf31c717696d0fdfecf3ec21150fca00cde477d37e2abbe32f399a505b74d82e502fbff94cecac87e87127d1397d3d76532":"":"":"":"7221761b913b1f50125abca6c3b2f229" +ctr_drbg_validate_reseed_between:"8d7dda20a9807804bfc37bd7472d3b0c":"1d723cbc2ff2c115160e7240340adbf31c717696d0fdfecf3ec21150fca00cde477d37e2abbe32f399a505b74d82e502fbff94cecac87e87127d1397d3d76532":"":"":"":"7221761b913b1f50125abca6c3b2f229" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c02e3b6fd4fea7ec517a232f48aaa8cb":"0820fc21cecba6b2fe053a269a34e6a7637dedaf55ef46d266f672ca7cfd9cc21cd807e2b7f6a1c640b4f059952ae6da7282c5c32959fed39f734a5e88a408d2":"":"":"":"667d4dbefe938d6a662440a17965a334" +ctr_drbg_validate_reseed_between:"c02e3b6fd4fea7ec517a232f48aaa8cb":"0820fc21cecba6b2fe053a269a34e6a7637dedaf55ef46d266f672ca7cfd9cc21cd807e2b7f6a1c640b4f059952ae6da7282c5c32959fed39f734a5e88a408d2":"":"":"":"667d4dbefe938d6a662440a17965a334" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9aee0326f9b16f88a4114e8d49b8e282":"ef0aae3f9c425253205215e5bf0ad70f141ad8cc72a332247cfe989601ca4fc52ba48b82db4d00fe1f279979b5aed1ae2ec2b02d2c921ee2d9cb89e3a900b97d":"":"":"":"651ad783fe3def80a8456552e405b98d" +ctr_drbg_validate_reseed_between:"9aee0326f9b16f88a4114e8d49b8e282":"ef0aae3f9c425253205215e5bf0ad70f141ad8cc72a332247cfe989601ca4fc52ba48b82db4d00fe1f279979b5aed1ae2ec2b02d2c921ee2d9cb89e3a900b97d":"":"":"":"651ad783fe3def80a8456552e405b98d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1e7a4961d1cd2fd30f571b92a763c2c5":"a9262ed5b54880cc8ecd4119cce9afe3de8875d403f7ca6b8ed8c88559470b29e644fddd83e127c5f938bc8a425db169c33c5c2d0b0c5133c8f87bbc0b0a7d79":"":"":"":"1124c509ca52693977cf461b0f0a0da9" +ctr_drbg_validate_reseed_between:"1e7a4961d1cd2fd30f571b92a763c2c5":"a9262ed5b54880cc8ecd4119cce9afe3de8875d403f7ca6b8ed8c88559470b29e644fddd83e127c5f938bc8a425db169c33c5c2d0b0c5133c8f87bbc0b0a7d79":"":"":"":"1124c509ca52693977cf461b0f0a0da9" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ae0b0d2e84f48c632f031356cdea60ac":"554cf6fad1c376ad6148cd40b53105c16e2f5dd5fa564865b26faa8c318150bfb2294e711735df5eb86ff4b4e778531793bad42403d93a80d05c5421229a53da":"":"":"":"1212e5d3070b1cdf52c0217866481c58" +ctr_drbg_validate_reseed_between:"ae0b0d2e84f48c632f031356cdea60ac":"554cf6fad1c376ad6148cd40b53105c16e2f5dd5fa564865b26faa8c318150bfb2294e711735df5eb86ff4b4e778531793bad42403d93a80d05c5421229a53da":"":"":"":"1212e5d3070b1cdf52c0217866481c58" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"16b8c7495d43cd2ff5f65ad2ab48ecef":"7cffe2bef0d42374f7263a386b67fba991e59cefd73590cbcde3a4dc635a5a328f1a8e5edd3ada75854f251ee9f2de6cd247f64c6ca4f6c983805aa0fe9d3106":"":"":"":"d3869a9c5004b8a6ae8d8f0f461b602b" +ctr_drbg_validate_reseed_between:"16b8c7495d43cd2ff5f65ad2ab48ecef":"7cffe2bef0d42374f7263a386b67fba991e59cefd73590cbcde3a4dc635a5a328f1a8e5edd3ada75854f251ee9f2de6cd247f64c6ca4f6c983805aa0fe9d3106":"":"":"":"d3869a9c5004b8a6ae8d8f0f461b602b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a2d5eff6f73f98e5b04c01967dffa69b":"59759bb91b3c4feb18c0f086269ec52e097b67698f4dfe91ebe8bef851caa35cadb3fd22d1309f13510e1252856c71394a8e210fdbf3c7aae7998865f98e8744":"":"":"":"a1f99bd9522342e963af2ec8eed25c08" +ctr_drbg_validate_reseed_between:"a2d5eff6f73f98e5b04c01967dffa69b":"59759bb91b3c4feb18c0f086269ec52e097b67698f4dfe91ebe8bef851caa35cadb3fd22d1309f13510e1252856c71394a8e210fdbf3c7aae7998865f98e8744":"":"":"":"a1f99bd9522342e963af2ec8eed25c08" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ea1f47fe5e281136706419ea9b652967":"0ec7c617f85bec74044111020c977be32ab8050b326ebc03715bbbffa5a34622f2264d4b5141b7883281c21ea91981155a64fb7b902e674e9a41a8a86c32052b":"":"":"":"daf75b8288fc66802b23af5fd04a9434" +ctr_drbg_validate_reseed_between:"ea1f47fe5e281136706419ea9b652967":"0ec7c617f85bec74044111020c977be32ab8050b326ebc03715bbbffa5a34622f2264d4b5141b7883281c21ea91981155a64fb7b902e674e9a41a8a86c32052b":"":"":"":"daf75b8288fc66802b23af5fd04a9434" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6f072c681a82c00dcd0d9dd5b7ffa2af":"cd7ce90f0141e80f6bd6ff3d981d8a0a877d0ddae7c98f9091763b5946fc38b64c1ef698485007d53251ad278daf5d4ae94a725d617fc9a45a919a9e785a9849":"":"":"":"39c0144f28c5a490eff6221b62384602" +ctr_drbg_validate_reseed_between:"6f072c681a82c00dcd0d9dd5b7ffa2af":"cd7ce90f0141e80f6bd6ff3d981d8a0a877d0ddae7c98f9091763b5946fc38b64c1ef698485007d53251ad278daf5d4ae94a725d617fc9a45a919a9e785a9849":"":"":"":"39c0144f28c5a490eff6221b62384602" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9d730655366e2aa89ee09332bd0a5053":"854766e842eb165a31551f96008354bca1628a9520d29c3cc4f6a41068bf76d8054b75b7d69f5865266c310b5e9f0290af37c5d94535cb5dc9c854ea1cb36eb7":"":"":"":"baa2a3ed6fdc049d0f158693db8c70ef" +ctr_drbg_validate_reseed_between:"9d730655366e2aa89ee09332bd0a5053":"854766e842eb165a31551f96008354bca1628a9520d29c3cc4f6a41068bf76d8054b75b7d69f5865266c310b5e9f0290af37c5d94535cb5dc9c854ea1cb36eb7":"":"":"":"baa2a3ed6fdc049d0f158693db8c70ef" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"3363881611bfd5d16814360e83d8544f":"6abfab14cbf222d553d0e930a38941f6f271b48943ea6f69e796e30135bc9eb30204b77ab416ac066da0a649c8558e5a0eac62f54f2f6e66c207cab461c71510":"":"":"":"5be410ce54288e881acd3e566964df78" +ctr_drbg_validate_reseed_between:"3363881611bfd5d16814360e83d8544f":"6abfab14cbf222d553d0e930a38941f6f271b48943ea6f69e796e30135bc9eb30204b77ab416ac066da0a649c8558e5a0eac62f54f2f6e66c207cab461c71510":"":"":"":"5be410ce54288e881acd3e566964df78" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"14e589065423528ff84a1f89507ab519":"0d2e446cad387a962ff2217c7cf4826dcabb997ab7f74f64aa18fbcb69151993f263925ae71f9dfdff122bb61802480f2803930efce01a3f37c97101893c140f":"":"":"":"fc2d3df6c9aae68fb01d8382fcd82104" +ctr_drbg_validate_reseed_between:"14e589065423528ff84a1f89507ab519":"0d2e446cad387a962ff2217c7cf4826dcabb997ab7f74f64aa18fbcb69151993f263925ae71f9dfdff122bb61802480f2803930efce01a3f37c97101893c140f":"":"":"":"fc2d3df6c9aae68fb01d8382fcd82104" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"974c5ae90347d839475f0f994f2bf01d":"aa04d9fc56349fdd31d868e9efc2938f9104c0291e55ac0aa0c24ec4609731b8e0ac04b42180bde1af6ad1b26faff8a6de60a8a4a828cd6f8758c54b6037a0ee":"":"":"":"3caec482015003643d5a319a2af48fb4" +ctr_drbg_validate_reseed_between:"974c5ae90347d839475f0f994f2bf01d":"aa04d9fc56349fdd31d868e9efc2938f9104c0291e55ac0aa0c24ec4609731b8e0ac04b42180bde1af6ad1b26faff8a6de60a8a4a828cd6f8758c54b6037a0ee":"":"":"":"3caec482015003643d5a319a2af48fb4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b3a110587a16c1eafe51128a66816ecf":"203bba645fb5ccee3383cf402e04c713b7a6b6cca8b154e827520daac4ea3a0247bbdc3b2cd853e170587d22c70fb96c320ea71cb80c04826316c7317c797b8a":"":"":"":"9af4f67a30a4346e0cfcf51c45fd2589" +ctr_drbg_validate_reseed_between:"b3a110587a16c1eafe51128a66816ecf":"203bba645fb5ccee3383cf402e04c713b7a6b6cca8b154e827520daac4ea3a0247bbdc3b2cd853e170587d22c70fb96c320ea71cb80c04826316c7317c797b8a":"":"":"":"9af4f67a30a4346e0cfcf51c45fd2589" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"55546068cd524c51496c5fc9622b64c6":"951e712d057028158831ca8c74d4ae303c6e4641c344a1c80292260bdd9d8e2f5b97606370e95903e3124659de3e3f6e021cd9ccc86aa4a619c0e94b2a9aa3cc":"2d6de8661c7a30a0ca6a20c13c4c04421ba200fbef4f6eb499c17aee1561faf1":"41797b2eeaccb8a002538d3480cb0b76060ee5ba9d7e4a2bb2b201154f61c975":"b744980bb0377e176b07f48e7994fffd7b0d8a539e1f02a5535d2f4051f054f3":"65b9f7382ed578af03efa2008dbdd56f" +ctr_drbg_validate_reseed_between:"55546068cd524c51496c5fc9622b64c6":"951e712d057028158831ca8c74d4ae303c6e4641c344a1c80292260bdd9d8e2f5b97606370e95903e3124659de3e3f6e021cd9ccc86aa4a619c0e94b2a9aa3cc":"2d6de8661c7a30a0ca6a20c13c4c04421ba200fbef4f6eb499c17aee1561faf1":"41797b2eeaccb8a002538d3480cb0b76060ee5ba9d7e4a2bb2b201154f61c975":"b744980bb0377e176b07f48e7994fffd7b0d8a539e1f02a5535d2f4051f054f3":"65b9f7382ed578af03efa2008dbdd56f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a0c92565640a3315cac8da6d0458fb07":"6e9b31755c1f45df7d685f86044ab3bc25433a3ff08ab5de7154e06b0867f4e3531ed2e2a15ab63c611fc2894240fdac1d3292d1b36da87caa2080d1c41bcf24":"c6c74690bdee26288d2f87a06435d664431206b23b24f426e847fb892d40d5d5":"4e7dc1adbc8bc16ba7b584c18a0d7e4383c470bff2f320af54ad5ade5f43265b":"c6fb8ee194a339726f5051b91925c6a214079a661ec78358e98fc4f41e8c4724":"c3f849ee7d87291301e11b467fa2162f" +ctr_drbg_validate_reseed_between:"a0c92565640a3315cac8da6d0458fb07":"6e9b31755c1f45df7d685f86044ab3bc25433a3ff08ab5de7154e06b0867f4e3531ed2e2a15ab63c611fc2894240fdac1d3292d1b36da87caa2080d1c41bcf24":"c6c74690bdee26288d2f87a06435d664431206b23b24f426e847fb892d40d5d5":"4e7dc1adbc8bc16ba7b584c18a0d7e4383c470bff2f320af54ad5ade5f43265b":"c6fb8ee194a339726f5051b91925c6a214079a661ec78358e98fc4f41e8c4724":"c3f849ee7d87291301e11b467fa2162f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"63e143bd6a87065a00eea930593f9b29":"62c2c790cb56518ed2d8d65952bbd4ab85a56463495c940b94f403a93338bdc96129feea9335b1a3e0ada7cf4c207f4732013bc6a52db41407bf5d6fe9183b3c":"7b4e9ff0c8f8c90f8b324c7189226d3adccd79df2d0c22b52fb31dbb5dfefba6":"49e1aecf2b96a366325dc1892c016a5535dd2480360a382e9cc78bf75b2bba37":"f4ce1d27e759f3ba4a56aaab713642b4c56810c9995fbfc04ce285429f95a8f4":"513111abaae3069e599b56f7e5fb91d1" +ctr_drbg_validate_reseed_between:"63e143bd6a87065a00eea930593f9b29":"62c2c790cb56518ed2d8d65952bbd4ab85a56463495c940b94f403a93338bdc96129feea9335b1a3e0ada7cf4c207f4732013bc6a52db41407bf5d6fe9183b3c":"7b4e9ff0c8f8c90f8b324c7189226d3adccd79df2d0c22b52fb31dbb5dfefba6":"49e1aecf2b96a366325dc1892c016a5535dd2480360a382e9cc78bf75b2bba37":"f4ce1d27e759f3ba4a56aaab713642b4c56810c9995fbfc04ce285429f95a8f4":"513111abaae3069e599b56f7e5fb91d1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"98dc16e95f97b5b9d8287875774d9d19":"2fab4a629e4b21f27488a0c9ed36fc8e75bee0c386346c6ec59a6f045975e29818440a6638eb3b9e952e19df82d6dc7b8b9c18530aef763d0709b3b55433ddc6":"2e9d2f52a55df05fb8b9549947f8690c9ce410268d1d3aa7d69e63cbb28e4eb8":"57ecdad71d709dcdb1eba6cf36e0ecf04aaccd7527ca44c6f96768968027274f":"7b2da3d1ae252a71bccbb318e0eec95493a236f0dec97f2600de9f0743030529":"841882e4d9346bea32b1216eebc06aac" +ctr_drbg_validate_reseed_between:"98dc16e95f97b5b9d8287875774d9d19":"2fab4a629e4b21f27488a0c9ed36fc8e75bee0c386346c6ec59a6f045975e29818440a6638eb3b9e952e19df82d6dc7b8b9c18530aef763d0709b3b55433ddc6":"2e9d2f52a55df05fb8b9549947f8690c9ce410268d1d3aa7d69e63cbb28e4eb8":"57ecdad71d709dcdb1eba6cf36e0ecf04aaccd7527ca44c6f96768968027274f":"7b2da3d1ae252a71bccbb318e0eec95493a236f0dec97f2600de9f0743030529":"841882e4d9346bea32b1216eebc06aac" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"5dbac5c313527d4d0e5ca9b6f5596ed7":"c00b28c78da4f9ce159741437fe7f90e4e23ecd01cd292f197202decbbc823d9ce46b8191c11e8f8d007d38e2ecd93b8bd9bbad5812aaf547ddf4c7a6738b777":"460c54f4c3fe49d9b25b069ff6664517ed3b234890175a59cde5c3bc230c0a9e":"bf5187f1f55ae6711c2bc1884324490bf2d29d29e95cad7a1c295045eed5a310":"28fd8277dcb807741d4d5cb255a8d9a32ef56a880ccf2b3dcca54645bd6f1013":"b488f5c13bb017b0d9de2092d577c76e" +ctr_drbg_validate_reseed_between:"5dbac5c313527d4d0e5ca9b6f5596ed7":"c00b28c78da4f9ce159741437fe7f90e4e23ecd01cd292f197202decbbc823d9ce46b8191c11e8f8d007d38e2ecd93b8bd9bbad5812aaf547ddf4c7a6738b777":"460c54f4c3fe49d9b25b069ff6664517ed3b234890175a59cde5c3bc230c0a9e":"bf5187f1f55ae6711c2bc1884324490bf2d29d29e95cad7a1c295045eed5a310":"28fd8277dcb807741d4d5cb255a8d9a32ef56a880ccf2b3dcca54645bd6f1013":"b488f5c13bb017b0d9de2092d577c76e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"254d5f5044415c694a89249b0b6e1a2c":"4c1cc9ebe7a03cde31860637d8222faeefa9cbf789fab62e99a98d83084fef29eafcf7177d62d55435a1acb77e7a61ad86c47d1950b8683e167fe3ece3f8c9e8":"71af584657160f0f0b81740ef93017a37c174bee5a02c8967f087fdbfd33bfde":"96e8522f6ed8e8a9772ffb19e9416a1c6293ad6d1ecd317972e2f6258d7d68dd":"3aaa5e4d6af79055742150e630c5e3a46288e216d6607793c021d6705349f96a":"66629af4a0e90550b9bd3811243d6b86" +ctr_drbg_validate_reseed_between:"254d5f5044415c694a89249b0b6e1a2c":"4c1cc9ebe7a03cde31860637d8222faeefa9cbf789fab62e99a98d83084fef29eafcf7177d62d55435a1acb77e7a61ad86c47d1950b8683e167fe3ece3f8c9e8":"71af584657160f0f0b81740ef93017a37c174bee5a02c8967f087fdbfd33bfde":"96e8522f6ed8e8a9772ffb19e9416a1c6293ad6d1ecd317972e2f6258d7d68dd":"3aaa5e4d6af79055742150e630c5e3a46288e216d6607793c021d6705349f96a":"66629af4a0e90550b9bd3811243d6b86" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b46fceed0fcc29665815cc9459971913":"ff62d52aed55d8e966044f7f7c5013b4915197c73668e01b4487c3243bbf5f9248a4fdd6ef0f63b87fc8d1c5d514ff243319b2fbdfa474d5f83b935399655e15":"994d6b5393fbf0351f0bcfb48e1e763b377b732c73bf8e28dec720a2cadcb8a5":"118bb8c7a43b9c30afaf9ce4db3e6a60a3f9d01c30b9ab3572662955808b41e4":"bb47e443090afc32ee34873bd106bf867650adf5b5d90a2e7d0e58ed0ae83e8a":"1865fee6024db510690725f16b938487" +ctr_drbg_validate_reseed_between:"b46fceed0fcc29665815cc9459971913":"ff62d52aed55d8e966044f7f7c5013b4915197c73668e01b4487c3243bbf5f9248a4fdd6ef0f63b87fc8d1c5d514ff243319b2fbdfa474d5f83b935399655e15":"994d6b5393fbf0351f0bcfb48e1e763b377b732c73bf8e28dec720a2cadcb8a5":"118bb8c7a43b9c30afaf9ce4db3e6a60a3f9d01c30b9ab3572662955808b41e4":"bb47e443090afc32ee34873bd106bf867650adf5b5d90a2e7d0e58ed0ae83e8a":"1865fee6024db510690725f16b938487" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e1a5dd32fc7cefb281d5d6ce3200f4ca":"bf1ba4166007b53fcaee41f9c54771c8a0b309a52ea7894a005783c1e3e43e2eb9871d7909a1c3567953aabdf75e38c8f5578c51a692d883755102a0c82c7c12":"32e9922bd780303828091a140274d04f879cd821f352bd18bcaa49ffef840010":"01830ddd2f0e323c90830beddedf1480e6c23b0d99c2201871f18cc308ab3139":"f36d792dbde7609b8bf4724d7d71362840b309c5f2961e2537c8b5979a569ae8":"7080e8379a43c2e28e07d0c7ed9705a8" +ctr_drbg_validate_reseed_between:"e1a5dd32fc7cefb281d5d6ce3200f4ca":"bf1ba4166007b53fcaee41f9c54771c8a0b309a52ea7894a005783c1e3e43e2eb9871d7909a1c3567953aabdf75e38c8f5578c51a692d883755102a0c82c7c12":"32e9922bd780303828091a140274d04f879cd821f352bd18bcaa49ffef840010":"01830ddd2f0e323c90830beddedf1480e6c23b0d99c2201871f18cc308ab3139":"f36d792dbde7609b8bf4724d7d71362840b309c5f2961e2537c8b5979a569ae8":"7080e8379a43c2e28e07d0c7ed9705a8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"d1b7be857a422b425ae62c61e90a192a":"6ac34c4ce22b644632283ab13e294df2093e939d32411340b046c26fcc449d0fd6d14132c7205df303dbb663190e6e86ad12e14e145b6603308241f38d94eb5d":"aacfe8553d5ffef6abc3fd8f94d796cae2079ff04f7ab1b41982003f02427c7a":"01d2d1bc29d6a6b52bb29bd6652be772096ca23c838c40730d5b4a4f8f735daa":"27af728ee07d3f5902f4e56453b6a9feb308ef14795eb5630b2651debdd36d5b":"b03fbcd03fa1cc69db0a4e3492a52bad" +ctr_drbg_validate_reseed_between:"d1b7be857a422b425ae62c61e90a192a":"6ac34c4ce22b644632283ab13e294df2093e939d32411340b046c26fcc449d0fd6d14132c7205df303dbb663190e6e86ad12e14e145b6603308241f38d94eb5d":"aacfe8553d5ffef6abc3fd8f94d796cae2079ff04f7ab1b41982003f02427c7a":"01d2d1bc29d6a6b52bb29bd6652be772096ca23c838c40730d5b4a4f8f735daa":"27af728ee07d3f5902f4e56453b6a9feb308ef14795eb5630b2651debdd36d5b":"b03fbcd03fa1cc69db0a4e3492a52bad" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a2c49aa6f3f92e36266bf267af5877ed":"5684c3eb99314127078484959314d52b3bc50cb3615c0eef6b48850d98aee04c528b0693be13ed1bb4040e8e96cb13c316143f0815cd68d1bb7931a3d9b88a3d":"566522085426b76bdef152adefd73ef0f76eee4614bc5a4391629ec49e0acffb":"30ef9585148dd2270c41540a4235328de8952f28cf5472df463e88e837419e99":"adc46e0afcf69302f62c84c5c4bfcbb7132f8db118d1a84dc2b910753fe86a2d":"4edc4383977ee91aaa2f5b9ac4257570" +ctr_drbg_validate_reseed_between:"a2c49aa6f3f92e36266bf267af5877ed":"5684c3eb99314127078484959314d52b3bc50cb3615c0eef6b48850d98aee04c528b0693be13ed1bb4040e8e96cb13c316143f0815cd68d1bb7931a3d9b88a3d":"566522085426b76bdef152adefd73ef0f76eee4614bc5a4391629ec49e0acffb":"30ef9585148dd2270c41540a4235328de8952f28cf5472df463e88e837419e99":"adc46e0afcf69302f62c84c5c4bfcbb7132f8db118d1a84dc2b910753fe86a2d":"4edc4383977ee91aaa2f5b9ac4257570" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"43852c53041a3a4f710435dbd3e4382b":"ab7bca5595084bccdba80ade7ac3df2a0ce198fa49d29414c0249ec3d1c50d271ca74ba5c3521576a89a1964e6deded2d5ba7ff28a364a8f9235981bec1bedfa":"c5612a9540b64fc134074cb36f4c9ea62fff993938709b5d354a917e5265adee":"eee2258aba665aa6d3f5b8c2207f135276f597adb2a0fbfb16a20460e8cc3c68":"a6d6d126bed13dbcf2b327aa884b7260a9c388cb03751dbe9feb28a3fe351d62":"e04c3de51a1ffe8cda89e881c396584b" +ctr_drbg_validate_reseed_between:"43852c53041a3a4f710435dbd3e4382b":"ab7bca5595084bccdba80ade7ac3df2a0ce198fa49d29414c0249ec3d1c50d271ca74ba5c3521576a89a1964e6deded2d5ba7ff28a364a8f9235981bec1bedfa":"c5612a9540b64fc134074cb36f4c9ea62fff993938709b5d354a917e5265adee":"eee2258aba665aa6d3f5b8c2207f135276f597adb2a0fbfb16a20460e8cc3c68":"a6d6d126bed13dbcf2b327aa884b7260a9c388cb03751dbe9feb28a3fe351d62":"e04c3de51a1ffe8cda89e881c396584b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"52628551ce90c338ed94b655d4f05811":"b3a4a3c4d3d53ffa41b85ce3b8f292b1cc8e5af7488286d4c581005f8c02c5545c09bb08d8470b8cffdf62731b1d4b75c036af7dc4f2f1fc7e9a496f3d235f2d":"f5f9d5b51075b12aa300afdc7b8ea3944fc8cf4d1e95625cc4e42fdfdcbeb169":"60bccbc7345f23733fe8f8eb9760975057238705d9cee33b3269f9bfedd72202":"c0fa3afd6e9decfbffa7ea6678d2481c5f55ec0a35172ff93214b997400e97c3":"5a113906e1ef76b7b75fefbf20d78ef8" +ctr_drbg_validate_reseed_between:"52628551ce90c338ed94b655d4f05811":"b3a4a3c4d3d53ffa41b85ce3b8f292b1cc8e5af7488286d4c581005f8c02c5545c09bb08d8470b8cffdf62731b1d4b75c036af7dc4f2f1fc7e9a496f3d235f2d":"f5f9d5b51075b12aa300afdc7b8ea3944fc8cf4d1e95625cc4e42fdfdcbeb169":"60bccbc7345f23733fe8f8eb9760975057238705d9cee33b3269f9bfedd72202":"c0fa3afd6e9decfbffa7ea6678d2481c5f55ec0a35172ff93214b997400e97c3":"5a113906e1ef76b7b75fefbf20d78ef8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0e4873c4cbcde280abc6711a66dbb81a":"1ab7c7d8fe8f505e1dd7ddb8e7cda962572f7004b2a14c7a7c5bcf24bd16616e2c42c50ae5db9981ccd7d0c79062ac572d3893486bd0ae1f99cbc1d28a9e4c1e":"e4b89e28663e853f8b380c8a4491b54121fe6927340a74342362c37d8d615b66":"619775878879eff9ee2189790ff6f187baed4ed1b156029b80e7a070a1072a09":"ba3d673e5e41bd1abbc7191cc4b9a945201b8fef0016e4774047ee2abf499e74":"4758fd021c34a5cf6bea760ad09438a0" +ctr_drbg_validate_reseed_between:"0e4873c4cbcde280abc6711a66dbb81a":"1ab7c7d8fe8f505e1dd7ddb8e7cda962572f7004b2a14c7a7c5bcf24bd16616e2c42c50ae5db9981ccd7d0c79062ac572d3893486bd0ae1f99cbc1d28a9e4c1e":"e4b89e28663e853f8b380c8a4491b54121fe6927340a74342362c37d8d615b66":"619775878879eff9ee2189790ff6f187baed4ed1b156029b80e7a070a1072a09":"ba3d673e5e41bd1abbc7191cc4b9a945201b8fef0016e4774047ee2abf499e74":"4758fd021c34a5cf6bea760ad09438a0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0684e8ef93c3363ba535c4e573af1c24":"748a5f5fde271c563a8f8d15520d6818f7ed0efb9b434adf2ff9471b391dd225b37868179ffa9a6e58df3b1b765b8945685a2f966d29648dd86a42078339650b":"e90c82153d2280f1ddb55bd65e7752bf6717fbe08c49414f6c129bf608578db7":"c17e97c93cfabe0b925ca5d22615a06430a201b7595ad0d9967cc89a4777947d":"3d554c430c8928dcdb1f6d5e5a4306b309856a9b78c5f431c55d7ebd519443bb":"d3da71af70e196483c951d95eb3f0135" +ctr_drbg_validate_reseed_between:"0684e8ef93c3363ba535c4e573af1c24":"748a5f5fde271c563a8f8d15520d6818f7ed0efb9b434adf2ff9471b391dd225b37868179ffa9a6e58df3b1b765b8945685a2f966d29648dd86a42078339650b":"e90c82153d2280f1ddb55bd65e7752bf6717fbe08c49414f6c129bf608578db7":"c17e97c93cfabe0b925ca5d22615a06430a201b7595ad0d9967cc89a4777947d":"3d554c430c8928dcdb1f6d5e5a4306b309856a9b78c5f431c55d7ebd519443bb":"d3da71af70e196483c951d95eb3f0135" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"89b885ddb12abc4f7422334f27c00439":"e2366eec626bfd9cb932bcaa0569de6a7a37cf1dfde1f25d00d1a0c89fe25fea592cbd2af7c8202521fa48e15f7cc7e97e431b222b516a3ad2bb7b55b7fcf7f4":"c77ee92bd17939efe9bee48af66589aee1d9fe4cd6c8ae26b74b3799e35342a6":"23e80d36ca72ecc38551e7e0a4f9502bed0e160f382d802f48fb2714ec6e3315":"6b83f7458dc813ce0b963b231c424e8bced599d002c0ef91a9c20dcc3f172ea5":"81d13a6b79f05137e233e3c3a1091360" +ctr_drbg_validate_reseed_between:"89b885ddb12abc4f7422334f27c00439":"e2366eec626bfd9cb932bcaa0569de6a7a37cf1dfde1f25d00d1a0c89fe25fea592cbd2af7c8202521fa48e15f7cc7e97e431b222b516a3ad2bb7b55b7fcf7f4":"c77ee92bd17939efe9bee48af66589aee1d9fe4cd6c8ae26b74b3799e35342a6":"23e80d36ca72ecc38551e7e0a4f9502bed0e160f382d802f48fb2714ec6e3315":"6b83f7458dc813ce0b963b231c424e8bced599d002c0ef91a9c20dcc3f172ea5":"81d13a6b79f05137e233e3c3a1091360" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ff568be02a46343113f06949a16cc7d9da315aef82f5681f0459650e5e180e65d1d77b00e5ce3e3f9eb6c18efff4db36":"77de4e5db3b308c38c814228583dfd1eb415771f4ae30f9cc2d35b48075286a4e8c2c6f441d1aac496d0d4be395d078519e31cb77d06d6f7fd4c033bc40fd659":"":"":"":"448ac707ba934c909335425de62944d6" +ctr_drbg_validate_reseed_between:"ff568be02a46343113f06949a16cc7d9da315aef82f5681f0459650e5e180e65d1d77b00e5ce3e3f9eb6c18efff4db36":"77de4e5db3b308c38c814228583dfd1eb415771f4ae30f9cc2d35b48075286a4e8c2c6f441d1aac496d0d4be395d078519e31cb77d06d6f7fd4c033bc40fd659":"":"":"":"448ac707ba934c909335425de62944d6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"6f092b85eb9f96427642f69467911172cba6df86e0db08d04e824cde6fb91d9b9af2cea53f42d53c45ee3e69a2327172":"667d3ed9f41a154ea33b55182b8bee4d7d46eff8e890c7036cf7c2665d44c28f9e3a8cff166dabfaf262933d337e729e0b6a60a51d00ba18f877bdc9d0cc659e":"":"":"":"16a200f683ab862947e061cddaac5597" +ctr_drbg_validate_reseed_between:"6f092b85eb9f96427642f69467911172cba6df86e0db08d04e824cde6fb91d9b9af2cea53f42d53c45ee3e69a2327172":"667d3ed9f41a154ea33b55182b8bee4d7d46eff8e890c7036cf7c2665d44c28f9e3a8cff166dabfaf262933d337e729e0b6a60a51d00ba18f877bdc9d0cc659e":"":"":"":"16a200f683ab862947e061cddaac5597" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"26e635a6a2b6402b968c1eea13c6a980a0ee9b8497abc14fccdc5bf8439008861f74de2c200505185bf5907d3adc9de2":"80e56f9893beb9f22b2b03caa8f1861d5b31b37f636f2ccbc7e4040ad3073aa20f2f3c6bfefc041df8e57e7100794c42732b6d4b63d8bb51329ca99671d53c7c":"":"":"":"807586c977febcf2ad28fcd45e1a1deb" +ctr_drbg_validate_reseed_between:"26e635a6a2b6402b968c1eea13c6a980a0ee9b8497abc14fccdc5bf8439008861f74de2c200505185bf5907d3adc9de2":"80e56f9893beb9f22b2b03caa8f1861d5b31b37f636f2ccbc7e4040ad3073aa20f2f3c6bfefc041df8e57e7100794c42732b6d4b63d8bb51329ca99671d53c7c":"":"":"":"807586c977febcf2ad28fcd45e1a1deb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b239c485d319ce964d69bd3dbc5b7ab9cc72ac9134a25e641bcd3c8b6f89e7e08ef2d0a45cf67667a4e2e634b32d73ff":"c963e17ef46b7b2c68756019704ec7435ec093c423600b3f2f99dd8989f8539a11b1b0598e93e84d50b65e816e794421ab546b202e4b224a8494538dda85da82":"":"":"":"2a3218b4d59f99bd3825631a6eefb09c" +ctr_drbg_validate_reseed_between:"b239c485d319ce964d69bd3dbc5b7ab9cc72ac9134a25e641bcd3c8b6f89e7e08ef2d0a45cf67667a4e2e634b32d73ff":"c963e17ef46b7b2c68756019704ec7435ec093c423600b3f2f99dd8989f8539a11b1b0598e93e84d50b65e816e794421ab546b202e4b224a8494538dda85da82":"":"":"":"2a3218b4d59f99bd3825631a6eefb09c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0239545a23735b803ae7cb7766194917d6cce164f7ec4f65c6ccd5ec1db5297722d4b7466589da4d39f4585856bc1d7e":"71a440b70a2b5ce41b85de27d987fa2a0628d7990dd7cd1460fddc5410ce6e9bb0ae4f90231f45bc71188fd94e4170389a8bbe4a7e781c95c9a97ad78ba7d07b":"":"":"":"9dafaa8b727c4829dda10a831e67419d" +ctr_drbg_validate_reseed_between:"0239545a23735b803ae7cb7766194917d6cce164f7ec4f65c6ccd5ec1db5297722d4b7466589da4d39f4585856bc1d7e":"71a440b70a2b5ce41b85de27d987fa2a0628d7990dd7cd1460fddc5410ce6e9bb0ae4f90231f45bc71188fd94e4170389a8bbe4a7e781c95c9a97ad78ba7d07b":"":"":"":"9dafaa8b727c4829dda10a831e67419d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"237e8916eadd65e3422fe59ab257b7e6957fe24f760b499fbd052241879e8294b01d2169ec2b98f52660d9f5170dee22":"d8908cfc1ea8518c1442e46731f30fdad85399894db262b8f4fdc0dbcbf11b60b60b25d3108f4b169fcbef621a14c635525fa3af8ccef6b91f808479509967f4":"":"":"":"593c39c56bb9e476550299ee8d85d2fc" +ctr_drbg_validate_reseed_between:"237e8916eadd65e3422fe59ab257b7e6957fe24f760b499fbd052241879e8294b01d2169ec2b98f52660d9f5170dee22":"d8908cfc1ea8518c1442e46731f30fdad85399894db262b8f4fdc0dbcbf11b60b60b25d3108f4b169fcbef621a14c635525fa3af8ccef6b91f808479509967f4":"":"":"":"593c39c56bb9e476550299ee8d85d2fc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"28b6639b415c79012c749dc2a0d18433ec36eda55815f0841241453fa11b9d572b7c29208e01dbb0be91e1075f305d7f":"6767c3eb6ba1b19412c32bfe44e4d0317beba10f3abea328cda7b7c14109b72046c8691c1c7b28487037d381f77a3bbc8464a51b87de68bdc50ec9c658f915ab":"":"":"":"e390806219fa727e74a90011b4835ed6" +ctr_drbg_validate_reseed_between:"28b6639b415c79012c749dc2a0d18433ec36eda55815f0841241453fa11b9d572b7c29208e01dbb0be91e1075f305d7f":"6767c3eb6ba1b19412c32bfe44e4d0317beba10f3abea328cda7b7c14109b72046c8691c1c7b28487037d381f77a3bbc8464a51b87de68bdc50ec9c658f915ab":"":"":"":"e390806219fa727e74a90011b4835ed6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ce735a8549fc3f9dfc7b96bf0d48936a711439ac7271d715a278718aca9e2fe3c801030bc74b048ac1e40852345e87cc":"510b0dc06e84ceb901c7195c2f00ad7a04bdd75e0ab52b3d2cd47ddfcd89248dd58e3f1aa8c1ffe306f493905f65369eaed2a5b337dff8ac81c4c1e8903a6ad5":"":"":"":"ba871ba5843083b553a57cf8defa39d7" +ctr_drbg_validate_reseed_between:"ce735a8549fc3f9dfc7b96bf0d48936a711439ac7271d715a278718aca9e2fe3c801030bc74b048ac1e40852345e87cc":"510b0dc06e84ceb901c7195c2f00ad7a04bdd75e0ab52b3d2cd47ddfcd89248dd58e3f1aa8c1ffe306f493905f65369eaed2a5b337dff8ac81c4c1e8903a6ad5":"":"":"":"ba871ba5843083b553a57cf8defa39d7" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"841ea92fa42c06769c5c52fe152d07837b8ff0048392caa5dd045054353d363b25439eb5885e96771dded4005f2baf42":"97511ae52590a0b64b75c37e10b89671880d2d6e8f90780ac27263dbc0e32d0824be5e80a88cf8fc3d4c607eb873c0322d09b9ca3498c4015c53ca6fee890093":"":"":"":"a8fb31362bd997adf4d9116e23dbaf10" +ctr_drbg_validate_reseed_between:"841ea92fa42c06769c5c52fe152d07837b8ff0048392caa5dd045054353d363b25439eb5885e96771dded4005f2baf42":"97511ae52590a0b64b75c37e10b89671880d2d6e8f90780ac27263dbc0e32d0824be5e80a88cf8fc3d4c607eb873c0322d09b9ca3498c4015c53ca6fee890093":"":"":"":"a8fb31362bd997adf4d9116e23dbaf10" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"55cd76fa5f004b97bb8e14170f79f52715d18c60f142b06d16e8e06c274798190a79c8b325163989d86323c03dbe0d68":"bafc0ba64669c9a36514bde6169034101f29e2a0a4b9a55c0aae7dff0c5aca2371b523e26dc44bf75493bdaa023d1555294178288b70f1ae72150d9f7265b4e6":"":"":"":"fa16dbdaf01b3c202426adabf61fa64a" +ctr_drbg_validate_reseed_between:"55cd76fa5f004b97bb8e14170f79f52715d18c60f142b06d16e8e06c274798190a79c8b325163989d86323c03dbe0d68":"bafc0ba64669c9a36514bde6169034101f29e2a0a4b9a55c0aae7dff0c5aca2371b523e26dc44bf75493bdaa023d1555294178288b70f1ae72150d9f7265b4e6":"":"":"":"fa16dbdaf01b3c202426adabf61fa64a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ff3f3098fa3d2b23b38ed982e7afb61d46b4848c878b9280f8e5ed6bd81176e76f0a2a85071a411829cf84421c22f23e":"92194e2c700fa724489683d0b6ddcf72c89b9c3f3ff584e802ae426be4908b1ade093bcf9baf7738b988dc0fde1739498a97c9610da853a7c83981c6a7b68096":"":"":"":"f85490426dc243ba09f9719bff73545a" +ctr_drbg_validate_reseed_between:"ff3f3098fa3d2b23b38ed982e7afb61d46b4848c878b9280f8e5ed6bd81176e76f0a2a85071a411829cf84421c22f23e":"92194e2c700fa724489683d0b6ddcf72c89b9c3f3ff584e802ae426be4908b1ade093bcf9baf7738b988dc0fde1739498a97c9610da853a7c83981c6a7b68096":"":"":"":"f85490426dc243ba09f9719bff73545a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"7242c1020a63770cccf6f8100970990232a9d11d61c9b0d38fe5e7a568a86252a66481212e5d53c868561298dd5bdeec":"7c3806a32ccf3252ac27a92a07209cd7000b160faa70b9024420b903587d1d77f002d3abe28b563d32ccc502b88f83bc5996f3dbbf0f57835839eadd94563b9d":"":"":"":"2232181f08c1569efaad1a82bcb5f3ba" +ctr_drbg_validate_reseed_between:"7242c1020a63770cccf6f8100970990232a9d11d61c9b0d38fe5e7a568a86252a66481212e5d53c868561298dd5bdeec":"7c3806a32ccf3252ac27a92a07209cd7000b160faa70b9024420b903587d1d77f002d3abe28b563d32ccc502b88f83bc5996f3dbbf0f57835839eadd94563b9d":"":"":"":"2232181f08c1569efaad1a82bcb5f3ba" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a2e445290fed8187df6d2a57e68385bb62d700cb8f140410766b53e69e6a0f2939bbfa7ce091525c9051f064e383a2e1":"fdae5f1ea253108fcb255d215a3ce1dc1d101acf89de4423b75a74619e95f3feaa35b5e0bec430b0ad9567df818989c36c77742129af335c90ceb6dd79c7d2c4":"":"":"":"3841e2d795b17cb9a2081d6016a1a71d" +ctr_drbg_validate_reseed_between:"a2e445290fed8187df6d2a57e68385bb62d700cb8f140410766b53e69e6a0f2939bbfa7ce091525c9051f064e383a2e1":"fdae5f1ea253108fcb255d215a3ce1dc1d101acf89de4423b75a74619e95f3feaa35b5e0bec430b0ad9567df818989c36c77742129af335c90ceb6dd79c7d2c4":"":"":"":"3841e2d795b17cb9a2081d6016a1a71d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"bc885454e385d911336dda9b7a609a6a7079a4a5a860fcd704161c34658bd98685bb03418b7f24f2ed9475eb8ceb232e":"77bef884a91126564b3214029ac6842d86e4c1fa283e33d6828d428377416f66947e39a4a6708e10bfdae8337a6f302420a6649fc109d0f094c18c1e9361375a":"":"":"":"ea20780ed280d8109f811a6a398c3e76" +ctr_drbg_validate_reseed_between:"bc885454e385d911336dda9b7a609a6a7079a4a5a860fcd704161c34658bd98685bb03418b7f24f2ed9475eb8ceb232e":"77bef884a91126564b3214029ac6842d86e4c1fa283e33d6828d428377416f66947e39a4a6708e10bfdae8337a6f302420a6649fc109d0f094c18c1e9361375a":"":"":"":"ea20780ed280d8109f811a6a398c3e76" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c1825cf00cdc2da93adb3e7a33c1f3a76c49166887883744ea2683ddca23f31900f25c434364c992a6d913f753a9c42a":"56940a6fc4823c9e42e8ffed63fc3cf46d0a2b305c236a511b0b5ec7005ecd8989bf2006ebe52ed55845f7cc25d3d0086cece95f0bff6fa7e17ddf474704abfe":"":"":"":"b037c7f0f85f4d7eaeeb17f4c8643a74" +ctr_drbg_validate_reseed_between:"c1825cf00cdc2da93adb3e7a33c1f3a76c49166887883744ea2683ddca23f31900f25c434364c992a6d913f753a9c42a":"56940a6fc4823c9e42e8ffed63fc3cf46d0a2b305c236a511b0b5ec7005ecd8989bf2006ebe52ed55845f7cc25d3d0086cece95f0bff6fa7e17ddf474704abfe":"":"":"":"b037c7f0f85f4d7eaeeb17f4c8643a74" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"19b83c0deea6463a3912d21ffc8d8041a5b30640352abc9652770cfca99dc53c9c09942ddd67b91f4da50a8615462ce4":"5d85c56d0d20ee39958a90f301d2f8bb136fa34d09b41a0c9375114a0df9c1dcdb2a62c4be398d9eaf2440949b806f0e5a977da608eeb652a41711d1e9b72655":"9c1db928b95c84cb674060a6d2f6b7a6a5d43e9ee967e9f821bf309ca5f8821f":"a3111cb57365c617df0b0bb3a1aada49ca789bc75903eeb21e42a7d3d0dd0825":"ce7f557c70676987d13aca60bc4585147efeed97be139871a1b29caa1e180af9":"4a49430277d64446e2fa75763eb79ec6" +ctr_drbg_validate_reseed_between:"19b83c0deea6463a3912d21ffc8d8041a5b30640352abc9652770cfca99dc53c9c09942ddd67b91f4da50a8615462ce4":"5d85c56d0d20ee39958a90f301d2f8bb136fa34d09b41a0c9375114a0df9c1dcdb2a62c4be398d9eaf2440949b806f0e5a977da608eeb652a41711d1e9b72655":"9c1db928b95c84cb674060a6d2f6b7a6a5d43e9ee967e9f821bf309ca5f8821f":"a3111cb57365c617df0b0bb3a1aada49ca789bc75903eeb21e42a7d3d0dd0825":"ce7f557c70676987d13aca60bc4585147efeed97be139871a1b29caa1e180af9":"4a49430277d64446e2fa75763eb79ec6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"239f21be6cda23e8660c8a5e04c79f6dad6f363ac6dcffd9228699ae43fbce5ac3c51645500cb3eae68f0b604dc4472c":"2975a099f7e6530e5576534c25171f39131d6bffb99259f7f2bbf7d77de9fb1e829052b54a9631a733113021692eba1097438347c6de82307a0c2bb308edf065":"d451a54584e6d1d634217379e7e60e67303e19dd4ba63b097899c7349a5a7433":"a33dc24c6a656eb26275415581d568b7c2424a9c5fb9e2944ca35ecbf641f713":"8dfccc62379af46844df136122b72a878d9d61b40ccaa029b09e6b9f0b4d0192":"005e91760d89ecb64b5fc3b0e222fca3" +ctr_drbg_validate_reseed_between:"239f21be6cda23e8660c8a5e04c79f6dad6f363ac6dcffd9228699ae43fbce5ac3c51645500cb3eae68f0b604dc4472c":"2975a099f7e6530e5576534c25171f39131d6bffb99259f7f2bbf7d77de9fb1e829052b54a9631a733113021692eba1097438347c6de82307a0c2bb308edf065":"d451a54584e6d1d634217379e7e60e67303e19dd4ba63b097899c7349a5a7433":"a33dc24c6a656eb26275415581d568b7c2424a9c5fb9e2944ca35ecbf641f713":"8dfccc62379af46844df136122b72a878d9d61b40ccaa029b09e6b9f0b4d0192":"005e91760d89ecb64b5fc3b0e222fca3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e326abbe1db3ead3738d2ca4d9f1d62080cd23ff3396f43a0af992bed2420cec6661dfaac83c3c4d83347ac840f7dc14":"37c94d11ed0e93b8199d43d6eb242165dddd12fe39c0bea4cdef6bcfeb5d17bb866f080a9daef128f685fb3bc59c945927fb0aa3e17068515c3c92fbdf04a228":"1ff41405dbb3b12b8ddc973069edc2d2801af0e0dc9bde2cdd35c5b2d4091509":"138b6d2eabef4b32174afb0156ad1df570cf6e5f6ebde5d19cc30daffd9ca4f2":"f27cf7422808c54c58fcdde1cece92f5342c7a10ac43ab3b2e53362b2272e3ad":"506d6fae6fff9f222e65ac86df61a832" +ctr_drbg_validate_reseed_between:"e326abbe1db3ead3738d2ca4d9f1d62080cd23ff3396f43a0af992bed2420cec6661dfaac83c3c4d83347ac840f7dc14":"37c94d11ed0e93b8199d43d6eb242165dddd12fe39c0bea4cdef6bcfeb5d17bb866f080a9daef128f685fb3bc59c945927fb0aa3e17068515c3c92fbdf04a228":"1ff41405dbb3b12b8ddc973069edc2d2801af0e0dc9bde2cdd35c5b2d4091509":"138b6d2eabef4b32174afb0156ad1df570cf6e5f6ebde5d19cc30daffd9ca4f2":"f27cf7422808c54c58fcdde1cece92f5342c7a10ac43ab3b2e53362b2272e3ad":"506d6fae6fff9f222e65ac86df61a832" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"cb0229d2bb72d910b0169e8f93318905aef8dd93ed91a2f8388545db32db3f2489e7988b50de64c49a9f7feb5abe8630":"514ec8c02439290853434e75e3d0bd159eacd5ac13b8f202cfd5c36cdc0fe99b53a1b7a1619e94eb661ac825a48ea5ef8bb9120dd6efc351e39eb7cc5223f637":"a6ed69c9216c551793107f1bdaa04944f6d76fe4474f64bb08b0ebc10a18f337":"e0bc1cc56fdfeef686e0c7ec359e2e8bd48d76c8643c40d12325328170bbf702":"87c5b23aa3c100ff9e368fc47534ff8fa2f9e2bfd3599519ee6f60164485cf6d":"bd419968f636e374268ccdd62403f79c" +ctr_drbg_validate_reseed_between:"cb0229d2bb72d910b0169e8f93318905aef8dd93ed91a2f8388545db32db3f2489e7988b50de64c49a9f7feb5abe8630":"514ec8c02439290853434e75e3d0bd159eacd5ac13b8f202cfd5c36cdc0fe99b53a1b7a1619e94eb661ac825a48ea5ef8bb9120dd6efc351e39eb7cc5223f637":"a6ed69c9216c551793107f1bdaa04944f6d76fe4474f64bb08b0ebc10a18f337":"e0bc1cc56fdfeef686e0c7ec359e2e8bd48d76c8643c40d12325328170bbf702":"87c5b23aa3c100ff9e368fc47534ff8fa2f9e2bfd3599519ee6f60164485cf6d":"bd419968f636e374268ccdd62403f79c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"bdd156ef3c4e09b77fe8781c446eac55b562e4ee1b7d15515a966882d4c7fadb0fc7b37554ba03908838db40499ded5b":"9facd9f4587819acb358e4936d9f44b67ddf82616e79a44ffd6a2510f652f6b9cebc1424b5c642362b19f63c615f49686df66a8f80ddffb56ce0c0d8540150fb":"35ea316fe302786f626e3831530622b62eb33a3608d4af3384ecfcbd198f3f05":"8d4fae22290b6ef8618ded1c3412e85fab7b8d17fb9cbd09dbc87f97279cc72d":"2f54928372e4ce447201427a3ae05769ae1c54b2e83bdc86d380a90b07f2890c":"8045e8da88b1bc126785c8a771db5354" +ctr_drbg_validate_reseed_between:"bdd156ef3c4e09b77fe8781c446eac55b562e4ee1b7d15515a966882d4c7fadb0fc7b37554ba03908838db40499ded5b":"9facd9f4587819acb358e4936d9f44b67ddf82616e79a44ffd6a2510f652f6b9cebc1424b5c642362b19f63c615f49686df66a8f80ddffb56ce0c0d8540150fb":"35ea316fe302786f626e3831530622b62eb33a3608d4af3384ecfcbd198f3f05":"8d4fae22290b6ef8618ded1c3412e85fab7b8d17fb9cbd09dbc87f97279cc72d":"2f54928372e4ce447201427a3ae05769ae1c54b2e83bdc86d380a90b07f2890c":"8045e8da88b1bc126785c8a771db5354" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"154876298a1b63334624b367da984eb31d7260abe79ced41de35ba68a716233a5df0937b90f89dde7fd55a9693c9031f":"36895f574e9e9d08e6c885d305eb4764c1e5689d1f99c2462b3ebdf659e8ce43818dfc886ec797843bfee361b554cd5f969b0c7b0381b53f4afc1bcadbf7eb1c":"c3a46105c50a167a5b0391053f3814a06c90cea2c1fa9329d97fdbc62887ff6d":"54c7d66c65dbddb4665981bff0f503de37d724362aeb67abce6a870fd6a7398a":"58204ca953cbd46dd6c8870b358cba77c436870db49bcd3e2f92697bb580b460":"cd903c0f11ea701214f91715cfec11a3" +ctr_drbg_validate_reseed_between:"154876298a1b63334624b367da984eb31d7260abe79ced41de35ba68a716233a5df0937b90f89dde7fd55a9693c9031f":"36895f574e9e9d08e6c885d305eb4764c1e5689d1f99c2462b3ebdf659e8ce43818dfc886ec797843bfee361b554cd5f969b0c7b0381b53f4afc1bcadbf7eb1c":"c3a46105c50a167a5b0391053f3814a06c90cea2c1fa9329d97fdbc62887ff6d":"54c7d66c65dbddb4665981bff0f503de37d724362aeb67abce6a870fd6a7398a":"58204ca953cbd46dd6c8870b358cba77c436870db49bcd3e2f92697bb580b460":"cd903c0f11ea701214f91715cfec11a3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"94e273fde1e699f84aeef343eb0277c50d169bb5496575301021a2be50df6a555d1422ea88e0e4d905158e93fd8d0089":"1cd97b6e6e7f19401e409aea7b3ec33a8faefd71402b8f34a73c1cb1af215e0e87debe68bce590d41c1f90c6ad9db3d30b3901862e076d765ffdf58776e5fb7e":"6ee75e9f9aee6ac93e20f742f20427e5eb9b4ad2ed06fbba8c7b7870a96941ac":"0ba60399893ede284372bc4e0a37702a23b16aa8e5fe70ea95429af87ff291aa":"94bd2b51c32d29cd14e2123221e45ec0cf1f38766fb6bb0716856d0138f6fa39":"831793686abd406f7b385cd59e497b18" +ctr_drbg_validate_reseed_between:"94e273fde1e699f84aeef343eb0277c50d169bb5496575301021a2be50df6a555d1422ea88e0e4d905158e93fd8d0089":"1cd97b6e6e7f19401e409aea7b3ec33a8faefd71402b8f34a73c1cb1af215e0e87debe68bce590d41c1f90c6ad9db3d30b3901862e076d765ffdf58776e5fb7e":"6ee75e9f9aee6ac93e20f742f20427e5eb9b4ad2ed06fbba8c7b7870a96941ac":"0ba60399893ede284372bc4e0a37702a23b16aa8e5fe70ea95429af87ff291aa":"94bd2b51c32d29cd14e2123221e45ec0cf1f38766fb6bb0716856d0138f6fa39":"831793686abd406f7b385cd59e497b18" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"5a699113ebf98bff9cb780ce29747a61ba2d7581a5716065d018c89348d7c2ed3f5bba32442cd192c1e37b77b98f5791":"de6d2a3b6ad9af07058d3b1d1976cf61d49566b965eb4e9b74a4cad8e286e7a40b254b860e2e209a8cb4cff3a8e615b84f5ae7505957a758e266a4c3e915d251":"ed18c16a61ba5ecc0755f94c286390a6d46e6e26439dadd36c83ebdee42b4b4c":"7c4550d058b85580be2053fd9d933c87041c5c3f62a5b6b303259dafc90d9041":"ebebfcb9b4b3595e516939ca0688422bbdfc4b9f67b0d6619757cb315b7d7908":"1a5a496aa2268483444b3740c9cc4104" +ctr_drbg_validate_reseed_between:"5a699113ebf98bff9cb780ce29747a61ba2d7581a5716065d018c89348d7c2ed3f5bba32442cd192c1e37b77b98f5791":"de6d2a3b6ad9af07058d3b1d1976cf61d49566b965eb4e9b74a4cad8e286e7a40b254b860e2e209a8cb4cff3a8e615b84f5ae7505957a758e266a4c3e915d251":"ed18c16a61ba5ecc0755f94c286390a6d46e6e26439dadd36c83ebdee42b4b4c":"7c4550d058b85580be2053fd9d933c87041c5c3f62a5b6b303259dafc90d9041":"ebebfcb9b4b3595e516939ca0688422bbdfc4b9f67b0d6619757cb315b7d7908":"1a5a496aa2268483444b3740c9cc4104" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"42450f2689b87a3dd940f3b9e3b32d4654c725a24ddd2c22f006694321dacf1980b50f7ac0401626453ec836039bfdc9":"4765399ccbbf3d33433bb992ee29e4381f28d800b05431f1c5b3e949c5db72c582bfe8ba08db1575b866816cabbe5e1d31d8a870ceed49fb75676c97020d1f22":"6ee5a7613c25ecec263a2fd2288948b2df9a05d50040c4031b0653878fdb067f":"68a1038481be7412d6a7c8474d4b2a2535c9b55ea301ee800d5a846127d345cb":"7a1915cf78e6da2dc7840cba40390d668d07571608b77857d2224c4531c17bb8":"80a6c622e64495f9a391f5a8a9c76818" +ctr_drbg_validate_reseed_between:"42450f2689b87a3dd940f3b9e3b32d4654c725a24ddd2c22f006694321dacf1980b50f7ac0401626453ec836039bfdc9":"4765399ccbbf3d33433bb992ee29e4381f28d800b05431f1c5b3e949c5db72c582bfe8ba08db1575b866816cabbe5e1d31d8a870ceed49fb75676c97020d1f22":"6ee5a7613c25ecec263a2fd2288948b2df9a05d50040c4031b0653878fdb067f":"68a1038481be7412d6a7c8474d4b2a2535c9b55ea301ee800d5a846127d345cb":"7a1915cf78e6da2dc7840cba40390d668d07571608b77857d2224c4531c17bb8":"80a6c622e64495f9a391f5a8a9c76818" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"873869e194201b822b140bdd7797dd1ed408f2190b759c068b7019e6707f60751e101d3465c4ec57dbf9d1ea7597fa44":"d2f92706ca3fb9ced8183c74704440d7eedee1542c2e812f65afc83f4b62dadf1c51fa68f8d5f457a893211c8afc82c93e6a1e15822eff0d4ada6efd25d271a0":"8d0393d2a1ae8930ea88773adfa47b49060f0bf2d3def2acc57786bfbd1e2d6f":"5bcf5ff4fbd9eaabf8bf82ec7c59b043fd64b0025ad1ab2b384e399b9e13147a":"6e2d05e286c90502a3abf2ee72ab7ffb520ce5facfb27e095787a09a412abec3":"e1ceda71b8feb4b0d14d35bbb57a79a2" +ctr_drbg_validate_reseed_between:"873869e194201b822b140bdd7797dd1ed408f2190b759c068b7019e6707f60751e101d3465c4ec57dbf9d1ea7597fa44":"d2f92706ca3fb9ced8183c74704440d7eedee1542c2e812f65afc83f4b62dadf1c51fa68f8d5f457a893211c8afc82c93e6a1e15822eff0d4ada6efd25d271a0":"8d0393d2a1ae8930ea88773adfa47b49060f0bf2d3def2acc57786bfbd1e2d6f":"5bcf5ff4fbd9eaabf8bf82ec7c59b043fd64b0025ad1ab2b384e399b9e13147a":"6e2d05e286c90502a3abf2ee72ab7ffb520ce5facfb27e095787a09a412abec3":"e1ceda71b8feb4b0d14d35bbb57a79a2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1fecb5fe87c2a208b4f193e9c3ff810954c554150d544baea1685fb4774320315d5cb651be493ef120ef6966e3e7518c":"34bc292809674352ffb60786dca59ec799188aa401b366a48cdeddf37c12ee4c666f8fb3a0d53df4cd7191166d50ff01d992f94cd92da7a385ffe5795b197ced":"38249fed34a907768eac49267c2c613a65154eec5b73b541d7d7b314b5080061":"115be9cb914b50480fffe078d8170870b56129a0a74271dee063f8b2049e1be3":"69fa6faf7223f5bb1b55f35a544f78181579b1745990053357916fe507e51db6":"60cc92d3ba3ff0715f5627182334ed1b" +ctr_drbg_validate_reseed_between:"1fecb5fe87c2a208b4f193e9c3ff810954c554150d544baea1685fb4774320315d5cb651be493ef120ef6966e3e7518c":"34bc292809674352ffb60786dca59ec799188aa401b366a48cdeddf37c12ee4c666f8fb3a0d53df4cd7191166d50ff01d992f94cd92da7a385ffe5795b197ced":"38249fed34a907768eac49267c2c613a65154eec5b73b541d7d7b314b5080061":"115be9cb914b50480fffe078d8170870b56129a0a74271dee063f8b2049e1be3":"69fa6faf7223f5bb1b55f35a544f78181579b1745990053357916fe507e51db6":"60cc92d3ba3ff0715f5627182334ed1b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"4d283eb5ecd85a1613c975e24832770643613c9a5aee0d8649bc0d68c89cf1ea6ec3a1a22eefd9e212d602c338d64c6e":"4aa6917a5c9f370590d70536fdd89c916fec5e5bcbade8c6a6cfcf5b232c98a6b3e6b79a2dfb0778fbc3f1da7b06044d7b0fa2c04ffc3b71324aca1ee19f936b":"05a7092a684ba7a7fbd33533f9be58a4140a3855d4c5f44a31d665a0720c1739":"557ef1bedc890d1543de6cfeb25642782683d77a46bc8aa0836b07157599c7c3":"e87e45073ff8e36c38b128cd2275a160e431787b5e81f6c2fd7a37909eb72ea5":"31ecfb1bcf3253ba5f71b185a66c7cff" +ctr_drbg_validate_reseed_between:"4d283eb5ecd85a1613c975e24832770643613c9a5aee0d8649bc0d68c89cf1ea6ec3a1a22eefd9e212d602c338d64c6e":"4aa6917a5c9f370590d70536fdd89c916fec5e5bcbade8c6a6cfcf5b232c98a6b3e6b79a2dfb0778fbc3f1da7b06044d7b0fa2c04ffc3b71324aca1ee19f936b":"05a7092a684ba7a7fbd33533f9be58a4140a3855d4c5f44a31d665a0720c1739":"557ef1bedc890d1543de6cfeb25642782683d77a46bc8aa0836b07157599c7c3":"e87e45073ff8e36c38b128cd2275a160e431787b5e81f6c2fd7a37909eb72ea5":"31ecfb1bcf3253ba5f71b185a66c7cff" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a6f488104a6c03e354d5d1805c62dcd3016322d218747fa83f9199e20f6ab1cfbc2b889536bda1187f59b7294d557ff2":"22f8ad57a2dfa8010e2865ad6263823652917b84dfea61f639efdb0fdbb35c6341ca7721095d69686212dffe78410c0d0db94f04756d52e7d76165d5a1d516d9":"fb9951d563f7aa88db545874b1a3049c5f79774d486e7a28aed1ed75f59224a5":"b1ea7c6b53e79e4e947e63086dee32dcc17bc4f27fba6142f8215ec081cdd5c9":"0d12cc0a39bfbf87194e4070f6b54caaabbe48fa192b96cfed2a794d95fa299d":"62a1c5678e6e8fc738d375e2ca48751f" +ctr_drbg_validate_reseed_between:"a6f488104a6c03e354d5d1805c62dcd3016322d218747fa83f9199e20f6ab1cfbc2b889536bda1187f59b7294d557ff2":"22f8ad57a2dfa8010e2865ad6263823652917b84dfea61f639efdb0fdbb35c6341ca7721095d69686212dffe78410c0d0db94f04756d52e7d76165d5a1d516d9":"fb9951d563f7aa88db545874b1a3049c5f79774d486e7a28aed1ed75f59224a5":"b1ea7c6b53e79e4e947e63086dee32dcc17bc4f27fba6142f8215ec081cdd5c9":"0d12cc0a39bfbf87194e4070f6b54caaabbe48fa192b96cfed2a794d95fa299d":"62a1c5678e6e8fc738d375e2ca48751f" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9d67e017e0abdd7c079bc0354f33dab696ad64146802f06d6cefd9cdefbf55b197f5899e5efaa269cc0432c87648ce18":"d8be0ec1119ff959c32c9cf29914e3f7bf2b01bdbf806c2d9ba119ae2a2cfb565871762b02ee7bf68f1d280532fd7ae7368517f6f751739b228d23df2f207f35":"74a5e24477e8759bedfbaa196f398777108392efb8c64c65c0c9ecd6cd3b5f04":"70cbc6cfe1d6ab4bc30d66fa162d5d4b3029e4b1b9d759f3eae17fb508e91a46":"d3c538e042f0eb796b4af9b4e65cd850425c72e2c896fcea741c17172faf27d9":"559a5e04b75cec250aac2433176a725e" +ctr_drbg_validate_reseed_between:"9d67e017e0abdd7c079bc0354f33dab696ad64146802f06d6cefd9cdefbf55b197f5899e5efaa269cc0432c87648ce18":"d8be0ec1119ff959c32c9cf29914e3f7bf2b01bdbf806c2d9ba119ae2a2cfb565871762b02ee7bf68f1d280532fd7ae7368517f6f751739b228d23df2f207f35":"74a5e24477e8759bedfbaa196f398777108392efb8c64c65c0c9ecd6cd3b5f04":"70cbc6cfe1d6ab4bc30d66fa162d5d4b3029e4b1b9d759f3eae17fb508e91a46":"d3c538e042f0eb796b4af9b4e65cd850425c72e2c896fcea741c17172faf27d9":"559a5e04b75cec250aac2433176a725e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"10914608a6d373a26c53ab83014283b678d73dfea65b4a3540af17f2fafa3b3cf698925b423edb9f946b906f43110795":"9ded87d289412dfda8935e5b08ec66b68abd1bae1fc5363e4341f58db954f1f9bc4b681c0d930ba080f85f8fd04c173cb2b77723ce67692efa7ade48b82b6926":"225159b4c679094f277516b2335b1e8b7d0a7ea33fd56822906d481fe412586d":"4967cd401cd466aba0be5f55615ca0d9fb8adbde5cb4e6ae3a0159fcd6c36bf0":"fec14f325b8b458ddf3e7f2e10938f4c2d04c8d9885bb5b9277bdc229c70b354":"1cd5c0bdeb87c79235bead416c565d32" +ctr_drbg_validate_reseed_between:"10914608a6d373a26c53ab83014283b678d73dfea65b4a3540af17f2fafa3b3cf698925b423edb9f946b906f43110795":"9ded87d289412dfda8935e5b08ec66b68abd1bae1fc5363e4341f58db954f1f9bc4b681c0d930ba080f85f8fd04c173cb2b77723ce67692efa7ade48b82b6926":"225159b4c679094f277516b2335b1e8b7d0a7ea33fd56822906d481fe412586d":"4967cd401cd466aba0be5f55615ca0d9fb8adbde5cb4e6ae3a0159fcd6c36bf0":"fec14f325b8b458ddf3e7f2e10938f4c2d04c8d9885bb5b9277bdc229c70b354":"1cd5c0bdeb87c79235bead416c565d32" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b023f6a6f73d4749b36eb54867994432":"2462ad760ddbca4e013688bf61381f190c7b2de57cbeeec81d6ab7b6f067b75adc3545887f8d2aa5d9b9dfcbfa425d610faa9c247eb5d71145f302918e908ae5":"":"":"":"c0620c68515a4618e572db6e4c14473d" +ctr_drbg_validate_reseed_between:"b023f6a6f73d4749b36eb54867994432":"2462ad760ddbca4e013688bf61381f190c7b2de57cbeeec81d6ab7b6f067b75adc3545887f8d2aa5d9b9dfcbfa425d610faa9c247eb5d71145f302918e908ae5":"":"":"":"c0620c68515a4618e572db6e4c14473d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"7e0fcd953c1c8bb8d03d7a0e918fb59d":"56b2e11d5c2d87d2c9c90c285e0041beb4594a6efdd577580095612e50cf47c0b76208337e1e18453082d725629667d86226ab22944bbfb40c38b7986e489adb":"":"":"":"7194eee0d333fa5282dc44db964ecf5b" +ctr_drbg_validate_reseed_between:"7e0fcd953c1c8bb8d03d7a0e918fb59d":"56b2e11d5c2d87d2c9c90c285e0041beb4594a6efdd577580095612e50cf47c0b76208337e1e18453082d725629667d86226ab22944bbfb40c38b7986e489adb":"":"":"":"7194eee0d333fa5282dc44db964ecf5b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0130217d4a3945402ed99d7b8504fe4b":"28e592fd9db72b40ae4888078aedde260f6de4f0472a7601258e694d7bb6af6810ff4eabdffb332932765fa1d66650fb78cc2be484c0ba803eb9a2502020e865":"":"":"":"4652f0545385fdbe02d05aec21668608" +ctr_drbg_validate_reseed_between:"0130217d4a3945402ed99d7b8504fe4b":"28e592fd9db72b40ae4888078aedde260f6de4f0472a7601258e694d7bb6af6810ff4eabdffb332932765fa1d66650fb78cc2be484c0ba803eb9a2502020e865":"":"":"":"4652f0545385fdbe02d05aec21668608" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"07854447e33521d2d997d90c0887f42d":"c561ab6acfbfb98879982ac7add92b80471e0154b77ccc9fd98e7c2013c411e8075948e97ab4db7505797a99d456e54e6585042efeff7e3970e399ea0d27537c":"":"":"":"1a14a810c11b4f0af23c6467c47bbde0" +ctr_drbg_validate_reseed_between:"07854447e33521d2d997d90c0887f42d":"c561ab6acfbfb98879982ac7add92b80471e0154b77ccc9fd98e7c2013c411e8075948e97ab4db7505797a99d456e54e6585042efeff7e3970e399ea0d27537c":"":"":"":"1a14a810c11b4f0af23c6467c47bbde0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"68a8ec01581d6066391f3e5977465026":"747c7e9aace6d4f840c7b5261e0af796c516477421d52850a7072a0ab2c768fcc80c9ba8d18b228e77a7f6131c788a76515fe31aef4ed67376568231a4700fac":"":"":"":"a5723c43743442fae3637bb553891aeb" +ctr_drbg_validate_reseed_between:"68a8ec01581d6066391f3e5977465026":"747c7e9aace6d4f840c7b5261e0af796c516477421d52850a7072a0ab2c768fcc80c9ba8d18b228e77a7f6131c788a76515fe31aef4ed67376568231a4700fac":"":"":"":"a5723c43743442fae3637bb553891aeb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1459038c60b70bae7af0da6cfab707a2":"9f7d839310846bd452827a185539c0eb0f106acc7bc4de80d3521a970b23483d57826b1484d329a2d1c2ecfeaf8eeffbaa6e1a305e3f1e47b96ad48a711ad1aa":"":"":"":"5fcd6bf108fe68b85f61f85c0556f5c0" +ctr_drbg_validate_reseed_between:"1459038c60b70bae7af0da6cfab707a2":"9f7d839310846bd452827a185539c0eb0f106acc7bc4de80d3521a970b23483d57826b1484d329a2d1c2ecfeaf8eeffbaa6e1a305e3f1e47b96ad48a711ad1aa":"":"":"":"5fcd6bf108fe68b85f61f85c0556f5c0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a3357db173df98da4dd02ee24ce5c303":"f1ce08587ac0338b4d0b8e075b42b6501e77758b30087de028a8622fb7abd7f65e3b4f802d1a472dedb9c1a6dc9263c65918d8b7fafd0ae7e9c39e2e8684af3f":"":"":"":"8a5fa11d8e78fbf1ca4e4ca3e1ae82b8" +ctr_drbg_validate_reseed_between:"a3357db173df98da4dd02ee24ce5c303":"f1ce08587ac0338b4d0b8e075b42b6501e77758b30087de028a8622fb7abd7f65e3b4f802d1a472dedb9c1a6dc9263c65918d8b7fafd0ae7e9c39e2e8684af3f":"":"":"":"8a5fa11d8e78fbf1ca4e4ca3e1ae82b8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"212f4c80c7e9287c8d25e3b965f91a3c":"bf1d715b3f56c433827c9cb429bee5ca61c80a8d9b2fd4498e1c86ce703637f8f7f34056ab0039e0baa63320df0ec61de60354f2ece06356d9be3c6d1cdcc4cf":"":"":"":"04ac2f969e828f375b03ee16317e8572" +ctr_drbg_validate_reseed_between:"212f4c80c7e9287c8d25e3b965f91a3c":"bf1d715b3f56c433827c9cb429bee5ca61c80a8d9b2fd4498e1c86ce703637f8f7f34056ab0039e0baa63320df0ec61de60354f2ece06356d9be3c6d1cdcc4cf":"":"":"":"04ac2f969e828f375b03ee16317e8572" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"46e85752e0af82fc63932950120e4b5d":"ae4316424fa765179404188eb8839ce84ad8db92cb12f39089a93a2dbdc371e2fdbef1ad080eb354eecdda3a10ea66ef647aa095afa1786c01bd1c9f70d8da4f":"":"":"":"de576284d8ad36b31bd4f8f3da633e36" +ctr_drbg_validate_reseed_between:"46e85752e0af82fc63932950120e4b5d":"ae4316424fa765179404188eb8839ce84ad8db92cb12f39089a93a2dbdc371e2fdbef1ad080eb354eecdda3a10ea66ef647aa095afa1786c01bd1c9f70d8da4f":"":"":"":"de576284d8ad36b31bd4f8f3da633e36" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ec2459b1dd7f50df63e14e40aa4a4e66":"b964a24bf98264327c0b9e2e1c99ed1b35f534be801c996f318bc2074ed2500ba8488c4feb442b507c3220523c0041c9543133379365e65e092850a5e3f96cc9":"":"":"":"4d466e2f388aae40d1b31ce1f8ddc5e8" +ctr_drbg_validate_reseed_between:"ec2459b1dd7f50df63e14e40aa4a4e66":"b964a24bf98264327c0b9e2e1c99ed1b35f534be801c996f318bc2074ed2500ba8488c4feb442b507c3220523c0041c9543133379365e65e092850a5e3f96cc9":"":"":"":"4d466e2f388aae40d1b31ce1f8ddc5e8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"acf480d54f4c66d611519b72f2c0dca6":"d5b3277cf8badf6be86af27dd36f23ffc580847c5fcb56c4d8a42339336f185c38ffb86f4d8aa7646c1aaed6c2b0c7ae7e4d435f481d62bb01e632f6bbb2abf9":"":"":"":"746aaa5423ef77ea6b1eda47410262dd" +ctr_drbg_validate_reseed_between:"acf480d54f4c66d611519b72f2c0dca6":"d5b3277cf8badf6be86af27dd36f23ffc580847c5fcb56c4d8a42339336f185c38ffb86f4d8aa7646c1aaed6c2b0c7ae7e4d435f481d62bb01e632f6bbb2abf9":"":"":"":"746aaa5423ef77ea6b1eda47410262dd" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"edb80fddc595b234e3c5c03b2be3d721":"94aad8c772201435543efd9013c9f5f022038db6864e9ed4141ea75beb236844da6e6a17109262bc80f528427b37d9da6df03c7dd25be233774384a7f53197ea":"":"":"":"511927f10f800445b705ea3cfe6ec823" +ctr_drbg_validate_reseed_between:"edb80fddc595b234e3c5c03b2be3d721":"94aad8c772201435543efd9013c9f5f022038db6864e9ed4141ea75beb236844da6e6a17109262bc80f528427b37d9da6df03c7dd25be233774384a7f53197ea":"":"":"":"511927f10f800445b705ea3cfe6ec823" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c7790c9888b0e731ca6ccd60c32bb98a":"967050c11050a6d99a5da428d1f0fc8068b29ba4c66965addbfd31b745cb07d2439d268ab32a5fa2b1934bf277ff586506a941768468905ed980537d8baa1d07":"":"":"":"978493f0cece6f94d21863a519e06dbe" +ctr_drbg_validate_reseed_between:"c7790c9888b0e731ca6ccd60c32bb98a":"967050c11050a6d99a5da428d1f0fc8068b29ba4c66965addbfd31b745cb07d2439d268ab32a5fa2b1934bf277ff586506a941768468905ed980537d8baa1d07":"":"":"":"978493f0cece6f94d21863a519e06dbe" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"58c75625771df61c48a82590eeed3378":"be3120e8515a98701b4b2fb0667de2bad3f32bcbf10fb9b820956f9aa7ffa1bbbafb70002a9c7fdd1cf7e76a735261798dc60a1163919d58e39ef0c38b54b27b":"":"":"":"90f5c486e7efe932258610e744506487" +ctr_drbg_validate_reseed_between:"58c75625771df61c48a82590eeed3378":"be3120e8515a98701b4b2fb0667de2bad3f32bcbf10fb9b820956f9aa7ffa1bbbafb70002a9c7fdd1cf7e76a735261798dc60a1163919d58e39ef0c38b54b27b":"":"":"":"90f5c486e7efe932258610e744506487" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"d3f64c11aa21bb2d12278847547fb11b":"855c0e3a7567730b11e197c136e5c22b1dc7271d4dbe04bcdfd2fc0ef806b3c05b4264ee6c60d526506622ebf6130738dba4bf35c13ce33db19487312ee691fe":"":"":"":"33ed7089ebae738c6a7e6e2390d573e4" +ctr_drbg_validate_reseed_between:"d3f64c11aa21bb2d12278847547fb11b":"855c0e3a7567730b11e197c136e5c22b1dc7271d4dbe04bcdfd2fc0ef806b3c05b4264ee6c60d526506622ebf6130738dba4bf35c13ce33db19487312ee691fe":"":"":"":"33ed7089ebae738c6a7e6e2390d573e4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"132ad1c40afb066620f004f08409c59e":"2e5beadd89b663b3903d3a63c3ab5605bfb1a0045a42430e0220243c51a69f7ff7678c2f8edb7bb4a29b646f3edfaca2463f9defd342da87d22b1b8fdb012fd5":"150deb841d1a4d90e66e85b036d9f5a7efca726b907ae3e8f05e1d1338cdfd32":"fb199beeeaf3939be2a5f9e6ba22f97cdd2c7576e81eccc686facbdf8bb4f2aa":"4293341721f57e4548ce8c003531d38622446c8825904e1b868dcddc626c5164":"66d8f3bfb78186b57136ec2c1602e1ef" +ctr_drbg_validate_reseed_between:"132ad1c40afb066620f004f08409c59e":"2e5beadd89b663b3903d3a63c3ab5605bfb1a0045a42430e0220243c51a69f7ff7678c2f8edb7bb4a29b646f3edfaca2463f9defd342da87d22b1b8fdb012fd5":"150deb841d1a4d90e66e85b036d9f5a7efca726b907ae3e8f05e1d1338cdfd32":"fb199beeeaf3939be2a5f9e6ba22f97cdd2c7576e81eccc686facbdf8bb4f2aa":"4293341721f57e4548ce8c003531d38622446c8825904e1b868dcddc626c5164":"66d8f3bfb78186b57136ec2c1602e1ef" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"1c1502ca97c109399a72a77c8d6cc22b":"1d33b1b257a3ae1210fa2099307916a73dd92270769697ea2d7901f56865e3cae1be94b5024d0da3880bce06f0b31231c5a889f8ba3d92a20844b61009db672d":"23eede46eff4a04b08dcc2133e4537b332351f8469630f11b0c8853fb762a4bc":"6fd9f9da108e68aea9d1cecd81c49bcd0e7bedb348890f2248cb31c4277369f7":"76bcc11bd952123f78dd2ba60dd932d49203e418bb832d60b45c083e1e129834":"a1eee46001616f2bf87729895da0d0d1" +ctr_drbg_validate_reseed_between:"1c1502ca97c109399a72a77c8d6cc22b":"1d33b1b257a3ae1210fa2099307916a73dd92270769697ea2d7901f56865e3cae1be94b5024d0da3880bce06f0b31231c5a889f8ba3d92a20844b61009db672d":"23eede46eff4a04b08dcc2133e4537b332351f8469630f11b0c8853fb762a4bc":"6fd9f9da108e68aea9d1cecd81c49bcd0e7bedb348890f2248cb31c4277369f7":"76bcc11bd952123f78dd2ba60dd932d49203e418bb832d60b45c083e1e129834":"a1eee46001616f2bf87729895da0d0d1" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c79c0a1db75e83af258cdf9ead81264d":"5e8cc0fdadc170ed0f5e12f79a6b9e585f9d7c2926c163686a6a724495d88fabcec940d752545cae63f1792dcb966a7325f61997ba8883559ad6f6f8fc09898a":"a2cf6c1c9e4489f504e17f385f08aa82775aa2b0a84abd0b7ee3c6b393d7fd50":"c7529b874e07d4b876196786d510cc038c9e1ab93c461df2474eba484ae6876f":"63c6e7f3548529386c9f47c5aece52ce8454da5db9a807a1b960f7730a61582b":"43b7931e0b3b3769ef8972d0026896a3" +ctr_drbg_validate_reseed_between:"c79c0a1db75e83af258cdf9ead81264d":"5e8cc0fdadc170ed0f5e12f79a6b9e585f9d7c2926c163686a6a724495d88fabcec940d752545cae63f1792dcb966a7325f61997ba8883559ad6f6f8fc09898a":"a2cf6c1c9e4489f504e17f385f08aa82775aa2b0a84abd0b7ee3c6b393d7fd50":"c7529b874e07d4b876196786d510cc038c9e1ab93c461df2474eba484ae6876f":"63c6e7f3548529386c9f47c5aece52ce8454da5db9a807a1b960f7730a61582b":"43b7931e0b3b3769ef8972d0026896a3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"b44d1dd914e88840bc65a94ee199b3ac":"c3dae1863d323cc78f43ccb3f632fde29130e6b23b843ff5a8d79fddc3c1f92b55cd3dcaf7848d40d189c0de7790bebb889e01be05980dcdf30d2b3333426c50":"41e2fce9b48642a1b9bd1695314adcdd38e1a8afe4891e633c5088c6753438a2":"1eb3f8bbacb0c6b901718bfd7eba29f6f87e1fe056ad442d6d38c1351a684e1f":"85570db773f3f5202967376f91a0a9c09c89cd4eddd58cdc6210335fd5e7acef":"bd53036538d9ed904a49966b5428a2a8" +ctr_drbg_validate_reseed_between:"b44d1dd914e88840bc65a94ee199b3ac":"c3dae1863d323cc78f43ccb3f632fde29130e6b23b843ff5a8d79fddc3c1f92b55cd3dcaf7848d40d189c0de7790bebb889e01be05980dcdf30d2b3333426c50":"41e2fce9b48642a1b9bd1695314adcdd38e1a8afe4891e633c5088c6753438a2":"1eb3f8bbacb0c6b901718bfd7eba29f6f87e1fe056ad442d6d38c1351a684e1f":"85570db773f3f5202967376f91a0a9c09c89cd4eddd58cdc6210335fd5e7acef":"bd53036538d9ed904a49966b5428a2a8" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"5ef97f7af7df5cc6fa94f8428ec7be5c":"be67434ac4d77f0f50ec5bacc8112d1480bd9f20d6b4ea768d9b51bb69c1dffcd8c30e4412127644aaa6fc453e59fb633f6a5a8c2f69e40d1863e35d4d4c0227":"a64195b1e56cf97fd81e99fa1833d191faf62f534c874def4b8bed0ae7195ac7":"353cd3a8d9cd92bce82cd8d1cc198baa9276db478b0cfe50249e30c3042ee9db":"393ab4726f088fdfeb4df752e1b2aec678e41fa60781bc5e914296227d6b3dfc":"24bdc2cad5dccd2309425f11a24c8c39" +ctr_drbg_validate_reseed_between:"5ef97f7af7df5cc6fa94f8428ec7be5c":"be67434ac4d77f0f50ec5bacc8112d1480bd9f20d6b4ea768d9b51bb69c1dffcd8c30e4412127644aaa6fc453e59fb633f6a5a8c2f69e40d1863e35d4d4c0227":"a64195b1e56cf97fd81e99fa1833d191faf62f534c874def4b8bed0ae7195ac7":"353cd3a8d9cd92bce82cd8d1cc198baa9276db478b0cfe50249e30c3042ee9db":"393ab4726f088fdfeb4df752e1b2aec678e41fa60781bc5e914296227d6b3dfc":"24bdc2cad5dccd2309425f11a24c8c39" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"567130da4e7ecc4db0f035d7ecb11878":"cc070df6aa3623f74afd85b59d1bef2b1fcd9c8093362512ff109ebfe992ed75bd58b5ae1561d702b69065eb3cc0bd328ab698d4c6ca274e96d673309b5df5df":"42033054cefa1f20b3443f8ab7d9635ae8f047b833c8529245ba8b4aa07edba3":"72972fb947bff60df291888ddbfd91e698e0c1c26a346b95fc7c5dac596d0073":"af29b6a13602ba9c6b11f8dbdeb6cb52e211f9cd2fc96e63b61e3c1ec631d2ea":"b0849f8317e043271a3fc5f2eaaaaba2" +ctr_drbg_validate_reseed_between:"567130da4e7ecc4db0f035d7ecb11878":"cc070df6aa3623f74afd85b59d1bef2b1fcd9c8093362512ff109ebfe992ed75bd58b5ae1561d702b69065eb3cc0bd328ab698d4c6ca274e96d673309b5df5df":"42033054cefa1f20b3443f8ab7d9635ae8f047b833c8529245ba8b4aa07edba3":"72972fb947bff60df291888ddbfd91e698e0c1c26a346b95fc7c5dac596d0073":"af29b6a13602ba9c6b11f8dbdeb6cb52e211f9cd2fc96e63b61e3c1ec631d2ea":"b0849f8317e043271a3fc5f2eaaaaba2" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2c20ae36f1e74542ed8b0a177b8050aa":"c4bf7a39caf26dc3f61311f54ab3095493c626a988f5abee2826c67a4f4b4d6a02329c99a6bcb5e387fa160741c871acc2929c1cc07f2f0a7ce1619eb7da1ec4":"97c148dd10c3dd72b1eaaafbe37a9310ed15b23872e9f2b62d1feb91ea81ffe3":"23df0c30c68bf2eeb55d273a596f1f54ed916271595b906e4f7793b7a52f2573":"22f120fa09215105116919aaf8eebcb69eccd5da42feb737018a05268bf08e46":"b7c73b9ceea2e6ca0be6a3773cdd6886" +ctr_drbg_validate_reseed_between:"2c20ae36f1e74542ed8b0a177b8050aa":"c4bf7a39caf26dc3f61311f54ab3095493c626a988f5abee2826c67a4f4b4d6a02329c99a6bcb5e387fa160741c871acc2929c1cc07f2f0a7ce1619eb7da1ec4":"97c148dd10c3dd72b1eaaafbe37a9310ed15b23872e9f2b62d1feb91ea81ffe3":"23df0c30c68bf2eeb55d273a596f1f54ed916271595b906e4f7793b7a52f2573":"22f120fa09215105116919aaf8eebcb69eccd5da42feb737018a05268bf08e46":"b7c73b9ceea2e6ca0be6a3773cdd6886" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2076f9e116a2648e1e664b815b1b3674":"979b5aeafe555aeba152ed66e32e30e110df20ee1f227932a72acfb8218aec767941efaefa091c0128dad9b93b06b28fc76e01f275e8ce1c02f0eb567c914f89":"d12fb10b9fa6d2fd0f39cf76294cd44dcbfa80dca7c2f8537c75453d985ef551":"4228a99faf35547a58c1a4d842301dca374f1f13c6fd067b7c1b815863b73158":"a3a7d5f1e2dcf95a90715ec5fd32e7f88c38b0a452b6ccd1f107458db4f74fd6":"8a63a5002a3636b241f0bec14fd9c2ac" +ctr_drbg_validate_reseed_between:"2076f9e116a2648e1e664b815b1b3674":"979b5aeafe555aeba152ed66e32e30e110df20ee1f227932a72acfb8218aec767941efaefa091c0128dad9b93b06b28fc76e01f275e8ce1c02f0eb567c914f89":"d12fb10b9fa6d2fd0f39cf76294cd44dcbfa80dca7c2f8537c75453d985ef551":"4228a99faf35547a58c1a4d842301dca374f1f13c6fd067b7c1b815863b73158":"a3a7d5f1e2dcf95a90715ec5fd32e7f88c38b0a452b6ccd1f107458db4f74fd6":"8a63a5002a3636b241f0bec14fd9c2ac" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a71015cf06ddd0a6cd72fa014cf0aee6":"c810cb9db0f169dbc30fda85ccb6d4c40db68d429eeb3653070db7641fbbaba60ef0ff970eaf40887b7e154e2ecd5331de7004689ec604e69927da630a8dd7a7":"5f99f45d8770041703e5a14521c501904fd05ff3340835ac0c41b86442e4939c":"eb7efa6e46ab926ea04c87eb9ce454f5b10717bd9d85305f27d71bea1bc991b3":"cbc80c6171d098fc81023486d327efe2415a0f32e5fa6f6793ce1d0e98783258":"a353f6b350404f3f7b4fb724f84a948a" +ctr_drbg_validate_reseed_between:"a71015cf06ddd0a6cd72fa014cf0aee6":"c810cb9db0f169dbc30fda85ccb6d4c40db68d429eeb3653070db7641fbbaba60ef0ff970eaf40887b7e154e2ecd5331de7004689ec604e69927da630a8dd7a7":"5f99f45d8770041703e5a14521c501904fd05ff3340835ac0c41b86442e4939c":"eb7efa6e46ab926ea04c87eb9ce454f5b10717bd9d85305f27d71bea1bc991b3":"cbc80c6171d098fc81023486d327efe2415a0f32e5fa6f6793ce1d0e98783258":"a353f6b350404f3f7b4fb724f84a948a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"395931837614c322d8488ec6a2c4c919":"831fc8d63592b6ce358c08aeac39d67c3e48b4c2617735b6fe5e9fa44d7aee9d60f2fcf549db239d5bed9c608c94e8f8c23b32901442ac53442127377bdcf205":"eb261c737c0a17c8cb1ae055c143f701b74c96c852e4a76ca3ea045e7efdf5ee":"153276007b3843a897efbf022bd1bcabcf655c7eb8acef9baac710b339ecfd99":"a8a5cb17a2945e5b41ff370cc88ac498389b89b6cd82bb3bbde81c212f7c17d4":"537fc2b73183d2c0c106886937a6609c" +ctr_drbg_validate_reseed_between:"395931837614c322d8488ec6a2c4c919":"831fc8d63592b6ce358c08aeac39d67c3e48b4c2617735b6fe5e9fa44d7aee9d60f2fcf549db239d5bed9c608c94e8f8c23b32901442ac53442127377bdcf205":"eb261c737c0a17c8cb1ae055c143f701b74c96c852e4a76ca3ea045e7efdf5ee":"153276007b3843a897efbf022bd1bcabcf655c7eb8acef9baac710b339ecfd99":"a8a5cb17a2945e5b41ff370cc88ac498389b89b6cd82bb3bbde81c212f7c17d4":"537fc2b73183d2c0c106886937a6609c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9a1983859dd6c4cb602970d705952b2b":"68c5cf31f7959ffaa83af9dd55a75ec001befbf835e42a789ac42d39d96128eb6d9b3f07ced15e57e39760390c065fb4425c19ef7184635c18e5ed28256937e1":"e06497a181a5362980579c91d263f630ad4794519a64261ede8b36cf0ac5e713":"714e4fc52aea763e23a1f5b18949ab8fd949f1768560559bccb49d78d51dfab5":"6b6b7f65fd472ad428df2bbb86b85067d0a6f89d9233eea92f5189a9163d0419":"e32af8a81c59dc44540ed8845b447fdb" +ctr_drbg_validate_reseed_between:"9a1983859dd6c4cb602970d705952b2b":"68c5cf31f7959ffaa83af9dd55a75ec001befbf835e42a789ac42d39d96128eb6d9b3f07ced15e57e39760390c065fb4425c19ef7184635c18e5ed28256937e1":"e06497a181a5362980579c91d263f630ad4794519a64261ede8b36cf0ac5e713":"714e4fc52aea763e23a1f5b18949ab8fd949f1768560559bccb49d78d51dfab5":"6b6b7f65fd472ad428df2bbb86b85067d0a6f89d9233eea92f5189a9163d0419":"e32af8a81c59dc44540ed8845b447fdb" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"230576e9518fb9a6a8391a84919b0d97":"6193f0e7b33ce19fde922aec9c93f1271ebcdd296d9c8c77029b59afa2064e3159088e07e91c14a4a3dc23b6005dd8ef1425d7d2ae8282a5b30b7498b6754234":"ffaca30a256d18836a0d49bbaad599a28fc7821d71aa91b97158a492d84a6280":"a3da13852d0717afed7c58c52530d2ae047b645a5e7aa8cfabc11478444151ac":"e15fdaeea31c95555fc509d2a266abf78d86ca11aa2f87ce1041142eb9f82bae":"7906f8da1e140345c191dbc2de5ead1b" +ctr_drbg_validate_reseed_between:"230576e9518fb9a6a8391a84919b0d97":"6193f0e7b33ce19fde922aec9c93f1271ebcdd296d9c8c77029b59afa2064e3159088e07e91c14a4a3dc23b6005dd8ef1425d7d2ae8282a5b30b7498b6754234":"ffaca30a256d18836a0d49bbaad599a28fc7821d71aa91b97158a492d84a6280":"a3da13852d0717afed7c58c52530d2ae047b645a5e7aa8cfabc11478444151ac":"e15fdaeea31c95555fc509d2a266abf78d86ca11aa2f87ce1041142eb9f82bae":"7906f8da1e140345c191dbc2de5ead1b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e08a3a33adb4399a9be72fead224155f":"cfbe8b1464b00bb9e0d18b04d2040ed9bd822741188812b98a440fbc66ff018ddf6c0ea20c62d01b8237bc7c3da9e3f9fb874fca79a360b4f0f967d8d02083ba":"56f975849197e2eae5a2e6fb445a93c1fadf57280ac27e27c7cbea2cb00c10cc":"0a6d9e2d6e181addab0ea1ee89c65ce557e10fb8e8d43a24cdd27033d3fff507":"823e9400a9f563cc1fa5daf10f4ff1ab8affa18d8371f9cd0e067fcddce8caed":"5ded298f98cffb2e7f5ea97bd50c7e3e" +ctr_drbg_validate_reseed_between:"e08a3a33adb4399a9be72fead224155f":"cfbe8b1464b00bb9e0d18b04d2040ed9bd822741188812b98a440fbc66ff018ddf6c0ea20c62d01b8237bc7c3da9e3f9fb874fca79a360b4f0f967d8d02083ba":"56f975849197e2eae5a2e6fb445a93c1fadf57280ac27e27c7cbea2cb00c10cc":"0a6d9e2d6e181addab0ea1ee89c65ce557e10fb8e8d43a24cdd27033d3fff507":"823e9400a9f563cc1fa5daf10f4ff1ab8affa18d8371f9cd0e067fcddce8caed":"5ded298f98cffb2e7f5ea97bd50c7e3e" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"11c13b917d9f94fd7a008566d8598e89":"f53343a5a455132df3d1b03db39e44d933855b375d7422ad0d07dfdfb352af28946eb29980793456ec8634bf113e75783246bbd05aa8a7cb5886d372fa012f58":"ff1d8d33083023ffbe28f153bddfa9d9f3c221da16f8f20967d2508fa7752b55":"66a98c7d778d798617e1d31d4bdfabf8d381d38b82125838ddf43fb7f5b27dc6":"407c72d7c890c00b249be00a53ae722e5d8033c84b1e1a6a69d4b278ba5db9eb":"67ab88156f20d03b3a1bc363daefc0c6" +ctr_drbg_validate_reseed_between:"11c13b917d9f94fd7a008566d8598e89":"f53343a5a455132df3d1b03db39e44d933855b375d7422ad0d07dfdfb352af28946eb29980793456ec8634bf113e75783246bbd05aa8a7cb5886d372fa012f58":"ff1d8d33083023ffbe28f153bddfa9d9f3c221da16f8f20967d2508fa7752b55":"66a98c7d778d798617e1d31d4bdfabf8d381d38b82125838ddf43fb7f5b27dc6":"407c72d7c890c00b249be00a53ae722e5d8033c84b1e1a6a69d4b278ba5db9eb":"67ab88156f20d03b3a1bc363daefc0c6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,0,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"7b95343a4ac0f8c8b2645c33757a3146":"3d7e2987860cbcba14a12594e1a394ee754c9a7a65cecc990bc79b5e86e672e12f8c144d843e1abca46b4759a11b3d29f4e219077a8696efadee618f254cb80a":"16297534a79c4ae7493178226b29e42a6f1e0066aeaee8b5af65bcefa2ee3ebb":"b429ee986f16fb35fe2c47c03c0918870b4560f4ec4678f9df471cbd7ca6a887":"2b14d612eb00c7fba0d8e23bf91df91daef6f8e279e0050d5497ddf0f3466c76":"8f72c17405163090fe0bd795b65811c6" +ctr_drbg_validate_reseed_between:"7b95343a4ac0f8c8b2645c33757a3146":"3d7e2987860cbcba14a12594e1a394ee754c9a7a65cecc990bc79b5e86e672e12f8c144d843e1abca46b4759a11b3d29f4e219077a8696efadee618f254cb80a":"16297534a79c4ae7493178226b29e42a6f1e0066aeaee8b5af65bcefa2ee3ebb":"b429ee986f16fb35fe2c47c03c0918870b4560f4ec4678f9df471cbd7ca6a887":"2b14d612eb00c7fba0d8e23bf91df91daef6f8e279e0050d5497ddf0f3466c76":"8f72c17405163090fe0bd795b65811c6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"327290da2e9a19c840de8d33e425efaa5aa7a7afa4e5a812065965478d640f78520cf3c670b098943fec1914d4c8c411":"80bdf18288cb8adb6e3dacb09c553af2e7317c194d37f433eec27e324a0bad752899bda91fd41e5a08acdfd76007aecabc19c95a8bcede310f7320ce97aaad0e":"":"":"":"c26222662ed3a649a1745dee5df4eef0" +ctr_drbg_validate_reseed_between:"327290da2e9a19c840de8d33e425efaa5aa7a7afa4e5a812065965478d640f78520cf3c670b098943fec1914d4c8c411":"80bdf18288cb8adb6e3dacb09c553af2e7317c194d37f433eec27e324a0bad752899bda91fd41e5a08acdfd76007aecabc19c95a8bcede310f7320ce97aaad0e":"":"":"":"c26222662ed3a649a1745dee5df4eef0" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"be14f473472db07a43b7f9a517735d7f7ede2aa70dbdb729bc4f578a0dce9d7fe9fd97939cd1ef731262417b5213bd7f":"ac71ff53140c1383eb379e5311e37637af933db494e5e689d065661e9095b8302e4174c392f324fac43695d9381e3cf4626a5347938ed9e21502cbd789cca363":"":"":"":"4bab95f9f05fc36a337b6f2582c2ce98" +ctr_drbg_validate_reseed_between:"be14f473472db07a43b7f9a517735d7f7ede2aa70dbdb729bc4f578a0dce9d7fe9fd97939cd1ef731262417b5213bd7f":"ac71ff53140c1383eb379e5311e37637af933db494e5e689d065661e9095b8302e4174c392f324fac43695d9381e3cf4626a5347938ed9e21502cbd789cca363":"":"":"":"4bab95f9f05fc36a337b6f2582c2ce98" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"88c31e24f4f859b668946ce73f8600621a70731440762b3c267ceab52a9d77a23d6f70ddba0e46a786697a906ccb18a3":"bf9bf25a949d447274a8c72f1ae51399521f8aca39b1b37bb7b4d5cf3c67d55ef8dbacfb71aa9c5949416e2868b968883e517215bc20292894f8406ab39c1ea1":"":"":"":"841aaa0b171d1526ef365b9201adbff3" +ctr_drbg_validate_reseed_between:"88c31e24f4f859b668946ce73f8600621a70731440762b3c267ceab52a9d77a23d6f70ddba0e46a786697a906ccb18a3":"bf9bf25a949d447274a8c72f1ae51399521f8aca39b1b37bb7b4d5cf3c67d55ef8dbacfb71aa9c5949416e2868b968883e517215bc20292894f8406ab39c1ea1":"":"":"":"841aaa0b171d1526ef365b9201adbff3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"8545a0de5ea028c8e5976d5b58fa50079b20ba716f0856cc1af7b98537c895f0266b956542d2b8ca661aef5da1f7f8c5":"686f4f9ee74c3402845fbad9353d7dfeff727584d892eb64bd84b764110cbe4ac8581e7e23acb95caf12979983e8947c570264aec292f1c7b756f7184007dcba":"":"":"":"f6d6ae6449b2984df8bcb69584fb16f3" +ctr_drbg_validate_reseed_between:"8545a0de5ea028c8e5976d5b58fa50079b20ba716f0856cc1af7b98537c895f0266b956542d2b8ca661aef5da1f7f8c5":"686f4f9ee74c3402845fbad9353d7dfeff727584d892eb64bd84b764110cbe4ac8581e7e23acb95caf12979983e8947c570264aec292f1c7b756f7184007dcba":"":"":"":"f6d6ae6449b2984df8bcb69584fb16f3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"d6cd4b4fb9105374605deac7bb49ad792eb225daa560f2a86f66269bf9afc2ea01b6ee6f0eb4926d2f09329df6e90d79":"5d1b8fa0ca2ee127d1bd41423c17b9a8c736715cc2906818e9216dfd81b7637b66c89b772b55ae707c6effa2d9ce7425df26f966646ab613d5599143cf51e5e8":"":"":"":"c36ab451116d733eb4377de3511db5ce" +ctr_drbg_validate_reseed_between:"d6cd4b4fb9105374605deac7bb49ad792eb225daa560f2a86f66269bf9afc2ea01b6ee6f0eb4926d2f09329df6e90d79":"5d1b8fa0ca2ee127d1bd41423c17b9a8c736715cc2906818e9216dfd81b7637b66c89b772b55ae707c6effa2d9ce7425df26f966646ab613d5599143cf51e5e8":"":"":"":"c36ab451116d733eb4377de3511db5ce" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"e73ebae0d0834fdff1829ac3d9722fe9f1bc65b5f652fae5f7615af116440e3d5709b5cddd6065d568c246820de46b09":"2026cf7c1b1fe9645ab8759958ac04fb1d8938b9913c3b7f22da81e398b2c00b1921e1d4edb5d21c4531515cb0f9644fe8068685b9fca813176e6780796e8ded":"":"":"":"98d1dce30593de8a8d5b4d956f6c684b" +ctr_drbg_validate_reseed_between:"e73ebae0d0834fdff1829ac3d9722fe9f1bc65b5f652fae5f7615af116440e3d5709b5cddd6065d568c246820de46b09":"2026cf7c1b1fe9645ab8759958ac04fb1d8938b9913c3b7f22da81e398b2c00b1921e1d4edb5d21c4531515cb0f9644fe8068685b9fca813176e6780796e8ded":"":"":"":"98d1dce30593de8a8d5b4d956f6c684b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a53c1813c06b609eff9ddc77204b085ca985f22170b8ecfcbbf45ea11c45c24fcf25bc33150f9f97ce48244d5beb685c":"1d0dd1a87d59c69f28e118e1083d65f1ee0df31f6308a92dcc47503ec4d20a018d9821c6a7d64385724f0e941231426e028efe6d75e53ff8edf095ef1baf2656":"":"":"":"035cec3a24ba7c44e5c19436c2689a75" +ctr_drbg_validate_reseed_between:"a53c1813c06b609eff9ddc77204b085ca985f22170b8ecfcbbf45ea11c45c24fcf25bc33150f9f97ce48244d5beb685c":"1d0dd1a87d59c69f28e118e1083d65f1ee0df31f6308a92dcc47503ec4d20a018d9821c6a7d64385724f0e941231426e028efe6d75e53ff8edf095ef1baf2656":"":"":"":"035cec3a24ba7c44e5c19436c2689a75" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"16d5b8290693a5c40c5a526dd6d653ac54cabb5608d77bb2cb7d6270b96c2fe2de076716ae8cf0a5c781edbde861dc70":"aa82a5ea33439d0c16a1cc13cbae53b169f4d369bcbdae81a9a38129c65ae0ea4f720576c012f8d7eb1c0202003c39d28453a22e502b4949cf5ba23a727721bf":"":"":"":"de4ed9d163d11e9b52470d078df4c869" +ctr_drbg_validate_reseed_between:"16d5b8290693a5c40c5a526dd6d653ac54cabb5608d77bb2cb7d6270b96c2fe2de076716ae8cf0a5c781edbde861dc70":"aa82a5ea33439d0c16a1cc13cbae53b169f4d369bcbdae81a9a38129c65ae0ea4f720576c012f8d7eb1c0202003c39d28453a22e502b4949cf5ba23a727721bf":"":"":"":"de4ed9d163d11e9b52470d078df4c869" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"68bfabdbb821cb978527ff18ce37c96c79ad751756551f36b6991981285a68854ec7f72f548c3395ad3ee40410064d4b":"3da9e9518eb1f1b6268e4597f158844ff672ddb414f7ec23fa66d6c86b90a732a7b3016a3387ec3dbed34eb479413d017932ebf9f2a2fea0b35d2bf4e06718f9":"":"":"":"ec4e3e2b6b8763deb17b8611d1fe7953" +ctr_drbg_validate_reseed_between:"68bfabdbb821cb978527ff18ce37c96c79ad751756551f36b6991981285a68854ec7f72f548c3395ad3ee40410064d4b":"3da9e9518eb1f1b6268e4597f158844ff672ddb414f7ec23fa66d6c86b90a732a7b3016a3387ec3dbed34eb479413d017932ebf9f2a2fea0b35d2bf4e06718f9":"":"":"":"ec4e3e2b6b8763deb17b8611d1fe7953" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"171a74ab694a7d7c2baa3ccf103ad94f11094e07a955ae9ac3bad370f1448753e99b63cc23d1878ab66f94136ec2ecac":"72ebeda7342770d03bc0e531754f946ca5cca684c41f9d089fe9147fad93b6154919c5cb2e6d162fbfde7b9ff0aa590a17993ca6c80bd59eee4134fc2ce944d8":"":"":"":"582ab4f105c3e1fed9593f58fc335fc3" +ctr_drbg_validate_reseed_between:"171a74ab694a7d7c2baa3ccf103ad94f11094e07a955ae9ac3bad370f1448753e99b63cc23d1878ab66f94136ec2ecac":"72ebeda7342770d03bc0e531754f946ca5cca684c41f9d089fe9147fad93b6154919c5cb2e6d162fbfde7b9ff0aa590a17993ca6c80bd59eee4134fc2ce944d8":"":"":"":"582ab4f105c3e1fed9593f58fc335fc3" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"caed30015b34064762591eba9a59f440566a6621832f650572362229e8a38cd0f5d6d322afd8444132056690d6fa5540":"8e27f0dbeae4613bcf0011105f824ed2ecb150a83a0994f8f6607833755216e016fb175e51d42370afe27b11c18477886b530c95bc31bd1c0f8fe00f61fc15a0":"":"":"":"d42787e97147d457f1590c742443ad92" +ctr_drbg_validate_reseed_between:"caed30015b34064762591eba9a59f440566a6621832f650572362229e8a38cd0f5d6d322afd8444132056690d6fa5540":"8e27f0dbeae4613bcf0011105f824ed2ecb150a83a0994f8f6607833755216e016fb175e51d42370afe27b11c18477886b530c95bc31bd1c0f8fe00f61fc15a0":"":"":"":"d42787e97147d457f1590c742443ad92" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"c58d62f8145622cd86cfbda66bc26d2ce4c5610cd9cd1c326b99b60355a6fe751783c07f2cc21ba68f1f20ca70f0ad31":"38a8b685e6bbab67824f4cc72995043ea2854f067f2afaec762c9e78ff9d585a25bc63c8d0d075d06d43f3f694733982d26cbe0648b2d0cf8053918b912c303a":"":"":"":"84001709f15a2fd167c161b5d376d86d" +ctr_drbg_validate_reseed_between:"c58d62f8145622cd86cfbda66bc26d2ce4c5610cd9cd1c326b99b60355a6fe751783c07f2cc21ba68f1f20ca70f0ad31":"38a8b685e6bbab67824f4cc72995043ea2854f067f2afaec762c9e78ff9d585a25bc63c8d0d075d06d43f3f694733982d26cbe0648b2d0cf8053918b912c303a":"":"":"":"84001709f15a2fd167c161b5d376d86d" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"dc9719050d5257152d8a7d60d3ef1fc5b8cb1700bafc7de863c019f244779c464b6214f21a2f6d0aa3ca282007615ce5":"f188a1ba21b1791ebf8a08d8ba555e49423d9178a561bcc1672539c3a7ba1d856eae9922c4d96c181ed045d6f1d15e855690cdae451edac60f1ca2021f1fec57":"":"":"":"7540fed313c96261cac255bf83b5ae99" +ctr_drbg_validate_reseed_between:"dc9719050d5257152d8a7d60d3ef1fc5b8cb1700bafc7de863c019f244779c464b6214f21a2f6d0aa3ca282007615ce5":"f188a1ba21b1791ebf8a08d8ba555e49423d9178a561bcc1672539c3a7ba1d856eae9922c4d96c181ed045d6f1d15e855690cdae451edac60f1ca2021f1fec57":"":"":"":"7540fed313c96261cac255bf83b5ae99" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ff057781af4a4a1eefeb26ab38f82a2efb6f065de290ebf225bd693dfb1f97455b49143bdb430324c9d945c48824f6cc":"0ddd0f4a43a7b54d9abb0928a2242c378db7a95a0b206baa642afe5cd55108f412f1d727fd591bca2c76355aa62aa8638cfa1916739bc66e02b9459ccd0881ba":"":"":"":"8b6e74a94fcac0d2f212d3594213fbb6" +ctr_drbg_validate_reseed_between:"ff057781af4a4a1eefeb26ab38f82a2efb6f065de290ebf225bd693dfb1f97455b49143bdb430324c9d945c48824f6cc":"0ddd0f4a43a7b54d9abb0928a2242c378db7a95a0b206baa642afe5cd55108f412f1d727fd591bca2c76355aa62aa8638cfa1916739bc66e02b9459ccd0881ba":"":"":"":"8b6e74a94fcac0d2f212d3594213fbb6" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,0) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"ef027327e47fc5875c01cb17d798fdc2b27a5c78000727842f8a516f4e8dd34afc167ae145b1e763bebdca51e2f461a7":"128566fe6c5b5595742190519445c25db85ee0ce29371f4cab213400d479d2bfe27655155be0fa237173abb214f0226a2f1770802dd69485adb25e6d837485e1":"":"":"":"76cd1553b2b73d4ef6043a09fb90d679" +ctr_drbg_validate_reseed_between:"ef027327e47fc5875c01cb17d798fdc2b27a5c78000727842f8a516f4e8dd34afc167ae145b1e763bebdca51e2f461a7":"128566fe6c5b5595742190519445c25db85ee0ce29371f4cab213400d479d2bfe27655155be0fa237173abb214f0226a2f1770802dd69485adb25e6d837485e1":"":"":"":"76cd1553b2b73d4ef6043a09fb90d679" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"8e1a59210f876d017109cb90c7d5dd669b375d971266b7320ba8db9bd79b373bcc895974460e08eadd07a00ce7bdade9":"23677c04a2d6ab446b7b3c582a8071654d27859441b10799f08b788378b926ca4306e7cb5c0f9f104c607fbf0c379be49426e53bf5637225b551f0cc694d6593":"19e914ffbc6d872be010d66b17874010ec8b036a3d60d7f7dda5accc6962a542":"bd7a0c09e780e0ad783fd708355b8df77b4454c3d606fb8de053bffa5ecf9021":"d284dc2caf6d214f8909efc9a75297bccfc04353c2788a96f8b752749c7fec0c":"129d256e7db6269e5a0a160d2278f305" +ctr_drbg_validate_reseed_between:"8e1a59210f876d017109cb90c7d5dd669b375d971266b7320ba8db9bd79b373bcc895974460e08eadd07a00ce7bdade9":"23677c04a2d6ab446b7b3c582a8071654d27859441b10799f08b788378b926ca4306e7cb5c0f9f104c607fbf0c379be49426e53bf5637225b551f0cc694d6593":"19e914ffbc6d872be010d66b17874010ec8b036a3d60d7f7dda5accc6962a542":"bd7a0c09e780e0ad783fd708355b8df77b4454c3d606fb8de053bffa5ecf9021":"d284dc2caf6d214f8909efc9a75297bccfc04353c2788a96f8b752749c7fec0c":"129d256e7db6269e5a0a160d2278f305" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #1 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"00674e633670c9971be7af789d37d5a4ef567b3ca4766722cd8f67e09d21cbbfa08d43ea1aa259999c6a307ae6347d62":"ec47b029643f85ea19388b6e9de6ab22705b060ae10cee71262027d0bdff5efd7393af619bc6658612fabc78439a0bd5a01255563a96013fa130dd06fd0f5442":"5b92bce3f87645126daa4704fd7df98b880aa07743a57399b985ad1a00b1f2fc":"8199de1338c688234c77262ef35423f4695b277726c76d8b5f426399c14d83b5":"eb95f5a4d8400cec2d4e0f548b6e92636b5e284fb6b61766a1f35bb9cdc5df0a":"9fbe95817578eb272aa9da2f509c2a06" +ctr_drbg_validate_reseed_between:"00674e633670c9971be7af789d37d5a4ef567b3ca4766722cd8f67e09d21cbbfa08d43ea1aa259999c6a307ae6347d62":"ec47b029643f85ea19388b6e9de6ab22705b060ae10cee71262027d0bdff5efd7393af619bc6658612fabc78439a0bd5a01255563a96013fa130dd06fd0f5442":"5b92bce3f87645126daa4704fd7df98b880aa07743a57399b985ad1a00b1f2fc":"8199de1338c688234c77262ef35423f4695b277726c76d8b5f426399c14d83b5":"eb95f5a4d8400cec2d4e0f548b6e92636b5e284fb6b61766a1f35bb9cdc5df0a":"9fbe95817578eb272aa9da2f509c2a06" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #2 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2553423c3cb0fae8ca54af56f496e9935d5af4738898f77f789a9bee867dfbc6010c4e5bc68da2b922cdd84eea68e1da":"a9bebd13711c0c22c94b3252654854515a9dc015fe69e688fbac9676b3d77ab67e19b020cd2427ac789ca17f656e499be3ba3ab2075ff95247c6355157eebc79":"e74e45fa28697a06dab08545fde0cc26e7eca31c40aa68ee41c4de402fdcc961":"5aa8abf7062079929d6a131cd3844a5fb6514c07061e25cad67677d867297685":"84819109b2e09b46ba3f5464c34b28ce25a186f0e0fd83fe5fa0ab026c01292a":"3846f3406e49040c48b5cfc9cbc75d1a" +ctr_drbg_validate_reseed_between:"2553423c3cb0fae8ca54af56f496e9935d5af4738898f77f789a9bee867dfbc6010c4e5bc68da2b922cdd84eea68e1da":"a9bebd13711c0c22c94b3252654854515a9dc015fe69e688fbac9676b3d77ab67e19b020cd2427ac789ca17f656e499be3ba3ab2075ff95247c6355157eebc79":"e74e45fa28697a06dab08545fde0cc26e7eca31c40aa68ee41c4de402fdcc961":"5aa8abf7062079929d6a131cd3844a5fb6514c07061e25cad67677d867297685":"84819109b2e09b46ba3f5464c34b28ce25a186f0e0fd83fe5fa0ab026c01292a":"3846f3406e49040c48b5cfc9cbc75d1a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #3 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"856f1371454bb9aa06be897dcda9b295817c6eeb865a9acb3a89d145bfe29ce5e1b3b12b714571afdfaca7951cd47e33":"a691b8bf6a407c93a36d18aeced4c75f76d8397d4ecbcd4e8f820cb393186897f05c1ef668b027fc78ba6da9bd554cc31a467d47b5e534b5340c7799383ec05c":"2c81d1e94b33164a177d0183d182fe7d23ef4f88444246464e58bdd0de38d82c":"1b5dae81c96771bea091521c0973c5af76a03e3624160e2511e57ff43a1d32a9":"bf5878e2bd139f8f058f3d834acd771514da6d4c5b9ef84466e5a4e0e4b2eaaf":"6a5ea73aad476ce201e173d4d5a7ffcc" +ctr_drbg_validate_reseed_between:"856f1371454bb9aa06be897dcda9b295817c6eeb865a9acb3a89d145bfe29ce5e1b3b12b714571afdfaca7951cd47e33":"a691b8bf6a407c93a36d18aeced4c75f76d8397d4ecbcd4e8f820cb393186897f05c1ef668b027fc78ba6da9bd554cc31a467d47b5e534b5340c7799383ec05c":"2c81d1e94b33164a177d0183d182fe7d23ef4f88444246464e58bdd0de38d82c":"1b5dae81c96771bea091521c0973c5af76a03e3624160e2511e57ff43a1d32a9":"bf5878e2bd139f8f058f3d834acd771514da6d4c5b9ef84466e5a4e0e4b2eaaf":"6a5ea73aad476ce201e173d4d5a7ffcc" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #4 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"0436075cf8cf62ce623c2301ebd45203c98282611cfa5a12dd7c04525ffa7eb343a607af2f57feb7ce3af97e0abc2285":"1ab9ada5eeebc3fc8e53f358b643476fcfd4dd9f092f21d2bc1c4bb1ffd01a0c5b207aaa09ff76a9cab0aa6ce62b6a65b2650ab448b8bb2e8696a7aa4b6f4e8d":"62f07d1f49e40f7f472985947ac4d8ef2d58216d918f7942b9c70f43daff8972":"37ae758141fbc890ee7e1d0854426b2984fb1c094677e6a61546e9315bab0898":"353d1dd0c8d8656bc418a6a3ace138ecd62819d4e21b8bd87694ea683ec0cc37":"bfee6bb4afc228da981bfe7f0d17578b" +ctr_drbg_validate_reseed_between:"0436075cf8cf62ce623c2301ebd45203c98282611cfa5a12dd7c04525ffa7eb343a607af2f57feb7ce3af97e0abc2285":"1ab9ada5eeebc3fc8e53f358b643476fcfd4dd9f092f21d2bc1c4bb1ffd01a0c5b207aaa09ff76a9cab0aa6ce62b6a65b2650ab448b8bb2e8696a7aa4b6f4e8d":"62f07d1f49e40f7f472985947ac4d8ef2d58216d918f7942b9c70f43daff8972":"37ae758141fbc890ee7e1d0854426b2984fb1c094677e6a61546e9315bab0898":"353d1dd0c8d8656bc418a6a3ace138ecd62819d4e21b8bd87694ea683ec0cc37":"bfee6bb4afc228da981bfe7f0d17578b" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #5 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"d004a0893bf326d50ee52e04cb3e64409f204f4e9af780d5dd092d04162d088385b1f243000914c62cba3dadf9827c81":"c36004075f5fd078137ea08de6cb15f71aeb9eca21c891cfdf7a8c0d21790c94ffa93be5fa06beb5e82d9fbf173ef9b29c18511fee2455dbbe61d6b01baf024a":"7d313ada131650c7a506d2c194444ed202d568544caa75bbc60e57a0b74c9a10":"791d60238677ff53150cf7074061eac68335c0a7cec7de43ea63a5df0f312cd8":"6754366be264deb9e94f39e92ac2894bd93c1d7e1198d39e6eddccb0ea486f4d":"1c29795f03e3c771603293473e347ab4" +ctr_drbg_validate_reseed_between:"d004a0893bf326d50ee52e04cb3e64409f204f4e9af780d5dd092d04162d088385b1f243000914c62cba3dadf9827c81":"c36004075f5fd078137ea08de6cb15f71aeb9eca21c891cfdf7a8c0d21790c94ffa93be5fa06beb5e82d9fbf173ef9b29c18511fee2455dbbe61d6b01baf024a":"7d313ada131650c7a506d2c194444ed202d568544caa75bbc60e57a0b74c9a10":"791d60238677ff53150cf7074061eac68335c0a7cec7de43ea63a5df0f312cd8":"6754366be264deb9e94f39e92ac2894bd93c1d7e1198d39e6eddccb0ea486f4d":"1c29795f03e3c771603293473e347ab4" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #6 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"9a8c79b48ada409183f7260aa1415c9ee4e0b662e0fb81b5c56f85d76ed75efac5751dd4de7e7f8b53a36ee0dce2bc9e":"c4d68b76dc0e785823be2da9d339dc900132f12721e8a63ebe92e36d740c5a5e5564c367bff4a52bc70b1c60c86f0bcb7c1d99c414956a259963207184f01246":"04c7060f36569a5d9578c718627fc2695e8d783c0c8aefca2744da6664e67c8c":"1d4b7d587421dea4f7f3e77fcf997607ecfeb6e665a9a184138eb5736b16f516":"8cb8daf9cda230d8d39b829b968aaa5f5d3e3106d8b693227ab1b6201b78a7b8":"faa146098526546927a43fa4a5073e46" +ctr_drbg_validate_reseed_between:"9a8c79b48ada409183f7260aa1415c9ee4e0b662e0fb81b5c56f85d76ed75efac5751dd4de7e7f8b53a36ee0dce2bc9e":"c4d68b76dc0e785823be2da9d339dc900132f12721e8a63ebe92e36d740c5a5e5564c367bff4a52bc70b1c60c86f0bcb7c1d99c414956a259963207184f01246":"04c7060f36569a5d9578c718627fc2695e8d783c0c8aefca2744da6664e67c8c":"1d4b7d587421dea4f7f3e77fcf997607ecfeb6e665a9a184138eb5736b16f516":"8cb8daf9cda230d8d39b829b968aaa5f5d3e3106d8b693227ab1b6201b78a7b8":"faa146098526546927a43fa4a5073e46" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #7 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"a0736a5a8b0a394625d8985b05e3a9f277c7ba03b253c0e783359a8c4c086121cb46ea469c7756d5f099f5ee8ed16243":"ea7a046fa1760866bcb37fecf9ade7bcea4444662ea782d6f2820b22a96bab97b4c5adcb0a50ced885121b6b85a5074444b1555d9655f4f6ded31fe15281b30e":"47f3655dd05c42454fad68e330aabca49f27c76ba05ef07b6d77fba41153c0ab":"a5d07da3e399cc51d136096599fcbd9779e839b1fd86f21d7d1e23acd91f9fa7":"150b028b64a988fc1ffdfc9e66b4c8dfe4fcd8538ee976c89923638ebad33802":"6ffdc685169b174ad0dd84cdeed050a7" +ctr_drbg_validate_reseed_between:"a0736a5a8b0a394625d8985b05e3a9f277c7ba03b253c0e783359a8c4c086121cb46ea469c7756d5f099f5ee8ed16243":"ea7a046fa1760866bcb37fecf9ade7bcea4444662ea782d6f2820b22a96bab97b4c5adcb0a50ced885121b6b85a5074444b1555d9655f4f6ded31fe15281b30e":"47f3655dd05c42454fad68e330aabca49f27c76ba05ef07b6d77fba41153c0ab":"a5d07da3e399cc51d136096599fcbd9779e839b1fd86f21d7d1e23acd91f9fa7":"150b028b64a988fc1ffdfc9e66b4c8dfe4fcd8538ee976c89923638ebad33802":"6ffdc685169b174ad0dd84cdeed050a7" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #8 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"d445a3d9332c8577715c1e93f119521bd31a464db08cdbd73d50080d62d5a48fba4cef2dd097ec749973037e33e8d6fa":"da5f9b2db13d0555846c00da96115036bb75ace66d56fc582d6cd0171e3e23335c5c2b8691e58af8899ed0204316479f849ca6f47309cae571ccb42d3d35c166":"79346394f795f05c5a5199423649b8b5345355ef11eb4239db1c767c68afa70a":"c22810de9987b228c19680eb044da22a08032148a6015f358849d6d608a214b9":"7747d68ca8bcb43931f1edce4f8c9727dd56c1d1d2600ad1fb767eb4fbc7b2d6":"f5c40babbec97cb60ba65200e82d7a68" +ctr_drbg_validate_reseed_between:"d445a3d9332c8577715c1e93f119521bd31a464db08cdbd73d50080d62d5a48fba4cef2dd097ec749973037e33e8d6fa":"da5f9b2db13d0555846c00da96115036bb75ace66d56fc582d6cd0171e3e23335c5c2b8691e58af8899ed0204316479f849ca6f47309cae571ccb42d3d35c166":"79346394f795f05c5a5199423649b8b5345355ef11eb4239db1c767c68afa70a":"c22810de9987b228c19680eb044da22a08032148a6015f358849d6d608a214b9":"7747d68ca8bcb43931f1edce4f8c9727dd56c1d1d2600ad1fb767eb4fbc7b2d6":"f5c40babbec97cb60ba65200e82d7a68" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #9 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2728be06796e2a77c60a401752cd36e4a051724aa3276a146b4b351017eee79c8257398c612fc1129c0e74ecef455cd3":"d663d2cfcddf40ff61377c3811266d927a5dfc7b73cf549e673e5a15f4056ad1f9733c8ed875ff77928284dc1cdb33accc47971d3626615a45b9a16d9baf426e":"62349efbac4a4747d0e92727c67a6bc7f8404cf746002e7d3eeffb9a9be0bbdc":"381c0cffbdfa61a6af3f11ccd0e543208b584c3f520130e33617564ec7a48cf7":"6974043362f834fd793de07ceebd051599163d50489441005afc9db09a9ab44f":"df7894746c599e02d985b195ca3b4863" +ctr_drbg_validate_reseed_between:"2728be06796e2a77c60a401752cd36e4a051724aa3276a146b4b351017eee79c8257398c612fc1129c0e74ecef455cd3":"d663d2cfcddf40ff61377c3811266d927a5dfc7b73cf549e673e5a15f4056ad1f9733c8ed875ff77928284dc1cdb33accc47971d3626615a45b9a16d9baf426e":"62349efbac4a4747d0e92727c67a6bc7f8404cf746002e7d3eeffb9a9be0bbdc":"381c0cffbdfa61a6af3f11ccd0e543208b584c3f520130e33617564ec7a48cf7":"6974043362f834fd793de07ceebd051599163d50489441005afc9db09a9ab44f":"df7894746c599e02d985b195ca3b4863" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #10 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"2b65b56de410ee82e55bd2bf80e6cee356a37c3a3aa7042df45fa750a74e097b071fc18d6eed96523dd4fbb677b8c729":"bf03a6b3e8e23ff53369b971217dc3d3f4c1211329c94847347b3aa77dc7a3e0670381573527844a1ade786f18631944558defffb9a00900ca55f97ec726126b":"59255e5cd2221316c945bd614471df76d5b2f394b8829de82e5c30bc178565e2":"5739bc14f0f2ef9d3393928aee67b0908adaf587650928916d8ae78b0077a3b3":"6b236cf0ee0dba0c92b26c60235d3868715a80c0efbc0c898b6f0b1ace8146e9":"8374b571d7f2d94ce2bdadeb9d815397" +ctr_drbg_validate_reseed_between:"2b65b56de410ee82e55bd2bf80e6cee356a37c3a3aa7042df45fa750a74e097b071fc18d6eed96523dd4fbb677b8c729":"bf03a6b3e8e23ff53369b971217dc3d3f4c1211329c94847347b3aa77dc7a3e0670381573527844a1ade786f18631944558defffb9a00900ca55f97ec726126b":"59255e5cd2221316c945bd614471df76d5b2f394b8829de82e5c30bc178565e2":"5739bc14f0f2ef9d3393928aee67b0908adaf587650928916d8ae78b0077a3b3":"6b236cf0ee0dba0c92b26c60235d3868715a80c0efbc0c898b6f0b1ace8146e9":"8374b571d7f2d94ce2bdadeb9d815397" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #11 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"8756ee2c5e381c7c1dc530748b76a6274ef6583090e555d85210e2356feb2974a8f15119a04e9b481cd3bc557a197b8e":"19705743eaaaa0e8890a0faa2e0df37c820d556c7a45f04d76276f9f9ce2e7c133258ae6d1ba9cdf7745d01745763d18dcd1af2c9e9b0bed2806e60f0f9b636c":"2b4a92b682e9a557466af97b735e2ffdbac3bfc31fd5be2cd212cfbd4b8d690a":"e86504f10317bbeab346f3b9e4b310cbe9fbd81a42054f358eacd08cccab6eff":"19ffad856a6675268cc464ca6fdb8afd0912143e552668528d1484c9a54592cf":"f347fd58aff2999530e258be77591701" +ctr_drbg_validate_reseed_between:"8756ee2c5e381c7c1dc530748b76a6274ef6583090e555d85210e2356feb2974a8f15119a04e9b481cd3bc557a197b8e":"19705743eaaaa0e8890a0faa2e0df37c820d556c7a45f04d76276f9f9ce2e7c133258ae6d1ba9cdf7745d01745763d18dcd1af2c9e9b0bed2806e60f0f9b636c":"2b4a92b682e9a557466af97b735e2ffdbac3bfc31fd5be2cd212cfbd4b8d690a":"e86504f10317bbeab346f3b9e4b310cbe9fbd81a42054f358eacd08cccab6eff":"19ffad856a6675268cc464ca6fdb8afd0912143e552668528d1484c9a54592cf":"f347fd58aff2999530e258be77591701" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #12 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"f58be57e5035d5c455b17a41ccf7542ffd77f5c009e0a737118ed6c4188f78fcbdbe946bf82e1fa50fd81691de82dcf3":"f9939592ab2b31d92ac72673da013a588ea17bbf02cfd6e79d79f8296601633d04ceb005110f266e6100040ef33194858def8b535314c73caa0e48fc4d2f6e2d":"bb1cb21a316d4b88093cbfc7917d614dca97090cdc8bb340d864547cb3e1fef6":"7e42d5439d81680c8edf5c571d548699730cfada33b650a4d510172a42b298bb":"e9e3cf180f72ba2c1a45d0a94b822943612143e0b642398796b0428ae1af6cf5":"d0c83a4bf3517648b441d411ddcb808c" +ctr_drbg_validate_reseed_between:"f58be57e5035d5c455b17a41ccf7542ffd77f5c009e0a737118ed6c4188f78fcbdbe946bf82e1fa50fd81691de82dcf3":"f9939592ab2b31d92ac72673da013a588ea17bbf02cfd6e79d79f8296601633d04ceb005110f266e6100040ef33194858def8b535314c73caa0e48fc4d2f6e2d":"bb1cb21a316d4b88093cbfc7917d614dca97090cdc8bb340d864547cb3e1fef6":"7e42d5439d81680c8edf5c571d548699730cfada33b650a4d510172a42b298bb":"e9e3cf180f72ba2c1a45d0a94b822943612143e0b642398796b0428ae1af6cf5":"d0c83a4bf3517648b441d411ddcb808c" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #13 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984ef955cd5db76c1aa56aff83f1f6799f18fe531cc":"b8d6be3036eeb5657fb10766354d4be897bd27973b3530270ccc02a08169a2e437b30a3635eb6ccb310f319257f58d8aa030c8aab616418e0914a46131306a0c":"37572428df5826e6ae5ce95db4ef63f41e908f685204a7b64edb9f473c41e45c":"28beda0e0e346b447d32208c6b4c42dcd567acfe1e483fb4a95ea82cb8ce55a5":"7a0fffa541d723e16340eeb960b1b9c9aae912477e0ebfac03f8f1a3a8bdc531":"611c9f6fc5193dbe3db96cbcd276168a" +ctr_drbg_validate_reseed_between:"898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984ef955cd5db76c1aa56aff83f1f6799f18fe531cc":"b8d6be3036eeb5657fb10766354d4be897bd27973b3530270ccc02a08169a2e437b30a3635eb6ccb310f319257f58d8aa030c8aab616418e0914a46131306a0c":"37572428df5826e6ae5ce95db4ef63f41e908f685204a7b64edb9f473c41e45c":"28beda0e0e346b447d32208c6b4c42dcd567acfe1e483fb4a95ea82cb8ce55a5":"7a0fffa541d723e16340eeb960b1b9c9aae912477e0ebfac03f8f1a3a8bdc531":"611c9f6fc5193dbe3db96cbcd276168a" CTR_DRBG NIST Validation (AES-256 use df,False,256,128,256,256) #14 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate_nopr:"50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2":"5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d":"d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e":"ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342":"53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75":"9fb0df053e0345e5640aa97fedef50a6" +ctr_drbg_validate_reseed_between:"50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2":"5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d":"d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e":"ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342":"53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75":"9fb0df053e0345e5640aa97fedef50a6" CTR_DRBG CAVS 14.3 (AES-256 no df,no reseed,256,128,0,0) block 1 #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY @@ -1056,11 +1056,11 @@ ctr_drbg_validate_no_reseed:"7ee2614ead3c128e":"8b80936e69c67edb771c28f9b9452124 CTR_DRBG CAVS 14.3 (AES-256 use df,False,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_FIRST:"0bf814b411f65ec4866be1abb59d3c32":32:"2d4c9f46b981c6a0b2b5d8c69391e569ff13851437ebc0fc00d616340252fed593500fae4fa32b86033b7a7bac9d37e710dcc67ca266bc8607d665937766d207":"":"":"":"322dd28670e75c0ea638f3cb68d6a9d6e50ddfd052b772a7b1d78263a7b8978b6740c2b65a9550c3a76325866fa97e16d74006bc96f26249b9f0a90d076f08e5" +ctr_drbg_validate_reseed_first:"0bf814b411f65ec4866be1abb59d3c32":"2d4c9f46b981c6a0b2b5d8c69391e569ff13851437ebc0fc00d616340252fed593500fae4fa32b86033b7a7bac9d37e710dcc67ca266bc8607d665937766d207":"":"":"":"322dd28670e75c0ea638f3cb68d6a9d6e50ddfd052b772a7b1d78263a7b8978b6740c2b65a9550c3a76325866fa97e16d74006bc96f26249b9f0a90d076f08e5" CTR_DRBG CAVS 14.3 (AES-128 use df,False,128,64,0,0) #0 depends_on:MBEDTLS_CTR_DRBG_USE_128_BIT_KEY -ctr_drbg_validate:RESEED_FIRST:"5209e5b4ed82a234":16:"0f65da13dca407999d4773c2b4a11d851dea0a12c52bf64339dd291c80d8ca89":"":"":"":"2859cc468a76b08661ffd23b28547ffd0997ad526a0f51261b99ed3a37bd407bf418dbe6c6c3e26ed0ddefcb7474d899bd99f3655427519fc5b4057bcaf306d4" +ctr_drbg_validate_reseed_first:"5209e5b4ed82a234":"0f65da13dca407999d4773c2b4a11d851dea0a12c52bf64339dd291c80d8ca89":"":"":"":"2859cc468a76b08661ffd23b28547ffd0997ad526a0f51261b99ed3a37bd407bf418dbe6c6c3e26ed0ddefcb7474d899bd99f3655427519fc5b4057bcaf306d4" CTR_DRBG CAVS 14.3 (AES-256 use df,True,256,128,0,0) #0 depends_on:!MBEDTLS_CTR_DRBG_USE_128_BIT_KEY diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index f0465d3826..f6b0915742 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -12,8 +12,8 @@ enum reseed_mode RESEED_ALWAYS /* prediction resistance, no explicit reseed */ }; -static size_t test_offset_idx; -static size_t test_max_idx; +static size_t test_offset_idx = 0; +static size_t test_max_idx = 0; static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len ) { const unsigned char *p = (unsigned char *) data; @@ -24,7 +24,7 @@ static int mbedtls_test_entropy_func( void *data, unsigned char *buf, size_t len return( 0 ); } -static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, +static void ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, int entropy_len_arg, data_t * entropy, data_t * reseed, data_t * add1, data_t * add2, @@ -35,13 +35,15 @@ static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, size_t entropy_chunk_len = (size_t) entropy_len_arg; + TEST_ASSERT( entropy_chunk_len <= sizeof( buf ) ); + test_offset_idx = 0; mbedtls_ctr_drbg_init( &ctx ); test_max_idx = entropy->len; - /* CTR_DRBG_Instantiate(entropy[:entropy_len], nonce, perso, ) - * where nonce||perso = nonce[nonce_len] */ + /* CTR_DRBG_Instantiate(entropy[:entropy->len], nonce, perso, ) + * where nonce||perso = nonce[nonce->len] */ TEST_ASSERT( mbedtls_ctr_drbg_seed_entropy_len( &ctx, mbedtls_test_entropy_func, entropy->x, @@ -54,14 +56,14 @@ static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, if( reseed_mode == RESEED_FIRST ) { - /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], - * reseed[:reseed_len]) */ + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy->len], + * reseed[:reseed->len]) */ TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, reseed->x, reseed->len ) == 0 ); } - /* CTR_DRBG_Generate(result->len * 8 bits, add1[:add1_len]) -> buf */ + /* CTR_DRBG_Generate(result->len * 8 bits, add1[:add1->len]) -> buf */ /* Then reseed if prediction resistance is enabled. */ TEST_ASSERT( mbedtls_ctr_drbg_random_with_add( &ctx, @@ -71,8 +73,8 @@ static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, if( reseed_mode == RESEED_SECOND ) { - /* CTR_DRBG_Reseed(entropy[idx:idx+entropy_len], - * reseed[:reseed_len]) */ + /* CTR_DRBG_Reseed(entropy[idx:idx+entropy->len], + * reseed[:reseed->len]) */ TEST_ASSERT( mbedtls_ctr_drbg_reseed( &ctx, reseed->x, reseed->len ) == 0 ); @@ -88,7 +90,6 @@ static int ctr_drbg_validate_internal( int reseed_mode, data_t * nonce, exit: mbedtls_ctr_drbg_free( &ctx ); - return 0; } /* END_HEADER */ @@ -131,19 +132,6 @@ exit: } /* END_CASE */ -/* BEGIN_CASE */ -void ctr_drbg_validate( int reseed_mode, data_t * nonce, - int entropy_len_arg, data_t * entropy, - data_t * reseed, - data_t * add1, data_t * add2, - data_t * result_string ) -{ - TEST_ASSERT( ctr_drbg_validate_internal( reseed_mode, nonce, - entropy_len_arg, entropy, - reseed, add1, - add2, result_string) == 0 ); -} -/* END_CASE */ /* BEGIN_CASE */ void ctr_drbg_validate_no_reseed( data_t * add_init, data_t * entropy, @@ -151,10 +139,11 @@ void ctr_drbg_validate_no_reseed( data_t * add_init, data_t * entropy, data_t * result_string ) { data_t empty = {0}; - TEST_ASSERT( ctr_drbg_validate_internal( RESEED_NEVER, add_init, - entropy->len, entropy, - &empty, add1, add2, - result_string ) == 0); + ctr_drbg_validate_internal( RESEED_NEVER, add_init, + entropy->len, entropy, + &empty, add1, add2, + result_string ); + goto exit; // goto is needed to avoid warning ( no test assertions in func) } /* END_CASE */ @@ -164,25 +153,42 @@ void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, data_t * result_string ) { data_t empty = {0}; - TEST_ASSERT( ctr_drbg_validate_internal( RESEED_ALWAYS, add_init, - entropy->len / 3, entropy, - &empty, add1, add2, - result_string ) == 0); + ctr_drbg_validate_internal( RESEED_ALWAYS, add_init, + entropy->len / 3, entropy, + &empty, add1, add2, + result_string ); + goto exit; // goto is needed to avoid warning ( no test assertions in func) } /* END_CASE */ /* BEGIN_CASE */ -void ctr_drbg_validate_nopr( data_t * add_init, data_t * entropy, +void ctr_drbg_validate_reseed_between( data_t * add_init, data_t * entropy, data_t * add1, data_t * add_reseed, data_t * add2, data_t * result_string ) { - TEST_ASSERT( ctr_drbg_validate_internal( RESEED_SECOND, add_init, - entropy->len / 2, entropy, - add_reseed, add1, add2, - result_string ) == 0); + ctr_drbg_validate_internal( RESEED_SECOND, add_init, + entropy->len / 2, entropy, + add_reseed, add1, add2, + result_string ); + goto exit; // goto is needed to avoid warning ( no test assertions in func) } /* END_CASE */ +/* BEGIN_CASE */ +void ctr_drbg_validate_reseed_first( data_t * add_init, data_t * entropy, + data_t * add1, data_t * add_reseed, + data_t * add2, data_t * result_string ) +{ + ctr_drbg_validate_internal( RESEED_FIRST, add_init, + entropy->len / 2, entropy, + add_reseed, add1, add2, + result_string ); + goto exit; // goto is needed to avoid warning ( no test assertions in func) +} +/* END_CASE */ + + + /* BEGIN_CASE */ void ctr_drbg_entropy_usage( ) { From e46c329377cdcbf7022dfd403541f31db6815bf2 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 23:39:58 +0300 Subject: [PATCH 0995/1100] restore missing operation to CMakeLists.txt --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 34710015d8..99bf31f1f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,7 @@ set(CTR_DRBG_128_BIT_KEY_WARNING "${WARNING_BORDER}" "${CTR_DRBG_128_BIT_KEY_WARN_L3}" "${WARNING_BORDER}") +find_package(PythonInterp) find_package(Perl) if(PERL_FOUND) From acedc91f8f6dca3a547583ff14c9d503e9741ac7 Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Wed, 29 Aug 2018 23:57:45 +0300 Subject: [PATCH 0996/1100] Fix build issue on clang --- tests/suites/test_suite_ctr_drbg.function | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function index f6b0915742..f10e98aa54 100644 --- a/tests/suites/test_suite_ctr_drbg.function +++ b/tests/suites/test_suite_ctr_drbg.function @@ -138,7 +138,7 @@ void ctr_drbg_validate_no_reseed( data_t * add_init, data_t * entropy, data_t * add1, data_t * add2, data_t * result_string ) { - data_t empty = {0}; + data_t empty = { 0, 0 }; ctr_drbg_validate_internal( RESEED_NEVER, add_init, entropy->len, entropy, &empty, add1, add2, @@ -152,7 +152,7 @@ void ctr_drbg_validate_pr( data_t * add_init, data_t * entropy, data_t * add1, data_t * add2, data_t * result_string ) { - data_t empty = {0}; + data_t empty = { 0, 0 }; ctr_drbg_validate_internal( RESEED_ALWAYS, add_init, entropy->len / 3, entropy, &empty, add1, add2, From b5afb972447d1bf3d40a275c38fe9430610942bd Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 31 Aug 2018 11:59:56 +0100 Subject: [PATCH 0997/1100] Revised and clarified ChangeLog Minor changes to fix language, merge mistakes and incorrect classifications of changes. --- ChangeLog | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index c26974285b..7575fd3903 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,9 +3,6 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Security - * Fix a potential memory leak in mbedtls_ssl_setup( ) function. An allocation - failure could leave an unreleased buffer. A handshake init failure would - lead to leaving two unreleased buffers. * Fix an issue in the X.509 module which could lead to a buffer overread during certificate extensions parsing. In case of receiving malformed input (extensions length field equal to 0), an illegal read of one byte @@ -31,6 +28,8 @@ API Changes the use of datagram packing (enabled by default). Bugfix + * Fix a potential memory leak in mbedtls_ssl_setup() function. An allocation + failure in the function could lead to other buffers being leaked. * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 * Fix a memory leak in ecp_mul_comb() if ecp_precompute_comb() fails. @@ -38,7 +37,8 @@ Bugfix * Add ecc extensions only if an ecc based ciphersuite is used. This improves compliance to RFC 4492, and as a result, solves interoperability issues with BouncyCastle. Raised by milenamil in #1157. - * Replace printf with mbedtls_printf in aria. Found by TrinityTonic in #1908. + * Replace printf with mbedtls_printf in the ARIA module. Found by + TrinityTonic in #1908. * Fix potential use-after-free in mbedtls_ssl_get_max_frag_len() and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. * Fix a bug that caused SSL/TLS clients to incorrectly abort the handshake @@ -54,11 +54,11 @@ Bugfix * Fix overly strict bounds check in ssl_parse_certificate_request() which could lead to valid CertificateRequest messages being rejected. Fixes #1954. + * Fix undefined shifts with negative values in certificates parsing + (found by Catena cyber using oss-fuzz) * Fix memory leak and free without initialization in pk_encrypt and pk_decrypt example programs. Reported by Brace Stout. Fixes #1128. - * Remove redundant else statement, which is not readable, and the positive - path in the if statement results in exiting the funciton. Raised by irwir - in #1776. + * Remove redundant else statement. Raised by irwir. Fixes #1776. Changes * Copy headers preserving timestamps when doing a "make install". @@ -67,15 +67,7 @@ Changes Drozd. Fixes #1215 raised by randombit. * Improve compatibility with some alternative CCM implementations by using CCM test vectors from RAM. - * Fix a miscalculation of the maximum record expansion in - mbedtls_ssl_get_record_expansion() in case of ChachaPoly ciphersuites, - or CBC ciphersuites in (D)TLS versions 1.1 or higher. Fixes #1913, #1914. * Add support for buffering of out-of-order handshake messages. - -INTERNAL NOTE: need to bump soversion of libmbedtls: -- added new member 'mtu' to public 'mbedtls_ssl_conf' structure - -Changes * Add warnings to the documentation of the HKDF module to reduce the risk of misusing the mbedtls_hkdf_extract() and mbedtls_hkdf_expand() functions. Fixes #1775. Reported by Brian J. Murray. @@ -228,8 +220,6 @@ API Changes Bugfix * Fix an issue with MicroBlaze support in bn_mul.h which was causing the build to fail. Found by zv-io. Fixes #1651. - * Fix undefined shifts with negative values in certificates parsing - (found by Catena cyber using oss-fuzz) Changes * Support TLS testing in out-of-source builds using cmake. Fixes #1193. From 4d075cd7d0a4c5ab7d562c833f1f9cbc1b43cc01 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Fri, 31 Aug 2018 15:59:10 +0100 Subject: [PATCH 0998/1100] Update library version number to 2.13.0 --- ChangeLog | 2 +- doxygen/input/doc_mainpage.h | 2 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/version.h | 8 ++++---- library/CMakeLists.txt | 6 +++--- library/Makefile | 2 +- tests/suites/test_suite_version.data | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7575fd3903..fd03f1ae3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,6 @@ mbed TLS ChangeLog (Sorted per branch, date) -= mbed TLS x.x.x branch released xxxx-xx-xx += mbed TLS 2.13.0 branch released 2018-08-31 Security * Fix an issue in the X.509 module which could lead to a buffer overread diff --git a/doxygen/input/doc_mainpage.h b/doxygen/input/doc_mainpage.h index f695dd232c..72abd27094 100644 --- a/doxygen/input/doc_mainpage.h +++ b/doxygen/input/doc_mainpage.h @@ -24,7 +24,7 @@ */ /** - * @mainpage mbed TLS v2.12.0 source code documentation + * @mainpage mbed TLS v2.13.0 source code documentation * * This documentation describes the internal structure of mbed TLS. It was * automatically generated from specially formatted comment blocks in diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index 317eb0dc94..43d6e6e72d 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8 # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. -PROJECT_NAME = "mbed TLS v2.12.0" +PROJECT_NAME = "mbed TLS v2.13.0" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or diff --git a/include/mbedtls/version.h b/include/mbedtls/version.h index eaf25d908c..17b8ba450b 100644 --- a/include/mbedtls/version.h +++ b/include/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 12 +#define MBEDTLS_VERSION_MINOR 13 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x020C0000 -#define MBEDTLS_VERSION_STRING "2.12.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.12.0" +#define MBEDTLS_VERSION_NUMBER 0x020D0000 +#define MBEDTLS_VERSION_STRING "2.13.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.13.0" #if defined(MBEDTLS_VERSION_C) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 5115b961fc..6a280fe705 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -159,15 +159,15 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.12.0 SOVERSION 3) + set_target_properties(mbedcrypto PROPERTIES VERSION 2.13.0 SOVERSION 3) target_link_libraries(mbedcrypto ${libs}) add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.12.0 SOVERSION 0) + set_target_properties(mbedx509 PROPERTIES VERSION 2.13.0 SOVERSION 0) target_link_libraries(mbedx509 ${libs} mbedcrypto) add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.12.0 SOVERSION 11) + set_target_properties(mbedtls PROPERTIES VERSION 2.13.0 SOVERSION 12) target_link_libraries(mbedtls ${libs} mbedx509) install(TARGETS mbedtls mbedx509 mbedcrypto diff --git a/library/Makefile b/library/Makefile index ac88d4c3f1..430c598812 100644 --- a/library/Makefile +++ b/library/Makefile @@ -35,7 +35,7 @@ LOCAL_CFLAGS += -fPIC -fpic endif endif -SOEXT_TLS=so.11 +SOEXT_TLS=so.12 SOEXT_X509=so.0 SOEXT_CRYPTO=so.3 diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data index 402c8b89ad..49a614e9d5 100644 --- a/tests/suites/test_suite_version.data +++ b/tests/suites/test_suite_version.data @@ -1,8 +1,8 @@ Check compiletime library version -check_compiletime_version:"2.12.0" +check_compiletime_version:"2.13.0" Check runtime library version -check_runtime_version:"2.12.0" +check_runtime_version:"2.13.0" Check for MBEDTLS_VERSION_C check_feature:"MBEDTLS_VERSION_C":0 From c1eda67fac62288015afdc207a6e5a1b13e2891f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 3 Sep 2018 10:41:49 +0200 Subject: [PATCH 0999/1100] Disable fragmentation tests with openssl bugs While making the initial commit, I thought $OPENSSL_LEGACY was not affect by this bug, but it turns out I was wrong. All versions of OpenSSL installed on the CI are. Therefore, the corresponding tests are disabled for the same reason as the gnutls-cli tests above it. This commit is only about the tests that were added in the recent fragmentation work. One of those two tests had a particularly annoying mode of failure: it failed consistently with seed=1 (use in the release version of all.sh), once #1951 was applied. This has nothing particular to do with #1951, except that by changing retransmission behaviour 1951 made the proxy run into a path that triggered the OpenSSL bug with this seed, while it previously did that only with other seeds. Other 3d interop test are also susceptible to triggering this OpenSSL bug or others (or bugs in GnuTLS), but they are left untouched by this commit as: - they were pre-existing to the recent DTLS branches; - they don't seem to have the particularly annoying seed=1 mode of failure. However it's probably desirable to do something about them at some point in the future. --- tests/ssl-opt.sh | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 227d04280b..abb6023074 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5746,13 +5746,11 @@ run_test "DTLS fragmenting: 3d, gnutls client, DTLS 1.0" \ 0 \ -s "fragmenting handshake message" -## Interop test with OpenSSL might triger a bug in recent versions (that -## probably won't be fixed before 1.1.1X), so we use an old version that -## doesn't have this bug, but unfortunately it doesn't have support for DTLS -## 1.2 either, so the DTLS 1.2 tests are commented for now. +## Interop test with OpenSSL might trigger a bug in recent versions (including +## all versions installed on the CI machines), reported here: ## Bug report: https://github.com/openssl/openssl/issues/6902 -## They should be re-enabled (and the DTLS 1.0 switched back to a non-legacy -## version of OpenSSL once a fixed version of OpenSSL is available) +## They should be re-enabled once a fixed version of OpenSSL is available +## (this should happen in some 1.1.1_ release according to the ticket). skip_next_test requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -5770,7 +5768,7 @@ run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.2" \ -c "fragmenting handshake message" \ -C "error" -requires_openssl_legacy +skip_next_test requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5778,7 +5776,7 @@ requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 client_needs_more_time 4 run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ -p "$P_PXY drop=8 delay=8 duplicate=8" \ - "$O_LEGACY_SRV -dtls1 -verify 10" \ + "$O_SRV -dtls1 -verify 10" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ @@ -5787,25 +5785,25 @@ run_test "DTLS fragmenting: 3d, openssl server, DTLS 1.0" \ -c "fragmenting handshake message" \ -C "error" -## see comment on the previous-previous test -## requires_config_enabled MBEDTLS_SSL_PROTO_DTLS -## requires_config_enabled MBEDTLS_RSA_C -## requires_config_enabled MBEDTLS_ECDSA_C -## requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 -## client_needs_more_time 4 -## run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \ -## -p "$P_PXY drop=8 delay=8 duplicate=8" \ -## "$P_SRV dtls=1 debug_level=2 \ -## crt_file=data_files/server7_int-ca.crt \ -## key_file=data_files/server7.key \ -## hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ -## "$O_CLI -dtls1_2" \ -## 0 \ -## -s "fragmenting handshake message" +skip_next_test +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 +client_needs_more_time 4 +run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.2" \ + -p "$P_PXY drop=8 delay=8 duplicate=8" \ + "$P_SRV dtls=1 debug_level=2 \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=250-60000 mtu=512 force_version=dtls1_2" \ + "$O_CLI -dtls1_2" \ + 0 \ + -s "fragmenting handshake message" # -nbio is added to prevent s_client from blocking in case of duplicated # messages at the end of the handshake -requires_openssl_legacy +skip_next_test requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5817,7 +5815,7 @@ run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ hs_timeout=250-60000 mtu=512 force_version=dtls1" \ - "$O_LEGACY_CLI -nbio -dtls1" \ + "$O_CLI -nbio -dtls1" \ 0 \ -s "fragmenting handshake message" From 82986c10151db8da37b63165d62b9c55a15f9c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 3 Sep 2018 10:50:21 +0200 Subject: [PATCH 1000/1100] Disable 3d test with no good openssl version While these tests and the issue with it are pre-existing: - we previously didn't understand that the issue was an openssl bug - failures seem to have become more frequent since the recent changes So let's disable these fragile tests in order to get a clean CI. We still have the tests against gnutls-serv for interop testing. --- tests/ssl-opt.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index abb6023074..1b0921ee77 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -6250,6 +6250,12 @@ run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" +## Interop tests with OpenSSL might trigger a bug in recent versions (including +## all versions installed on the CI machines), reported here: +## Bug report: https://github.com/openssl/openssl/issues/6902 +## They should be re-enabled once a fixed version of OpenSSL is available +## (this should happen in some 1.1.1_ release according to the ticket). +skip_next_test client_needs_more_time 6 not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server" \ @@ -6259,6 +6265,7 @@ run_test "DTLS proxy: 3d, openssl server" \ 0 \ -c "HTTP/1.0 200 OK" +skip_next_test # see above client_needs_more_time 8 not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation" \ @@ -6268,6 +6275,7 @@ run_test "DTLS proxy: 3d, openssl server, fragmentation" \ 0 \ -c "HTTP/1.0 200 OK" +skip_next_test # see above client_needs_more_time 8 not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \ From 521e8a9d2d2b6856f1e1bd38e876518d3dc82f4d Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 3 Sep 2018 14:10:52 +0300 Subject: [PATCH 1001/1100] Fix to comment to correct module description the CTR-DRBG module will now support AES-128 as well as AES-256 --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 58b2f25930..dbcfb57f07 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -2027,7 +2027,7 @@ * * Requires: MBEDTLS_AES_C * - * This module provides the CTR_DRBG AES-256 random number generator. + * This module provides the CTR_DRBG AES random number generator. */ #define MBEDTLS_CTR_DRBG_C From 43e4ff0377a0bdb63f878db15fc76bdb521f042b Mon Sep 17 00:00:00 2001 From: Nir Sonnenschein Date: Mon, 3 Sep 2018 14:15:46 +0300 Subject: [PATCH 1002/1100] Make definitions easier to understand 1. removed if !defined to make things clearer 2. changed comments respectively --- include/mbedtls/ctr_drbg.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/ctr_drbg.h b/include/mbedtls/ctr_drbg.h index f08a9798ca..c91ca58b35 100644 --- a/include/mbedtls/ctr_drbg.h +++ b/include/mbedtls/ctr_drbg.h @@ -49,11 +49,12 @@ #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ -#if !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) /* Use default 256-bit key for CTR_DRBG. */ -#define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher. */ +#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +#define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher (compile-time choice: 128 bits). */ #else -#define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher. */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher (compile-time choice: 256 bits). */ #endif + #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ #define MBEDTLS_CTR_DRBG_SEEDLEN ( MBEDTLS_CTR_DRBG_KEYSIZE + MBEDTLS_CTR_DRBG_BLOCKSIZE ) /**< The seed length, calculated as (counter + AES key). */ From c0a63bd0c1abad986c1c64190d03ec3e6d34e589 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 4 Sep 2018 09:54:28 +0100 Subject: [PATCH 1003/1100] Remove duplication of some entries in the ChangeLog Fixes for #1941 and #1954 were listed twice. --- ChangeLog | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd03f1ae3c..37cf750526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -46,14 +46,9 @@ Bugfix without providing a list of CAs. This was due to an overly strict bounds check in parsing the CertificateRequest message, introduced in Mbed TLS 2.12.0. Fixes #1954. - * Fix potential use-after-free in mbedtls_ssl_get_max_frag_len() - and mbedtls_ssl_get_record_expansion() after a session reset. Fixes #1941. * Fix a miscalculation of the maximum record expansion in mbedtls_ssl_get_record_expansion() in case of ChachaPoly ciphersuites, or CBC ciphersuites in (D)TLS versions 1.1 or higher. Fixes #1913, #1914. - * Fix overly strict bounds check in ssl_parse_certificate_request() - which could lead to valid CertificateRequest messages being rejected. - Fixes #1954. * Fix undefined shifts with negative values in certificates parsing (found by Catena cyber using oss-fuzz) * Fix memory leak and free without initialization in pk_encrypt From c2f948b6c6f1bea1bb0d4a1335ef6a9ea4780f6c Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:21:44 +0100 Subject: [PATCH 1004/1100] Fix grammar in docs for MBEDTLS_HAVE_TIME_DATE --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index ff123560c3..ba7e5d3c0e 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -146,7 +146,7 @@ * Comment if your system does not have a correct clock. * * \note mbedtls_platform_gmtime() is an abstraction in platform_util.h that - * when called behaves similar to the gmtime() function from the C standard, + * when called behaves similarly to the gmtime() function from the C standard, * but is thread safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for * POSIX and gmtime_s() for Windows). If this is not possible, then gmtime() From e9b10b21f11a84a8fbf74ce663935c7caea563fa Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:25:30 +0100 Subject: [PATCH 1005/1100] Define _POSIX_C_SOURCE in threading.c before POSIX detection --- library/threading.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/threading.c b/library/threading.c index 3d7f61b2e9..c22a1dadc5 100644 --- a/library/threading.c +++ b/library/threading.c @@ -19,6 +19,12 @@ * This file is part of mbed TLS (https://tls.mbed.org) */ +/* + * Ensure gmtime_r is available even with -std=c99; must be included before + * config.h, which pulls in glibc's features.h. Harmless on other platforms. + */ +#define _POSIX_C_SOURCE 200112L + #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" #else From 209960611f6212004f89215091246a1882e22fe9 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:27:56 +0100 Subject: [PATCH 1006/1100] Use gmtime_s() for IAR --- library/platform_util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/platform_util.c b/library/platform_util.c index 68d2522b54..e440e5a55e 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -88,6 +88,8 @@ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, { #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL ); +#elif defined(__IAR_SYSTEMS_ICC__) + return( gmtime_s( tt, tm_buf ) ); #elif !defined(PLATFORM_UTIL_USE_GMTIME) return( gmtime_r( tt, tm_buf ) ); #else From 8c9a620fb6a8cd5504d757abd19aabf8453531bd Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:30:28 +0100 Subject: [PATCH 1007/1100] Fix missing word in ChangeLog entry for gmtime() --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5aa54e57c8..dce8f5ff87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,8 +13,8 @@ API Changes Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if MBEDTLS_ARC4_C and MBEDTLS_CIPHER_NULL_CIPHER weren't also defined. #1890 - * Fix build failures on where only gmtime() is available but neither - gmtime_r() nor gmtime_s() are present. Fixes #1907. + * Fix build failures on platforms where only gmtime() is available but + neither gmtime_r() nor gmtime_s() are present. Fixes #1907. = mbed TLS 2.12.0 branch released 2018-07-25 From ca04a01bb8599eeca77d6f426a65aba7e9b8b0a3 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:43:57 +0100 Subject: [PATCH 1008/1100] Document shorthand gmtime macros --- include/mbedtls/threading.h | 11 ++++++++--- library/platform_util.c | 13 ++++++++++--- library/threading.c | 13 ++++++++++--- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 070715259d..e613be9c2a 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -100,13 +100,18 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif #if defined(MBEDTLS_HAVE_TIME_DATE) -#if !defined(_WIN32) && (defined(__unix__) || \ - (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ + defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS +/* + * The preprocessor conditions above are the same as in platform_utils.c and + * threading.c. Remember to update the code there when changing the conditions + * here + */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE */ #endif /* MBEDTLS_THREADING_C */ diff --git a/library/platform_util.c b/library/platform_util.c index e440e5a55e..2dd530d1d7 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -75,13 +75,20 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) #include -#if !defined(_WIN32) && (defined(__unix__) || \ - (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ + defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS +/* + * This is a convenience shorthand macro to avoid checking the long + * preprocessor conditions above. Ideally, we could expose this macro in + * platform_utils.h and simply use it in platform_utils.c, threading.c and + * threading.h. However, this macro is not part of the Mbed TLS public API, so + * we keep it private by only definining it in this file + */ #define PLATFORM_UTIL_USE_GMTIME #endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, struct tm *tm_buf ) diff --git a/library/threading.c b/library/threading.c index c22a1dadc5..f7bca0fec2 100644 --- a/library/threading.c +++ b/library/threading.c @@ -35,13 +35,20 @@ #include "mbedtls/threading.h" -#if !defined(_WIN32) && (defined(__unix__) || \ - (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ + defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS +/* + * This is a convenience shorthand macro to avoid checking the long + * preprocessor conditions above. Ideally, we could expose this macro in + * platform_utils.h and simply use it in platform_utils.c, threading.c and + * threading.h. However, this macro is not part of the Mbed TLS public API, so + * we keep it private by only definining it in this file + */ #define THREADING_USE_GMTIME #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (__unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ #if defined(MBEDTLS_THREADING_PTHREAD) static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) From 193fe893a696b624ce2348b608e458adb14c87af Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:47:33 +0100 Subject: [PATCH 1009/1100] Add missing _POSIX_C_SOURCE define in threading.h --- include/mbedtls/threading.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index e613be9c2a..71538c07a2 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -24,6 +24,12 @@ #ifndef MBEDTLS_THREADING_H #define MBEDTLS_THREADING_H +/* + * Ensure gmtime_r is available even with -std=c99; must be included before + * config.h, which pulls in glibc's features.h. Harmless on other platforms. + */ +#define _POSIX_C_SOURCE 200112L + #if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else From 3c9733a0a3a18b1381dfeaa7e6bc07457672f9cc Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:52:07 +0100 Subject: [PATCH 1010/1100] Fix typo in comment for gmtime macro defines --- library/platform_util.c | 2 +- library/threading.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/library/platform_util.c b/library/platform_util.c index 2dd530d1d7..89f132ae9e 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -84,7 +84,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) * preprocessor conditions above. Ideally, we could expose this macro in * platform_utils.h and simply use it in platform_utils.c, threading.c and * threading.h. However, this macro is not part of the Mbed TLS public API, so - * we keep it private by only definining it in this file + * we keep it private by only defining it in this file */ #define PLATFORM_UTIL_USE_GMTIME #endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ diff --git a/library/threading.c b/library/threading.c index f7bca0fec2..0496b976a3 100644 --- a/library/threading.c +++ b/library/threading.c @@ -44,7 +44,7 @@ * preprocessor conditions above. Ideally, we could expose this macro in * platform_utils.h and simply use it in platform_utils.c, threading.c and * threading.h. However, this macro is not part of the Mbed TLS public API, so - * we keep it private by only definining it in this file + * we keep it private by only defining it in this file */ #define THREADING_USE_GMTIME #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ From c29c34c1b4bc4f3036cf45a4fda3a044fd9e4efa Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:54:40 +0100 Subject: [PATCH 1011/1100] Improve wording of gmtime feature in ChangeLog --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index dce8f5ff87..093a42bc14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,8 +7,8 @@ API Changes whose implementation should behave as a thread safe version of gmtime(). This allows users to configure such an implementation at compile time when the target system cannot be deduced automatically. At this stage Mbed TLS - is only able to configure implementations for Windows and POSIX C - libraries. + is only able to automtically select implementations for Windows and POSIX + C libraries. Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if From e58088edb9c9bbea6c70ed40c88205c4de4a6774 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 11:55:49 +0100 Subject: [PATCH 1012/1100] Clarify docs for MBEDTLS_HAVE_TIME_DATE --- include/mbedtls/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index ba7e5d3c0e..f4c8ecff9f 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -137,8 +137,8 @@ /** * \def MBEDTLS_HAVE_TIME_DATE * - * System has time.h, time(), an implementation for mbedtls_platform_gmtime(), - * and the clock is correct. + * System has time.h, time(), an implementation for mbedtls_platform_gmtime() + * (see below), and the clock is correct. * The time needs to be correct (not necesarily very accurate, but at least * the date should be correct). This is used to verify the validity period of * X.509 certificates. From 433f911e59162c6356955ff1e8ef8d28ab2a5ea1 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 12:01:57 +0100 Subject: [PATCH 1013/1100] Check for IAR in gmtime macros --- include/mbedtls/threading.h | 8 +++++--- library/platform_util.c | 8 +++++--- library/threading.c | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 71538c07a2..dc724eee22 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -106,8 +106,9 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif #if defined(MBEDTLS_HAVE_TIME_DATE) -#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ - defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ + defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ + defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS /* @@ -117,7 +118,8 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE */ #endif /* MBEDTLS_THREADING_C */ diff --git a/library/platform_util.c b/library/platform_util.c index 89f132ae9e..9bcf15e6a1 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -75,8 +75,9 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) #include -#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ - defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ + defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ + defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS /* @@ -88,7 +89,8 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) */ #define PLATFORM_UTIL_USE_GMTIME #endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, struct tm *tm_buf ) diff --git a/library/threading.c b/library/threading.c index 0496b976a3..7231f2f9ba 100644 --- a/library/threading.c +++ b/library/threading.c @@ -35,8 +35,9 @@ #include "mbedtls/threading.h" -#if !defined(_WIN32) && (defined(unix) || defined(__unix) || \ - defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))) +#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ + defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ + defined(__MACH__))) #include #if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS /* @@ -48,7 +49,8 @@ */ #define THREADING_USE_GMTIME #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || (__APPLE__ && __MACH__)) */ +#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ #if defined(MBEDTLS_THREADING_PTHREAD) static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) From 45e30201a4c2c31bbc92d556817cdf4b092a4619 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 12:05:59 +0100 Subject: [PATCH 1014/1100] Document that IAR gmtime_s() is auto selected --- ChangeLog | 4 ++-- include/mbedtls/config.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 093a42bc14..1ba5f0e009 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,8 +7,8 @@ API Changes whose implementation should behave as a thread safe version of gmtime(). This allows users to configure such an implementation at compile time when the target system cannot be deduced automatically. At this stage Mbed TLS - is only able to automtically select implementations for Windows and POSIX - C libraries. + is only able to automatically select implementations for Windows, POSIX + C libraries and IAR. Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index f4c8ecff9f..cbf8f58aa7 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -149,9 +149,9 @@ * when called behaves similarly to the gmtime() function from the C standard, * but is thread safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for - * POSIX and gmtime_s() for Windows). If this is not possible, then gmtime() - * will be used. Refer to the documentation for mbedtls_platform_gmtime() for - * more information. + * POSIX and gmtime_s() for Windows and IAR). If this is not possible, then + * gmtime() will be used. Refer to the documentation for + * mbedtls_platform_gmtime() for more information. * * \note It is possible to configure an implementation for * mbedtls_platform_gmtime() at compile-time by using the macro From 94b540ac63c0c8d9d87edff9772dc7754bd4d220 Mon Sep 17 00:00:00 2001 From: Andres Amaya Garcia Date: Wed, 5 Sep 2018 12:27:32 +0100 Subject: [PATCH 1015/1100] Avoid redefining _POSIX_C_SOURCE --- include/mbedtls/threading.h | 2 ++ library/platform_util.c | 2 ++ library/threading.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index dc724eee22..1b13deb3e2 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -28,7 +28,9 @@ * Ensure gmtime_r is available even with -std=c99; must be included before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ +#if !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112L +#endif #if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" diff --git a/library/platform_util.c b/library/platform_util.c index 9bcf15e6a1..6a5feb3212 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -24,7 +24,9 @@ * Ensure gmtime_r is available even with -std=c99; must be included before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ +#if !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112L +#endif #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" diff --git a/library/threading.c b/library/threading.c index 7231f2f9ba..c1834bace7 100644 --- a/library/threading.c +++ b/library/threading.c @@ -23,7 +23,9 @@ * Ensure gmtime_r is available even with -std=c99; must be included before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ +#if !defined(_POSIX_C_SOURCE) #define _POSIX_C_SOURCE 200112L +#endif #if !defined(MBEDTLS_CONFIG_FILE) #include "mbedtls/config.h" From cfeb70c6b98d489dd3a7de5b1523abe44ccd5793 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 13:50:22 +0100 Subject: [PATCH 1016/1100] gmtime: Remove special treatment for IAR Previous commits attempted to use `gmtime_s()` for IAR systems; however, this attempt depends on the use of C11 extensions which lead to incompatibility with other pieces of the library, such as the use of `memset()` which is being deprecated in favor of `memset_s()` in C11. --- ChangeLog | 4 ++-- include/mbedtls/threading.h | 4 ++-- library/platform_util.c | 6 ++---- library/threading.c | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ba5f0e009..0a60f70fe0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,8 +7,8 @@ API Changes whose implementation should behave as a thread safe version of gmtime(). This allows users to configure such an implementation at compile time when the target system cannot be deduced automatically. At this stage Mbed TLS - is only able to automatically select implementations for Windows, POSIX - C libraries and IAR. + is only able to automatically select implementations for Windows and POSIX + C libraries. Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 1b13deb3e2..a65eefa92e 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -108,7 +108,7 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif #if defined(MBEDTLS_HAVE_TIME_DATE) -#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ +#if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include @@ -120,7 +120,7 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || +#endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE */ #endif /* MBEDTLS_THREADING_C */ diff --git a/library/platform_util.c b/library/platform_util.c index 6a5feb3212..c248cf5296 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -77,7 +77,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) #include -#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ +#if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include @@ -91,7 +91,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) */ #define PLATFORM_UTIL_USE_GMTIME #endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || +#endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, @@ -99,8 +99,6 @@ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, { #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL ); -#elif defined(__IAR_SYSTEMS_ICC__) - return( gmtime_s( tt, tm_buf ) ); #elif !defined(PLATFORM_UTIL_USE_GMTIME) return( gmtime_r( tt, tm_buf ) ); #else diff --git a/library/threading.c b/library/threading.c index c1834bace7..9d5c4f104d 100644 --- a/library/threading.c +++ b/library/threading.c @@ -37,7 +37,7 @@ #include "mbedtls/threading.h" -#if !defined(_WIN32) && !defined(__IAR_SYSTEMS_ICC__) && (defined(unix) || \ +#if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include @@ -51,7 +51,7 @@ */ #define THREADING_USE_GMTIME #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ -#endif /* !_WIN32 && !__IAR_SYSTEMS_ICC__ && (unix || __unix || __unix__ || +#endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ #if defined(MBEDTLS_THREADING_PTHREAD) From 272675f4c665a0aa401b0ede5945424f83b64949 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 14:03:02 +0100 Subject: [PATCH 1017/1100] Correct documentation of mbedtls_platform_gmtime() --- include/mbedtls/platform_util.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 5f26fb82c0..befd3344cf 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -87,9 +87,9 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); * unconditionally use the alternative implementation for * mbedtls_platform_gmtime() supplied by the user at compile time * - * \param tt Pointer to an object containing time (in seconds) since the - * Epoc to be converted - * \param tm Pointer to an object where the results will be stored + * \param tt Pointer to an object containing time (in seconds) since the + * Epoc to be converted + * \param tm_buf Pointer to an object where the results will be stored * * \return Pointer to an object of type struct tm on success, otherwise * NULL From 5f95c798a321ca7cb8a754100bdae9ccd397685c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 14:36:36 +0100 Subject: [PATCH 1018/1100] Remove another mentioning of IAR from config.h --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index cbf8f58aa7..226190de0f 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -149,7 +149,7 @@ * when called behaves similarly to the gmtime() function from the C standard, * but is thread safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for - * POSIX and gmtime_s() for Windows and IAR). If this is not possible, then + * POSIX and gmtime_s() for Windows). If this is not possible, then * gmtime() will be used. Refer to the documentation for * mbedtls_platform_gmtime() for more information. * From be2e4bddd5ed6df04f4dc50e76daaf362f27553d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 14:44:31 +0100 Subject: [PATCH 1019/1100] Guard decl and use of gmtime mutex by HAVE_TIME_DATE and !GMTIME_ALT --- include/mbedtls/threading.h | 4 ++-- library/threading.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index a65eefa92e..9235a1e984 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -107,7 +107,7 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); #if defined(MBEDTLS_FS_IO) extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) @@ -122,7 +122,7 @@ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ -#endif /* MBEDTLS_HAVE_TIME_DATE */ +#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_ALT */ #endif /* MBEDTLS_THREADING_C */ #ifdef __cplusplus diff --git a/library/threading.c b/library/threading.c index 9d5c4f104d..1885efdfcd 100644 --- a/library/threading.c +++ b/library/threading.c @@ -37,6 +37,7 @@ #include "mbedtls/threading.h" +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) @@ -53,6 +54,7 @@ #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ +#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_ALT */ #if defined(MBEDTLS_THREADING_PTHREAD) static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) From 6a739789f39da43f06f3681c9ef51aa86365fdc1 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 15:06:19 +0100 Subject: [PATCH 1020/1100] Rename mbedtls_platform_gmtime() to mbedtls_platform_gmtime_r() For consistency, also rename MBEDTLS_PLATFORM_GMTIME_ALT to MBEDTLS_PLATFORM_GMTIME_R_ALT. --- include/mbedtls/config.h | 22 ++++++++++----------- include/mbedtls/platform_util.h | 34 ++++++++++++++++----------------- include/mbedtls/threading.h | 4 ++-- library/platform_util.c | 8 ++++---- library/threading.c | 4 ++-- library/x509.c | 2 +- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 226190de0f..0d5d9d0179 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -137,7 +137,7 @@ /** * \def MBEDTLS_HAVE_TIME_DATE * - * System has time.h, time(), an implementation for mbedtls_platform_gmtime() + * System has time.h, time(), an implementation for mbedtls_platform_gmtime_r() * (see below), and the clock is correct. * The time needs to be correct (not necesarily very accurate, but at least * the date should be correct). This is used to verify the validity period of @@ -145,17 +145,17 @@ * * Comment if your system does not have a correct clock. * - * \note mbedtls_platform_gmtime() is an abstraction in platform_util.h that + * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that * when called behaves similarly to the gmtime() function from the C standard, * but is thread safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for * POSIX and gmtime_s() for Windows). If this is not possible, then * gmtime() will be used. Refer to the documentation for - * mbedtls_platform_gmtime() for more information. + * mbedtls_platform_gmtime_r() for more information. * * \note It is possible to configure an implementation for - * mbedtls_platform_gmtime() at compile-time by using the macro - * MBEDTLS_PLATFORM_GMTIME_ALT. + * mbedtls_platform_gmtime_r() at compile-time by using the macro + * MBEDTLS_PLATFORM_GMTIME_R_ALT. */ #define MBEDTLS_HAVE_TIME_DATE @@ -3098,22 +3098,22 @@ /** * Uncomment the macro to let Mbed TLS use your alternate implementation of - * mbedtls_platform_gmtime(). This replaces the default implementation in + * mbedtls_platform_gmtime_r(). This replaces the default implementation in * platform_util.c. * * gmtime() is not a thread safe function as defined in the C standard. The * library will try to use safer implementations of this function, such as * gmtime_r() when available. However, if Mbed TLS cannot identify the target - * system, the implementation of mbedtls_platform_gmtime() will default to + * system, the implementation of mbedtls_platform_gmtime_r() will default to * using the standard gmtime(). In this case, calls from the library to * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex * if MBEDTLS_THREADING_C is enable. It is advised that calls from outside the * library are also guarded with this mutex to avoid race conditions. However, - * if the macro MBEDTLS_PLATFORM_GMTIME_ALT is defined, Mbed TLS will - * unconditionally use the implementation for mbedtls_platform_time() supplied - * at compile time. + * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will + * unconditionally use the implementation for mbedtls_platform_gmtime_r() + * supplied at compile time. */ -//#define MBEDTLS_PLATFORM_GMTIME_ALT +//#define MBEDTLS_PLATFORM_GMTIME_R_ALT /* \} name SECTION: Customisation configuration options */ diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index befd3344cf..ca42adf6e4 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -68,24 +68,24 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); #if defined(MBEDTLS_HAVE_TIME_DATE) /** - * \brief Thread safe implementation of gmtime() + * \brief Thread safe implementation of gmtime() * - * The function is an abstraction that when called behaves similar - * to the gmtime() function from the C standard, but is thread - * safe. + * The function is an abstraction that when called behaves similar + * to the gmtime() function from the C standard, but is thread + * safe. * - * Mbed TLS will try to identify the underlying platform and - * configure an appropriate underlying implementation (e.g. - * gmtime_r() for POSIX and gmtime_s() for Windows). If this is - * not possible, then gmtime() will be used. In this case, calls - * from the library to gmtime() will be guarded by the mutex - * mbedtls_threading_gmtime_mutex if MBEDTLS_THREADING_C is - * enabled. It is recommended that calls from outside the library - * are also guarded by this mutex. + * Mbed TLS will try to identify the underlying platform and + * configure an appropriate underlying implementation (e.g. + * gmtime_r() for POSIX and gmtime_s() for Windows). If this is + * not possible, then gmtime() will be used. In this case, calls + * from the library to gmtime() will be guarded by the mutex + * mbedtls_threading_gmtime_mutex if MBEDTLS_THREADING_C is + * enabled. It is recommended that calls from outside the library + * are also guarded by this mutex. * - * If MBEDTLS_PLATFORM_GMTIME_ALT is defined, then Mbed TLS will - * unconditionally use the alternative implementation for - * mbedtls_platform_gmtime() supplied by the user at compile time + * If MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, then Mbed TLS will + * unconditionally use the alternative implementation for + * mbedtls_platform_gmtime_r() supplied by the user at compile time. * * \param tt Pointer to an object containing time (in seconds) since the * Epoc to be converted @@ -94,8 +94,8 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); * \return Pointer to an object of type struct tm on success, otherwise * NULL */ -struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, - struct tm *tm_buf ); +struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, + struct tm *tm_buf ); #endif /* MBEDTLS_HAVE_TIME_DATE */ #ifdef __cplusplus diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 9235a1e984..66f78f5b5e 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -107,7 +107,7 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); #if defined(MBEDTLS_FS_IO) extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif -#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) @@ -122,7 +122,7 @@ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ -#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_ALT */ +#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ #endif /* MBEDTLS_THREADING_C */ #ifdef __cplusplus diff --git a/library/platform_util.c b/library/platform_util.c index c248cf5296..8bd53c6667 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -75,7 +75,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) } #endif /* MBEDTLS_PLATFORM_ZEROIZE_ALT */ -#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) #include #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ @@ -94,8 +94,8 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ -struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, - struct tm *tm_buf ) +struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, + struct tm *tm_buf ) { #if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) return( ( gmtime_s( tm_buf, tt ) == 0 ) ? tm_buf : NULL ); @@ -124,4 +124,4 @@ struct tm *mbedtls_platform_gmtime( const mbedtls_time_t *tt, return( ( lt == NULL ) ? NULL : tm_buf ); #endif /* _WIN32 && !EFIX64 && !EFI32 */ } -#endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_ALT */ +#endif /* MBEDTLS_HAVE_TIME_DATE && MBEDTLS_PLATFORM_GMTIME_R_ALT */ diff --git a/library/threading.c b/library/threading.c index 1885efdfcd..3abb17c0b9 100644 --- a/library/threading.c +++ b/library/threading.c @@ -37,7 +37,7 @@ #include "mbedtls/threading.h" -#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_ALT) +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) @@ -54,7 +54,7 @@ #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ -#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_ALT */ +#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ #if defined(MBEDTLS_THREADING_PTHREAD) static void threading_mutex_init_pthread( mbedtls_threading_mutex_t *mutex ) diff --git a/library/x509.c b/library/x509.c index c17697b226..52b5b649f7 100644 --- a/library/x509.c +++ b/library/x509.c @@ -898,7 +898,7 @@ static int x509_get_current_time( mbedtls_x509_time *now ) int ret = 0; tt = mbedtls_time( NULL ); - lt = mbedtls_platform_gmtime( &tt, &tm_buf ); + lt = mbedtls_platform_gmtime_r( &tt, &tm_buf ); if( lt == NULL ) ret = -1; From 651d586ccf3ca396828bb7961307e2c820c62a44 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 15:17:43 +0100 Subject: [PATCH 1021/1100] Style: Add missing period in documentation in threading.h --- include/mbedtls/threading.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 66f78f5b5e..2ec41a4f92 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -116,7 +116,7 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; /* * The preprocessor conditions above are the same as in platform_utils.c and * threading.c. Remember to update the code there when changing the conditions - * here + * here. */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ From 48a816ff26e03cc0fa1685fb0ce262a82c7890e2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 15:22:22 +0100 Subject: [PATCH 1022/1100] Minor documentation improvements --- include/mbedtls/platform_util.h | 2 +- include/mbedtls/threading.h | 2 +- library/platform_util.c | 2 +- library/threading.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index ca42adf6e4..82b1fd05f3 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -88,7 +88,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); * mbedtls_platform_gmtime_r() supplied by the user at compile time. * * \param tt Pointer to an object containing time (in seconds) since the - * Epoc to be converted + * epoch to be converted * \param tm_buf Pointer to an object where the results will be stored * * \return Pointer to an object of type struct tm on success, otherwise diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 2ec41a4f92..6830bb42a5 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -25,7 +25,7 @@ #define MBEDTLS_THREADING_H /* - * Ensure gmtime_r is available even with -std=c99; must be included before + * Ensure gmtime_r is available even with -std=c99; must be defined before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ #if !defined(_POSIX_C_SOURCE) diff --git a/library/platform_util.c b/library/platform_util.c index 8bd53c6667..f2f83e66b6 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -21,7 +21,7 @@ */ /* - * Ensure gmtime_r is available even with -std=c99; must be included before + * Ensure gmtime_r is available even with -std=c99; must be defined before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ #if !defined(_POSIX_C_SOURCE) diff --git a/library/threading.c b/library/threading.c index 3abb17c0b9..e7c8d9824e 100644 --- a/library/threading.c +++ b/library/threading.c @@ -20,7 +20,7 @@ */ /* - * Ensure gmtime_r is available even with -std=c99; must be included before + * Ensure gmtime_r is available even with -std=c99; must be defined before * config.h, which pulls in glibc's features.h. Harmless on other platforms. */ #if !defined(_POSIX_C_SOURCE) From 4e67cca1d9285d099f12c8489bfddc85a717ea27 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:18:38 +0100 Subject: [PATCH 1023/1100] Improve documentation of MBEDTLS_HAVE_TIME_DATE --- include/mbedtls/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 0d5d9d0179..da8e7e4aed 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -137,8 +137,8 @@ /** * \def MBEDTLS_HAVE_TIME_DATE * - * System has time.h, time(), an implementation for mbedtls_platform_gmtime_r() - * (see below), and the clock is correct. + * System has time.h, time(), and an implementation for + * mbedtls_platform_gmtime_r() (see below). * The time needs to be correct (not necesarily very accurate, but at least * the date should be correct). This is used to verify the validity period of * X.509 certificates. From acef292eac0fd03fe1b3fa5a2f10e4c843634c7f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:19:07 +0100 Subject: [PATCH 1024/1100] ChangeLog: Add missing renamings gmtime -> gmtime_r --- ChangeLog | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a60f70fe0..d0bd377369 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,12 +3,12 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx API Changes - * Extend the platform module with an abstraction mbedtls_platform_gmtime() + * Extend the platform module with an abstraction mbedtls_platform_gmtime_r() whose implementation should behave as a thread safe version of gmtime(). This allows users to configure such an implementation at compile time when - the target system cannot be deduced automatically. At this stage Mbed TLS - is only able to automatically select implementations for Windows and POSIX - C libraries. + the target system cannot be deduced automatically, by setting the option + MBEDTLS_PLATFORM_GMTIME_R_ALT. At this stage Mbed TLS is only able to + automatically select implementations for Windows and POSIX C libraries. Bugfix * Fixes an issue with MBEDTLS_CHACHAPOLY_C which would not compile if From 9a51d019846b2c0389be708f3620f791fe996c1b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:20:09 +0100 Subject: [PATCH 1025/1100] Improve documentation of MBEDTLS_HAVE_TIME_DATE --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index da8e7e4aed..439a1cd6a6 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -146,7 +146,7 @@ * Comment if your system does not have a correct clock. * * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that - * when called behaves similarly to the gmtime() function from the C standard, + * behaves similarly to the gmtime() function from the C standard, * but is thread safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for * POSIX and gmtime_s() for Windows). If this is not possible, then From 921b76d056c2520c50d674646c9bffa99a560559 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:21:36 +0100 Subject: [PATCH 1026/1100] Replace 'thread safe' by 'thread-safe' in the documentation --- ChangeLog | 2 +- include/mbedtls/config.h | 4 ++-- include/mbedtls/platform_util.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d0bd377369..d1e256e7fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,7 @@ mbed TLS ChangeLog (Sorted per branch, date) API Changes * Extend the platform module with an abstraction mbedtls_platform_gmtime_r() - whose implementation should behave as a thread safe version of gmtime(). + whose implementation should behave as a thread-safe version of gmtime(). This allows users to configure such an implementation at compile time when the target system cannot be deduced automatically, by setting the option MBEDTLS_PLATFORM_GMTIME_R_ALT. At this stage Mbed TLS is only able to diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 439a1cd6a6..17d08b2fe6 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -147,7 +147,7 @@ * * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that * behaves similarly to the gmtime() function from the C standard, - * but is thread safe. Mbed TLS will try to identify the underlying platform + * but is thread-safe. Mbed TLS will try to identify the underlying platform * and configure an appropriate underlying implementation (e.g. gmtime_r() for * POSIX and gmtime_s() for Windows). If this is not possible, then * gmtime() will be used. Refer to the documentation for @@ -3101,7 +3101,7 @@ * mbedtls_platform_gmtime_r(). This replaces the default implementation in * platform_util.c. * - * gmtime() is not a thread safe function as defined in the C standard. The + * gmtime() is not a thread-safe function as defined in the C standard. The * library will try to use safer implementations of this function, such as * gmtime_r() when available. However, if Mbed TLS cannot identify the target * system, the implementation of mbedtls_platform_gmtime_r() will default to diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 82b1fd05f3..66a8221311 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -68,7 +68,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); #if defined(MBEDTLS_HAVE_TIME_DATE) /** - * \brief Thread safe implementation of gmtime() + * \brief Thread-safe implementation of gmtime() * * The function is an abstraction that when called behaves similar * to the gmtime() function from the C standard, but is thread From c9468885a8086bb4525d31e4ccdb8e02ff51c29a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:22:10 +0100 Subject: [PATCH 1027/1100] Fix typo in documentation of MBEDTLS_PLATFORM_GMTIME_R_ALT --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 17d08b2fe6..4f9f9a7aa9 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3107,7 +3107,7 @@ * system, the implementation of mbedtls_platform_gmtime_r() will default to * using the standard gmtime(). In this case, calls from the library to * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex - * if MBEDTLS_THREADING_C is enable. It is advised that calls from outside the + * if MBEDTLS_THREADING_C is enabled. It is advised that calls from outside the * library are also guarded with this mutex to avoid race conditions. However, * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will * unconditionally use the implementation for mbedtls_platform_gmtime_r() From 9fbbf1c1f03e74deb7550b0ca235097587b12981 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:23:02 +0100 Subject: [PATCH 1028/1100] Improve wording of documentation of MBEDTLS_PLATFORM_GMTIME_R_ALT --- include/mbedtls/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 4f9f9a7aa9..214ea94034 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3107,7 +3107,7 @@ * system, the implementation of mbedtls_platform_gmtime_r() will default to * using the standard gmtime(). In this case, calls from the library to * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex - * if MBEDTLS_THREADING_C is enabled. It is advised that calls from outside the + * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the * library are also guarded with this mutex to avoid race conditions. However, * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will * unconditionally use the implementation for mbedtls_platform_gmtime_r() From 5a7fe145906a165e4755efb51f7d75e4614b0667 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:24:34 +0100 Subject: [PATCH 1029/1100] Don't include platform_time.h if !MBEDTLS_HAVE_TIME platform_time.h includes time.h, which is not assumed to be present on a system where MBEDTLS_HAVE_TIME is not defined. --- include/mbedtls/platform_util.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 66a8221311..e62a3af4e3 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -31,10 +31,9 @@ #include MBEDTLS_CONFIG_FILE #endif -#include "mbedtls/platform_time.h" - #include #if defined(MBEDTLS_HAVE_TIME_DATE) +#include "mbedtls/platform_time.h" #include #endif /* MBEDTLS_HAVE_TIME_DATE */ From 7dd82b4f515083fff9fbb1c360f058fbff0dca71 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:25:50 +0100 Subject: [PATCH 1030/1100] platform_utils.{c/h} -> platform_util.{c/h} --- include/mbedtls/threading.h | 2 +- library/platform_util.c | 2 +- library/threading.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 6830bb42a5..2e61b2e52d 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -114,7 +114,7 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #include #if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS /* - * The preprocessor conditions above are the same as in platform_utils.c and + * The preprocessor conditions above are the same as in platform_util.c and * threading.c. Remember to update the code there when changing the conditions * here. */ diff --git a/library/platform_util.c b/library/platform_util.c index f2f83e66b6..ddb56ed0b6 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -85,7 +85,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in - * platform_utils.h and simply use it in platform_utils.c, threading.c and + * platform_util.h and simply use it in platform_util.c, threading.c and * threading.h. However, this macro is not part of the Mbed TLS public API, so * we keep it private by only defining it in this file */ diff --git a/library/threading.c b/library/threading.c index e7c8d9824e..f37049b8df 100644 --- a/library/threading.c +++ b/library/threading.c @@ -46,7 +46,7 @@ /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in - * platform_utils.h and simply use it in platform_utils.c, threading.c and + * platform_util.h and simply use it in platform_util.c, threading.c and * threading.h. However, this macro is not part of the Mbed TLS public API, so * we keep it private by only defining it in this file */ From c52ef407bad144109ac52cc25f1519cdd2f39520 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 5 Sep 2018 16:28:59 +0100 Subject: [PATCH 1031/1100] Improve documentation of mbedtls_platform_gmtime_r() --- include/mbedtls/config.h | 8 ++------ include/mbedtls/platform_util.h | 9 ++++----- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 214ea94034..9a7905ae06 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -146,12 +146,8 @@ * Comment if your system does not have a correct clock. * * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that - * behaves similarly to the gmtime() function from the C standard, - * but is thread-safe. Mbed TLS will try to identify the underlying platform - * and configure an appropriate underlying implementation (e.g. gmtime_r() for - * POSIX and gmtime_s() for Windows). If this is not possible, then - * gmtime() will be used. Refer to the documentation for - * mbedtls_platform_gmtime_r() for more information. + * behaves similarly to the gmtime_r() function from the C standard. Refer to + * the documentation for mbedtls_platform_gmtime_r() for more information. * * \note It is possible to configure an implementation for * mbedtls_platform_gmtime_r() at compile-time by using the macro diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index e62a3af4e3..9c8a930777 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -67,14 +67,13 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); #if defined(MBEDTLS_HAVE_TIME_DATE) /** - * \brief Thread-safe implementation of gmtime() + * \brief Platform-specific implementation of gmtime_r() * - * The function is an abstraction that when called behaves similar - * to the gmtime() function from the C standard, but is thread - * safe. + * The function is a thread-safe abstraction that behaves + * similar to the gmtime_r() function from the C standard. * * Mbed TLS will try to identify the underlying platform and - * configure an appropriate underlying implementation (e.g. + * make use of an appropriate underlying implementation (e.g. * gmtime_r() for POSIX and gmtime_s() for Windows). If this is * not possible, then gmtime() will be used. In this case, calls * from the library to gmtime() will be guarded by the mutex From 6f70581c4aa8753969caa3f79db155c74228bfe5 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 09:06:33 +0100 Subject: [PATCH 1032/1100] Correct POSIX version check to determine presence of gmtime_r() Recent versions of POSIX move gmtime_r to the base. --- include/mbedtls/threading.h | 8 ++++++-- library/platform_util.c | 9 +++++++-- library/threading.c | 8 ++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 2e61b2e52d..11f6341d9a 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -112,14 +112,18 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include -#if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS +#if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) /* * The preprocessor conditions above are the same as in platform_util.c and * threading.c. Remember to update the code there when changing the conditions * here. */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; -#endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ +#endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ diff --git a/library/platform_util.c b/library/platform_util.c index ddb56ed0b6..7e82293e1b 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -81,7 +81,10 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include -#if !defined(_POSIX_VERSION) || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS + +#if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in @@ -90,7 +93,9 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) * we keep it private by only defining it in this file */ #define PLATFORM_UTIL_USE_GMTIME -#endif /* !_POSIX_VERSION || _POSIX_C_SOURCE > _POSIX_THREAD_SAFE_FUNCTIONS */ +#endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ diff --git a/library/threading.c b/library/threading.c index f37049b8df..60dfd02afb 100644 --- a/library/threading.c +++ b/library/threading.c @@ -42,7 +42,9 @@ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include -#if !defined(_POSIX_VERSION) || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS +#if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) /* * This is a convenience shorthand macro to avoid checking the long * preprocessor conditions above. Ideally, we could expose this macro in @@ -51,7 +53,9 @@ * we keep it private by only defining it in this file */ #define THREADING_USE_GMTIME -#endif /* !_POSIX_VERSION || 200112L > _POSIX_THREAD_SAFE_FUNCTIONS */ +#endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ + ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ + _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ #endif /* !_WIN32 && (unix || __unix || __unix__ || * (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ From a50fed99102150cd6e70a2d3c34aad175313959b Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 09:08:39 +0100 Subject: [PATCH 1033/1100] Correct typo in documentation of mbedtls_platform_gmtime_r() --- include/mbedtls/platform_util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 9c8a930777..38b85b82a7 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -70,7 +70,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); * \brief Platform-specific implementation of gmtime_r() * * The function is a thread-safe abstraction that behaves - * similar to the gmtime_r() function from the C standard. + * similarly to the gmtime_r() function from the C standard. * * Mbed TLS will try to identify the underlying platform and * make use of an appropriate underlying implementation (e.g. From 03b2bd4a062dc3ba5e14f3a5fee36690fa6624d7 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 09:08:55 +0100 Subject: [PATCH 1034/1100] Correct documentation of mbedtls_platform_gmtime_r() Previous documentation stated that gmtime_r() was from the standard library, but it's POSIX. --- include/mbedtls/platform_util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/platform_util.h b/include/mbedtls/platform_util.h index 38b85b82a7..164a1a05f9 100644 --- a/include/mbedtls/platform_util.h +++ b/include/mbedtls/platform_util.h @@ -70,7 +70,7 @@ void mbedtls_platform_zeroize( void *buf, size_t len ); * \brief Platform-specific implementation of gmtime_r() * * The function is a thread-safe abstraction that behaves - * similarly to the gmtime_r() function from the C standard. + * similarly to the gmtime_r() function from Unix/POSIX. * * Mbed TLS will try to identify the underlying platform and * make use of an appropriate underlying implementation (e.g. From 323d8019bf7e581c2b376b019e7ae59796fcede2 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 11:30:57 +0100 Subject: [PATCH 1035/1100] Correct preprocessor guards determining use of gmtime() The previous code erroneously used gmtime_r() to implement mbedtls_platform_gmtime() in case of a non-windows, non-unix system. --- include/mbedtls/threading.h | 6 ++++-- library/platform_util.c | 4 ++-- library/threading.c | 7 +++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 11f6341d9a..49ecdc30ef 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -108,10 +108,14 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) + #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include +#endif /* !_WIN32 && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ + #if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) @@ -124,8 +128,6 @@ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || - * (__APPLE__ && __MACH__)) */ #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ #endif /* MBEDTLS_THREADING_C */ diff --git a/library/platform_util.c b/library/platform_util.c index 7e82293e1b..ca4d033125 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -81,6 +81,8 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include +#endif /* !_WIN32 && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ #if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ @@ -96,8 +98,6 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || - * (__APPLE__ && __MACH__)) */ struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, struct tm *tm_buf ) diff --git a/library/threading.c b/library/threading.c index 60dfd02afb..8c1e25c17b 100644 --- a/library/threading.c +++ b/library/threading.c @@ -38,10 +38,14 @@ #include "mbedtls/threading.h" #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) + #if !defined(_WIN32) && (defined(unix) || \ defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ defined(__MACH__))) #include +#endif /* !_WIN32 && (unix || __unix || __unix__ || + * (__APPLE__ && __MACH__)) */ + #if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) @@ -56,8 +60,7 @@ #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ -#endif /* !_WIN32 && (unix || __unix || __unix__ || - * (__APPLE__ && __MACH__)) */ + #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ #if defined(MBEDTLS_THREADING_PTHREAD) From f5106d54ebadd74fc9e6ba2483858523b99d8d7a Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 12:09:56 +0100 Subject: [PATCH 1036/1100] Don't declare and define gmtime()-mutex on Windows platforms --- include/mbedtls/threading.h | 3 +++ library/platform_util.c | 3 +++ library/threading.c | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 49ecdc30ef..8fdb633436 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -124,7 +124,10 @@ extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; * threading.c. Remember to update the code there when changing the conditions * here. */ +#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; +#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) */ + #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ diff --git a/library/platform_util.c b/library/platform_util.c index ca4d033125..ca5fe4fb87 100644 --- a/library/platform_util.c +++ b/library/platform_util.c @@ -94,7 +94,10 @@ void mbedtls_platform_zeroize( void *buf, size_t len ) * threading.h. However, this macro is not part of the Mbed TLS public API, so * we keep it private by only defining it in this file */ +#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) #define PLATFORM_UTIL_USE_GMTIME +#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) */ + #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ diff --git a/library/threading.c b/library/threading.c index 8c1e25c17b..7c90c7c595 100644 --- a/library/threading.c +++ b/library/threading.c @@ -56,7 +56,11 @@ * threading.h. However, this macro is not part of the Mbed TLS public API, so * we keep it private by only defining it in this file */ + +#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) #define THREADING_USE_GMTIME +#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) */ + #endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ From d2ef25478e0e20834edb712bd84cf2df8ba4949f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Thu, 6 Sep 2018 14:53:25 +0100 Subject: [PATCH 1037/1100] Don't define _POSIX_C_SOURCE in header file --- include/mbedtls/threading.h | 38 ++++++++----------------------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/include/mbedtls/threading.h b/include/mbedtls/threading.h index 8fdb633436..3ca3cd3a1c 100644 --- a/include/mbedtls/threading.h +++ b/include/mbedtls/threading.h @@ -24,14 +24,6 @@ #ifndef MBEDTLS_THREADING_H #define MBEDTLS_THREADING_H -/* - * Ensure gmtime_r is available even with -std=c99; must be defined before - * config.h, which pulls in glibc's features.h. Harmless on other platforms. - */ -#if !defined(_POSIX_C_SOURCE) -#define _POSIX_C_SOURCE 200112L -#endif - #if !defined(MBEDTLS_CONFIG_FILE) #include "config.h" #else @@ -107,31 +99,17 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); #if defined(MBEDTLS_FS_IO) extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; #endif + #if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) - -#if !defined(_WIN32) && (defined(unix) || \ - defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \ - defined(__MACH__))) -#include -#endif /* !_WIN32 && (unix || __unix || __unix__ || - * (__APPLE__ && __MACH__)) */ - -#if !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ - ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) -/* - * The preprocessor conditions above are the same as in platform_util.c and - * threading.c. Remember to update the code there when changing the conditions - * here. - */ -#if ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) +/* This mutex may or may not be used in the default definition of + * mbedtls_platform_gmtime_r(), but in order to determine that, + * we need to check POSIX features, hence modify _POSIX_C_SOURCE. + * With the current approach, this declaration is orphaned, lacking + * an accompanying definition, in case mbedtls_platform_gmtime_r() + * doesn't need it, but that's not a problem. */ extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; -#endif /* ! ( defined(_WIN32) && !defined(EFIX64) && !defined(EFI32) ) */ - -#endif /* !( ( defined(_POSIX_VERSION) && _POSIX_VERSION >= 200809L ) || \ - ( defined(_POSIX_THREAD_SAFE_FUNCTIONS ) && \ - _POSIX_THREAD_SAFE_FUNCTIONS >= 20112L ) ) */ #endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ + #endif /* MBEDTLS_THREADING_C */ #ifdef __cplusplus From 53546ea099f6f53d0be653a64accd250e170337f Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 6 Sep 2018 19:10:26 +0100 Subject: [PATCH 1038/1100] Update library version number to 2.13.1 --- doxygen/input/doc_mainpage.h | 2 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/version.h | 8 ++++---- library/CMakeLists.txt | 6 +++--- tests/suites/test_suite_version.data | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doxygen/input/doc_mainpage.h b/doxygen/input/doc_mainpage.h index 72abd27094..b9f9ec1c46 100644 --- a/doxygen/input/doc_mainpage.h +++ b/doxygen/input/doc_mainpage.h @@ -24,7 +24,7 @@ */ /** - * @mainpage mbed TLS v2.13.0 source code documentation + * @mainpage mbed TLS v2.13.1 source code documentation * * This documentation describes the internal structure of mbed TLS. It was * automatically generated from specially formatted comment blocks in diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index 43d6e6e72d..2a87ada6a5 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -28,7 +28,7 @@ DOXYFILE_ENCODING = UTF-8 # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. -PROJECT_NAME = "mbed TLS v2.13.0" +PROJECT_NAME = "mbed TLS v2.13.1" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or diff --git a/include/mbedtls/version.h b/include/mbedtls/version.h index 17b8ba450b..326b8bd451 100644 --- a/include/mbedtls/version.h +++ b/include/mbedtls/version.h @@ -40,16 +40,16 @@ */ #define MBEDTLS_VERSION_MAJOR 2 #define MBEDTLS_VERSION_MINOR 13 -#define MBEDTLS_VERSION_PATCH 0 +#define MBEDTLS_VERSION_PATCH 1 /** * The single version number has the following structure: * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x020D0000 -#define MBEDTLS_VERSION_STRING "2.13.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.13.0" +#define MBEDTLS_VERSION_NUMBER 0x020D0100 +#define MBEDTLS_VERSION_STRING "2.13.1" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.13.1" #if defined(MBEDTLS_VERSION_C) diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 6a280fe705..275eda3bbd 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -159,15 +159,15 @@ endif(USE_STATIC_MBEDTLS_LIBRARY) if(USE_SHARED_MBEDTLS_LIBRARY) add_library(mbedcrypto SHARED ${src_crypto}) - set_target_properties(mbedcrypto PROPERTIES VERSION 2.13.0 SOVERSION 3) + set_target_properties(mbedcrypto PROPERTIES VERSION 2.13.1 SOVERSION 3) target_link_libraries(mbedcrypto ${libs}) add_library(mbedx509 SHARED ${src_x509}) - set_target_properties(mbedx509 PROPERTIES VERSION 2.13.0 SOVERSION 0) + set_target_properties(mbedx509 PROPERTIES VERSION 2.13.1 SOVERSION 0) target_link_libraries(mbedx509 ${libs} mbedcrypto) add_library(mbedtls SHARED ${src_tls}) - set_target_properties(mbedtls PROPERTIES VERSION 2.13.0 SOVERSION 12) + set_target_properties(mbedtls PROPERTIES VERSION 2.13.1 SOVERSION 12) target_link_libraries(mbedtls ${libs} mbedx509) install(TARGETS mbedtls mbedx509 mbedcrypto diff --git a/tests/suites/test_suite_version.data b/tests/suites/test_suite_version.data index 49a614e9d5..c3542e559a 100644 --- a/tests/suites/test_suite_version.data +++ b/tests/suites/test_suite_version.data @@ -1,8 +1,8 @@ Check compiletime library version -check_compiletime_version:"2.13.0" +check_compiletime_version:"2.13.1" Check runtime library version -check_runtime_version:"2.13.0" +check_runtime_version:"2.13.1" Check for MBEDTLS_VERSION_C check_feature:"MBEDTLS_VERSION_C":0 From 1c1c20ed4d8357c73d53443277a901013da7d745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 12 Sep 2018 10:34:43 +0200 Subject: [PATCH 1039/1100] Fix some whitespace issues --- library/ssl_cli.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/ssl_cli.c b/library/ssl_cli.c index fbf5166df4..7b88e61e38 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2077,8 +2077,8 @@ static int ssl_parse_server_ecdh_params( mbedtls_ssl_context *ssl, { MBEDTLS_SSL_DEBUG_RET( 1, ( "mbedtls_ecdh_read_params" ), ret ); #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) - ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; + if( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) + ret = MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS; #endif return( ret ); } From 12e4a8be2ade943bc60774f6bfe9ae53da92c875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 12 Sep 2018 10:55:15 +0200 Subject: [PATCH 1040/1100] Improve documentation wording and formatting --- include/mbedtls/config.h | 5 +++-- include/mbedtls/ecdsa.h | 3 ++- include/mbedtls/ecp.h | 27 +++++++++++++++------------ include/mbedtls/pk.h | 4 ++-- include/mbedtls/x509_crt.h | 2 +- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 8b5ae9f576..3f248d5c45 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -683,8 +683,9 @@ * Enable "non-blocking" ECC operations that can return early and be resumed. * * This enables \c mbedtls_ecp_set_max_ops() and allows various functions - * to return \c MBEDTLS_ERR_ECP_IN_PROGRESS when needed, and then be called - * again later with the same arguments in order to further progress and + * to return #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL + * module, #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) when needed, and then be + * called again later with the same arguments in order to further progress and * eventually complete the operation, see \c mbedtls_ecp_set_max_ops(). * * This is useful in non-threaded environments if you want to avoid blocking diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index 710fdb9d69..d5f7985cd2 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -98,7 +98,8 @@ typedef struct mbedtls_ecdsa_restart_det mbedtls_ecdsa_restart_det_ctx; */ typedef struct { - mbedtls_ecp_restart_ctx ecp; /*!< base context (admin+ecp info) */ + mbedtls_ecp_restart_ctx ecp; /*!< base context for ECP restart and + shared administrative info */ mbedtls_ecdsa_restart_ver_ctx *ver; /*!< ecdsa_verify() sub-context */ mbedtls_ecdsa_restart_sig_ctx *sig; /*!< ecdsa_sign() sub-context */ #if defined(MBEDTLS_ECDSA_DETERMINISTIC) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 4ac2926e76..15aee04c70 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -225,8 +225,8 @@ typedef struct * \param rs_ctx Restart context * \param ops Number of basic ops to do * - * \return 0 is doing 'ops' basic ops is still allowed, - * MBEDTLS_ERR_ECP_IN_PROGRESS otherwise. + * \return \c 0 if doing \p ops basic ops is still allowed, + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS otherwise. */ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, mbedtls_ecp_restart_ctx *rs_ctx, @@ -338,7 +338,7 @@ mbedtls_ecp_keypair; * \brief Set the maximum number of basic operations done in a row. * * If more operations are needed to complete a computation, - * MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the + * #MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the * function performing the computation. It is then the * caller's responsibility to either call again with the same * parameters until it returns 0 or an error code; or to free @@ -352,7 +352,7 @@ mbedtls_ecp_keypair; * * This only affects functions that accept a pointer to a * \c mbedtls_ecp_restart_ctx as an argument, and only works - * if that pointer valid (in particular, not NULL). + * if that pointer is valid (in particular, not NULL). * * \param max_ops Maximum number of basic operations done in a row. * Default: 0 (unlimited). @@ -379,15 +379,15 @@ mbedtls_ecp_keypair; * P-384 682 416 320 272 248 * P-521 1364 832 640 544 496 * - * \note This setting is currently ignored by Curve25519 + * \note This setting is currently ignored by Curve25519. */ void mbedtls_ecp_set_max_ops( unsigned max_ops ); /** * \brief Check if restart is enabled (max_ops != 0) * - * \return 0 if max_ops == 0 (restart disabled) - * 1 otherwise (restart enabled) + * \return \c 0 if \c max_ops == 0 (restart disabled) + * \return \c 1 otherwise (restart enabled) */ int mbedtls_ecp_restart_enabled( void ); #endif /* MBEDTLS_ECP_RESTARTABLE */ @@ -735,7 +735,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \brief This function performs multiplication of a point by * an integer: \p R = \p m * \p P in a restartable way. * - * \c mbedtls_ecp_mul() + * \see mbedtls_ecp_mul() * * \note This function does the same as \c mbedtls_ecp_mul(), but * it can return early and restart according to the limit set @@ -749,8 +749,11 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \param p_rng The RNG context. * \param rs_ctx The restart context. * - * \return See \c mbedtls_ecp_mul(), or - * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m is not a valid private + * key, or \p P is not a valid public key. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, @@ -787,7 +790,7 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, /** * \brief This function performs multiplication and addition of two * points by integers: \p R = \p m * \p P + \p n * \p Q in a - * reastartable way. + * restartable way. * * \see \c mbedtls_ecp_muladd() * @@ -863,7 +866,7 @@ int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, const mbedtls_mpi * * \brief This function generates a private key. * * \param grp The ECP group. - * \param d The Destination MPI (secret part). + * \param d The destination MPI (secret part). * \param f_rng The RNG function. * \param p_rng The RNG parameter. * diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 37a79cca41..3b486cfe9f 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -329,7 +329,7 @@ int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * \param rs_ctx Restart context (NULL to disable restart) * * \return See \c mbedtls_pk_verify(), or - * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, @@ -420,7 +420,7 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * \param rs_ctx Restart context (NULL to disable restart) * * \return See \c mbedtls_pk_sign(), or - * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 494ea99d77..961db9844f 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -429,7 +429,7 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, * \param rs_ctx restart context * * \return See \c mbedtls_crt_verify_with_profile(), or - * MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ int mbedtls_x509_crt_verify_restartable( mbedtls_x509_crt *crt, From 5a481f1940d3ea846aa2578baa574a68192ff8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 12 Sep 2018 12:33:32 +0200 Subject: [PATCH 1041/1100] Update error.h count for SSL --- include/mbedtls/error.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 1f14011502..6e26df9fe9 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -95,7 +95,7 @@ * HKDF 5 1 (Started from top) * CIPHER 6 8 * SSL 6 23 (Started from top) - * SSL 7 31 + * SSL 7 32 * * Module dependent error code (5 bits 0x.00.-0x.F8.) */ From 54a7c620bbd7222950594b27f70814e10f877af4 Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Wed, 12 Sep 2018 14:43:44 +0300 Subject: [PATCH 1042/1100] Minor style changes 1. Rephrase error description. 2. fix alignment of error list. --- include/mbedtls/error.h | 2 +- include/mbedtls/platform.h | 2 +- library/error.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index 2b83c2d9b6..c9a8250357 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -80,7 +80,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 - * PLATFORM 1 0x0080-0x0080 + * PLATFORM 1 0x0080-0x0080 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index cb21d2ac05..5f5b982a4d 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -43,7 +43,7 @@ #include "platform_time.h" #endif -#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0080 /**< Hardware platform function failed. */ +#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0080 /**< Hardware failed platform operation. */ #ifdef __cplusplus extern "C" { diff --git a/library/error.c b/library/error.c index d3b155b624..c6292171b3 100644 --- a/library/error.c +++ b/library/error.c @@ -827,7 +827,7 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #if defined(MBEDTLS_PLATFORM_C) if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_FAILED) ) - mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware platform function failed" ); + mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware failed platform operation" ); #endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_POLY1305_C) From 2561a50ea41b22f27156a6ee8880235ddcde0c85 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 26 Sep 2018 13:42:26 +0200 Subject: [PATCH 1043/1100] Fix "make WINDOWS_BUILD=1 clean" on non-Windows hosts The clean rule was not using the correct names for the compiled executable files. --- tests/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile b/tests/Makefile index 4d2edd456c..b6e49bf8a6 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -105,7 +105,7 @@ $(BINARIES): %$(EXEXT): %.c $(DEP) clean: ifndef WINDOWS - rm -rf $(APPS) *.c *.datax TESTS + rm -rf $(BINARIES) *.c *.datax TESTS else del /Q /F *.c *.exe *.datax ifneq ($(wildcard TESTS/.*),) From 487cdf5516bc888741d4126b1dd968c9b01049f5 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 26 Sep 2018 15:54:40 +0200 Subject: [PATCH 1044/1100] In keep-going mode, don't hard-fail on some auxiliary script Add record_status in front of the invocation of several scripts where it was missing. --- tests/scripts/all.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 1faa5d561b..d1d59e06a5 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -436,25 +436,25 @@ OPENSSL="$OPENSSL" OPENSSL_LEGACY="$OPENSSL_LEGACY" GNUTLS_CLI="$GNUTLS_CLI" \ ARMC6_CC="$ARMC6_CC" RUN_ARMCC="$RUN_ARMCC" scripts/output_env.sh msg "test: recursion.pl" # < 1s -tests/scripts/recursion.pl library/*.c +record_status tests/scripts/recursion.pl library/*.c msg "test: freshness of generated source files" # < 1s -tests/scripts/check-generated-files.sh +record_status tests/scripts/check-generated-files.sh msg "test: doxygen markup outside doxygen blocks" # < 1s -tests/scripts/check-doxy-blocks.pl +record_status tests/scripts/check-doxy-blocks.pl msg "test: check-files.py" # < 1s cleanup -tests/scripts/check-files.py +record_status tests/scripts/check-files.py msg "test/build: declared and exported names" # < 3s cleanup -tests/scripts/check-names.sh +record_status tests/scripts/check-names.sh msg "test: doxygen warnings" # ~ 3s cleanup -tests/scripts/doxygen.sh +record_status tests/scripts/doxygen.sh @@ -1071,10 +1071,10 @@ for optimization_flag in -O2 -O3 -Ofast -Os; do done msg "Lint: Python scripts" -tests/scripts/check-python-files.sh +record_status tests/scripts/check-python-files.sh msg "uint test: generate_test_code.py" -./tests/scripts/test_generate_test_code.py +record_status ./tests/scripts/test_generate_test_code.py ################################################################ #### Termination From 3ad2efdc82a3d15f373b9d12e6764efec3577b55 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 2 May 2018 14:49:38 +0100 Subject: [PATCH 1045/1100] Remove Yotta support from the docs, tests and build scripts Yotta is no longer supported by Mbed TLS, so has been removed. Specifically, the following changes have been made: * references to yotta have been removed from the main readme and build instructions * the yotta module directory and build script has been removed * yotta has been removed from test scripts such as all.sh and check-names.sh * yotta has been removed from other files that that referenced it such as the doxyfile and the bn_mul.h header * yotta specific configurations and references have been removed from config.h --- README.md | 35 +- doxygen/mbedtls.doxyfile | 2 +- include/mbedtls/bn_mul.h | 5 +- include/mbedtls/config.h | 17 +- tests/scripts/all.sh | 26 +- tests/scripts/check-names.sh | 2 +- tests/scripts/yotta-build.sh | 61 -- yotta/.gitignore | 1 - yotta/create-module.sh | 47 -- yotta/data/README.md | 103 --- yotta/data/adjust-config.sh | 77 -- yotta/data/entropy_hardware_poll.c | 88 --- yotta/data/example-authcrypt/README.md | 68 -- yotta/data/example-authcrypt/main.cpp | 197 ----- yotta/data/example-benchmark/README.md | 100 --- yotta/data/example-benchmark/main.cpp | 951 ------------------------- yotta/data/example-hashing/README.md | 67 -- yotta/data/example-hashing/main.cpp | 177 ----- yotta/data/example-selftest/README.md | 82 --- yotta/data/example-selftest/main.cpp | 268 ------- yotta/data/module.json | 18 - yotta/data/target_config.h | 35 - 22 files changed, 10 insertions(+), 2417 deletions(-) delete mode 100755 tests/scripts/yotta-build.sh delete mode 100644 yotta/.gitignore delete mode 100755 yotta/create-module.sh delete mode 100644 yotta/data/README.md delete mode 100755 yotta/data/adjust-config.sh delete mode 100644 yotta/data/entropy_hardware_poll.c delete mode 100644 yotta/data/example-authcrypt/README.md delete mode 100644 yotta/data/example-authcrypt/main.cpp delete mode 100644 yotta/data/example-benchmark/README.md delete mode 100644 yotta/data/example-benchmark/main.cpp delete mode 100644 yotta/data/example-hashing/README.md delete mode 100644 yotta/data/example-hashing/main.cpp delete mode 100644 yotta/data/example-selftest/README.md delete mode 100644 yotta/data/example-selftest/main.cpp delete mode 100644 yotta/data/module.json delete mode 100644 yotta/data/target_config.h diff --git a/README.md b/README.md index 6345848d25..329bab2fb0 100644 --- a/README.md +++ b/README.md @@ -11,47 +11,16 @@ Compiler options can be set using conventional environment variables such as `CC Compiling --------- -There are currently four active build systems used within Mbed TLS releases: +There are currently three active build systems used within Mbed TLS releases: -- yotta - GNU Make - CMake - Microsoft Visual Studio (Microsoft Visual Studio 2010 or later) The main systems used for development are CMake and GNU Make. Those systems are always complete and up-to-date. The others should reflect all changes present in the CMake and Make build system, although features may not be ported there automatically. -Yotta, as a build system, is slightly different from the other build systems: - -- it provides a minimalistic configuration file by default -- depending on the yotta target, features of Mbed OS may be used in examples and tests - The Make and CMake build systems create three libraries: libmbedcrypto, libmbedx509, and libmbedtls. Note that libmbedtls depends on libmbedx509 and libmbedcrypto, and libmbedx509 depends on libmbedcrypto. As a result, some linkers will expect flags to be in a specific order, for example the GNU linker wants `-lmbedtls -lmbedx509 -lmbedcrypto`. Also, when loading shared libraries using dlopen(), you'll need to load libmbedcrypto first, then libmbedx509, before you can load libmbedtls. -### Yotta - -[yotta](http://yottabuild.org) is a package manager and build system developed by Mbed, and is the build system of Mbed OS 16.03. To install it on your platform, please follow the yotta [installation instructions](http://docs.yottabuild.org/#installing). - -Once yotta is installed, you can use it to download the latest version of Mbed TLS from the yotta registry with: - - yotta install mbedtls - -and build it with: - - yotta build - -If, on the other hand, you already have a copy of Mbed TLS from a source other than the yotta registry, for example from cloning our GitHub repository, or from downloading a tarball of the standalone edition, then you'll first need to generate the yotta module by running: - - yotta/create-module.sh - -This should be executed from the root Mbed TLS project directory. This will create the yotta module in the `yotta/module` directory within it. You can then change to that directory and build as usual: - - cd yotta/module - yotta build - -In any case, you'll probably want to set the yotta target before building unless it has already been set globally. For more information on using yotta, please consult the [yotta documentation](http://docs.yottabuild.org/). - -For more details on the yotta/Mbed OS edition of Mbed TLS, including example programs, please consult the [Readme at the root of the yotta module](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/README.md). - ### Make We require GNU Make. To build the library and the sample programs, GNU Make and a C compiler are sufficient. Some of the more advanced build targets require some Unix/Linux tools. @@ -78,7 +47,7 @@ In order to build for a Windows platform, you should use `WINDOWS_BUILD=1` if th Setting the variable `SHARED` in your environment will build shared libraries in addition to the static libraries. Setting `DEBUG` gives you a debug build. You can override `CFLAGS` and `LDFLAGS` by setting them in your environment or on the make command line; compiler warning options may be overridden separately using `WARNING_CFLAGS`. Some directory-specific options (for example, `-I` directives) are still preserved. -Please note that setting `CFLAGS` overrides its default value of `-O2` and setting `WARNING_CFLAGS` overrides its default value (starting with `-Wall -W`), so it you just want to add some warning options to the default ones, you can do so by setting `CFLAGS=-O2 -Werror` for example. Setting `WARNING_CFLAGS` is useful when you want to get rid of its default content (for example because your compiler doesn't accept `-Wall` as an option). Directory-specific options cannot be overriden from the command line. +Please note that setting `CFLAGS` overrides its default value of `-O2` and setting `WARNING_CFLAGS` overrides its default value (starting with `-Wall -W`), so if you just want to add some warning options to the default ones, you can do so by setting `CFLAGS=-O2 -Werror` for example. Setting `WARNING_CFLAGS` is useful when you want to get rid of its default content (for example because your compiler doesn't accept `-Wall` as an option). Directory-specific options cannot be overriden from the command line. Depending on your platform, you might run into some issues. Please check the Makefiles in `library/`, `programs/` and `tests/` for options to manually add or remove for specific platforms. You can also check [the Mbed TLS Knowledge Base](https://tls.mbed.org/kb) for articles on your platform or issue. diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index 2a87ada6a5..6be7263f05 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -696,7 +696,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = ../configs ../yotta/module +EXCLUDE = ../configs # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index b587317d95..66793899dd 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -565,9 +565,8 @@ #endif /* TriCore */ /* - * gcc -O0 by default uses r7 for the frame pointer, so it complains about our - * use of r7 below, unless -fomit-frame-pointer is passed. Unfortunately, - * passing that option is not easy when building with yotta. + * Note, gcc -O0 by default uses r7 for the frame pointer, so it complains about + * our use of r7 below, unless -fomit-frame-pointer is passed. * * On the other hand, -fomit-frame-pointer is implied by any -Ox options with * x !=0, which we can detect using __OPTIMIZE__ (which is also defined by diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 81438c5b1b..91d0cdb2e8 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3130,23 +3130,12 @@ /* \} name SECTION: Customisation configuration options */ -/* Target and application specific configurations */ -//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "target_config.h" - -#if defined(TARGET_LIKE_MBED) && defined(YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE) -#include YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE -#endif - -/* +/* Target and application specific configurations + * * Allow user to override any previous default. * - * Use two macro names for that, as: - * - with yotta the prefix YOTTA_CFG_ is forced - * - without yotta is looks weird to have a YOTTA prefix. */ -#if defined(YOTTA_CFG_MBEDTLS_USER_CONFIG_FILE) -#include YOTTA_CFG_MBEDTLS_USER_CONFIG_FILE -#elif defined(MBEDTLS_USER_CONFIG_FILE) +#if defined(MBEDTLS_USER_CONFIG_FILE) #include MBEDTLS_USER_CONFIG_FILE #endif diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 1faa5d561b..36af179803 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -38,7 +38,6 @@ # * G++ # * arm-gcc and mingw-gcc # * ArmCC 5 and ArmCC 6, unless invoked with --no-armcc -# * Yotta build dependencies, unless invoked with --no-yotta # * OpenSSL and GnuTLS command line tools, recent enough for the # interoperability tests. If they don't support SSLv3 then a legacy # version of these tools must be present as well (search for LEGACY @@ -96,7 +95,6 @@ MEMORY=0 FORCE=0 KEEP_GOING=0 RUN_ARMCC=1 -YOTTA=1 # Default commands, can be overriden by the environment : ${OPENSSL:="openssl"} @@ -130,12 +128,10 @@ General options: --no-force Refuse to overwrite modified files (default). --no-keep-going Stop at the first error (default). --no-memory No additional memory tests (default). - --no-yotta Skip yotta module build. --out-of-source-dir= Directory used for CMake out-of-source build tests. --random-seed Use a random seed value for randomized tests (default). -r|--release-test Run this script in release mode. This fixes the seed value to 1. -s|--seed Integer seed value to use for this test run. - --yotta Build yotta module (on by default). Tool path options: --armc5-bin-dir= ARM Compiler 5 bin directory. @@ -160,7 +156,7 @@ cleanup() command make clean # Remove CMake artefacts - find . -name .git -prune -o -name yotta -prune -o \ + find . -name .git -prune \ -iname CMakeFiles -exec rm -rf {} \+ -o \ \( -iname cmake_install.cmake -o \ -iname CTestTestfile.cmake -o \ @@ -253,7 +249,6 @@ while [ $# -gt 0 ]; do --no-force) FORCE=0;; --no-keep-going) KEEP_GOING=0;; --no-memory) MEMORY=0;; - --no-yotta) YOTTA=0;; --openssl) shift; OPENSSL="$1";; --openssl-legacy) shift; OPENSSL_LEGACY="$1";; --openssl-next) shift; OPENSSL_NEXT="$1";; @@ -261,7 +256,6 @@ while [ $# -gt 0 ]; do --random-seed) unset SEED;; --release-test|-r) SEED=1;; --seed|-s) shift; SEED="$1";; - --yotta) YOTTA=1;; *) echo >&2 "Unknown option: $1" echo >&2 "Run $0 --help for usage." @@ -272,20 +266,10 @@ while [ $# -gt 0 ]; do done if [ $FORCE -eq 1 ]; then - if [ $YOTTA -eq 1 ]; then - rm -rf yotta/module "$OUT_OF_SOURCE_DIR" - fi git checkout-index -f -q $CONFIG_H cleanup else - if [ $YOTTA -ne 0 ] && [ -d yotta/module ]; then - err_msg "Warning - there is an existing yotta module in the directory 'yotta/module'" - echo "You can either delete your work and retry, or force the test to overwrite the" - echo "test by rerunning the script as: $0 --force" - exit 1 - fi - if [ -d "$OUT_OF_SOURCE_DIR" ]; then echo "Warning - there is an existing directory at '$OUT_OF_SOURCE_DIR'" >&2 echo "You can either delete this directory manually, or force the test by rerunning" @@ -462,14 +446,6 @@ tests/scripts/doxygen.sh #### Build and test many configurations and targets ################################################################ -if [ $RUN_ARMCC -ne 0 ] && [ $YOTTA -ne 0 ]; then - # Note - use of yotta is deprecated, and yotta also requires armcc to be on the - # path, and uses whatever version of armcc it finds there. - msg "build: create and build yotta module" # ~ 30s - cleanup - record_status tests/scripts/yotta-build.sh -fi - msg "build: cmake, gcc, ASan" # ~ 1 min 50s cleanup CC=gcc cmake -D CMAKE_BUILD_TYPE:String=Asan . diff --git a/tests/scripts/check-names.sh b/tests/scripts/check-names.sh index 4c66440e25..f18a162ccc 100755 --- a/tests/scripts/check-names.sh +++ b/tests/scripts/check-names.sh @@ -40,7 +40,7 @@ diff macros identifiers | sed -n -e 's/< //p' > actual-macros for THING in actual-macros enum-consts; do printf "Names of $THING: " test -r $THING - BAD=$( grep -v '^MBEDTLS_[0-9A-Z_]*[0-9A-Z]$\|^YOTTA_[0-9A-Z_]*[0-9A-Z]$' $THING || true ) + BAD=$( grep -v '^MBEDTLS_[0-9A-Z_]*[0-9A-Z]$' $THING || true ) if [ "x$BAD" = "x" ]; then echo "PASS" else diff --git a/tests/scripts/yotta-build.sh b/tests/scripts/yotta-build.sh deleted file mode 100755 index 4bae34aa34..0000000000 --- a/tests/scripts/yotta-build.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh - -# yotta-build.sh -# -# This file is part of mbed TLS (https://tls.mbed.org) -# -# Copyright (c) 2015-2016, ARM Limited, All Rights Reserved -# -# Purpose -# -# To run test builds of the yotta module for all supported targets. - -set -eu - -check_tools() -{ - for TOOL in "$@"; do - if ! `hash "$TOOL" >/dev/null 2>&1`; then - echo "$TOOL not found!" >&2 - exit 1 - fi - done -} - -yotta_build() -{ - TARGET=$1 - - echo; echo "*** $TARGET (release) ***" - yt -t $TARGET build - - echo; echo "*** $TARGET (debug) ***" - yt -t $TARGET build -d -} - -# Make sure the tools we need are available. -check_tools "arm-none-eabi-gcc" "armcc" "yotta" - -yotta/create-module.sh -cd yotta/module -yt update || true # needs network - -if uname -a | grep 'Linux.*x86' >/dev/null; then - yotta_build x86-linux-native -fi -if uname -a | grep 'Darwin.*x86' >/dev/null; then - yotta_build x86-osx-native -fi - -# armcc build tests. -yotta_build frdm-k64f-armcc -#yotta_build nordic-nrf51822-16k-armcc - -# arm-none-eabi-gcc build tests. -yotta_build frdm-k64f-gcc -#yotta_build st-nucleo-f401re-gcc # dirent -#yotta_build stm32f429i-disco-gcc # fails in mbed-hal-st-stm32f4 -#yotta_build nordic-nrf51822-16k-gcc # fails in minar-platform -#yotta_build bbc-microbit-classic-gcc # fails in minar-platform -#yotta_build st-stm32f439zi-gcc # fails in mbed-hal-st-stm32f4 -#yotta_build st-stm32f429i-disco-gcc # fails in mbed-hal-st-stm32f4 diff --git a/yotta/.gitignore b/yotta/.gitignore deleted file mode 100644 index 0cca093d7a..0000000000 --- a/yotta/.gitignore +++ /dev/null @@ -1 +0,0 @@ -module diff --git a/yotta/create-module.sh b/yotta/create-module.sh deleted file mode 100755 index 4c79ebe510..0000000000 --- a/yotta/create-module.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh - -set -eu - -# relative to the script's directory -TREE=.. -DEST=module - -# make sure we're running in our own directory -if [ -f create-module.sh ]; then :; else - cd $( dirname $0 ) - if [ -f create-module.sh ]; then :; else - echo "Please run the script from is directory." >&2 - exit 1 - fi -fi - -# use a temporary directory to build the module, then rsync to DEST -# this allows touching only new files, for more efficient re-builds -TMP=$DEST-tmp -rm -rf $TMP - -mkdir -p $TMP/mbedtls $TMP/source -cp $TREE/include/mbedtls/*.h $TMP/mbedtls -cp $TREE/library/*.c $TMP/source - -# temporary, should depend on external module later -cp data/entropy_hardware_poll.c $TMP/source -cp data/target_config.h $TMP/mbedtls - -data/adjust-config.sh $TREE/scripts/config.pl $TMP/mbedtls/config.h - -mkdir -p $TMP/test -cp -r data/example-* $TMP/test -# later we should have the generated test suites here too - -cp data/module.json $TMP -cp data/README.md $TMP - -cp ../LICENSE $TMP -if [ -f ../apache-2.0.txt ]; then cp ../apache-2.0.txt $TMP; fi - -mkdir -p $DEST -rsync -cr --delete --exclude build --exclude yotta_\* $TMP/ $DEST/ -rm -rf $TMP - -echo "mbed TLS yotta module created in '$PWD/$DEST'." diff --git a/yotta/data/README.md b/yotta/data/README.md deleted file mode 100644 index b748aac32b..0000000000 --- a/yotta/data/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# mbed TLS - -mbed TLS makes it trivially easy for developers to include cryptographic and SSL/TLS capabilities in their embedded products, with a minimal code footprint. It offers an SSL library with an intuitive API and readable source code. - -**Note:** The current release is beta, and implements no secure source of random numbers, weakening its security. - -Currently the only supported yotta targets are: -- `frdm-k64f-gcc` -- `frdm-k64f-armcc` -- `x86-linux-native` -- `x86-osx-native` - -## Sample programs - -This release includes the following examples: - -1. [**Self test:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-selftest) Tests different basic functions in the mbed TLS library. - -2. [**Benchmark:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-benchmark) Measures the time taken to perform basic cryptographic functions used in the library. - -3. [**Hashing:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-hashing) Demonstrates the various APIs for computing hashes of data (also known as message digests) with SHA-256. - -4. [**Authenticated encryption:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-authcrypt) Demonstrates usage of the Cipher API for encrypting and authenticating data with AES-CCM. - -These examples are integrated as yotta tests, so that they are built automatically when you build mbed TLS. Each of them comes with complete usage instructions as a Readme file in the repository. - -## Performing TLS and DTLS connections - -A high-level API for performing TLS and DTLS connections with mbed TLS in mbed OS is provided in a separate yotta module: [mbed-tls-sockets](https://github.com/ARMmbed/mbed-tls-sockets). We recommend this API for TLS and DTLS connections. It is very similar to the API provided by the [sockets](https://github.com/ARMmbed/sockets) module for unencrypted TCP and UDP connections. - -The `mbed-tls-sockets` module includes a complete [example TLS client](https://github.com/ARMmbed/mbed-tls-sockets/blob/master/test/tls-client/main.cpp) with [usage instructions](https://github.com/ARMmbed/mbed-tls-sockets/blob/master/test/tls-client/README.md). - -## Configuring mbed TLS features - -mbed TLS makes it easy to disable any feature during compilation, if that feature isn't required for a particular project. The default configuration enables all modern and widely-used features, which should meet the needs of new projects, and disables all features that are older or less common, to minimize the code footprint. - -The list of available compilation flags is available in the fully documented [config.h file](https://github.com/ARMmbed/mbedtls/blob/development/include/mbedtls/config.h). - -If you need to adjust those flags, you can provide your own configuration-adjustment file with suitable `#define` and `#undef` statements. These will be included between the default definitions and the sanity checks. Your configuration file should be in your application's include directory, and can be named freely; you just need to let mbed TLS know the file's name. To do that, use yotta's [configuration system](http://docs.yottabuild.org/reference/config.html). The file's name should be in your `config.json` file, under mbedtls, as the key `user-config-file`. - -For example, in an application called `myapp`, if you want to enable the EC J-PAKE key exchange and disable the CBC cipher mode, you can create a file named `mbedtls-config-changes.h` in the `myapp` directory containing the following lines: - - #define MBEDTLS_ECJPAKE_C - #define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED - - #undef MBEDTLS_CIPHER_MODE_CBC - -And then create a file named `config.json` at the root of your application with the following contents: - - { - "mbedtls": { - "user-config-file": "\"myapp/mbedtls-config-changes.h\"" - } - } - -Please note: you need to provide the exact name that will be used in the `#include` directive, including the `<>` or quotes around the name. - -## Getting mbed TLS from GitHub - -Like most components of mbed OS, mbed TLS is developed in the open and its source can be found on GitHub: [ARMmbed/mbedtls](https://github.com/ARMmbed/mbedtls). Unlike most other mbed OS components, however, you cannot just clone the repository and run `yotta build` from its root. This is because mbed TLS also exists as an independent component, so its repository includes things that are not relevant for mbed OS, as well as other build systems. - -The way to use mbed TLS from a clone of the GitHub repository is to run the following commands from the root of a checkout: - - yotta/create-module.sh - cd yotta/module - -You can then run any yotta command you would normally run, such as `yotta build` or `yotta link`. - -## Differences between the standalone and mbed OS editions - -While the two editions share the same code base, there are still a number of differences, mainly in configuration and integration. You should keep in mind those differences when reading some articles in our [knowledge base](https://tls.mbed.org/kb), as currently all the articles are about the standalone edition. - -* The mbed OS edition has a smaller set of features enabled by default in `config.h`, in order to reduce footprint. While the default configuration of the standalone edition puts more emphasize on maintaining interoperability with old peers, the mbed OS edition only enables the most modern ciphers and the latest version of (D)TLS. - -* The following components of mbed TLS are disabled in the mbed OS edition: `net_sockets.c` and `timing.c`. This is because mbed OS include their equivalents. - -* The mbed OS edition comes with a fully integrated API for (D)TLS connections in a companion module: [mbed-tls-sockets](https://github.com/ARMmbed/mbed-tls-sockets). See "Performing TLS and DTLS connections" above. - -## Other resources - -The [mbed TLS website](https://tls.mbed.org) contains many other useful -resources for the developer, such as [developer -documentation](https://tls.mbed.org/dev-corner), [knowledgebase -articles](https://tls.mbed.org/kb), and a [support forum](https://tls.mbed.org/discussions). - -## Contributing - -We gratefully accept bug reports and contributions from the community. There are some requirements we need to fulfill in order to be able to integrate contributions: - -* Simple bug fixes to existing code do not contain copyright themselves and we can integrate without issue. The same is true of trivial contributions. - -* For larger contributions, such as a new feature, the code can possibly fall under copyright law. We then need your consent to share in the ownership of the copyright. We have a form for this, which we will send to you in case you submit a contribution or pull request that we deem this necessary for. - -To contribute, please: - -* [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://tls.mbed.org/discussions) around a feature idea or a bug. - -* Fork the [mbed TLS repository on GitHub](https://github.com/ARMmbed/mbedtls) to start making your changes. As a general rule, you should use the "development" branch as a basis. - -* Write a test that shows that the bug was fixed or that the feature works as expected. - -* Send a pull request and bug us until it gets merged and published. We will include your name in the ChangeLog. - diff --git a/yotta/data/adjust-config.sh b/yotta/data/adjust-config.sh deleted file mode 100755 index 3fa84908f4..0000000000 --- a/yotta/data/adjust-config.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -set -eu - -if [ $# -ne 2 ]; then - echo "Usage: $0 path/to/config.pl path/to/config.h" >&2 - exit 1 -fi - -SCRIPT=$1 -FILE=$2 - -conf() { - $SCRIPT -f $FILE $@ -} - - -# Set the target specific header -conf set YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE \"mbedtls/target_config.h\" - -# not supported on mbed OS, nor used by mbed Client -conf unset MBEDTLS_NET_C -conf unset MBEDTLS_TIMING_C - -# not supported on all targets with mbed OS, nor used by mbed Client -conf unset MBEDTLS_FS_IO - -conf unset MBEDTLS_CIPHER_MODE_CFB -conf unset MBEDTLS_CIPHER_MODE_CTR -conf unset MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS -conf unset MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN -conf unset MBEDTLS_CIPHER_PADDING_ZEROS -conf unset MBEDTLS_ECP_DP_SECP192R1_ENABLED -conf unset MBEDTLS_ECP_DP_SECP224R1_ENABLED -conf unset MBEDTLS_ECP_DP_SECP521R1_ENABLED -conf unset MBEDTLS_ECP_DP_SECP192K1_ENABLED -conf unset MBEDTLS_ECP_DP_SECP224K1_ENABLED -conf unset MBEDTLS_ECP_DP_SECP256K1_ENABLED -conf unset MBEDTLS_ECP_DP_BP256R1_ENABLED -conf unset MBEDTLS_ECP_DP_BP384R1_ENABLED -conf unset MBEDTLS_ECP_DP_BP512R1_ENABLED -conf unset MBEDTLS_PK_PARSE_EC_EXTENDED - -conf unset MBEDTLS_AESNI_C -conf unset MBEDTLS_ARC4_C -conf unset MBEDTLS_BLOWFISH_C -conf unset MBEDTLS_CAMELLIA_C -conf unset MBEDTLS_DES_C -conf unset MBEDTLS_DHM_C -conf unset MBEDTLS_GENPRIME -conf unset MBEDTLS_MD5_C -conf unset MBEDTLS_PADLOCK_C -conf unset MBEDTLS_PEM_WRITE_C -conf unset MBEDTLS_PKCS5_C -conf unset MBEDTLS_PKCS12_C -conf unset MBEDTLS_RIPEMD160_C -conf unset MBEDTLS_SHA1_C -conf unset MBEDTLS_XTEA_C - -conf unset MBEDTLS_X509_RSASSA_PSS_SUPPORT - -conf unset MBEDTLS_X509_CSR_PARSE_C -conf unset MBEDTLS_X509_CREATE_C -conf unset MBEDTLS_X509_CRT_WRITE_C -conf unset MBEDTLS_X509_CSR_WRITE_C - -conf unset MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED -conf unset MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED -conf unset MBEDTLS_KEY_EXCHANGE_RSA_ENABLED -conf unset MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED -conf unset MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED -conf unset MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED -conf unset MBEDTLS_SSL_FALLBACK_SCSV -conf unset MBEDTLS_SSL_CBC_RECORD_SPLITTING -conf unset MBEDTLS_SSL_PROTO_TLS1 -conf unset MBEDTLS_SSL_PROTO_TLS1_1 -conf unset MBEDTLS_SSL_TRUNCATED_HMAC diff --git a/yotta/data/entropy_hardware_poll.c b/yotta/data/entropy_hardware_poll.c deleted file mode 100644 index 3a61e22aef..0000000000 --- a/yotta/data/entropy_hardware_poll.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Hardware entropy collector for the K64F, using Freescale's RNGA - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -/* - * WARNING: this is temporary! - * This should be in a separate yotta module which would be a target - * dependency of mbedtls (see IOTSSL-313) - */ - -#if defined(TARGET_LIKE_K64F) - -/* - * Reference: "K64 Sub-Family Reference Manual, Rev. 2", chapter 34 - */ - -#include "fsl_clock_manager.h" - -/* - * Get one byte of entropy from the RNG, assuming it is up and running. - * As recommended (34.1.1), get only one bit of each output. - */ -static void rng_get_byte( unsigned char *byte ) -{ - size_t bit; - - /* 34.5 Steps 3-4-5: poll SR and read from OR when ready */ - for( bit = 0; bit < 8; bit++ ) - { - while( ( RNG->SR & RNG_SR_OREG_LVL_MASK ) == 0 ); - *byte |= ( RNG->OR & 1 ) << bit; - } -} - -/* - * Get len bytes of entropy from the hardware RNG. - */ -int mbedtls_hardware_poll( void *data, - unsigned char *output, size_t len, size_t *olen ) -{ - size_t i; - int ret; - ((void) data); - - CLOCK_SYS_EnableRngaClock( 0 ); - - /* Set "Interrupt Mask", "High Assurance" and "Go", - * unset "Clear interrupt" and "Sleep" */ - RNG->CR = RNG_CR_INTM_MASK | RNG_CR_HA_MASK | RNG_CR_GO_MASK; - - for( i = 0; i < len; i++ ) - rng_get_byte( output + i ); - - /* Just be extra sure that we didn't do it wrong */ - if( ( RNG->SR & RNG_SR_SECV_MASK ) != 0 ) - { - ret = -1; - goto cleanup; - } - - *olen = len; - ret = 0; - -cleanup: - /* Disable clock to save power - assume we're the only users of RNG */ - CLOCK_SYS_DisableRngaClock( 0 ); - - return( ret ); -} - -#endif diff --git a/yotta/data/example-authcrypt/README.md b/yotta/data/example-authcrypt/README.md deleted file mode 100644 index 4498b9dd41..0000000000 --- a/yotta/data/example-authcrypt/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Authenticated Encryption Example - -This application performs authenticated encryption and authenticated decryption of a buffer. It serves as a tutorial for the basic authenticated encryption functions of mbed TLS. - -## Pre-requisites - -To build and run this example you must have: - -* A computer with the following software installed: - * [CMake](http://www.cmake.org/download/). - * [yotta](https://github.com/ARMmbed/yotta). Please note that **yotta has its own set of dependencies**, listed in the [installation instructions](http://armmbed.github.io/yotta/#installing-on-windows). - * [Python](https://www.python.org/downloads/). - * [The ARM GCC toolchain](https://launchpad.net/gcc-arm-embedded). - * A serial terminal emulator (Like screen, pySerial and cu). -* An [FRDM-K64F](http://developer.mbed.org/platforms/FRDM-K64F/) development board, or another board supported by mbed OS (in which case you'll have to substitute frdm-k64f-gcc with the appropriate target in the instructions below). -* A micro-USB cable. -* If your OS is Windows, please follow the installation instructions [for the serial port driver](https://developer.mbed.org/handbook/Windows-serial-configuration). - -## Getting started - -1. Connect the FRDM-K64F to the computer with the micro-USB cable, being careful to use the "OpenSDA" connector on the target board. - -2. Navigate to the mbedtls directory supplied with your release and open a terminal. - -3. Set the yotta target: - - ``` - yotta target frdm-k64f-gcc - ``` - -4. Build mbedtls and the examples. This may take a long time if this is your first compilation: - - ``` - $ yotta build - ``` - -5. Copy `build/frdm-k64f-gcc/test/mbedtls-test-example-authcrypt.bin` to your mbed board and wait until the LED next to the USB port stops blinking. - -6. Start the serial terminal emulator and connect to the virtual serial port presented by FRDM-K64F. - - Use the following settings: - - * 115200 baud (not 9600). - * 8N1. - * No flow control. - -7. Press the Reset button on the board. - -8. The output in the terminal window should look like: - - ``` - {{timeout;10}} - {{host_test_name;default}} - {{description;mbed TLS example authcrypt}} - {{test_id;MBEDTLS_EX_AUTHCRYPT}} - {{start}} - - - plaintext message: 536f6d65207468696e67732061726520626574746572206c65667420756e7265616400 - ciphertext: c57f7afb94f14c7977d785d08682a2596bd62ee9dcf216b8cccd997afee9b402f5de1739e8e6467aa363749ef39392e5c66622b01c7203ec0a3d14 - decrypted: 536f6d65207468696e67732061726520626574746572206c65667420756e7265616400 - - DONE - {{success}} - {{end}} - ``` - -The actual output for the ciphertext line will vary on each run because of the use of a random nonce in the encryption process. diff --git a/yotta/data/example-authcrypt/main.cpp b/yotta/data/example-authcrypt/main.cpp deleted file mode 100644 index 23fad27926..0000000000 --- a/yotta/data/example-authcrypt/main.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Hello world example of using the authenticated encryption with mbed TLS - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#include "mbedtls/cipher.h" -#include "mbedtls/entropy.h" -#include "mbedtls/ctr_drbg.h" - -#include -#include - -static void print_hex(const char *title, const unsigned char buf[], size_t len) -{ - printf("%s: ", title); - - for (size_t i = 0; i < len; i++) - printf("%02x", buf[i]); - - printf("\r\n"); -} - -/* - * The pre-shared key. Should be generated randomly and be unique to the - * device/channel/etc. Just used a fixed on here for simplicity. - */ -static const unsigned char secret_key[16] = { - 0xf4, 0x82, 0xc6, 0x70, 0x3c, 0xc7, 0x61, 0x0a, - 0xb9, 0xa0, 0xb8, 0xe9, 0x87, 0xb8, 0xc1, 0x72, -}; - -static int example(void) -{ - /* message that should be protected */ - const char message[] = "Some things are better left unread"; - /* metadata transmitted in the clear but authenticated */ - const char metadata[] = "eg sequence number, routing info"; - /* ciphertext buffer large enough to hold message + nonce + tag */ - unsigned char ciphertext[128] = { 0 }; - int ret; - - printf("\r\n\r\n"); - print_hex("plaintext message", (unsigned char *) message, sizeof message); - - /* - * Setup random number generator - * (Note: later this might be done automatically.) - */ - mbedtls_entropy_context entropy; /* entropy pool for seeding PRNG */ - mbedtls_ctr_drbg_context drbg; /* pseudo-random generator */ - - mbedtls_entropy_init(&entropy); - mbedtls_ctr_drbg_init(&drbg); - - /* Seed the PRNG using the entropy pool, and throw in our secret key as an - * additional source of randomness. */ - ret = mbedtls_ctr_drbg_seed(&drbg, mbedtls_entropy_func, &entropy, - secret_key, sizeof (secret_key)); - if (ret != 0) { - printf("mbedtls_ctr_drbg_init() returned -0x%04X\r\n", -ret); - return 1; - } - - /* - * Setup AES-CCM contex - */ - mbedtls_cipher_context_t ctx; - - mbedtls_cipher_init(&ctx); - - ret = mbedtls_cipher_setup(&ctx, mbedtls_cipher_info_from_type(MBEDTLS_CIPHER_AES_128_CCM)); - if (ret != 0) { - printf("mbedtls_cipher_setup() returned -0x%04X\r\n", -ret); - return 1; - } - - ret = mbedtls_cipher_setkey(&ctx, secret_key, 8 * sizeof secret_key, MBEDTLS_ENCRYPT); - if (ret != 0) { - printf("mbedtls_cipher_setkey() returned -0x%04X\r\n", -ret); - return 1; - } - - /* - * Encrypt-authenticate the message and authenticate additional data - * - * First generate a random 8-byte nonce. - * Put it directly in the output buffer as the recipient will need it. - * - * Warning: you must never re-use the same (key, nonce) pair. One of the - * best ways to ensure this to use a counter for the nonce. However this - * means you should save the counter accross rebots, if the key is a - * long-term one. The alternative we choose here is to generate the nonce - * randomly. However it only works if you have a good source of - * randomness. - */ - const size_t nonce_len = 8; - mbedtls_ctr_drbg_random(&drbg, ciphertext, nonce_len); - - size_t ciphertext_len = 0; - /* Go for a conservative 16-byte (128-bit) tag - * and append it to the ciphertext */ - const size_t tag_len = 16; - ret = mbedtls_cipher_auth_encrypt(&ctx, ciphertext, nonce_len, - (const unsigned char *) metadata, sizeof metadata, - (const unsigned char *) message, sizeof message, - ciphertext + nonce_len, &ciphertext_len, - ciphertext + nonce_len + sizeof message, tag_len ); - if (ret != 0) { - printf("mbedtls_cipher_auth_encrypt() returned -0x%04X\r\n", -ret); - return 1; - } - ciphertext_len += nonce_len + tag_len; - - /* - * The following information should now be transmitted: - * - first ciphertext_len bytes of ciphertext buffer - * - metadata if not already transmitted elsewhere - */ - print_hex("ciphertext", ciphertext, ciphertext_len); - - /* - * Decrypt-authenticate - */ - unsigned char decrypted[128] = { 0 }; - size_t decrypted_len = 0; - - ret = mbedtls_cipher_setkey(&ctx, secret_key, 8 * sizeof secret_key, MBEDTLS_DECRYPT); - if (ret != 0) { - printf("mbedtls_cipher_setkey() returned -0x%04X\r\n", -ret); - return 1; - } - - ret = mbedtls_cipher_auth_decrypt(&ctx, - ciphertext, nonce_len, - (const unsigned char *) metadata, sizeof metadata, - ciphertext + nonce_len, ciphertext_len - nonce_len - tag_len, - decrypted, &decrypted_len, - ciphertext + ciphertext_len - tag_len, tag_len ); - /* Checking the return code is CRITICAL for security here */ - if (ret == MBEDTLS_ERR_CIPHER_AUTH_FAILED) { - printf("Something bad is happening! Data is not authentic!\r\n"); - return 1; - } - if (ret != 0) { - printf("mbedtls_cipher_authdecrypt() returned -0x%04X\r\n", -ret); - return 1; - } - - print_hex("decrypted", decrypted, decrypted_len); - - printf("\r\nDONE\r\n"); - - return 0; -} - -#if defined(TARGET_LIKE_MBED) - -#include "mbed-drivers/test_env.h" -#include "minar/minar.h" - -static void run() { - MBED_HOSTTEST_TIMEOUT(10); - MBED_HOSTTEST_SELECT(default); - MBED_HOSTTEST_DESCRIPTION(mbed TLS example authcrypt); - MBED_HOSTTEST_START("MBEDTLS_EX_AUTHCRYPT"); - MBED_HOSTTEST_RESULT(example() == 0); -} - -void app_start(int, char*[]) { - /* Use 115200 bps for consistency with other examples */ - get_stdio_serial().baud(115200); - minar::Scheduler::postCallback(mbed::util::FunctionPointer0(run).bind()); -} - -#else - -int main() { - return example(); -} - -#endif diff --git a/yotta/data/example-benchmark/README.md b/yotta/data/example-benchmark/README.md deleted file mode 100644 index 715abee277..0000000000 --- a/yotta/data/example-benchmark/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# mbed TLS Benchmark Example - -This application benchmarks the various cryptographic primitives offered by mbed TLS. - -## Pre-requisites - -To build and run this example you must have: - -* A computer with the following software installed: - * [CMake](http://www.cmake.org/download/). - * [yotta](https://github.com/ARMmbed/yotta). Please note that **yotta has its own set of dependencies**, listed in the [installation instructions](http://armmbed.github.io/yotta/#installing-on-windows). - * [Python](https://www.python.org/downloads/). - * [The ARM GCC toolchain](https://launchpad.net/gcc-arm-embedded). - * A serial terminal emulator (Like screen, pySerial and cu). -* An [FRDM-K64F](http://developer.mbed.org/platforms/FRDM-K64F/) development board, or another board supported by mbed OS (in which case you'll have to substitute frdm-k64f-gcc with the appropriate target in the instructions below). -* A micro-USB cable. -* If your OS is Windows, please follow the installation instructions [for the serial port driver](https://developer.mbed.org/handbook/Windows-serial-configuration). - -## Getting started - -1. Connect the FRDM-K64F to the computer with the micro-USB cable, being careful to use the "OpenSDA" connector on the target board. - -2. Navigate to the mbedtls directory supplied with your release and open a terminal. - -3. Set the yotta target: - - ``` - yotta target frdm-k64f-gcc - ``` - -4. Build mbedtls and the examples. This may take a long time if this is your first compilation: - - ``` - $ yotta build - ``` - -5. Copy `build/frdm-k64f-gcc/test/mbedtls-test-example-benchmark.bin` to your mbed board and wait until the LED next to the USB port stops blinking. - -6. Start the serial terminal emulator and connect to the virtual serial port presented by FRDM-K64F. - - Use the following settings: - - * 115200 baud (not 9600). - * 8N1. - * No flow control. - -7. Press the Reset button on the board. - -8. The output in the terminal window should look like: - - ``` - {{timeout;150}} - {{host_test_name;default}} - {{description;mbed TLS benchmark program}} - {{test_id;MBEDTLS_BENCHMARK}} - {{start}} - - - SHA-1 : 3644 KiB/s, 32 cycles/byte - SHA-256 : 1957 KiB/s, 59 cycles/byte - SHA-512 : 587 KiB/s, 200 cycles/byte - AES-CBC-128 : 1359 KiB/s, 86 cycles/byte - AES-CBC-192 : 1183 KiB/s, 99 cycles/byte - AES-CBC-256 : 1048 KiB/s, 111 cycles/byte - AES-GCM-128 : 421 KiB/s, 279 cycles/byte - AES-GCM-192 : 403 KiB/s, 292 cycles/byte - AES-GCM-256 : 385 KiB/s, 305 cycles/byte - AES-CCM-128 : 542 KiB/s, 216 cycles/byte - AES-CCM-192 : 484 KiB/s, 242 cycles/byte - AES-CCM-256 : 437 KiB/s, 268 cycles/byte - CTR_DRBG (NOPR) : 1002 KiB/s, 117 cycles/byte - CTR_DRBG (PR) : 705 KiB/s, 166 cycles/byte - HMAC_DRBG SHA-1 (NOPR) : 228 KiB/s, 517 cycles/byte - HMAC_DRBG SHA-1 (PR) : 210 KiB/s, 561 cycles/byte - HMAC_DRBG SHA-256 (NOPR) : 212 KiB/s, 557 cycles/byte - HMAC_DRBG SHA-256 (PR) : 185 KiB/s, 637 cycles/byte - RSA-2048 : 41 ms/ public - RSA-2048 : 1349 ms/private - RSA-4096 : 134 ms/ public - RSA-4096 : 7149 ms/private - ECDSA-secp384r1 : 640 ms/sign - ECDSA-secp256r1 : 387 ms/sign - ECDSA-secp384r1 : 1233 ms/verify - ECDSA-secp256r1 : 751 ms/verify - ECDHE-secp384r1 : 1191 ms/handshake - ECDHE-secp256r1 : 730 ms/handshake - ECDHE-Curve25519 : 611 ms/handshake - ECDH-secp384r1 : 584 ms/handshake - ECDH-secp256r1 : 365 ms/handshake - ECDH-Curve25519 : 303 ms/handshake - - {{success}} - {{end}} - ``` - -Any performance data generated by this example application are indicative only of the performance of the mbed TLS module on the platform it's executed on. - -Differences in the integration of mbed TLS into the platform, such as whether all available hardware accelerators have been used or not, can lead to significant differences in performance, and so results from the program are not intended to be used to meaningfully compare platforms. - -The figures may also slightly change from execution to execution due to variations in the timing functions. diff --git a/yotta/data/example-benchmark/main.cpp b/yotta/data/example-benchmark/main.cpp deleted file mode 100644 index d13cde550a..0000000000 --- a/yotta/data/example-benchmark/main.cpp +++ /dev/null @@ -1,951 +0,0 @@ -/* - * Benchmark demonstration program - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(TARGET_LIKE_MBED) - -#include - -int main() { - printf("this version of this program only works on mbed OS\n"); - return 0; -} - -#else - -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -#if defined(MBEDTLS_PLATFORM_C) -#include "mbedtls/platform.h" -#else -#include -#define mbedtls_exit exit -#define mbedtls_printf printf -#define mbedtls_snprintf snprintf -#define mbedtls_free free -#endif - -#include - -#include "mbedtls/md4.h" -#include "mbedtls/md5.h" -#include "mbedtls/ripemd160.h" -#include "mbedtls/sha1.h" -#include "mbedtls/sha256.h" -#include "mbedtls/sha512.h" -#include "mbedtls/arc4.h" -#include "mbedtls/des.h" -#include "mbedtls/aes.h" -#include "mbedtls/blowfish.h" -#include "mbedtls/camellia.h" -#include "mbedtls/gcm.h" -#include "mbedtls/ccm.h" -#include "mbedtls/havege.h" -#include "mbedtls/ctr_drbg.h" -#include "mbedtls/hmac_drbg.h" -#include "mbedtls/rsa.h" -#include "mbedtls/pk.h" -#include "mbedtls/dhm.h" -#include "mbedtls/ecdsa.h" -#include "mbedtls/ecdh.h" -#include "mbedtls/error.h" - -#include "mbed-drivers/mbed.h" - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) -#include "mbedtls/memory_buffer_alloc.h" -#endif - -#define RSA_PRIVATE_KEY_2048 \ -"-----BEGIN RSA PRIVATE KEY-----\r\n" \ -"MIIEogIBAAKCAQEA2dwVr+IMGEtA2/MCP6fA5eb/6B18Bq6e7gw8brNPkm3E6LyR\r\n" \ -"4DnMJVxZmw3bPDKBDoKzfntkMESi/Yw5UopLtVfjGfWeQWPClqffLZBsZ60BRAsg\r\n" \ -"/g+ID5tgzxSuxzftypK59uexOVCAm7hCKZHGO3DbI7bLY27j7VAgEP7d/yuaz5Fx\r\n" \ -"Kl/vu7shqrBoz6ABJVJD3KC8nUiMRUCXRINmxbyUUjA4DnicZv6+xrGKr36r6M8h\r\n" \ -"VYLa5msKc8WzbnBWzpUsrpb4/r7ML+qp92gdSfVJ8/bLiU7h2C7faDA59uaqrFK9\r\n" \ -"xmDdx7FaWhGQs3LWW6w1UNgkPS0FDYUslpsnsQIDAQABAoIBAC7IJNwM5V3+IuJY\r\n" \ -"T35Nzo1PyloUosJokvY5KGz5Ejg2XBdCDu0gXCcVqqQyGIbXrYDpLhQV+RCoXHun\r\n" \ -"tdN0oQdC5SB47s/J1Uo2qCUHo0+sBd6PqTkFKsl3KxWssk9TQjvCwC412IefMs69\r\n" \ -"hW+ZvwCanmQP56LleApIr2oW4KLfW8Ry/QfZlua+dizctdN7+H1mWwgZQTY9T27J\r\n" \ -"6RtGRA5NVkKVPzIHVJfdpKoO7xGg1g06aEbPB/VmGvZaaFWWnaf7uRvFjLZecBLu\r\n" \ -"QSx2DA/GDjirlDYj99PJb7DtB4xRtKzsyw0o+xapC8w6OtIl/3xFt9moCu2jGrsx\r\n" \ -"vpjHdfECgYEA7fSACRseIs9gAIVX8wq6gayTpA47DHYWAD6IQfIj35SJ+AgsvbFF\r\n" \ -"4AmrwDhcJVPmDy1N4nLBfyGAMt/2CfiYkdkW6QFX/ULRMMBL/G7kWV8hYQDICB2g\r\n" \ -"xaMRN1lPCmFq6BkSWjwIYTnYDFBDWVm1GVT8TMtJoM8Erej9qC0PeFUCgYEA6mF3\r\n" \ -"bigO3t8f5sig+XepaftEUbkJMzo72TVRnIR2ycdR2ihelPQ+25g9dwV0ZA5XXhBS\r\n" \ -"DKOABWjMM739Mwmy9v26Dlmu9R01zHQktMvtEAyfz7lk2NF0aMuj8285OJUBf9bz\r\n" \ -"Cq3MjtMCD+4CZ6iaEqCdUKOuxfpx5cWVJV+qve0CgYBhD1YaYMFOGaBjFgDl1f51\r\n" \ -"Xltqk5NqZdBbkSYrIAWZ8RDF5y+4wFJsLAWuhk6vuyUgE66tK3nZzWRpXAkT0B8L\r\n" \ -"fq1lpXKqj1KcvBNCiEkEW1VWJ+dvyAYIF5eyJ++hoFLnETL3M32HivyhKSwPihPg\r\n" \ -"nVW8TT9fJJIYDe1JZ/fjcQKBgHJfv7UsrR0LSvkG3K8AOtbx+8PZhOjPuRbk0v+L\r\n" \ -"EKCkuIe5/XW4vtfQMeZb7hFJgk7vrepm+vkoy8VQKDf4urGW3W1VTHBmobM01hi4\r\n" \ -"DuYvEul+Mf0wMRtWjJolo4m+BO5KiW2jpFfqFm6JmfjVqOIAKOSKC6am8V/MDF0h\r\n" \ -"kyN9AoGAT9oOiEXMolbkDZw/QCaBiRoAGlGlNYUkJ+58U6OjIZLISw6aFv+Y2uE0\r\n" \ -"mEImItjuYZtSYKblWikp6ldPoKlt9bwEFe3c6IZ8kJ3+xyEyAGrvjXjEY7PzP6dp\r\n" \ -"Ajbjp9X9uocEBv9W/KsBLdQ7yizcL/toHwdBO4vQqmqTvAc5IIw=\r\n" \ -"-----END RSA PRIVATE KEY-----\r\n" - -#define RSA_PRIVATE_KEY_4096 \ -"-----BEGIN RSA PRIVATE KEY-----\r\n" \ -"MIIJKgIBAAKCAgEAmkdGjoIshJuOt2NO47qB3Z3yyvmLg2j351isItSNuFQU3qr+\r\n" \ -"jXHIeANf03yw/K0Zvos8RPd+CqLjoxAQL3QDH4bZAl88bIo29i+SANbNSrKQmc0k\r\n" \ -"pH+yzw3alDzO0GZaOPZjsbo6AwBrno5msi0vRuC2aY8vGLPsZWSyLai7tneS1j/o\r\n" \ -"vYW6XIo8Cj61j2Ypy9HhVUW/4Wc+zAT25D/x7jTpkqJLWWT+YzibNbOY48M5eJcB\r\n" \ -"6/sMyUIeI3/u/wXyMrooNyLiCpedkuHRA0m7u5cWPTUISTunSRlVFij/NHJjuU8e\r\n" \ -"wA3B29yfZFsUqDEnyc+OxniIueAixTomVszxAaVn8zFEbYhFMPqziiFp99u3jfeG\r\n" \ -"k1q9mmUi/uCfUC4e2IC5rqq1ZbKSduH7Ug/Vn2bGQahww0sZFRHDXFrnBcotcW+M\r\n" \ -"bnC290VBDnYgzmdYrIOxuPb2aUwJo4ZlbKh5uBB1PigMuyhLKibQ1a+V5ZJGdpP6\r\n" \ -"SE9PGIdgYWSmh2QEMuLE6v+wTO2LQ5JgqsvFfi3GIZvkn0s8jTS72Jq2uMkFkMer\r\n" \ -"UBjPDYaSPy5kpo103KerWs+cMPOJ/3FtZzI++7MoSUTkWVr1ySQFt5i1EIZ/0Thi\r\n" \ -"jut2jNe8a4AoA3TtC8Rkk/3AIIbg8MVNT4EnT+KHROTMu6gET1oJ3YfBRpUCAwEA\r\n" \ -"AQKCAgEAhuNSmT7PVZH8kfLOAuYKrY1vvm+4v0iDl048Eqfs0QESziyLK3gUYnnw\r\n" \ -"yqP2yrU+EQ8Dvvj0xq/sf6GHxTWVlXb9PcmutueRbmXhLcKg83J0Y0StiPXtjIL8\r\n" \ -"XSddW3Bh6fPi7n14Qy+W6KZwu9AtybanRlvePabyRSRpdOpWVQ7u30w5XZsSed6S\r\n" \ -"6BI0BBC68m2qqje1sInoqdCdXKtcB31TytUDNEHM+UuAyM8iGeGS2hCNqZlycHTS\r\n" \ -"jQ9KEsdMH3YLu0lQgRpWtxmg+VL6ROWwmAtKF12EwbDYZ+uoVl69OkQnCpv8pxKa\r\n" \ -"ec/4m6V+uEA1AOpaAMorHG3fH31IKWC/fTZstovgO/eG2XCtlbcCoWCQ7amFq16l\r\n" \ -"Gh1UKeBHxMXpDj4oDmIUGUvgzSNnEeSN/v76losWvWYQDjXR/LMDa/CNYsD8BmJR\r\n" \ -"PZidIjIXdVRlYOhA7ljtySQvp6RBujBfw3tsVMyZw2XzXFwM9O89b1xXC6+M5jf9\r\n" \ -"DXs/U7Fw+J9qq/YpByABcPCwWdttwdQFRbOxwxaSOKarIqS87TW1JuFcNJ59Ut6G\r\n" \ -"kMvAg6gC34U+0ktkG/AmI1hgjC+P7ErHCXBR2xARoGzcO/CMZF59S+Z2HFchpTSP\r\n" \ -"5T2o4mGy3VfHSBidQQrcZRukg8ZP8M1NF3bXjpY6QZpeLHc4oHECggEBAMjdgzzk\r\n" \ -"xp4mIYFxAEiXYt7tzuUXJk+0UpEJj5uboWLirUZqZmNUPyh6WDnzlREBH++Ms0LO\r\n" \ -"+AWSfaGPDoMb0NE2j3c4FRWAhe7Vn6lj7nLVpF2RdwRo88yGerZ4uwGMY8NUQCtn\r\n" \ -"zum3J7eCJ5DojiceRb6uMxTJ8xZmUC4W2f3J/lrR7wlYjyVnnHqH5HcemYUipWSw\r\n" \ -"sM0/cHp3lrz2VWrbAEu8HVpklvDQpdAgl7cjXt/JHYawY+p426IF/PzQSRROnzgy\r\n" \ -"4WI8FVYNV2tgu0TOFURbkkEvuj/duDKeooUIF0G0XHzha5oAX/j0iWiHbrOF6wHj\r\n" \ -"0xeajL9msKBnmD8CggEBAMSgLWmv7G31x4tndJCcXnX4AyVL7KpygAx/ZwCcyTR8\r\n" \ -"rY1rO07f/ta2noEra/xmEW/BW98qJFCHSU2nSLAQ5FpFSWyuQqrnffrMJnfWyvpr\r\n" \ -"ceQ0yQ/MiA6/JIOvGAjabcspzZijxzGp+Qk3eTT0yOXLSVOCH9B9XVHLodcy4PQM\r\n" \ -"KSCxy0vVHhVNl2SdPEwTXRmxk99Q/rw6IHVpQxBq1OhQt05nTKT+rZMD/grSK22e\r\n" \ -"my2F0DodAJwLo063Zv3RXQZhDYodMmjcp9Hqrtvj9P3HD7J3z6ACiV3SCi8cZumL\r\n" \ -"bSmnKCcd0bb45+aOWm31ieECJuIcJ9rOREEa/KDYTCsCggEBAMG5WkSVhLWsou37\r\n" \ -"dUGNuA63nq42SH3gtS0q4nU6gUkkw+dA4ST1cMByVrr1oRQ4WHup4I4TnQOKyF3T\r\n" \ -"4jQy1I+ipnVeAn+tZ/7zyzwMpEHeqNqRXA9FxbTBEoMAJ6QTqXgOvqDeSqIAQm7r\r\n" \ -"OYu5rrgtqyh/S8bGCwvUe4ooAfCSKx2ekYMbBVwW9MT8YS09tuS/iHJ3Mt2RTMLg\r\n" \ -"qeHvVmxrcXqZoFm44Ba7tN/pP0mi9HKyviZT4tmV3IYEbn3JyGGsfkUuVU9wEUfg\r\n" \ -"MCrgrVxrwfketAzooiHMjkVL2ASjzAJTmEvdAPETYXxzJD9LN0ovY3t8JfAC37IN\r\n" \ -"sVXS8/MCggEBALByOS59Y4Ktq1rLBQx8djwQyuneP0wZohUVAx7Gk7xZIfklQDyg\r\n" \ -"v/R4PrcVezstcPpDnykdjScCsGJR+uWc0v667I/ttP/e6utz5hVmmBGu965dPAzE\r\n" \ -"c1ggaSkOqFfRg/Nr2Qbf+fH0YPnHYSqHe/zSt0OMIvaaeXLcdKhEDSCUBRhE1HWB\r\n" \ -"kxR046WzgBeYzNQwycz9xwqsctJKGpeR9ute+5ANHPd3X9XtID0fqz8ctI5eZaSw\r\n" \ -"wApIW01ZQcAF8B+4WkkVuFXnpWW33yCOaRyPVOPHpnclr5WU1fS+3Q85QkW9rkej\r\n" \ -"97zlkl0QY9AHJqrXnoML1ywAK7ns+MVyNK8CggEAf62xcKZhOb1djeF72Ms+i/i/\r\n" \ -"WIAq4Q4YpsElgvJTHpNH2v9g4ngSTKe3ws3bGc502sWRlhcoTFMOW2rJNe/iqKkb\r\n" \ -"3cdeTkseDbpqozmJWz9dJWSVtXas2bZjzBEa//gQ7nHGVeQdqZJQ9rxPsoOAkfpi\r\n" \ -"qCFrmfUVUqC53e3XMt8+W+aSvKl+JZiB9ozkO9A6Q0vfQLKtjUMdQE3XaCFQT8DI\r\n" \ -"smaLBlBmeRaBpc02ENeC4ADlWosm1SwgxqMhuh2Alba/GrHOoPlVl4hDs9Fb5a6R\r\n" \ -"rmpXSt07GAxnG6j9jssA95E4rc1zO0CVKG5bvjVTxwi/sT0/VVX7VsJM4uTAQg==\r\n" \ -"-----END RSA PRIVATE KEY-----\r\n" - -#if defined _MSC_VER && !defined snprintf -#define snprintf _snprintf -#endif - -/* - * For heap usage estimates, we need an estimate of the overhead per allocated - * block. ptmalloc2/3 (used in gnu libc for instance) uses 2 size_t per block, - * so use that as our baseline. - */ -#define MEM_BLOCK_OVERHEAD ( 2 * sizeof( size_t ) ) - -/* - * Size to use for the malloc buffer if MEMORY_BUFFER_ALLOC_C is defined. - */ -#define HEAP_SIZE (1u << 16) // 64k - -#define BUFSIZE 1024 -#define HEADER_FORMAT " %-24s : " -#define TITLE_LEN 25 - -#define OPTIONS \ - "md4, md5, ripemd160, sha1, sha256, sha512,\r\n" \ - "arc4, des3, des, aes_cbc, aes_gcm, aes_ccm, camellia, blowfish,\r\n" \ - "havege, ctr_drbg, hmac_drbg\r\n" \ - "rsa, dhm, ecdsa, ecdh.\r\n" - -#if defined(MBEDTLS_ERROR_C) -#define PRINT_ERROR \ - mbedtls_strerror( ret, ( char * )tmp, sizeof( tmp ) ); \ - mbedtls_printf( "FAILED: %s\r\n", tmp ); -#else -#define PRINT_ERROR \ - mbedtls_printf( "FAILED: -0x%04x\r\n", -ret ); -#endif - -static unsigned long mbedtls_timing_hardclock( void ) -{ - static int dwt_started = 0; - - if( dwt_started == 0 ) - { - CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; - DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; - } - - return( DWT->CYCCNT ); -} - -static volatile int alarmed; -static void alarm() { alarmed = 1; } - -#define TIME_AND_TSC( TITLE, CODE ) \ -do { \ - unsigned long i, j, tsc; \ - Timeout t; \ - \ - mbedtls_printf( HEADER_FORMAT, TITLE ); \ - fflush( stdout ); \ - \ - for( i = 1, alarmed = 0, t.attach( alarm, 1.0 ); !alarmed; i++ ) \ - { \ - CODE; \ - } \ - \ - tsc = mbedtls_timing_hardclock(); \ - for( j = 0; j < 1024; j++ ) \ - { \ - CODE; \ - } \ - \ - mbedtls_printf( "%9lu KiB/s, %9lu cycles/byte\r\n", \ - i * BUFSIZE / 1024, \ - ( mbedtls_timing_hardclock() - tsc ) / ( j * BUFSIZE ) ); \ -} while( 0 ) - -#if defined(MBEDTLS_ERROR_C) -#define PRINT_ERROR \ - mbedtls_strerror( ret, ( char * )tmp, sizeof( tmp ) ); \ - mbedtls_printf( "FAILED: %s\r\n", tmp ); -#else -#define PRINT_ERROR \ - mbedtls_printf( "FAILED: -0x%04x\r\n", -ret ); -#endif - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_MEMORY_DEBUG) - -#define MEMORY_MEASURE_INIT \ - size_t max_used, max_blocks, max_bytes; \ - size_t prv_used, prv_blocks; \ - mbedtls_memory_buffer_alloc_cur_get( &prv_used, &prv_blocks ); \ - mbedtls_memory_buffer_alloc_max_reset( ); - -#define MEMORY_MEASURE_PRINT( title_len ) \ - mbedtls_memory_buffer_alloc_max_get( &max_used, &max_blocks ); \ - for( i = 12 - title_len; i != 0; i-- ) mbedtls_printf( " " ); \ - max_used -= prv_used; \ - max_blocks -= prv_blocks; \ - max_bytes = max_used + MEM_BLOCK_OVERHEAD * max_blocks; \ - mbedtls_printf( "%6u heap bytes", (unsigned) max_bytes ); - -#else -#define MEMORY_MEASURE_INIT -#define MEMORY_MEASURE_PRINT( title_len ) -#endif - -#define TIME_PUBLIC( TITLE, TYPE, CODE ) \ -do { \ - unsigned long ms; \ - int ret = 0; \ - Timer t; \ - MEMORY_MEASURE_INIT; \ - \ - mbedtls_printf( HEADER_FORMAT, TITLE ); \ - fflush( stdout ); \ - \ - t.start(); \ - CODE; \ - t.stop(); \ - ms = t.read_ms(); \ - \ - if( ret != 0 ) \ - { \ - PRINT_ERROR; \ - } \ - else \ - { \ - mbedtls_printf( "%6lu ms/" TYPE, ms ); \ - MEMORY_MEASURE_PRINT( sizeof( TYPE ) + 1 ); \ - mbedtls_printf( "\r\n" ); \ - } \ -} while( 0 ) - -static int myrand( void *rng_state, unsigned char *output, size_t len ) -{ - size_t use_len; - int rnd; - - if( rng_state != NULL ) - rng_state = NULL; - - while( len > 0 ) - { - use_len = len; - if( use_len > sizeof(int) ) - use_len = sizeof(int); - - rnd = rand(); - memcpy( output, &rnd, use_len ); - output += use_len; - len -= use_len; - } - - return( 0 ); -} - -/* - * Clear some memory that was used to prepare the context - */ -#if defined(MBEDTLS_ECP_C) -void ecp_clear_precomputed( mbedtls_ecp_group *grp ) -{ - if( grp->T != NULL ) - { - size_t i; - for( i = 0; i < grp->T_size; i++ ) - mbedtls_ecp_point_free( &grp->T[i] ); - mbedtls_free( grp->T ); - } - grp->T = NULL; - grp->T_size = 0; -} -#else -#define ecp_clear_precomputed( g ) -#endif - -unsigned char buf[BUFSIZE]; - -typedef struct { - char md4, md5, ripemd160, sha1, sha256, sha512, - arc4, des3, des, aes_cbc, aes_gcm, aes_ccm, camellia, blowfish, - havege, ctr_drbg, hmac_drbg, - rsa, dhm, ecdsa, ecdh; -} todo_list; - -int benchmark( int argc, char *argv[] ) -{ - int i; - unsigned char tmp[200]; - char title[TITLE_LEN]; - todo_list todo; -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - unsigned char malloc_buf[HEAP_SIZE] = { 0 }; -#endif - - if( argc <= 1 ) - { - memset( &todo, 1, sizeof( todo ) ); - } - else - { - memset( &todo, 0, sizeof( todo ) ); - - for( i = 1; i < argc; i++ ) - { - if( strcmp( argv[i], "md4" ) == 0 ) - todo.md4 = 1; - else if( strcmp( argv[i], "md5" ) == 0 ) - todo.md5 = 1; - else if( strcmp( argv[i], "ripemd160" ) == 0 ) - todo.ripemd160 = 1; - else if( strcmp( argv[i], "sha1" ) == 0 ) - todo.sha1 = 1; - else if( strcmp( argv[i], "sha256" ) == 0 ) - todo.sha256 = 1; - else if( strcmp( argv[i], "sha512" ) == 0 ) - todo.sha512 = 1; - else if( strcmp( argv[i], "arc4" ) == 0 ) - todo.arc4 = 1; - else if( strcmp( argv[i], "des3" ) == 0 ) - todo.des3 = 1; - else if( strcmp( argv[i], "des" ) == 0 ) - todo.des = 1; - else if( strcmp( argv[i], "aes_cbc" ) == 0 ) - todo.aes_cbc = 1; - else if( strcmp( argv[i], "aes_gcm" ) == 0 ) - todo.aes_gcm = 1; - else if( strcmp( argv[i], "aes_ccm" ) == 0 ) - todo.aes_ccm = 1; - else if( strcmp( argv[i], "camellia" ) == 0 ) - todo.camellia = 1; - else if( strcmp( argv[i], "blowfish" ) == 0 ) - todo.blowfish = 1; - else if( strcmp( argv[i], "havege" ) == 0 ) - todo.havege = 1; - else if( strcmp( argv[i], "ctr_drbg" ) == 0 ) - todo.ctr_drbg = 1; - else if( strcmp( argv[i], "hmac_drbg" ) == 0 ) - todo.hmac_drbg = 1; - else if( strcmp( argv[i], "rsa" ) == 0 ) - todo.rsa = 1; - else if( strcmp( argv[i], "dhm" ) == 0 ) - todo.dhm = 1; - else if( strcmp( argv[i], "ecdsa" ) == 0 ) - todo.ecdsa = 1; - else if( strcmp( argv[i], "ecdh" ) == 0 ) - todo.ecdh = 1; - else - { - mbedtls_printf( "Unrecognized option: %s\r\n", argv[i] ); - mbedtls_printf( "Available options: " OPTIONS ); - } - } - } - - mbedtls_printf( "\r\n\r\n" ); - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - mbedtls_memory_buffer_alloc_init( malloc_buf, sizeof( malloc_buf ) ); -#endif - memset( buf, 0xAA, sizeof( buf ) ); - memset( tmp, 0xBB, sizeof( tmp ) ); - -#if defined(MBEDTLS_MD4_C) - if( todo.md4 ) - TIME_AND_TSC( "MD4", mbedtls_md4( buf, BUFSIZE, tmp ) ); -#endif - -#if defined(MBEDTLS_MD5_C) - if( todo.md5 ) - TIME_AND_TSC( "MD5", mbedtls_md5( buf, BUFSIZE, tmp ) ); -#endif - -#if defined(MBEDTLS_RIPEMD160_C) - if( todo.ripemd160 ) - TIME_AND_TSC( "RIPEMD160", mbedtls_ripemd160( buf, BUFSIZE, tmp ) ); -#endif - -#if defined(MBEDTLS_SHA1_C) - if( todo.sha1 ) - TIME_AND_TSC( "SHA-1", mbedtls_sha1( buf, BUFSIZE, tmp ) ); -#endif - -#if defined(MBEDTLS_SHA256_C) - if( todo.sha256 ) - TIME_AND_TSC( "SHA-256", mbedtls_sha256( buf, BUFSIZE, tmp, 0 ) ); -#endif - -#if defined(MBEDTLS_SHA512_C) - if( todo.sha512 ) - TIME_AND_TSC( "SHA-512", mbedtls_sha512( buf, BUFSIZE, tmp, 0 ) ); -#endif - -#if defined(MBEDTLS_ARC4_C) - if( todo.arc4 ) - { - mbedtls_arc4_context arc4; - mbedtls_arc4_init( &arc4 ); - mbedtls_arc4_setup( &arc4, tmp, 32 ); - TIME_AND_TSC( "ARC4", mbedtls_arc4_crypt( &arc4, BUFSIZE, buf, buf ) ); - mbedtls_arc4_free( &arc4 ); - } -#endif - -#if defined(MBEDTLS_DES_C) && defined(MBEDTLS_CIPHER_MODE_CBC) - if( todo.des3 ) - { - mbedtls_des3_context des3; - mbedtls_des3_init( &des3 ); - mbedtls_des3_set3key_enc( &des3, tmp ); - TIME_AND_TSC( "3DES", - mbedtls_des3_crypt_cbc( &des3, MBEDTLS_DES_ENCRYPT, BUFSIZE, tmp, buf, buf ) ); - mbedtls_des3_free( &des3 ); - } - - if( todo.des ) - { - mbedtls_des_context des; - mbedtls_des_init( &des ); - mbedtls_des_setkey_enc( &des, tmp ); - TIME_AND_TSC( "DES", - mbedtls_des_crypt_cbc( &des, MBEDTLS_DES_ENCRYPT, BUFSIZE, tmp, buf, buf ) ); - mbedtls_des_free( &des ); - } -#endif - -#if defined(MBEDTLS_AES_C) -#if defined(MBEDTLS_CIPHER_MODE_CBC) - if( todo.aes_cbc ) - { - int keysize; - mbedtls_aes_context aes; - mbedtls_aes_init( &aes ); - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "AES-CBC-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_aes_setkey_enc( &aes, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, BUFSIZE, tmp, buf, buf ) ); - } - mbedtls_aes_free( &aes ); - } -#endif -#if defined(MBEDTLS_GCM_C) - if( todo.aes_gcm ) - { - int keysize; - mbedtls_gcm_context gcm; - - mbedtls_gcm_init( &gcm ); - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "AES-GCM-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_gcm_setkey( &gcm, MBEDTLS_CIPHER_ID_AES, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_gcm_crypt_and_tag( &gcm, MBEDTLS_GCM_ENCRYPT, BUFSIZE, tmp, - 12, NULL, 0, buf, buf, 16, tmp ) ); - - mbedtls_gcm_free( &gcm ); - } - } -#endif -#if defined(MBEDTLS_CCM_C) - if( todo.aes_ccm ) - { - int keysize; - mbedtls_ccm_context ccm; - - mbedtls_ccm_init( &ccm ); - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "AES-CCM-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_ccm_setkey( &ccm, MBEDTLS_CIPHER_ID_AES, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_ccm_encrypt_and_tag( &ccm, BUFSIZE, tmp, - 12, NULL, 0, buf, buf, tmp, 16 ) ); - - mbedtls_ccm_free( &ccm ); - } - } -#endif -#endif - -#if defined(MBEDTLS_CAMELLIA_C) && defined(MBEDTLS_CIPHER_MODE_CBC) - if( todo.camellia ) - { - int keysize; - mbedtls_camellia_context camellia; - mbedtls_camellia_init( &camellia ); - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "CAMELLIA-CBC-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_camellia_setkey_enc( &camellia, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_camellia_crypt_cbc( &camellia, MBEDTLS_CAMELLIA_ENCRYPT, - BUFSIZE, tmp, buf, buf ) ); - } - mbedtls_camellia_free( &camellia ); - } -#endif - -#if defined(MBEDTLS_BLOWFISH_C) && defined(MBEDTLS_CIPHER_MODE_CBC) - if( todo.blowfish ) - { - int keysize; - mbedtls_blowfish_context blowfish; - mbedtls_blowfish_init( &blowfish ); - - for( keysize = 128; keysize <= 256; keysize += 64 ) - { - mbedtls_snprintf( title, sizeof( title ), "BLOWFISH-CBC-%d", keysize ); - - memset( buf, 0, sizeof( buf ) ); - memset( tmp, 0, sizeof( tmp ) ); - mbedtls_blowfish_setkey( &blowfish, tmp, keysize ); - - TIME_AND_TSC( title, - mbedtls_blowfish_crypt_cbc( &blowfish, MBEDTLS_BLOWFISH_ENCRYPT, BUFSIZE, - tmp, buf, buf ) ); - } - - mbedtls_blowfish_free( &blowfish ); - } -#endif - -#if defined(MBEDTLS_HAVEGE_C) - if( todo.havege ) - { - mbedtls_havege_state hs; - mbedtls_havege_init( &hs ); - TIME_AND_TSC( "HAVEGE", mbedtls_havege_random( &hs, buf, BUFSIZE ) ); - mbedtls_havege_free( &hs ); - } -#endif - -#if defined(MBEDTLS_CTR_DRBG_C) - if( todo.ctr_drbg ) - { - mbedtls_ctr_drbg_context ctr_drbg; - - mbedtls_ctr_drbg_init( &ctr_drbg ); - - if( mbedtls_ctr_drbg_seed( &ctr_drbg, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - TIME_AND_TSC( "CTR_DRBG (NOPR)", - if( mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - - if( mbedtls_ctr_drbg_seed( &ctr_drbg, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - mbedtls_ctr_drbg_set_prediction_resistance( &ctr_drbg, MBEDTLS_CTR_DRBG_PR_ON ); - TIME_AND_TSC( "CTR_DRBG (PR)", - if( mbedtls_ctr_drbg_random( &ctr_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - mbedtls_ctr_drbg_free( &ctr_drbg ); - } -#endif - -#if defined(MBEDTLS_HMAC_DRBG_C) - if( todo.hmac_drbg ) - { - mbedtls_hmac_drbg_context hmac_drbg; - const mbedtls_md_info_t *md_info; - - mbedtls_hmac_drbg_init( &hmac_drbg ); - -#if defined(MBEDTLS_SHA1_C) - if( ( md_info = mbedtls_md_info_from_type( MBEDTLS_MD_SHA1 ) ) == NULL ) - mbedtls_exit(1); - - if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - TIME_AND_TSC( "HMAC_DRBG SHA-1 (NOPR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); - - if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - mbedtls_hmac_drbg_set_prediction_resistance( &hmac_drbg, - MBEDTLS_HMAC_DRBG_PR_ON ); - TIME_AND_TSC( "HMAC_DRBG SHA-1 (PR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); -#endif - -#if defined(MBEDTLS_SHA256_C) - if( ( md_info = mbedtls_md_info_from_type( MBEDTLS_MD_SHA256 ) ) == NULL ) - mbedtls_exit(1); - - if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - TIME_AND_TSC( "HMAC_DRBG SHA-256 (NOPR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); - - if( mbedtls_hmac_drbg_seed( &hmac_drbg, md_info, myrand, NULL, NULL, 0 ) != 0 ) - mbedtls_exit(1); - mbedtls_hmac_drbg_set_prediction_resistance( &hmac_drbg, - MBEDTLS_HMAC_DRBG_PR_ON ); - TIME_AND_TSC( "HMAC_DRBG SHA-256 (PR)", - if( mbedtls_hmac_drbg_random( &hmac_drbg, buf, BUFSIZE ) != 0 ) - mbedtls_exit(1) ); - mbedtls_hmac_drbg_free( &hmac_drbg ); -#endif - } -#endif - -#if defined(MBEDTLS_RSA_C) && \ - defined(MBEDTLS_PEM_PARSE_C) && defined(MBEDTLS_PK_PARSE_C) - if( todo.rsa ) - { - mbedtls_pk_context pk; - mbedtls_rsa_context *rsa; - const char *rsa_keys[] = { RSA_PRIVATE_KEY_2048, RSA_PRIVATE_KEY_4096 }; - size_t i; - - for( i = 0; i < sizeof( rsa_keys ) / sizeof( rsa_keys[0] ); i++ ) - { - mbedtls_pk_init( &pk ); - mbedtls_pk_parse_key( &pk, (const unsigned char *) rsa_keys[i], - strlen( rsa_keys[i] ) + 1, NULL, 0 ); - rsa = mbedtls_pk_rsa( pk ); - - mbedtls_snprintf( title, sizeof( title ), "RSA-%d", mbedtls_pk_get_bitlen( &pk ) ); - - TIME_PUBLIC( title, " public", - buf[0] = 0; - ret = mbedtls_rsa_public( rsa, buf, buf ) ); - - TIME_PUBLIC( title, "private", - buf[0] = 0; - ret = mbedtls_rsa_private( rsa, myrand, NULL, buf, buf ) ); - - mbedtls_pk_free( &pk ); - } - } -#endif - -#if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_BIGNUM_C) - if( todo.dhm ) - { - int dhm_sizes[] = { 2048, 3072 }; - const char *dhm_P[] = { - MBEDTLS_DHM_RFC3526_MODP_2048_P, - MBEDTLS_DHM_RFC3526_MODP_3072_P, - }; - const char *dhm_G[] = { - MBEDTLS_DHM_RFC3526_MODP_2048_G, - MBEDTLS_DHM_RFC3526_MODP_3072_G, - }; - - mbedtls_dhm_context dhm; - size_t olen; - for( i = 0; (size_t) i < sizeof( dhm_sizes ) / sizeof( dhm_sizes[0] ); i++ ) - { - mbedtls_dhm_init( &dhm ); - - if( mbedtls_mpi_read_string( &dhm.P, 16, dhm_P[i] ) != 0 || - mbedtls_mpi_read_string( &dhm.G, 16, dhm_G[i] ) != 0 ) - { - mbedtls_exit( 1 ); - } - - dhm.len = mbedtls_mpi_size( &dhm.P ); - mbedtls_dhm_make_public( &dhm, (int) dhm.len, buf, dhm.len, myrand, NULL ); - if( mbedtls_mpi_copy( &dhm.GY, &dhm.GX ) != 0 ) - mbedtls_exit( 1 ); - - mbedtls_snprintf( title, sizeof( title ), "DHE-%d", dhm_sizes[i] ); - TIME_PUBLIC( title, "handshake", - ret |= mbedtls_dhm_make_public( &dhm, (int) dhm.len, buf, dhm.len, - myrand, NULL ); - ret |= mbedtls_dhm_calc_secret( &dhm, buf, sizeof( buf ), &olen, myrand, NULL ) ); - - mbedtls_snprintf( title, sizeof( title ), "DH-%d", dhm_sizes[i] ); - TIME_PUBLIC( title, "handshake", - ret |= mbedtls_dhm_calc_secret( &dhm, buf, sizeof( buf ), &olen, myrand, NULL ) ); - - mbedtls_dhm_free( &dhm ); - } - } -#endif - -#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_SHA256_C) - if( todo.ecdsa ) - { - mbedtls_ecdsa_context ecdsa; - const mbedtls_ecp_curve_info *curve_info; - size_t sig_len; - - memset( buf, 0x2A, sizeof( buf ) ); - - for( curve_info = mbedtls_ecp_curve_list(); - curve_info->grp_id != MBEDTLS_ECP_DP_NONE; - curve_info++ ) - { - mbedtls_ecdsa_init( &ecdsa ); - - if( mbedtls_ecdsa_genkey( &ecdsa, curve_info->grp_id, myrand, NULL ) != 0 ) - mbedtls_exit( 1 ); - ecp_clear_precomputed( &ecdsa.grp ); - - mbedtls_snprintf( title, sizeof( title ), "ECDSA-%s", - curve_info->name ); - TIME_PUBLIC( title, "sign", - ret = mbedtls_ecdsa_write_signature( &ecdsa, MBEDTLS_MD_SHA256, buf, curve_info->bit_size, - tmp, &sig_len, myrand, NULL ) ); - - mbedtls_ecdsa_free( &ecdsa ); - } - - for( curve_info = mbedtls_ecp_curve_list(); - curve_info->grp_id != MBEDTLS_ECP_DP_NONE; - curve_info++ ) - { - mbedtls_ecdsa_init( &ecdsa ); - - if( mbedtls_ecdsa_genkey( &ecdsa, curve_info->grp_id, myrand, NULL ) != 0 || - mbedtls_ecdsa_write_signature( &ecdsa, MBEDTLS_MD_SHA256, buf, curve_info->bit_size, - tmp, &sig_len, myrand, NULL ) != 0 ) - { - mbedtls_exit( 1 ); - } - ecp_clear_precomputed( &ecdsa.grp ); - - mbedtls_snprintf( title, sizeof( title ), "ECDSA-%s", - curve_info->name ); - TIME_PUBLIC( title, "verify", - ret = mbedtls_ecdsa_read_signature( &ecdsa, buf, curve_info->bit_size, - tmp, sig_len ) ); - - mbedtls_ecdsa_free( &ecdsa ); - } - } -#endif - -#if defined(MBEDTLS_ECDH_C) - if( todo.ecdh ) - { - mbedtls_ecdh_context ecdh; -#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) - mbedtls_mpi z; -#endif - const mbedtls_ecp_curve_info *curve_info; - size_t olen; - - for( curve_info = mbedtls_ecp_curve_list(); - curve_info->grp_id != MBEDTLS_ECP_DP_NONE; - curve_info++ ) - { - mbedtls_ecdh_init( &ecdh ); - - if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 || - mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf), - myrand, NULL ) != 0 || - mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) != 0 ) - { - mbedtls_exit( 1 ); - } - ecp_clear_precomputed( &ecdh.grp ); - - mbedtls_snprintf( title, sizeof( title ), "ECDHE-%s", - curve_info->name ); - TIME_PUBLIC( title, "handshake", - ret |= mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf), - myrand, NULL ); - ret |= mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ), - myrand, NULL ) ); - mbedtls_ecdh_free( &ecdh ); - } - - /* Curve25519 needs to be handled separately */ -#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) - mbedtls_ecdh_init( &ecdh ); - mbedtls_mpi_init( &z ); - - if( mbedtls_ecp_group_load( &ecdh.grp, MBEDTLS_ECP_DP_CURVE25519 ) != 0 || - mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp, myrand, NULL ) != 0 ) - { - mbedtls_exit( 1 ); - } - - TIME_PUBLIC( "ECDHE-Curve25519", "handshake", - ret |= mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q, - myrand, NULL ); - ret |= mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d, - myrand, NULL ) ); - - mbedtls_ecdh_free( &ecdh ); - mbedtls_mpi_free( &z ); -#endif - - for( curve_info = mbedtls_ecp_curve_list(); - curve_info->grp_id != MBEDTLS_ECP_DP_NONE; - curve_info++ ) - { - mbedtls_ecdh_init( &ecdh ); - - if( mbedtls_ecp_group_load( &ecdh.grp, curve_info->grp_id ) != 0 || - mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf), - myrand, NULL ) != 0 || - mbedtls_ecp_copy( &ecdh.Qp, &ecdh.Q ) != 0 || - mbedtls_ecdh_make_public( &ecdh, &olen, buf, sizeof( buf), - myrand, NULL ) != 0 ) - { - mbedtls_exit( 1 ); - } - ecp_clear_precomputed( &ecdh.grp ); - - mbedtls_snprintf( title, sizeof( title ), "ECDH-%s", - curve_info->name ); - TIME_PUBLIC( title, "handshake", - ret |= mbedtls_ecdh_calc_secret( &ecdh, &olen, buf, sizeof( buf ), - myrand, NULL ) ); - mbedtls_ecdh_free( &ecdh ); - } - - /* Curve25519 needs to be handled separately */ -#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) - mbedtls_ecdh_init( &ecdh ); - mbedtls_mpi_init( &z ); - - if( mbedtls_ecp_group_load( &ecdh.grp, MBEDTLS_ECP_DP_CURVE25519 ) != 0 || - mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Qp, - myrand, NULL ) != 0 || - mbedtls_ecdh_gen_public( &ecdh.grp, &ecdh.d, &ecdh.Q, myrand, NULL ) != 0 ) - { - mbedtls_exit( 1 ); - } - - TIME_PUBLIC( "ECDH-Curve25519", "handshake", - ret |= mbedtls_ecdh_compute_shared( &ecdh.grp, &z, &ecdh.Qp, &ecdh.d, - myrand, NULL ) ); - - mbedtls_ecdh_free( &ecdh ); - mbedtls_mpi_free( &z ); -#endif - } -#endif - - mbedtls_printf( "\r\n" ); - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - mbedtls_memory_buffer_alloc_free(); -#endif - -#if defined(_WIN32) - mbedtls_printf( " Press Enter to exit this program.\r\n" ); - fflush( stdout ); getchar(); -#endif - - return( 0 ); -} - -#include "mbed-drivers/test_env.h" -#include "minar/minar.h" - -static void run() { - MBED_HOSTTEST_TIMEOUT(150); - MBED_HOSTTEST_SELECT(default); - MBED_HOSTTEST_DESCRIPTION(mbed TLS benchmark program); - MBED_HOSTTEST_START("MBEDTLS_BENCHMARK"); - MBED_HOSTTEST_RESULT(benchmark(0, NULL) == 0); -} - -void app_start(int, char*[]) { - /* Use 115200 bps for consistency with other examples */ - get_stdio_serial().baud(115200); - minar::Scheduler::postCallback(mbed::util::FunctionPointer0(run).bind()); -} - -#endif /* TARGET_LIKE_MBED */ diff --git a/yotta/data/example-hashing/README.md b/yotta/data/example-hashing/README.md deleted file mode 100644 index 6f0f969d09..0000000000 --- a/yotta/data/example-hashing/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# SHA-256 Hash Example - -This application performs hashing of a buffer with SHA-256 using various APIs. It serves as a tutorial for the basic hashing APIs of mbed TLS. - -## Pre-requisites - -To build and run this example you must have: - -* A computer with the following software installed: - * [CMake](http://www.cmake.org/download/). - * [yotta](https://github.com/ARMmbed/yotta). Please note that **yotta has its own set of dependencies**, listed in the [installation instructions](http://armmbed.github.io/yotta/#installing-on-windows). - * [Python](https://www.python.org/downloads/). - * [The ARM GCC toolchain](https://launchpad.net/gcc-arm-embedded). - * A serial terminal emulator (Like screen, pySerial and cu). -* An [FRDM-K64F](http://developer.mbed.org/platforms/FRDM-K64F/) development board, or another board supported by mbed OS (in which case you'll have to substitute frdm-k64f-gcc with the appropriate target in the instructions below). -* A micro-USB cable. -* If your OS is Windows, please follow the installation instructions [for the serial port driver](https://developer.mbed.org/handbook/Windows-serial-configuration). - -## Getting started - -1. Connect the FRDM-K64F to the computer with the micro-USB cable, being careful to use the "OpenSDA" connector on the target board. - -2. Navigate to the mbedtls directory supplied with your release and open a terminal. - -3. Set the yotta target: - - ``` - yotta target frdm-k64f-gcc - ``` - -4. Build mbedtls and the examples. This may take a long time if this is your first compilation: - - ``` - $ yotta build - ``` - -5. Copy `build/frdm-k64f-gcc/test/mbedtls-test-example-hashing.bin` to your mbed board and wait until the LED next to the USB port stops blinking. - -6. Start the serial terminal emulator and connect to the virtual serial port presented by FRDM-K64F. - - Use the following settings: - - * 115200 baud (not 9600). - * 8N1. - * No flow control. - -7. Press the Reset button on the board. - -8. The output in the terminal window should look like: - - ``` - {{timeout;10}} - {{host_test_name;default}} - {{description;mbed TLS example on hashing}} - {{test_id;MBEDTLS_EX_HASHING}} - {{start}} - - - Method 1: 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 - Method 2: 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 - Method 3: 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 - Method 4: 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 - - DONE - {{success}} - {{end}} - ``` diff --git a/yotta/data/example-hashing/main.cpp b/yotta/data/example-hashing/main.cpp deleted file mode 100644 index 574152ab83..0000000000 --- a/yotta/data/example-hashing/main.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Hello world example of using the hashing functions of mbed TLS - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -/* - * This program illustrates various ways of hashing a buffer. - * You normally need only one of these two includes. - */ -#include "mbedtls/sha256.h" /* SHA-256 only */ -#include "mbedtls/md.h" /* generic interface */ - -#if defined(TARGET_LIKE_MBED) -#include "mbed-drivers/mbed.h" -#endif -#include - -static void print_hex(const char *title, const unsigned char buf[], size_t len) -{ - printf("%s: ", title); - - for (size_t i = 0; i < len; i++) - printf("%02x", buf[i]); - - printf("\r\n"); -} - -static const char hello_str[] = "Hello, world!"; -static const unsigned char *hello_buffer = (const unsigned char *) hello_str; -static const size_t hello_len = sizeof hello_str - 1; - -int example(void) -{ - printf( "\r\n\r\n" ); - - /* - * Method 1: use all-in-one function of a specific SHA-xxx module - */ - unsigned char output1[32]; /* SHA-256 outputs 32 bytes */ - - /* 0 here means use the full SHA-256, not the SHA-224 variant */ - mbedtls_sha256(hello_buffer, hello_len, output1, 0); - - print_hex("Method 1", output1, sizeof output1); - - - /* - * Method 2: use the streaming interface of a specific SHA-xxx module - * This is useful if we get our input piecewise. - */ - unsigned char output2[32]; - mbedtls_sha256_context ctx2; - - mbedtls_sha256_init(&ctx2); - mbedtls_sha256_starts(&ctx2, 0); /* SHA-256, not 224 */ - - /* Simulating multiple fragments */ - mbedtls_sha256_update(&ctx2, hello_buffer, 1); - mbedtls_sha256_update(&ctx2, hello_buffer + 1, 1); - mbedtls_sha256_update(&ctx2, hello_buffer + 2, hello_len - 2); - - mbedtls_sha256_finish(&ctx2, output2); - print_hex("Method 2", output2, sizeof output2); - - /* Or you could re-use the context by doing mbedtls_sha256_starts() again */ - mbedtls_sha256_free(&ctx2); - - /* - * Method 3: use all-in-one function of the generice interface - */ - unsigned char output3[MBEDTLS_MD_MAX_SIZE]; /* Enough for any hash */ - - /* Can easily pick any hash you want, by identifier */ - const mbedtls_md_info_t *md_info3 = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); - - if (md_info3 == NULL) - { - printf("SHA256 not available\r\n"); - return 1; - } - - int ret3 = mbedtls_md(md_info3, hello_buffer, hello_len, output3); - - if (ret3 != 0) - { - printf("md() returned -0x%04X\r\n", -ret3); - return 1; - } - - print_hex("Method 3", output3, mbedtls_md_get_size(md_info3)); - - - /* - * Method 4: streaming & generic interface - */ - unsigned char output4[MBEDTLS_MD_MAX_SIZE]; /* Enough for any hash */ - - const mbedtls_md_info_t *md_info4 = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); - - if (md_info4 == NULL) - { - printf("SHA256 not available\r\n"); - return 1; - } - - mbedtls_md_context_t ctx4; - - mbedtls_md_init(&ctx4); - - int ret4 = mbedtls_md_init_ctx(&ctx4, md_info4); - if (ret4 != 0) - { - printf("md_init_ctx() returned -0x%04X\r\n", -ret4); - return 1; - } - - mbedtls_md_starts(&ctx4); - - /* Simulating multiple fragments */ - mbedtls_md_update(&ctx4, hello_buffer, 1); - mbedtls_md_update(&ctx4, hello_buffer + 1, 1); - mbedtls_md_update(&ctx4, hello_buffer + 2, hello_len - 2); - - mbedtls_md_finish(&ctx4, output4); - print_hex("Method 4", output4, mbedtls_md_get_size(md_info4)); - - /* Or you could re-use the context by doing mbedtls_md_starts() again */ - mbedtls_md_free(&ctx4); - - - printf("\r\nDONE\r\n"); - - return 0; -} - -#if defined(TARGET_LIKE_MBED) - -#include "mbed-drivers/test_env.h" -#include "minar/minar.h" - -static void run() { - MBED_HOSTTEST_TIMEOUT(10); - MBED_HOSTTEST_SELECT(default); - MBED_HOSTTEST_DESCRIPTION(mbed TLS example on hashing); - MBED_HOSTTEST_START("MBEDTLS_EX_HASHING"); - MBED_HOSTTEST_RESULT(example() == 0); -} - -void app_start(int, char*[]) { - /* Use 115200 bps for consistency with other examples */ - get_stdio_serial().baud(115200); - minar::Scheduler::postCallback(mbed::util::FunctionPointer0(run).bind()); -} - -#else - -int main() { - return example(); -} - -#endif diff --git a/yotta/data/example-selftest/README.md b/yotta/data/example-selftest/README.md deleted file mode 100644 index b8e9cd49ea..0000000000 --- a/yotta/data/example-selftest/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# mbed TLS Selftest Example - -This application runs the various selftest functions of individual mbed TLS components. It serves as a basic sanity check to verify operation of mbed TLS on your platform. In the future, a wider portion of the mbed TLS test suite will become part of this example application. - -## Pre-requisites - -To build and run this example you must have: - -* A computer with the following software installed: - * [CMake](http://www.cmake.org/download/). - * [yotta](https://github.com/ARMmbed/yotta). Please note that **yotta has its own set of dependencies**, listed in the [installation instructions](http://armmbed.github.io/yotta/#installing-on-windows). - * [Python](https://www.python.org/downloads/). - * [The ARM GCC toolchain](https://launchpad.net/gcc-arm-embedded). - * A serial terminal emulator (Like screen, pySerial and cu). -* An [FRDM-K64F](http://developer.mbed.org/platforms/FRDM-K64F/) development board, or another board supported by mbed OS (in which case you'll have to substitute frdm-k64f-gcc with the appropriate target in the instructions below). -* A micro-USB cable. -* If your OS is Windows, please follow the installation instructions [for the serial port driver](https://developer.mbed.org/handbook/Windows-serial-configuration). - -## Getting started - -1. Connect the FRDM-K64F to the computer with the micro-USB cable, being careful to use the "OpenSDA" connector on the target board. - -2. Navigate to the mbedtls directory supplied with your release and open a terminal. - -3. Set the yotta target: - - ``` - yotta target frdm-k64f-gcc - ``` - -4. Build mbedtls and the examples. This may take a long time if this is your first compilation: - - ``` - $ yotta build - ``` - -5. Copy `build/frdm-k64f-gcc/test/mbedtls-test-example-selftest.bin` to your mbed board and wait until the LED next to the USB port stops blinking. - -6. Start the serial terminal emulator and connect to the virtual serial port presented by FRDM-K64F. - - Use the following settings: - - * 115200 baud (not 9600). - * 8N1. - * No flow control. - -7. Press the Reset button on the board. - -8. The output in the terminal window should look like: - - ``` - {{timeout;40}} - {{host_test_name;default}} - {{description;mbed TLS selftest program}} - {{test_id;MBEDTLS_SELFTEST}} - {{start}} - - SHA-224 test #1: passed - SHA-224 test #2: passed - SHA-224 test #3: passed - SHA-256 test #1: passed - SHA-256 test #2: passed - SHA-256 test #3: passed - - [ ... several lines omitted ... ] - - CTR_DRBG (PR = TRUE) : passed - CTR_DRBG (PR = FALSE): passed - - HMAC_DRBG (PR = True) : passed - HMAC_DRBG (PR = False) : passed - - ECP test #1 (constant op_count, base point G): passed - ECP test #2 (constant op_count, other point): passed - - ENTROPY test: passed - - [ All tests passed ] - - {{success}} - {{end}} - ``` diff --git a/yotta/data/example-selftest/main.cpp b/yotta/data/example-selftest/main.cpp deleted file mode 100644 index 0ff5b048ec..0000000000 --- a/yotta/data/example-selftest/main.cpp +++ /dev/null @@ -1,268 +0,0 @@ -/* - * Self-test demonstration program - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(POLARSSL_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -#include "mbedtls/entropy.h" -#include "mbedtls/hmac_drbg.h" -#include "mbedtls/ctr_drbg.h" -#include "mbedtls/dhm.h" -#include "mbedtls/gcm.h" -#include "mbedtls/ccm.h" -#include "mbedtls/md2.h" -#include "mbedtls/md4.h" -#include "mbedtls/md5.h" -#include "mbedtls/ripemd160.h" -#include "mbedtls/sha1.h" -#include "mbedtls/sha256.h" -#include "mbedtls/sha512.h" -#include "mbedtls/arc4.h" -#include "mbedtls/des.h" -#include "mbedtls/aes.h" -#include "mbedtls/camellia.h" -#include "mbedtls/base64.h" -#include "mbedtls/bignum.h" -#include "mbedtls/rsa.h" -#include "mbedtls/x509.h" -#include "mbedtls/xtea.h" -#include "mbedtls/pkcs5.h" -#include "mbedtls/ecp.h" - -#include -#include - -#if defined(MBEDTLS_PLATFORM_C) -#include "mbedtls/platform.h" -#else -#include -#define mbedtls_printf printf -#endif - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) -#include "mbedtls/memory_buffer_alloc.h" -#endif - -int selftest( int argc, char *argv[] ) -{ - int ret = 0, v; -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - unsigned char buf[1000000]; -#endif - - if( argc == 2 && strcmp( argv[1], "-quiet" ) == 0 ) - v = 0; - else - { - v = 1; - mbedtls_printf( "\n" ); - } - -#if defined(MBEDTLS_SELF_TEST) - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - mbedtls_memory_buffer_alloc_init( buf, sizeof(buf) ); -#endif - -#if defined(MBEDTLS_MD2_C) - if( ( ret = mbedtls_md2_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_MD4_C) - if( ( ret = mbedtls_md4_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_MD5_C) - if( ( ret = mbedtls_md5_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_RIPEMD160_C) - if( ( ret = mbedtls_ripemd160_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_SHA1_C) - if( ( ret = mbedtls_sha1_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_SHA256_C) - if( ( ret = mbedtls_sha256_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_SHA512_C) - if( ( ret = mbedtls_sha512_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_ARC4_C) - if( ( ret = mbedtls_arc4_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_DES_C) - if( ( ret = mbedtls_des_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_AES_C) - if( ( ret = mbedtls_aes_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_GCM_C) && defined(MBEDTLS_AES_C) - if( ( ret = mbedtls_gcm_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C) - if( ( ret = mbedtls_ccm_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_BASE64_C) - if( ( ret = mbedtls_base64_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_BIGNUM_C) - if( ( ret = mbedtls_mpi_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_RSA_C) - if( ( ret = mbedtls_rsa_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_X509_USE_C) - if( ( ret = mbedtls_x509_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_XTEA_C) - if( ( ret = mbedtls_xtea_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_CAMELLIA_C) - if( ( ret = mbedtls_camellia_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_CTR_DRBG_C) - if( ( ret = mbedtls_ctr_drbg_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_HMAC_DRBG_C) - if( ( ret = mbedtls_hmac_drbg_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_ECP_C) - if( ( ret = mbedtls_ecp_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_DHM_C) - if( ( ret = mbedtls_dhm_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_ENTROPY_C) - if( ( ret = mbedtls_entropy_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_PKCS5_C) - if( ( ret = mbedtls_pkcs5_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#if defined(MBEDTLS_TIMING_C) - if( ( ret = mbedtls_timing_self_test( v ) ) != 0 ) - return( ret ); -#endif - -#else - mbedtls_printf( " POLARSSL_SELF_TEST not defined.\n" ); -#endif - - if( v != 0 ) - { -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_MEMORY_DEBUG) - mbedtls_memory_buffer_alloc_status(); -#endif - } - -#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) - mbedtls_memory_buffer_alloc_free(); - - if( ( ret = mbedtls_memory_buffer_alloc_self_test( v ) ) != 0 ) - return( ret ); -#endif - - if( v != 0 ) - { - mbedtls_printf( " [ All tests passed ]\n\n" ); -#if defined(_WIN32) - mbedtls_printf( " Press Enter to exit this program.\n" ); - fflush( stdout ); getchar(); -#endif - } - - return( ret ); -} - -#if defined(TARGET_LIKE_MBED) - -#include "mbed-drivers/test_env.h" -#include "minar/minar.h" - -static void run() { - MBED_HOSTTEST_TIMEOUT(40); - MBED_HOSTTEST_SELECT(default); - MBED_HOSTTEST_DESCRIPTION(mbed TLS selftest program); - MBED_HOSTTEST_START("MBEDTLS_SELFTEST"); - MBED_HOSTTEST_RESULT(selftest(0, NULL) == 0); -} - -void app_start(int, char*[]) { - /* Use 115200 bps for consistency with other examples */ - get_stdio_serial().baud(115200); - minar::Scheduler::postCallback(mbed::util::FunctionPointer0(run).bind()); -} - -#else - -int main() { - return selftest(0, NULL); -} - -#endif diff --git a/yotta/data/module.json b/yotta/data/module.json deleted file mode 100644 index 0b8b822832..0000000000 --- a/yotta/data/module.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "mbedtls", - "version": "2.3.1", - "description": "The mbed TLS crypto/SSL/TLS library", - "licenses": [ - { - "url": "https://spdx.org/licenses/Apache-2.0", - "type": "Apache-2.0" - } - ], - "dependencies": {}, - "targetDependencies": { - "mbed": { "cmsis-core": "^1.0.0" } - }, - "testTargetDependencies": { - "mbed": { "mbed-drivers": "^1.0.0" } - } -} diff --git a/yotta/data/target_config.h b/yotta/data/target_config.h deleted file mode 100644 index f350ce3ecb..0000000000 --- a/yotta/data/target_config.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Temporary target-specific config.h for entropy collection - * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if defined(TARGET_LIKE_MBED) -#define MBEDTLS_NO_PLATFORM_ENTROPY -#undef MBEDTLS_HAVE_TIME_DATE -#undef MBEDTLS_FS_IO -#endif - -/* - * WARNING: this is temporary! - * This should be in a separate yotta module which would be a target - * dependency of mbedtls (see IOTSSL-313) - */ -#if defined(TARGET_LIKE_K64F) -#define MBEDTLS_ENTROPY_HARDWARE_ALT -#endif From c0514bfffeb453100be79eb3da32d4b1502f89dd Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Wed, 26 Sep 2018 18:07:18 +0100 Subject: [PATCH 1046/1100] Added ChangeLog entry for yotta support removal --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 820c26b408..96ad045a75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ mbed TLS ChangeLog (Sorted per branch, date) += mbed TLS x.x.x branch released xxxx-xx-xx + +Changes + * Removed support for Yotta as a build tool. + = mbed TLS 2.13.1 branch released 2018-09-06 API Changes From a9daa5c357b8156df234a3b52d86771956da584a Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Wed, 26 Sep 2018 17:49:57 +0200 Subject: [PATCH 1047/1100] Look for documentation only in specific directories Generate the documentation from include and doxygen/input only. Don't get snared by files containing Doxygen comments that lie in other directories such as tests, yotta, crypto/include, ... The only difference this makes in a fresh checkout is that the documentation no longer lists target_config.h. This file is from yotta, does not contain any Doxygen comment, and its inclusion in the rendered documentation was clearly an oversight. --- doxygen/mbedtls.doxyfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doxygen/mbedtls.doxyfile b/doxygen/mbedtls.doxyfile index 2a87ada6a5..8df061e31c 100644 --- a/doxygen/mbedtls.doxyfile +++ b/doxygen/mbedtls.doxyfile @@ -664,7 +664,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = .. +INPUT = ../include input # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -696,7 +696,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = ../configs ../yotta/module +EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded From bd90a8c002d969f3ca9d13be645e18f88fe71bdc Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 27 Sep 2018 10:12:17 +0200 Subject: [PATCH 1048/1100] In keep-going mode, don't hard-fail on some tests Add if_build_succeeded in front of the invocation of some test runs where it was missing. --- tests/scripts/all.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index d1d59e06a5..af788cfa6d 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -531,10 +531,10 @@ msg "test: RSA_NO_CRT - main suites (inc. selftests) (ASan build)" # ~ 50s make test msg "test: RSA_NO_CRT - RSA-related part of ssl-opt.sh (ASan build)" # ~ 5s -tests/ssl-opt.sh -f RSA +if_build_succeeded tests/ssl-opt.sh -f RSA msg "test: RSA_NO_CRT - RSA-related part of compat.sh (ASan build)" # ~ 3 min -tests/compat.sh -t RSA +if_build_succeeded tests/compat.sh -t RSA msg "build: small SSL_OUT_CONTENT_LEN (ASan build)" cleanup From 5c39d7a97206b102791c80a7442a9b7aabcc3605 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 27 Sep 2018 11:49:52 +0200 Subject: [PATCH 1049/1100] Remove redundant check in all.sh test -s can't fail if the subsequent grep succeeds. --- tests/scripts/all.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index af788cfa6d..326cfc0cad 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -1063,7 +1063,6 @@ for optimization_flag in -O2 -O3 -Ofast -Os; do cleanup make programs CC="$compiler" DEBUG=1 CFLAGS="$optimization_flag" if_build_succeeded gdb -x tests/scripts/test_zeroize.gdb -nw -batch -nx 2>&1 | tee test_zeroize.log - if_build_succeeded [ -s test_zeroize.log ] if_build_succeeded grep "The buffer was correctly zeroized" test_zeroize.log if_build_succeeded not grep -i "error" test_zeroize.log rm -f test_zeroize.log From 427df37f84594c069f809f0960f117b6e0737133 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Thu, 27 Sep 2018 11:50:24 +0200 Subject: [PATCH 1050/1100] Don't try to disable ASLR We don't need to disable ASLR, so don't try. If gdb tries but fails, the test runs normally, but all.sh then trips up because it sees `warning: Error disabling address space randomization: Operation not permitted` and interprets it as an error that indicates a test failure. --- tests/scripts/test_zeroize.gdb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/scripts/test_zeroize.gdb b/tests/scripts/test_zeroize.gdb index 617ab55449..77c812a0b6 100644 --- a/tests/scripts/test_zeroize.gdb +++ b/tests/scripts/test_zeroize.gdb @@ -41,6 +41,9 @@ # number does not need to be updated often. set confirm off +# We don't need to turn off ASLR, so don't try. +set disable-randomization off + file ./programs/test/zeroize break zeroize.c:100 From 6e3606e4f6b00a14e728fc5f866ba48fd1ecf5a0 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 30 Sep 2018 21:53:16 +0100 Subject: [PATCH 1051/1100] Fix run-test-suites.pl to screen for files Changes run-test-suites.pl to filter out directories, and select only files as on OSX, test coverage tests create .dSYM directories which were being accidentally selected to execute. --- tests/scripts/run-test-suites.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/scripts/run-test-suites.pl b/tests/scripts/run-test-suites.pl index 02f9a2f6f4..f35dfab983 100755 --- a/tests/scripts/run-test-suites.pl +++ b/tests/scripts/run-test-suites.pl @@ -37,7 +37,7 @@ if ( defined($switch) && ( $switch eq "-v" || $switch eq "--verbose" ) ) { # and profiling information, etc. We can't just grep {! /\./} because # some of our test cases' base names contain a dot. my @suites = grep { -x $_ || /\.exe$/ } glob 'test_suite_*'; -@suites = grep { !/\.c$/ && !/\.data$/ } @suites; +@suites = grep { !/\.c$/ && !/\.data$/ && -f } @suites; die "$0: no test suite found\n" unless @suites; # in case test suites are linked dynamically From 95c5575e12508dfbf7554065850cef3c1f831d14 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Fri, 28 Sep 2018 11:48:10 +0200 Subject: [PATCH 1052/1100] check-files: exclude .git and third-party files Exclude ".git" directories anywhere. This avoids spurious errors in git checkouts that contain branch names that look like a file check-files.py would check. Fix #1713 Exclude "mbed-os" anywhere and "examples" from the root. Switch to the new mechanism to exclude "yotta/module". These are directories where we store third-party files that do not need to match our preferences. Exclude "cov-int" from the root. Fix #1691 --- tests/scripts/check-files.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/scripts/check-files.py b/tests/scripts/check-files.py index f560d03785..0fb2117a32 100755 --- a/tests/scripts/check-files.py +++ b/tests/scripts/check-files.py @@ -155,6 +155,12 @@ class IntegrityChecker(object): ".c", ".h", ".sh", ".pl", ".py", ".md", ".function", ".data", "Makefile", "CMakeLists.txt", "ChangeLog" ) + self.excluded_directories = ['.git', 'mbed-os'] + self.excluded_paths = list(map(os.path.normpath, [ + 'cov-int', + 'examples', + 'yotta/module' + ])) self.issues_to_check = [ PermissionIssueTracker(), EndOfFileNewlineIssueTracker(), @@ -179,12 +185,19 @@ class IntegrityChecker(object): console = logging.StreamHandler() self.logger.addHandler(console) + def prune_branch(self, root, d): + if d in self.excluded_directories: + return True + if os.path.normpath(os.path.join(root, d)) in self.excluded_paths: + return True + return False + def check_files(self): - for root, dirs, files in sorted(os.walk(".")): + for root, dirs, files in os.walk("."): + dirs[:] = sorted(d for d in dirs if not self.prune_branch(root, d)) for filename in sorted(files): filepath = os.path.join(root, filename) - if (os.path.join("yotta", "module") in filepath or - not filepath.endswith(self.files_to_check)): + if not filepath.endswith(self.files_to_check): continue for issue_to_check in self.issues_to_check: if issue_to_check.should_check_file(filepath): From 16b1bd89326ece62712c8ecc1142a41bd257d443 Mon Sep 17 00:00:00 2001 From: Aurelien Jarno Date: Mon, 21 May 2018 22:01:21 +0200 Subject: [PATCH 1053/1100] bn_mul.h: add ARM DSP optimized MULADDC code The Cortex M4, M7 MCUs and the Cortex A CPUs support the ARM DSP instructions, and especially the umaal instruction which greatly speed up MULADDC code. In addition the patch switched the ASM constraints to registers instead of memory, giving the opportunity for the compiler to load them the best way. The speed improvement is variable depending on the crypto operation and the CPU. Here are the results on a Cortex M4, a Cortex M7 and a Cortex A8. All tests have been done with GCC 6.3 using -O2. RSA uses a RSA-4096 key. ECDSA uses a secp256r1 curve EC key pair. +--------+--------+--------+ | M4 | M7 | A8 | +----------------+--------+--------+--------+ | ECDSA signing | +6.3% | +7.9% | +4.1% | +----------------+--------+--------+--------+ | RSA signing | +43.7% | +68.3% | +26.3% | +----------------+--------+--------+--------+ | RSA encryption | +3.4% | +9.7% | +3.6% | +----------------+--------+--------+--------+ | RSA decryption | +43.0% | +67.8% | +22.8% | +----------------+--------+--------+--------+ I ran the whole testsuite on the Cortex A8 Linux environment, and it all passes. --- include/mbedtls/bn_mul.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h index 354c1cc1ab..b631ad2788 100644 --- a/include/mbedtls/bn_mul.h +++ b/include/mbedtls/bn_mul.h @@ -630,6 +630,23 @@ "r6", "r7", "r8", "r9", "cc" \ ); +#elif defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1) + +#define MULADDC_INIT \ + asm( + +#define MULADDC_CORE \ + "ldr r0, [%0], #4 \n\t" \ + "ldr r1, [%1] \n\t" \ + "umaal r1, %2, %3, r0 \n\t" \ + "str r1, [%1], #4 \n\t" + +#define MULADDC_STOP \ + : "=r" (s), "=r" (d), "=r" (c) \ + : "r" (b), "0" (s), "1" (d), "2" (c) \ + : "r0", "r1", "memory" \ + ); + #else #define MULADDC_INIT \ From 30a95102b182b73c16948c0592a5fc56e21d33dc Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 5 Oct 2018 09:49:33 +0100 Subject: [PATCH 1054/1100] Fix memory leak and freeing without initialization in cert_write * The variables `csr` and `issuer_crt` are initialized but not freed. * The variable `entropy` is unconditionally freed in the cleanup section but there's a conditional jump to that section before its initialization. This cmmot Moves it to the other initializations happening before the first conditional jump to the cleanup section. Fixes #1422. --- programs/x509/cert_write.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index fa994613d6..3842ebce4e 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -242,6 +242,7 @@ int main( int argc, char *argv[] ) mbedtls_pk_init( &loaded_subject_key ); mbedtls_mpi_init( &serial ); mbedtls_ctr_drbg_init( &ctr_drbg ); + mbedtls_entropy_init( &entropy ); #if defined(MBEDTLS_X509_CSR_PARSE_C) mbedtls_x509_csr_init( &csr ); #endif @@ -475,7 +476,6 @@ int main( int argc, char *argv[] ) mbedtls_printf( " . Seeding the random number generator..." ); fflush( stdout ); - mbedtls_entropy_init( &entropy ); if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, strlen( pers ) ) ) != 0 ) @@ -789,6 +789,10 @@ int main( int argc, char *argv[] ) exit_code = MBEDTLS_EXIT_SUCCESS; exit: +#if defined(MBEDTLS_X509_CSR_PARSE_C) + mbedtls_x509_csr_free( &csr ); +#endif /* MBEDTLS_X509_CSR_PARSE_C */ + mbedtls_x509_crt_free( &issuer_crt ); mbedtls_x509write_crt_free( &crt ); mbedtls_pk_free( &loaded_subject_key ); mbedtls_pk_free( &loaded_issuer_key ); From 617a321ed967ef9694e118344d4bc227a44fd2fc Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 5 Oct 2018 09:51:36 +0100 Subject: [PATCH 1055/1100] Adapt ChangeLog --- ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog b/ChangeLog index 513f24f3ab..7aede8a3b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,8 @@ Bugfix invalidated keys of a lifetime of less than a 1s. Fixes #1968. * Fix failure in hmac_drbg in the benchmark sample application, when MBEDTLS_THREADING_C is defined. Found by TrinityTonic, #1095 + * Fix memory leak and freeing without initialization in the example + program programs/x509/cert_write. Fixes #1422. Changes * Add tests for session resumption in DTLS. From 52f8491dc29e264897b62302f774b53b7300b14f Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Fri, 5 Oct 2018 07:53:40 -0400 Subject: [PATCH 1056/1100] ssl-opt.sh: adjust tests to fit slower targets Adjust mtu sizes to be able to pass tests using a full configuration --- tests/ssl-opt.sh | 124 +++++++++++++++++++++++++++++++---------------- 1 file changed, 81 insertions(+), 43 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ac3580a324..23c25afcb5 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5731,10 +5731,12 @@ run_test "DTLS fragmenting: none (for reference)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + hs_timeout=2500-60000 \ max_frag_len=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ @@ -5749,10 +5751,12 @@ run_test "DTLS fragmenting: server only (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + hs_timeout=2500-60000 \ max_frag_len=2048" \ 0 \ -S "found fragmented DTLS handshake message" \ @@ -5771,10 +5775,12 @@ run_test "DTLS fragmenting: server only (more) (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + hs_timeout=2500-60000 \ max_frag_len=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ @@ -5789,12 +5795,14 @@ run_test "DTLS fragmenting: client-initiated, server only (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=none \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=2048" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=512" \ - 0 \ + hs_timeout=2500-60000 \ + max_frag_len=1024" \ + 0 \ -S "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -5811,15 +5819,17 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \ - -p "$P_PXY mtu=560" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=none \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=2048" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=512" \ + hs_timeout=2500-60000 \ + max_frag_len=1024" \ 0 \ -S "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5833,11 +5843,13 @@ run_test "DTLS fragmenting: client-initiated, both (max_frag_len)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=2048" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=512" \ + hs_timeout=2500-60000 \ + max_frag_len=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5855,15 +5867,17 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \ - -p "$P_PXY mtu=560" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ max_frag_len=2048" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - max_frag_len=512" \ + hs_timeout=2500-60000 \ + max_frag_len=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5876,10 +5890,12 @@ run_test "DTLS fragmenting: none (for reference) (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ mtu=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + hs_timeout=2500-60000 \ mtu=4096" \ 0 \ -S "found fragmented DTLS handshake message" \ @@ -5893,11 +5909,13 @@ run_test "DTLS fragmenting: client (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ mtu=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512" \ + hs_timeout=2500-60000 \ + mtu=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ -C "found fragmented DTLS handshake message" \ @@ -5910,10 +5928,12 @@ run_test "DTLS fragmenting: server (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ mtu=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + hs_timeout=2500-60000 \ mtu=2048" \ 0 \ -S "found fragmented DTLS handshake message" \ @@ -5924,15 +5944,17 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: both (MTU)" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ mtu=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512" \ + hs_timeout=2500-60000 \ + mtu=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5944,15 +5966,15 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ - -p "$P_PXY mtu=508" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key\ - hs_timeout=100-400" \ + hs_timeout=100-10000" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=100-400" \ + hs_timeout=100-10000" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5985,15 +6007,17 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: proxy MTU, simple handshake" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6005,15 +6029,17 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=512 nbio=2" \ + mtu=1024 nbio=2 \ + hs_timeout=15000-60000" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=512 nbio=2" \ + mtu=1024 nbio=2 \ + hs_timeout=15000-60000" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6034,15 +6060,17 @@ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ - -p "$P_PXY mtu=1450" \ + -p "$P_PXY mtu=1650" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=1450" \ + hs_timeout=10000-60000 \ + mtu=1650" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=1450 reconnect=1 reco_delay=1" \ + hs_timeout=10000-60000 \ + mtu=1650 reconnect=1 reco_delay=1" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6060,18 +6088,20 @@ requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_CHACHAPOLY_C run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6090,18 +6120,20 @@ requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_AES_C requires_config_enabled MBEDTLS_GCM_C run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6120,18 +6152,20 @@ requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_AES_C requires_config_enabled MBEDTLS_CCM_C run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CCM-8 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6151,18 +6185,20 @@ requires_config_enabled MBEDTLS_AES_C requires_config_enabled MBEDTLS_CIPHER_MODE_CBC requires_config_enabled MBEDTLS_SSL_ENCRYPT_THEN_MAC run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6181,18 +6217,20 @@ requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_AES_C requires_config_enabled MBEDTLS_CIPHER_MODE_CBC run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ - -p "$P_PXY mtu=512" \ + -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256 etm=0 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ - mtu=512" \ + hs_timeout=10000-60000 \ + mtu=1024" \ 0 \ -S "resend" \ -s "found fragmented DTLS handshake message" \ @@ -6204,15 +6242,15 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C client_needs_more_time 2 run_test "DTLS fragmenting: proxy MTU + 3d" \ - -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ + -p "$P_PXY mtu=1024 drop=8 delay=8 duplicate=8" \ "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - hs_timeout=250-10000 mtu=512" \ + hs_timeout=250-10000 mtu=1024" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=250-10000 mtu=512" \ + hs_timeout=250-10000 mtu=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -6223,15 +6261,15 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C client_needs_more_time 2 run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \ - -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ + -p "$P_PXY mtu=1024 drop=8 delay=8 duplicate=8" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - hs_timeout=250-10000 mtu=512 nbio=2" \ + hs_timeout=250-10000 mtu=1024 nbio=2" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=250-10000 mtu=512 nbio=2" \ + hs_timeout=250-10000 mtu=1024 nbio=2" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ From 6290dae90946c88aa3c08693d01cb7d223053e13 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Fri, 5 Oct 2018 08:06:01 -0400 Subject: [PATCH 1057/1100] Disable dtls fragmentation for ClientHello messages Set the handshake mtu to unlimited when encountering a ClienHello message and reset it to its previous value after writing the record. --- library/ssl_tls.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8bd74db8d7..38826f93f6 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -212,7 +212,10 @@ static int ssl_double_retransmit_timeout( mbedtls_ssl_context *ssl ) * delivered) of any compliant IPv4 (and IPv6) network, and should work * on most non-IP stacks too. */ if( ssl->handshake->retransmit_timeout != ssl->conf->hs_timeout_min ) + { ssl->handshake->mtu = 508; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "mtu autoreduction to %d bytes", ssl->handshake->mtu ) ); + } new_timeout = 2 * ssl->handshake->retransmit_timeout; @@ -2945,6 +2948,7 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { int ret; + uint16_t mtu_temp = 0; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) @@ -2979,6 +2983,15 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ssl_swap_epochs( ssl ); } + /* Disable handshake mtu for client hello message to avoid fragmentation. + * Setting it back after calling mbedtls_ssl_write_record */ + if( ssl->out_msg[0] == MBEDTLS_SSL_HS_CLIENT_HELLO ) + { + mtu_temp = ssl->handshake->mtu; + ssl->handshake->mtu = 0; + MBEDTLS_SSL_DEBUG_MSG( 2, ( "disabling fragmentation of ClientHello message" ) ); + } + ret = ssl_get_remaining_payload_in_datagram( ssl ); if( ret < 0 ) return( ret ); @@ -3077,6 +3090,12 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); } + + if( mtu_temp != 0 ) + { + ssl->handshake->mtu = mtu_temp; + mtu_temp = 0; + } } if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) From 948fe80f421f6e92726458db0ae2e0bbd235fc35 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Fri, 5 Oct 2018 15:42:44 -0400 Subject: [PATCH 1058/1100] ssl-opt.sh: adjust test timeouts to fit slower targets --- tests/ssl-opt.sh | 116 +++++++++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 50 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 23c25afcb5..9c904c3911 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5909,12 +5909,12 @@ run_test "DTLS fragmenting: client (MTU)" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - hs_timeout=2500-60000 \ + hs_timeout=3500-60000 \ mtu=4096" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=2500-60000 \ + hs_timeout=3500-60000 \ mtu=1024" \ 0 \ -s "found fragmented DTLS handshake message" \ @@ -6677,8 +6677,10 @@ run_test "DTLS proxy: delay ChangeCipherSpec" \ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ -p "$P_PXY delay_srv=ServerHello" \ - "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -c "Buffering HS message" \ -c "Next handshake message has been buffered - load"\ @@ -6691,8 +6693,10 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on client" \ run_test "DTLS reordering: Buffer out-of-order handshake message fragment on client" \ -p "$P_PXY delay_srv=ServerHello" \ - "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -c "Buffering HS message" \ -c "found fragmented DTLS handshake message"\ @@ -6712,8 +6716,10 @@ run_test "DTLS reordering: Buffer out-of-order handshake message fragment on requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1300 run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next" \ -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \ - "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -c "Buffering HS message" \ -c "Next handshake message has been buffered - load"\ @@ -6732,8 +6738,10 @@ requires_config_value_at_least "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 900 requires_config_value_at_most "MBEDTLS_SSL_DTLS_MAX_BUFFERING" 1299 run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling next, free buffered msg" \ -p "$P_PXY delay_srv=Certificate delay_srv=Certificate" \ - "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV mtu=512 dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -c "Buffering HS message" \ -c "attempt to make space by freeing buffered future messages" \ @@ -6747,8 +6755,10 @@ run_test "DTLS reordering: Buffer out-of-order hs msg before reassembling nex run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ -p "$P_PXY delay_cli=Certificate" \ - "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 auth_mode=required cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -C "Buffering HS message" \ -C "Next handshake message has been buffered - load"\ @@ -6761,8 +6771,10 @@ run_test "DTLS reordering: Buffer out-of-order handshake message on server" \ run_test "DTLS reordering: Buffer out-of-order CCS message on client"\ -p "$P_PXY delay_srv=NewSessionTicket" \ - "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -C "Buffering HS message" \ -C "Next handshake message has been buffered - load"\ @@ -6775,8 +6787,10 @@ run_test "DTLS reordering: Buffer out-of-order CCS message on client"\ run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ -p "$P_PXY delay_cli=ClientKeyExchange" \ - "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -C "Buffering HS message" \ -C "Next handshake message has been buffered - load"\ @@ -6789,8 +6803,10 @@ run_test "DTLS reordering: Buffer out-of-order CCS message on server"\ run_test "DTLS reordering: Buffer encrypted Finished message" \ -p "$P_PXY delay_ccs=1" \ - "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2" \ - "$P_CLI dgram_packing=0 dtls=1 debug_level=2" \ + "$P_SRV dgram_packing=0 cookies=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ + "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ + hs_timeout=2500-60000" \ 0 \ -s "Buffer record from epoch 1" \ -s "Found buffered record from current epoch - load" \ @@ -6830,9 +6846,9 @@ run_test "DTLS reordering: Buffer encrypted Finished message, drop for fragme client_needs_more_time 2 run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ -s "Extra-header:" \ @@ -6841,8 +6857,8 @@ run_test "DTLS proxy: 3d (drop, delay, duplicate), \"short\" PSK handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, \"short\" RSA handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 \ force_ciphersuite=TLS-RSA-WITH-AES-128-CBC-SHA" \ 0 \ -s "Extra-header:" \ @@ -6851,8 +6867,8 @@ run_test "DTLS proxy: 3d, \"short\" RSA handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -6860,8 +6876,8 @@ run_test "DTLS proxy: 3d, \"short\" (no ticket, no cli_auth) FS handshake" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, FS, client auth" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=required" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=required" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -6869,8 +6885,8 @@ run_test "DTLS proxy: 3d, FS, client auth" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, FS, ticket" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1 auth_mode=none" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=none" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -6878,8 +6894,8 @@ run_test "DTLS proxy: 3d, FS, ticket" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1 auth_mode=required" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=1" \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1 auth_mode=required" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -6887,9 +6903,9 @@ run_test "DTLS proxy: 3d, max handshake (FS, ticket + client auth)" \ client_needs_more_time 2 run_test "DTLS proxy: 3d, max handshake, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 nbio=2 tickets=1 \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1 \ auth_mode=required" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 nbio=2 tickets=1" \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 nbio=2 tickets=1" \ 0 \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" @@ -6897,9 +6913,9 @@ run_test "DTLS proxy: 3d, max handshake, nbio" \ client_needs_more_time 4 run_test "DTLS proxy: 3d, min handshake, resumption" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 debug_level=3" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -6911,9 +6927,9 @@ run_test "DTLS proxy: 3d, min handshake, resumption" \ client_needs_more_time 4 run_test "DTLS proxy: 3d, min handshake, resumption, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 debug_level=3 nbio=2" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ debug_level=3 reconnect=1 read_timeout=1000 max_resend=10 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8 nbio=2" \ 0 \ @@ -6926,9 +6942,9 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, client-initiated renego" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiation=1 debug_level=2" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ renegotiate=1 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -6941,9 +6957,9 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, client-initiated renego, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiation=1 debug_level=2" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ renegotiate=1 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -6956,10 +6972,10 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, server-initiated renego" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \ debug_level=2" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ renegotiation=1 exchanges=4 debug_level=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -6972,10 +6988,10 @@ client_needs_more_time 4 requires_config_enabled MBEDTLS_SSL_RENEGOTIATION run_test "DTLS proxy: 3d, min handshake, server-initiated renego, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ - "$P_SRV dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 auth_mode=none \ + "$P_SRV dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 auth_mode=none \ psk=abc123 renegotiate=1 renegotiation=1 exchanges=4 \ debug_level=2 nbio=2" \ - "$P_CLI dtls=1 dgram_packing=0 hs_timeout=250-10000 tickets=0 psk=abc123 \ + "$P_CLI dtls=1 dgram_packing=0 hs_timeout=500-10000 tickets=0 psk=abc123 \ renegotiation=1 exchanges=4 debug_level=2 nbio=2 \ force_ciphersuite=TLS-PSK-WITH-AES-128-CCM-8" \ 0 \ @@ -6989,7 +7005,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 2048" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -6998,7 +7014,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 768" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -7007,7 +7023,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, openssl server, fragmentation, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5 protect_hvr=1" \ "$O_SRV -dtls1 -mtu 768" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 nbio=2 tickets=0" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2 tickets=0" \ 0 \ -c "HTTP/1.0 200 OK" @@ -7017,7 +7033,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 2048 -a" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" @@ -7028,7 +7044,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server, fragmentation" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 512" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" @@ -7039,7 +7055,7 @@ not_with_valgrind # risk of non-mbedtls peer timing out run_test "DTLS proxy: 3d, gnutls server, fragmentation, nbio" \ -p "$P_PXY drop=5 delay=5 duplicate=5" \ "$G_SRV -u --mtu 512" \ - "$P_CLI dgram_packing=0 dtls=1 hs_timeout=250-60000 nbio=2" \ + "$P_CLI dgram_packing=0 dtls=1 hs_timeout=500-60000 nbio=2" \ 0 \ -s "Extra-header:" \ -c "Extra-header:" From 0fc9cf40cfd0dc31a28006b8fbd1afff9805b954 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 9 Oct 2018 03:09:41 -0400 Subject: [PATCH 1059/1100] ssl-opt.sh: increase proxy mtu sizes to contain entire datagrams --- tests/ssl-opt.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 9c904c3911..f70a85c1ca 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5819,7 +5819,7 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "DTLS fragmenting: client-initiated, server only (max_frag_len), proxy MTU" \ - -p "$P_PXY mtu=1024" \ + -p "$P_PXY mtu=1110" \ "$P_SRV dtls=1 debug_level=2 auth_mode=none \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ @@ -5867,7 +5867,7 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_MAX_FRAGMENT_LENGTH run_test "DTLS fragmenting: client-initiated, both (max_frag_len), proxy MTU" \ - -p "$P_PXY mtu=1024" \ + -p "$P_PXY mtu=1110" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ From 095d9cf58ee365f32df5472941df05aa99c93ba6 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 9 Oct 2018 12:39:13 +0100 Subject: [PATCH 1060/1100] Fix ordering of free()ing of internal structures in ssl_server2 If `MBEDTLS_MEMORY_BUFFER_ALLOC_C` is configured and Mbed TLS' custom buffer allocator is used for calloc() and free(), the read buffer used by the server example application is allocated from the buffer allocator, but freed after the buffer allocator has been destroyed. If memory backtracing is enabled, this leaves a memory leak in the backtracing structure allocated for the buffer, as found by valgrind. Fixes #2069. --- programs/ssl/ssl_server2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c index 4eac51f746..efda65d23d 100644 --- a/programs/ssl/ssl_server2.c +++ b/programs/ssl/ssl_server2.c @@ -3146,6 +3146,8 @@ exit: mbedtls_ssl_cookie_free( &cookie_ctx ); #endif + mbedtls_free( buf ); + #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) #if defined(MBEDTLS_MEMORY_DEBUG) mbedtls_memory_buffer_alloc_status(); @@ -3153,7 +3155,6 @@ exit: mbedtls_memory_buffer_alloc_free(); #endif - mbedtls_free( buf ); mbedtls_printf( " done.\n" ); #if defined(_WIN32) From abe6003f5aae7206b0545a6fd9e090bcfc9b1422 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Tue, 9 Oct 2018 12:44:35 +0100 Subject: [PATCH 1061/1100] Adapt ChangeLog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 513f24f3ab..c6f90320f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,10 @@ Bugfix invalidated keys of a lifetime of less than a 1s. Fixes #1968. * Fix failure in hmac_drbg in the benchmark sample application, when MBEDTLS_THREADING_C is defined. Found by TrinityTonic, #1095 + * Fix wrong order of freeing in programs/ssl/ssl_server2 example + application leading to a memory leak in case both + MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE are set. + Fixes #2069. Changes * Add tests for session resumption in DTLS. From ef43ce6e25054718cee7e0837f127b39b9cb34db Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 9 Oct 2018 08:24:12 -0400 Subject: [PATCH 1062/1100] Dtls: change the way unlimited mtu is set for client hello messages --- library/ssl_tls.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 38826f93f6..353c3471b6 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2948,7 +2948,6 @@ int mbedtls_ssl_resend( mbedtls_ssl_context *ssl ) int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) { int ret; - uint16_t mtu_temp = 0; MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> mbedtls_ssl_flight_transmit" ) ); if( ssl->handshake->retransmit_state != MBEDTLS_SSL_RETRANS_SENDING ) @@ -2983,15 +2982,6 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) ssl_swap_epochs( ssl ); } - /* Disable handshake mtu for client hello message to avoid fragmentation. - * Setting it back after calling mbedtls_ssl_write_record */ - if( ssl->out_msg[0] == MBEDTLS_SSL_HS_CLIENT_HELLO ) - { - mtu_temp = ssl->handshake->mtu; - ssl->handshake->mtu = 0; - MBEDTLS_SSL_DEBUG_MSG( 2, ( "disabling fragmentation of ClientHello message" ) ); - } - ret = ssl_get_remaining_payload_in_datagram( ssl ); if( ret < 0 ) return( ret ); @@ -3090,12 +3080,6 @@ int mbedtls_ssl_flight_transmit( mbedtls_ssl_context *ssl ) MBEDTLS_SSL_DEBUG_RET( 1, "mbedtls_ssl_write_record", ret ); return( ret ); } - - if( mtu_temp != 0 ) - { - ssl->handshake->mtu = mtu_temp; - mtu_temp = 0; - } } if( ( ret = mbedtls_ssl_flush_output( ssl ) ) != 0 ) @@ -7924,6 +7908,12 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL_PROTO_DTLS) static size_t ssl_get_current_mtu( const mbedtls_ssl_context *ssl ) { + /* Return unlimited mtu for client hello messages to avoid fragmentation. */ + if( ssl->conf->endpoint == MBEDTLS_SSL_IS_CLIENT && + ( ssl->state == MBEDTLS_SSL_CLIENT_HELLO || + ssl->state == MBEDTLS_SSL_SERVER_HELLO ) ) + return ( 0 ); + if( ssl->handshake == NULL || ssl->handshake->mtu == 0 ) return( ssl->mtu ); From 35f2f300ca5724ab0389bed4ed3c7f9d25110290 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Tue, 9 Oct 2018 08:52:14 -0400 Subject: [PATCH 1063/1100] ssl-opt.sh: change expected pattern from 'resend' to 'autoreduction' --- tests/ssl-opt.sh | 74 ++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index f70a85c1ca..079b0f61c2 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5551,21 +5551,21 @@ run_test "DTLS cookie: enabled, nbio" \ # Tests for client reconnecting from the same port with DTLS -not_with_valgrind # spurious resend +not_with_valgrind # spurious autoreduction run_test "DTLS client reconnect from same port: reference" \ "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \ "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000" \ 0 \ - -C "resend" \ + -C "autoreduction" \ -S "The operation timed out" \ -S "Client initiated reconnection from same port" -not_with_valgrind # spurious resend +not_with_valgrind # spurious autoreduction run_test "DTLS client reconnect from same port: reconnect" \ "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \ "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \ 0 \ - -C "resend" \ + -C "autoreduction" \ -S "The operation timed out" \ -s "Client initiated reconnection from same port" @@ -6002,7 +6002,7 @@ run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend # OTOH the client might resend if the server is to slow to reset after sending # a HelloVerifyRequest, so only check for no retransmission server-side -not_with_valgrind # spurious resend due to timeout +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6019,12 +6019,12 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -not_with_valgrind # spurious resend due to timeout +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6041,7 +6041,7 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ mtu=1024 nbio=2 \ hs_timeout=15000-60000" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -6051,11 +6051,11 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ # Since we don't support reading fragmented ClientHello yet, # up the MTU to 1450 (larger than ClientHello with session ticket, # but still smaller than client's Certificate to ensure fragmentation). -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. # reco_delay avoids races where the client reconnects before the server has -# resumed listening, which would result in a spurious resend. -not_with_valgrind # spurious resend due to timeout +# resumed listening, which would result in a spurious autoreduction. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6072,14 +6072,14 @@ run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ hs_timeout=10000-60000 \ mtu=1650 reconnect=1 reco_delay=1" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. -not_with_valgrind # spurious resend due to timeout +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6103,14 +6103,14 @@ run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. -not_with_valgrind # spurious resend due to timeout +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6135,14 +6135,14 @@ run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. -not_with_valgrind # spurious resend due to timeout +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6167,14 +6167,14 @@ run_test "DTLS fragmenting: proxy MTU, AES-CCM renego" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. -not_with_valgrind # spurious resend due to timeout +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6200,14 +6200,14 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC EtM renego" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" -# A resend on the client-side might happen if the server is -# slow to reset, therefore omitting '-C "resend"' below. -not_with_valgrind # spurious resend due to timeout +# An autoreduction on the client-side might happen if the server is +# slow to reset, therefore omitting '-C "autoreduction"' below. +not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6232,7 +6232,7 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ hs_timeout=10000-60000 \ mtu=1024" \ 0 \ - -S "resend" \ + -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ -C "error" @@ -6555,7 +6555,7 @@ run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ # Tests for specific things with "unreliable" UDP connection -not_with_valgrind # spurious resend due to timeout +not_with_valgrind # spurious autoreduction due to timeout run_test "DTLS proxy: reference" \ -p "$P_PXY" \ "$P_SRV dtls=1 debug_level=2" \ @@ -6567,11 +6567,11 @@ run_test "DTLS proxy: reference" \ -S "record from another epoch" \ -C "discarding invalid record" \ -S "discarding invalid record" \ - -S "resend" \ + -S "autoreduction" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" -not_with_valgrind # spurious resend due to timeout +not_with_valgrind # spurious autoreduction due to timeout run_test "DTLS proxy: duplicate every packet" \ -p "$P_PXY duplicate=1" \ "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ @@ -6581,7 +6581,7 @@ run_test "DTLS proxy: duplicate every packet" \ -s "replayed record" \ -c "record from another epoch" \ -s "record from another epoch" \ - -S "resend" \ + -S "autoreduction" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" From 7311c78074b161c04f4036addea4e57866921aa7 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 06:49:41 -0400 Subject: [PATCH 1064/1100] ssl-opt.sh: force ciphersuites to reduce mtu size --- tests/ssl-opt.sh | 164 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 134 insertions(+), 30 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 079b0f61c2..ac2a7c07d8 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5943,7 +5943,7 @@ run_test "DTLS fragmenting: server (MTU)" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C -run_test "DTLS fragmenting: both (MTU)" \ +run_test "DTLS fragmenting: both (MTU=1024)" \ -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ @@ -5960,21 +5960,54 @@ run_test "DTLS fragmenting: both (MTU)" \ -c "found fragmented DTLS handshake message" \ -C "error" -# Test for automatic MTU reduction on repeated resend +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_SHA256_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C +run_test "DTLS fragmenting: both (MTU=512)" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=2500-60000 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=2500-60000 \ + mtu=512" \ + 0 \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +# Test for automatic MTU reduction on repeated resend. +# The ratio of max/min timeout should ideally equal 4 to accept two +# retransmissions, but in some cases (like both the server and client using +# fragmentation and auto-reduction) an extra retransmission might occur, +# hence the ratio of 8. not_with_valgrind requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ - -p "$P_PXY mtu=1024" \ + -p "$P_PXY mtu=508" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ - key_file=data_files/server7.key\ - hs_timeout=100-10000" \ + key_file=data_files/server7.key \ + hs_timeout=400-3200" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=100-10000" \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=400-3200" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -5984,15 +6017,19 @@ only_with_valgrind requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ -p "$P_PXY mtu=508" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ - key_file=data_files/server7.key\ + key_file=data_files/server7.key \ hs_timeout=250-10000" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ hs_timeout=250-10000" \ 0 \ -s "found fragmented DTLS handshake message" \ @@ -6006,7 +6043,7 @@ not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C -run_test "DTLS fragmenting: proxy MTU, simple handshake" \ +run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \ -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ @@ -6024,22 +6061,77 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake" \ -c "found fragmented DTLS handshake message" \ -C "error" +# the proxy shouldn't drop or mess up anything, so we shouldn't need to resend +# OTOH the client might resend if the server is to slow to reset after sending +# a HelloVerifyRequest, so only check for no retransmission server-side not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C -run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio" \ +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C +run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=512)" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=10000-60000 \ + mtu=512" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=10000-60000 \ + mtu=512" \ + 0 \ + -S "autoreduction" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +not_with_valgrind # spurious autoreduction due to timeout +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \ -p "$P_PXY mtu=1024" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - mtu=1024 nbio=2 \ - hs_timeout=15000-60000" \ + hs_timeout=10000-60000 \ + mtu=1024 nbio=2" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - mtu=1024 nbio=2 \ - hs_timeout=15000-60000" \ + hs_timeout=10000-60000 \ + mtu=1024 nbio=2" \ + 0 \ + -S "autoreduction" \ + -s "found fragmented DTLS handshake message" \ + -c "found fragmented DTLS handshake message" \ + -C "error" + +not_with_valgrind # spurious autoreduction due to timeout +requires_config_enabled MBEDTLS_SSL_PROTO_DTLS +requires_config_enabled MBEDTLS_RSA_C +requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C +run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \ + -p "$P_PXY mtu=512" \ + "$P_SRV dtls=1 debug_level=2 auth_mode=required \ + crt_file=data_files/server7_int-ca.crt \ + key_file=data_files/server7.key \ + hs_timeout=10000-60000 \ + mtu=512 nbio=2" \ + "$P_CLI dtls=1 debug_level=2 \ + crt_file=data_files/server8_int-ca2.crt \ + key_file=data_files/server8.key \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=10000-60000 \ + mtu=512 nbio=2" \ 0 \ -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ @@ -6059,18 +6151,22 @@ not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C run_test "DTLS fragmenting: proxy MTU, resumed handshake" \ - -p "$P_PXY mtu=1650" \ + -p "$P_PXY mtu=1450" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ hs_timeout=10000-60000 \ - mtu=1650" \ + mtu=1450" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ hs_timeout=10000-60000 \ - mtu=1650 reconnect=1 reco_delay=1" \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + mtu=1450 reconnect=1 reco_delay=1" \ 0 \ -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ @@ -6088,20 +6184,20 @@ requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_CHACHAPOLY_C run_test "DTLS fragmenting: proxy MTU, ChachaPoly renego" \ - -p "$P_PXY mtu=1024" \ + -p "$P_PXY mtu=512" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ - force_ciphersuite=TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256 \ hs_timeout=10000-60000 \ - mtu=1024" \ + mtu=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ hs_timeout=10000-60000 \ - mtu=1024" \ + mtu=512" \ 0 \ -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ @@ -6120,20 +6216,20 @@ requires_config_enabled MBEDTLS_SSL_RENEGOTIATION requires_config_enabled MBEDTLS_AES_C requires_config_enabled MBEDTLS_GCM_C run_test "DTLS fragmenting: proxy MTU, AES-GCM renego" \ - -p "$P_PXY mtu=1024" \ + -p "$P_PXY mtu=512" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ exchanges=2 renegotiation=1 \ - force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ hs_timeout=10000-60000 \ - mtu=1024" \ + mtu=512" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ exchanges=2 renegotiation=1 renegotiate=1 \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ hs_timeout=10000-60000 \ - mtu=1024" \ + mtu=512" \ 0 \ -S "autoreduction" \ -s "found fragmented DTLS handshake message" \ @@ -6240,17 +6336,21 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C client_needs_more_time 2 run_test "DTLS fragmenting: proxy MTU + 3d" \ - -p "$P_PXY mtu=1024 drop=8 delay=8 duplicate=8" \ + -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ "$P_SRV dgram_packing=0 dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - hs_timeout=250-10000 mtu=1024" \ + hs_timeout=250-10000 mtu=512" \ "$P_CLI dgram_packing=0 dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=250-10000 mtu=1024" \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=250-10000 mtu=512" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ @@ -6259,17 +6359,21 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C +requires_config_enabled MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA +requires_config_enabled MBEDTLS_AES_C +requires_config_enabled MBEDTLS_GCM_C client_needs_more_time 2 run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \ - -p "$P_PXY mtu=1024 drop=8 delay=8 duplicate=8" \ + -p "$P_PXY mtu=512 drop=8 delay=8 duplicate=8" \ "$P_SRV dtls=1 debug_level=2 auth_mode=required \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ - hs_timeout=250-10000 mtu=1024 nbio=2" \ + hs_timeout=250-10000 mtu=512 nbio=2" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ - hs_timeout=250-10000 mtu=1024 nbio=2" \ + force_ciphersuite=TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 \ + hs_timeout=250-10000 mtu=512 nbio=2" \ 0 \ -s "found fragmented DTLS handshake message" \ -c "found fragmented DTLS handshake message" \ From 7c6df832ed339129b63e25d682bc2537de5d4031 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 07:06:12 -0400 Subject: [PATCH 1065/1100] ssl-opt.sh: revert unnecessary "autoreduction" checks return to the initial check for "resend" --- tests/ssl-opt.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index ac2a7c07d8..e309f4291f 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5551,21 +5551,21 @@ run_test "DTLS cookie: enabled, nbio" \ # Tests for client reconnecting from the same port with DTLS -not_with_valgrind # spurious autoreduction +not_with_valgrind # spurious resend run_test "DTLS client reconnect from same port: reference" \ "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \ "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000" \ 0 \ - -C "autoreduction" \ + -C "resend" \ -S "The operation timed out" \ -S "Client initiated reconnection from same port" -not_with_valgrind # spurious autoreduction +not_with_valgrind # spurious resend run_test "DTLS client reconnect from same port: reconnect" \ "$P_SRV dtls=1 exchanges=2 read_timeout=1000" \ "$P_CLI dtls=1 exchanges=2 debug_level=2 hs_timeout=500-1000 reconnect_hard=1" \ 0 \ - -C "autoreduction" \ + -C "resend" \ -S "The operation timed out" \ -s "Client initiated reconnection from same port" @@ -6659,7 +6659,7 @@ run_test "DTLS fragmenting: 3d, openssl client, DTLS 1.0" \ # Tests for specific things with "unreliable" UDP connection -not_with_valgrind # spurious autoreduction due to timeout +not_with_valgrind # spurious resend due to timeout run_test "DTLS proxy: reference" \ -p "$P_PXY" \ "$P_SRV dtls=1 debug_level=2" \ @@ -6671,11 +6671,11 @@ run_test "DTLS proxy: reference" \ -S "record from another epoch" \ -C "discarding invalid record" \ -S "discarding invalid record" \ - -S "autoreduction" \ + -S "resend" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" -not_with_valgrind # spurious autoreduction due to timeout +not_with_valgrind # spurious resend due to timeout run_test "DTLS proxy: duplicate every packet" \ -p "$P_PXY duplicate=1" \ "$P_SRV dtls=1 dgram_packing=0 debug_level=2" \ @@ -6685,7 +6685,7 @@ run_test "DTLS proxy: duplicate every packet" \ -s "replayed record" \ -c "record from another epoch" \ -s "record from another epoch" \ - -S "autoreduction" \ + -S "resend" \ -s "Extra-header:" \ -c "HTTP/1.0 200 OK" From 748face36f508e7f7b11150a8023935fb11a1621 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 07:20:19 -0400 Subject: [PATCH 1066/1100] ssl_tls: fix maximum output length set maximum output length to MBEDTLS_SSL_OUT_CONTENT_LEN instead of MBEDTLS_SSL_MAX_CONTENT_LEN. --- library/ssl_tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 353c3471b6..9dfa05bc2b 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -151,7 +151,7 @@ static int ssl_get_remaining_payload_in_datagram( mbedtls_ssl_context const *ssl { int ret; size_t remaining, expansion; - size_t max_len = MBEDTLS_SSL_MAX_CONTENT_LEN; + size_t max_len = MBEDTLS_SSL_OUT_CONTENT_LEN; #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) const size_t mfl = mbedtls_ssl_get_max_frag_len( ssl ); From 7782605491f1b7e35bbba1d1c404933374aba672 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 07:34:08 -0400 Subject: [PATCH 1067/1100] ssl-opt.sh: add comments regarding ciphersuite forcing --- tests/ssl-opt.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index e309f4291f..96f0ba061c 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5960,6 +5960,7 @@ run_test "DTLS fragmenting: both (MTU=1024)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 512 with full config. requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -5986,6 +5987,7 @@ run_test "DTLS fragmenting: both (MTU=512)" \ -C "error" # Test for automatic MTU reduction on repeated resend. +# Forcing ciphersuite for this test to fit the MTU of 508 with full config. # The ratio of max/min timeout should ideally equal 4 to accept two # retransmissions, but in some cases (like both the server and client using # fragmentation and auto-reduction) an extra retransmission might occur, @@ -6013,6 +6015,7 @@ run_test "DTLS fragmenting: proxy MTU: auto-reduction" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 508 with full config. only_with_valgrind requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -6061,6 +6064,7 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake (MTU=1024)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 512 with full config. # the proxy shouldn't drop or mess up anything, so we shouldn't need to resend # OTOH the client might resend if the server is to slow to reset after sending # a HelloVerifyRequest, so only check for no retransmission server-side @@ -6112,6 +6116,7 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=1024)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 512 with full config. not_with_valgrind # spurious autoreduction due to timeout requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C @@ -6138,6 +6143,7 @@ run_test "DTLS fragmenting: proxy MTU, simple handshake, nbio (MTU=512)" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 1450 with full config. # This ensures things still work after session_reset(). # It also exercises the "resumed handshake" flow. # Since we don't support reading fragmented ClientHello yet, @@ -6333,6 +6339,7 @@ run_test "DTLS fragmenting: proxy MTU, AES-CBC non-EtM renego" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 512 with full config. requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6356,6 +6363,7 @@ run_test "DTLS fragmenting: proxy MTU + 3d" \ -c "found fragmented DTLS handshake message" \ -C "error" +# Forcing ciphersuite for this test to fit the MTU of 512 with full config. requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C From b459346f67e3d9eaef8c1cff0386c31df6aff79c Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 08:43:30 -0400 Subject: [PATCH 1068/1100] ssl-opt.sh: add a check for i686 targets Run DTLS fragmenting tests on non-i686 targets only. Remove reduntant gnutls requirements. --- tests/ssl-opt.sh | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 96f0ba061c..5483734187 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -262,6 +262,21 @@ requires_ipv6() { fi } +# skip next test if it's i686 or uname is not available +requires_not_i686() { + if [ -z "${IS_I686:-}" ]; then + IS_I686="YES" + if which "uname" >/dev/null 2>&1; then + if [ -z "$(uname -a | grep i686)" ]; then + IS_I686="NO" + fi + fi + fi + if [ "$IS_I686" = "YES" ]; then + SKIP_NEXT="YES" + fi +} + # Calculate the input & output maximum content lengths set in the config MAX_CONTENT_LEN=$( ../scripts/config.pl get MBEDTLS_SSL_MAX_CONTENT_LEN || echo "16384") MAX_IN_LEN=$( ../scripts/config.pl get MBEDTLS_SSL_IN_CONTENT_LEN || echo "$MAX_CONTENT_LEN") @@ -6391,7 +6406,6 @@ run_test "DTLS fragmenting: proxy MTU + 3d, nbio" \ # # here and below we just want to test that the we fragment in a way that # pleases other implementations, so we don't need the peer to fragment -requires_gnutls requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6407,7 +6421,6 @@ run_test "DTLS fragmenting: gnutls server, DTLS 1.2" \ -c "fragmenting handshake message" \ -C "error" -requires_gnutls requires_config_enabled MBEDTLS_SSL_PROTO_DTLS requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C @@ -6435,6 +6448,7 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_2 requires_gnutls +requires_not_i686 run_test "DTLS fragmenting: gnutls client, DTLS 1.2" \ "$P_SRV dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ @@ -6450,6 +6464,7 @@ requires_config_enabled MBEDTLS_RSA_C requires_config_enabled MBEDTLS_ECDSA_C requires_config_enabled MBEDTLS_SSL_PROTO_TLS1_1 requires_gnutls +requires_not_i686 run_test "DTLS fragmenting: gnutls client, DTLS 1.0" \ "$P_SRV dtls=1 debug_level=2 \ crt_file=data_files/server7_int-ca.crt \ From 9580528248c3765abc59142e585b8bd29c4ce093 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Thu, 11 Oct 2018 08:55:37 -0400 Subject: [PATCH 1069/1100] ssl-opt.sh: fix typo in mtu settings --- tests/ssl-opt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 5483734187..f02d2ec79f 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5964,7 +5964,7 @@ run_test "DTLS fragmenting: both (MTU=1024)" \ crt_file=data_files/server7_int-ca.crt \ key_file=data_files/server7.key \ hs_timeout=2500-60000 \ - mtu=512" \ + mtu=1024" \ "$P_CLI dtls=1 debug_level=2 \ crt_file=data_files/server8_int-ca2.crt \ key_file=data_files/server8.key \ From f0bbd7e3fd6c5ce10dbc5ab0bc4e3e11759a45ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 15 Oct 2018 13:22:41 +0200 Subject: [PATCH 1070/1100] Misc documentation fixes/improvements. --- ChangeLog | 16 ++++++++++------ include/mbedtls/config.h | 14 ++++++++------ include/mbedtls/ecdh.h | 16 ++++++++-------- include/mbedtls/ecdsa.h | 14 +++++++------- include/mbedtls/ecp.h | 6 +++--- include/mbedtls/pk.h | 4 ++-- include/mbedtls/x509_crt.h | 2 +- library/error.c | 2 +- 8 files changed, 40 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ec9d4d945..e7a2f4df6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,12 +3,16 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx Features - * Add support for restartable ECC operations, enabled by - MBEDTLS_ECP_RESTARTABLE (disabled by default) at compile time and - mbedtls_ecp_set_max_ops() at runtime, using new xxx_restartable functions - in ECP, ECDSA, PK and X509 (CRL not supported yet), and using existing - functions in ECDH and SSL (currently only implemented client-side, for - ECDHE-ECDSA ciphersuites with TLS 1.2, including client authentication). + * Add support for temporarily suspending expensive ECC computations after + some configurable amount of operations, to be used in single-threaded + constrained systems where ECC is time consuming and blocking until + completion cannot be tolerated. This is enabled by + MBEDTLS_ECP_RESTARTABLE at compile time (disabled by default) and + configured by mbedtls_ecp_set_max_ops() at runtime. It applies to new + xxx_restartable functions in ECP, ECDSA, PK and X.509 (CRL not supported + yet), and to existing functions in ECDH and SSL (currently only + implemented client-side, for ECDHE-ECDSA ciphersuites in TLS 1.2, + including client authentication). Bugfix * Fix a bug in the update function for SSL ticket keys which previously diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 3f248d5c45..92f024a172 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -682,14 +682,16 @@ * * Enable "non-blocking" ECC operations that can return early and be resumed. * - * This enables \c mbedtls_ecp_set_max_ops() and allows various functions - * to return #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL - * module, #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) when needed, and then be - * called again later with the same arguments in order to further progress and - * eventually complete the operation, see \c mbedtls_ecp_set_max_ops(). + * This allows various functions to pause by returning + * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module, + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in + * order to further progress and eventually complete their operation. This is + * controlled through mbedtls_ecp_set_max_ops() which limits the maximum + * number of ECC operations a function may perform before pausing; see + * mbedtls_ecp_set_max_ops() for more information. * * This is useful in non-threaded environments if you want to avoid blocking - * for too long on ECC (hence, X509 or SSL/TLS) operations. + * for too long on ECC (and, hence, X.509 or SSL/TLS) operations. * * Uncomment this macro to enable restartable ECC computations. */ diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index ed3e8df427..8b75b93865 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -91,10 +91,10 @@ mbedtls_ecdh_context; * \param p_rng The RNG context. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX or - * \c MBEDTLS_MPI_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX or + * \c MBEDTLS_MPI_XXX error code on failure. */ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, int (*f_rng)(void *, unsigned char *, size_t), @@ -121,10 +121,10 @@ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp * \param p_rng The RNG context. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX or - * \c MBEDTLS_MPI_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX or + * \c MBEDTLS_MPI_XXX error code on failure. */ int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, const mbedtls_ecp_point *Q, const mbedtls_mpi *d, @@ -166,9 +166,9 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ); * \param p_rng The RNG context. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. */ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, @@ -210,9 +210,9 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, * 0: The key of the peer. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. * */ int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypair *key, @@ -235,9 +235,9 @@ int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, const mbedtls_ecp_keypai * \param p_rng The RNG context. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. */ int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, @@ -283,9 +283,9 @@ int mbedtls_ecdh_read_public( mbedtls_ecdh_context *ctx, * \param p_rng The RNG context. * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. */ int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, unsigned char *buf, size_t blen, diff --git a/include/mbedtls/ecdsa.h b/include/mbedtls/ecdsa.h index d5f7985cd2..4057828d47 100644 --- a/include/mbedtls/ecdsa.h +++ b/include/mbedtls/ecdsa.h @@ -73,7 +73,7 @@ typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; /** * \brief Internal restart context for ecdsa_verify() * - * \note Opaque struct + * \note Opaque struct, defined in ecdsa.c */ typedef struct mbedtls_ecdsa_restart_ver mbedtls_ecdsa_restart_ver_ctx; @@ -273,13 +273,13 @@ int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t * \param slen The length of the signature written. * \param f_rng The RNG function. * \param p_rng The RNG context. - * \param rs_ctx The restart context. + * \param rs_ctx The restart context (NULL disables restart). * * \return \c 0 on success. - * \return An \c MBEDTLS_ERR_ECP_XXX, \c MBEDTLS_ERR_MPI_XXX or - * \c MBEDTLS_ERR_ASN1_XXX error code on failure. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX, \c MBEDTLS_ERR_MPI_XXX or + * \c MBEDTLS_ERR_ASN1_XXX error code on failure. */ int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, mbedtls_md_type_t md_alg, @@ -387,16 +387,16 @@ int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, * \param hlen The size of the hash. * \param sig The signature to read and verify. * \param slen The size of \p sig. - * \param rs_ctx The restart context + * \param rs_ctx The restart context (NULL disables restart). * * \return \c 0 on success. * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid. * \return #MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if there is a valid * signature in \p sig, but its length is less than \p siglen. - * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_ERR_MPI_XXX - * error code on failure for any other reason. * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_ERR_MPI_XXX + * error code on failure for any other reason. */ int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, const unsigned char *hash, size_t hlen, diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 15aee04c70..d13f3ba22c 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -50,7 +50,7 @@ #define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ #define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< The buffer contains a valid signature followed by more data. */ #define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED -0x4B80 /**< The ECP hardware accelerator failed. */ -#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B00 /**< Operation in progress, try again with the same parameters. */ +#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B00 /**< Operation in progress, call again with the same parameters to continue. */ #ifdef __cplusplus extern "C" { @@ -747,7 +747,7 @@ int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \param P The point to multiply. * \param f_rng The RNG function. * \param p_rng The RNG context. - * \param rs_ctx The restart context. + * \param rs_ctx The restart context (NULL disables restart). * * \return \c 0 on success. * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m is not a valid private @@ -804,7 +804,7 @@ int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, * \param P The point to multiply by \p m. * \param n The integer by which to multiply \p Q. * \param Q The point to be multiplied by \p n. - * \param rs_ctx The restart context. + * \param rs_ctx The restart context (NULL disables restart). * * \return \c 0 on success. * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m or \p n are not diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 3b486cfe9f..9ec33da057 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -127,7 +127,7 @@ typedef struct mbedtls_pk_info_t mbedtls_pk_info_t; */ typedef struct mbedtls_pk_context { - const mbedtls_pk_info_t * pk_info; /**< Public key informations */ + const mbedtls_pk_info_t * pk_info; /**< Public key information */ void * pk_ctx; /**< Underlying public key context */ } mbedtls_pk_context; @@ -137,7 +137,7 @@ typedef struct mbedtls_pk_context */ typedef struct { - const mbedtls_pk_info_t * pk_info; /**< Public key informations */ + const mbedtls_pk_info_t * pk_info; /**< Public key information */ void * rs_ctx; /**< Underlying restart context */ } mbedtls_pk_restart_ctx; #else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h index 961db9844f..afeefca60e 100644 --- a/include/mbedtls/x509_crt.h +++ b/include/mbedtls/x509_crt.h @@ -426,7 +426,7 @@ int mbedtls_x509_crt_verify_with_profile( mbedtls_x509_crt *crt, * \param flags result of the verification * \param f_vrfy verification function * \param p_vrfy verification parameter - * \param rs_ctx restart context + * \param rs_ctx restart context (NULL to disable restart) * * \return See \c mbedtls_crt_verify_with_profile(), or * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of diff --git a/library/error.c b/library/error.c index d48ba8f793..3345481f07 100644 --- a/library/error.c +++ b/library/error.c @@ -290,7 +290,7 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) if( use_ret == -(MBEDTLS_ERR_ECP_HW_ACCEL_FAILED) ) mbedtls_snprintf( buf, buflen, "ECP - The ECP hardware accelerator failed" ); if( use_ret == -(MBEDTLS_ERR_ECP_IN_PROGRESS) ) - mbedtls_snprintf( buf, buflen, "ECP - Operation in progress, try again with the same parameters" ); + mbedtls_snprintf( buf, buflen, "ECP - Operation in progress, call again with the same parameters to continue" ); #endif /* MBEDTLS_ECP_C */ #if defined(MBEDTLS_MD_C) From 32df91183e8b603deeb14d627f9da63a6f6ee1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 15 Oct 2018 13:29:21 +0200 Subject: [PATCH 1071/1100] Fix documentation of what functions restart when The previous comment in ecp.h that only functions that take a "restart context" argument can restart was wrong due to ECDH and SSL functions. Changing that criterion to "document says if can return IN PROGRESS". This requires updating the documentation of the SSL functions to mention this explicitly, but it's something we really ought to do anyway, a bit embarrassing that this wasn't done already - callers need to know what `MBEDTLS_ERR_SSL_xxx` error codes to special-case. Note that the documentation of the relevant functions was in a suboptimal state, so it was improved in the process - it could use some more improvement, but only the changes that helped cleanly insert the info about the IN_PROGRESS part were done here. Also, while updating the ecp.h comment, I noticed several functions in the ECDH module were wrongfully documented as restartable, which is probably a left-over from the days before `mbedtls_ecdh_enable_restart()` was introduced. Fixing that as well, to make the criterion used in ecp.h correct. --- include/mbedtls/ecdh.h | 6 -- include/mbedtls/ecp.h | 16 +++- include/mbedtls/ssl.h | 183 ++++++++++++++++++++++++++--------------- 3 files changed, 131 insertions(+), 74 deletions(-) diff --git a/include/mbedtls/ecdh.h b/include/mbedtls/ecdh.h index 8b75b93865..27f2ffc6aa 100644 --- a/include/mbedtls/ecdh.h +++ b/include/mbedtls/ecdh.h @@ -91,8 +91,6 @@ mbedtls_ecdh_context; * \param p_rng The RNG context. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of - * operations was reached: see \c mbedtls_ecp_set_max_ops(). * \return Another \c MBEDTLS_ERR_ECP_XXX or * \c MBEDTLS_MPI_XXX error code on failure. */ @@ -121,8 +119,6 @@ int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp * \param p_rng The RNG context. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of - * operations was reached: see \c mbedtls_ecp_set_max_ops(). * \return Another \c MBEDTLS_ERR_ECP_XXX or * \c MBEDTLS_MPI_XXX error code on failure. */ @@ -210,8 +206,6 @@ int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, * 0: The key of the peer. * * \return \c 0 on success. - * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of - * operations was reached: see \c mbedtls_ecp_set_max_ops(). * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. * */ diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index d13f3ba22c..3bacf5cabf 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -350,9 +350,19 @@ mbedtls_ecp_keypair; * same; they must not be used until the function finally * returns 0. * - * This only affects functions that accept a pointer to a - * \c mbedtls_ecp_restart_ctx as an argument, and only works - * if that pointer is valid (in particular, not NULL). + * This only applies to functions whose documentation + * mentions they may return #MBEDTLS_ERR_ECP_IN_PROGRESS (or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS for functions in the + * SSL module). For functions that accept a "restart context" + * argument, passing NULL disables restart and makes the + * function equivalent to the function with the same name + * with \c _restartable removed. For functions in the ECDH + * module, restart is disabled unless the function accepts + * an "ECDH context" argument and + * mbedtls_ecdh_enable_restart() was previously called on + * that context. For function in the SSL module, restart is + * only enabled for specific sides and key exchanges + * (currently only for clients and ECDHE-ECDSA). * * \param max_ops Maximum number of basic operations done in a row. * Default: 0 (unlimited). diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 0ce05a56d1..942bf2c152 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2914,15 +2914,41 @@ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session * * \param ssl SSL context * - * \return 0 if successful, or - * MBEDTLS_ERR_SSL_WANT_READ or MBEDTLS_ERR_SSL_WANT_WRITE, or - * MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED (see below), or - * a specific SSL error code. + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE + * in the handshake is incomplete but or waiting for data to + * be availaible for reading from or writing to the underlying + * transport - in this case you must call this function again + * when the underlying transport is ready for the operation. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous + * operation is in progress (see + * mbedtls_ssl_conf_async_private_cb()) - in this case you + * must call this function again when the operation is ready. + * \return #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS if a cryptographic + * operation is in progress (see mbedtls_ecp_set_max_ops()) - + * in this case you must call this function again to complete + * the handshake when you're done attending other tasks. + * \return #MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED if DTLS is in use + * and the client did not demonstrate reachability yet - in + * this case you must stop using the context (see below). + * \return Another SSL error code - in this case you must stop using + * the context (see below). * - * If this function returns MBEDTLS_ERR_SSL_WANT_READ, the - * handshake is unfinished and no further data is available - * from the underlying transport. In this case, you must call - * the function again at some later stage. + * \warning If this function returns something other than + * \c 0, + * #MBEDTLS_ERR_SSL_WANT_READ, + * #MBEDTLS_ERR_SSL_WANT_WRITE, + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS, + * you must stop using the SSL context for reading or writing, + * and either free it or call \c mbedtls_ssl_session_reset() + * on it before re-using it for a new connection; the current + * connection must be closed. + * + * \note If DTLS is in use, then you may choose to handle + * #MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED specially for logging + * purposes, as it is an expected return value rather than an + * actual error, but you still need to reset/free the context. * * \note Remarks regarding event-driven DTLS: * If the function returns MBEDTLS_ERR_SSL_WANT_READ, no datagram @@ -2932,17 +2958,6 @@ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session * in which case the datagram of the underlying transport that is * currently being processed might or might not contain further * DTLS records. - * - * \note If this function returns something other than 0 or - * MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop using - * the SSL context for reading or writing, and either free it or - * call \c mbedtls_ssl_session_reset() on it before re-using it - * for a new connection; the current connection must be closed. - * - * \note If DTLS is in use, then you may choose to handle - * MBEDTLS_ERR_SSL_HELLO_VERIFY_REQUIRED specially for logging - * purposes, as it is an expected return value rather than an - * actual error, but you still need to reset/free the context. */ int mbedtls_ssl_handshake( mbedtls_ssl_context *ssl ); @@ -2950,20 +2965,21 @@ int mbedtls_ssl_handshake( mbedtls_ssl_context *ssl ); * \brief Perform a single step of the SSL handshake * * \note The state of the context (ssl->state) will be at - * the next state after execution of this function. Do not + * the next state after this function returns \c 0. Do not * call this function if state is MBEDTLS_SSL_HANDSHAKE_OVER. * - * \note If this function returns something other than 0 or - * MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop using - * the SSL context for reading or writing, and either free it or - * call \c mbedtls_ssl_session_reset() on it before re-using it - * for a new connection; the current connection must be closed. - * * \param ssl SSL context * - * \return 0 if successful, or - * MBEDTLS_ERR_SSL_WANT_READ or MBEDTLS_ERR_SSL_WANT_WRITE, or - * a specific SSL error code. + * \return See mbedtls_ssl_handshake(). + * + * \warning If this function returns something other than \c 0, + * #MBEDTLS_ERR_SSL_WANT_READ, #MBEDTLS_ERR_SSL_WANT_WRITE, + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS, you must stop using + * the SSL context for reading or writing, and either free it + * or call \c mbedtls_ssl_session_reset() on it before + * re-using it for a new connection; the current connection + * must be closed. */ int mbedtls_ssl_handshake_step( mbedtls_ssl_context *ssl ); @@ -2978,13 +2994,18 @@ int mbedtls_ssl_handshake_step( mbedtls_ssl_context *ssl ); * \param ssl SSL context * * \return 0 if successful, or any mbedtls_ssl_handshake() return - * value. + * value except #MBEDTLS_ERR_SSL_CLIENT_RECONNECT that can't + * happen during a renegotiation. + * + * \warning If this function returns something other than \c 0, + * #MBEDTLS_ERR_SSL_WANT_READ, #MBEDTLS_ERR_SSL_WANT_WRITE, + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS, you must stop using + * the SSL context for reading or writing, and either free it + * or call \c mbedtls_ssl_session_reset() on it before + * re-using it for a new connection; the current connection + * must be closed. * - * \note If this function returns something other than 0 or - * MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop using - * the SSL context for reading or writing, and either free it or - * call \c mbedtls_ssl_session_reset() on it before re-using it - * for a new connection; the current connection must be closed. */ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_RENEGOTIATION */ @@ -2996,40 +3017,54 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * \param buf buffer that will hold the data * \param len maximum number of bytes to read * - * \return One of the following: - * - 0 if the read end of the underlying transport was closed, - * - the (positive) number of bytes read, or - * - a negative error code on failure. + * \return The (positive) number of bytes read if successful. + * \return \c 0 is the read end of the underlying transport was closed + * - in this case you must stop using the context (see below). + * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE + * in the handshake is incomplete but or waiting for data to + * be availaible for reading from or writing to the underlying + * transport - in this case you must call this function again + * when the underlying transport is ready for the operation. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous + * operation is in progress (see + * mbedtls_ssl_conf_async_private_cb()) - in this case you + * must call this function again when the operation is ready. + * \return #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS if a cryptographic + * operation is in progress (see mbedtls_ecp_set_max_ops()) - + * in this case you must call this function again to complete + * the handshake when you're done attending other tasks. + * \return #MBEDTLS_ERR_SSL_CLIENT_RECONNECT if we're at the server + * side of a DTLS connection and the client is initiating a + * new commection using the same source port. See below. + * \return Another SSL error code - in this case you must stop using + * the context (see below). * - * If MBEDTLS_ERR_SSL_WANT_READ is returned, no application data - * is available from the underlying transport. In this case, - * the function needs to be called again at some later stage. + * \warning If this function returns something other than + * a positive value, + * #MBEDTLS_ERR_SSL_WANT_READ, + * #MBEDTLS_ERR_SSL_WANT_WRITE, + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS, + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS or + * #MBEDTLS_ERR_SSL_CLIENT_RECONNECT, + * you must stop using the SSL context for reading or writing, + * and either free it or call \c mbedtls_ssl_session_reset() + * on it before re-using it for a new connection; the current + * connection must be closed. * - * If MBEDTLS_ERR_SSL_WANT_WRITE is returned, a write is pending - * but the underlying transport isn't available for writing. In this - * case, the function needs to be called again at some later stage. - * - * When this function return MBEDTLS_ERR_SSL_CLIENT_RECONNECT + * \note When this function return MBEDTLS_ERR_SSL_CLIENT_RECONNECT * (which can only happen server-side), it means that a client * is initiating a new connection using the same source port. * You can either treat that as a connection close and wait * for the client to resend a ClientHello, or directly * continue with \c mbedtls_ssl_handshake() with the same - * context (as it has beeen reset internally). Either way, you - * should make sure this is seen by the application as a new + * context (as it has been reset internally). Either way, you + * must make sure this is seen by the application as a new * connection: application state, if any, should be reset, and * most importantly the identity of the client must be checked * again. WARNING: not validating the identity of the client * again, or not transmitting the new identity to the * application layer, would allow authentication bypass! * - * \note If this function returns something other than a positive value - * or MBEDTLS_ERR_SSL_WANT_READ/WRITE or MBEDTLS_ERR_SSL_CLIENT_RECONNECT, - * you must stop using the SSL context for reading or writing, - * and either free it or call \c mbedtls_ssl_session_reset() on it - * before re-using it for a new connection; the current connection - * must be closed. - * * \note Remarks regarding event-driven DTLS: * - If the function returns MBEDTLS_ERR_SSL_WANT_READ, no datagram * from the underlying transport layer is currently being processed, @@ -3060,16 +3095,34 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * \param buf buffer holding the data * \param len how many bytes must be written * - * \return the number of bytes actually written (may be less than len), - * or MBEDTLS_ERR_SSL_WANT_WRITE or MBEDTLS_ERR_SSL_WANT_READ, - * or another negative error code. + * \return The (non-negative) number of bytes actually written if + * successfull (may be less than \p len). + * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE + * in the handshake is incomplete but or waiting for data to + * be availaible for reading from or writing to the underlying + * transport - in this case you must call this function again + * when the underlying transport is ready for the operation. + * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous + * operation is in progress (see + * mbedtls_ssl_conf_async_private_cb()) - in this case you + * must call this function again when the operation is ready. + * \return #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS if a cryptographic + * operation is in progress (see mbedtls_ecp_set_max_ops()) - + * in this case you must call this function again to complete + * the handshake when you're done attending other tasks. + * \return Another SSL error code - in this case you must stop using + * the context (see below). * - * \note If this function returns something other than 0, a positive - * value or MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop - * using the SSL context for reading or writing, and either - * free it or call \c mbedtls_ssl_session_reset() on it before - * re-using it for a new connection; the current connection - * must be closed. + * \warning If this function returns something other than + * a non-negative value, + * #MBEDTLS_ERR_SSL_WANT_READ, + * #MBEDTLS_ERR_SSL_WANT_WRITE, + * #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS, + * you must stop using the SSL context for reading or writing, + * and either free it or call \c mbedtls_ssl_session_reset() + * on it before re-using it for a new connection; the current + * connection must be closed. * * \note When this function returns MBEDTLS_ERR_SSL_WANT_WRITE/READ, * it must be called later with the *same* arguments, From ee68cff813a8ee703121a1fd1e6a5baac850d664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 15 Oct 2018 15:27:49 +0200 Subject: [PATCH 1072/1100] Fix or improve some comments (and whitespace) --- library/ecdh.c | 4 ++-- library/ecp.c | 52 ++++++++++++++++++++-------------------------- library/pk.c | 2 +- library/pk_wrap.c | 4 ++-- library/x509_crt.c | 1 - 5 files changed, 28 insertions(+), 35 deletions(-) diff --git a/library/ecdh.c b/library/ecdh.c index a118de5345..8336912808 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -200,7 +200,7 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, #endif if( ( ret = ecdh_gen_public_restartable( &ctx->grp, &ctx->d, &ctx->Q, - f_rng, p_rng, rs_ctx ) ) != 0 ) + f_rng, p_rng, rs_ctx ) ) != 0 ) return( ret ); if( ( ret = mbedtls_ecp_tls_write_group( &ctx->grp, &grp_len, buf, blen ) ) @@ -211,7 +211,7 @@ int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, blen -= grp_len; if( ( ret = mbedtls_ecp_tls_write_point( &ctx->grp, &ctx->Q, ctx->point_format, - &pt_len, buf, blen ) ) != 0 ) + &pt_len, buf, blen ) ) != 0 ) return( ret ); *olen = grp_len + pt_len; diff --git a/library/ecp.c b/library/ecp.c index b2ee5235a9..94b42b97c0 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1428,7 +1428,7 @@ cleanup: * * - For the sake of compactness, only the seven low-order bits of x[i] * are used to represent its absolute value (K_i in the paper), and the msb - * of x[i] encodes the the sign (s_i in the paper): it is set if and only if + * of x[i] encodes the sign (s_i in the paper): it is set if and only if * if s_i == -1; * * Calling conventions: @@ -1480,10 +1480,10 @@ static void ecp_comb_recode_core( unsigned char x[], size_t d, * * Note: Even comb values (those where P would be omitted from the * sum defining T[i] above) are not needed in our adaption - * the the comb method. See ecp_comb_recode_core(). + * the comb method. See ecp_comb_recode_core(). * * This function currently works in four steps: - * (1) [dbl] Computation of intermediate T[i] for 2-powers values of i + * (1) [dbl] Computation of intermediate T[i] for 2-power values of i * (2) [norm_dbl] Normalization of coordinates of these T[i] * (3) [add] Computation of all T[i] * (4) [norm_add] Normalization of all T[i] @@ -1513,10 +1513,6 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, const unsigned char T_size = 1U << ( w - 1 ); mbedtls_ecp_point *cur, *TT[COMB_MAX_PRE - 1]; -#if !defined(MBEDTLS_ECP_RESTARTABLE) - (void) rs_ctx; -#endif - #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { @@ -1529,12 +1525,10 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, if( rs_ctx->rsm->state == ecp_rsm_pre_norm_add ) goto norm_add; } +#else + (void) rs_ctx; #endif - /* - * Set T[0] = P and - * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) - */ #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) { @@ -1546,7 +1540,10 @@ static int ecp_precompute_comb( const mbedtls_ecp_group *grp, dbl: #endif - + /* + * Set T[0] = P and + * T[2^{l-1}] = 2^{dl} P for l = 1 .. w-1 (this is not the final value) + */ MBEDTLS_MPI_CHK( mbedtls_ecp_copy( &T[0], P ) ); #if defined(MBEDTLS_ECP_RESTARTABLE) @@ -1569,17 +1566,16 @@ dbl: MBEDTLS_MPI_CHK( ecp_double_jac( grp, cur, cur ) ); } - /* - * Normalize current elements in T. As T has holes, - * use an auxiliary array of pointers to elements in T. - */ #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state = ecp_rsm_pre_norm_dbl; norm_dbl: #endif - + /* + * Normalize current elements in T. As T has holes, + * use an auxiliary array of pointers to elements in T. + */ j = 0; for( i = 1; i < T_size; i <<= 1 ) TT[j++] = T + i; @@ -1588,17 +1584,16 @@ norm_dbl: MBEDTLS_MPI_CHK( ecp_normalize_jac_many( grp, TT, j ) ); - /* - * Compute the remaining ones using the minimal number of additions - * Be careful to update T[2^l] only after using it! - */ #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state = ecp_rsm_pre_add; add: #endif - + /* + * Compute the remaining ones using the minimal number of additions + * Be careful to update T[2^l] only after using it! + */ MBEDTLS_ECP_BUDGET( ( T_size - 1 ) * MBEDTLS_ECP_OPS_ADD ); for( i = 1; i < T_size; i <<= 1 ) @@ -1608,18 +1603,17 @@ add: MBEDTLS_MPI_CHK( ecp_add_mixed( grp, &T[i + j], &T[j], &T[i] ) ); } - /* - * Normalize final elements in T. Even though there are no holes now, - * we still need the auxiliary array for homogeneity with last time. - * Also, skip T[0] which is already normalised, being a copy of P. - */ #if defined(MBEDTLS_ECP_RESTARTABLE) if( rs_ctx != NULL && rs_ctx->rsm != NULL ) rs_ctx->rsm->state = ecp_rsm_pre_norm_add; norm_add: #endif - + /* + * Normalize final elements in T. Even though there are no holes now, + * we still need the auxiliary array for homogeneity with last time. + * Also, skip T[0] which is already normalised, being a copy of P. + */ for( j = 0; j + 1 < T_size; j++ ) TT[j] = T + j + 1; @@ -1965,7 +1959,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, if( p_eq_g ) { /* almost transfer ownership of T to the group, but keep a copy of - * the pointer to use for caling the next function more easily */ + * the pointer to use for calling the next function more easily */ grp->T = T; grp->T_size = T_size; } diff --git a/library/pk.c b/library/pk.c index ba8950e8d7..ce8dbb5bbf 100644 --- a/library/pk.c +++ b/library/pk.c @@ -204,7 +204,7 @@ static inline int pk_hashlen_helper( mbedtls_md_type_t md_alg, size_t *hash_len * Helper to set up a restart context if needed */ static int pk_restart_setup( mbedtls_pk_restart_ctx *ctx, - const mbedtls_pk_info_t *info ) + const mbedtls_pk_info_t *info ) { /* Don't do anything if already set up or invalid */ if( ctx == NULL || ctx->pk_info != NULL ) diff --git a/library/pk_wrap.c b/library/pk_wrap.c index cb08ebac39..87806be337 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -337,7 +337,7 @@ static int eckey_verify_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, if( rs == NULL ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); - /* set up our own sub-context if needed */ + /* set up our own sub-context if needed (that is, on first run) */ if( rs->ecdsa_ctx.grp.pbits == 0 ) MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( &rs->ecdsa_ctx, ctx ) ); @@ -362,7 +362,7 @@ static int eckey_sign_rs_wrap( void *ctx, mbedtls_md_type_t md_alg, if( rs == NULL ) return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); - /* set up our own sub-context if needed */ + /* set up our own sub-context if needed (that is, on first run) */ if( rs->ecdsa_ctx.grp.pbits == 0 ) MBEDTLS_MPI_CHK( mbedtls_ecdsa_from_keypair( &rs->ecdsa_ctx, ctx ) ); diff --git a/library/x509_crt.c b/library/x509_crt.c index 5d9c6230ff..5f9b74f71f 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2727,7 +2727,6 @@ void mbedtls_x509_crt_restart_free( mbedtls_x509_crt_restart_ctx *ctx ) return; mbedtls_pk_restart_free( &ctx->pk ); - mbedtls_x509_crt_restart_init( ctx ); } #endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ From 25781f90da956adaa4e0903850da4fc6ad51fa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 15 Oct 2018 15:28:16 +0200 Subject: [PATCH 1073/1100] Fix missing check in example client And a mis-indented check as well. --- programs/ssl/ssl_client2.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c index 146bdfbeb2..15c778d315 100644 --- a/programs/ssl/ssl_client2.c +++ b/programs/ssl/ssl_client2.c @@ -1570,8 +1570,8 @@ int main( int argc, char *argv[] ) } #if defined(MBEDTLS_ECP_RESTARTABLE) - if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) - continue; + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) + continue; #endif /* For event-driven IO, wait for socket to become available */ @@ -1674,6 +1674,11 @@ int main( int argc, char *argv[] ) goto exit; } +#if defined(MBEDTLS_ECP_RESTARTABLE) + if( ret == MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS ) + continue; +#endif + /* For event-driven IO, wait for socket to become available */ if( opt.event == 1 /* level triggered IO */ ) { From a27190b774e7e89860c2e3b1874ea316629e189b Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 15 Oct 2018 16:33:43 +0300 Subject: [PATCH 1074/1100] Rename platform error code and value Rename the PLATFORM HW error, to avoid ABI breakage with Mbed OS. The value changed as well, as previous value was not in the range of Mbed TLS low level error codes. --- include/mbedtls/platform.h | 2 +- library/error.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index 5f5b982a4d..e30edc2e02 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -43,7 +43,7 @@ #include "platform_time.h" #endif -#define MBEDTLS_ERR_PLATFORM_HW_FAILED -0x0080 /**< Hardware failed platform operation. */ +#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 /**< Hardware failed platform operation. */ #ifdef __cplusplus extern "C" { diff --git a/library/error.c b/library/error.c index c6292171b3..0a1c794626 100644 --- a/library/error.c +++ b/library/error.c @@ -826,7 +826,7 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #endif /* MBEDTLS_PADLOCK_C */ #if defined(MBEDTLS_PLATFORM_C) - if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_FAILED) ) + if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED) ) mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware failed platform operation" ); #endif /* MBEDTLS_PLATFORM_C */ From 5267b62248c53f0f1c6d99efe081c6fa12f15eda Mon Sep 17 00:00:00 2001 From: Ron Eldor Date: Mon, 15 Oct 2018 18:44:42 +0300 Subject: [PATCH 1075/1100] Change error description 1. Change error description to a clearer one. 2. Change value in the error codes ranges description. --- include/mbedtls/error.h | 2 +- include/mbedtls/platform.h | 2 +- library/error.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/mbedtls/error.h b/include/mbedtls/error.h index c9a8250357..6c69a9b4a1 100644 --- a/include/mbedtls/error.h +++ b/include/mbedtls/error.h @@ -80,7 +80,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 - * PLATFORM 1 0x0080-0x0080 + * PLATFORM 1 0x0070-0x0070 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h index e30edc2e02..5cd143ce53 100644 --- a/include/mbedtls/platform.h +++ b/include/mbedtls/platform.h @@ -43,7 +43,7 @@ #include "platform_time.h" #endif -#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 /**< Hardware failed platform operation. */ +#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 /**< Hardware accelerator failed */ #ifdef __cplusplus extern "C" { diff --git a/library/error.c b/library/error.c index 0a1c794626..12902e305b 100644 --- a/library/error.c +++ b/library/error.c @@ -827,7 +827,7 @@ void mbedtls_strerror( int ret, char *buf, size_t buflen ) #if defined(MBEDTLS_PLATFORM_C) if( use_ret == -(MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED) ) - mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware failed platform operation" ); + mbedtls_snprintf( buf, buflen, "PLATFORM - Hardware accelerator failed" ); #endif /* MBEDTLS_PLATFORM_C */ #if defined(MBEDTLS_POLY1305_C) From c37423fa7628dd39d77090fb1fea7cde2408bc1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:28:17 +0200 Subject: [PATCH 1076/1100] Fix misleading sub-state name and comments The enum constant had 'ske' in its name while this was a sub-state of the "write client key exchange" state; corresponding issue in the comment. --- include/mbedtls/ssl_internal.h | 4 ++-- library/ssl_cli.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/mbedtls/ssl_internal.h b/include/mbedtls/ssl_internal.h index c09fd7007f..97abb9f90b 100644 --- a/include/mbedtls/ssl_internal.h +++ b/include/mbedtls/ssl_internal.h @@ -301,8 +301,8 @@ struct mbedtls_ssl_handshake_params enum { /* this complements ssl->state with info on intra-state operations */ ssl_ecrs_none = 0, /*!< nothing going on (yet) */ ssl_ecrs_crt_verify, /*!< Certificate: crt_verify() */ - ssl_ecrs_ske_start_processing, /*!< ServerKeyExchange: step 1 */ - ssl_ecrs_ske_ecdh_calc_secret, /*!< ServerKeyExchange: ECDH step 2 */ + ssl_ecrs_ske_start_processing, /*!< ServerKeyExchange: pk_verify() */ + ssl_ecrs_cke_ecdh_calc_secret, /*!< ClientKeyExchange: ECDH step 2 */ ssl_ecrs_crt_vrfy_sign, /*!< CertificateVerify: pk_sign() */ } ecrs_state; /*!< current (or last) operation */ size_t ecrs_n; /*!< place for saving a length */ diff --git a/library/ssl_cli.c b/library/ssl_cli.c index 7b88e61e38..5720a4b885 100644 --- a/library/ssl_cli.c +++ b/library/ssl_cli.c @@ -2946,7 +2946,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) #if defined(MBEDTLS_SSL__ECP_RESTARTABLE) if( ssl->handshake->ecrs_enabled ) { - if( ssl->handshake->ecrs_state == ssl_ecrs_ske_ecdh_calc_secret ) + if( ssl->handshake->ecrs_state == ssl_ecrs_cke_ecdh_calc_secret ) goto ecdh_calc_secret; mbedtls_ecdh_enable_restart( &ssl->handshake->ecdh_ctx ); @@ -2973,7 +2973,7 @@ static int ssl_write_client_key_exchange( mbedtls_ssl_context *ssl ) if( ssl->handshake->ecrs_enabled ) { ssl->handshake->ecrs_n = n; - ssl->handshake->ecrs_state = ssl_ecrs_ske_ecdh_calc_secret; + ssl->handshake->ecrs_state = ssl_ecrs_cke_ecdh_calc_secret; } ecdh_calc_secret: From d8b73f2312a2b5bff26210f4de82c0de573d8d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:34:13 +0200 Subject: [PATCH 1077/1100] Remove unnecessary calls to init() from free() Our API makes no guarantee that you can use a context after free()ing it without re-init()ing it first, so better not give the wrong impression that we do, while it's not policy and the rest of the code might not allow it. --- library/ecdh.c | 2 -- library/ecdsa.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/library/ecdh.c b/library/ecdh.c index 8336912808..fb46845c90 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -161,8 +161,6 @@ void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ) #if defined(MBEDTLS_ECP_RESTARTABLE) mbedtls_ecp_restart_free( &ctx->rs ); #endif - - mbedtls_ecdh_init( ctx ); } #if defined(MBEDTLS_ECP_RESTARTABLE) diff --git a/library/ecdsa.c b/library/ecdsa.c index 663433c907..9e35da1f78 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -126,8 +126,6 @@ static void ecdsa_restart_sig_free( mbedtls_ecdsa_restart_sig_ctx *ctx ) mbedtls_mpi_free( &ctx->k ); mbedtls_mpi_free( &ctx->r ); - - ecdsa_restart_sig_init( ctx ); } #if defined(MBEDTLS_ECDSA_DETERMINISTIC) From c0edc96704c36c68a57da05f0cd20cf49376a000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:38:19 +0200 Subject: [PATCH 1078/1100] Add comment on internal function API --- library/ecdh.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/ecdh.c b/library/ecdh.c index fb46845c90..eaad62c99b 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -41,6 +41,10 @@ #if !defined(MBEDTLS_ECDH_GEN_PUBLIC_ALT) /* * Generate public key (restartable version) + * + * Note: this internal function relies on its caller preserving the value of + * the output parameter 'd' accross continuation calls. This would not be + * acceptable for a public function but is OK here as we control call sites. */ static int ecdh_gen_public_restartable( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, From b843b15a02aa5eb4c466422193b4a2df44859265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:41:31 +0200 Subject: [PATCH 1079/1100] Fix function name to fit conventions --- include/mbedtls/ecp.h | 2 +- library/ecdsa.c | 2 +- library/ecp.c | 4 ++-- library/pk.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 3bacf5cabf..448549cfc4 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -399,7 +399,7 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ); * \return \c 0 if \c max_ops == 0 (restart disabled) * \return \c 1 otherwise (restart enabled) */ -int mbedtls_ecp_restart_enabled( void ); +int mbedtls_ecp_restart_is_enabled( void ); #endif /* MBEDTLS_ECP_RESTARTABLE */ /** diff --git a/library/ecdsa.c b/library/ecdsa.c index 9e35da1f78..abac015ceb 100644 --- a/library/ecdsa.c +++ b/library/ecdsa.c @@ -177,7 +177,7 @@ static void ecdsa_restart_det_free( mbedtls_ecdsa_restart_det_ctx *ctx ) rs_ctx->ecp.ops_done = 0; \ \ /* set up our own sub-context if needed */ \ - if( mbedtls_ecp_restart_enabled() && \ + if( mbedtls_ecp_restart_is_enabled() && \ rs_ctx != NULL && rs_ctx->SUB == NULL ) \ { \ rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ diff --git a/library/ecp.c b/library/ecp.c index 94b42b97c0..df85ca4a54 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -106,7 +106,7 @@ void mbedtls_ecp_set_max_ops( unsigned max_ops ) /* * Check if restart is enabled */ -int mbedtls_ecp_restart_enabled( void ) +int mbedtls_ecp_restart_is_enabled( void ) { return( ecp_max_ops != 0 ); } @@ -266,7 +266,7 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, rs_ctx->ops_done = 0; \ \ /* set up our own sub-context if needed */ \ - if( mbedtls_ecp_restart_enabled() && \ + if( mbedtls_ecp_restart_is_enabled() && \ rs_ctx != NULL && rs_ctx->SUB == NULL ) \ { \ rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ diff --git a/library/pk.c b/library/pk.c index ce8dbb5bbf..e0e8dbad2f 100644 --- a/library/pk.c +++ b/library/pk.c @@ -239,7 +239,7 @@ int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* optimization: use non-restartable version if restart disabled */ if( rs_ctx != NULL && - mbedtls_ecp_restart_enabled() && + mbedtls_ecp_restart_is_enabled() && ctx->pk_info->verify_rs_func != NULL ) { int ret; @@ -352,7 +352,7 @@ int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, #if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) /* optimization: use non-restartable version if restart disabled */ if( rs_ctx != NULL && - mbedtls_ecp_restart_enabled() && + mbedtls_ecp_restart_is_enabled() && ctx->pk_info->sign_rs_func != NULL ) { int ret; From a58e011ac06b1bc05df613345fdebc47c993cd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:42:47 +0200 Subject: [PATCH 1080/1100] Fix alignment in a macro definition --- library/ecp.c | 54 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index df85ca4a54..55d7eb88d1 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -260,36 +260,36 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, } /* Call this when entering a function that needs its own sub-context */ -#define ECP_RS_ENTER( SUB ) do { \ - /* reset ops count for this call if top-level */ \ - if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) \ - rs_ctx->ops_done = 0; \ - \ - /* set up our own sub-context if needed */ \ - if( mbedtls_ecp_restart_is_enabled() && \ - rs_ctx != NULL && rs_ctx->SUB == NULL ) \ - { \ - rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ - if( rs_ctx->SUB == NULL ) \ - return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); \ - \ - ecp_restart_## SUB ##_init( rs_ctx->SUB ); \ - } \ +#define ECP_RS_ENTER( SUB ) do { \ + /* reset ops count for this call if top-level */ \ + if( rs_ctx != NULL && rs_ctx->depth++ == 0 ) \ + rs_ctx->ops_done = 0; \ + \ + /* set up our own sub-context if needed */ \ + if( mbedtls_ecp_restart_is_enabled() && \ + rs_ctx != NULL && rs_ctx->SUB == NULL ) \ + { \ + rs_ctx->SUB = mbedtls_calloc( 1, sizeof( *rs_ctx->SUB ) ); \ + if( rs_ctx->SUB == NULL ) \ + return( MBEDTLS_ERR_ECP_ALLOC_FAILED ); \ + \ + ecp_restart_## SUB ##_init( rs_ctx->SUB ); \ + } \ } while( 0 ) /* Call this when leaving a function that needs its own sub-context */ -#define ECP_RS_LEAVE( SUB ) do { \ - /* clear our sub-context when not in progress (done or error) */ \ - if( rs_ctx != NULL && rs_ctx->SUB != NULL && \ - ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ - { \ - ecp_restart_## SUB ##_free( rs_ctx->SUB ); \ - mbedtls_free( rs_ctx->SUB ); \ - rs_ctx->SUB = NULL; \ - } \ - \ - if( rs_ctx != NULL ) \ - rs_ctx->depth--; \ +#define ECP_RS_LEAVE( SUB ) do { \ + /* clear our sub-context when not in progress (done or error) */ \ + if( rs_ctx != NULL && rs_ctx->SUB != NULL && \ + ret != MBEDTLS_ERR_ECP_IN_PROGRESS ) \ + { \ + ecp_restart_## SUB ##_free( rs_ctx->SUB ); \ + mbedtls_free( rs_ctx->SUB ); \ + rs_ctx->SUB = NULL; \ + } \ + \ + if( rs_ctx != NULL ) \ + rs_ctx->depth--; \ } while( 0 ) #else /* MBEDTLS_ECP_RESTARTABLE */ From 90f31b71a866b7813e0798b5424ba372eac7d803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 10:45:24 +0200 Subject: [PATCH 1081/1100] Improve readability by moving counter decrement Avoid the slightly awkward rs_ctx-> i = i + 1 --- library/ecp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index 55d7eb88d1..66ad12ef9c 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1711,9 +1711,11 @@ static int ecp_mul_comb_core( const mbedtls_ecp_group *grp, mbedtls_ecp_point *R MBEDTLS_MPI_CHK( ecp_randomize_jac( grp, R, f_rng, p_rng ) ); } - while( i-- != 0 ) + while( i != 0 ) { MBEDTLS_ECP_BUDGET( MBEDTLS_ECP_OPS_DBL + MBEDTLS_ECP_OPS_ADD ); + --i; + MBEDTLS_MPI_CHK( ecp_double_jac( grp, R, R ) ); MBEDTLS_MPI_CHK( ecp_select_comb( grp, &Txi, T, T_size, x[i] ) ); MBEDTLS_MPI_CHK( ecp_add_mixed( grp, R, R, &Txi ) ); @@ -1727,8 +1729,7 @@ cleanup: if( rs_ctx != NULL && rs_ctx->rsm != NULL && ret == MBEDTLS_ERR_ECP_IN_PROGRESS ) { - /* was decreased before actually doing it */ - rs_ctx->rsm->i = i + 1; + rs_ctx->rsm->i = i; /* no need to save R, already pointing to rs_ctx->rsm->R */ } #endif From 7a28e99fa09471689995d766d04e05a84668fc02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 11:22:45 +0200 Subject: [PATCH 1082/1100] Expand test to ensure no assumption on output The functions don't require the caller to preserve the content of the output parameter - let's ensure that they don't assume that. --- tests/suites/test_suite_ecp.function | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tests/suites/test_suite_ecp.function b/tests/suites/test_suite_ecp.function index 65736f3653..65c487ef88 100644 --- a/tests/suites/test_suite_ecp.function +++ b/tests/suites/test_suite_ecp.function @@ -2,6 +2,10 @@ #include "mbedtls/ecp.h" #define ECP_PF_UNKNOWN -1 + +#define ECP_PT_RESET( x ) \ + mbedtls_ecp_point_free( x ); \ + mbedtls_ecp_point_init( x ); /* END_HEADER */ /* BEGIN_DEPENDENCIES @@ -78,13 +82,14 @@ void ecp_test_vect_restart( int id, */ mbedtls_ecp_restart_ctx ctx; mbedtls_ecp_group grp; - mbedtls_ecp_point R; + mbedtls_ecp_point R, P; mbedtls_mpi dA, xA, yA, dB, xZ, yZ; int cnt_restarts; int ret; mbedtls_ecp_restart_init( &ctx ); - mbedtls_ecp_group_init( &grp ); mbedtls_ecp_point_init( &R ); + mbedtls_ecp_group_init( &grp ); + mbedtls_ecp_point_init( &R ); mbedtls_ecp_point_init( &P ); mbedtls_mpi_init( &dA ); mbedtls_mpi_init( &xA ); mbedtls_mpi_init( &yA ); mbedtls_mpi_init( &dB ); mbedtls_mpi_init( &xZ ); mbedtls_mpi_init( &yZ ); @@ -103,6 +108,7 @@ void ecp_test_vect_restart( int id, /* Base point case */ cnt_restarts = 0; do { + ECP_PT_RESET( &R ); ret = mbedtls_ecp_mul_restartable( &grp, &R, &dA, &grp.G, NULL, NULL, &ctx ); } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); @@ -114,9 +120,11 @@ void ecp_test_vect_restart( int id, TEST_ASSERT( cnt_restarts <= max_restarts ); /* Non-base point case */ + mbedtls_ecp_copy( &P, &R ); cnt_restarts = 0; do { - ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); + ECP_PT_RESET( &R ); + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &P, NULL, NULL, &ctx ); } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); TEST_ASSERT( ret == 0 ); @@ -130,13 +138,14 @@ void ecp_test_vect_restart( int id, * This test only makes sense when we actually restart */ if( min_restarts > 0 ) { - ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &R, NULL, NULL, &ctx ); + ret = mbedtls_ecp_mul_restartable( &grp, &R, &dB, &P, NULL, NULL, &ctx ); TEST_ASSERT( ret == MBEDTLS_ERR_ECP_IN_PROGRESS ); } exit: mbedtls_ecp_restart_free( &ctx ); - mbedtls_ecp_group_free( &grp ); mbedtls_ecp_point_free( &R ); + mbedtls_ecp_group_free( &grp ); + mbedtls_ecp_point_free( &R ); mbedtls_ecp_point_free( &P ); mbedtls_mpi_free( &dA ); mbedtls_mpi_free( &xA ); mbedtls_mpi_free( &yA ); mbedtls_mpi_free( &dB ); mbedtls_mpi_free( &xZ ); mbedtls_mpi_free( &yZ ); } @@ -183,6 +192,7 @@ void ecp_muladd_restart( int id, char *xR_str, char *yR_str, cnt_restarts = 0; do { + ECP_PT_RESET( &R ); ret = mbedtls_ecp_muladd_restartable( &grp, &R, &u1, &grp.G, &u2, &Q, &ctx ); } while( ret == MBEDTLS_ERR_ECP_IN_PROGRESS && ++cnt_restarts ); From a5a3e40c4eadc4dc52ac9f2eaf0d81880fb0761b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 11:27:23 +0200 Subject: [PATCH 1083/1100] Fix missing dereference. Went unnoticed because it was only on a defensive code path, in an internal function, so not exercised. --- library/x509_crt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 5f9b74f71f..25aaff3b0b 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -2182,8 +2182,8 @@ static int x509_crt_find_parent( /* extra precaution against mistakes in the caller */ if( parent == NULL ) { - parent_is_trusted = 0; - signature_is_good = 0; + *parent_is_trusted = 0; + *signature_is_good = 0; } return( 0 ); From b25cb603bbb68f225a3fc5a25c22adb81eaf6c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 16 Oct 2018 11:48:09 +0200 Subject: [PATCH 1084/1100] Add a comment to clarify code flow --- library/ecp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/library/ecp.c b/library/ecp.c index 66ad12ef9c..dff5f90042 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1933,6 +1933,7 @@ static int ecp_mul_comb( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, rs_ctx->rsm->T = NULL; rs_ctx->rsm->T_size = 0; + /* This effectively jumps to the call to mul_comb_after_precomp() */ T_ok = rs_ctx->rsm->state >= ecp_rsm_comb_core; } else From 96f3b4ee42c77567fe1a865a4b5c80d57dc57177 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 16 Oct 2018 14:10:21 +0200 Subject: [PATCH 1085/1100] Remove yotta support from check-files.py Complements "Remove Yotta support from the docs, tests and build scripts". --- tests/scripts/check-files.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/scripts/check-files.py b/tests/scripts/check-files.py index 0fb2117a32..ed6787289a 100755 --- a/tests/scripts/check-files.py +++ b/tests/scripts/check-files.py @@ -159,7 +159,6 @@ class IntegrityChecker(object): self.excluded_paths = list(map(os.path.normpath, [ 'cov-int', 'examples', - 'yotta/module' ])) self.issues_to_check = [ PermissionIssueTracker(), From 198611db322f52ecc57f3d7005c8dd6af249e4e0 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 17 Oct 2018 13:58:19 +0100 Subject: [PATCH 1086/1100] Add missing return value check in ECDSA test suite The test case `ecdsa_det_test_vectors` from the ECDSA test suite called `mbedtls_md()` without checking its return value. --- tests/suites/test_suite_ecdsa.function | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/suites/test_suite_ecdsa.function b/tests/suites/test_suite_ecdsa.function index 48ce586beb..8e76154def 100644 --- a/tests/suites/test_suite_ecdsa.function +++ b/tests/suites/test_suite_ecdsa.function @@ -117,7 +117,8 @@ void ecdsa_det_test_vectors( int id, char * d_str, int md_alg, char * msg, md_info = mbedtls_md_info_from_type( md_alg ); TEST_ASSERT( md_info != NULL ); hlen = mbedtls_md_get_size( md_info ); - mbedtls_md( md_info, (const unsigned char *) msg, strlen( msg ), hash ); + TEST_ASSERT( mbedtls_md( md_info, (const unsigned char *) msg, + strlen( msg ), hash ) == 0 ); TEST_ASSERT( mbedtls_ecdsa_sign_det( &grp, &r, &s, &d, hash, hlen, md_alg ) == 0 ); From dd3ab13da3fd3dc9ec2d3d247c25ac954ca66f5e Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 17 Oct 2018 14:43:14 +0100 Subject: [PATCH 1087/1100] Fail when encountering invalid CBC padding in EtM records This commit changes the behavior of the record decryption routine `ssl_decrypt_buf()` in the following situation: 1. A CBC ciphersuite with Encrypt-then-MAC is used. 2. A record with valid MAC but invalid CBC padding is received. In this situation, the previous code would not raise and error but instead forward the decrypted packet, including the wrong padding, to the user. This commit changes this behavior to return the error MBEDTLS_ERR_SSL_INVALID_MAC instead. While erroneous, the previous behavior does not constitute a security flaw since it can only happen for properly authenticated records, that is, if the peer makes a mistake while preparing the padded plaintext. --- library/ssl_tls.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 8bd74db8d7..6afb624c5d 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2304,13 +2304,13 @@ static int ssl_decrypt_buf( mbedtls_ssl_context *ssl ) correct = 0; } auth_done++; - - /* - * Finally check the correct flag - */ - if( correct == 0 ) - return( MBEDTLS_ERR_SSL_INVALID_MAC ); } + + /* + * Finally check the correct flag + */ + if( correct == 0 ) + return( MBEDTLS_ERR_SSL_INVALID_MAC ); #endif /* SSL_SOME_MODES_USE_MAC */ /* Make extra sure authentication was performed, exactly once */ From f24c3360fc5550dd748e6c4bf0b04a05ae07c233 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 17 Oct 2018 14:53:05 +0100 Subject: [PATCH 1088/1100] Adapt ChangeLog --- ChangeLog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ChangeLog b/ChangeLog index 513f24f3ab..acf1bd7ac4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,9 @@ Bugfix invalidated keys of a lifetime of less than a 1s. Fixes #1968. * Fix failure in hmac_drbg in the benchmark sample application, when MBEDTLS_THREADING_C is defined. Found by TrinityTonic, #1095 + * Fix a bug in the record decryption routine ssl_decrypt_buf() + which lead to accepting properly authenticated but improperly + padded records in case of CBC ciphersuites using Encrypt-then-MAC. Changes * Add tests for session resumption in DTLS. From b51e267bee83d7cbea5b48c766cfd2a1f9e66186 Mon Sep 17 00:00:00 2001 From: Darryl Green Date: Fri, 19 Oct 2018 15:25:10 +0100 Subject: [PATCH 1089/1100] Add Jenkinsfile for PR job --- tests/.jenkins/Jenkinsfile | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/.jenkins/Jenkinsfile diff --git a/tests/.jenkins/Jenkinsfile b/tests/.jenkins/Jenkinsfile new file mode 100644 index 0000000000..ed04053d22 --- /dev/null +++ b/tests/.jenkins/Jenkinsfile @@ -0,0 +1 @@ +mbedtls.run_job() From ca29fdf569a43a0302895fd6f8b6443f1cbba581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 22 Oct 2018 09:56:53 +0200 Subject: [PATCH 1090/1100] Fix some typos in documentation and comments --- include/mbedtls/ssl.h | 20 ++++++++++---------- library/ecdh.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 942bf2c152..163ca3871a 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2917,7 +2917,7 @@ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session * \return \c 0 if successful. * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE * in the handshake is incomplete but or waiting for data to - * be availaible for reading from or writing to the underlying + * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous @@ -2951,7 +2951,7 @@ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session * actual error, but you still need to reset/free the context. * * \note Remarks regarding event-driven DTLS: - * If the function returns MBEDTLS_ERR_SSL_WANT_READ, no datagram + * If the function returns #MBEDTLS_ERR_SSL_WANT_READ, no datagram * from the underlying transport layer is currently being processed, * and it is safe to idle until the timer or the underlying transport * signal a new event. This is not true for a successful handshake, @@ -3022,7 +3022,7 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * - in this case you must stop using the context (see below). * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE * in the handshake is incomplete but or waiting for data to - * be availaible for reading from or writing to the underlying + * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous @@ -3035,7 +3035,7 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * the handshake when you're done attending other tasks. * \return #MBEDTLS_ERR_SSL_CLIENT_RECONNECT if we're at the server * side of a DTLS connection and the client is initiating a - * new commection using the same source port. See below. + * new connection using the same source port. See below. * \return Another SSL error code - in this case you must stop using * the context (see below). * @@ -3051,7 +3051,7 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * on it before re-using it for a new connection; the current * connection must be closed. * - * \note When this function return MBEDTLS_ERR_SSL_CLIENT_RECONNECT + * \note When this function returns #MBEDTLS_ERR_SSL_CLIENT_RECONNECT * (which can only happen server-side), it means that a client * is initiating a new connection using the same source port. * You can either treat that as a connection close and wait @@ -3066,7 +3066,7 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * application layer, would allow authentication bypass! * * \note Remarks regarding event-driven DTLS: - * - If the function returns MBEDTLS_ERR_SSL_WANT_READ, no datagram + * - If the function returns #MBEDTLS_ERR_SSL_WANT_READ, no datagram * from the underlying transport layer is currently being processed, * and it is safe to idle until the timer or the underlying transport * signal a new event. @@ -3096,10 +3096,10 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * \param len how many bytes must be written * * \return The (non-negative) number of bytes actually written if - * successfull (may be less than \p len). + * successful (may be less than \p len). * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE * in the handshake is incomplete but or waiting for data to - * be availaible for reading from or writing to the underlying + * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. * \return #MBEDTLS_ERR_SSL_ASYNC_IN_PROGRESS if an asynchronous @@ -3124,10 +3124,10 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * on it before re-using it for a new connection; the current * connection must be closed. * - * \note When this function returns MBEDTLS_ERR_SSL_WANT_WRITE/READ, + * \note When this function returns #MBEDTLS_ERR_SSL_WANT_WRITE/READ, * it must be called later with the *same* arguments, * until it returns a value greater that or equal to 0. When - * the function returns MBEDTLS_ERR_SSL_WANT_WRITE there may be + * the function returns #MBEDTLS_ERR_SSL_WANT_WRITE there may be * some partial data in the output buffer, however this is not * yet sent. * diff --git a/library/ecdh.c b/library/ecdh.c index eaad62c99b..80e9676419 100644 --- a/library/ecdh.c +++ b/library/ecdh.c @@ -43,7 +43,7 @@ * Generate public key (restartable version) * * Note: this internal function relies on its caller preserving the value of - * the output parameter 'd' accross continuation calls. This would not be + * the output parameter 'd' across continuation calls. This would not be * acceptable for a public function but is OK here as we control call sites. */ static int ecdh_gen_public_restartable( mbedtls_ecp_group *grp, From a966fdea72678e38beb06c1160768afa6362e295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Tue, 23 Oct 2018 10:41:11 +0200 Subject: [PATCH 1091/1100] Fix some documentation typos and improve a comment --- include/mbedtls/ssl.h | 8 ++++---- library/ecp.c | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h index 163ca3871a..e8f664a787 100644 --- a/include/mbedtls/ssl.h +++ b/include/mbedtls/ssl.h @@ -2916,7 +2916,7 @@ int mbedtls_ssl_get_session( const mbedtls_ssl_context *ssl, mbedtls_ssl_session * * \return \c 0 if successful. * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE - * in the handshake is incomplete but or waiting for data to + * if the handshake is incomplete and waiting for data to * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. @@ -3018,10 +3018,10 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * \param len maximum number of bytes to read * * \return The (positive) number of bytes read if successful. - * \return \c 0 is the read end of the underlying transport was closed + * \return \c 0 if the read end of the underlying transport was closed * - in this case you must stop using the context (see below). * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE - * in the handshake is incomplete but or waiting for data to + * if the handshake is incomplete and waiting for data to * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. @@ -3098,7 +3098,7 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * \return The (non-negative) number of bytes actually written if * successful (may be less than \p len). * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE - * in the handshake is incomplete but or waiting for data to + * if the handshake is incomplete and waiting for data to * be available for reading from or writing to the underlying * transport - in this case you must call this function again * when the underlying transport is ready for the operation. diff --git a/library/ecp.c b/library/ecp.c index dff5f90042..b193ad4f8e 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -1610,9 +1610,9 @@ add: norm_add: #endif /* - * Normalize final elements in T. Even though there are no holes now, - * we still need the auxiliary array for homogeneity with last time. - * Also, skip T[0] which is already normalised, being a copy of P. + * Normalize final elements in T. Even though there are no holes now, we + * still need the auxiliary array for homogeneity with the previous + * call. Also, skip T[0] which is already normalised, being a copy of P. */ for( j = 0; j + 1 < T_size; j++ ) TT[j] = T + j + 1; From 76cf60beb32f9bb95489e8682371b77a6d6b60be Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Thu, 25 Oct 2018 21:51:32 +0100 Subject: [PATCH 1092/1100] Remove merge conflict marker in ssl-opt.sh Commit 6346a75dfb96 introduced a merge conflict marker into ssl-opt.sh by accident. This commit removes it. --- tests/ssl-opt.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh index 7c408e4068..ce9aee28ac 100755 --- a/tests/ssl-opt.sh +++ b/tests/ssl-opt.sh @@ -5242,7 +5242,6 @@ run_test "EC restart: TLS, max_ops=1000, ECDHE-PSK" \ -C "mbedtls_pk_verify.*4b00" \ -C "mbedtls_ecdh_make_public.*4b00" \ -C "mbedtls_pk_sign.*4b00" -======= # Tests of asynchronous private key support in SSL From abdf67ee9fa976d8248aa8f74e6a2aec8b54ee92 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 26 Oct 2018 13:28:32 +0100 Subject: [PATCH 1093/1100] Cast number of operations to `uint` in MBEDTLS_ECP_BUDGET Context: The macro `MBEDTLS_ECP_BUDGET()` is called before performing a number of potentially time-consuming ECC operations. If restartable ECC is enabled, it wraps a call to `mbedtls_ecp_check_budget()` which in turn checks if the requested number of operations can be performed without exceeding the maximum number of consecutive ECC operations. Issue: The function `mbedtls_ecp_check_budget()` expects a the number of requested operations to be given as a value of type `unsigned`, while some calls of the wrapper macro `MBEDTLS_ECP_BUDGET()` use expressions of type `size_t`. This rightfully leads to warnings about implicit truncation from `size_t` to `unsigned` on some compilers. Fix: This commit makes the truncation explicit by adding an explicit cast to `unsigned` in the expansion of the `MBEDTLS_ECP_BUDGET()` macro. Justification: Functionally, the new version is equivalent to the previous code. The warning about truncation can be discarded because, as can be inferred from `ecp.h`, the number of requested operations is never larger than 1000. --- include/mbedtls/ecp.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h index 448549cfc4..5db87524e1 100644 --- a/include/mbedtls/ecp.h +++ b/include/mbedtls/ecp.h @@ -233,7 +233,9 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, unsigned ops ); /* Utility macro for checking and updating ops budget */ -#define MBEDTLS_ECP_BUDGET( ops ) MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, rs_ctx, ops ) ); +#define MBEDTLS_ECP_BUDGET( ops ) \ + MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, rs_ctx, \ + (unsigned) (ops) ) ); #else /* MBEDTLS_ECP_RESTARTABLE */ From b10c66073f3f83359d8333768f9fed2733c11c87 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 26 Oct 2018 13:50:13 +0100 Subject: [PATCH 1094/1100] Detect unsigned integer overflow in mbedtls_ecp_check_budget() This commit modifies a bounds check in `mbedtls_ecp_check_budget()` to be correct even if the requested number of ECC operations would overflow the operation counter. --- library/ecp.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/library/ecp.c b/library/ecp.c index b193ad4f8e..de5725c700 100644 --- a/library/ecp.c +++ b/library/ecp.c @@ -248,9 +248,16 @@ int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, else if( grp->pbits >= 384 ) ops *= 2; - /* avoid infinite loops: always allow first step */ - if( rs_ctx->ops_done != 0 && rs_ctx->ops_done + ops > ecp_max_ops ) + /* Avoid infinite loops: always allow first step. + * Because of that, however, it's not generally true + * that ops_done <= ecp_max_ops, so the check + * ops_done > ecp_max_ops below is mandatory. */ + if( ( rs_ctx->ops_done != 0 ) && + ( rs_ctx->ops_done > ecp_max_ops || + ops > ecp_max_ops - rs_ctx->ops_done ) ) + { return( MBEDTLS_ERR_ECP_IN_PROGRESS ); + } /* update running count */ rs_ctx->ops_done += ops; From 4a865ef2335f16f09512e72b891d84940cae9157 Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Sun, 28 Oct 2018 18:00:51 +0000 Subject: [PATCH 1095/1100] Add ChangeLog entry for PR #1618 - ARM DSP instruction support --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index d87cc4d015..5687be6ed5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,10 @@ Features application leading to a memory leak in case both MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE are set. Fixes #2069. + * Add support for Arm CPU DSP extensions to accelerate asymmetric key + operations. On CPUs where the extensions are available, they can accelerate + MPI multiplications used in ECC and RSA cryptography. Contributed by + Aurelien Jarno. Bugfix * Fix a bug in the update function for SSL ticket keys which previously From 2b5be1e630dde3f2a87367ecedf2d8d7ad92715e Mon Sep 17 00:00:00 2001 From: Simon Butcher Date: Tue, 30 Oct 2018 15:55:10 +0000 Subject: [PATCH 1096/1100] Fix ChangeLog entry for #2069 The fix for #2069 had accidentally been added to features, not bugfixes. --- ChangeLog | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3154965c63..7e1955ae15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,16 +13,16 @@ Features yet), and to existing functions in ECDH and SSL (currently only implemented client-side, for ECDHE-ECDSA ciphersuites in TLS 1.2, including client authentication). - * Fix wrong order of freeing in programs/ssl/ssl_server2 example - application leading to a memory leak in case both - MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE are set. - Fixes #2069. * Add support for Arm CPU DSP extensions to accelerate asymmetric key operations. On CPUs where the extensions are available, they can accelerate MPI multiplications used in ECC and RSA cryptography. Contributed by Aurelien Jarno. Bugfix + * Fix wrong order of freeing in programs/ssl/ssl_server2 example + application leading to a memory leak in case both + MBEDTLS_MEMORY_BUFFER_ALLOC_C and MBEDTLS_MEMORY_BACKTRACE are set. + Fixes #2069. * Fix a bug in the update function for SSL ticket keys which previously invalidated keys of a lifetime of less than a 1s. Fixes #1968. * Fix failure in hmac_drbg in the benchmark sample application, when @@ -32,7 +32,7 @@ Bugfix padded records in case of CBC ciphersuites using Encrypt-then-MAC. * Fix memory leak and freeing without initialization in the example program programs/x509/cert_write. Fixes #1422. - * Ignore iv in mbedtls_cipher_set_iv() when the cipher mode is MBEDTLS_MODE_ECB + * Ignore IV in mbedtls_cipher_set_iv() when the cipher mode is MBEDTLS_MODE_ECB Fix for #1091 raised by ezdevelop Changes From 52acdb5926b7dd7803c0f625648b56d388e04854 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 2 Nov 2018 10:09:48 +0000 Subject: [PATCH 1097/1100] Add tests for relaxed CRL-CA name comparison This commit introduces variants test-ca_utf8.crt, test-ca_printablestring.crt and test-ca_uppercase.crt of tests/data_files/test-ca.crt which differ from test-ca.crt in their choice of string encoding and upper and lower case letters in the DN field. These changes should be immaterial to the recovation check, and three tests are added that crl.pem, which applies to test-ca.crt, is also considered as applying to test-ca_*.crt. --- tests/data_files/test-ca_printable.crt | 21 +++++++++++++++++++++ tests/data_files/test-ca_uppercase.crt | 20 ++++++++++++++++++++ tests/data_files/test-ca_utf8.crt | 20 ++++++++++++++++++++ tests/suites/test_suite_x509parse.data | 12 ++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 tests/data_files/test-ca_printable.crt create mode 100644 tests/data_files/test-ca_uppercase.crt create mode 100644 tests/data_files/test-ca_utf8.crt diff --git a/tests/data_files/test-ca_printable.crt b/tests/data_files/test-ca_printable.crt new file mode 100644 index 0000000000..d16da09a25 --- /dev/null +++ b/tests/data_files/test-ca_printable.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDhzCCAm+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER +MA8GA1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwHhcN +MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G +A1UEChMIUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx +mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny +50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n +YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL +R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu +KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj +gZUwgZIwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUtFrkpbPe0lL2udWmlQ/rPrzH +/f8wYwYDVR0jBFwwWoAUtFrkpbPe0lL2udWmlQ/rPrzH/f+hP6Q9MDsxCzAJBgNV +BAYTAk5MMREwDwYDVQQKEwhQb2xhclNTTDEZMBcGA1UEAxMQUG9sYXJTU0wgVGVz +dCBDQYIBADANBgkqhkiG9w0BAQUFAAOCAQEAuP1U2ABUkIslsCfdlc2i94QHHYeJ +SsR4EdgHtdciUI5I62J6Mom+Y0dT/7a+8S6MVMCZP6C5NyNyXw1GWY/YR82XTJ8H +DBJiCTok5DbZ6SzaONBzdWHXwWwmi5vg1dxn7YxrM9d0IjxM27WNKs4sDQhZBQkF +pjmfs2cb4oPl4Y9T9meTx/lvdkRYEug61Jfn6cA+qHpyPYdTH+UshITnmp5/Ztkf +m/UTSLBNFNHesiTZeH31NcxYGdHSme9Nc/gfidRa0FLOCfWxRlFqAI47zG9jAQCZ +7Z2mCGDNMhjQc+BYcdnl0lPXjdDK6V0qCg1dVewhUBcW5gZKzV7e9+DpVA== +-----END CERTIFICATE----- diff --git a/tests/data_files/test-ca_uppercase.crt b/tests/data_files/test-ca_uppercase.crt new file mode 100644 index 0000000000..e8b537c727 --- /dev/null +++ b/tests/data_files/test-ca_uppercase.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgIBAzANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER +MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN +MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G +A1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx +mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny +50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n +YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL +R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu +KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj +UDBOMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFLRa5KWz3tJS9rnVppUP6z68x/3/ +MB8GA1UdIwQYMBaAFLRa5KWz3tJS9rnVppUP6z68x/3/MA0GCSqGSIb3DQEBBQUA +A4IBAQABE3OEPfEd/bcJW5ZdU3/VgPNS4tMzh8gnJP/V2FcvFtGylMpQq6YnEBYI +yBHAL4DRvlMY5rnXGBp3ODR8MpqHC6AquRTCLzjS57iYff//4QFQqW9n92zctspv +czkaPKgjqo1No3Uq0Xaz10rcxyTUPrf5wNVRZ2V0KvllvAAVSzbI4mpdUXztjhST +S5A2BeWQAAOr0zq1F7TSRVJpJs7jmB2ai/igkh1IAjcuwV6VwlP+sbw0gjQ0NpGM +iHpnlzRAi/tIbtOvMIGOBU2TIfax/5jq1agUx5aPmT5TWAiJPOOP6l5xXnDwxeYS +NWqiX9GyusBZjezaCaHabjDLU0qQ +-----END CERTIFICATE----- diff --git a/tests/data_files/test-ca_utf8.crt b/tests/data_files/test-ca_utf8.crt new file mode 100644 index 0000000000..e8b537c727 --- /dev/null +++ b/tests/data_files/test-ca_utf8.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgIBAzANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJOTDER +MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN +MTEwMjEyMTQ0NDAwWhcNMjEwMjEyMTQ0NDAwWjA7MQswCQYDVQQGEwJOTDERMA8G +A1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA3zf8F7vglp0/ht6WMn1EpRagzSHx +mdTs6st8GFgIlKXsm8WL3xoemTiZhx57wI053zhdcHgH057Zk+i5clHFzqMwUqny +50BwFMtEonILwuVA+T7lpg6z+exKY8C4KQB0nFc7qKUEkHHxvYPZP9al4jwqj+8n +YMPGn8u67GB9t+aEMr5P+1gmIgNb1LTV+/Xjli5wwOQuvfwu7uJBVcA0Ln0kcmnL +R7EUQIN9Z/SG9jGr8XmksrUuEvmEF/Bibyc+E1ixVA0hmnM3oTDPb5Lc9un8rNsu +KNF+AksjoBXyOGVkCeoMbo4bF6BxyLObyavpw/LPh5aPgAIynplYb6LVAgMBAAGj +UDBOMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFLRa5KWz3tJS9rnVppUP6z68x/3/ +MB8GA1UdIwQYMBaAFLRa5KWz3tJS9rnVppUP6z68x/3/MA0GCSqGSIb3DQEBBQUA +A4IBAQABE3OEPfEd/bcJW5ZdU3/VgPNS4tMzh8gnJP/V2FcvFtGylMpQq6YnEBYI +yBHAL4DRvlMY5rnXGBp3ODR8MpqHC6AquRTCLzjS57iYff//4QFQqW9n92zctspv +czkaPKgjqo1No3Uq0Xaz10rcxyTUPrf5wNVRZ2V0KvllvAAVSzbI4mpdUXztjhST +S5A2BeWQAAOr0zq1F7TSRVJpJs7jmB2ai/igkh1IAjcuwV6VwlP+sbw0gjQ0NpGM +iHpnlzRAi/tIbtOvMIGOBU2TIfax/5jq1agUx5aPmT5TWAiJPOOP6l5xXnDwxeYS +NWqiX9GyusBZjezaCaHabjDLU0qQ +-----END CERTIFICATE----- diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data index 80e49d226e..85f0d65567 100644 --- a/tests/suites/test_suite_x509parse.data +++ b/tests/suites/test_suite_x509parse.data @@ -399,6 +399,18 @@ X509 Certificate verification #5 (Revoked Cert) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_HAVE_TIME_DATE x509_verify:"data_files/server1.crt":"data_files/test-ca.crt":"data_files/crl.pem":"NULL":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_REVOKED:"compat":"NULL" +X509 Certificate verification #5' (Revoked Cert, differing DN string formats #1) +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_HAVE_TIME_DATE +x509_verify:"data_files/server1.crt":"data_files/test-ca_utf8.crt":"data_files/crl.pem":"NULL":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_REVOKED:"compat":"NULL" + +X509 Certificate verification #5'' (Revoked Cert, differing DN string formats #2) +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_HAVE_TIME_DATE +x509_verify:"data_files/server1.crt":"data_files/test-ca_printable.crt":"data_files/crl.pem":"NULL":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_REVOKED:"compat":"NULL" + +X509 Certificate verification #5''' (Revoked Cert, differing upper and lower case) +depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_HAVE_TIME_DATE +x509_verify:"data_files/server1.crt":"data_files/test-ca_uppercase.crt":"data_files/crl.pem":"NULL":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_REVOKED:"compat":"NULL" + X509 Certificate verification #6 (Revoked Cert) depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_SHA1_C:MBEDTLS_RSA_C:MBEDTLS_PKCS1_V15:MBEDTLS_HAVE_TIME_DATE x509_verify:"data_files/server1.crt":"data_files/test-ca.crt":"data_files/crl.pem":"PolarSSL Server 1":MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:MBEDTLS_X509_BADCERT_REVOKED:"compat":"NULL" From 0f6903d84ccb0b5dd4b9809a3a9e040628e3343d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 2 Nov 2018 09:19:16 +0000 Subject: [PATCH 1098/1100] Move static x509_name_cmp() in library/x509_crt.c A subsequent change will need this function earlier within the file. --- library/x509_crt.c | 260 ++++++++++++++++++++++----------------------- 1 file changed, 130 insertions(+), 130 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index 25aaff3b0b..f756843720 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -227,6 +227,136 @@ static int x509_profile_check_key( const mbedtls_x509_crt_profile *profile, return( -1 ); } +/* + * Like memcmp, but case-insensitive and always returns -1 if different + */ +static int x509_memcasecmp( const void *s1, const void *s2, size_t len ) +{ + size_t i; + unsigned char diff; + const unsigned char *n1 = s1, *n2 = s2; + + for( i = 0; i < len; i++ ) + { + diff = n1[i] ^ n2[i]; + + if( diff == 0 ) + continue; + + if( diff == 32 && + ( ( n1[i] >= 'a' && n1[i] <= 'z' ) || + ( n1[i] >= 'A' && n1[i] <= 'Z' ) ) ) + { + continue; + } + + return( -1 ); + } + + return( 0 ); +} + +/* + * Return 0 if name matches wildcard, -1 otherwise + */ +static int x509_check_wildcard( const char *cn, const mbedtls_x509_buf *name ) +{ + size_t i; + size_t cn_idx = 0, cn_len = strlen( cn ); + + /* We can't have a match if there is no wildcard to match */ + if( name->len < 3 || name->p[0] != '*' || name->p[1] != '.' ) + return( -1 ); + + for( i = 0; i < cn_len; ++i ) + { + if( cn[i] == '.' ) + { + cn_idx = i; + break; + } + } + + if( cn_idx == 0 ) + return( -1 ); + + if( cn_len - cn_idx == name->len - 1 && + x509_memcasecmp( name->p + 1, cn + cn_idx, name->len - 1 ) == 0 ) + { + return( 0 ); + } + + return( -1 ); +} + +/* + * Compare two X.509 strings, case-insensitive, and allowing for some encoding + * variations (but not all). + * + * Return 0 if equal, -1 otherwise. + */ +static int x509_string_cmp( const mbedtls_x509_buf *a, const mbedtls_x509_buf *b ) +{ + if( a->tag == b->tag && + a->len == b->len && + memcmp( a->p, b->p, b->len ) == 0 ) + { + return( 0 ); + } + + if( ( a->tag == MBEDTLS_ASN1_UTF8_STRING || a->tag == MBEDTLS_ASN1_PRINTABLE_STRING ) && + ( b->tag == MBEDTLS_ASN1_UTF8_STRING || b->tag == MBEDTLS_ASN1_PRINTABLE_STRING ) && + a->len == b->len && + x509_memcasecmp( a->p, b->p, b->len ) == 0 ) + { + return( 0 ); + } + + return( -1 ); +} + +/* + * Compare two X.509 Names (aka rdnSequence). + * + * See RFC 5280 section 7.1, though we don't implement the whole algorithm: + * we sometimes return unequal when the full algorithm would return equal, + * but never the other way. (In particular, we don't do Unicode normalisation + * or space folding.) + * + * Return 0 if equal, -1 otherwise. + */ +static int x509_name_cmp( const mbedtls_x509_name *a, const mbedtls_x509_name *b ) +{ + /* Avoid recursion, it might not be optimised by the compiler */ + while( a != NULL || b != NULL ) + { + if( a == NULL || b == NULL ) + return( -1 ); + + /* type */ + if( a->oid.tag != b->oid.tag || + a->oid.len != b->oid.len || + memcmp( a->oid.p, b->oid.p, b->oid.len ) != 0 ) + { + return( -1 ); + } + + /* value */ + if( x509_string_cmp( &a->val, &b->val ) != 0 ) + return( -1 ); + + /* structure of the list of sets */ + if( a->next_merged != b->next_merged ) + return( -1 ); + + a = a->next; + b = b->next; + } + + /* a == NULL == b */ + return( 0 ); +} + /* * Reset (init or clear) a verify_chain */ @@ -1756,136 +1886,6 @@ static int x509_crt_verifycrl( mbedtls_x509_crt *crt, mbedtls_x509_crt *ca, } #endif /* MBEDTLS_X509_CRL_PARSE_C */ -/* - * Like memcmp, but case-insensitive and always returns -1 if different - */ -static int x509_memcasecmp( const void *s1, const void *s2, size_t len ) -{ - size_t i; - unsigned char diff; - const unsigned char *n1 = s1, *n2 = s2; - - for( i = 0; i < len; i++ ) - { - diff = n1[i] ^ n2[i]; - - if( diff == 0 ) - continue; - - if( diff == 32 && - ( ( n1[i] >= 'a' && n1[i] <= 'z' ) || - ( n1[i] >= 'A' && n1[i] <= 'Z' ) ) ) - { - continue; - } - - return( -1 ); - } - - return( 0 ); -} - -/* - * Return 0 if name matches wildcard, -1 otherwise - */ -static int x509_check_wildcard( const char *cn, const mbedtls_x509_buf *name ) -{ - size_t i; - size_t cn_idx = 0, cn_len = strlen( cn ); - - /* We can't have a match if there is no wildcard to match */ - if( name->len < 3 || name->p[0] != '*' || name->p[1] != '.' ) - return( -1 ); - - for( i = 0; i < cn_len; ++i ) - { - if( cn[i] == '.' ) - { - cn_idx = i; - break; - } - } - - if( cn_idx == 0 ) - return( -1 ); - - if( cn_len - cn_idx == name->len - 1 && - x509_memcasecmp( name->p + 1, cn + cn_idx, name->len - 1 ) == 0 ) - { - return( 0 ); - } - - return( -1 ); -} - -/* - * Compare two X.509 strings, case-insensitive, and allowing for some encoding - * variations (but not all). - * - * Return 0 if equal, -1 otherwise. - */ -static int x509_string_cmp( const mbedtls_x509_buf *a, const mbedtls_x509_buf *b ) -{ - if( a->tag == b->tag && - a->len == b->len && - memcmp( a->p, b->p, b->len ) == 0 ) - { - return( 0 ); - } - - if( ( a->tag == MBEDTLS_ASN1_UTF8_STRING || a->tag == MBEDTLS_ASN1_PRINTABLE_STRING ) && - ( b->tag == MBEDTLS_ASN1_UTF8_STRING || b->tag == MBEDTLS_ASN1_PRINTABLE_STRING ) && - a->len == b->len && - x509_memcasecmp( a->p, b->p, b->len ) == 0 ) - { - return( 0 ); - } - - return( -1 ); -} - -/* - * Compare two X.509 Names (aka rdnSequence). - * - * See RFC 5280 section 7.1, though we don't implement the whole algorithm: - * we sometimes return unequal when the full algorithm would return equal, - * but never the other way. (In particular, we don't do Unicode normalisation - * or space folding.) - * - * Return 0 if equal, -1 otherwise. - */ -static int x509_name_cmp( const mbedtls_x509_name *a, const mbedtls_x509_name *b ) -{ - /* Avoid recursion, it might not be optimised by the compiler */ - while( a != NULL || b != NULL ) - { - if( a == NULL || b == NULL ) - return( -1 ); - - /* type */ - if( a->oid.tag != b->oid.tag || - a->oid.len != b->oid.len || - memcmp( a->oid.p, b->oid.p, b->oid.len ) != 0 ) - { - return( -1 ); - } - - /* value */ - if( x509_string_cmp( &a->val, &b->val ) != 0 ) - return( -1 ); - - /* structure of the list of sets */ - if( a->next_merged != b->next_merged ) - return( -1 ); - - a = a->next; - b = b->next; - } - - /* a == NULL == b */ - return( 0 ); -} - /* * Check the signature of a certificate by its parent */ From cb93813e0497ccfd15d1f7a709519f5d2fbb2c3d Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 2 Nov 2018 09:19:54 +0000 Subject: [PATCH 1099/1100] Don't perform binary comparison of CRL issuer and CA subject Previously, when checking whether a CRT was revoked through one of the configured CRLs, the library would only consider those CRLs whose `issuer` field binary-matches the `subject` field of the CA that has issued the CRT in question. If those fields were not binary equivalent, the corresponding CRL was discarded. This is not in line with RFC 5280, which demands that the comparison should be format- and case-insensitive. For example: - If the same string is once encoded as a `PrintableString` and another time as a `UTF8String`, they should compare equal. - If two strings differ only in their choice of upper and lower case letters, they should compare equal. This commit fixes this by using the dedicated x509_name_cmp() function to compare the CRL issuer with the CA subject. Fixes #1784. --- library/x509_crt.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/library/x509_crt.c b/library/x509_crt.c index f756843720..97a4bbf245 100644 --- a/library/x509_crt.c +++ b/library/x509_crt.c @@ -1814,9 +1814,7 @@ static int x509_crt_verifycrl( mbedtls_x509_crt *crt, mbedtls_x509_crt *ca, while( crl_list != NULL ) { if( crl_list->version == 0 || - crl_list->issuer_raw.len != ca->subject_raw.len || - memcmp( crl_list->issuer_raw.p, ca->subject_raw.p, - crl_list->issuer_raw.len ) != 0 ) + x509_name_cmp( &crl_list->issuer, &ca->subject ) != 0 ) { crl_list = crl_list->next; continue; @@ -1826,7 +1824,8 @@ static int x509_crt_verifycrl( mbedtls_x509_crt *crt, mbedtls_x509_crt *ca, * Check if the CA is configured to sign CRLs */ #if defined(MBEDTLS_X509_CHECK_KEY_USAGE) - if( mbedtls_x509_crt_check_key_usage( ca, MBEDTLS_X509_KU_CRL_SIGN ) != 0 ) + if( mbedtls_x509_crt_check_key_usage( ca, + MBEDTLS_X509_KU_CRL_SIGN ) != 0 ) { flags |= MBEDTLS_X509_BADCRL_NOT_TRUSTED; break; From b12fd31415e68bf4c003f8422f48d36e7144bc7f Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Fri, 2 Nov 2018 09:36:45 +0000 Subject: [PATCH 1100/1100] Adapt ChangeLog --- ChangeLog | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7e1955ae15..b885998954 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,15 @@ mbed TLS ChangeLog (Sorted per branch, date) = mbed TLS x.x.x branch released xxxx-xx-xx +Security + * Fix overly strict DN comparison when looking for CRLs + belonging to a particular CA. This previously lead to + ignoring CRLs when the CRL's issuer name and the CA's + subject name differed in their string encoding (e.g., + one using PrintableString and the other UTF8String) or + in the choice of upper and lower case. Reported by + HenrikRosenquistAndersson in #1784. + Features * Add support for temporarily suspending expensive ECC computations after some configurable amount of operations, to be used in single-threaded